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
1117 DEBLOCK_P0_Q01117 DEBLOCK_P0_Q0
1118%endmacro1118%endmacro
1119 1119
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
1120%macro CHROMA_V_START_XMM 11142%macro CHROMA_V_START_XMM 1
1121 movsxdifnidn stride_q, stride_d1143 movsxdifnidn stride_q, stride_d
1122 dec alpha_d1144 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
1190 STORE_8_ROWS PASS8ROWS(pix_q - 2, r5 - 2, stride_q, r6)1212 STORE_8_ROWS PASS8ROWS(pix_q - 2, r5 - 2, stride_q, r6)
1191RET1213RET
1192 1214
1215cglobal 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
1224RET
1225
1193%endmacro ; DEBLOCK_CHROMA_XMM1226%endmacro ; DEBLOCK_CHROMA_XMM
1194 1227
1195DEBLOCK_CHROMA_XMM avx1228DEBLOCK_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
319#endif319#endif
320 320
321 c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_avx;321 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;
322 if (chroma_format_idc <= 1) {323 if (chroma_format_idc <= 1) {
323 c->h264_h_loop_filter_chroma = ff_deblock_h_chroma_8_avx;324 c->h264_h_loop_filter_chroma = ff_deblock_h_chroma_8_avx;
324 } else {325 } 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