From 4b7c760e113c77072e79f324b408955c52d5a040 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Wed, 6 Sep 2006 09:05:33 +0000 Subject: gst/avi/gstavidemux.c: Revert one change to fix streaming avi (adapter size != data size). Original commit message from CVS: * gst/avi/gstavidemux.c: (gst_avi_demux_read_subindexes_pull), (gst_avi_demux_sync), (gst_avi_demux_stream_header_push), (gst_avi_demux_stream_data): Revert one change to fix streaming avi (adapter size != data size). --- ChangeLog | 7 +++++++ gst/avi/gstavidemux.c | 28 ++++++++++++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2511bc20..ef4143e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-06 Stefan Kost + + * gst/avi/gstavidemux.c: (gst_avi_demux_read_subindexes_pull), + (gst_avi_demux_sync), (gst_avi_demux_stream_header_push), + (gst_avi_demux_stream_data): + Revert one change to fix streaming avi (adapter size != data size). + 2006-09-04 Tim-Philipp Müller Patch by: Frédéric Riss diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 1a422b59..6c0d70c2 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -101,7 +101,7 @@ static GstStateChangeReturn gst_avi_demux_change_state (GstElement * element, static GstElementClass *parent_class = NULL; -/* GObject mathods */ +/* GObject methods */ GType gst_avi_demux_get_type (void) @@ -1619,7 +1619,6 @@ no_index: /* * Sync to next data chunk. */ - static gboolean gst_avi_demux_skip (GstAviDemux * avi, gboolean prevent_eos) { @@ -2854,6 +2853,9 @@ gst_avi_demux_do_seek (GstAviDemux * avi, GstSegment * segment) return TRUE; } +/* + * Handle seek. + */ static gboolean gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) { @@ -3201,7 +3203,8 @@ short_buffer: } /* - * Read data. If we have an index it delegates to gst_avi_demux_process_next_entry(). + * Read data. If we have an index it delegates to + * gst_avi_demux_process_next_entry(). */ static GstFlowReturn gst_avi_demux_stream_data (GstAviDemux * avi) @@ -3282,20 +3285,20 @@ gst_avi_demux_stream_data (GstAviDemux * avi) GstClockTime next_ts = 0; GstFormat format; GstBuffer *buf; - - //const guint8 * data = NULL; + const guint8 *data = NULL; gst_adapter_flush (avi->adapter, 8); /* get buffer */ - buf = gst_adapter_take_buffer (avi->adapter, ((size + 1) & ~1)); - /* - buf = gst_buffer_new_and_alloc (size); - data = gst_adapter_peek (avi->adapter, ((size + 1) & ~1)); - gst_adapter_flush (avi->adapter, ((size + 1) & ~1)); - memcpy (GST_BUFFER_DATA (buf), data, size); - GST_BUFFER_SIZE (buf) = size; + /* this does not work, as the data-size is 'size', but we eventually + * need to flush more data from the adapter. + buf = gst_adapter_take_buffer (avi->adapter, ((size + 1) & ~1)); */ + buf = gst_buffer_new_and_alloc (size); + data = gst_adapter_peek (avi->adapter, ((size + 1) & ~1)); + gst_adapter_flush (avi->adapter, ((size + 1) & ~1)); + memcpy (GST_BUFFER_DATA (buf), data, size); + GST_BUFFER_SIZE (buf) = size; avi->offset += 8 + ((size + 1) & ~1); /* get time of this buffer */ @@ -3319,6 +3322,7 @@ gst_avi_demux_stream_data (GstAviDemux * avi) gst_buffer_unref (buf); } else { */ if (!stream->pad || !gst_pad_is_linked (stream->pad)) { + GST_WARNING ("No pad or not linked."); gst_buffer_unref (buf); } else { GstClockTime dur_ts = 0; -- cgit