diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-12-26 15:05:12 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-12-26 15:05:12 +0000 |
commit | 66909bc4f166d99db352a262191c8135ae15e127 (patch) | |
tree | 348b417ca407f7055d5cfe755cb080c407d43da1 | |
parent | d68542f019c89e7938297a18da282e3a892718aa (diff) | |
download | ffmpeg-66909bc4f166d99db352a262191c8135ae15e127.tar.gz |
Merge ff_ccitt_unpack_1d and 2d.
Originally committed as revision 16332 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/faxcompr.c | 35 | ||||
-rw-r--r-- | libavcodec/faxcompr.h | 14 |
2 files changed, 8 insertions, 41 deletions
diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c index f8a8b93841..ec6b9e00ab 100644 --- a/libavcodec/faxcompr.c +++ b/libavcodec/faxcompr.c @@ -258,36 +258,9 @@ static int find_group3_syncmarker(GetBitContext *gb, int srcsize) 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 @@ int ff_ccitt_unpack_2d(AVCodecContext *avctx, 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 @@ int ff_ccitt_unpack_2d(AVCodecContext *avctx, }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 --git a/libavcodec/faxcompr.h b/libavcodec/faxcompr.h index 51a3497cc9..632744be64 100644 --- a/libavcodec/faxcompr.h +++ b/libavcodec/faxcompr.h @@ -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 */ |