gst/realmedia/rmdemux.c: After descrambling, push the packets out as individual packe...
authorTim-Philipp Müller <tim@centricular.net>
Wed, 16 May 2007 19:15:13 +0000 (19:15 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Wed, 16 May 2007 19:15:13 +0000 (19:15 +0000)
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_cook_audio):
After descrambling, push the packets out as individual packets
instead of one big descrambled buffer. Makes cook audio decoding
work with the 'realaudiodec' decoder from gst-plugins-bad.

ChangeLog
gst/realmedia/rmdemux.c

index c3c5dbc..a721b4c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2007-05-16  Tim-Philipp Müller  <tim at centricular dot net>
 
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_cook_audio):
+         After descrambling, push the packets out as individual packets
+         instead of one big descrambled buffer. Makes cook audio decoding
+         work with the 'realaudiodec' decoder from gst-plugins-bad.
+
+2007-05-16  Tim-Philipp Müller  <tim at centricular dot net>
+
        * gst/realmedia/rmdemux.c: (gst_rmdemux_init),
        (gst_rmdemux_sink_event), (gst_rmdemux_perform_seek),
        (gst_rmdemux_reset), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
index d8bf56f..6f8944b 100644 (file)
@@ -1876,7 +1876,18 @@ gst_rmdemux_descramble_cook_audio (GstRMDemux * rmdemux,
     }
   }
 
-  ret = gst_pad_push (stream->pad, outbuf);
+  /* some decoders, such as realaudiodec, need to be fed in packet units */
+  for (p = 0; p < height; ++p) {
+    GstBuffer *subbuf;
+
+    subbuf = gst_buffer_create_sub (outbuf, p * packet_size, packet_size);
+    gst_buffer_set_caps (subbuf, GST_PAD_CAPS (stream->pad));
+    ret = gst_pad_push (stream->pad, subbuf);
+    if (ret != GST_FLOW_OK)
+      break;
+  }
+
+  gst_buffer_unref (outbuf);
 
 done: