Mercurial > libavcodec.hg
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 } |