• 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
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_opencl.c Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_cuvid.c Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_qsv.c Loading commit data...
ffmpeg_vaapi.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...