x86: fdct: Initialize optimized fdct implementations in the standard way
This commit is contained in:
		
							parent
							
								
									0b8b2ae5e9
								
							
						
					
					
						commit
						258414d077
					
				@ -946,6 +946,7 @@ hadamard_func(ssse3)
 | 
			
		||||
av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
 | 
			
		||||
{
 | 
			
		||||
    int cpu_flags = av_get_cpu_flags();
 | 
			
		||||
    const int dct_algo = avctx->dct_algo;
 | 
			
		||||
 | 
			
		||||
#if HAVE_YASM
 | 
			
		||||
    int bit_depth = avctx->bits_per_raw_sample;
 | 
			
		||||
@ -965,18 +966,9 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
 | 
			
		||||
 | 
			
		||||
#if HAVE_INLINE_ASM
 | 
			
		||||
    if (INLINE_MMX(cpu_flags)) {
 | 
			
		||||
        const int dct_algo = avctx->dct_algo;
 | 
			
		||||
        if (avctx->bits_per_raw_sample <= 8 &&
 | 
			
		||||
            (dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX)) {
 | 
			
		||||
            if (cpu_flags & AV_CPU_FLAG_SSE2) {
 | 
			
		||||
                c->fdct = ff_fdct_sse2;
 | 
			
		||||
            } else if (cpu_flags & AV_CPU_FLAG_MMXEXT) {
 | 
			
		||||
                c->fdct = ff_fdct_mmxext;
 | 
			
		||||
            }else{
 | 
			
		||||
                c->fdct = ff_fdct_mmx;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
            (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
 | 
			
		||||
            c->fdct = ff_fdct_mmx;
 | 
			
		||||
 | 
			
		||||
        c->diff_bytes= diff_bytes_mmx;
 | 
			
		||||
        c->sum_abs_dctelem= sum_abs_dctelem_mmx;
 | 
			
		||||
@ -1000,6 +992,10 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (INLINE_MMXEXT(cpu_flags)) {
 | 
			
		||||
        if (avctx->bits_per_raw_sample <= 8 &&
 | 
			
		||||
            (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
 | 
			
		||||
            c->fdct = ff_fdct_mmxext;
 | 
			
		||||
 | 
			
		||||
        c->sum_abs_dctelem = sum_abs_dctelem_mmxext;
 | 
			
		||||
        c->vsad[4]         = vsad_intra16_mmxext;
 | 
			
		||||
 | 
			
		||||
@ -1011,6 +1007,10 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (INLINE_SSE2(cpu_flags)) {
 | 
			
		||||
        if (avctx->bits_per_raw_sample <= 8 &&
 | 
			
		||||
            (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
 | 
			
		||||
            c->fdct = ff_fdct_sse2;
 | 
			
		||||
 | 
			
		||||
        c->sum_abs_dctelem= sum_abs_dctelem_sse2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user