32 |
* |
* |
33 |
* History: |
* History: |
34 |
* |
* |
35 |
|
* 22.06.2002 added primative N_VOP support |
36 |
|
* #define BFRAMES_DEC now enables Minchenm's bframe decoder |
37 |
* 08.05.2002 add low_delay support for B_VOP decode |
* 08.05.2002 add low_delay support for B_VOP decode |
38 |
* MinChen <chenm001@163.com> |
* MinChen <chenm001@163.com> |
39 |
* 05.05.2002 fix some B-frame decode problem |
* 05.05.2002 fix some B-frame decode problem |
1252 |
break; |
break; |
1253 |
|
|
1254 |
case B_VOP: |
case B_VOP: |
1255 |
#ifdef BFRAMES |
#ifdef BFRAMES_DEC |
1256 |
if (dec->time_pp > dec->time_bp) { |
if (dec->time_pp > dec->time_bp) { |
1257 |
DEBUG1("B_VOP Time=", dec->time); |
DEBUG1("B_VOP Time=", dec->time); |
1258 |
decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward); |
decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward); |
1259 |
} else { |
} else { |
1260 |
DEBUG("broken B-frame!"); |
DEBUG("broken B-frame!"); |
1261 |
} |
} |
1262 |
|
#else |
1263 |
|
image_copy(&dec->cur, &dec->refn[0], dec->edged_width, dec->height); |
1264 |
#endif |
#endif |
1265 |
break; |
break; |
1266 |
|
|
1267 |
case N_VOP: // vop not coded |
case N_VOP: // vop not coded |
1268 |
|
// when low_delay==0, N_VOP's should interpolate between the past and future frames |
1269 |
|
image_copy(&dec->cur, &dec->refn[0], dec->edged_width, dec->height); |
1270 |
break; |
break; |
1271 |
|
|
1272 |
default: |
default: |
1275 |
|
|
1276 |
frame->length = BitstreamPos(&bs) / 8; |
frame->length = BitstreamPos(&bs) / 8; |
1277 |
|
|
1278 |
#ifdef BFRAMES |
#ifdef BFRAMES_DEC |
1279 |
// test if no B_VOP |
// test if no B_VOP |
1280 |
if (dec->low_delay) { |
if (dec->low_delay) { |
1281 |
#endif |
#endif |
1282 |
image_output(&dec->cur, dec->width, dec->height, dec->edged_width, |
image_output(&dec->cur, dec->width, dec->height, dec->edged_width, |
1283 |
frame->image, frame->stride, frame->colorspace); |
frame->image, frame->stride, frame->colorspace); |
1284 |
#ifdef BFRAMES |
#ifdef BFRAMES_DEC |
1285 |
} else { |
} else { |
1286 |
if (dec->frames >= 1) { |
if (dec->frames >= 1) { |
1287 |
start_timer(); |
start_timer(); |