History

avcodec/vc1: Stop using MpegEncContext.gb

Add a GetBitContext to VC1Context instead. This is in preparation for removing MpegEncContext.gb.

Andreas Rheinhardt committed 1 year ago

Commit fe2dbb11 parent aa4a5b18 files · +91 −89Browse files

Showing the changes to libavcodec (8 of 8 files). Show all

Unified · Split

8 files
  1. libavcodec/dxva2_vc1.c +1 −1
  2. libavcodec/mss2.c +2 −2
  3. libavcodec/vaapi_vc1.c +1 −1
  4. libavcodec/vc1.c +7 −7
  5. libavcodec/vc1.h +2 −0
  6. libavcodec/vc1_block.c +46 −46
  7. libavcodec/vc1_pred.c +6 −6
  8. libavcodec/vc1dec.c +26 −26
libavcodec/dxva2_vc1.c+1−1
@@ -177,7 +177,7 @@ void ff_dxva2_vc1_fill_slice(AVCodecContext *avctx, DXVA_SliceInfo *slice, · 176 unmodified lines
177177 slice->dwSliceDataLocation = position;
178178 slice->bStartCodeBitOffset = 0;
179179 slice->bReservedBits = (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type) ? v->bfraction_lut_index + 9 : 0;
180− slice->wMBbitOffset = v->p_frame_skipped ? 0xffff : get_bits_count(&s->gb) + (avctx->codec_id == AV_CODEC_ID_VC1 ? 32 : 0);
180+ slice->wMBbitOffset = v->p_frame_skipped ? 0xffff : get_bits_count(&v->gb) + (avctx->codec_id == AV_CODEC_ID_VC1 ? 32 : 0);
181181 /* XXX We store the index of the first MB and it will be fixed later */
182182 slice->wNumberMBsInSlice = (s->mb_y >> v->field_mode) * s->mb_width + s->mb_x;
183183 slice->wQuantizerScaleCode = v->pq;
libavcodec/mss2.c+2−2
@@ -387,12 +387,12 @@ static int decode_wmv9(AVCodecContext *avctx, const uint8_t *buf, int buf_size, · 386 unmodified lines
387387
388388 ff_mpeg_flush(avctx);
389389
390− if ((ret = init_get_bits8(&s->gb, buf, buf_size)) < 0)
390+ if ((ret = init_get_bits8(&v->gb, buf, buf_size)) < 0)
391391 return ret;
392392
393393 s->loop_filter = avctx->skip_loop_filter < AVDISCARD_ALL;
394394
395− if (ff_vc1_parse_frame_header(v, &s->gb) < 0) {
395+ if (ff_vc1_parse_frame_header(v, &v->gb) < 0) {
396396 av_log(v->s.avctx, AV_LOG_ERROR, "header error\n");
397397 return AVERROR_INVALIDDATA;
398398 }
libavcodec/vaapi_vc1.c+1−1
@@ -490,7 +490,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, · 489 unmodified lines
490490 .slice_data_size = size,
491491 .slice_data_offset = 0,
492492 .slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
493− .macroblock_offset = get_bits_count(&s->gb),
493+ .macroblock_offset = get_bits_count(&v->gb),
494494 .slice_vertical_position = s->mb_y % mb_height,
495495 };
496496
libavcodec/vc1.c+7−7
@@ -94,7 +94,7 @@ static void decode_colskip(uint8_t* plane, int width, int height, int stride, · 93 unmodified lines
9494 */
9595 static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v)
9696 {
97− GetBitContext *gb = &v->s.gb;
97+ GetBitContext *const gb = &v->gb;
9898
9999 int imode, x, y, code, offset;
100100 uint8_t invert, *planep = data;
@@ -161,7 +161,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) · 60 unmodified lines
161161 planep += stride * 3;
162162 }
163163 if (width & 1)
164− decode_colskip(data, 1, height, stride, &v->s.gb);
164+ decode_colskip(data, 1, height, stride, &v->gb);
165165 } else { // 3x2
166166 planep += (height & 1) * stride;
167167 for (y = height & 1; y < height; y += 2) {
@@ -182,16 +182,16 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) · 14 unmodified lines
182182 }
183183 x = width % 3;
184184 if (x)
185− decode_colskip(data, x, height, stride, &v->s.gb);
185+ decode_colskip(data, x, height, stride, &v->gb);
186186 if (height & 1)
187− decode_rowskip(data + x, width - x, 1, stride, &v->s.gb);
187+ decode_rowskip(data + x, width - x, 1, stride, &v->gb);
188188 }
189189 break;
190190 case IMODE_ROWSKIP:
191− decode_rowskip(data, width, height, stride, &v->s.gb);
191+ decode_rowskip(data, width, height, stride, &v->gb);
192192 break;
193193 case IMODE_COLSKIP:
194− decode_colskip(data, width, height, stride, &v->s.gb);
194+ decode_colskip(data, width, height, stride, &v->gb);
195195 break;
196196 default:
197197 break;
@@ -227,7 +227,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) · 29 unmodified lines
227227 */
228228 static int vop_dquant_decoding(VC1Context *v)
229229 {
230− GetBitContext *gb = &v->s.gb;
230+ GetBitContext *const gb = &v->gb;
231231 int pqdiff;
232232
233233 //variable size
libavcodec/vc1.h+2−0
@@ -24,6 +24,7 @@ · 23 unmodified lines
2424 #define AVCODEC_VC1_H
2525
2626 #include "avcodec.h"
27+#include "get_bits.h"
2728 #include "h264chroma.h"
2829 #include "mpegvideo.h"
2930 #include "intrax8.h"
@@ -172,6 +173,7 @@ enum Imode { · 142 unmodified lines
172173 */
173174 typedef struct VC1Context{
174175 MpegEncContext s;
176+ GetBitContext gb;
175177 IntraX8Context x8;
176178 H264ChromaContext h264chroma;
177179 VC1DSPContext vc1dsp;
libavcodec/vc1_block.c+46−46
@@ -269,7 +269,7 @@ static av_always_inline void get_mvdata_interlaced(VC1Context *v, int *dmv_x, · 268 unmodified lines
269269 {
270270 int index, index1;
271271 int extend_x, extend_y;
272− GetBitContext *gb = &v->s.gb;
272+ GetBitContext *const gb = &v->gb;
273273 int bits, esc;
274274 int val, sign;
275275
@@ -515,7 +515,7 @@ static inline int vc1_coded_block_pred(MpegEncContext * s, int n, · 239 unmodified lines
515515 static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip,
516516 int *value, int codingset)
517517 {
518− GetBitContext *gb = &v->s.gb;
518+ GetBitContext *const gb = &v->gb;
519519 int index, run, level, lst, sign;
520520
521521 index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset], AC_VLC_BITS, 3);
@@ -582,7 +582,7 @@ static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip, · 60 unmodified lines
582582 static int vc1_decode_i_block(VC1Context *v, int16_t block[64], int n,
583583 int coded, int codingset)
584584 {
585− GetBitContext *gb = &v->s.gb;
585+ GetBitContext *const gb = &v->gb;
586586 MpegEncContext *s = &v->s;
587587 int dc_pred_dir = 0; /* Direction of the DC prediction used */
588588 int16_t *dc_val;
@@ -590,7 +590,7 @@ static int vc1_decode_i_block(VC1Context *v, int16_t block[64], int n, · 1 unmodified line
590590 int dcdiff, scale;
591591
592592 /* Get DC differential */
593− dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
593+ dcdiff = get_vlc2(gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
594594 MSMP4_DC_VLC_BITS, 3);
595595 if (dcdiff) {
596596 const int m = (v->pq == 1 || v->pq == 2) ? 3 - v->pq : 0;
@@ -709,7 +709,7 @@ static int vc1_decode_i_block(VC1Context *v, int16_t block[64], int n, · 112 unmodified lines
709709 static int vc1_decode_i_block_adv(VC1Context *v, int16_t block[64], int n,
710710 int coded, int codingset, int mquant)
711711 {
712− GetBitContext *gb = &v->s.gb;
712+ GetBitContext *const gb = &v->gb;
713713 MpegEncContext *s = &v->s;
714714 int dc_pred_dir = 0; /* Direction of the DC prediction used */
715715 int16_t *dc_val = NULL;
@@ -723,7 +723,7 @@ static int vc1_decode_i_block_adv(VC1Context *v, int16_t block[64], int n, · 7 unmodified lines
723723 int quant = FFABS(mquant);
724724
725725 /* Get DC differential */
726− dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
726+ dcdiff = get_vlc2(gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
727727 MSMP4_DC_VLC_BITS, 3);
728728 if (dcdiff) {
729729 const int m = (quant == 1 || quant == 2) ? 3 - quant : 0;
@@ -889,7 +889,7 @@ static int vc1_decode_i_block_adv(VC1Context *v, int16_t block[64], int n, · 159 unmodified lines
889889 static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n,
890890 int coded, int mquant, int codingset)
891891 {
892− GetBitContext *gb = &v->s.gb;
892+ GetBitContext *const gb = &v->gb;
893893 MpegEncContext *s = &v->s;
894894 int dc_pred_dir = 0; /* Direction of the DC prediction used */
895895 int16_t *dc_val = NULL;
@@ -911,7 +911,7 @@ static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n, · 15 unmodified lines
911911 s->y_dc_scale = ff_wmv3_dc_scale_table[quant];
912912
913913 /* Get DC differential */
914− dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
914+ dcdiff = get_vlc2(gb, ff_msmp4_dc_vlc[v->dc_table_index][n >= 4],
915915 MSMP4_DC_VLC_BITS, 3);
916916 if (dcdiff) {
917917 const int m = (quant == 1 || quant == 2) ? 3 - quant : 0;
@@ -1084,7 +1084,7 @@ static int vc1_decode_p_block(VC1Context *v, int16_t block[64], int n, · 166 unmodified lines
10841084 int *ttmb_out)
10851085 {
10861086 MpegEncContext *s = &v->s;
1087− GetBitContext *gb = &s->gb;
1087+ GetBitContext *const gb = &v->gb;
10881088 int i, j;
10891089 int subblkpat = 0;
10901090 int scale, off, idx, last, skip, value;
@@ -1253,7 +1253,7 @@ static const uint8_t size_table[6] = { 0, 2, 3, 4, 5, 8 }; · 162 unmodified lines
12531253 static int vc1_decode_p_mb(VC1Context *v)
12541254 {
12551255 MpegEncContext *s = &v->s;
1256− GetBitContext *gb = &s->gb;
1256+ GetBitContext *const gb = &v->gb;
12571257 int i, j;
12581258 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
12591259 int cbp; /* cbp decoding stuff */
@@ -1300,7 +1300,7 @@ static int vc1_decode_p_mb(VC1Context *v) · 40 unmodified lines
13001300 } else if (mb_has_coeffs) {
13011301 if (s->mb_intra)
13021302 s->ac_pred = get_bits1(gb);
1303− cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1303+ cbp = get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
13041304 GET_MQUANT();
13051305 } else {
13061306 mquant = v->pq;
@@ -1367,7 +1367,7 @@ static int vc1_decode_p_mb(VC1Context *v) · 60 unmodified lines
13671367 int intra_count = 0, coded_inter = 0;
13681368 int is_intra[6], is_coded[6];
13691369 /* Get CBPCY */
1370− cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1370+ cbp = get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
13711371 for (i = 0; i < 6; i++) {
13721372 val = ((cbp >> (5 - i)) & 1);
13731373 s->dc_val[s->block_index[i]] = 0;
@@ -1490,7 +1490,7 @@ end: · 116 unmodified lines
14901490 static int vc1_decode_p_mb_intfr(VC1Context *v)
14911491 {
14921492 MpegEncContext *s = &v->s;
1493− GetBitContext *gb = &s->gb;
1493+ GetBitContext *const gb = &v->gb;
14941494 int i;
14951495 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
14961496 int cbp = 0; /* cbp decoding stuff */
@@ -1560,7 +1560,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) · 63 unmodified lines
15601560 fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);
15611561 mb_has_coeffs = get_bits1(gb);
15621562 if (mb_has_coeffs)
1563− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1563+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
15641564 v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb);
15651565 GET_MQUANT();
15661566 s->cur_pic.qscale_table[mb_pos] = mquant;
@@ -1591,7 +1591,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) · 24 unmodified lines
15911591 } else { // inter MB
15921592 mb_has_coeffs = ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][3];
15931593 if (mb_has_coeffs)
1594− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1594+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
15951595 if (ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][0] == MV_PMODE_INTFR_2MV_FIELD) {
15961596 v->twomvbp = get_vlc2(gb, v->twomvbp_vlc, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 1);
15971597 } else {
@@ -1698,7 +1698,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) · 100 unmodified lines
16981698 static int vc1_decode_p_mb_intfi(VC1Context *v)
16991699 {
17001700 MpegEncContext *s = &v->s;
1701− GetBitContext *gb = &s->gb;
1701+ GetBitContext *const gb = &v->gb;
17021702 int i;
17031703 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
17041704 int cbp = 0; /* cbp decoding stuff */
@@ -1731,7 +1731,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) · 26 unmodified lines
17311731 v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb);
17321732 mb_has_coeffs = idx_mbmode & 1;
17331733 if (mb_has_coeffs)
1734− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2);
1734+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2);
17351735 dst_idx = 0;
17361736 for (i = 0; i < 6; i++) {
17371737 v->a_avail = v->c_avail = 0;
@@ -1779,7 +1779,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) · 41 unmodified lines
17791779 mb_has_coeffs = idx_mbmode & 1;
17801780 }
17811781 if (mb_has_coeffs)
1782− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1782+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
17831783 if (cbp) {
17841784 GET_MQUANT();
17851785 }
@@ -1823,7 +1823,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) · 37 unmodified lines
18231823 static int vc1_decode_b_mb(VC1Context *v)
18241824 {
18251825 MpegEncContext *s = &v->s;
1826− GetBitContext *gb = &s->gb;
1826+ GetBitContext *const gb = &v->gb;
18271827 int i, j;
18281828 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
18291829 int cbp = 0; /* cbp decoding stuff */
@@ -1890,7 +1890,7 @@ static int vc1_decode_b_mb(VC1Context *v) · 60 unmodified lines
18901890 return 0;
18911891 }
18921892 if (direct) {
1893− cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1893+ cbp = get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
18941894 GET_MQUANT();
18951895 s->mb_intra = 0;
18961896 s->cur_pic.qscale_table[mb_pos] = mquant;
@@ -1928,7 +1928,7 @@ static int vc1_decode_b_mb(VC1Context *v) · 31 unmodified lines
19281928 }
19291929 if (s->mb_intra)
19301930 s->ac_pred = get_bits1(gb);
1931− cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
1931+ cbp = get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
19321932 GET_MQUANT();
19331933 s->cur_pic.qscale_table[mb_pos] = mquant;
19341934 if (!v->ttmbf && !s->mb_intra && mb_has_coeffs)
@@ -1984,7 +1984,7 @@ static int vc1_decode_b_mb(VC1Context *v) · 49 unmodified lines
19841984 static int vc1_decode_b_mb_intfi(VC1Context *v)
19851985 {
19861986 MpegEncContext *s = &v->s;
1987− GetBitContext *gb = &s->gb;
1987+ GetBitContext *const gb = &v->gb;
19881988 int i, j;
19891989 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
19901990 int cbp = 0; /* cbp decoding stuff */
@@ -2018,7 +2018,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) · 27 unmodified lines
20182018 v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb);
20192019 mb_has_coeffs = idx_mbmode & 1;
20202020 if (mb_has_coeffs)
2021− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2);
2021+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2);
20222022 dst_idx = 0;
20232023 for (i = 0; i < 6; i++) {
20242024 v->a_avail = v->c_avail = 0;
@@ -2114,7 +2114,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) · 89 unmodified lines
21142114 mb_has_coeffs = idx_mbmode & 1;
21152115 }
21162116 if (mb_has_coeffs)
2117− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
2117+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
21182118 if (cbp) {
21192119 GET_MQUANT();
21202120 }
@@ -2153,7 +2153,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) · 32 unmodified lines
21532153 static int vc1_decode_b_mb_intfr(VC1Context *v)
21542154 {
21552155 MpegEncContext *s = &v->s;
2156− GetBitContext *gb = &s->gb;
2156+ GetBitContext *const gb = &v->gb;
21572157 int i, j;
21582158 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
21592159 int cbp = 0; /* cbp decoding stuff */
@@ -2209,7 +2209,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) · 49 unmodified lines
22092209 fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb);
22102210 mb_has_coeffs = get_bits1(gb);
22112211 if (mb_has_coeffs)
2212− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
2212+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
22132213 v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb);
22142214 GET_MQUANT();
22152215 s->cur_pic.qscale_table[mb_pos] = mquant;
@@ -2305,7 +2305,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) · 89 unmodified lines
23052305 if (!skipped) { // inter MB
23062306 mb_has_coeffs = ff_vc1_mbmode_intfrp[0][idx_mbmode][3];
23072307 if (mb_has_coeffs)
2308− cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
2308+ cbp = 1 + get_vlc2(gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2);
23092309 if (!direct) {
23102310 if (bmvtype == BMV_TYPE_INTERPOLATED && twomv) {
23112311 v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1);
@@ -2557,9 +2557,9 @@ static void vc1_decode_i_blocks(VC1Context *v) · 245 unmodified lines
25572557 }
25582558
25592559 // do actual MB decoding and displaying
2560− cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc,
2560+ cbp = get_vlc2(&v->gb, ff_msmp4_mb_i_vlc,
25612561 MSMP4_MB_INTRA_VLC_BITS, 2);
2562− v->s.ac_pred = get_bits1(&v->s.gb);
2562+ v->s.ac_pred = get_bits1(&v->gb);
25632563
25642564 for (k = 0; k < 6; k++) {
25652565 v->mb_type[s->block_index[k]] = 1;
@@ -2598,10 +2598,10 @@ static void vc1_decode_i_blocks(VC1Context *v) · 32 unmodified lines
25982598 if (v->s.loop_filter)
25992599 ff_vc1_i_loop_filter(v);
26002600
2601− if (get_bits_left(&s->gb) < 0) {
2601+ if (get_bits_left(&v->gb) < 0) {
26022602 ff_er_add_slice(&s->er, 0, 0, s->mb_x, s->mb_y, ER_MB_ERROR);
26032603 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n",
2604− get_bits_count(&s->gb), s->gb.size_in_bits);
2604+ get_bits_count(&v->gb), v->gb.size_in_bits);
26052605 return;
26062606 }
26072607
@@ -2625,12 +2625,12 @@ static int vc1_decode_i_blocks_adv(VC1Context *v) · 17 unmodified lines
26252625 {
26262626 int k;
26272627 MpegEncContext *s = &v->s;
2628+ GetBitContext *const gb = &v->gb;
26282629 int cbp, val;
26292630 uint8_t *coded_val;
26302631 int mb_pos;
26312632 int mquant;
26322633 int mqdiff;
2633− GetBitContext *gb = &s->gb;
26342634
26352635 if (get_bits_left(gb) <= 1)
26362636 return AVERROR_INVALIDDATA;
@@ -2685,21 +2685,21 @@ static int vc1_decode_i_blocks_adv(VC1Context *v) · 48 unmodified lines
26852685
26862686 // do actual MB decoding and displaying
26872687 if (v->fieldtx_is_raw)
2688− v->fieldtx_plane[mb_pos] = get_bits1(&v->s.gb);
2689− if (get_bits_left(&v->s.gb) <= 1) {
2688+ v->fieldtx_plane[mb_pos] = get_bits1(gb);
2689+ if (get_bits_left(gb) <= 1) {
26902690 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
26912691 return 0;
26922692 }
26932693
2694− cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc,
2694+ cbp = get_vlc2(gb, ff_msmp4_mb_i_vlc,
26952695 MSMP4_MB_INTRA_VLC_BITS, 2);
26962696 if (v->acpred_is_raw)
2697− v->s.ac_pred = get_bits1(&v->s.gb);
2697+ v->s.ac_pred = get_bits1(gb);
26982698 else
26992699 v->s.ac_pred = v->acpred_plane[mb_pos];
27002700
27012701 if (v->condover == CONDOVER_SELECT && v->overflg_is_raw)
2702− v->over_flags_plane[mb_pos] = get_bits1(&v->s.gb);
2702+ v->over_flags_plane[mb_pos] = get_bits1(gb);
27032703
27042704 GET_MQUANT();
27052705
@@ -2736,11 +2736,11 @@ static int vc1_decode_i_blocks_adv(VC1Context *v) · 30 unmodified lines
27362736 if (v->s.loop_filter)
27372737 ff_vc1_i_loop_filter(v);
27382738
2739− if (get_bits_left(&s->gb) < 0) {
2739+ if (get_bits_left(gb) < 0) {
27402740 // TODO: may need modification to handle slice coding
27412741 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
27422742 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i\n",
2743− get_bits_count(&s->gb), s->gb.size_in_bits);
2743+ get_bits_count(gb), gb->size_in_bits);
27442744 return 0;
27452745 }
27462746 inc_blk_idx(v->topleft_blk_idx);
@@ -2797,7 +2797,7 @@ static void vc1_decode_p_blocks(VC1Context *v) · 50 unmodified lines
27972797 update_block_index(s);
27982798
27992799 if (v->fcm == ILACE_FIELD || (v->fcm == PROGRESSIVE && v->mv_type_is_raw) || v->skip_is_raw)
2800− if (get_bits_left(&v->s.gb) <= 1) {
2800+ if (get_bits_left(&v->gb) <= 1) {
28012801 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
28022802 return;
28032803 }
@@ -2815,11 +2815,11 @@ static void vc1_decode_p_blocks(VC1Context *v) · 11 unmodified lines
28152815 if (apply_loop_filter)
28162816 ff_vc1_p_loop_filter(v);
28172817 }
2818− if (ret < 0 || get_bits_left(&s->gb) < 0 || get_bits_count(&s->gb) < 0) {
2818+ if (ret < 0 || get_bits_left(&v->gb) < 0 || get_bits_count(&v->gb) < 0) {
28192819 // TODO: may need modification to handle slice coding
28202820 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
28212821 av_log(s->avctx, AV_LOG_ERROR, "Error or Bits overconsumption: %i > %i at %ix%i\n",
2822− get_bits_count(&s->gb), s->gb.size_in_bits, s->mb_x, s->mb_y);
2822+ get_bits_count(&v->gb), v->gb.size_in_bits, s->mb_x, s->mb_y);
28232823 return;
28242824 }
28252825 inc_blk_idx(v->topleft_blk_idx);
@@ -2882,7 +2882,7 @@ static void vc1_decode_b_blocks(VC1Context *v) · 56 unmodified lines
28822882 update_block_index(s);
28832883
28842884 if (v->fcm == ILACE_FIELD || v->skip_is_raw || v->dmb_is_raw)
2885− if (get_bits_left(&v->s.gb) <= 1) {
2885+ if (get_bits_left(&v->gb) <= 1) {
28862886 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
28872887 return;
28882888 }
@@ -2900,11 +2900,11 @@ static void vc1_decode_b_blocks(VC1Context *v) · 11 unmodified lines
29002900 if (v->s.loop_filter)
29012901 ff_vc1_i_loop_filter(v);
29022902 }
2903− if (get_bits_left(&s->gb) < 0 || get_bits_count(&s->gb) < 0) {
2903+ if (get_bits_left(&v->gb) < 0 || get_bits_count(&v->gb) < 0) {
29042904 // TODO: may need modification to handle slice coding
29052905 ff_er_add_slice(&s->er, 0, s->start_mb_y, s->mb_x, s->mb_y, ER_MB_ERROR);
29062906 av_log(s->avctx, AV_LOG_ERROR, "Bits overconsumption: %i > %i at %ix%i\n",
2907− get_bits_count(&s->gb), s->gb.size_in_bits, s->mb_x, s->mb_y);
2907+ get_bits_count(&v->gb), v->gb.size_in_bits, s->mb_x, s->mb_y);
29082908 return;
29092909 }
29102910 }
@@ -2949,7 +2949,7 @@ void ff_vc1_decode_blocks(VC1Context *v) · 38 unmodified lines
29492949 v->esc3_level_length = 0;
29502950 if (v->x8_type) {
29512951 ff_intrax8_decode_picture(&v->x8, v->s.cur_pic.ptr,
2952− &v->s.gb, &v->s.mb_x, &v->s.mb_y,
2952+ &v->gb, &v->s.mb_x, &v->s.mb_y,
29532953 2 * v->pq + v->halfpq, v->pq * !v->pquantizer,
29542954 v->s.loop_filter, v->s.low_delay);
29552955
libavcodec/vc1_pred.c+6−6
@@ -420,7 +420,7 @@ void ff_vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y, · 419 unmodified lines
420420 else
421421 sum = FFABS(px - field_predA[0]) + FFABS(py - field_predA[1]);
422422 if (sum > hybridmv_thresh) {
423− if (get_bits1(&s->gb)) { // read HYBRIDPRED bit
423+ if (get_bits1(&v->gb)) { // read HYBRIDPRED bit
424424 px = field_predA[0];
425425 py = field_predA[1];
426426 } else {
@@ -433,7 +433,7 @@ void ff_vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y, · 6 unmodified lines
433433 else
434434 sum = FFABS(px - field_predC[0]) + FFABS(py - field_predC[1]);
435435 if (sum > hybridmv_thresh) {
436− if (get_bits1(&s->gb)) {
436+ if (get_bits1(&v->gb)) {
437437 px = field_predA[0];
438438 py = field_predA[1];
439439 } else {
@@ -782,7 +782,7 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], · 342 unmodified lines
782782 else
783783 sum = FFABS(px - A[0]) + FFABS(py - A[1]);
784784 if (sum > 32) {
785− if (get_bits1(&s->gb)) {
785+ if (get_bits1(&v->gb)) {
786786 px = A[0];
787787 py = A[1];
788788 } else {
@@ -795,7 +795,7 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], · 6 unmodified lines
795795 else
796796 sum = FFABS(px - C[0]) + FFABS(py - C[1]);
797797 if (sum > 32) {
798− if (get_bits1(&s->gb)) {
798+ if (get_bits1(&v->gb)) {
799799 px = A[0];
800800 py = A[1];
801801 } else {
@@ -852,7 +852,7 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], · 50 unmodified lines
852852 else
853853 sum = FFABS(px - A[0]) + FFABS(py - A[1]);
854854 if (sum > 32) {
855− if (get_bits1(&s->gb)) {
855+ if (get_bits1(&v->gb)) {
856856 px = A[0];
857857 py = A[1];
858858 } else {
@@ -865,7 +865,7 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], · 6 unmodified lines
865865 else
866866 sum = FFABS(px - C[0]) + FFABS(py - C[1]);
867867 if (sum > 32) {
868− if (get_bits1(&s->gb)) {
868+ if (get_bits1(&v->gb)) {
869869 px = A[0];
870870 py = A[1];
871871 } else {
libavcodec/vc1dec.c+26−26
@@ -899,8 +899,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 898 unmodified lines
899899 }
900900 case VC1_CODE_ENTRYPOINT: /* it should be before frame data */
901901 buf_size2 = v->vc1dsp.vc1_unescape_buffer(start + 4, size, buf2);
902− init_get_bits(&s->gb, buf2, buf_size2 * 8);
903− ff_vc1_decode_entry_point(avctx, v, &s->gb);
902+ init_get_bits(&v->gb, buf2, buf_size2 * 8);
903+ ff_vc1_decode_entry_point(avctx, v, &v->gb);
904904 break;
905905 case VC1_CODE_SLICE: {
906906 int buf_size3;
@@ -964,16 +964,16 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 57 unmodified lines
964964 } else {
965965 buf_size2 = v->vc1dsp.vc1_unescape_buffer(buf, buf_size, buf2);
966966 }
967− init_get_bits(&s->gb, buf2, buf_size2*8);
967+ init_get_bits(&v->gb, buf2, buf_size2*8);
968968 } else{
969− ret = init_get_bits8(&s->gb, buf, buf_size);
969+ ret = init_get_bits8(&v->gb, buf, buf_size);
970970 if (ret < 0)
971971 return ret;
972972 }
973973
974974 if (v->res_sprite) {
975− v->new_sprite = !get_bits1(&s->gb);
976− v->two_sprites = get_bits1(&s->gb);
975+ v->new_sprite = !get_bits1(&v->gb);
976+ v->two_sprites = get_bits1(&v->gb);
977977 /* res_sprite means a Windows Media Image stream, AV_CODEC_ID_*IMAGE means
978978 we're using the sprite compositor. These are intentionally kept separate
979979 so you can get the raw sprites by using the wmv3 decoder for WMVP or
@@ -1016,11 +1016,11 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 36 unmodified lines
10161016 v->pic_header_flag = 0;
10171017 v->first_pic_header_flag = 1;
10181018 if (v->profile < PROFILE_ADVANCED) {
1019− if ((ret = ff_vc1_parse_frame_header(v, &s->gb)) < 0) {
1019+ if ((ret = ff_vc1_parse_frame_header(v, &v->gb)) < 0) {
10201020 goto err;
10211021 }
10221022 } else {
1023− if ((ret = ff_vc1_parse_frame_header_adv(v, &s->gb)) < 0) {
1023+ if ((ret = ff_vc1_parse_frame_header_adv(v, &v->gb)) < 0) {
10241024 goto err;
10251025 }
10261026 }
@@ -1103,12 +1103,12 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 76 unmodified lines
11031103 goto err;
11041104
11051105 for (i = 0 ; i < n_slices1 + 1; i++) {
1106− s->gb = slices[i].gb;
1106+ v->gb = slices[i].gb;
11071107 s->mb_y = slices[i].mby_start;
11081108
1109− v->pic_header_flag = get_bits1(&s->gb);
1109+ v->pic_header_flag = get_bits1(&v->gb);
11101110 if (v->pic_header_flag) {
1111− if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) {
1111+ if (ff_vc1_parse_frame_header_adv(v, &v->gb) < 0) {
11121112 av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n");
11131113 ret = AVERROR_INVALIDDATA;
11141114 if (avctx->err_recognition & AV_EF_EXPLODE)
@@ -1128,12 +1128,12 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 13 unmodified lines
11281128 goto err;
11291129
11301130 // decode second field
1131− s->gb = slices[n_slices1 + 1].gb;
1131+ v->gb = slices[n_slices1 + 1].gb;
11321132 s->mb_y = slices[n_slices1 + 1].mby_start;
11331133 s->picture_structure = PICT_TOP_FIELD + v->tff;
11341134 v->second_field = 1;
11351135 v->pic_header_flag = 0;
1136− if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) {
1136+ if (ff_vc1_parse_frame_header_adv(v, &v->gb) < 0) {
11371137 av_log(avctx, AV_LOG_ERROR, "parsing header for second field failed");
11381138 ret = AVERROR_INVALIDDATA;
11391139 goto err;
@@ -1158,12 +1158,12 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 18 unmodified lines
11581158 goto err;
11591159
11601160 for (i = n_slices1 + 2; i < n_slices; i++) {
1161− s->gb = slices[i].gb;
1161+ v->gb = slices[i].gb;
11621162 s->mb_y = slices[i].mby_start;
11631163
1164− v->pic_header_flag = get_bits1(&s->gb);
1164+ v->pic_header_flag = get_bits1(&v->gb);
11651165 if (v->pic_header_flag) {
1166− if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) {
1166+ if (ff_vc1_parse_frame_header_adv(v, &v->gb) < 0) {
11671167 av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n");
11681168 ret = AVERROR_INVALIDDATA;
11691169 if (avctx->err_recognition & AV_EF_EXPLODE)
@@ -1203,12 +1203,12 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 33 unmodified lines
12031203
12041204 // and process the slices as additional slices afterwards
12051205 for (i = 0 ; i < n_slices; i++) {
1206− s->gb = slices[i].gb;
1206+ v->gb = slices[i].gb;
12071207 s->mb_y = slices[i].mby_start;
12081208
1209− v->pic_header_flag = get_bits1(&s->gb);
1209+ v->pic_header_flag = get_bits1(&v->gb);
12101210 if (v->pic_header_flag) {
1211− if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) {
1211+ if (ff_vc1_parse_frame_header_adv(v, &v->gb) < 0) {
12121212 av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n");
12131213 ret = AVERROR_INVALIDDATA;
12141214 if (avctx->err_recognition & AV_EF_EXPLODE)
@@ -1263,16 +1263,16 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 48 unmodified lines
12631263 if (i) {
12641264 v->pic_header_flag = 0;
12651265 if (v->field_mode && i == n_slices1 + 2) {
1266− if ((header_ret = ff_vc1_parse_frame_header_adv(v, &s->gb)) < 0) {
1266+ if ((header_ret = ff_vc1_parse_frame_header_adv(v, &v->gb)) < 0) {
12671267 av_log(v->s.avctx, AV_LOG_ERROR, "Field header damaged\n");
12681268 ret = AVERROR_INVALIDDATA;
12691269 if (avctx->err_recognition & AV_EF_EXPLODE)
12701270 goto err;
12711271 continue;
12721272 }
1273− } else if (get_bits1(&s->gb)) {
1273+ } else if (get_bits1(&v->gb)) {
12741274 v->pic_header_flag = 1;
1275− if ((header_ret = ff_vc1_parse_frame_header_adv(v, &s->gb)) < 0) {
1275+ if ((header_ret = ff_vc1_parse_frame_header_adv(v, &v->gb)) < 0) {
12761276 av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n");
12771277 ret = AVERROR_INVALIDDATA;
12781278 if (avctx->err_recognition & AV_EF_EXPLODE)
@@ -1305,7 +1305,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 26 unmodified lines
13051305 }
13061306 ff_vc1_decode_blocks(v);
13071307 if (i != n_slices) {
1308− s->gb = slices[i].gb;
1308+ v->gb = slices[i].gb;
13091309 }
13101310 }
13111311 if (v->field_mode) {
@@ -1321,8 +1321,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, · 9 unmodified lines
13211321 }
13221322 }
13231323 ff_dlog(s->avctx, "Consumed %i/%i bits\n",
1324− get_bits_count(&s->gb), s->gb.size_in_bits);
1325−// if (get_bits_count(&s->gb) > buf_size * 8)
1324+ get_bits_count(&v->gb), v->gb.size_in_bits);
1325+// if (get_bits_count(&v->gb) > buf_size * 8)
13261326 // return -1;
13271327 if(s->er.error_occurred && s->pict_type == AV_PICTURE_TYPE_B) {
13281328 ret = AVERROR_INVALIDDATA;
@@ -1348,7 +1348,7 @@ image: · 19 unmodified lines
13481348 goto err;
13491349 }
13501350 #if CONFIG_WMV3IMAGE_DECODER || CONFIG_VC1IMAGE_DECODER
1351− if ((ret = vc1_decode_sprites(v, &s->gb)) < 0)
1351+ if ((ret = vc1_decode_sprites(v, &v->gb)) < 0)
13521352 goto err;
13531353 #endif
13541354 if ((ret = av_frame_ref(pict, v->sprite_output_frame)) < 0)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t