Merge commit '016c5b066de08a93a5f6b5beb0ef377356b35cde'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 8 Jun 2013 09:31:31 +0000 (11:31 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 8 Jun 2013 09:32:34 +0000 (11:32 +0200)
* commit '016c5b066de08a93a5f6b5beb0ef377356b35cde':
  tiff: refactor fax support in a separate function

Conflicts:
libavcodec/tiff.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/tiff.c

@@@ -470,6 -142,38 +470,44 @@@ static int tiff_unpack_zlib(TiffContex
  }
  #endif
  
 -                           const uint8_t *src, int size, int lines)
+ static int tiff_unpack_fax(TiffContext *s, uint8_t *dst, int stride,
++                           const uint8_t *src, int size, int width, int lines)
+ {
+     int i, ret = 0;
++    int line;
+     uint8_t *src2 = av_malloc((unsigned)size +
+                               FF_INPUT_BUFFER_PADDING_SIZE);
+     if (!src2) {
+         av_log(s->avctx, AV_LOG_ERROR,
+                "Error allocating temporary buffer\n");
+         return AVERROR(ENOMEM);
+     }
+     if (s->fax_opts & 2) {
+         av_log(s->avctx, AV_LOG_ERROR,
+                "Uncompressed fax mode is not supported (yet)\n");
+         av_free(src2);
+         return AVERROR_INVALIDDATA;
+     }
+     if (!s->fill_order) {
+         memcpy(src2, src, size);
+     } else {
+         for (i = 0; i < size; i++)
+             src2[i] = ff_reverse[src[i]];
+     }
+     memset(src2 + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+     ret = ff_ccitt_unpack(s->avctx, src2, size, dst, lines, stride,
+                           s->compr, s->fax_opts);
++    if (s->bpp < 8 && s->avctx->pix_fmt == AV_PIX_FMT_PAL8)
++        for (line = 0; line < lines; line++) {
++            horizontal_fill(s->bpp, dst, 1, dst, 0, width, 0);
++            dst += stride;
++        }
+     av_free(src2);
+     return ret;
+ }
  static int tiff_unpack_strip(TiffContext *s, uint8_t *dst, int stride,
                               const uint8_t *src, int size, int lines)
  {
      if (s->compr == TIFF_CCITT_RLE ||
          s->compr == TIFF_G3        ||
          s->compr == TIFF_G4) {
-         int i, ret = 0;
-         uint8_t *src2 = av_malloc((unsigned)size +
-                                   FF_INPUT_BUFFER_PADDING_SIZE);
-         if (!src2) {
-             av_log(s->avctx, AV_LOG_ERROR,
-                    "Error allocating temporary buffer\n");
-             return AVERROR(ENOMEM);
-         }
-         if (s->fax_opts & 2) {
-             av_log(s->avctx, AV_LOG_ERROR,
-                    "Uncompressed fax mode is not supported (yet)\n");
-             av_free(src2);
-             return AVERROR_INVALIDDATA;
-         }
-         if (!s->fill_order) {
-             memcpy(src2, src, size);
-         } else {
-             for (i = 0; i < size; i++)
-                 src2[i] = ff_reverse[src[i]];
-         }
-         memset(src2 + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
-         switch (s->compr) {
-         case TIFF_CCITT_RLE:
-         case TIFF_G3:
-         case TIFF_G4:
-             ret = ff_ccitt_unpack(s->avctx, src2, size, dst, lines, stride,
-                                   s->compr, s->fax_opts);
-             break;
-         }
-         if (s->bpp < 8 && s->avctx->pix_fmt == AV_PIX_FMT_PAL8)
-             for (line = 0; line < lines; line++) {
-                 horizontal_fill(s->bpp, dst, 1, dst, 0, width, 0);
-                 dst += stride;
-             }
-         av_free(src2);
-         return ret;
 -        return tiff_unpack_fax(s, dst, stride, src, size, lines);
++        return tiff_unpack_fax(s, dst, stride, src, size, width, lines);
      }
      for (line = 0; line < lines; line++) {
          if (src - ssrc > size) {