Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: patched-ffmpeg-mt/libavcodec/get_bits.h

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at> 2 * copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
3 * 3 *
4 * This file is part of FFmpeg. 4 * This file is part of FFmpeg.
5 * 5 *
6 * FFmpeg is free software; you can redistribute it and/or 6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public 7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version. 9 * version 2.1 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #if !defined(LIBMPEG2_BITSTREAM_READER) && !defined(A32_BITSTREAM_READER) && !de fined(ALT_BITSTREAM_READER) 42 #if !defined(LIBMPEG2_BITSTREAM_READER) && !defined(A32_BITSTREAM_READER) && !de fined(ALT_BITSTREAM_READER)
43 # if ARCH_ARM && !HAVE_FAST_UNALIGNED 43 # if ARCH_ARM && !HAVE_FAST_UNALIGNED
44 # define A32_BITSTREAM_READER 44 # define A32_BITSTREAM_READER
45 # else 45 # else
46 # define ALT_BITSTREAM_READER 46 # define ALT_BITSTREAM_READER
47 //#define LIBMPEG2_BITSTREAM_READER 47 //#define LIBMPEG2_BITSTREAM_READER
48 //#define A32_BITSTREAM_READER 48 //#define A32_BITSTREAM_READER
49 # endif 49 # endif
50 #endif 50 #endif
51 51
52 #if ARCH_X86
53 // avoid +32 for shift optimization (gcc should do that ...)
54 static inline int32_t NEG_SSR32( int32_t a, int8_t s){
55 __asm__ ("sarl %1, %0\n\t"
56 : "+r" (a)
57 : "ic" ((uint8_t)(-s))
58 );
59 return a;
60 }
61 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
62 __asm__ ("shrl %1, %0\n\t"
63 : "+r" (a)
64 : "ic" ((uint8_t)(-s))
65 );
66 return a;
67 }
68 #else
69 # define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s)))
70 # define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s)))
71 #endif
72
73 /* bit input */ 52 /* bit input */
74 /* buffer, buffer_end and size_in_bits must be present and used by every reader */ 53 /* buffer, buffer_end and size_in_bits must be present and used by every reader */
75 typedef struct GetBitContext { 54 typedef struct GetBitContext {
76 const uint8_t *buffer, *buffer_end; 55 const uint8_t *buffer, *buffer_end;
77 /* Ugly, but clients of this bit reader do not seem to check for enough 56 /* Ugly, but clients of this bit reader do not seem to check for enough
78 * data before calling. So we'll return 0's on overrun rather than crashing 57 * data before calling. So we'll return 0's on overrun rather than crashing
79 * with random read faults. 58 * with random read faults.
80 */ 59 */
81 int buffer_exhausted; 60 int buffer_exhausted;
82 int buffer_enforcing; 61 int buffer_enforcing;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 {\ 175 {\
197 SKIP_CACHE(name, gb, num)\ 176 SKIP_CACHE(name, gb, num)\
198 SKIP_COUNTER(name, gb, num)\ 177 SKIP_COUNTER(name, gb, num)\
199 }\ 178 }\
200 179
201 # define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num) 180 # define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num)
202 # define LAST_SKIP_CACHE(name, gb, num) ; 181 # define LAST_SKIP_CACHE(name, gb, num) ;
203 182
204 # ifdef ALT_BITSTREAM_READER_LE 183 # ifdef ALT_BITSTREAM_READER_LE
205 # define SHOW_UBITS(name, gb, num)\ 184 # define SHOW_UBITS(name, gb, num)\
206 ((name##_cache) & (NEG_USR32(0xffffffff,num))) 185 zero_extend(name##_cache, num)
207 186
208 # define SHOW_SBITS(name, gb, num)\ 187 # define SHOW_SBITS(name, gb, num)\
209 NEG_SSR32((name##_cache)<<(32-(num)), num) 188 sign_extend(name##_cache, num)
210 # else 189 # else
211 # define SHOW_UBITS(name, gb, num)\ 190 # define SHOW_UBITS(name, gb, num)\
212 NEG_USR32(name##_cache, num) 191 NEG_USR32(name##_cache, num)
213 192
214 # define SHOW_SBITS(name, gb, num)\ 193 # define SHOW_SBITS(name, gb, num)\
215 NEG_SSR32(name##_cache, num) 194 NEG_SSR32(name##_cache, num)
216 # endif 195 # endif
217 196
218 # define GET_CACHE(name, gb)\ 197 # define GET_CACHE(name, gb)\
219 ((uint32_t)name##_cache) 198 ((uint32_t)name##_cache)
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 } 443 }
465 444
466 static inline void skip_bits1(GetBitContext *s){ 445 static inline void skip_bits1(GetBitContext *s){
467 skip_bits(s, 1); 446 skip_bits(s, 1);
468 } 447 }
469 448
470 /** 449 /**
471 * reads 0-32 bits. 450 * reads 0-32 bits.
472 */ 451 */
473 static inline unsigned int get_bits_long(GetBitContext *s, int n){ 452 static inline unsigned int get_bits_long(GetBitContext *s, int n){
474 if(n<=17) return get_bits(s, n); 453 if(n<=MIN_CACHE_BITS) return get_bits(s, n);
475 else{ 454 else{
476 #ifdef ALT_BITSTREAM_READER_LE 455 #ifdef ALT_BITSTREAM_READER_LE
477 int ret= get_bits(s, 16); 456 int ret= get_bits(s, 16);
478 return ret | (get_bits(s, n-16) << 16); 457 return ret | (get_bits(s, n-16) << 16);
479 #else 458 #else
480 int ret= get_bits(s, 16) << (n-16); 459 int ret= get_bits(s, 16) << (n-16);
481 return ret | get_bits(s, n-16); 460 return ret | get_bits(s, n-16);
482 #endif 461 #endif
483 } 462 }
484 } 463 }
485 464
486 /** 465 /**
487 * reads 0-32 bits as a signed integer. 466 * reads 0-32 bits as a signed integer.
488 */ 467 */
489 static inline int get_sbits_long(GetBitContext *s, int n) { 468 static inline int get_sbits_long(GetBitContext *s, int n) {
490 return sign_extend(get_bits_long(s, n), n); 469 return sign_extend(get_bits_long(s, n), n);
491 } 470 }
492 471
493 /** 472 /**
494 * shows 0-32 bits. 473 * shows 0-32 bits.
495 */ 474 */
496 static inline unsigned int show_bits_long(GetBitContext *s, int n){ 475 static inline unsigned int show_bits_long(GetBitContext *s, int n){
497 if(n<=17) return show_bits(s, n); 476 if(n<=MIN_CACHE_BITS) return show_bits(s, n);
498 else{ 477 else{
499 GetBitContext gb= *s; 478 GetBitContext gb= *s;
500 return get_bits_long(&gb, n); 479 return get_bits_long(&gb, n);
501 } 480 }
502 } 481 }
503 482
504 static inline int check_marker(GetBitContext *s, const char *msg) 483 static inline int check_marker(GetBitContext *s, const char *msg)
505 { 484 {
506 int bit= get_bits1(s); 485 int bit= get_bits1(s);
507 if(!bit) 486 if(!bit)
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 {\ 553 {\
575 static VLC_TYPE table[static_size][2];\ 554 static VLC_TYPE table[static_size][2];\
576 (vlc)->table= table;\ 555 (vlc)->table= table;\
577 (vlc)->table_allocated= static_size;\ 556 (vlc)->table_allocated= static_size;\
578 init_vlc(vlc, bits, a,b,c,d,e,f,g, INIT_VLC_USE_NEW_STATIC);\ 557 init_vlc(vlc, bits, a,b,c,d,e,f,g, INIT_VLC_USE_NEW_STATIC);\
579 } 558 }
580 559
581 560
582 /** 561 /**
583 * 562 *
584 * if the vlc code is invalid and max_depth=1 than no bits will be removed 563 * If the vlc code is invalid and max_depth=1, then no bits will be removed.
585 * if the vlc code is invalid and max_depth>1 than the number of bits removed 564 * If the vlc code is invalid and max_depth>1, then the number of bits removed
586 * is undefined 565 * is undefined.
587 */ 566 */
588 #define GET_VLC(code, name, gb, table, bits, max_depth)\ 567 #define GET_VLC(code, name, gb, table, bits, max_depth)\
589 {\ 568 {\
590 int n, nb_bits;\ 569 int n, nb_bits;\
591 unsigned int index;\ 570 unsigned int index;\
592 \ 571 \
593 index= SHOW_UBITS(name, gb, bits);\ 572 index= SHOW_UBITS(name, gb, bits);\
594 code = table[index][0];\ 573 code = table[index][0];\
595 n = table[index][1];\ 574 n = table[index][1];\
596 \ 575 \
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 else 712 else
734 return 2 - get_bits1(gb); 713 return 2 - get_bits1(gb);
735 } 714 }
736 715
737 static inline int get_bits_left(GetBitContext *gb) 716 static inline int get_bits_left(GetBitContext *gb)
738 { 717 {
739 return gb->size_in_bits - get_bits_count(gb); 718 return gb->size_in_bits - get_bits_count(gb);
740 } 719 }
741 720
742 #endif /* AVCODEC_GET_BITS_H */ 721 #endif /* AVCODEC_GET_BITS_H */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698