mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 05:31:15 +00:00
avviddec: do not add 708 caption meta if already exists
(this is only used for CEA 708 raw data). another element such as mpegvideoparse may have already added the meta.
This commit is contained in:
parent
be579c426d
commit
b2cc8a57d4
1 changed files with 28 additions and 5 deletions
|
@ -1598,12 +1598,35 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
|
|||
AVFrameSideData *side_data =
|
||||
av_frame_get_side_data (ffmpegdec->picture, AV_FRAME_DATA_A53_CC);
|
||||
if (side_data) {
|
||||
GST_LOG_OBJECT (ffmpegdec, "Found CC of size %d", side_data->size);
|
||||
GstVideoCaptionMeta *cc_meta = NULL;
|
||||
gpointer iter = NULL;
|
||||
gboolean found_708_raw_meta = FALSE;
|
||||
|
||||
GST_LOG_OBJECT (ffmpegdec,
|
||||
"Found CC side data of type AV_FRAME_DATA_A53_CC, size %d",
|
||||
side_data->size);
|
||||
GST_MEMDUMP ("A53 CC", side_data->data, side_data->size);
|
||||
out_frame->output_buffer =
|
||||
gst_buffer_make_writable (out_frame->output_buffer);
|
||||
gst_buffer_add_video_caption_meta (out_frame->output_buffer,
|
||||
GST_VIDEO_CAPTION_TYPE_CEA708_RAW, side_data->data, side_data->size);
|
||||
|
||||
while ((cc_meta = (GstVideoCaptionMeta *)
|
||||
gst_buffer_iterate_meta_filtered (out_frame->input_buffer, &iter,
|
||||
GST_VIDEO_CAPTION_META_API_TYPE))) {
|
||||
if (cc_meta->caption_type != GST_VIDEO_CAPTION_TYPE_CEA708_RAW)
|
||||
continue;
|
||||
found_708_raw_meta = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
/* do not add CEA 708 caption meta if it already exists */
|
||||
if (!found_708_raw_meta) {
|
||||
out_frame->output_buffer =
|
||||
gst_buffer_make_writable (out_frame->output_buffer);
|
||||
gst_buffer_add_video_caption_meta (out_frame->output_buffer,
|
||||
GST_VIDEO_CAPTION_TYPE_CEA708_RAW, side_data->data,
|
||||
side_data->size);
|
||||
} else {
|
||||
GST_LOG_OBJECT (ffmpegdec,
|
||||
"CEA 708 caption meta already exists: will not add new caption meta");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue