Quoting Diego Biurrun (2016-06-09 17:11:51) > From: Alexandra Hájková <alexan...@khirnov.net> > > --- > 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);
This patch changes this function's signature, but not its callers. None of them (adtsenc, latmenc and adtstoasc_bsf) seems to be tested by FATE. Also, since this function is shared between libraries, this change is a potential ABI problem. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel