avcodec/cfhd: support cropped height tag
authorJames Almer <jamrial@gmail.com>
Wed, 18 Oct 2017 01:05:09 +0000 (22:05 -0300)
committerJames Almer <jamrial@gmail.com>
Wed, 18 Oct 2017 14:01:17 +0000 (11:01 -0300)
Ported from libav. Authored by one of the following:

Anton Khirnov <anton@khirnov.net>
Diego Biurrun <diego@biurrun.de>
Vittorio Giovara <vittorio.giovara@gmail.com>

Reviewed-by: kierank
Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/cfhd.c
libavcodec/cfhd.h

index 5646ee8..fd55558 100644 (file)
@@ -73,6 +73,7 @@ static void init_frame_defaults(CFHDContext *s)
 {
     s->coded_width       = 0;
     s->coded_height      = 0;
+    s->cropped_height    = 0;
     s->bpc               = 10;
     s->channel_cnt       = 4;
     s->subband_cnt       = SUBBAND_COUNT;
@@ -455,6 +456,9 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame,
                 break;
             }
             planes = av_pix_fmt_count_planes(s->coded_format);
+        } else if (tag == -85) {
+            av_log(avctx, AV_LOG_DEBUG, "Cropped height %"PRIu16"\n", data);
+            s->cropped_height = data;
         } else
             av_log(avctx, AV_LOG_DEBUG,  "Unknown tag %i data %x\n", tag, data);
 
@@ -472,6 +476,8 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame,
             ret = ff_set_dimensions(avctx, s->coded_width, s->coded_height);
             if (ret < 0)
                 return ret;
+            if (s->cropped_height)
+                avctx->height = s->cropped_height;
             frame.f->width =
             frame.f->height = 0;
 
index b0a5208..2573e75 100644 (file)
@@ -81,6 +81,7 @@ typedef struct CFHDContext {
 
     int coded_width;
     int coded_height;
+    int cropped_height;
     enum AVPixelFormat coded_format;
 
     int a_width;