summaryrefslogtreecommitdiffstats
path: root/gst/wavparse
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2003-04-29 21:54:47 +0000
committerBenjamin Otte <otte@gnome.org>2003-04-29 21:54:47 +0000
commit98cfd56ea3b21a7a48caf92ad14cf7a5ea719e9d (patch)
tree5b73458a39858e44525999e095025ab42cc16f34 /gst/wavparse
parentbd1013b0861387780dd44c7ece445620f69b0e84 (diff)
bugfixes:
Original commit message from CVS: bugfixes: - seek correctly on SEEK_METHOD_END - don't emit a warning when mp3's in wav's have no width information - use BYTES format on discontinuous events and omit timestamp when invalid (mp3 anyone?)
Diffstat (limited to 'gst/wavparse')
-rw-r--r--gst/wavparse/gstwavparse.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index 9a010656..47884944 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -267,10 +267,18 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf)
&GST_BUFFER_TIMESTAMP (buf));
if (wavparse->need_discont) {
- gst_pad_push (wavparse->srcpad,
- GST_BUFFER (gst_event_new_discontinuous (FALSE,
+ if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+ gst_pad_push (wavparse->srcpad,
+ GST_BUFFER (gst_event_new_discontinuous (FALSE,
+ GST_FORMAT_BYTES, wavparse->offset,
GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (buf),
NULL)));
+ } else {
+ gst_pad_push (wavparse->srcpad,
+ GST_BUFFER (gst_event_new_discontinuous (FALSE,
+ GST_FORMAT_BYTES, wavparse->offset,
+ NULL)));
+ }
wavparse->need_discont = FALSE;
}
gst_pad_push (wavparse->srcpad, buf);
@@ -499,9 +507,8 @@ gst_wavparse_pad_convert (GstPad *pad,
bytes_per_sample = wavparse->channels * wavparse->width / 8;
if (bytes_per_sample == 0) {
- g_warning ("bytes_per_sample is 0, internal error\n");
- g_warning ("channels %d, width %d\n",
- wavparse->channels, wavparse->width);
+ GST_DEBUG (0, "bytes_per_sample is 0, probably an mp3 - channels %d, width %d\n",
+ wavparse->channels, wavparse->width);
return FALSE;
}
byterate = (glong) (bytes_per_sample * wavparse->rate);
@@ -630,7 +637,7 @@ gst_wavparse_srcpad_event (GstPad *pad, GstEvent *event)
seek = gst_event_new_seek (
GST_FORMAT_BYTES |
(GST_EVENT_SEEK_TYPE (event) & ~GST_SEEK_FORMAT_MASK),
- byteoffset + wavparse->datastart);
+ byteoffset + (GST_EVENT_SEEK_METHOD (event) == GST_SEEK_METHOD_END ? 0 : wavparse->datastart));
res = gst_pad_send_event (GST_PAD_PEER (wavparse->sinkpad), seek);