[FFmpeg-devel] [PATCH 1/2] avcodec/vvcdec: filter, fix uninitialized variables for YUV400 format
Nuo Mi
nuomi2021 at gmail.com
Sat Aug 31 09:36:54 EEST 2024
On Fri, Aug 23, 2024 at 11:04 PM Nuo Mi <nuomi2021 at gmail.com> wrote:
> fix
> ==135000== Conditional jump or move depends on uninitialised value(s)
> ==135000== at 0x169FF95: vvc_deblock_bs (filter.c:699)
> and
> ==135000== Conditional jump or move depends on uninitialised value(s)
> ==135000== at 0x16A2E72: ff_vvc_alf_filter (filter.c:1217)
>
> Reported-by: James Almer <jamrial at gmail.com>
>
Applied. I will monitor the next result from
https://fate.ffmpeg.org/report.cgi?time=20240821174441&slot=x86_64-archlinux-gcc-valgrind
.
Thank you, James, for the report
> ---
> libavcodec/vvc/filter.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/vvc/filter.c b/libavcodec/vvc/filter.c
> index c96e59df89..aa0d542271 100644
> --- a/libavcodec/vvc/filter.c
> +++ b/libavcodec/vvc/filter.c
> @@ -686,11 +686,12 @@ static void vvc_deblock_bs(const VVCLocalContext
> *lc, const int x0, const int y0
> const int ctb_size = sps->ctb_size_y;
> const int x_end = FFMIN(x0 + ctb_size, pps->width) >> MIN_TU_LOG2;
> const int y_end = FFMIN(y0 + ctb_size, pps->height) >> MIN_TU_LOG2;
> + const int has_chroma = !!sps->r->sps_chroma_format_idc;
> deblock_bs_fn deblock_bs[] = {
> vvc_deblock_bs_luma, vvc_deblock_bs_chroma
> };
>
> - for (int is_chroma = 0; is_chroma <= 1; is_chroma++) {
> + for (int is_chroma = 0; is_chroma <= has_chroma; is_chroma++) {
> const int hs = sps->hshift[is_chroma];
> const int vs = sps->vshift[is_chroma];
> for (int y = y0 >> MIN_TU_LOG2; y < y_end; y++) {
> @@ -1194,6 +1195,7 @@ void ff_vvc_alf_filter(VVCLocalContext *lc, const
> int x0, const int y0)
> const int padded_stride = EDGE_EMU_BUFFER_STRIDE << ps;
> const int padded_offset = padded_stride * ALF_PADDING_SIZE +
> (ALF_PADDING_SIZE << ps);
> const int c_end = sps->r->sps_chroma_format_idc ?
> VVC_MAX_SAMPLE_ARRAYS : 1;
> + const int has_chroma = !!sps->r->sps_chroma_format_idc;
> const int ctu_end = y0 + sps->ctb_size_y;
> const ALFParams *alf = &CTB(fc->tab.alf, rx, ry);
> int sb_edges[MAX_VBBS][MAX_EDGES], nb_sbs;
> @@ -1214,7 +1216,7 @@ void ff_vvc_alf_filter(VVCLocalContext *lc, const
> int x0, const int y0)
> uint8_t *src = POS(c_idx, sb->l, sb->t);
> uint8_t *padded;
>
> - if (alf->ctb_flag[c_idx] || (!c_idx && (alf->ctb_cc_idc[0] ||
> alf->ctb_cc_idc[1]))) {
> + if (alf->ctb_flag[c_idx] || (!c_idx && has_chroma &&
> (alf->ctb_cc_idc[0] || alf->ctb_cc_idc[1]))) {
> padded = (c_idx ? lc->alf_buffer_chroma :
> lc->alf_buffer_luma) + padded_offset;
> alf_prepare_buffer(fc, padded, src, x, y, rx, ry, width,
> height,
> padded_stride, src_stride, c_idx, sb_edges[i]);
> --
> 2.34.1
>
>
More information about the ffmpeg-devel
mailing list