From c90b94424cd4953a095d6d6648ba8d499e306b35 Mon Sep 17 00:00:00 2001 From: Jason Garrett-Glaser Date: Fri, 3 Jun 2011 01:12:28 -0700 Subject: 4:4:4 H.264 decoding support Note: this is 4:4:4 from the 2007 spec revision, not the previous (now deprecated) 4:4:4 mode in H.264. --- libavcodec/x86/h264_idct_10bit.asm | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'libavcodec/x86/h264_idct_10bit.asm') diff --git a/libavcodec/x86/h264_idct_10bit.asm b/libavcodec/x86/h264_idct_10bit.asm index 3f7cf4cefc..54636a95d0 100644 --- a/libavcodec/x86/h264_idct_10bit.asm +++ b/libavcodec/x86/h264_idct_10bit.asm @@ -29,14 +29,18 @@ SECTION_RODATA pw_pixel_max: times 8 dw ((1 << 10)-1) pd_32: times 4 dd 32 -scan8_mem: db 4+1*8, 5+1*8, 4+2*8, 5+2*8 - db 6+1*8, 7+1*8, 6+2*8, 7+2*8 - db 4+3*8, 5+3*8, 4+4*8, 5+4*8 - db 6+3*8, 7+3*8, 6+4*8, 7+4*8 - db 1+1*8, 2+1*8 - db 1+2*8, 2+2*8 - db 1+4*8, 2+4*8 - db 1+5*8, 2+5*8 +scan8_mem: db 4+ 1*8, 5+ 1*8, 4+ 2*8, 5+ 2*8 + db 6+ 1*8, 7+ 1*8, 6+ 2*8, 7+ 2*8 + db 4+ 3*8, 5+ 3*8, 4+ 4*8, 5+ 4*8 + db 6+ 3*8, 7+ 3*8, 6+ 4*8, 7+ 4*8 + db 4+ 6*8, 5+ 6*8, 4+ 7*8, 5+ 7*8 + db 6+ 6*8, 7+ 6*8, 6+ 7*8, 7+ 7*8 + db 4+ 8*8, 5+ 8*8, 4+ 9*8, 5+ 9*8 + db 6+ 8*8, 7+ 8*8, 6+ 9*8, 7+ 9*8 + db 4+11*8, 5+11*8, 4+12*8, 5+12*8 + db 6+11*8, 7+11*8, 6+12*8, 7+12*8 + db 4+13*8, 5+13*8, 4+14*8, 5+14*8 + db 6+13*8, 7+13*8, 6+14*8, 7+14*8 %ifdef PIC %define scan8 r11 @@ -306,7 +310,7 @@ INIT_AVX IDCT_ADD16INTRA_10 avx %endif -%assign last_block 24 +%assign last_block 36 ;----------------------------------------------------------------------------- ; h264_idct_add8(pixel **dst, const int *block_offset, dctcoef *block, int stride, const uint8_t nnzc[6*8]) ;----------------------------------------------------------------------------- @@ -317,21 +321,22 @@ cglobal h264_idct_add8_10_%1,5,7 %endif add r2, 1024 mov r0, [r0] - ADD16_OP_INTRA %1, 16, 1+1*8 - ADD16_OP_INTRA %1, 18, 1+2*8 + ADD16_OP_INTRA %1, 16, 4+ 6*8 + ADD16_OP_INTRA %1, 18, 4+ 7*8 + add r2, 1024-128*2 %ifdef ARCH_X86_64 mov r0, [r10+gprsize] %else mov r0, r0m mov r0, [r0+gprsize] %endif - ADD16_OP_INTRA %1, 20, 1+4*8 - ADD16_OP_INTRA %1, 22, 1+5*8 + ADD16_OP_INTRA %1, 32, 4+11*8 + ADD16_OP_INTRA %1, 34, 4+12*8 REP_RET AC %1, 16 AC %1, 18 - AC %1, 20 - AC %1, 22 + AC %1, 32 + AC %1, 34 %endmacro ; IDCT_ADD8 -- cgit v1.2.3