mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
avvidenc: pass Closed Caption metadata to libav
This commit is contained in:
parent
ef8a1bdd90
commit
be579c426d
1 changed files with 21 additions and 0 deletions
|
@ -517,6 +517,25 @@ stereo_gst_to_av (GstVideoMultiviewMode mview_mode)
|
||||||
return AV_STEREO3D_2D;
|
return AV_STEREO3D_2D;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_ffmpegvidenc_add_cc (GstBuffer * buffer, AVFrame * picture)
|
||||||
|
{
|
||||||
|
GstVideoCaptionMeta *cc_meta;
|
||||||
|
gpointer iter = NULL;
|
||||||
|
|
||||||
|
while ((cc_meta =
|
||||||
|
(GstVideoCaptionMeta *) gst_buffer_iterate_meta_filtered (buffer,
|
||||||
|
&iter, GST_VIDEO_CAPTION_META_API_TYPE))) {
|
||||||
|
AVFrameSideData *sd;
|
||||||
|
|
||||||
|
if (cc_meta->caption_type != GST_VIDEO_CAPTION_TYPE_CEA708_RAW)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sd = av_frame_new_side_data (picture, AV_FRAME_DATA_A53_CC, cc_meta->size);
|
||||||
|
memcpy (sd->data, cc_meta->data, cc_meta->size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_ffmpegvidenc_send_frame (GstFFMpegVidEnc * ffmpegenc,
|
gst_ffmpegvidenc_send_frame (GstFFMpegVidEnc * ffmpegenc,
|
||||||
GstVideoCodecFrame * frame)
|
GstVideoCodecFrame * frame)
|
||||||
|
@ -533,6 +552,8 @@ gst_ffmpegvidenc_send_frame (GstFFMpegVidEnc * ffmpegenc,
|
||||||
|
|
||||||
picture = ffmpegenc->picture;
|
picture = ffmpegenc->picture;
|
||||||
|
|
||||||
|
gst_ffmpegvidenc_add_cc (frame->input_buffer, picture);
|
||||||
|
|
||||||
if (ffmpegenc->context->flags & (AV_CODEC_FLAG_INTERLACED_DCT |
|
if (ffmpegenc->context->flags & (AV_CODEC_FLAG_INTERLACED_DCT |
|
||||||
AV_CODEC_FLAG_INTERLACED_ME)) {
|
AV_CODEC_FLAG_INTERLACED_ME)) {
|
||||||
picture->interlaced_frame = TRUE;
|
picture->interlaced_frame = TRUE;
|
||||||
|
|
Loading…
Reference in a new issue