[FFmpeg-cvslog] r16332 - in trunk/libavcodec: faxcompr.c faxcompr.h

michael subversion
Fri Dec 26 16:05:12 CET 2008


Author: michael
Date: Fri Dec 26 16:05:12 2008
New Revision: 16332

Log:
Merge ff_ccitt_unpack_1d and 2d.

Modified:
   trunk/libavcodec/faxcompr.c
   trunk/libavcodec/faxcompr.h

Modified: trunk/libavcodec/faxcompr.c
==============================================================================
--- trunk/libavcodec/faxcompr.c	Fri Dec 26 15:57:42 2008	(r16331)
+++ trunk/libavcodec/faxcompr.c	Fri Dec 26 16:05:12 2008	(r16332)
@@ -258,36 +258,9 @@ static int find_group3_syncmarker(GetBit
     return -1;
 }
 
-int ff_ccitt_unpack_1d(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,
+int ff_ccitt_unpack(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 *a
     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 *a
         }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);

Modified: trunk/libavcodec/faxcompr.h
==============================================================================
--- trunk/libavcodec/faxcompr.h	Fri Dec 26 15:57:42 2008	(r16331)
+++ trunk/libavcodec/faxcompr.h	Fri Dec 26 16:05:12 2008	(r16332)
@@ -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
- */
-int ff_ccitt_unpack_1d(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
+ * unpack data compressed with CCITT Group 3 1/2-D or Group 4 method
  */
-int ff_ccitt_unpack_2d(AVCodecContext *avctx,
+int ff_ccitt_unpack(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 */




More information about the ffmpeg-cvslog mailing list