summaryrefslogtreecommitdiff
path: root/gst-libs/gst/audio/audio-resampler.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/audio/audio-resampler.c')
-rw-r--r--gst-libs/gst/audio/audio-resampler.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gst-libs/gst/audio/audio-resampler.c b/gst-libs/gst/audio/audio-resampler.c
index 69c14c776..5e65da5b6 100644
--- a/gst-libs/gst/audio/audio-resampler.c
+++ b/gst-libs/gst/audio/audio-resampler.c
@@ -1662,12 +1662,16 @@ gst_audio_resampler_get_out_frames (GstAudioResampler * resampler,
GST_LOG ("need %d = %d + %d + %d, avail %d = %d + %d", (gint) need,
resampler->n_taps, resampler->samp_index, resampler->skip,
(gint) avail, (gint) resampler->samples_avail, (gint) in_frames);
- if (avail < need)
+ if (avail < need) {
+ GST_LOG ("avail %d < need %d", (int) avail, (int) need);
return 0;
+ }
out = (avail - need) * resampler->out_rate;
- if (out < resampler->samp_phase)
+ if (out < resampler->samp_phase) {
+ GST_LOG ("out %d < samp_phase %d", (int) out, (int) resampler->samp_phase);
return 0;
+ }
out = ((out - resampler->samp_phase) / resampler->in_rate) + 1;
GST_LOG ("out %d = ((%d * %d - %d) / %d) + 1", (gint) out,
@@ -1775,7 +1779,10 @@ gst_audio_resampler_resample (GstAudioResampler * resampler,
resampler->samples_avail = samples_avail += in_frames;
need = resampler->n_taps + resampler->samp_index;
- if (G_UNLIKELY (samples_avail < need)) {
+ if (G_UNLIKELY (samples_avail < need || out_frames == 0)) {
+ GST_LOG ("not enough samples to start: need %" G_GSIZE_FORMAT ", avail %"
+ G_GSIZE_FORMAT ", out %" G_GSIZE_FORMAT, samples_avail, need,
+ out_frames);
/* not enough samples to start */
return;
}