comparison liba52/bitstream.h @ 1072:68d0a38bd802 libavcodec

* sync with main liba52 sources
author kabi
date Tue, 18 Feb 2003 11:48:57 +0000
parents 207cc56d18f8
children ef2149182f1c
comparison
equal deleted inserted replaced
1071:0a48dd404167 1072:68d0a38bd802
1 /* 1 /*
2 * bitstream.h 2 * bitstream.h
3 * Copyright (C) 2000-2002 Michel Lespinasse <walken@zoy.org> 3 * Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
4 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> 4 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
5 * 5 *
6 * This file is part of a52dec, a free ATSC A-52 stream decoder. 6 * This file is part of a52dec, a free ATSC A-52 stream decoder.
7 * See http://liba52.sourceforge.net/ for updates. 7 * See http://liba52.sourceforge.net/ for updates.
8 * 8 *
44 (((uint8_t*)&x)[2] << 8) | (((uint8_t*)&x)[3])) 44 (((uint8_t*)&x)[2] << 8) | (((uint8_t*)&x)[3]))
45 45
46 # endif 46 # endif
47 #endif 47 #endif
48 48
49 extern uint32_t a52_bits_left; 49 void a52_bitstream_set_ptr (a52_state_t * state, uint8_t * buf);
50 extern uint32_t a52_current_word; 50 uint32_t a52_bitstream_get_bh (a52_state_t * state, uint32_t num_bits);
51 int32_t a52_bitstream_get_bh_2 (a52_state_t * state, uint32_t num_bits);
51 52
52 void a52_bitstream_set_ptr (uint8_t * buf); 53 static inline uint32_t bitstream_get (a52_state_t * state, uint32_t num_bits)
53 uint32_t a52_bitstream_get_bh(uint32_t num_bits);
54 int32_t a52_bitstream_get_bh_2(uint32_t num_bits);
55
56 static inline uint32_t
57 bitstream_get(uint32_t num_bits)
58 { 54 {
59 uint32_t result; 55 uint32_t result;
60 56
61 if(num_bits < a52_bits_left) { 57 if (num_bits < state->bits_left) {
62 result = (a52_current_word << (32 - a52_bits_left)) >> (32 - num_bits); 58 result = (state->current_word << (32 - state->bits_left)) >> (32 - num_bits);
63 a52_bits_left -= num_bits; 59 state->bits_left -= num_bits;
64 return result; 60 return result;
65 } 61 }
66 62
67 return a52_bitstream_get_bh(num_bits); 63 return a52_bitstream_get_bh (state, num_bits);
68 } 64 }
69 65
70 static inline int32_t 66 static inline int32_t bitstream_get_2 (a52_state_t * state, uint32_t num_bits)
71 bitstream_get_2(uint32_t num_bits)
72 { 67 {
73 int32_t result; 68 int32_t result;
74 69
75 if(num_bits < a52_bits_left) { 70 if (num_bits < state->bits_left) {
76 result = (((int32_t)a52_current_word) << (32 - a52_bits_left)) >> (32 - num_bits); 71 result = (((int32_t)state->current_word) << (32 - state->bits_left)) >> (32 - num_bits);
77 a52_bits_left -= num_bits; 72 state->bits_left -= num_bits;
78 return result; 73 return result;
79 } 74 }
80 75
81 return a52_bitstream_get_bh_2(num_bits); 76 return a52_bitstream_get_bh_2 (state, num_bits);
82 } 77 }