comparison vc1.c @ 3452:f024ca7c768b libavcodec

MVRANGE may occur in all frames and RESPIC in all but B-frames
author kostya
date Sun, 09 Jul 2006 02:56:40 +0000
parents 45724ba8d666
children e3f5377bddb2
comparison
equal deleted inserted replaced
3451:45724ba8d666 3452:f024ca7c768b
1314 if (pqindex < 9) v->halfpq = get_bits(gb, 1); 1314 if (pqindex < 9) v->halfpq = get_bits(gb, 1);
1315 else v->halfpq = 0; 1315 else v->halfpq = 0;
1316 if (v->quantizer_mode == QUANT_FRAME_EXPLICIT) 1316 if (v->quantizer_mode == QUANT_FRAME_EXPLICIT)
1317 v->pquantizer = get_bits(gb, 1); 1317 v->pquantizer = get_bits(gb, 1);
1318 v->dquantfrm = 0; 1318 v->dquantfrm = 0;
1319 if (v->extended_mv == 1) v->mvrange = get_prefix(gb, 0, 3);
1320 v->k_x = v->mvrange + 9 + (v->mvrange >> 1); //k_x can be 9 10 12 13
1321 v->k_y = v->mvrange + 8; //k_y can be 8 9 10 11
1322 v->range_x = 1 << (v->k_x - 1);
1323 v->range_y = 1 << (v->k_y - 1);
1324 if (v->profile == PROFILE_ADVANCED)
1325 {
1326 if (v->postprocflag) v->postproc = get_bits(gb, 1);
1327 }
1328 else
1329 if (v->multires && v->s.pict_type != B_TYPE) v->respic = get_bits(gb, 2);
1319 1330
1320 //av_log(v->s.avctx, AV_LOG_INFO, "%c Frame: QP=[%i]%i (+%i/2) %i\n", 1331 //av_log(v->s.avctx, AV_LOG_INFO, "%c Frame: QP=[%i]%i (+%i/2) %i\n",
1321 // (v->s.pict_type == P_TYPE) ? 'P' : ((v->s.pict_type == I_TYPE) ? 'I' : 'B'), pqindex, v->pq, v->halfpq, v->rangeredfrm); 1332 // (v->s.pict_type == P_TYPE) ? 'P' : ((v->s.pict_type == I_TYPE) ? 'I' : 'B'), pqindex, v->pq, v->halfpq, v->rangeredfrm);
1322 1333
1323 //TODO: complete parsing for P/B/BI frames 1334 //TODO: complete parsing for P/B/BI frames
1325 case P_TYPE: 1336 case P_TYPE:
1326 if (v->pq < 5) v->tt_index = 0; 1337 if (v->pq < 5) v->tt_index = 0;
1327 else if(v->pq < 13) v->tt_index = 1; 1338 else if(v->pq < 13) v->tt_index = 1;
1328 else v->tt_index = 2; 1339 else v->tt_index = 2;
1329 1340
1330 if (v->extended_mv == 1) v->mvrange = get_prefix(gb, 0, 3);
1331 v->k_x = v->mvrange + 9 + (v->mvrange >> 1); //k_x can be 9 10 12 13
1332 v->k_y = v->mvrange + 8; //k_y can be 8 9 10 11
1333 v->range_x = 1 << (v->k_x - 1);
1334 v->range_y = 1 << (v->k_y - 1);
1335 if (v->profile == PROFILE_ADVANCED)
1336 {
1337 if (v->postprocflag) v->postproc = get_bits(gb, 1);
1338 }
1339 else
1340 if (v->multires) v->respic = get_bits(gb, 2);
1341 lowquant = (v->pq > 12) ? 0 : 1; 1341 lowquant = (v->pq > 12) ? 0 : 1;
1342 v->mv_mode = mv_pmode_table[lowquant][get_prefix(gb, 1, 4)]; 1342 v->mv_mode = mv_pmode_table[lowquant][get_prefix(gb, 1, 4)];
1343 if (v->mv_mode == MV_PMODE_INTENSITY_COMP) 1343 if (v->mv_mode == MV_PMODE_INTENSITY_COMP)
1344 { 1344 {
1345 int scale, shift, i; 1345 int scale, shift, i;