# HG changeset patch # User michael # Date 1230303912 0 # Node ID cb4009996efad6e146d3f30c90489c177382c8f1 # Parent 412697cccf8ede8e95f02b29fd4fe2bf692fba57 Merge ff_ccitt_unpack_1d and 2d. diff -r 412697cccf8e -r cb4009996efa faxcompr.c --- a/faxcompr.c Fri Dec 26 14:57:42 2008 +0000 +++ b/faxcompr.c Fri Dec 26 15:05:12 2008 +0000 @@ -258,36 +258,9 @@ return -1; } -int ff_ccitt_unpack_1d(AVCodecContext *avctx, +int ff_ccitt_unpack(AVCodecContext *avctx, const uint8_t *src, int srcsize, - uint8_t *dst, int height, int stride) -{ - int j; - GetBitContext gb; - int *runs, *last; - - runs = av_malloc(avctx->width * sizeof(runs[0])); - last = av_malloc(avctx->width * sizeof(last[0])); - init_get_bits(&gb, src, srcsize*8); - for(j = 0; j < height; j++){ - if(find_group3_syncmarker(&gb, srcsize*8) < 0) - break; - if(decode_group3_1d_line(avctx, &gb, avctx->width, runs) < 0){ - put_line(dst, stride, avctx->width, last); - }else{ - put_line(dst, stride, avctx->width, runs); - FFSWAP(int*, last, runs); - } - dst += stride; - } - av_free(runs); - av_free(last); - return 0; -} - -int ff_ccitt_unpack_2d(AVCodecContext *avctx, - const uint8_t *src, int srcsize, - uint8_t *dst, int height, int stride, int g4) + uint8_t *dst, int height, int stride, enum TiffCompr compr) { int j; GetBitContext gb; @@ -301,7 +274,7 @@ ref[2] = 0; init_get_bits(&gb, src, srcsize*8); for(j = 0; j < height; j++){ - if(g4){ + if(compr == TIFF_G4){ ret = decode_group3_2d_line(avctx, &gb, avctx->width, runs, ref); if(ret < 0){ av_free(runs); @@ -311,7 +284,7 @@ }else{ if(find_group3_syncmarker(&gb, srcsize*8) < 0) break; - if(get_bits1(&gb)) + if(compr==TIFF_CCITT_RLE || get_bits1(&gb)) ret = decode_group3_1d_line(avctx, &gb, avctx->width, runs); else ret = decode_group3_2d_line(avctx, &gb, avctx->width, runs, ref); diff -r 412697cccf8e -r cb4009996efa faxcompr.h --- a/faxcompr.h Fri Dec 26 14:57:42 2008 +0000 +++ b/faxcompr.h Fri Dec 26 15:05:12 2008 +0000 @@ -28,6 +28,7 @@ #define AVCODEC_FAXCOMPR_H #include "avcodec.h" +#include "tiff.h" /** * initialize upacker code @@ -35,17 +36,10 @@ void ff_ccitt_unpack_init(); /** - * unpack data compressed with CCITT Group 3 1-D method + * unpack data compressed with CCITT Group 3 1/2-D or Group 4 method */ -int ff_ccitt_unpack_1d(AVCodecContext *avctx, +int ff_ccitt_unpack(AVCodecContext *avctx, const uint8_t *src, int srcsize, - uint8_t *dst, int height, int stride); - -/** - * unpack data compressed with CCITT Group 3 2-D or Group 4 method - */ -int ff_ccitt_unpack_2d(AVCodecContext *avctx, - const uint8_t *src, int srcsize, - uint8_t *dst, int height, int stride, int g4); + uint8_t *dst, int height, int stride, enum TiffCompr compr); #endif /* AVCODEC_FAXCOMPR_H */