From b141bfed60f6a8527e1bdbb54ab8d81bff203f84 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 9 Aug 2012 16:19:32 +0200 Subject: [PATCH] video: Merge upstream stream tags --- gst-libs/gst/video/gstvideodecoder.c | 14 ++++++++++++++ gst-libs/gst/video/gstvideoencoder.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c index d1cc288..fae9a26 100644 --- a/gst-libs/gst/video/gstvideodecoder.c +++ b/gst-libs/gst/video/gstvideodecoder.c @@ -1012,6 +1012,20 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder, gst_video_decoder_flush (decoder, TRUE); GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); } + case GST_EVENT_TAG: + { + GstTagList *tags; + + gst_event_parse_tag (event, &tags); + + if (gst_tag_list_get_scope (tags) == GST_TAG_SCOPE_STREAM) { + gst_video_decoder_merge_tags (decoder, tags, GST_TAG_MERGE_REPLACE); + gst_event_unref (event); + event = NULL; + ret = TRUE; + } + break; + } default: break; } diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c index 013af31..bfff440 100644 --- a/gst-libs/gst/video/gstvideoencoder.c +++ b/gst-libs/gst/video/gstvideoencoder.c @@ -988,6 +988,35 @@ gst_video_encoder_sink_event_default (GstVideoEncoder * encoder, } break; } + case GST_EVENT_TAG: + { + GstTagList *tags; + + gst_event_parse_tag (event, &tags); + + if (gst_tag_list_get_scope (tags) == GST_TAG_SCOPE_STREAM) { + tags = gst_tag_list_copy (tags); + + /* FIXME: make generic based on GST_TAG_FLAG_ENCODED */ + gst_tag_list_remove_tag (tags, GST_TAG_CODEC); + gst_tag_list_remove_tag (tags, GST_TAG_AUDIO_CODEC); + gst_tag_list_remove_tag (tags, GST_TAG_VIDEO_CODEC); + gst_tag_list_remove_tag (tags, GST_TAG_SUBTITLE_CODEC); + gst_tag_list_remove_tag (tags, GST_TAG_CONTAINER_FORMAT); + gst_tag_list_remove_tag (tags, GST_TAG_BITRATE); + gst_tag_list_remove_tag (tags, GST_TAG_NOMINAL_BITRATE); + gst_tag_list_remove_tag (tags, GST_TAG_MAXIMUM_BITRATE); + gst_tag_list_remove_tag (tags, GST_TAG_MINIMUM_BITRATE); + gst_tag_list_remove_tag (tags, GST_TAG_ENCODER); + gst_tag_list_remove_tag (tags, GST_TAG_ENCODER_VERSION); + + gst_video_encoder_merge_tags (encoder, tags, GST_TAG_MERGE_REPLACE); + gst_event_unref (event); + event = NULL; + ret = TRUE; + } + break; + } default: break; } -- 2.7.4