--- decoder.c 2003/02/17 23:33:12 1.48 +++ decoder.c 2003/06/09 17:02:38 1.50 @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: decoder.c,v 1.48 2003/02/17 23:33:12 edgomez Exp $ + * $Id: decoder.c,v 1.50 2003/06/09 17:02:38 Isibaar Exp $ * ****************************************************************************/ @@ -1748,10 +1748,11 @@ uint32_t fcode_backward; uint32_t intra_dc_threshold; WARPPOINTS gmc_warp; - uint32_t vop_type; + int vop_type; int success = 0; int output = 0; int seen_something = 0; + idctFuncPtr idct_save = idct; start_global_timer(); @@ -1807,7 +1808,7 @@ DPRINTF(DPRINTF_HEADER, "vop_type=%i, packed=%i, time=%lli, time_pp=%i, time_bp=%i", vop_type, dec->packed_mode, dec->time, dec->time_pp, dec->time_bp); - if (vop_type == - 1) + if (vop_type == -1) { if (success) goto done; emms(); @@ -1839,6 +1840,8 @@ dec->p_bmv.x = dec->p_bmv.y = dec->p_fmv.y = dec->p_fmv.y = 0; /* init pred vector to 0 */ + if((idct == simple_idct_mmx) && (dec->bs_version < 10)) /* rather ugly but should work */ + idct = idct_mmx; /* packed_mode: special-N_VOP treament */ if (dec->packed_mode && vop_type == N_VOP) @@ -1961,6 +1964,8 @@ } } + idct = idct_save; + frame->length = BitstreamPos(&bs) / 8; if (stats)