32 |
* |
* |
33 |
* History: |
* History: |
34 |
* |
* |
35 |
|
* 08.05.2002 add low_delay support for B_VOP decode |
36 |
|
* MinChen <chenm001@163.com> |
37 |
|
* 05.05.2002 fix some B-frame decode problem |
38 |
* 02.05.2002 add B-frame decode support(have some problem); |
* 02.05.2002 add B-frame decode support(have some problem); |
39 |
* MinChen <chenm001@163.com> |
* MinChen <chenm001@163.com> |
40 |
* 22.04.2002 add some B-frame decode support; chenm001 <chenm001@163.com> |
* 22.04.2002 add some B-frame decode support; chenm001 <chenm001@163.com> |
47 |
* 22.12.2001 lock based interpolation |
* 22.12.2001 lock based interpolation |
48 |
* 01.12.2001 inital version; (c)2001 peter ross <pross@cs.rmit.edu.au> |
* 01.12.2001 inital version; (c)2001 peter ross <pross@cs.rmit.edu.au> |
49 |
* |
* |
50 |
* $Id: decoder.c,v 1.16 2002-05-06 03:58:09 chenm001 Exp $ |
* $Id: decoder.c,v 1.17 2002-05-09 00:15:51 chenm001 Exp $ |
51 |
* |
* |
52 |
*************************************************************************/ |
*************************************************************************/ |
53 |
|
|
1175 |
|
|
1176 |
frame->length = BitstreamPos(&bs) / 8; |
frame->length = BitstreamPos(&bs) / 8; |
1177 |
|
|
1178 |
|
// test if no B_VOP |
1179 |
|
if (dec->low_delay){ |
1180 |
|
image_output(&dec->cur, dec->width, dec->height, dec->edged_width, |
1181 |
|
frame->image, frame->stride, frame->colorspace); |
1182 |
|
} else { |
1183 |
if (dec->frames >= 1){ |
if (dec->frames >= 1){ |
1184 |
start_timer(); |
start_timer(); |
1185 |
if ((vop_type == I_VOP || vop_type == P_VOP)) |
if ((vop_type == I_VOP || vop_type == P_VOP)) |
1192 |
} |
} |
1193 |
stop_conv_timer(); |
stop_conv_timer(); |
1194 |
} |
} |
1195 |
|
} |
1196 |
if (vop_type==I_VOP || vop_type==P_VOP){ |
if (vop_type==I_VOP || vop_type==P_VOP){ |
1197 |
image_swap(&dec->refn[0], &dec->refn[1]); |
image_swap(&dec->refn[0], &dec->refn[1]); |
1198 |
image_swap(&dec->cur, &dec->refn[0]); |
image_swap(&dec->cur, &dec->refn[0]); |
1199 |
// swap MACROBLOCK |
// swap MACROBLOCK |
1200 |
if (vop_type==P_VOP) |
if (dec->low_delay && vop_type==P_VOP) |
1201 |
mb_swap(&dec->mbs, &dec->last_mbs); |
mb_swap(&dec->mbs, &dec->last_mbs); |
1202 |
} |
} |
1203 |
|
|