summaryrefslogtreecommitdiff
path: root/libavcodec/aarch64/h264pred_init.c
diff options
context:
space:
mode:
authorMikhail Nitenko <mnitenko@gmail.com>2021-04-15 12:13:52 +0300
committerJosh Dekker <josh@itanimul.li>2021-04-19 09:01:14 +0200
commit84ac1440b2a726b8a989dafdf634081651de1c10 (patch)
tree43fc1ed474f170aa4dd1452583f7acf59efc568c /libavcodec/aarch64/h264pred_init.c
parent6b2e7dc82862c6f87517c928c3408c3f8d62d671 (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.c11
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,