[FFmpeg-devel] [PATCH] avcodec/vulkan_decode: Make Vulkan decode less spammy in verbose logs

Kacper Michajlow kasper93 at gmail.com
Wed Feb 7 16:34:38 EET 2024


On Wed, 7 Feb 2024 at 03:47, Lynne <dev at lynne.ee> wrote:
>
> Feb 7, 2024, 03:11 by kasper93 at gmail.com:
>
> > Drop per frame decode messages to AV_LOG_TRACE level.
> >
> > Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
> > ---
> >  libavcodec/vulkan_av1.c  | 2 +-
> >  libavcodec/vulkan_h264.c | 2 +-
> >  libavcodec/vulkan_hevc.c | 2 +-
> >  3 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/libavcodec/vulkan_av1.c b/libavcodec/vulkan_av1.c
> > index 9730e4b08d..c7d5a54012 100644
> > --- a/libavcodec/vulkan_av1.c
> > +++ b/libavcodec/vulkan_av1.c
> > @@ -530,7 +530,7 @@ static int vk_av1_end_frame(AVCodecContext *avctx)
> >  rav[i] = ap->ref_src[i]->f;
> >  }
> >
> > -    av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i tiles\n",
> > +    av_log(avctx, AV_LOG_TRACE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i tiles\n",
> >  vp->slices_size, ap->tile_list.nb_tiles);
> >
> >  return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp);
> > diff --git a/libavcodec/vulkan_h264.c b/libavcodec/vulkan_h264.c
> > index 39c123ddca..c918dbaa13 100644
> > --- a/libavcodec/vulkan_h264.c
> > +++ b/libavcodec/vulkan_h264.c
> > @@ -529,7 +529,7 @@ static int vk_h264_end_frame(AVCodecContext *avctx)
> >  rav[i] = hp->ref_src[i]->f;
> >  }
> >
> > -    av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
> > +    av_log(avctx, AV_LOG_TRACE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
> >  vp->slices_size, hp->h264_pic_info.sliceCount);
> >
> >  return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp);
> > diff --git a/libavcodec/vulkan_hevc.c b/libavcodec/vulkan_hevc.c
> > index 033172cbd6..0f6f2e775b 100644
> > --- a/libavcodec/vulkan_hevc.c
> > +++ b/libavcodec/vulkan_hevc.c
> > @@ -903,7 +903,7 @@ static int vk_hevc_end_frame(AVCodecContext *avctx)
> >  rvp[i] = &rfhp->vp;
> >  }
> >
> > -    av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
> > +    av_log(avctx, AV_LOG_TRACE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
> >  vp->slices_size, hp->h265_pic_info.sliceSegmentCount);
> >
> >  return ff_vk_decode_frame(avctx, pic->frame, vp, rav, rvp);
> >
>
> I don't agree with this, without this print,
> you have no idea if hardware decoding is even being used.

With this print you have no idea either. Unless you know only Vulkan
decoder prints those messages, (that alone is a reason to remove
them), there is nothing indicative about Vulkan or even hardware
decoding in those messages, AVClass item_name is just "h264".

[ffmpeg/video] h264: Decoding frame, 15808 bytes, 1 slices
[ffmpeg/video] h264: Decoding frame, 17203 bytes, 1 slices
[ffmpeg/video] h264: Decoding frame, 16862 bytes, 1 slices
[ffmpeg/video] h264: Decoding frame, 15989 bytes, 1 slices

Also debugging if something like hw decoding is working is precisely
AV_LOG_TRACE or AV_LOG_DEBUG, not AV_LOG_VERBOSE, which in my opinion
should be still useful information for the end user, not only for
tracing purposes. "Using Vulkan hwdec on device foo" can be printed
once at the beginning of decode... "Decoding frame" messages are in
general not useful at all.

> MP4 parsing is far too noisy than a single print per frame.

"They are bad, so I can be bad too." is non-argument. Also I don't see
exactly what you are referring to, in my experience MP4 is less noisy
than a "Decoding frame" per each frame. It really shadows valid
information in the log during decoding.

- Kacper


More information about the ffmpeg-devel mailing list