From: Alexandra Hájková <[email protected]>
---
libavcodec/mpeg4audio.c | 118 ++++++++++++++++++++++++------------------------
libavcodec/mpeg4audio.h | 5 +-
2 files changed, 62 insertions(+), 61 deletions(-)
diff --git a/libavcodec/mpeg4audio.c b/libavcodec/mpeg4audio.c
index 2363cb6..8ac8da9 100644
--- a/libavcodec/mpeg4audio.c
+++ b/libavcodec/mpeg4audio.c
@@ -20,34 +20,34 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "get_bits.h"
+#include "bitstream.h"
#include "put_bits.h"
#include "mpeg4audio.h"
/**
* Parse MPEG-4 audio configuration for ALS object type.
- * @param[in] gb bit reader context
+ * @param[in] bc bit reader context
* @param[in] c MPEG4AudioConfig structure to fill
* @return on success 0 is returned, otherwise a value < 0
*/
-static int parse_config_ALS(GetBitContext *gb, MPEG4AudioConfig *c)
+static int parse_config_ALS(BitstreamContext *bc, MPEG4AudioConfig *c)
{
- if (get_bits_left(gb) < 112)
+ if (bitstream_bits_left(bc) < 112)
return -1;
- if (get_bits_long(gb, 32) != MKBETAG('A','L','S','\0'))
+ if (bitstream_read(bc, 32) != MKBETAG('A','L','S','\0'))
return -1;
// override AudioSpecificConfig channel configuration and sample rate
// which are buggy in old ALS conformance files
- c->sample_rate = get_bits_long(gb, 32);
+ c->sample_rate = bitstream_read(bc, 32);
// skip number of samples
- skip_bits_long(gb, 32);
+ bitstream_skip(bc, 32);
// read number of channels
c->chan_config = 0;
- c->channels = get_bits(gb, 16) + 1;
+ c->channels = bitstream_read(bc, 16) + 1;
return 0;
}
@@ -61,77 +61,77 @@ const uint8_t ff_mpeg4audio_channels[8] = {
0, 1, 2, 3, 4, 5, 6, 8
};
-static inline int get_object_type(GetBitContext *gb)
+static inline int get_object_type(BitstreamContext *bc)
{
- int object_type = get_bits(gb, 5);
+ int object_type = bitstream_read(bc, 5);
if (object_type == AOT_ESCAPE)
- object_type = 32 + get_bits(gb, 6);
+ object_type = 32 + bitstream_read(bc, 6);
return object_type;
}
-static inline int get_sample_rate(GetBitContext *gb, int *index)
+static inline int get_sample_rate(BitstreamContext *bc, int *index)
{
- *index = get_bits(gb, 4);
- return *index == 0x0f ? get_bits(gb, 24) :
+ *index = bitstream_read(bc, 4);
+ return *index == 0x0f ? bitstream_read(bc, 24) :
avpriv_mpeg4audio_sample_rates[*index];
}
int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
int bit_size, int sync_extension)
{
- GetBitContext gb;
+ BitstreamContext bc;
int specific_config_bitindex, ret;
- ret = init_get_bits(&gb, buf, bit_size);
+ ret = bitstream_init(&bc, buf, bit_size);
if (ret < 0)
return ret;
- c->object_type = get_object_type(&gb);
- c->sample_rate = get_sample_rate(&gb, &c->sampling_index);
- c->chan_config = get_bits(&gb, 4);
+ c->object_type = get_object_type(&bc);
+ c->sample_rate = get_sample_rate(&bc, &c->sampling_index);
+ c->chan_config = bitstream_read(&bc, 4);
if (c->chan_config < FF_ARRAY_ELEMS(ff_mpeg4audio_channels))
c->channels = ff_mpeg4audio_channels[c->chan_config];
c->sbr = -1;
c->ps = -1;
if (c->object_type == AOT_SBR || (c->object_type == AOT_PS &&
// check for W6132 Annex YYYY draft MP3onMP4
- !(show_bits(&gb, 3) & 0x03 && !(show_bits(&gb, 9) & 0x3F)))) {
+ !(bitstream_peek(&bc, 3) & 0x03 && !(bitstream_peek(&bc, 9) & 0x3F))))
{
if (c->object_type == AOT_PS)
c->ps = 1;
c->ext_object_type = AOT_SBR;
c->sbr = 1;
- c->ext_sample_rate = get_sample_rate(&gb, &c->ext_sampling_index);
- c->object_type = get_object_type(&gb);
+ c->ext_sample_rate = get_sample_rate(&bc, &c->ext_sampling_index);
+ c->object_type = get_object_type(&bc);
if (c->object_type == AOT_ER_BSAC)
- c->ext_chan_config = get_bits(&gb, 4);
+ c->ext_chan_config = bitstream_read(&bc, 4);
} else {
c->ext_object_type = AOT_NULL;
c->ext_sample_rate = 0;
}
- specific_config_bitindex = get_bits_count(&gb);
+ specific_config_bitindex = bitstream_tell(&bc);
if (c->object_type == AOT_ALS) {
- skip_bits(&gb, 5);
- if (show_bits_long(&gb, 24) != MKBETAG('\0','A','L','S'))
- skip_bits_long(&gb, 24);
+ bitstream_skip(&bc, 5);
+ if (bitstream_peek(&bc, 24) != MKBETAG('\0','A','L','S'))
+ bitstream_skip(&bc, 24);
- specific_config_bitindex = get_bits_count(&gb);
+ specific_config_bitindex = bitstream_tell(&bc);
- if (parse_config_ALS(&gb, c))
+ if (parse_config_ALS(&bc, c))
return -1;
}
if (c->ext_object_type != AOT_SBR && sync_extension) {
- while (get_bits_left(&gb) > 15) {
- if (show_bits(&gb, 11) == 0x2b7) { // sync extension
- get_bits(&gb, 11);
- c->ext_object_type = get_object_type(&gb);
- if (c->ext_object_type == AOT_SBR && (c->sbr = get_bits1(&gb))
== 1)
- c->ext_sample_rate = get_sample_rate(&gb,
&c->ext_sampling_index);
- if (get_bits_left(&gb) > 11 && get_bits(&gb, 11) == 0x548)
- c->ps = get_bits1(&gb);
+ while (bitstream_bits_left(&bc) > 15) {
+ if (bitstream_peek(&bc, 11) == 0x2b7) { // sync extension
+ bitstream_read(&bc, 11);
+ c->ext_object_type = get_object_type(&bc);
+ if (c->ext_object_type == AOT_SBR && (c->sbr =
bitstream_read_bit(&bc)) == 1)
+ c->ext_sample_rate = get_sample_rate(&bc,
&c->ext_sampling_index);
+ if (bitstream_bits_left(&bc) > 11 && bitstream_read(&bc, 11)
== 0x548)
+ c->ps = bitstream_read_bit(&bc);
break;
} else
- get_bits1(&gb); // skip 1 bit
+ bitstream_read_bit(&bc); // skip 1 bit
}
}
@@ -146,41 +146,41 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c,
const uint8_t *buf,
}
static av_always_inline unsigned int copy_bits(PutBitContext *pb,
- GetBitContext *gb,
+ BitstreamContext *bc,
int bits)
{
- unsigned int el = get_bits(gb, bits);
+ unsigned int el = bitstream_read(bc, bits);
put_bits(pb, bits, el);
return el;
}
-int avpriv_copy_pce_data(PutBitContext *pb, GetBitContext *gb)
+int avpriv_copy_pce_data(PutBitContext *pb, BitstreamContext *bc)
{
int five_bit_ch, four_bit_ch, comment_size, bits;
int offset = put_bits_count(pb);
- copy_bits(pb, gb, 10); //Tag, Object Type, Frequency
- five_bit_ch = copy_bits(pb, gb, 4); //Front
- five_bit_ch += copy_bits(pb, gb, 4); //Side
- five_bit_ch += copy_bits(pb, gb, 4); //Back
- four_bit_ch = copy_bits(pb, gb, 2); //LFE
- four_bit_ch += copy_bits(pb, gb, 3); //Data
- five_bit_ch += copy_bits(pb, gb, 4); //Coupling
- if (copy_bits(pb, gb, 1)) //Mono Mixdown
- copy_bits(pb, gb, 4);
- if (copy_bits(pb, gb, 1)) //Stereo Mixdown
- copy_bits(pb, gb, 4);
- if (copy_bits(pb, gb, 1)) //Matrix Mixdown
- copy_bits(pb, gb, 3);
+ copy_bits(pb, bc, 10); //Tag, Object Type, Frequency
+ five_bit_ch = copy_bits(pb, bc, 4); //Front
+ five_bit_ch += copy_bits(pb, bc, 4); //Side
+ five_bit_ch += copy_bits(pb, bc, 4); //Back
+ four_bit_ch = copy_bits(pb, bc, 2); //LFE
+ four_bit_ch += copy_bits(pb, bc, 3); //Data
+ five_bit_ch += copy_bits(pb, bc, 4); //Coupling
+ if (copy_bits(pb, bc, 1)) //Mono Mixdown
+ copy_bits(pb, bc, 4);
+ if (copy_bits(pb, bc, 1)) //Stereo Mixdown
+ copy_bits(pb, bc, 4);
+ if (copy_bits(pb, bc, 1)) //Matrix Mixdown
+ copy_bits(pb, bc, 3);
for (bits = five_bit_ch*5+four_bit_ch*4; bits > 16; bits -= 16)
- copy_bits(pb, gb, 16);
+ copy_bits(pb, bc, 16);
if (bits)
- copy_bits(pb, gb, bits);
+ copy_bits(pb, bc, bits);
avpriv_align_put_bits(pb);
- align_get_bits(gb);
- comment_size = copy_bits(pb, gb, 8);
+ bitstream_align(bc);
+ comment_size = copy_bits(pb, bc, 8);
for (; comment_size > 0; comment_size--)
- copy_bits(pb, gb, 8);
+ copy_bits(pb, bc, 8);
return put_bits_count(pb) - offset;
}
diff --git a/libavcodec/mpeg4audio.h b/libavcodec/mpeg4audio.h
index 2eef220..fc25767 100644
--- a/libavcodec/mpeg4audio.h
+++ b/libavcodec/mpeg4audio.h
@@ -23,7 +23,8 @@
#define AVCODEC_MPEG4AUDIO_H
#include <stdint.h>
-#include "get_bits.h"
+
+#include "bitstream.h"
#include "put_bits.h"
typedef struct MPEG4AudioConfig {
@@ -105,6 +106,6 @@ enum AudioObjectType {
#define MAX_PCE_SIZE 304 ///<Maximum size of a PCE including the 3-bit ID_PCE
///<marker and the comment
-int avpriv_copy_pce_data(PutBitContext *pb, GetBitContext *gb);
+int avpriv_copy_pce_data(PutBitContext *pb, BitstreamContext *bc);
#endif /* AVCODEC_MPEG4AUDIO_H */
--
2.7.3
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel