• Muhammad Faiz's avatar
    avfilter: take_samples: do not directly return frame when samples are skipped · fc3a03fc
    Muhammad Faiz authored
    Modifying data pointer when skipping samples may make it unaligned.
    Workaround for Ticket6349.
    
    This should fix the crash of ticket's testcase and a crash/regression
    with avxsynth (reported by Michael Niedermayer).
    
    Also change frame->nb_samples < max to frame->nb_samples <= max.
    This improves performance. Benchmark:
    ./ffmpeg -filter_complex "aevalsrc=0:n=1166,firequalizer=fixed=on" -f null null
    old:
      25767 decicycles in take_samples,    1023 runs,      1 skips
      25422 decicycles in take_samples,    2047 runs,      1 skips
      25181 decicycles in take_samples,    4095 runs,      1 skips
      24904 decicycles in take_samples,    8191 runs,      1 skips
    
    new:
        550 decicycles in take_samples,    1024 runs,      0 skips
        548 decicycles in take_samples,    2048 runs,      0 skips
        545 decicycles in take_samples,    4096 runs,      0 skips
        544 decicycles in take_samples,    8192 runs,      0 skips
    Reviewed-by: 's avatarNicolas George <george@nsup.org>
    Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    Reviewed-by: 's avatarPaul B Mahol <onemda@gmail.com>
    Signed-off-by: 's avatarMuhammad Faiz <mfcc64@gmail.com>
    fc3a03fc
framequeue.h 4.34 KB