From 803b65613b59e1a40f61368fae012c82701a222e Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Tue, 27 Sep 2011 16:16:54 +0200 Subject: [PATCH] audioencoder: send tag event after pending events ... which probably includes a pending newsegment event. --- gst-libs/gst/audio/gstaudioencoder.c | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/gst-libs/gst/audio/gstaudioencoder.c b/gst-libs/gst/audio/gstaudioencoder.c index 1580fc99e2..4b2df82925 100644 --- a/gst-libs/gst/audio/gstaudioencoder.c +++ b/gst-libs/gst/audio/gstaudioencoder.c @@ -490,21 +490,6 @@ gst_audio_encoder_finish_frame (GstAudioEncoder * enc, GstBuffer * buf, GST_AUDIO_ENCODER_STREAM_LOCK (enc); - if (G_UNLIKELY (enc->priv->tags)) { - GstTagList *tags; - - /* add codec info to pending tags */ - tags = enc->priv->tags; - /* no more pending */ - enc->priv->tags = NULL; - gst_pb_utils_add_codec_description_to_tag_list (tags, GST_TAG_CODEC, - GST_PAD_CAPS (enc->srcpad)); - gst_pb_utils_add_codec_description_to_tag_list (tags, GST_TAG_AUDIO_CODEC, - GST_PAD_CAPS (enc->srcpad)); - GST_DEBUG_OBJECT (enc, "sending tags %" GST_PTR_FORMAT, tags); - gst_element_found_tags_for_pad (GST_ELEMENT (enc), enc->srcpad, tags); - } - GST_LOG_OBJECT (enc, "accepting %d bytes encoded data as %d samples", buf ? GST_BUFFER_SIZE (buf) : -1, samples); @@ -523,6 +508,22 @@ gst_audio_encoder_finish_frame (GstAudioEncoder * enc, GstBuffer * buf, g_list_free (pending_events); } + /* send after pending events, which likely includes newsegment event */ + if (G_UNLIKELY (enc->priv->tags)) { + GstTagList *tags; + + /* add codec info to pending tags */ + tags = enc->priv->tags; + /* no more pending */ + enc->priv->tags = NULL; + gst_pb_utils_add_codec_description_to_tag_list (tags, GST_TAG_CODEC, + GST_PAD_CAPS (enc->srcpad)); + gst_pb_utils_add_codec_description_to_tag_list (tags, GST_TAG_AUDIO_CODEC, + GST_PAD_CAPS (enc->srcpad)); + GST_DEBUG_OBJECT (enc, "sending tags %" GST_PTR_FORMAT, tags); + gst_element_found_tags_for_pad (GST_ELEMENT (enc), enc->srcpad, tags); + } + /* remove corresponding samples from input */ if (samples < 0) samples = (enc->priv->offset / ctx->info.bpf);