summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.com>2013-05-14 22:04:19 -0300
committerThiago Santos <thiago.sousa.santos@collabora.com>2013-05-16 15:00:39 -0300
commitf74f9cd3abe2f5cf00b0731e0e474027bb048f6b (patch)
tree5c439b57e19bd5d5c14efa8a5a88a796fbcc24d2
parent62860f4fa9b071f710c50ad97f6e0ee4c71fda88 (diff)
downloadgstreamer-plugins-bad-f74f9cd3abe2f5cf00b0731e0e474027bb048f6b.tar.gz
mssdemux: add bitrate info to audio streams
bitrate info is always present on the QualityLevel xml node as part of the adaptive selection processing, put it into caps as some decoders require it (avdec_wmav2 for example) https://bugzilla.gnome.org/show_bug.cgi?id=699924
-rw-r--r--ext/smoothstreaming/gstmssmanifest.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/smoothstreaming/gstmssmanifest.c b/ext/smoothstreaming/gstmssmanifest.c
index 4879fa29b..8b50f4a48 100644
--- a/ext/smoothstreaming/gstmssmanifest.c
+++ b/ext/smoothstreaming/gstmssmanifest.c
@@ -451,8 +451,9 @@ _gst_mss_stream_add_h264_codec_data (GstCaps * caps, const gchar * codecdatastr)
}
static GstCaps *
-_gst_mss_stream_video_caps_from_qualitylevel_xml (xmlNodePtr node)
+_gst_mss_stream_video_caps_from_qualitylevel_xml (GstMssStreamQuality * q)
{
+ xmlNodePtr node = q->xmlnode;
GstCaps *caps;
GstStructure *structure;
gchar *fourcc = (gchar *) xmlGetProp (node, (xmlChar *) "FourCC");
@@ -556,8 +557,9 @@ _make_aacl_codec_data (guint64 sampling_rate, guint64 channels)
}
static GstCaps *
-_gst_mss_stream_audio_caps_from_qualitylevel_xml (xmlNodePtr node)
+_gst_mss_stream_audio_caps_from_qualitylevel_xml (GstMssStreamQuality * q)
{
+ xmlNodePtr node = q->xmlnode;
GstCaps *caps;
GstStructure *structure;
gchar *fourcc = (gchar *) xmlGetProp (node, (xmlChar *) "FourCC");
@@ -584,6 +586,9 @@ _gst_mss_stream_audio_caps_from_qualitylevel_xml (xmlNodePtr node)
gst_structure_set (structure, "rate", G_TYPE_INT,
(int) g_ascii_strtoull (rate, NULL, 10), NULL);
}
+ if (q->bitrate) {
+ gst_structure_set (structure, "bitrate", G_TYPE_INT, q->bitrate, NULL);
+ }
if (codec_data && strlen (codec_data)) {
GstBuffer *buffer = gst_buffer_from_hex_string ((gchar *) codec_data);
@@ -697,11 +702,11 @@ gst_mss_stream_get_caps (GstMssStream * stream)
if (streamtype == MSS_STREAM_TYPE_VIDEO)
caps =
_gst_mss_stream_video_caps_from_qualitylevel_xml
- (qualitylevel->xmlnode);
+ (qualitylevel);
else if (streamtype == MSS_STREAM_TYPE_AUDIO)
caps =
_gst_mss_stream_audio_caps_from_qualitylevel_xml
- (qualitylevel->xmlnode);
+ (qualitylevel);
return caps;
}