ffmpeg/libavcodec/hevc
Zhao Zhili 40302cc35b avcodec/hevc: Add wasm simd128 idct
Benchmark with wasmtime:
wasmtime checkasm --test=hevc_idct --benchmark

hevc_idct_4x4_8_c:                                      20.8 ( 1.00x)
hevc_idct_4x4_8_simd128:                                10.2 ( 2.02x)
hevc_idct_4x4_10_c:                                     21.0 ( 1.00x)
hevc_idct_4x4_10_simd128:                               10.2 ( 2.05x)
hevc_idct_8x8_8_c:                                     198.0 ( 1.00x)
hevc_idct_8x8_8_simd128:                                41.5 ( 4.77x)
hevc_idct_8x8_10_c:                                    197.8 ( 1.00x)
hevc_idct_8x8_10_simd128:                               41.8 ( 4.74x)
hevc_idct_16x16_8_c:                                  1385.2 ( 1.00x)
hevc_idct_16x16_8_simd128:                             291.8 ( 4.75x)
hevc_idct_16x16_10_c:                                 1375.0 ( 1.00x)
hevc_idct_16x16_10_simd128:                            281.2 ( 4.89x)
hevc_idct_32x32_8_c:                                 13479.0 ( 1.00x)
hevc_idct_32x32_8_simd128:                            1541.5 ( 8.74x)
hevc_idct_32x32_10_c:                                13448.0 ( 1.00x)
hevc_idct_32x32_10_simd128:                           1541.5 ( 8.72x)

Decoding test:

1. Without the optimization:
$ wasmtime --wasi threads --dir=/ ./ffmpeg -cpuflags 0 -i 265.mp4 -an -t 120 -f null - -benchmark
frame= 2880 fps= 94 q=-0.0 Lsize=N/A time=00:02:00.00 bitrate=N/A speed=3.92x

2. With the optimization:
$ wasmtime --wasi threads --dir=/ ./ffmpeg -i 265.mp4 -an -t 120 -f null - -benchmark
frame= 2880 fps=110 q=-0.0 Lsize=N/A time=00:02:00.00 bitrate=N/A speed=4.58x

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-12-04 16:43:07 +08:00
..
cabac.c lavc/hevcdec: move HEVCContext.tab_ct_depth to HEVCLayerContext 2024-09-06 13:59:29 +02:00
data.c
data.h
dsp.c avcodec/hevc: Add wasm simd128 idct 2024-12-04 16:43:07 +08:00
dsp.h avcodec/hevc: Add wasm simd128 idct 2024-12-04 16:43:07 +08:00
dsp_template.c avcodec/hevc: ff_hevc_(qpel/epel)_filters are signed type 2024-09-14 16:36:34 +08:00
filter.c lavc/hevcdec: make a HEVCFrame hold a reference to its PPS 2024-09-06 13:59:29 +02:00
hevc.h lavc/hevc_ps: parse VPS extension 2024-09-23 17:11:40 +02:00
hevcdec.c avcodec/hevc/hevcdec: initialize qp_y_tab 2024-12-02 03:14:49 +01:00
hevcdec.h Revert "avcodec/h2645: allocate film grain metadata dynamically" 2024-11-11 15:26:21 -03:00
Makefile avcodec/hevc/Makefile: Move rules for lavc/* files to lavc/Makefile 2024-06-09 10:59:33 +02:00
mvs.c lavc/hevcdec: make a HEVCFrame hold a reference to its PPS 2024-09-06 13:59:29 +02:00
parse.c lavc/hevcdec/parse: process NALUs with nuh_layer_id>0 2024-09-23 17:11:40 +02:00
parse.h
parser.c lavc/hevc/parser: only split packets on NALUs with nuh_layer_id=0 2024-09-23 17:11:40 +02:00
pred.c
pred.h lavc/hevc/pred: stop accessing parameter sets through HEVCParamSets 2024-06-11 17:39:34 +02:00
pred_template.c avcodec: use the renamed av_zero_extend 2024-06-13 20:36:09 -03:00
ps.c avcodec/hevc/ps: add a range check for sps_max_sub_layers 2024-10-11 16:17:48 -03:00
ps.h lavc/hevc/ps: implement SPS parsing for nuh_layer_id>0 2024-09-23 17:11:40 +02:00
ps_enc.c
refs.c avcodec/hevc/refs: export Stereo 3D side data 2024-09-23 17:15:02 +02:00
sei.c avcodec/hevc/sei: add support for 3D Reference Displays Information SEI 2024-09-23 17:11:40 +02:00
sei.h avcodec/hevc/sei: remove unused inline function 2024-11-13 12:49:52 -03:00