900 |
|
|
901 |
} else if (gmc_warp) { /* a not coded S(GMC)-VOP macroblock */ |
} else if (gmc_warp) { /* a not coded S(GMC)-VOP macroblock */ |
902 |
mb->mode = MODE_NOT_CODED_GMC; |
mb->mode = MODE_NOT_CODED_GMC; |
903 |
|
mb->quant = quant; |
904 |
decoder_mbgmc(dec, mb, x, y, fcode, 0x00, bs, rounding); |
decoder_mbgmc(dec, mb, x, y, fcode, 0x00, bs, rounding); |
905 |
|
|
906 |
if(dec->out_frm && cp_mb > 0) { |
if(dec->out_frm && cp_mb > 0) { |
910 |
st_mb = x+1; |
st_mb = x+1; |
911 |
} else { /* not coded P_VOP macroblock */ |
} else { /* not coded P_VOP macroblock */ |
912 |
mb->mode = MODE_NOT_CODED; |
mb->mode = MODE_NOT_CODED; |
913 |
|
mb->quant = quant; |
914 |
|
|
915 |
mb->mvs[0].x = mb->mvs[1].x = mb->mvs[2].x = mb->mvs[3].x = 0; |
mb->mvs[0].x = mb->mvs[1].x = mb->mvs[2].x = mb->mvs[3].x = 0; |
916 |
mb->mvs[0].y = mb->mvs[1].y = mb->mvs[2].y = mb->mvs[3].y = 0; |
mb->mvs[0].y = mb->mvs[1].y = mb->mvs[2].y = mb->mvs[3].y = 0; |
1510 |
/* attemping to decode a bvop without atleast 2 reference frames */ |
/* attemping to decode a bvop without atleast 2 reference frames */ |
1511 |
image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16, |
image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16, |
1512 |
"broken b-frame, mising ref frames"); |
"broken b-frame, mising ref frames"); |
1513 |
stats->type = XVID_TYPE_NOTHING; |
if (stats) stats->type = XVID_TYPE_NOTHING; |
1514 |
} else if (dec->time_pp <= dec->time_bp) { |
} else if (dec->time_pp <= dec->time_bp) { |
1515 |
/* this occurs when dx50_bvop_compatibility==0 sequences are |
/* this occurs when dx50_bvop_compatibility==0 sequences are |
1516 |
decoded in vfw. */ |
decoded in vfw. */ |
1517 |
image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16, |
image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16, |
1518 |
"broken b-frame, tpp=%i tbp=%i", dec->time_pp, dec->time_bp); |
"broken b-frame, tpp=%i tbp=%i", dec->time_pp, dec->time_bp); |
1519 |
stats->type = XVID_TYPE_NOTHING; |
if (stats) stats->type = XVID_TYPE_NOTHING; |
1520 |
} else { |
} else { |
1521 |
decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward); |
decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward); |
1522 |
decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type, quant); |
decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type, quant); |