diff options
-rw-r--r-- | ext/opus/gstopusenc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ext/opus/gstopusenc.c b/ext/opus/gstopusenc.c index 4bac854d2..70c771806 100644 --- a/ext/opus/gstopusenc.c +++ b/ext/opus/gstopusenc.c @@ -221,6 +221,7 @@ static void gst_opus_enc_get_property (GObject * object, guint prop_id, static void gst_opus_enc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); +static void gst_opus_enc_set_tags (GstOpusEnc * enc); static gboolean gst_opus_enc_start (GstAudioEncoder * benc); static gboolean gst_opus_enc_stop (GstAudioEncoder * benc); static gboolean gst_opus_enc_set_format (GstAudioEncoder * benc, @@ -237,6 +238,22 @@ G_DEFINE_TYPE_WITH_CODE (GstOpusEnc, gst_opus_enc, GST_TYPE_AUDIO_ENCODER, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL)); static void +gst_opus_enc_set_tags (GstOpusEnc * enc) +{ + GstTagList *taglist; + + /* create a taglist and add a bitrate tag to it */ + taglist = gst_tag_list_new_empty (); + gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, + GST_TAG_BITRATE, enc->bitrate, NULL); + + gst_audio_encoder_merge_tags (GST_AUDIO_ENCODER (enc), taglist, + GST_TAG_MERGE_REPLACE); + + gst_tag_list_unref (taglist); +} + +static void gst_opus_enc_class_init (GstOpusEncClass * klass) { GObjectClass *gobject_class; @@ -679,6 +696,9 @@ gst_opus_enc_set_format (GstAudioEncoder * benc, GstAudioInfo * info) return FALSE; } + /* update the tags */ + gst_opus_enc_set_tags (enc); + enc->frame_samples = gst_opus_enc_get_frame_samples (enc); /* feedback to base class */ |