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