Revision e7fce5e9

View differences:

libavcodec/i386/dsputil_mmx.c
524 524
#endif
525 525
}
526 526

  
527
void gen_idct_put(UINT8 *dest, int line_size, DCTELEM *block);
528

  
529
/**
530
 * this will send coeff matrixes which would have different results for the 16383 type MMX vs C IDCTs to the C IDCT
531
 */ 
532
void bit_exact_idct_put(UINT8 *dest, int line_size, INT16 *block){
533
    if(   block[0]>1022 && block[1]==0 && block[4 ]==0 && block[5 ]==0
534
       && block[8]==0   && block[9]==0 && block[12]==0 && block[13]==0){
535
        int16_t tmp[64];
536
        int i;
537

  
538
        for(i=0; i<64; i++)
539
            tmp[i]= block[i];
540
        for(i=0; i<64; i++)
541
            block[i]= tmp[block_permute_op(i)];
542
        
543
        simple_idct_put(dest, line_size, block);
544
    }
545
    else
546
        gen_idct_put(dest, line_size, block);
547
}
548

  
527 549
/* remove any non bit exact operation (testing purpose). NOTE that
528 550
   this function should be kept as small as possible because it is
529 551
   always difficult to test automatically non bit exact cases. */
......
546 568
            put_no_rnd_pixels_tab[2] = put_no_rnd_pixels_y2_mmx;
547 569
            avg_pixels_tab[3] = avg_pixels_xy2_mmx;
548 570
        }
571
#ifdef SIMPLE_IDCT
572
        if(ff_idct_put==gen_idct_put && ff_idct == simple_idct_mmx)
573
            ff_idct_put= bit_exact_idct_put;
574
#endif
549 575
    }
550 576
}

Also available in: Unified diff