[FFmpeg-cvslog] avcodec/vvc: Remove NOP condition check in alf_filter_luma
ffmpeg | branch: master | Zhao Zhili | Tue Jul 16 10:49:56 2024 +0800| [8bac9d4a21ddbaaa8aec25fcc749309cc2b9ec96] | committer: Nuo Mi avcodec/vvc: Remove NOP condition check in alf_filter_luma If (y + i == vb_above) or (y + i == vb_below), the if body has no operation. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8bac9d4a21ddbaaa8aec25fcc749309cc2b9ec96 --- libavcodec/vvc/filter_template.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/vvc/filter_template.c b/libavcodec/vvc/filter_template.c index 9b3a0e46f7..32777452b7 100644 --- a/libavcodec/vvc/filter_template.c +++ b/libavcodec/vvc/filter_template.c @@ -77,7 +77,7 @@ static void FUNC(alf_filter_luma)(uint8_t *_dst, ptrdiff_t dst_stride, const uin const int is_near_vb_below = (y + i >= vb_pos) && (y + i <= vb_pos); const int is_near_vb = is_near_vb_above || is_near_vb_below; -if ((y + i < vb_pos) && ((y + i) >= vb_above)) { +if ((y + i < vb_pos) && ((y + i) > vb_above)) { p1 = (y + i == vb_pos - 1) ? p0 : p1; p3 = (y + i >= vb_pos - 2) ? p1 : p3; p5 = (y + i >= vb_pos - 3) ? p3 : p5; @@ -85,7 +85,7 @@ static void FUNC(alf_filter_luma)(uint8_t *_dst, ptrdiff_t dst_stride, const uin p2 = (y + i == vb_pos - 1) ? p0 : p2; p4 = (y + i >= vb_pos - 2) ? p2 : p4; p6 = (y + i >= vb_pos - 3) ? p4 : p6; -} else if ((y + i >= vb_pos) && ((y + i) <= vb_below)) { +} else if ((y + i >= vb_pos) && ((y + i) < vb_below)) { p2 = (y + i == vb_pos) ? p0 : p2; p4 = (y + i <= vb_pos + 1) ? p2 : p4; p6 = (y + i <= vb_pos + 2) ? p4 : p6; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/vvc: Remove write-only assignments in alf_filter_chroma
ffmpeg | branch: master | Zhao Zhili | Tue Jul 16 10:49:57 2024 +0800| [b3aeef3bf94435f9ddf8c79ecfd90b00fef30be7] | committer: Nuo Mi avcodec/vvc: Remove write-only assignments in alf_filter_chroma > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b3aeef3bf94435f9ddf8c79ecfd90b00fef30be7 --- libavcodec/vvc/filter_template.c | 10 -- 1 file changed, 10 deletions(-) diff --git a/libavcodec/vvc/filter_template.c b/libavcodec/vvc/filter_template.c index 32777452b7..6dd7310089 100644 --- a/libavcodec/vvc/filter_template.c +++ b/libavcodec/vvc/filter_template.c @@ -153,8 +153,6 @@ static void FUNC(alf_filter_chroma)(uint8_t* _dst, ptrdiff_t dst_stride, const u const pixel *s2 = s0 - src_stride; const pixel *s3 = s1 + src_stride; const pixel *s4 = s2 - src_stride; -const pixel *s5 = s3 + src_stride; -const pixel *s6 = s4 - src_stride; for (int i = 0; i < ALF_BLOCK_SIZE; i++) { pixel *dst = (pixel *)_dst + (y + i) * dst_stride + x; @@ -164,8 +162,6 @@ static void FUNC(alf_filter_chroma)(uint8_t* _dst, ptrdiff_t dst_stride, const u const pixel *p2 = s2 + i * src_stride; const pixel *p3 = s3 + i * src_stride; const pixel *p4 = s4 + i * src_stride; -const pixel *p5 = s5 + i * src_stride; -const pixel *p6 = s6 + i * src_stride; const int is_near_vb_above = (y + i < vb_pos) && (y + i >= vb_pos - 1); const int is_near_vb_below = (y + i >= vb_pos) && (y + i <= vb_pos); @@ -174,19 +170,15 @@ static void FUNC(alf_filter_chroma)(uint8_t* _dst, ptrdiff_t dst_stride, const u if ((y + i < vb_pos) && ((y + i) >= vb_above)) { p1 = (y + i == vb_pos - 1) ? p0 : p1; p3 = (y + i >= vb_pos - 2) ? p1 : p3; -p5 = (y + i >= vb_pos - 3) ? p3 : p5; p2 = (y + i == vb_pos - 1) ? p0 : p2; p4 = (y + i >= vb_pos - 2) ? p2 : p4; -p6 = (y + i >= vb_pos - 3) ? p4 : p6; } else if ((y + i >= vb_pos) && ((y + i) <= vb_below)) { p2 = (y + i == vb_pos) ? p0 : p2; p4 = (y + i <= vb_pos + 1) ? p2 : p4; -p6 = (y + i <= vb_pos + 2) ? p4 : p6; p1 = (y + i == vb_pos) ? p0 : p1; p3 = (y + i <= vb_pos + 1) ? p1 : p3; -p5 = (y + i <= vb_pos + 2) ? p3 : p5; } for (int j = 0; j < ALF_BLOCK_SIZE; j++) { @@ -212,8 +204,6 @@ static void FUNC(alf_filter_chroma)(uint8_t* _dst, ptrdiff_t dst_stride, const u p2++; p3++; p4++; -p5++; -p6++; } } } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/riscv: add h264 dc idct rvv
ffmpeg | branch: master | J. Dekker | Mon Jun 10 12:43:44 2024 +0200| [fa5a6055422a9e38905de9274e63f245cef96c57] | committer: J. Dekker avcodec/riscv: add h264 dc idct rvv checkasm: bench runs 131072 (1 << 17) h264_idct4_add_dc_8bpp_c: 1.5 h264_idct4_add_dc_8bpp_rvv_i64: 0.7 h264_idct4_add_dc_9bpp_c: 1.5 h264_idct4_add_dc_9bpp_rvv_i64: 0.7 h264_idct4_add_dc_10bpp_c: 1.5 h264_idct4_add_dc_10bpp_rvv_i64: 0.7 h264_idct4_add_dc_12bpp_c: 1.2 h264_idct4_add_dc_12bpp_rvv_i64: 0.7 h264_idct4_add_dc_14bpp_c: 1.2 h264_idct4_add_dc_14bpp_rvv_i64: 0.7 h264_idct8_add_dc_8bpp_c: 5.2 h264_idct8_add_dc_8bpp_rvv_i64: 1.5 h264_idct8_add_dc_9bpp_c: 5.5 h264_idct8_add_dc_9bpp_rvv_i64: 1.2 h264_idct8_add_dc_10bpp_c: 5.5 h264_idct8_add_dc_10bpp_rvv_i64: 1.2 h264_idct8_add_dc_12bpp_c: 4.2 h264_idct8_add_dc_12bpp_rvv_i64: 1.2 h264_idct8_add_dc_14bpp_c: 4.2 h264_idct8_add_dc_14bpp_rvv_i64: 1.2 Signed-off-by: J. Dekker > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa5a6055422a9e38905de9274e63f245cef96c57 --- libavcodec/riscv/h264dsp_init.c | 54 +++-- libavcodec/riscv/h264dsp_rvv.S | 105 2 files changed, 145 insertions(+), 14 deletions(-) diff --git a/libavcodec/riscv/h264dsp_init.c b/libavcodec/riscv/h264dsp_init.c index 4fc695f158..5151e80c8b 100644 --- a/libavcodec/riscv/h264dsp_init.c +++ b/libavcodec/riscv/h264dsp_init.c @@ -1,4 +1,5 @@ /* + * Copyright (c) 2024 J. Dekker * Copyright © 2024 Rémi Denis-Courmont. * * This file is part of FFmpeg. @@ -68,6 +69,16 @@ void ff_h264_add_pixels4_16_rvv(uint8_t *dst, int16_t *block, int stride); extern int ff_startcode_find_candidate_rvb(const uint8_t *, int); extern int ff_startcode_find_candidate_rvv(const uint8_t *, int); +void ff_h264_idct4_dc_add_8_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct8_dc_add_8_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct4_dc_add_9_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct8_dc_add_9_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct4_dc_add_10_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct8_dc_add_10_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct4_dc_add_12_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct8_dc_add_12_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct4_dc_add_14_rvv(uint8_t *, int16_t *, int); +void ff_h264_idct8_dc_add_14_rvv(uint8_t *, int16_t *, int); av_cold void ff_h264dsp_init_riscv(H264DSPContext *dsp, const int bit_depth, const int chroma_format_idc) @@ -94,36 +105,51 @@ av_cold void ff_h264dsp_init_riscv(H264DSPContext *dsp, const int bit_depth, dsp->h264_h_loop_filter_luma_mbaff = ff_h264_h_loop_filter_luma_mbaff_8_rvv; -dsp->h264_idct_add = ff_h264_idct_add_8_rvv; +dsp->h264_idct_add = ff_h264_idct_add_8_rvv; dsp->h264_idct8_add = ff_h264_idct8_add_8_rvv; # if __riscv_xlen == 64 -dsp->h264_idct_add16 = ff_h264_idct_add16_8_rvv; +dsp->h264_idct_add16 = ff_h264_idct_add16_8_rvv; dsp->h264_idct_add16intra = ff_h264_idct_add16intra_8_rvv; -dsp->h264_idct8_add4 = ff_h264_idct8_add4_8_rvv; +dsp->h264_idct8_add4 = ff_h264_idct8_add4_8_rvv; # endif -if (flags & AV_CPU_FLAG_RVV_I64) +if (flags & AV_CPU_FLAG_RVV_I32) +dsp->h264_idct_dc_add = ff_h264_idct4_dc_add_8_rvv; +if (flags & AV_CPU_FLAG_RVV_I64) { dsp->h264_add_pixels8_clear = ff_h264_add_pixels8_8_rvv; +dsp->h264_idct8_dc_add = ff_h264_idct8_dc_add_8_rvv; +} dsp->h264_add_pixels4_clear = ff_h264_add_pixels4_8_rvv; } - if (bit_depth == 9) { -if (zvl128b) -dsp->h264_idct_add = ff_h264_idct_add_9_rvv; +if (zvl128b) { +dsp->h264_idct_dc_add = ff_h264_idct4_dc_add_9_rvv; +dsp->h264_idct8_dc_add = ff_h264_idct8_dc_add_9_rvv; +dsp->h264_idct_add = ff_h264_idct_add_9_rvv; +} dsp->h264_idct8_add = ff_h264_idct8_add_9_rvv; } if (bit_depth == 10) { -if (zvl128b) -dsp->h264_idct_add = ff_h264_idct_add_10_rvv; +if (zvl128b) { +dsp->h264_idct_dc_add = ff_h264_idct4_dc_add_10_rvv; +dsp->h264_idct8_dc_add = ff_h264_idct8_dc_add_10_rvv; +dsp->h264_idct_add = ff_h264_idct_add_10_rvv; + } dsp->h264_idct8_add = ff_h264_idct8_add_10_rvv; } if (bit_depth == 12) { -if (zvl128b) -dsp->h264_idct_add = ff_h264_idct_add_12_rvv; -dsp->h264_idct8_add = ff_h264_idct8_add_12_rvv; +if (zvl128b) { +dsp->h264_idct_add = ff_h264_idct_add_12_rvv; +dsp->h264_idct_dc_add = ff_h264_idct4_dc_add_12_rvv; +dsp->h264_idc