#11357: H.264 decoder bug on Arm
--------------------------------------+-----------------------------------
             Reporter:  Bin Peng      |                    Owner:  (none)
                 Type:  defect        |                   Status:  new
             Priority:  normal        |                Component:  avcodec
              Version:  git-master    |               Resolution:
             Keywords:  H264 decoder  |               Blocked By:
             Blocking:                |  Reproduced by developer:  0
Analyzed by developer:  0             |
--------------------------------------+-----------------------------------
Comment (by Bin Peng):

 The reason for the inconsistency is that the value of STRIDE_ALIGN differs
 between platforms. On x86 platforms, it is greater than 16 (typically 32
 or 64), while on ARM platforms, it is 16.
 https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/internal.h#L39

 The STRIDE_ALIGN is set to the buffer stride of temporary buffers for U
 and V components in mc_part_weighted.
 {{{
 uint8_t *tmp_cb = sl->bipred_scratchpad;
 uint8_t *tmp_cr = sl->bipred_scratchpad + (16 << pixel_shift);
 }}}
 https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/h264_mb.c#L410

 But the offset of temporary buffers for U and V components is hardcoded to
 16.

 If the buffer stride is 32 or 64 (as on x86 platforms), the U and V pixels
 can be interleaved row by row without overlapping, resulting in correct
 output. However, on ARM platforms where the stride is 16, the V component
 will overwrite part of the U component's pixels, leading to incorrect
 predicted pixels.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11357#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to