[FFmpeg-devel] [PATCH] avcodec/vp9mvs: fix misaligned access when clearing VP9mv

James Almer jamrial at gmail.com
Sun Jun 2 16:06:26 EEST 2024


On 6/2/2024 9:14 AM, Kacper Michajłow wrote:
> Fixes runtime error: member access within misaligned address
> <addr> for type 'av_alias64', which requires 8 byte alignment.
> 
> VP9mv is aligned to 4 bytes, so instead doing 8 bytes clear, let's do
> 2 times 4 bytes.
> 
> Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
> ---
>   libavcodec/vp9mvs.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/vp9mvs.c b/libavcodec/vp9mvs.c
> index b706d1660f..790cf629a6 100644
> --- a/libavcodec/vp9mvs.c
> +++ b/libavcodec/vp9mvs.c
> @@ -294,7 +294,8 @@ void ff_vp9_fill_mv(VP9TileData *td, VP9mv *mv, int mode, int sb)
>       VP9Block *b = td->b;
>   
>       if (mode == ZEROMV) {
> -        AV_ZERO64(mv);
> +        AV_ZERO32(&mv[0]);
> +        AV_ZERO32(&mv[1]);
>       } else {
>           int hp;

IMO just move mv in VP9Block to the top of the struct. That will make 
sure it's aligned to at the very least 16 byte (Since it's av_malloc'd).


More information about the ffmpeg-devel mailing list