[FFmpeg-devel] [PATCH] avfilter: Temporary hack to fix format negotiation for hw formats

Xiang, Haihao haihao.xiang at intel.com
Thu Jan 4 06:01:56 EET 2024


On Wo, 2024-01-03 at 20:46 +0000, Mark Thompson wrote:
> hw_frames_ctx on the input link is only set when the input link is
> configured, which hasn't happened yet.  This temporarily hacks around
> the problem (in a way no worse than before the format negotiation
> changes) until a proper fix can be applied.
> ---
> Suggested full fix is to carry sw_format through the format negotiation
> separately so that we don't need hw_frames_ctx to be set (which also has other
> benefits like hwdownload being able to set its output format).
> 
> This hack is needed until that is ready because all hw formats are broken
> right now.
> 
> 
>   libavfilter/avfiltergraph.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
> index 727eff81ee..bc503f6ebe 100644
> --- a/libavfilter/avfiltergraph.c
> +++ b/libavfilter/avfiltergraph.c
> @@ -667,8 +667,11 @@ static int pick_format(AVFilterLink *link, AVFilterLink
> *ref)
>       if (link->type == AVMEDIA_TYPE_VIDEO) {
>           enum AVPixelFormat swfmt = link->format;
>           if (av_pix_fmt_desc_get(swfmt)->flags & AV_PIX_FMT_FLAG_HWACCEL) {
> -            av_assert1(link->hw_frames_ctx);
> -            swfmt = ((AVHWFramesContext *) link->hw_frames_ctx->data)-
> >sw_format;
> +            // FIXME: this is a hack to work around hw_frames_ctx not yet
> +            // being available to return the real sw_format.  Once that is
> +            // fixed, this should instead be:
> +            // swfmt = ((AVHWFramesContext *) link->hw_frames_ctx->data)-
> >sw_format;
> +            swfmt = AV_PIX_FMT_YUV420P;
>           }
> 
>           if (!ff_fmt_is_regular_yuv(swfmt)) {

It works for me, the issue I mentioned in
https://ffmpeg.org/pipermail/ffmpeg-devel/2024-January/319235.html disappears
after applying your patch.

BRs
Haihao


More information about the ffmpeg-devel mailing list