ac3parse: improve src caps settings
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 27 Oct 2009 15:16:50 +0000 (16:16 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 17:07:01 +0000 (18:07 +0100)
gst/audioparsers/gstac3parse.c

index 4b74a52..c497fea 100644 (file)
@@ -411,12 +411,17 @@ gst_ac3_parse_parse_frame (GstBaseParse * parse, GstBuffer * buf)
     goto broken_header;
 
   GST_LOG_OBJECT (parse, "size: %u, rate: %u, chans: %u", fsize, rate, chans);
-  {
-    GstCaps *caps = gst_caps_new_simple ("audio/x-ac3", "rate", G_TYPE_INT,
-        rate, "channels", G_TYPE_INT, chans, NULL);
+
+  if (G_UNLIKELY (ac3parse->sample_rate != rate || ac3parse->channels != chans)) {
+    GstCaps *caps = gst_caps_new_simple ("audio/x-ac3",
+        "framed", G_TYPE_BOOLEAN, TRUE, "rate", G_TYPE_INT, rate,
+        "channels", G_TYPE_INT, chans, NULL);
     gst_buffer_set_caps (buf, caps);
     gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), caps);
     gst_caps_unref (caps);
+
+    ac3parse->sample_rate = rate;
+    ac3parse->channels = chans;
   }
 
   return GST_FLOW_OK;