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

James Almer jamrial at gmail.com
Sun Jun 2 16:11:53 EEST 2024


On 6/2/2024 10:06 AM, James Almer wrote:
> 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).

Actually nevermind, VP9mv has two int16_t and given what's passed to 
ff_vp9_fill_mv() it's not enough.


More information about the ffmpeg-devel mailing list