[FFmpeg-devel] profile vs vprofile in 7.1?

Anton Khirnov anton at khirnov.net
Wed Oct 23 10:48:57 EEST 2024


Quoting Andrew Randrianasulu (2024-10-23 03:34:06)
> But then it turned out our vaapi/qsv profiles stopped working, anytime
> there was "profile=high" line.
> 
> Oh, dang.
> 
> Looked around and found this thread on Narkive
> 
> https://ffmpeg-user.ffmpeg.narkive.com/FRd15m7B/ffmpeg-1-0-null-0xcb4700-eval-0x7fff0d95cf00-undefined-constant-or-missing-in-wpred
> 
> replaced "profile" with "vprofile", now it appear to work again.
> 
> But this was a bit unexpected, I do not think both changes were mentioned
> as breaking in release notes?
> 
> It sort of sad to see this "hidden" breakage every release. Ffmpeg is not
> only library that does so, and tracking them all is not fun anymore.
> 
> If you can't avoid making breakage - put it up front in release notes, not
> hide it like in bad commercial advertisement.

"Breakage" is a tricky word, one person's new feature is another one's
breakage [1]. In general we do not guarantee that behaviour remains the
same between released versions (since that would effectively mean
freezing development), only that it is consistent with the public API
guarantees.

> First, vf_scale now declares dynamic input and was filtered out by code
> in  cinelerra/pluginfclient.C
> 
> int flag_mask = AVFILTER_FLAG_DYNAMIC_INPUTS |
> AVFILTER_FLAG_DYNAMIC_OUTPUTS;
>    if( filter->flags & flag_mask ) return AVERROR(EPERM);

Sorry, but that one's on you. Nobody ever promised that the scale filter
(or any other filter, for that matter) won't gain dynamic inputs or
outputs. And this change actually is mentioned in the changelog.

If you want to enforce filters having the right input or output count,
the correct place is after initializing them.

> But then it turned out our vaapi/qsv profiles stopped working, anytime
> there was "profile=high" line.
> 
> Oh, dang.
> 
> Looked around and found this thread on Narkive
> 
> https://ffmpeg-user.ffmpeg.narkive.com/FRd15m7B/ffmpeg-1-0-null-0xcb4700-eval-0x7fff0d95cf00-undefined-constant-or-missing-in-wpred
> 
> replaced "profile" with "vprofile", now it appear to work again.

Hard to tell what the problem is, since you don't give any details, but
I highly suspect the change does not do what you think it does.
'vprofile' is obsolete ffmpeg CLI syntax, it does not exist when using
the libraries directly. I'd guess your 'vprofile' gets silently ignored
since you do not check the options dictionary after avcodec_open2()
returns.

[1] https://xkcd.com/1172/

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list