[FFmpeg-devel] [PATCH] af_tempo.c: fix checking of samples and zero frame counts

Rajiv Harlalka rajivharlalka009 at gmail.com
Fri Mar 8 01:04:21 EET 2024


Check for zeros equal to the total samples early, because in case the 
check is true we would already be leaving the first few frames out.

Signed-off-by: Rajiv Harlalka <rajivharlalka009 at gmail.com>
#10692
---
  libavfilter/af_atempo.c | 13 ++++++-------
  1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
index 4621b67b03..8f31c5beaf 100644
--- a/libavfilter/af_atempo.c
+++ b/libavfilter/af_atempo.c
@@ -531,21 +531,20 @@ static int yae_load_frag(ATempoContext *atempo,
      dst = frag->data;
       start = atempo->position[0] - atempo->size;
-    zeros = 0;
+    // what we don't have we substitute with zeros:
+    zeros = frag->position[0] < start ? FFMIN(start - 
frag->position[0], (int64_t)nsamples) : 0;
+
+    if (zeros == nsamples) {
+        return 0;
+    }
       if (frag->position[0] < start) {
-        // what we don't have we substitute with zeros:
-        zeros = FFMIN(start - frag->position[0], (int64_t)nsamples);
          av_assert0(zeros != nsamples);
           memset(dst, 0, zeros * atempo->stride);
          dst += zeros * atempo->stride;
      }
  -    if (zeros == nsamples) {
-        return 0;
-    }
-
      // get the remaining data from the ring buffer:
      na = (atempo->head < atempo->tail ?
            atempo->tail - atempo->head :
-- 
2.44.0



More information about the ffmpeg-devel mailing list