[FFmpeg-devel] [RFC] use AV_WL32/AV_WB32 in put_bits

Måns Rullgård mans
Sun Jan 25 13:39:21 CET 2009


Reimar D?ffinger <Reimar.Doeffinger at stud.uni-karlsruhe.de> writes:

> Hello,
> I do not know if this was maybe intentional, but it seems to me put_bits
> could use those macros to at least simplify the code, possibly to even
> speed it up.
> Maybe it could be simplified even more, since the else part is the same
> as AV_W?32, too, when HAVE_FAST_UNALIGNED is set.
> Anyway, this is the change I made:
>
> diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h
> index 0f81106..9af01af 100644
> --- a/libavcodec/bitstream.h
> +++ b/libavcodec/bitstream.h
> @@ -198,10 +198,7 @@ static inline void put_bits(PutBitContext *s, int
> n, unsigned int value)
>      if (n >= bit_left) {
>  #if !HAVE_FAST_UNALIGNED
>          if (3 & (intptr_t) s->buf_ptr) {
> -            s->buf_ptr[0] = bit_buf      ;
> -            s->buf_ptr[1] = bit_buf >>  8;
> -            s->buf_ptr[2] = bit_buf >> 16;
> -            s->buf_ptr[3] = bit_buf >> 24;
> +            AV_WL32(s->buf_ptr, bit_buf);
>          } else
>  #endif
>          *(uint32_t *)s->buf_ptr = le2me_32(bit_buf);
> @@ -219,10 +216,7 @@ static inline void put_bits(PutBitContext *s, int
> n, unsigned int value)
>          bit_buf |= value >> (n - bit_left);
>  #if !HAVE_FAST_UNALIGNED
>          if (3 & (intptr_t) s->buf_ptr) {
> -            s->buf_ptr[0] = bit_buf >> 24;
> -            s->buf_ptr[1] = bit_buf >> 16;
> -            s->buf_ptr[2] = bit_buf >>  8;
> -            s->buf_ptr[3] = bit_buf      ;
> +            AV_WB32(s->buf_ptr, bit_buf);
>          } else
>  #endif
>          *(uint32_t *)s->buf_ptr = be2me_32(bit_buf);

I noticed the same thing but forgot to mention it.

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list