mssdemux: add bitrate info to audio streams
authorThiago Santos <thiago.sousa.santos@collabora.com>
Wed, 15 May 2013 01:04:19 +0000 (22:04 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Thu, 16 May 2013 18:00:39 +0000 (15:00 -0300)
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

ext/smoothstreaming/gstmssmanifest.c

index 4879fa29bc602d81b3b228fce125e59c9ae12be1..8b50f4a48945cf41e452dfff3f6e4f91a3a67f6a 100644 (file)
@@ -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;
 }