diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-07-03 02:56:12 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-07-03 03:14:10 +0200 |
commit | cbfdfbe846f872d4283579c8cbca42c90896905c (patch) | |
tree | adc2aebfe0b12ffa1a889dc72ab57bcb1e0ad9e0 /libavcodec/put_bits.h | |
parent | 59bd0fef6691f5b23eebbd7dd2f3e74c8d60c6a7 (diff) | |
parent | 5dd045ebc11933dca4d6af06e6b1e62be56802f7 (diff) | |
download | ffmpeg-cbfdfbe846f872d4283579c8cbca42c90896905c.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
ARM: ac3: update ff_ac3_extract_exponents_neon per 8b7b2d6
ARM: NEON optimised vector_clip_int32()
swscale: disable full_chroma_int when converting to non-24/32bpp RGB.
suggest to use av_get_bytes_per_sample() in av_get_bits_per_sample_format() doxy
ffmpeg: use av_get_bytes_per_sample() in place of av_get_bits_per_sample_fmt()
put_bits: remove ALT_BITSTREAM_WRITER
put_bits: always use intreadwrite.h macros
libavformat: Add an example how to use the metadata API
doxygen: Prefer member groups over grouping into modules
doxygen: be more permissive when searching for API examples
avformat: doxify the Metadata API
lavf: restore old behavior for custom AVIOContex with an AVFMT_NOFILE format.
lavf: use the correct pointer in av_open_input_stream().
avidec: infer absolute vs relative index from first packet
Conflicts:
libavformat/Makefile
libavformat/avidec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/put_bits.h')
-rw-r--r-- | libavcodec/put_bits.h | 117 |
1 files changed, 3 insertions, 114 deletions
diff --git a/libavcodec/put_bits.h b/libavcodec/put_bits.h index 79016912d5..a3fc5f16f1 100644 --- a/libavcodec/put_bits.h +++ b/libavcodec/put_bits.h @@ -36,19 +36,10 @@ #include "mathops.h" #include "config.h" -//#define ALT_BITSTREAM_WRITER -//#define ALIGNED_BITSTREAM_WRITER - -/* buf and buf_end must be present and used by every alternative writer. */ typedef struct PutBitContext { -#ifdef ALT_BITSTREAM_WRITER - uint8_t *buf, *buf_end; - int index; -#else uint32_t bit_buf; int bit_left; uint8_t *buf, *buf_ptr, *buf_end; -#endif int size_in_bits; } PutBitContext; @@ -68,15 +59,9 @@ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_s s->size_in_bits= 8*buffer_size; s->buf = buffer; s->buf_end = s->buf + buffer_size; -#ifdef ALT_BITSTREAM_WRITER - s->index=0; - ((uint32_t*)(s->buf))[0]=0; -// memset(buffer, 0, buffer_size); -#else s->buf_ptr = s->buf; s->bit_left=32; s->bit_buf=0; -#endif } /** @@ -84,11 +69,7 @@ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_s */ static inline int put_bits_count(PutBitContext *s) { -#ifdef ALT_BITSTREAM_WRITER - return s->index; -#else return (s->buf_ptr - s->buf) * 8 + 32 - s->bit_left; -#endif } /** @@ -96,9 +77,6 @@ static inline int put_bits_count(PutBitContext *s) */ static inline void flush_put_bits(PutBitContext *s) { -#ifdef ALT_BITSTREAM_WRITER - align_put_bits(s); -#else #ifndef BITSTREAM_WRITER_LE s->bit_buf<<= s->bit_left; #endif @@ -115,10 +93,9 @@ static inline void flush_put_bits(PutBitContext *s) } s->bit_left=32; s->bit_buf=0; -#endif } -#if defined(ALT_BITSTREAM_WRITER) || defined(BITSTREAM_WRITER_LE) +#ifdef BITSTREAM_WRITER_LE #define align_put_bits align_put_bits_unsupported_here #define ff_put_string ff_put_string_unsupported_here #define ff_copy_bits ff_copy_bits_unsupported_here @@ -148,7 +125,6 @@ void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length); * Use put_bits32 to write 32 bits. */ static inline void put_bits(PutBitContext *s, int n, unsigned int value) -#ifndef ALT_BITSTREAM_WRITER { unsigned int bit_buf; int bit_left; @@ -164,12 +140,7 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) #ifdef BITSTREAM_WRITER_LE bit_buf |= value << (32 - bit_left); if (n >= bit_left) { -#if !HAVE_FAST_UNALIGNED - if (3 & (intptr_t) s->buf_ptr) { - AV_WL32(s->buf_ptr, bit_buf); - } else -#endif - *(uint32_t *)s->buf_ptr = av_le2ne32(bit_buf); + AV_WL32(s->buf_ptr, bit_buf); s->buf_ptr+=4; bit_buf = (bit_left==32)?0:value >> bit_left; bit_left+=32; @@ -182,12 +153,7 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) } else { bit_buf<<=bit_left; bit_buf |= value >> (n - bit_left); -#if !HAVE_FAST_UNALIGNED - if (3 & (intptr_t) s->buf_ptr) { - AV_WB32(s->buf_ptr, bit_buf); - } else -#endif - *(uint32_t *)s->buf_ptr = av_be2ne32(bit_buf); + AV_WB32(s->buf_ptr, bit_buf); //printf("bitbuf = %08x\n", bit_buf); s->buf_ptr+=4; bit_left+=32 - n; @@ -198,70 +164,6 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) s->bit_buf = bit_buf; s->bit_left = bit_left; } -#else /* ALT_BITSTREAM_WRITER defined */ -{ -# ifdef ALIGNED_BITSTREAM_WRITER -# if ARCH_X86 - __asm__ volatile( - "movl %0, %%ecx \n\t" - "xorl %%eax, %%eax \n\t" - "shrdl %%cl, %1, %%eax \n\t" - "shrl %%cl, %1 \n\t" - "movl %0, %%ecx \n\t" - "shrl $3, %%ecx \n\t" - "andl $0xFFFFFFFC, %%ecx \n\t" - "bswapl %1 \n\t" - "orl %1, (%2, %%ecx) \n\t" - "bswapl %%eax \n\t" - "addl %3, %0 \n\t" - "movl %%eax, 4(%2, %%ecx) \n\t" - : "=&r" (s->index), "=&r" (value) - : "r" (s->buf), "r" (n), "0" (s->index), "1" (value<<(-n)) - : "%eax", "%ecx" - ); -# else - int index= s->index; - uint32_t *ptr= ((uint32_t *)s->buf)+(index>>5); - - value<<= 32-n; - - ptr[0] |= av_be2ne32(value>>(index&31)); - ptr[1] = av_be2ne32(value<<(32-(index&31))); -//if(n>24) printf("%d %d\n", n, value); - index+= n; - s->index= index; -# endif -# else //ALIGNED_BITSTREAM_WRITER -# if ARCH_X86 - __asm__ volatile( - "movl $7, %%ecx \n\t" - "andl %0, %%ecx \n\t" - "addl %3, %%ecx \n\t" - "negl %%ecx \n\t" - "shll %%cl, %1 \n\t" - "bswapl %1 \n\t" - "movl %0, %%ecx \n\t" - "shrl $3, %%ecx \n\t" - "orl %1, (%%ecx, %2) \n\t" - "addl %3, %0 \n\t" - "movl $0, 4(%%ecx, %2) \n\t" - : "=&r" (s->index), "=&r" (value) - : "r" (s->buf), "r" (n), "0" (s->index), "1" (value) - : "%ecx" - ); -# else - int index= s->index; - uint32_t *ptr= (uint32_t*)(((uint8_t *)s->buf)+(index>>3)); - - ptr[0] |= av_be2ne32(value<<(32-n-(index&7) )); - ptr[1] = 0; -//if(n>24) printf("%d %d\n", n, value); - index+= n; - s->index= index; -# endif -# endif //!ALIGNED_BITSTREAM_WRITER -} -#endif static inline void put_sbits(PutBitContext *pb, int n, int32_t value) { @@ -292,11 +194,7 @@ static void av_unused put_bits32(PutBitContext *s, uint32_t value) */ static inline uint8_t* put_bits_ptr(PutBitContext *s) { -#ifdef ALT_BITSTREAM_WRITER - return s->buf + (s->index>>3); -#else return s->buf_ptr; -#endif } /** @@ -306,13 +204,8 @@ static inline uint8_t* put_bits_ptr(PutBitContext *s) static inline void skip_put_bytes(PutBitContext *s, int n) { assert((put_bits_count(s)&7)==0); -#ifdef ALT_BITSTREAM_WRITER - FIXME may need some cleaning of the buffer - s->index += n<<3; -#else assert(s->bit_left==32); s->buf_ptr += n; -#endif } /** @@ -322,13 +215,9 @@ static inline void skip_put_bytes(PutBitContext *s, int n) */ static inline void skip_put_bits(PutBitContext *s, int n) { -#ifdef ALT_BITSTREAM_WRITER - s->index += n; -#else s->bit_left -= n; s->buf_ptr-= 4*(s->bit_left>>5); s->bit_left &= 31; -#endif } /** |