]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/v210enc: Pass through A53 CC data
authorDevin Heitmueller <dheitmueller@ltnglobal.com>
Fri, 7 Sep 2018 19:40:24 +0000 (15:40 -0400)
committerMarton Balint <cus@passwd.hu>
Sun, 9 Sep 2018 20:42:26 +0000 (22:42 +0200)
When encoding to V210, make sure the CC side data makes it through
in the resulting AVPacket.  This is needed so the decklink output
module can put out captions when in 10-bit mode.

Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
libavcodec/v210enc.c

index a6afbbfc41965dba03d07ab12bfd5daba27975e1..b9dcf9a672551b95d6e03c344e1bcdf2de5c248f 100644 (file)
@@ -123,6 +123,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     int aligned_width = ((avctx->width + 47) / 48) * 48;
     int stride = aligned_width * 8 / 3;
     int line_padding = stride - ((avctx->width * 8 + 11) / 12) * 4;
+    AVFrameSideData *side_data;
     int h, w, ret;
     uint8_t *dst;
 
@@ -233,6 +234,14 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
         }
     }
 
+    side_data = av_frame_get_side_data(pic, AV_FRAME_DATA_A53_CC);
+    if (side_data && side_data->size) {
+        uint8_t *buf = av_packet_new_side_data(pkt, AV_PKT_DATA_A53_CC, side_data->size);
+        if (!buf)
+            return AVERROR(ENOMEM);
+        memcpy(buf, side_data->data, side_data->size);
+    }
+
     pkt->flags |= AV_PKT_FLAG_KEY;
     *got_packet = 1;
     return 0;