mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-22 00:06:36 +00:00
ext/wavpack/gstwavpackparse.c: Fix a off by one that leads to the duration reported as one sample less than it is
Original commit message from CVS: * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_src_query), (gst_wavpack_parse_handle_seek_event), (gst_wavpack_parse_create_src_pad): Fix a off by one that leads to the duration reported as one sample less than it is
This commit is contained in:
parent
5d004d2c32
commit
9387b181cc
1 changed files with 4 additions and 6 deletions
|
@ -276,7 +276,7 @@ gst_wavpack_parse_src_query (GstPad * pad, GstQuery * query)
|
||||||
rate = parse->samplerate;
|
rate = parse->samplerate;
|
||||||
GST_OBJECT_UNLOCK (parse);
|
GST_OBJECT_UNLOCK (parse);
|
||||||
|
|
||||||
if (len <= 0 || rate == 0) {
|
if (len < 0 || rate == 0) {
|
||||||
GST_DEBUG_OBJECT (parse, "haven't read header yet");
|
GST_DEBUG_OBJECT (parse, "haven't read header yet");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -534,9 +534,7 @@ gst_wavpack_parse_handle_seek_event (GstWavpackParse * wvparse,
|
||||||
/* if seek is to something after the end of the stream seek only
|
/* if seek is to something after the end of the stream seek only
|
||||||
* to the end. this can be caused by rounding errors */
|
* to the end. this can be caused by rounding errors */
|
||||||
if (start >= wvparse->total_samples)
|
if (start >= wvparse->total_samples)
|
||||||
start = wvparse->total_samples;
|
start = wvparse->total_samples - 1;
|
||||||
|
|
||||||
flush = ((seek_flags & GST_SEEK_FLAG_FLUSH) != 0);
|
|
||||||
|
|
||||||
if (start < 0) {
|
if (start < 0) {
|
||||||
GST_OBJECT_UNLOCK (wvparse);
|
GST_OBJECT_UNLOCK (wvparse);
|
||||||
|
@ -544,6 +542,8 @@ gst_wavpack_parse_handle_seek_event (GstWavpackParse * wvparse,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flush = ((seek_flags & GST_SEEK_FLAG_FLUSH) != 0);
|
||||||
|
|
||||||
/* operate on segment copy until we know the seek worked */
|
/* operate on segment copy until we know the seek worked */
|
||||||
segment = wvparse->segment;
|
segment = wvparse->segment;
|
||||||
|
|
||||||
|
@ -795,8 +795,6 @@ gst_wavpack_parse_create_src_pad (GstWavpackParse * wvparse, GstBuffer * buf,
|
||||||
wvparse->total_samples = header->total_samples;
|
wvparse->total_samples = header->total_samples;
|
||||||
if (wvparse->total_samples == (int32_t) - 1)
|
if (wvparse->total_samples == (int32_t) - 1)
|
||||||
wvparse->total_samples = 0;
|
wvparse->total_samples = 0;
|
||||||
else
|
|
||||||
wvparse->total_samples--;
|
|
||||||
|
|
||||||
caps = gst_caps_new_simple ("audio/x-wavpack",
|
caps = gst_caps_new_simple ("audio/x-wavpack",
|
||||||
"width", G_TYPE_INT, WavpackGetBitsPerSample (wpc),
|
"width", G_TYPE_INT, WavpackGetBitsPerSample (wpc),
|
||||||
|
|
Loading…
Reference in a new issue