~1.37x faster (147 vs. 108 cycles) compared to mmxext function
Showing the changes to libavcodec (2 of 2 files). Show all
Unified · Split
| @@ -1232,6 +1232,24 @@ cglobal deblock_h_chroma_intra_8, 4, 6, 8, pix_, stride_, alpha_, beta_ · 1231 unmodified lines | ||
| 1232 | 1232 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r4 - 2, stride_q, r5) |
| 1233 | 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 | 1253 | %endmacro ; DEBLOCK_CHROMA_XMM |
| 1236 | 1254 | |
| 1237 | 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 | 325 | c->h264_h_loop_filter_chroma_intra = ff_deblock_h_chroma_intra_8_avx; |
| 326 | 326 | } else { |
| 327 | 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 | 331 | } else if (bit_depth == 10) { |