History

avcodec/h264: add avx 8-bit chroma v intra deblock/loop filter

~1.14x faster (90 vs 78 cycles) compared with mmxext

James Darnley committed 9 years ago

Commit 987ffe41 parent 88307b32 files · +34 −0Browse files

Unified · Split

2 files
  1. libavcodec/x86/h264_deblock.asm +33 −0
  2. libavcodec/x86/h264dsp_init.c +1 −0
libavcodec/x86/h264_deblock.asm+33−0
@@ -1117,6 +1117,28 @@ ff_chroma_intra_body_mmxext: · 1116 unmodified lines
11171117 DEBLOCK_P0_Q0
11181118 %endmacro
11191119
1120+%macro CHROMA_INTRA_BODY_XMM 0
1121+ LOAD_MASK alpha_d, beta_d
1122+ mova m5, m1
1123+ mova m6, m2
1124+ pxor m4, m1, m3
1125+ pand m4, [pb_1]
1126+ pavgb m1, m3
1127+ psubusb m1, m4
1128+ pavgb m1, m0
1129+ pxor m4, m2, m0
1130+ pand m4, [pb_1]
1131+ pavgb m2, m0
1132+ psubusb m2, m4
1133+ pavgb m2, m3
1134+ psubb m1, m5
1135+ psubb m2, m6
1136+ pand m1, m7
1137+ pand m2, m7
1138+ paddb m1, m5
1139+ paddb m2, m6
1140+%endmacro
1141+
11201142 %macro CHROMA_V_START_XMM 1
11211143 movsxdifnidn stride_q, stride_d
11221144 dec alpha_d
@@ -1190,6 +1212,17 @@ cglobal deblock_h_chroma422_8, 5, 7, 8, 0-16, pix_, stride_, alpha_, beta_, tc0_ · 67 unmodified lines
11901212 STORE_8_ROWS PASS8ROWS(pix_q - 2, r5 - 2, stride_q, r6)
11911213 RET
11921214
1215+cglobal deblock_v_chroma_intra_8, 4, 5, 8, pix_, stride_, alpha_, beta_
1216+ CHROMA_V_START_XMM r4
1217+ movq m0, [r4]
1218+ movq m1, [r4 + stride_q]
1219+ movq m2, [pix_q]
1220+ movq m3, [pix_q + stride_q]
1221+ CHROMA_INTRA_BODY_XMM
1222+ movq [r4 + stride_q], m1
1223+ movq [pix_q], m2
1224+RET
1225+
11931226 %endmacro ; DEBLOCK_CHROMA_XMM
11941227
11951228 DEBLOCK_CHROMA_XMM avx
libavcodec/x86/h264dsp_init.c+1−0
@@ -319,6 +319,7 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, · 318 unmodified lines
319319 #endif
320320
321321 c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_avx;
322+ c->h264_v_loop_filter_chroma_intra = ff_deblock_v_chroma_intra_8_avx;
322323 if (chroma_format_idc <= 1) {
323324 c->h264_h_loop_filter_chroma = ff_deblock_h_chroma_8_avx;
324325 } else {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t