comparison x86/h264dsp_mmx.c @ 10938:2a50b786b888 libavcodec

Fix h264_loop_filter_strength_mmx2() so it works with b frames.
author michael
date Tue, 19 Jan 2010 16:40:36 +0000
parents afb9e56fbee9
children 3a723e8dcd26
comparison
equal deleted inserted replaced
10937:afb9e56fbee9 10938:2a50b786b888
847 "m"(mv[l][b_idx][0]), 847 "m"(mv[l][b_idx][0]),
848 "m"(mv[l][b_idx+2][0]), 848 "m"(mv[l][b_idx+2][0]),
849 "m"(mv[l][b_idx+d_idx][0]), 849 "m"(mv[l][b_idx+d_idx][0]),
850 "m"(mv[l][b_idx+d_idx+2][0]) 850 "m"(mv[l][b_idx+d_idx+2][0])
851 ); 851 );
852 }
853 if(bidir==1){
854 __asm__ volatile("pxor %%mm3, %%mm3 \n\t":);
855 for( l = bidir; l >= 0; l-- ) {
856 __asm__ volatile(
857 "movd %0, %%mm1 \n\t"
858 "punpckldq %1, %%mm1 \n\t"
859 "punpckldq %%mm1, %%mm2 \n\t"
860 "pcmpeqb %%mm2, %%mm1 \n\t"
861 "paddb %%mm6, %%mm1 \n\t"
862 "punpckhbw %%mm7, %%mm1 \n\t" // ref[b] != ref[bn]
863 "por %%mm1, %%mm3 \n\t"
864
865 "movq %2, %%mm1 \n\t"
866 "movq %3, %%mm2 \n\t"
867 "psubw %4, %%mm1 \n\t"
868 "psubw %5, %%mm2 \n\t"
869 "packsswb %%mm2, %%mm1 \n\t"
870 "paddb %%mm5, %%mm1 \n\t"
871 "pminub %%mm4, %%mm1 \n\t"
872 "pcmpeqb %%mm4, %%mm1 \n\t" // abs(mv[b] - mv[bn]) >= limit
873 "por %%mm1, %%mm3 \n\t"
874 ::"m"(ref[l][b_idx]),
875 "m"(ref[1-l][b_idx+d_idx]),
876 "m"(mv[l][b_idx][0]),
877 "m"(mv[l][b_idx+2][0]),
878 "m"(mv[1-l][b_idx+d_idx][0]),
879 "m"(mv[1-l][b_idx+d_idx+2][0])
880 );
881 }
882 __asm__ volatile(
883 "pcmpeqw %%mm7, %%mm3 \n\t"
884 "psubusw %%mm3, %%mm0 \n\t"
885 :);
852 } 886 }
853 } 887 }
854 __asm__ volatile( 888 __asm__ volatile(
855 "movd %0, %%mm1 \n\t" 889 "movd %0, %%mm1 \n\t"
856 "por %1, %%mm1 \n\t" 890 "por %1, %%mm1 \n\t"