Change #230951
Category | ffmpeg |
Changed by | Andreas Rheinhardt <andreas.rheinhardt | @outlook.com>
Changed at | Thu 29 May 2025 08:00:21 |
Repository | https://git.ffmpeg.org/ffmpeg.git |
Project | ffmpeg |
Branch | master |
Revision | 75960ac2708659344bc33b4c108e4a49a0d3184e |
Comments
avcodec/asvenc: Fix crash with unaligned pointers/linesizes This happens on systems where get_pixels really needs to be properly aligned, like ARMV7 or RISC-V. For these systems, 0401ca714a2714743573e27c384ffa810fd31a92 caused a bus error for the vsynth3-asv[12] tests, because the stride in these tests is unaligned. See e.g. https://fate.ffmpeg.org/report.cgi?slot=armv7-linux-gcc-13&time=20250527020548 https://fate.ffmpeg.org/report.cgi?slot=rv64gcvb-linux-gnu-gcc&time=20250527001827 It can also happen (even before said commit) if the pointers itself are unaligned, e.g. by using the crop filter: ffmpeg -filter_complex nullsrc=s=740x576:r=25,format=yuv420p,crop=w=720:x=2 \ -c:v asv2 -f null - The alignment requirements for the frames passed to encoders are mostly undocumented; the only thing I could find is the documentation of AVFrame.linesize: "For video the linesizes should be multiples of the CPUs alignment preference". This means that the FFmpeg cli violates our API. Yet as the above command line shows, it can also happen with unaligned pointers and there does not seem to be a prohibition of this, so we need to handle this case. This commit does so by using get_pixels_unaligned when needed. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/asvenc.c