Quoting Diego Biurrun (2016-06-09 17:12:06)
> From: Alexandra Hájková <[email protected]>
>
> ---
> libavcodec/bink.c | 248
> +++++++++++++++++++++++++++---------------------------
> 1 file changed, 124 insertions(+), 124 deletions(-)
>
> -static int read_motion_values(AVCodecContext *avctx, GetBitContext *gb,
> Bundle *b)
> +static int read_motion_values(AVCodecContext *avctx, BitstreamContext *bc,
> Bundle *b)
> {
> int t, sign, v;
> const uint8_t *dec_end;
>
> - CHECK_READ_VAL(gb, b, t);
> + CHECK_READ_VAL(bc, b, t);
> dec_end = b->cur_dec + t;
> if (dec_end > b->data_end) {
> av_log(avctx, AV_LOG_ERROR, "Too many motion values\n");
> return AVERROR_INVALIDDATA;
> }
> - if (get_bits1(gb)) {
> - v = get_bits(gb, 4);
> + if (bitstream_read_bit(bc)) {
> + v = bitstream_read(bc, 4);
> if (v) {
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> v = (v ^ sign) - sign;
This looks awfully like bitstream_apply_sign(). Same in marked places
below.
> }
> memset(b->cur_dec, v, t);
> b->cur_dec += t;
> } else {
> while (b->cur_dec < dec_end) {
> - v = GET_HUFF(gb, b->tree);
> + v = GET_HUFF(bc, b->tree);
> if (v) {
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> v = (v ^ sign) - sign;
++
> -static int read_dcs(AVCodecContext *avctx, GetBitContext *gb, Bundle *b,
> +static int read_dcs(AVCodecContext *avctx, BitstreamContext *bc, Bundle *b,
> int start_bits, int has_sign)
> {
> int i, j, len, len2, bsize, sign, v, v2;
> int16_t *dst = (int16_t*)b->cur_dec;
> int16_t *dst_end = (int16_t*)b->data_end;
>
> - CHECK_READ_VAL(gb, b, len);
> - v = get_bits(gb, start_bits - has_sign);
> + CHECK_READ_VAL(bc, b, len);
> + v = bitstream_read(bc, start_bits - has_sign);
> if (v && has_sign) {
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> v = (v ^ sign) - sign;
++
> }
> if (dst_end - dst < 1)
> @@ -481,12 +482,12 @@ static int read_dcs(AVCodecContext *avctx,
> GetBitContext *gb, Bundle *b,
> len2 = FFMIN(len - i, 8);
> if (dst_end - dst < len2)
> return AVERROR_INVALIDDATA;
> - bsize = get_bits(gb, 4);
> + bsize = bitstream_read(bc, 4);
> if (bsize) {
> for (j = 0; j < len2; j++) {
> - v2 = get_bits(gb, bsize);
> + v2 = bitstream_read(bc, bsize);
> if (v2) {
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> v2 = (v2 ^ sign) - sign;
++
> @@ -634,15 +636,15 @@ static int read_dct_coeffs(GetBitContext *gb, int32_t
> block[64], const uint8_t *
> mode_list[list_pos++] = 0;
> }
> for (i = 0; i < 4; i++, ccoef++) {
> - if (get_bits1(gb)) {
> + if (bitstream_read_bit(bc)) {
> coef_list[--list_start] = ccoef;
> mode_list[ list_start] = 3;
> } else {
> if (!bits) {
> - t = 1 - (get_bits1(gb) << 1);
> + t = 1 - (bitstream_read_bit(bc) << 1);
> } else {
> - t = get_bits(gb, bits) | 1 << bits;
> - sign = -get_bits1(gb);
> + t = bitstream_read(bc, bits) | 1 << bits;
> + sign = -bitstream_read_bit(bc);
> t = (t ^ sign) - sign;
++
> }
> block[scan[ccoef]] = t;
> @@ -660,10 +662,10 @@ static int read_dct_coeffs(GetBitContext *gb, int32_t
> block[64], const uint8_t *
> break;
> case 3:
> if (!bits) {
> - t = 1 - (get_bits1(gb) << 1);
> + t = 1 - (bitstream_read_bit(bc) << 1);
> } else {
> - t = get_bits(gb, bits) | 1 << bits;
> - sign = -get_bits1(gb);
> + t = bitstream_read(bc, bits) | 1 << bits;
> + sign = -bitstream_read_bit(bc);
> t = (t ^ sign) - sign;
++
> }
> block[scan[ccoef]] = t;
> @@ -676,7 +678,7 @@ static int read_dct_coeffs(GetBitContext *gb, int32_t
> block[64], const uint8_t *
> }
>
> if (q == -1) {
> - quant_idx = get_bits(gb, 4);
> + quant_idx = bitstream_read(bc, 4);
> } else {
> quant_idx = q;
> }
> @@ -698,12 +700,12 @@ static int read_dct_coeffs(GetBitContext *gb, int32_t
> block[64], const uint8_t *
> /**
> * Read 8x8 block with residue after motion compensation.
> *
> - * @param gb context for reading bits
> + * @param bc context for reading bits
> * @param block place to store read data
> * @param masks_count number of masks to decode
> * @return 0 on success, negative value in other cases
> */
> -static int read_residue(GetBitContext *gb, int16_t block[64], int
> masks_count)
> +static int read_residue(BitstreamContext *bc, int16_t block[64], int
> masks_count)
> {
> int coef_list[128];
> int mode_list[128];
> @@ -717,9 +719,9 @@ static int read_residue(GetBitContext *gb, int16_t
> block[64], int masks_count)
> coef_list[list_end] = 44; mode_list[list_end++] = 0;
> coef_list[list_end] = 0; mode_list[list_end++] = 2;
>
> - for (mask = 1 << get_bits(gb, 3); mask; mask >>= 1) {
> + for (mask = 1 << bitstream_read(bc, 3); mask; mask >>= 1) {
> for (i = 0; i < nz_coeff_count; i++) {
> - if (!get_bits1(gb))
> + if (!bitstream_read_bit(bc))
> continue;
> if (block[nz_coeff[i]] < 0)
> block[nz_coeff[i]] -= mask;
> @@ -731,7 +733,7 @@ static int read_residue(GetBitContext *gb, int16_t
> block[64], int masks_count)
> }
> list_pos = list_start;
> while (list_pos < list_end) {
> - if (!(coef_list[list_pos] | mode_list[list_pos]) ||
> !get_bits1(gb)) {
> + if (!(coef_list[list_pos] | mode_list[list_pos]) ||
> !bitstream_read_bit(bc)) {
> list_pos++;
> continue;
> }
> @@ -747,12 +749,12 @@ static int read_residue(GetBitContext *gb, int16_t
> block[64], int masks_count)
> mode_list[list_pos++] = 0;
> }
> for (i = 0; i < 4; i++, ccoef++) {
> - if (get_bits1(gb)) {
> + if (bitstream_read_bit(bc)) {
> coef_list[--list_start] = ccoef;
> mode_list[ list_start] = 3;
> } else {
> nz_coeff[nz_coeff_count++] = bink_scan[ccoef];
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> block[bink_scan[ccoef]] = (mask ^ sign) - sign;
++
> masks_count--;
> if (masks_count < 0)
> @@ -770,7 +772,7 @@ static int read_residue(GetBitContext *gb, int16_t
> block[64], int masks_count)
> break;
> case 3:
> nz_coeff[nz_coeff_count++] = bink_scan[ccoef];
> - sign = -get_bits1(gb);
> + sign = -bitstream_read_bit(bc);
> block[bink_scan[ccoef]] = (mask ^ sign) - sign;
++
Otherwise looks ok.
--
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel