comparison vc1.c @ 4949:845386be542c libavcodec

Add ff_ prefix to (externally) visible variables
author kostya
date Wed, 09 May 2007 16:59:46 +0000
parents 74caff45a271
children f99e40a7155b
comparison
equal deleted inserted replaced
4948:74caff45a271 4949:845386be542c
117 117
118 /* VLC tables */ 118 /* VLC tables */
119 if(!done) 119 if(!done)
120 { 120 {
121 done = 1; 121 done = 1;
122 init_vlc(&vc1_bfraction_vlc, VC1_BFRACTION_VLC_BITS, 23, 122 init_vlc(&ff_vc1_bfraction_vlc, VC1_BFRACTION_VLC_BITS, 23,
123 vc1_bfraction_bits, 1, 1, 123 ff_vc1_bfraction_bits, 1, 1,
124 vc1_bfraction_codes, 1, 1, 1); 124 ff_vc1_bfraction_codes, 1, 1, 1);
125 init_vlc(&vc1_norm2_vlc, VC1_NORM2_VLC_BITS, 4, 125 init_vlc(&ff_vc1_norm2_vlc, VC1_NORM2_VLC_BITS, 4,
126 vc1_norm2_bits, 1, 1, 126 ff_vc1_norm2_bits, 1, 1,
127 vc1_norm2_codes, 1, 1, 1); 127 ff_vc1_norm2_codes, 1, 1, 1);
128 init_vlc(&vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 64, 128 init_vlc(&ff_vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 64,
129 vc1_norm6_bits, 1, 1, 129 ff_vc1_norm6_bits, 1, 1,
130 vc1_norm6_codes, 2, 2, 1); 130 ff_vc1_norm6_codes, 2, 2, 1);
131 init_vlc(&vc1_imode_vlc, VC1_IMODE_VLC_BITS, 7, 131 init_vlc(&ff_vc1_imode_vlc, VC1_IMODE_VLC_BITS, 7,
132 vc1_imode_bits, 1, 1, 132 ff_vc1_imode_bits, 1, 1,
133 vc1_imode_codes, 1, 1, 1); 133 ff_vc1_imode_codes, 1, 1, 1);
134 for (i=0; i<3; i++) 134 for (i=0; i<3; i++)
135 { 135 {
136 init_vlc(&vc1_ttmb_vlc[i], VC1_TTMB_VLC_BITS, 16, 136 init_vlc(&ff_vc1_ttmb_vlc[i], VC1_TTMB_VLC_BITS, 16,
137 vc1_ttmb_bits[i], 1, 1, 137 ff_vc1_ttmb_bits[i], 1, 1,
138 vc1_ttmb_codes[i], 2, 2, 1); 138 ff_vc1_ttmb_codes[i], 2, 2, 1);
139 init_vlc(&vc1_ttblk_vlc[i], VC1_TTBLK_VLC_BITS, 8, 139 init_vlc(&ff_vc1_ttblk_vlc[i], VC1_TTBLK_VLC_BITS, 8,
140 vc1_ttblk_bits[i], 1, 1, 140 ff_vc1_ttblk_bits[i], 1, 1,
141 vc1_ttblk_codes[i], 1, 1, 1); 141 ff_vc1_ttblk_codes[i], 1, 1, 1);
142 init_vlc(&vc1_subblkpat_vlc[i], VC1_SUBBLKPAT_VLC_BITS, 15, 142 init_vlc(&ff_vc1_subblkpat_vlc[i], VC1_SUBBLKPAT_VLC_BITS, 15,
143 vc1_subblkpat_bits[i], 1, 1, 143 ff_vc1_subblkpat_bits[i], 1, 1,
144 vc1_subblkpat_codes[i], 1, 1, 1); 144 ff_vc1_subblkpat_codes[i], 1, 1, 1);
145 } 145 }
146 for(i=0; i<4; i++) 146 for(i=0; i<4; i++)
147 { 147 {
148 init_vlc(&vc1_4mv_block_pattern_vlc[i], VC1_4MV_BLOCK_PATTERN_VLC_BITS, 16, 148 init_vlc(&ff_vc1_4mv_block_pattern_vlc[i], VC1_4MV_BLOCK_PATTERN_VLC_BITS, 16,
149 vc1_4mv_block_pattern_bits[i], 1, 1, 149 ff_vc1_4mv_block_pattern_bits[i], 1, 1,
150 vc1_4mv_block_pattern_codes[i], 1, 1, 1); 150 ff_vc1_4mv_block_pattern_codes[i], 1, 1, 1);
151 init_vlc(&vc1_cbpcy_p_vlc[i], VC1_CBPCY_P_VLC_BITS, 64, 151 init_vlc(&ff_vc1_cbpcy_p_vlc[i], VC1_CBPCY_P_VLC_BITS, 64,
152 vc1_cbpcy_p_bits[i], 1, 1, 152 ff_vc1_cbpcy_p_bits[i], 1, 1,
153 vc1_cbpcy_p_codes[i], 2, 2, 1); 153 ff_vc1_cbpcy_p_codes[i], 2, 2, 1);
154 init_vlc(&vc1_mv_diff_vlc[i], VC1_MV_DIFF_VLC_BITS, 73, 154 init_vlc(&ff_vc1_mv_diff_vlc[i], VC1_MV_DIFF_VLC_BITS, 73,
155 vc1_mv_diff_bits[i], 1, 1, 155 ff_vc1_mv_diff_bits[i], 1, 1,
156 vc1_mv_diff_codes[i], 2, 2, 1); 156 ff_vc1_mv_diff_codes[i], 2, 2, 1);
157 } 157 }
158 for(i=0; i<8; i++) 158 for(i=0; i<8; i++)
159 init_vlc(&vc1_ac_coeff_table[i], AC_VLC_BITS, vc1_ac_sizes[i], 159 init_vlc(&ff_vc1_ac_coeff_table[i], AC_VLC_BITS, vc1_ac_sizes[i],
160 &vc1_ac_tables[i][0][1], 8, 4, 160 &vc1_ac_tables[i][0][1], 8, 4,
161 &vc1_ac_tables[i][0][0], 8, 4, 1); 161 &vc1_ac_tables[i][0][0], 8, 4, 1);
162 init_vlc(&ff_msmp4_mb_i_vlc, MB_INTRA_VLC_BITS, 64, 162 init_vlc(&ff_msmp4_mb_i_vlc, MB_INTRA_VLC_BITS, 64,
163 &ff_msmp4_mb_i_table[0][1], 4, 2, 163 &ff_msmp4_mb_i_table[0][1], 4, 2,
164 &ff_msmp4_mb_i_table[0][0], 4, 2, 1); 164 &ff_msmp4_mb_i_table[0][0], 4, 2, 1);
249 249
250 width = v->s.mb_width; 250 width = v->s.mb_width;
251 height = v->s.mb_height; 251 height = v->s.mb_height;
252 stride = v->s.mb_stride; 252 stride = v->s.mb_stride;
253 invert = get_bits(gb, 1); 253 invert = get_bits(gb, 1);
254 imode = get_vlc2(gb, vc1_imode_vlc.table, VC1_IMODE_VLC_BITS, 1); 254 imode = get_vlc2(gb, ff_vc1_imode_vlc.table, VC1_IMODE_VLC_BITS, 1);
255 255
256 *raw_flag = 0; 256 *raw_flag = 0;
257 switch (imode) 257 switch (imode)
258 { 258 {
259 case IMODE_RAW: 259 case IMODE_RAW:
268 offset = 1; 268 offset = 1;
269 } 269 }
270 else offset = 0; 270 else offset = 0;
271 // decode bitplane as one long line 271 // decode bitplane as one long line
272 for (y = offset; y < height * width; y += 2) { 272 for (y = offset; y < height * width; y += 2) {
273 code = get_vlc2(gb, vc1_norm2_vlc.table, VC1_NORM2_VLC_BITS, 1); 273 code = get_vlc2(gb, ff_vc1_norm2_vlc.table, VC1_NORM2_VLC_BITS, 1);
274 *planep++ = code & 1; 274 *planep++ = code & 1;
275 offset++; 275 offset++;
276 if(offset == width) { 276 if(offset == width) {
277 offset = 0; 277 offset = 0;
278 planep += stride - width; 278 planep += stride - width;
288 case IMODE_DIFF6: 288 case IMODE_DIFF6:
289 case IMODE_NORM6: 289 case IMODE_NORM6:
290 if(!(height % 3) && (width % 3)) { // use 2x3 decoding 290 if(!(height % 3) && (width % 3)) { // use 2x3 decoding
291 for(y = 0; y < height; y+= 3) { 291 for(y = 0; y < height; y+= 3) {
292 for(x = width & 1; x < width; x += 2) { 292 for(x = width & 1; x < width; x += 2) {
293 code = get_vlc2(gb, vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2); 293 code = get_vlc2(gb, ff_vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2);
294 if(code < 0){ 294 if(code < 0){
295 av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n"); 295 av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n");
296 return -1; 296 return -1;
297 } 297 }
298 planep[x + 0] = (code >> 0) & 1; 298 planep[x + 0] = (code >> 0) & 1;
307 if(width & 1) decode_colskip(data, 1, height, stride, &v->s.gb); 307 if(width & 1) decode_colskip(data, 1, height, stride, &v->s.gb);
308 } else { // 3x2 308 } else { // 3x2
309 planep += (height & 1) * stride; 309 planep += (height & 1) * stride;
310 for(y = height & 1; y < height; y += 2) { 310 for(y = height & 1; y < height; y += 2) {
311 for(x = width % 3; x < width; x += 3) { 311 for(x = width % 3; x < width; x += 3) {
312 code = get_vlc2(gb, vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2); 312 code = get_vlc2(gb, ff_vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2);
313 if(code < 0){ 313 if(code < 0){
314 av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n"); 314 av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n");
315 return -1; 315 return -1;
316 } 316 }
317 planep[x + 0] = (code >> 0) & 1; 317 planep[x + 0] = (code >> 0) & 1;
994 v->s.avctx->height = v->s.height = h = get_bits(gb, 14) + 1; 994 v->s.avctx->height = v->s.height = h = get_bits(gb, 14) + 1;
995 av_log(v->s.avctx, AV_LOG_DEBUG, "Display dimensions: %ix%i\n", w, h); 995 av_log(v->s.avctx, AV_LOG_DEBUG, "Display dimensions: %ix%i\n", w, h);
996 if(get_bits1(gb)) 996 if(get_bits1(gb))
997 ar = get_bits(gb, 4); 997 ar = get_bits(gb, 4);
998 if(ar && ar < 14){ 998 if(ar && ar < 14){
999 v->s.avctx->sample_aspect_ratio = vc1_pixel_aspect[ar]; 999 v->s.avctx->sample_aspect_ratio = ff_vc1_pixel_aspect[ar];
1000 }else if(ar == 15){ 1000 }else if(ar == 15){
1001 w = get_bits(gb, 8); 1001 w = get_bits(gb, 8);
1002 h = get_bits(gb, 8); 1002 h = get_bits(gb, 8);
1003 v->s.avctx->sample_aspect_ratio = (AVRational){w, h}; 1003 v->s.avctx->sample_aspect_ratio = (AVRational){w, h};
1004 } 1004 }
1010 } else { 1010 } else {
1011 int nr, dr; 1011 int nr, dr;
1012 nr = get_bits(gb, 8); 1012 nr = get_bits(gb, 8);
1013 dr = get_bits(gb, 4); 1013 dr = get_bits(gb, 4);
1014 if(nr && nr < 8 && dr && dr < 3){ 1014 if(nr && nr < 8 && dr && dr < 3){
1015 v->s.avctx->time_base.num = vc1_fps_dr[dr - 1]; 1015 v->s.avctx->time_base.num = ff_vc1_fps_dr[dr - 1];
1016 v->s.avctx->time_base.den = vc1_fps_nr[nr - 1] * 1000; 1016 v->s.avctx->time_base.den = ff_vc1_fps_nr[nr - 1] * 1000;
1017 } 1017 }
1018 } 1018 }
1019 } 1019 }
1020 1020
1021 if(get_bits1(gb)){ 1021 if(get_bits1(gb)){
1104 } else v->s.pict_type = P_TYPE; 1104 } else v->s.pict_type = P_TYPE;
1105 } else v->s.pict_type = v->s.pict_type ? P_TYPE : I_TYPE; 1105 } else v->s.pict_type = v->s.pict_type ? P_TYPE : I_TYPE;
1106 1106
1107 v->bi_type = 0; 1107 v->bi_type = 0;
1108 if(v->s.pict_type == B_TYPE) { 1108 if(v->s.pict_type == B_TYPE) {
1109 v->bfraction = get_vlc2(gb, vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); 1109 v->bfraction = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
1110 v->bfraction = vc1_bfraction_lut[v->bfraction]; 1110 v->bfraction = ff_vc1_bfraction_lut[v->bfraction];
1111 if(v->bfraction == 0) { 1111 if(v->bfraction == 0) {
1112 v->s.pict_type = BI_TYPE; 1112 v->s.pict_type = BI_TYPE;
1113 } 1113 }
1114 } 1114 }
1115 if(v->s.pict_type == I_TYPE || v->s.pict_type == BI_TYPE) 1115 if(v->s.pict_type == I_TYPE || v->s.pict_type == BI_TYPE)
1122 v->rnd ^= 1; 1122 v->rnd ^= 1;
1123 1123
1124 /* Quantizer stuff */ 1124 /* Quantizer stuff */
1125 pqindex = get_bits(gb, 5); 1125 pqindex = get_bits(gb, 5);
1126 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT) 1126 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)
1127 v->pq = vc1_pquant_table[0][pqindex]; 1127 v->pq = ff_vc1_pquant_table[0][pqindex];
1128 else 1128 else
1129 v->pq = vc1_pquant_table[1][pqindex]; 1129 v->pq = ff_vc1_pquant_table[1][pqindex];
1130 1130
1131 v->pquantizer = 1; 1131 v->pquantizer = 1;
1132 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT) 1132 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)
1133 v->pquantizer = pqindex < 9; 1133 v->pquantizer = pqindex < 9;
1134 if (v->quantizer_mode == QUANT_NON_UNIFORM) 1134 if (v->quantizer_mode == QUANT_NON_UNIFORM)
1164 if (v->pq < 5) v->tt_index = 0; 1164 if (v->pq < 5) v->tt_index = 0;
1165 else if(v->pq < 13) v->tt_index = 1; 1165 else if(v->pq < 13) v->tt_index = 1;
1166 else v->tt_index = 2; 1166 else v->tt_index = 2;
1167 1167
1168 lowquant = (v->pq > 12) ? 0 : 1; 1168 lowquant = (v->pq > 12) ? 0 : 1;
1169 v->mv_mode = vc1_mv_pmode_table[lowquant][get_prefix(gb, 1, 4)]; 1169 v->mv_mode = ff_vc1_mv_pmode_table[lowquant][get_prefix(gb, 1, 4)];
1170 if (v->mv_mode == MV_PMODE_INTENSITY_COMP) 1170 if (v->mv_mode == MV_PMODE_INTENSITY_COMP)
1171 { 1171 {
1172 int scale, shift, i; 1172 int scale, shift, i;
1173 v->mv_mode2 = vc1_mv_pmode_table2[lowquant][get_prefix(gb, 1, 3)]; 1173 v->mv_mode2 = ff_vc1_mv_pmode_table2[lowquant][get_prefix(gb, 1, 3)];
1174 v->lumscale = get_bits(gb, 6); 1174 v->lumscale = get_bits(gb, 6);
1175 v->lumshift = get_bits(gb, 6); 1175 v->lumshift = get_bits(gb, 6);
1176 v->use_ic = 1; 1176 v->use_ic = 1;
1177 /* fill lookup tables for intensity compensation */ 1177 /* fill lookup tables for intensity compensation */
1178 if(!v->lumscale) { 1178 if(!v->lumscale) {
1219 if (status < 0) return -1; 1219 if (status < 0) return -1;
1220 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " 1220 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
1221 "Imode: %i, Invert: %i\n", status>>1, status&1); 1221 "Imode: %i, Invert: %i\n", status>>1, status&1);
1222 1222
1223 /* Hopefully this is correct for P frames */ 1223 /* Hopefully this is correct for P frames */
1224 v->s.mv_table_index = get_bits(gb, 2); //but using vc1_ tables 1224 v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables
1225 v->cbpcy_vlc = &vc1_cbpcy_p_vlc[get_bits(gb, 2)]; 1225 v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
1226 1226
1227 if (v->dquant) 1227 if (v->dquant)
1228 { 1228 {
1229 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); 1229 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
1230 vop_dquant_decoding(v); 1230 vop_dquant_decoding(v);
1234 if (v->vstransform) 1234 if (v->vstransform)
1235 { 1235 {
1236 v->ttmbf = get_bits(gb, 1); 1236 v->ttmbf = get_bits(gb, 1);
1237 if (v->ttmbf) 1237 if (v->ttmbf)
1238 { 1238 {
1239 v->ttfrm = vc1_ttfrm_to_tt[get_bits(gb, 2)]; 1239 v->ttfrm = ff_vc1_ttfrm_to_tt[get_bits(gb, 2)];
1240 } 1240 }
1241 } else { 1241 } else {
1242 v->ttmbf = 1; 1242 v->ttmbf = 1;
1243 v->ttfrm = TT_8X8; 1243 v->ttfrm = TT_8X8;
1244 } 1244 }
1261 if (status < 0) return -1; 1261 if (status < 0) return -1;
1262 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " 1262 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
1263 "Imode: %i, Invert: %i\n", status>>1, status&1); 1263 "Imode: %i, Invert: %i\n", status>>1, status&1);
1264 1264
1265 v->s.mv_table_index = get_bits(gb, 2); 1265 v->s.mv_table_index = get_bits(gb, 2);
1266 v->cbpcy_vlc = &vc1_cbpcy_p_vlc[get_bits(gb, 2)]; 1266 v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
1267 1267
1268 if (v->dquant) 1268 if (v->dquant)
1269 { 1269 {
1270 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); 1270 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
1271 vop_dquant_decoding(v); 1271 vop_dquant_decoding(v);
1275 if (v->vstransform) 1275 if (v->vstransform)
1276 { 1276 {
1277 v->ttmbf = get_bits(gb, 1); 1277 v->ttmbf = get_bits(gb, 1);
1278 if (v->ttmbf) 1278 if (v->ttmbf)
1279 { 1279 {
1280 v->ttfrm = vc1_ttfrm_to_tt[get_bits(gb, 2)]; 1280 v->ttfrm = ff_vc1_ttfrm_to_tt[get_bits(gb, 2)];
1281 } 1281 }
1282 } else { 1282 } else {
1283 v->ttmbf = 1; 1283 v->ttmbf = 1;
1284 v->ttfrm = TT_8X8; 1284 v->ttfrm = TT_8X8;
1285 } 1285 }
1347 v->rnd = get_bits1(gb); 1347 v->rnd = get_bits1(gb);
1348 if(v->interlace) 1348 if(v->interlace)
1349 v->uvsamp = get_bits1(gb); 1349 v->uvsamp = get_bits1(gb);
1350 if(v->finterpflag) v->interpfrm = get_bits(gb, 1); 1350 if(v->finterpflag) v->interpfrm = get_bits(gb, 1);
1351 if(v->s.pict_type == B_TYPE) { 1351 if(v->s.pict_type == B_TYPE) {
1352 v->bfraction = get_vlc2(gb, vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); 1352 v->bfraction = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
1353 v->bfraction = vc1_bfraction_lut[v->bfraction]; 1353 v->bfraction = ff_vc1_bfraction_lut[v->bfraction];
1354 if(v->bfraction == 0) { 1354 if(v->bfraction == 0) {
1355 v->s.pict_type = BI_TYPE; /* XXX: should not happen here */ 1355 v->s.pict_type = BI_TYPE; /* XXX: should not happen here */
1356 } 1356 }
1357 } 1357 }
1358 pqindex = get_bits(gb, 5); 1358 pqindex = get_bits(gb, 5);
1359 v->pqindex = pqindex; 1359 v->pqindex = pqindex;
1360 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT) 1360 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)
1361 v->pq = vc1_pquant_table[0][pqindex]; 1361 v->pq = ff_vc1_pquant_table[0][pqindex];
1362 else 1362 else
1363 v->pq = vc1_pquant_table[1][pqindex]; 1363 v->pq = ff_vc1_pquant_table[1][pqindex];
1364 1364
1365 v->pquantizer = 1; 1365 v->pquantizer = 1;
1366 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT) 1366 if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)
1367 v->pquantizer = pqindex < 9; 1367 v->pquantizer = pqindex < 9;
1368 if (v->quantizer_mode == QUANT_NON_UNIFORM) 1368 if (v->quantizer_mode == QUANT_NON_UNIFORM)
1406 if (v->pq < 5) v->tt_index = 0; 1406 if (v->pq < 5) v->tt_index = 0;
1407 else if(v->pq < 13) v->tt_index = 1; 1407 else if(v->pq < 13) v->tt_index = 1;
1408 else v->tt_index = 2; 1408 else v->tt_index = 2;
1409 1409
1410 lowquant = (v->pq > 12) ? 0 : 1; 1410 lowquant = (v->pq > 12) ? 0 : 1;
1411 v->mv_mode = vc1_mv_pmode_table[lowquant][get_prefix(gb, 1, 4)]; 1411 v->mv_mode = ff_vc1_mv_pmode_table[lowquant][get_prefix(gb, 1, 4)];
1412 if (v->mv_mode == MV_PMODE_INTENSITY_COMP) 1412 if (v->mv_mode == MV_PMODE_INTENSITY_COMP)
1413 { 1413 {
1414 int scale, shift, i; 1414 int scale, shift, i;
1415 v->mv_mode2 = vc1_mv_pmode_table2[lowquant][get_prefix(gb, 1, 3)]; 1415 v->mv_mode2 = ff_vc1_mv_pmode_table2[lowquant][get_prefix(gb, 1, 3)];
1416 v->lumscale = get_bits(gb, 6); 1416 v->lumscale = get_bits(gb, 6);
1417 v->lumshift = get_bits(gb, 6); 1417 v->lumshift = get_bits(gb, 6);
1418 /* fill lookup tables for intensity compensation */ 1418 /* fill lookup tables for intensity compensation */
1419 if(!v->lumscale) { 1419 if(!v->lumscale) {
1420 scale = -64; 1420 scale = -64;
1461 if (status < 0) return -1; 1461 if (status < 0) return -1;
1462 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " 1462 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
1463 "Imode: %i, Invert: %i\n", status>>1, status&1); 1463 "Imode: %i, Invert: %i\n", status>>1, status&1);
1464 1464
1465 /* Hopefully this is correct for P frames */ 1465 /* Hopefully this is correct for P frames */
1466 v->s.mv_table_index = get_bits(gb, 2); //but using vc1_ tables 1466 v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables
1467 v->cbpcy_vlc = &vc1_cbpcy_p_vlc[get_bits(gb, 2)]; 1467 v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
1468 if (v->dquant) 1468 if (v->dquant)
1469 { 1469 {
1470 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); 1470 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
1471 vop_dquant_decoding(v); 1471 vop_dquant_decoding(v);
1472 } 1472 }
1475 if (v->vstransform) 1475 if (v->vstransform)
1476 { 1476 {
1477 v->ttmbf = get_bits(gb, 1); 1477 v->ttmbf = get_bits(gb, 1);
1478 if (v->ttmbf) 1478 if (v->ttmbf)
1479 { 1479 {
1480 v->ttfrm = vc1_ttfrm_to_tt[get_bits(gb, 2)]; 1480 v->ttfrm = ff_vc1_ttfrm_to_tt[get_bits(gb, 2)];
1481 } 1481 }
1482 } else { 1482 } else {
1483 v->ttmbf = 1; 1483 v->ttmbf = 1;
1484 v->ttfrm = TT_8X8; 1484 v->ttfrm = TT_8X8;
1485 } 1485 }
1511 if (status < 0) return -1; 1511 if (status < 0) return -1;
1512 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " 1512 av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: "
1513 "Imode: %i, Invert: %i\n", status>>1, status&1); 1513 "Imode: %i, Invert: %i\n", status>>1, status&1);
1514 1514
1515 v->s.mv_table_index = get_bits(gb, 2); 1515 v->s.mv_table_index = get_bits(gb, 2);
1516 v->cbpcy_vlc = &vc1_cbpcy_p_vlc[get_bits(gb, 2)]; 1516 v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)];
1517 1517
1518 if (v->dquant) 1518 if (v->dquant)
1519 { 1519 {
1520 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); 1520 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n");
1521 vop_dquant_decoding(v); 1521 vop_dquant_decoding(v);
1525 if (v->vstransform) 1525 if (v->vstransform)
1526 { 1526 {
1527 v->ttmbf = get_bits(gb, 1); 1527 v->ttmbf = get_bits(gb, 1);
1528 if (v->ttmbf) 1528 if (v->ttmbf)
1529 { 1529 {
1530 v->ttfrm = vc1_ttfrm_to_tt[get_bits(gb, 2)]; 1530 v->ttfrm = ff_vc1_ttfrm_to_tt[get_bits(gb, 2)];
1531 } 1531 }
1532 } else { 1532 } else {
1533 v->ttmbf = 1; 1533 v->ttmbf = 1;
1534 v->ttfrm = TT_8X8; 1534 v->ttfrm = TT_8X8;
1535 } 1535 }
1607 * @see MVDATA decoding from 8.3.5.2, p(1)20 1607 * @see MVDATA decoding from 8.3.5.2, p(1)20
1608 * @param _dmv_x Horizontal differential for decoded MV 1608 * @param _dmv_x Horizontal differential for decoded MV
1609 * @param _dmv_y Vertical differential for decoded MV 1609 * @param _dmv_y Vertical differential for decoded MV
1610 */ 1610 */
1611 #define GET_MVDATA(_dmv_x, _dmv_y) \ 1611 #define GET_MVDATA(_dmv_x, _dmv_y) \
1612 index = 1 + get_vlc2(gb, vc1_mv_diff_vlc[s->mv_table_index].table,\ 1612 index = 1 + get_vlc2(gb, ff_vc1_mv_diff_vlc[s->mv_table_index].table,\
1613 VC1_MV_DIFF_VLC_BITS, 2); \ 1613 VC1_MV_DIFF_VLC_BITS, 2); \
1614 if (index > 36) \ 1614 if (index > 36) \
1615 { \ 1615 { \
1616 mb_has_coeffs = 1; \ 1616 mb_has_coeffs = 1; \
1617 index -= 37; \ 1617 index -= 37; \
2234 /* scale predictors if needed */ 2234 /* scale predictors if needed */
2235 q1 = s->current_picture.qscale_table[mb_pos]; 2235 q1 = s->current_picture.qscale_table[mb_pos];
2236 if(c_avail && (n!= 1 && n!=3)) { 2236 if(c_avail && (n!= 1 && n!=3)) {
2237 q2 = s->current_picture.qscale_table[mb_pos - 1]; 2237 q2 = s->current_picture.qscale_table[mb_pos - 1];
2238 if(q2 && q2 != q1) 2238 if(q2 && q2 != q1)
2239 c = (c * s->y_dc_scale_table[q2] * vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18; 2239 c = (c * s->y_dc_scale_table[q2] * ff_vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18;
2240 } 2240 }
2241 if(a_avail && (n!= 2 && n!=3)) { 2241 if(a_avail && (n!= 2 && n!=3)) {
2242 q2 = s->current_picture.qscale_table[mb_pos - s->mb_stride]; 2242 q2 = s->current_picture.qscale_table[mb_pos - s->mb_stride];
2243 if(q2 && q2 != q1) 2243 if(q2 && q2 != q1)
2244 a = (a * s->y_dc_scale_table[q2] * vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18; 2244 a = (a * s->y_dc_scale_table[q2] * ff_vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18;
2245 } 2245 }
2246 if(a_avail && c_avail && (n!=3)) { 2246 if(a_avail && c_avail && (n!=3)) {
2247 int off = mb_pos; 2247 int off = mb_pos;
2248 if(n != 1) off--; 2248 if(n != 1) off--;
2249 if(n != 2) off -= s->mb_stride; 2249 if(n != 2) off -= s->mb_stride;
2250 q2 = s->current_picture.qscale_table[off]; 2250 q2 = s->current_picture.qscale_table[off];
2251 if(q2 && q2 != q1) 2251 if(q2 && q2 != q1)
2252 b = (b * s->y_dc_scale_table[q2] * vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18; 2252 b = (b * s->y_dc_scale_table[q2] * ff_vc1_dqscale[s->y_dc_scale_table[q1] - 1] + 0x20000) >> 18;
2253 } 2253 }
2254 2254
2255 if(a_avail && c_avail) { 2255 if(a_avail && c_avail) {
2256 if(abs(a - b) <= abs(b - c)) { 2256 if(abs(a - b) <= abs(b - c)) {
2257 pred = c; 2257 pred = c;
2320 static void vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip, int *value, int codingset) 2320 static void vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip, int *value, int codingset)
2321 { 2321 {
2322 GetBitContext *gb = &v->s.gb; 2322 GetBitContext *gb = &v->s.gb;
2323 int index, escape, run = 0, level = 0, lst = 0; 2323 int index, escape, run = 0, level = 0, lst = 0;
2324 2324
2325 index = get_vlc2(gb, vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3); 2325 index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3);
2326 if (index != vc1_ac_sizes[codingset] - 1) { 2326 if (index != vc1_ac_sizes[codingset] - 1) {
2327 run = vc1_index_decode_table[codingset][index][0]; 2327 run = vc1_index_decode_table[codingset][index][0];
2328 level = vc1_index_decode_table[codingset][index][1]; 2328 level = vc1_index_decode_table[codingset][index][1];
2329 lst = index >= vc1_last_decode_table[codingset]; 2329 lst = index >= vc1_last_decode_table[codingset];
2330 if(get_bits(gb, 1)) 2330 if(get_bits(gb, 1))
2331 level = -level; 2331 level = -level;
2332 } else { 2332 } else {
2333 escape = decode210(gb); 2333 escape = decode210(gb);
2334 if (escape != 2) { 2334 if (escape != 2) {
2335 index = get_vlc2(gb, vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3); 2335 index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3);
2336 run = vc1_index_decode_table[codingset][index][0]; 2336 run = vc1_index_decode_table[codingset][index][0];
2337 level = vc1_index_decode_table[codingset][index][1]; 2337 level = vc1_index_decode_table[codingset][index][1];
2338 lst = index >= vc1_last_decode_table[codingset]; 2338 lst = index >= vc1_last_decode_table[codingset];
2339 if(escape == 0) { 2339 if(escape == 0) {
2340 if(lst) 2340 if(lst)
2449 2449
2450 scale = v->pq * 2 + v->halfpq; 2450 scale = v->pq * 2 + v->halfpq;
2451 2451
2452 if(v->s.ac_pred) { 2452 if(v->s.ac_pred) {
2453 if(!dc_pred_dir) 2453 if(!dc_pred_dir)
2454 zz_table = vc1_horizontal_zz; 2454 zz_table = ff_vc1_horizontal_zz;
2455 else 2455 else
2456 zz_table = vc1_vertical_zz; 2456 zz_table = ff_vc1_vertical_zz;
2457 } else 2457 } else
2458 zz_table = vc1_normal_zz; 2458 zz_table = ff_vc1_normal_zz;
2459 2459
2460 ac_val = s->ac_val[0][0] + s->block_index[n] * 16; 2460 ac_val = s->ac_val[0][0] + s->block_index[n] * 16;
2461 ac_val2 = ac_val; 2461 ac_val2 = ac_val;
2462 if(dc_pred_dir) //left 2462 if(dc_pred_dir) //left
2463 ac_val -= 16; 2463 ac_val -= 16;
2634 const int8_t *zz_table; 2634 const int8_t *zz_table;
2635 int k; 2635 int k;
2636 2636
2637 if(v->s.ac_pred) { 2637 if(v->s.ac_pred) {
2638 if(!dc_pred_dir) 2638 if(!dc_pred_dir)
2639 zz_table = vc1_horizontal_zz; 2639 zz_table = ff_vc1_horizontal_zz;
2640 else 2640 else
2641 zz_table = vc1_vertical_zz; 2641 zz_table = ff_vc1_vertical_zz;
2642 } else 2642 } else
2643 zz_table = vc1_normal_zz; 2643 zz_table = ff_vc1_normal_zz;
2644 2644
2645 while (!last) { 2645 while (!last) {
2646 vc1_decode_ac_coeff(v, &last, &skip, &value, codingset); 2646 vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
2647 i += skip; 2647 i += skip;
2648 if(i > 63) 2648 if(i > 63)
2657 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2657 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2658 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2658 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2659 2659
2660 if(dc_pred_dir) { //left 2660 if(dc_pred_dir) { //left
2661 for(k = 1; k < 8; k++) 2661 for(k = 1; k < 8; k++)
2662 block[k << 3] += (ac_val[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2662 block[k << 3] += (ac_val[k] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2663 } else { //top 2663 } else { //top
2664 for(k = 1; k < 8; k++) 2664 for(k = 1; k < 8; k++)
2665 block[k] += (ac_val[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2665 block[k] += (ac_val[k + 8] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2666 } 2666 }
2667 } else { 2667 } else {
2668 if(dc_pred_dir) { //left 2668 if(dc_pred_dir) { //left
2669 for(k = 1; k < 8; k++) 2669 for(k = 1; k < 8; k++)
2670 block[k << 3] += ac_val[k]; 2670 block[k << 3] += ac_val[k];
2698 memcpy(ac_val2, ac_val, 8 * 2); 2698 memcpy(ac_val2, ac_val, 8 * 2);
2699 if(q2 && q1!=q2) { 2699 if(q2 && q1!=q2) {
2700 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2700 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2701 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2701 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2702 for(k = 1; k < 8; k++) 2702 for(k = 1; k < 8; k++)
2703 ac_val2[k] = (ac_val2[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2703 ac_val2[k] = (ac_val2[k] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2704 } 2704 }
2705 } 2705 }
2706 } else {//top 2706 } else {//top
2707 if(use_pred) { 2707 if(use_pred) {
2708 memcpy(ac_val2 + 8, ac_val + 8, 8 * 2); 2708 memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);
2709 if(q2 && q1!=q2) { 2709 if(q2 && q1!=q2) {
2710 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2710 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2711 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2711 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2712 for(k = 1; k < 8; k++) 2712 for(k = 1; k < 8; k++)
2713 ac_val2[k + 8] = (ac_val2[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2713 ac_val2[k + 8] = (ac_val2[k + 8] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2714 } 2714 }
2715 } 2715 }
2716 } 2716 }
2717 2717
2718 /* apply AC prediction if needed */ 2718 /* apply AC prediction if needed */
2839 if(coded) { 2839 if(coded) {
2840 int last = 0, skip, value; 2840 int last = 0, skip, value;
2841 const int8_t *zz_table; 2841 const int8_t *zz_table;
2842 int k; 2842 int k;
2843 2843
2844 zz_table = vc1_simple_progressive_8x8_zz; 2844 zz_table = ff_vc1_simple_progressive_8x8_zz;
2845 2845
2846 while (!last) { 2846 while (!last) {
2847 vc1_decode_ac_coeff(v, &last, &skip, &value, codingset); 2847 vc1_decode_ac_coeff(v, &last, &skip, &value, codingset);
2848 i += skip; 2848 i += skip;
2849 if(i > 63) 2849 if(i > 63)
2858 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2858 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2859 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2859 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2860 2860
2861 if(dc_pred_dir) { //left 2861 if(dc_pred_dir) { //left
2862 for(k = 1; k < 8; k++) 2862 for(k = 1; k < 8; k++)
2863 block[k << 3] += (ac_val[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2863 block[k << 3] += (ac_val[k] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2864 } else { //top 2864 } else { //top
2865 for(k = 1; k < 8; k++) 2865 for(k = 1; k < 8; k++)
2866 block[k] += (ac_val[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2866 block[k] += (ac_val[k + 8] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2867 } 2867 }
2868 } else { 2868 } else {
2869 if(dc_pred_dir) { //left 2869 if(dc_pred_dir) { //left
2870 for(k = 1; k < 8; k++) 2870 for(k = 1; k < 8; k++)
2871 block[k << 3] += ac_val[k]; 2871 block[k << 3] += ac_val[k];
2899 memcpy(ac_val2, ac_val, 8 * 2); 2899 memcpy(ac_val2, ac_val, 8 * 2);
2900 if(q2 && q1!=q2) { 2900 if(q2 && q1!=q2) {
2901 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2901 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2902 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2902 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2903 for(k = 1; k < 8; k++) 2903 for(k = 1; k < 8; k++)
2904 ac_val2[k] = (ac_val2[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2904 ac_val2[k] = (ac_val2[k] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2905 } 2905 }
2906 } 2906 }
2907 } else {//top 2907 } else {//top
2908 if(use_pred) { 2908 if(use_pred) {
2909 memcpy(ac_val2 + 8, ac_val + 8, 8 * 2); 2909 memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);
2910 if(q2 && q1!=q2) { 2910 if(q2 && q1!=q2) {
2911 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1; 2911 q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
2912 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1; 2912 q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
2913 for(k = 1; k < 8; k++) 2913 for(k = 1; k < 8; k++)
2914 ac_val2[k + 8] = (ac_val2[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18; 2914 ac_val2[k + 8] = (ac_val2[k + 8] * q2 * ff_vc1_dqscale[q1 - 1] + 0x20000) >> 18;
2915 } 2915 }
2916 } 2916 }
2917 } 2917 }
2918 2918
2919 /* apply AC prediction if needed */ 2919 /* apply AC prediction if needed */
2949 int subblkpat = 0; 2949 int subblkpat = 0;
2950 int scale, off, idx, last, skip, value; 2950 int scale, off, idx, last, skip, value;
2951 int ttblk = ttmb & 7; 2951 int ttblk = ttmb & 7;
2952 2952
2953 if(ttmb == -1) { 2953 if(ttmb == -1) {
2954 ttblk = vc1_ttblk_to_tt[v->tt_index][get_vlc2(gb, vc1_ttblk_vlc[v->tt_index].table, VC1_TTBLK_VLC_BITS, 1)]; 2954 ttblk = ff_vc1_ttblk_to_tt[v->tt_index][get_vlc2(gb, ff_vc1_ttblk_vlc[v->tt_index].table, VC1_TTBLK_VLC_BITS, 1)];
2955 } 2955 }
2956 if(ttblk == TT_4X4) { 2956 if(ttblk == TT_4X4) {
2957 subblkpat = ~(get_vlc2(gb, vc1_subblkpat_vlc[v->tt_index].table, VC1_SUBBLKPAT_VLC_BITS, 1) + 1); 2957 subblkpat = ~(get_vlc2(gb, ff_vc1_subblkpat_vlc[v->tt_index].table, VC1_SUBBLKPAT_VLC_BITS, 1) + 1);
2958 } 2958 }
2959 if((ttblk != TT_8X8 && ttblk != TT_4X4) && (v->ttmbf || (ttmb != -1 && (ttmb & 8) && !first_block))) { 2959 if((ttblk != TT_8X8 && ttblk != TT_4X4) && (v->ttmbf || (ttmb != -1 && (ttmb & 8) && !first_block))) {
2960 subblkpat = decode012(gb); 2960 subblkpat = decode012(gb);
2961 if(subblkpat) subblkpat ^= 3; //swap decoded pattern bits 2961 if(subblkpat) subblkpat ^= 3; //swap decoded pattern bits
2962 if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) ttblk = TT_8X4; 2962 if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) ttblk = TT_8X4;
2980 while (!last) { 2980 while (!last) {
2981 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2); 2981 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2);
2982 i += skip; 2982 i += skip;
2983 if(i > 63) 2983 if(i > 63)
2984 break; 2984 break;
2985 idx = vc1_simple_progressive_8x8_zz[i++]; 2985 idx = ff_vc1_simple_progressive_8x8_zz[i++];
2986 block[idx] = value * scale; 2986 block[idx] = value * scale;
2987 if(!v->pquantizer) 2987 if(!v->pquantizer)
2988 block[idx] += (block[idx] < 0) ? -mquant : mquant; 2988 block[idx] += (block[idx] < 0) ? -mquant : mquant;
2989 } 2989 }
2990 s->dsp.vc1_inv_trans_8x8(block); 2990 s->dsp.vc1_inv_trans_8x8(block);
2997 while (!last) { 2997 while (!last) {
2998 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2); 2998 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2);
2999 i += skip; 2999 i += skip;
3000 if(i > 15) 3000 if(i > 15)
3001 break; 3001 break;
3002 idx = vc1_simple_progressive_4x4_zz[i++]; 3002 idx = ff_vc1_simple_progressive_4x4_zz[i++];
3003 block[idx + off] = value * scale; 3003 block[idx + off] = value * scale;
3004 if(!v->pquantizer) 3004 if(!v->pquantizer)
3005 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant; 3005 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant;
3006 } 3006 }
3007 if(!(subblkpat & (1 << (3 - j)))) 3007 if(!(subblkpat & (1 << (3 - j))))
3017 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2); 3017 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2);
3018 i += skip; 3018 i += skip;
3019 if(i > 31) 3019 if(i > 31)
3020 break; 3020 break;
3021 if(v->profile < PROFILE_ADVANCED) 3021 if(v->profile < PROFILE_ADVANCED)
3022 idx = vc1_simple_progressive_8x4_zz[i++]; 3022 idx = ff_vc1_simple_progressive_8x4_zz[i++];
3023 else 3023 else
3024 idx = vc1_adv_progressive_8x4_zz[i++]; 3024 idx = ff_vc1_adv_progressive_8x4_zz[i++];
3025 block[idx + off] = value * scale; 3025 block[idx + off] = value * scale;
3026 if(!v->pquantizer) 3026 if(!v->pquantizer)
3027 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant; 3027 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant;
3028 } 3028 }
3029 if(!(subblkpat & (1 << (1 - j)))) 3029 if(!(subblkpat & (1 << (1 - j))))
3039 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2); 3039 vc1_decode_ac_coeff(v, &last, &skip, &value, v->codingset2);
3040 i += skip; 3040 i += skip;
3041 if(i > 31) 3041 if(i > 31)
3042 break; 3042 break;
3043 if(v->profile < PROFILE_ADVANCED) 3043 if(v->profile < PROFILE_ADVANCED)
3044 idx = vc1_simple_progressive_4x8_zz[i++]; 3044 idx = ff_vc1_simple_progressive_4x8_zz[i++];
3045 else 3045 else
3046 idx = vc1_adv_progressive_4x8_zz[i++]; 3046 idx = ff_vc1_adv_progressive_4x8_zz[i++];
3047 block[idx + off] = value * scale; 3047 block[idx + off] = value * scale;
3048 if(!v->pquantizer) 3048 if(!v->pquantizer)
3049 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant; 3049 block[idx + off] += (block[idx + off] < 0) ? -mquant : mquant;
3050 } 3050 }
3051 if(!(subblkpat & (1 << (1 - j)))) 3051 if(!(subblkpat & (1 << (1 - j))))
3125 cbp = 0; 3125 cbp = 0;
3126 } 3126 }
3127 s->current_picture.qscale_table[mb_pos] = mquant; 3127 s->current_picture.qscale_table[mb_pos] = mquant;
3128 3128
3129 if (!v->ttmbf && !s->mb_intra && mb_has_coeffs) 3129 if (!v->ttmbf && !s->mb_intra && mb_has_coeffs)
3130 ttmb = get_vlc2(gb, vc1_ttmb_vlc[v->tt_index].table, 3130 ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table,
3131 VC1_TTMB_VLC_BITS, 2); 3131 VC1_TTMB_VLC_BITS, 2);
3132 if(!s->mb_intra) vc1_mc_1mv(v, 0); 3132 if(!s->mb_intra) vc1_mc_1mv(v, 0);
3133 dst_idx = 0; 3133 dst_idx = 0;
3134 for (i=0; i<6; i++) 3134 for (i=0; i<6; i++)
3135 { 3135 {
3234 } 3234 }
3235 if(intrapred)s->ac_pred = get_bits(gb, 1); 3235 if(intrapred)s->ac_pred = get_bits(gb, 1);
3236 else s->ac_pred = 0; 3236 else s->ac_pred = 0;
3237 } 3237 }
3238 if (!v->ttmbf && coded_inter) 3238 if (!v->ttmbf && coded_inter)
3239 ttmb = get_vlc2(gb, vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); 3239 ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2);
3240 for (i=0; i<6; i++) 3240 for (i=0; i<6; i++)
3241 { 3241 {
3242 dst_idx += i >> 2; 3242 dst_idx += i >> 2;
3243 off = (i & 4) ? 0 : ((i & 1) * 8 + (i & 2) * 4 * s->linesize); 3243 off = (i & 4) ? 0 : ((i & 1) * 8 + (i & 2) * 4 * s->linesize);
3244 s->mb_intra = is_intra[i]; 3244 s->mb_intra = is_intra[i];
3374 GET_MQUANT(); 3374 GET_MQUANT();
3375 s->mb_intra = 0; 3375 s->mb_intra = 0;
3376 mb_has_coeffs = 0; 3376 mb_has_coeffs = 0;
3377 s->current_picture.qscale_table[mb_pos] = mquant; 3377 s->current_picture.qscale_table[mb_pos] = mquant;
3378 if(!v->ttmbf) 3378 if(!v->ttmbf)
3379 ttmb = get_vlc2(gb, vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); 3379 ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2);
3380 dmv_x[0] = dmv_y[0] = dmv_x[1] = dmv_y[1] = 0; 3380 dmv_x[0] = dmv_y[0] = dmv_x[1] = dmv_y[1] = 0;
3381 vc1_pred_b_mv(v, dmv_x, dmv_y, direct, bmvtype); 3381 vc1_pred_b_mv(v, dmv_x, dmv_y, direct, bmvtype);
3382 vc1_b_mc(v, dmv_x, dmv_y, direct, bmvtype); 3382 vc1_b_mc(v, dmv_x, dmv_y, direct, bmvtype);
3383 } else { 3383 } else {
3384 if(!mb_has_coeffs && !s->mb_intra) { 3384 if(!mb_has_coeffs && !s->mb_intra) {
3411 s->ac_pred = get_bits1(gb); 3411 s->ac_pred = get_bits1(gb);
3412 cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); 3412 cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2);
3413 GET_MQUANT(); 3413 GET_MQUANT();
3414 s->current_picture.qscale_table[mb_pos] = mquant; 3414 s->current_picture.qscale_table[mb_pos] = mquant;
3415 if(!v->ttmbf && !s->mb_intra && mb_has_coeffs) 3415 if(!v->ttmbf && !s->mb_intra && mb_has_coeffs)
3416 ttmb = get_vlc2(gb, vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); 3416 ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2);
3417 } 3417 }
3418 } 3418 }
3419 dst_idx = 0; 3419 dst_idx = 0;
3420 for (i=0; i<6; i++) 3420 for (i=0; i<6; i++)
3421 { 3421 {