audiotestsrc: fix rounding errors that might cause segments to be one sample too short

https://bugzilla.gnome.org/show_bug.cgi?id=676884
This commit is contained in:
Simon Berg 2013-03-24 20:44:58 +00:00 committed by Tim-Philipp Müller
parent d8b42e993b
commit f18d2a5a9a

View file

@ -1065,7 +1065,7 @@ gst_audio_test_src_do_seek (GstBaseSrc * basesrc, GstSegment * segment)
bpf = GST_AUDIO_INFO_BPF (&src->info);
/* now move to the time indicated */
src->next_sample = gst_util_uint64_scale_int (time, samplerate, GST_SECOND);
src->next_sample = gst_util_uint64_scale_round (time, samplerate, GST_SECOND);
src->next_byte = src->next_sample * bpf;
if (samplerate == 0)
src->next_time = 0;
@ -1091,7 +1091,8 @@ gst_audio_test_src_do_seek (GstBaseSrc * basesrc, GstSegment * segment)
if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
time = segment->stop;
src->sample_stop = gst_util_uint64_scale_int (time, samplerate, GST_SECOND);
src->sample_stop =
gst_util_uint64_scale_round (time, samplerate, GST_SECOND);
src->check_seek_stop = TRUE;
} else {
src->check_seek_stop = FALSE;