obs-deps icon indicating copy to clipboard operation
obs-deps copied to clipboard

deps.ffmpeg: Update SVT-AV1 to 3.0.0

Open RytoEX opened this issue 9 months ago • 4 comments

Description

Update SVT-AV1 to 3.0.0.

SVT-AV1 3.0.0 no longer vendors cpuinfo (see SVT-AV1 release notes and the commit in question). They now use CMake's FetchContent by default, unless we specify at configure time to use an external copy. This means that we cannot Patch cpuinfo before Configure.

If we determine that the patch is no longer required, then we can simply remove it.

If we determine that the patch is still required, then we have to either: A. upstream our patch, then get SVT-AV1 to update the commit they use for FetchContent B. figure out if we can use a SYSTEM/EXTERNAL cpuinfo C. disable cpuinfo (USE_CPUINFO=OFF)

Motivation and Context

Want to explore keeping dependencies up to date while managing our patches.

How Has This Been Tested?

Built locally on Windows 11, and I think I built OBS Studio against that though I do not have clear notes on it. I'd like further review to try to understand what choices we have for dealing with the new cpuinfo changes.

Types of changes

  • Tweak (non-breaking change to improve existing functionality)
  • Code cleanup (non-breaking change which makes code smaller or more readable)

Checklist:

  • [ ] My code has been run through clang-format.
  • [x] I have read the contributing document.
  • [x] My code is not on the master branch.
  • [x] The code has been tested.
  • [x] All commit messages are properly formatted and commits squashed where appropriate.
  • [x] I have included updates to all appropriate documentation.

RytoEX avatar Mar 03 '25 20:03 RytoEX

It looks like FFmpeg 7.1 doesn't support SVT-AV1 3.0.0, so this will have to wait for a future update. However, my questions about our cpuinfo patch remain, and we should probably think about those in advance.

RytoEX avatar Mar 03 '25 21:03 RytoEX

Apparently SVT-AV1 have no "deprecation then replace" process to prepare for some kind of API/ABI breakage.

https://github.com/FFmpeg/FFmpeg/commit/d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95

Edit: Got cherry-picked to 7.1 branch (https://github.com/FFmpeg/FFmpeg/commit/68b5db246407f0b0e398ce3b10ee57f738f0c524).

tytan652 avatar Mar 04 '25 06:03 tytan652

It looks like FFmpeg 7.1 doesn't support SVT-AV1 3.0.0, so this will have to wait for a future update. However, my questions about our cpuinfo patch remain, and we should probably think about those in advance.

I just checked their FetchContent implementation and also the commit of cpuinfo they use and indeed it seems as if the latter added first-class support for Visual Studio as a generator and for x86, x64, and several ARM64 variants, so the patch is not needed anymore.

PatTheMav avatar Mar 14 '25 20:03 PatTheMav

Will probably have to wait for a new stable tag of FFmpeg before we can merge this, but glad to have the review.

RytoEX avatar Mar 14 '25 20:03 RytoEX

Now that FFmpeg 7.1.1 has been merged, will this PR be reviewed?

Mine181 avatar May 31 '25 09:05 Mine181

Now that FFmpeg 7.1.1 has been merged, will this PR be reviewed?

No, because 7.1.1 does not contain the fix commit. We will re-review this when there is a stable tag that does.

RytoEX avatar May 31 '25 15:05 RytoEX

FFmpeg 8 and SVT 3.1 have been released, will this be reviewed?

Mine181 avatar Sep 05 '25 08:09 Mine181

FFmpeg 8 and SVT 3.1 have been released, will this be reviewed?

We're aware that FFmpeg 8 and SVT-AV1 3.1 have been released. However, we're in the middle of the OBS Studio 32.0 beta. Updates to obs-deps will be reviewed when that release cycle is complete and as time allows.

RytoEX avatar Sep 05 '25 16:09 RytoEX