[FFmpeg-devel] [PATCH] Fix unaligned access in lcl decoder
Måns Rullgård
mans
Fri May 29 18:40:13 CEST 2009
Jeff Downs <heydowns at borg.com> writes:
> On Thu, 28 May 2009, M?ns Rullg?rd wrote:
>
>> Jeff Downs <heydowns at borg.com> writes:
>> >
>> > It looks fine. It expands to:
>> >
>> > (((struct unaligned_32 *) (destptr))->l) =
>> > ((((const struct unaligned_32 *) (srcptr))->l));
>>
>> That's what it does with gcc. With the shift/or variant it will be
>> something much uglier.
>
> If that is the case, then should the macro definitions be fixed? The
> read/write pairing is used elsewhere (dsputil.h).
Those macros are meant for reading *or* writing a value to an
unaligned location. When copying, there is no need to shift/or the
bytes into a 32-bit value only to take it apart again for storing.
This means that sometimes those macros are good for copying, while
other times (when shift/or is used) bytewise copying would be better.
Perhaps we need a dedicated macro for copying small unaligned
quantities. In theory, compilers should optimise memcpy()
appropriately, but somehow I don't them.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list