diff options
author | Mikhail Nitenko <mnitenko@gmail.com> | 2021-04-15 12:13:52 +0300 |
---|---|---|
committer | Josh Dekker <josh@itanimul.li> | 2021-04-19 09:01:14 +0200 |
commit | 84ac1440b2a726b8a989dafdf634081651de1c10 (patch) | |
tree | 43fc1ed474f170aa4dd1452583f7acf59efc568c /libavcodec/aarch64/h264pred_init.c | |
parent | 6b2e7dc82862c6f87517c928c3408c3f8d62d671 (diff) |
lavc/aarch64: add pred16x16 10-bit functions
Benchmarks: A53 A72
pred16x16_dc_10_c: 136.0 124.0
pred16x16_dc_10_neon: 121.2 106.0
pred16x16_horizontal_10_c: 155.0 73.2
pred16x16_horizontal_10_neon: 82.2 67.7
pred16x16_top_dc_10_c: 106.0 93.7
pred16x16_top_dc_10_neon: 87.7 77.2
pred16x16_vertical_10_c: 83.0 67.7
pred16x16_vertical_10_neon: 54.2 61.7
Some functions work slower than C and are left commented out.
Diffstat (limited to 'libavcodec/aarch64/h264pred_init.c')
-rw-r--r-- | libavcodec/aarch64/h264pred_init.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libavcodec/aarch64/h264pred_init.c b/libavcodec/aarch64/h264pred_init.c index fc8989ae0d..325a86bfcd 100644 --- a/libavcodec/aarch64/h264pred_init.c +++ b/libavcodec/aarch64/h264pred_init.c @@ -45,6 +45,11 @@ void ff_pred8x8_0lt_dc_neon(uint8_t *src, ptrdiff_t stride); void ff_pred8x8_l00_dc_neon(uint8_t *src, ptrdiff_t stride); void ff_pred8x8_0l0_dc_neon(uint8_t *src, ptrdiff_t stride); +void ff_pred16x16_top_dc_neon_10(uint8_t *src, ptrdiff_t stride); +void ff_pred16x16_dc_neon_10(uint8_t *src, ptrdiff_t stride); +void ff_pred16x16_hor_neon_10(uint8_t *src, ptrdiff_t stride); +void ff_pred16x16_vert_neon_10(uint8_t *src, ptrdiff_t stride); + static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id, const int bit_depth, const int chroma_format_idc) @@ -78,6 +83,12 @@ static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id, codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon; } + if (bit_depth == 10) { + h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon_10; + h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon_10; + h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon_10; + h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon_10; + } } av_cold void ff_h264_pred_init_aarch64(H264PredContext *h, int codec_id, |