Fixed mishandling events and incorrect audio skipping after seek.
authorOwen Fraser-Green <owen@discobabe.net>
Tue, 23 Aug 2005 07:54:31 +0000 (07:54 +0000)
committerOwen Fraser-Green <owen@discobabe.net>
Tue, 23 Aug 2005 07:54:31 +0000 (07:54 +0000)
Original commit message from CVS:
Fixed mishandling events and incorrect audio skipping after seek.

ChangeLog
gst/realmedia/rmdemux.c

index e51613aba77b272fff131e74189871a7c55b5eaf..87ed50a3df9137cf3f759d567bd027c53597a720 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-23  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c (gst_rmdemux_src_event): Fixed bug
+       causing events to be passed wrong way.
+       (gst_rmdemux_parse_packet): Avoid accidentally skipping audio.
+
 2005-08-22  Jan Schmidt  <thaytan@mad.scientist.com>
 
        * ext/mad/gstid3tag.c: (gst_id3_tag_init),
index d4d6375f0edc32c7dfc36d4ae8d5c510ae7bc266..fa700b307b444bc4aa893b956c9996554266c58b 100644 (file)
@@ -264,7 +264,7 @@ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
     default:
       GST_LOG_OBJECT (rmdemux, "Event on sink: type=%d",
           GST_EVENT_TYPE (event));
-      ret = gst_pad_event_default (rmdemux->sinkpad, event);
+      ret = gst_pad_event_default (pad, event);
       break;
   }
 
@@ -331,7 +331,7 @@ gst_rmdemux_src_event (GstPad * pad, GstEvent * event)
     }
     default:
       GST_LOG_OBJECT (rmdemux, "Event on src: type=%d", GST_EVENT_TYPE (event));
-      ret = gst_pad_event_default (rmdemux->sinkpad, event);
+      ret = gst_pad_event_default (pad, event);
       break;
   }
 
@@ -1460,7 +1460,7 @@ gst_rmdemux_parse_packet (GstRMDemux * rmdemux, const void *data,
 
   stream = gst_rmdemux_get_stream_by_id (rmdemux, id);
 
-  if (rmdemux->offset >= stream->seek_offset) {
+  if ((rmdemux->offset + packet_size) > stream->seek_offset) {
     if (gst_pad_alloc_buffer (stream->pad, GST_BUFFER_OFFSET_NONE,
             packet_size, stream->caps, &buffer) != GST_FLOW_OK) {
       GST_WARNING_OBJECT (rmdemux, "failed to alloc src buffer for stream %d",
@@ -1478,7 +1478,7 @@ gst_rmdemux_parse_packet (GstRMDemux * rmdemux, const void *data,
     }
   } else {
     GST_DEBUG_OBJECT (rmdemux,
-        "Stream %d is skipping: seek_offset=%d, offset=%d", stream->id,
-        stream->seek_offset, rmdemux->offset);
+        "Stream %d is skipping: seek_offset=%d, offset=%d, packet_size",
+        stream->id, stream->seek_offset, rmdemux->offset, packet_size);
   }
 }