--- decoder.c 2002/07/24 23:09:28 1.35 +++ decoder.c 2002/09/21 03:07:56 1.38 @@ -53,9 +53,9 @@ * 26.03.2002 interlacing support - moved transfers outside decode loop * 26.12.2001 decoder_mbinter: dequant/idct moved within if(coded) block * 22.12.2001 lock based interpolation - * 01.12.2001 inital version; (c)2001 peter ross + * 01.12.2001 inital version; (c)2001 peter ross * - * $Id: decoder.c,v 1.35 2002/07/24 23:09:28 chl Exp $ + * $Id: decoder.c,v 1.38 2002/09/21 03:07:56 suxen_drol Exp $ * *************************************************************************/ @@ -653,8 +653,10 @@ mb->quant = quant; if (dec->interlacing) { - mb->field_dct = BitstreamGetBit(bs); - DEBUG1("decp: field_dct: ", mb->field_dct); + if (cbp || intra) { + mb->field_dct = BitstreamGetBit(bs); + DEBUG1("decp: field_dct: ", mb->field_dct); + } if (mb->mode == MODE_INTER || mb->mode == MODE_INTER_Q) { mb->field_pred = BitstreamGetBit(bs); @@ -1377,14 +1379,14 @@ #ifdef BFRAMES_DEC // test if no B_VOP - if (dec->low_delay) { + if (dec->low_delay || dec->frames == 0) { #endif image_output(&dec->cur, dec->width, dec->height, dec->edged_width, frame->image, frame->stride, frame->colorspace); #ifdef BFRAMES_DEC } else { - if (dec->frames >= 0) { + if (dec->frames >= 1) { start_timer(); if ((vop_type == I_VOP || vop_type == P_VOP)) { image_output(&dec->refn[0], dec->width, dec->height,