~1.37x faster (147 vs. 108 cycles) compared to mmxext function
Unified · Split
| @@ -1232,6 +1232,24 @@ cglobal deblock_h_chroma_intra_8, 4, 6, 8, pix_, stride_, alpha_, beta_ · 1231 unmodified lines | |||
| 1232 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) | 1232 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) |
| 1233 | RET | 1233 | RET |
| 1234 | 1234 | ||
| 1235 | cglobal deblock_h_chroma422_intra_8, 4, 6, 8, pix_, stride_, alpha_, beta_ | ||
| 1236 | CHROMA_H_START_XMM r4, r5 | ||
| 1237 | LOAD_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) | ||
| 1238 | TRANSPOSE_8x4B_XMM | ||
| 1239 | CHROMA_INTRA_BODY_XMM | ||
| 1240 | TRANSPOSE_4x8B_XMM | ||
| 1241 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) | ||
| 1242 | |||
| 1243 | lea pix_q, [pix_q + 8*stride_q] | ||
| 1244 | lea r4, [r4 + 8*stride_q] | ||
| 1245 | |||
| 1246 | LOAD_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) | ||
| 1247 | TRANSPOSE_8x4B_XMM | ||
| 1248 | CHROMA_INTRA_BODY_XMM | ||
| 1249 | TRANSPOSE_4x8B_XMM | ||
| 1250 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) | ||
| 1251 | RET | ||
| 1252 | |||
| 1235 | %endmacro ; DEBLOCK_CHROMA_XMM | 1253 | %endmacro ; DEBLOCK_CHROMA_XMM |
| 1236 | 1254 | ||
| 1237 | DEBLOCK_CHROMA_XMM avx | 1255 | DEBLOCK_CHROMA_XMM avx |
| @@ -325,6 +325,7 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, · 324 unmodified lines | |||
| 325 | c->h264_h_loop_filter_chroma_intra = ff_deblock_h_chroma_intra_8_avx; | 325 | c->h264_h_loop_filter_chroma_intra = ff_deblock_h_chroma_intra_8_avx; |
| 326 | } else { | 326 | } else { |
| 327 | c->h264_h_loop_filter_chroma = ff_deblock_h_chroma422_8_avx; | 327 | c->h264_h_loop_filter_chroma = ff_deblock_h_chroma422_8_avx; |
| 328 | c->h264_h_loop_filter_chroma_intra = ff_deblock_h_chroma422_intra_8_avx; | ||
| 328 | } | 329 | } |
| 329 | } | 330 | } |
| 330 | } else if (bit_depth == 10) { | 331 | } else if (bit_depth == 10) { |