Mercurial > libavcodec.hg
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 { |