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

Reimar Döffinger Reimar.Doeffinger
Sun Jan 25 11:49:15 CET 2009


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);





More information about the ffmpeg-devel mailing list