[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