summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Schmidt <jan@centricular.com>2015-07-30 01:24:54 +1000
committerJan Schmidt <jan@centricular.com>2015-08-24 00:01:40 +1000
commit30a406591ae2f6fd5daec95232b062d102ca532e (patch)
treea911dca50939f88b68b7d9cf8136153346047b6f
parent6e590fe498d792c32a73af2cd94c849c0dbd0a58 (diff)
downloadgst-libav-30a406591ae2f6fd5daec95232b062d102ca532e.tar.gz
avvid/audenc: Set some tags in the output for downstream's info
Add the codec name and bitrate into the output for informational purposes. Bitrate in particular is now used by flvmux to set videodatarate and audiodatarate in the resulting stream
-rw-r--r--ext/libav/gstavaudenc.c17
-rw-r--r--ext/libav/gstavvidenc.c17
2 files changed, 34 insertions, 0 deletions
diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
index f783292..64d7011 100644
--- a/ext/libav/gstavaudenc.c
+++ b/ext/libav/gstavaudenc.c
@@ -386,6 +386,23 @@ gst_ffmpegaudenc_set_format (GstAudioEncoder * encoder, GstAudioInfo * info)
gst_audio_encoder_set_frame_max (GST_AUDIO_ENCODER (ffmpegaudenc), 0);
}
+ /* Store some tags */
+ {
+ GstTagList *tags = gst_tag_list_new_empty ();
+ const gchar *codec;
+
+ gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_NOMINAL_BITRATE,
+ ffmpegaudenc->context->bit_rate, NULL);
+
+ if ((codec =
+ gst_ffmpeg_get_codecid_longname (ffmpegaudenc->context->codec_id)))
+ gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_AUDIO_CODEC, codec,
+ NULL);
+
+ gst_audio_encoder_merge_tags (encoder, tags, GST_TAG_MERGE_REPLACE);
+ gst_tag_list_unref (tags);
+ }
+
/* success! */
ffmpegaudenc->opened = TRUE;
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
index a434261..f95215c 100644
--- a/ext/libav/gstavvidenc.c
+++ b/ext/libav/gstavvidenc.c
@@ -476,6 +476,23 @@ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder,
output_format = gst_video_encoder_set_output_state (encoder, icaps, state);
gst_video_codec_state_unref (output_format);
+ /* Store some tags */
+ {
+ GstTagList *tags = gst_tag_list_new_empty ();
+ const gchar *codec;
+
+ gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_NOMINAL_BITRATE,
+ ffmpegenc->context->bit_rate, NULL);
+
+ if ((codec =
+ gst_ffmpeg_get_codecid_longname (ffmpegenc->context->codec_id)))
+ gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_VIDEO_CODEC, codec,
+ NULL);
+
+ gst_video_encoder_merge_tags (encoder, tags, GST_TAG_MERGE_REPLACE);
+ gst_tag_list_unref (tags);
+ }
+
/* success! */
ffmpegenc->opened = TRUE;