Builder ffmpegsos-solaris10-sparc Build #13725
Results:
Failed shell_2 shell_3 shell_4 shell_5
SourceStamp:
| Project | ffmpeg |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Branch | master |
| Revision | d43b1efd2e948f44cfac91f7a4325a3d927d6718 |
| Got Revision | d43b1efd2e948f44cfac91f7a4325a3d927d6718 |
| Changes | 484 changes |
BuildSlave:
unstable10sReason:
The SingleBranchScheduler scheduler named 'schedule-ffmpegsos-solaris10-sparc' triggered this build
Steps and Logfiles:
-
git update ( 3 mins, 11 secs )
-
shell 'gsed -i ...' ( 11 secs )
-
shell_1 'gsed -i ...' ( 1 secs )
-
shell_2 'gsed -i ...' failed ( 1 secs )
-
shell_3 './configure --samples="../../../ffmpeg/fate-suite" ...' failed ( 11 secs )
-
shell_4 'gmake fate-rsync' failed ( 0 secs )
-
shell_5 '../../../ffmpeg/fate.sh ../../../ffmpeg/fate_config_sos.sh' failed ( 0 secs )
Build Properties:
| Name | Value | Source |
|---|---|---|
| branch | master | Build |
| builddir | /export/home/buildbot-unstable10s/slave/ffmpegsos-solaris10-sparc | slave |
| buildername | ffmpegsos-solaris10-sparc | Builder |
| buildnumber | 13725 | Build |
| codebase | Build | |
| got_revision | d43b1efd2e948f44cfac91f7a4325a3d927d6718 | Git |
| project | ffmpeg | Build |
| repository | https://git.ffmpeg.org/ffmpeg.git | Build |
| revision | d43b1efd2e948f44cfac91f7a4325a3d927d6718 | Build |
| scheduler | schedule-ffmpegsos-solaris10-sparc | Scheduler |
| slavename | unstable10s | BuildSlave |
| workdir | /export/home/buildbot-unstable10s/slave/ffmpegsos-solaris10-sparc | slave (deprecated) |
Forced Build Properties:
| Name | Label | Value |
|---|
Responsible Users:
- Andreas Rheinhardtandreas.rheinhardt@outlook.com
- Anxious Koisiddoaoing@gmail.com
- Araz IusubovPrimeadvice@gmail.com
- Charly Morgand-Poyaccharly.morgand-poyac@bbright.com
- Christopher Deckerchris.decker08@gmail.com
- Cloud-LHYsecurity@clouditera.com
- David Roscadavid.rosca@amd.com
- Diego de Souzaddesouza@nvidia.com
- Frank Plowmanpost@frankplowman.com
- Guo Yejunyejun.guo@intel.com
- Hans-Kristian Arntzenpost@arntzen-software.no
- Hunter Kvalevoghunter@kvog.sh
- Jack Laujacklau1222gm@gmail.com
- Jamaika1lukaszcz18@wp.pl
- James Almerjamrial@gmail.com
- Jiale Yaoyaojiale02@163.com
- Julius Bairaktarisjulius@bairaktaris.de
- Jun Zhaobarryjzhao@tencent.com
- Kacper Michajłowkasper93@gmail.com
- KawaiiEngine (Sashimiso)209421934+KawaiiEngine@users.noreply.github.com
- Kenan Alghytheekalghy2@uic.edu
- Kirill A. Korinskykirill@korins.ky
- Leo Izenleo.izen@gmail.com
- Lynnedev@lynne.ee
- Marcos Ashton Iglesiasmarcosashiglesias@gmail.com
- Martin Storsjömartin@martin.st
- Marvin Scholzepirat07@gmail.com
- Michael Niedermayermichael@niedermayer.cc
- Mirkó Visontaimirkov@google.com
- Nathan Lucasnlucasgit@gmail.com
- Nicolas Georgegeorge@nsup.org
- Niklas Haasgit@haasn.dev
- Nil Fons Miretnilf@netflix.com
- Omkhar Arasaratnamomkhar@linkedin.com
- Pavel Kohoutdisclosure@aisle.com
- Philip Langdalephilipl@overt.org
- Raja-89imraja729@gmail.com
- Ramiro Pollaramiro.polla@gmail.com
- Romain Beauxisromain.beauxis@gmail.com
- Shreesh Adiga16567adigashreesh@gmail.com
- StachowiakDawiddawidos234@gmail.com
- Steven Liulq@chinaffmpeg.org
- Thomas Guilberttguilbert@chromium.org
- Timo Rothenpielertimo@rothenpieler.org
- Tobias Rappt.rapp@noa-archive.com
- Tristan Matthewstmatth@videolan.org
- Vignesh Venkatvigneshv@google.com
- Vladimir Panteleevgit@cy.md
- Vladimir Panteleevgit@thecybershadow.net
- Zhao Zhiliquinkblack@foxmail.com
- Zhao Zhilizhilizhao@tencent.com
- Zuxy Mengzuxy.meng@gmail.com
- deng.zewendeng.zewen@zte.com.cn
- lckluckysk@foxmail.com
- marcos ashtonmarcosashiglesias@gmail.com
- sfan5sfan5@live.de
- tknaveenunbornboron69@gmail.com
- wang-binwbsecg1@gmail.com
- wangbinwbsecg1@gmail.com
- younengxiaosteven.xiao@amd.com
- zhanghongyuanzhanghongyuan@uniontech.com
- 张永鹏roc63@outlook.com
Timing:
| Start | Wed Jul 29 11:29:36 2026 |
| End | Wed Jul 29 11:33:15 2026 |
| Elapsed | 3 mins, 38 secs |
All Changes:
:
Change #273322
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Tue 30 Jun 2026 10:23:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ae4314e2f4618b8b4d36864fdacc03ea0e85a1f6 Comments
tests: Implicitly set TAG=GEN for data/*.m3u8 This avoids having to declare it for every rule that generates test input data, and adds such a missing tag for tests/data/hls-seek.m3u8. This fixes a case of a missing TAG for data/hls-seek.m3u8, which caused it to be printed without a tag, like " tests/data/hls-seek.m3u8", now printed as "GEN tests/data/hls-seek.m3u8" as expected.
Changed files
- tests/Makefile
- tests/fate/filter-audio.mak
- tests/fate/hlsenc.mak
- tests/fate/segment.mak
Change #273348
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 30 Jun 2026 13:05:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 59a5090070d094029cc328f6160b87a9f214c01d Comments
avfilter/af_adeclick: free transform contexts and buffers on error Found-by: Ao Xijie Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/af_adeclick.c
Change #273349
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 30 Jun 2026 13:15:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9a01c1cb6a4cf87529fe9898b66ec55c5b032639 Comments
avfilter/vf_removelogo: free the whole mask on allocation failure Found-by: Ao Xijie Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/vf_removelogo.c
Change #273391
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 30 Jun 2026 19:29:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b553b810c460e484f70a7368ed7abbdcecbe845b Comments
avformat/movenc: free sgpd_entries on the roll-distance error path Found-by: Ao Xijie Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/movenc.c
Change #273407
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 30 Jun 2026 22:50:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f0bfebc9adce90d7c3d44f1a081a705389995b34 Comments
avcodec/x86/hevc/add_res: Port ff_hevc_add_residual_4_8_mmxext to SSE2 No change in performance here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/hevc/add_res.asm
- libavcodec/x86/hevc/dsp.h
- libavcodec/x86/hevc/dsp_init.c
Change #273433
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 01 Jul 2026 03:19:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b1327568b6cd5b244e4ed0488ee1ed645ac4a552 Comments
avformat/movenc: unify remainder samples signaling When writing edit lists and the last packet has skip samples side data to report discard padding, for codecs that have a fixed frame size it's best to always use the full packet duration to calculate track duration (and thus bitrate in some cases) and let the edit list be the sole source of triming information. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/movenc.c
- tests/ref/fate/autorotate
- tests/ref/fate/mov-mp4-iamf-5_1_4
- tests/ref/fate/mov-mp4-iamf-7_1_4-video-first
- tests/ref/fate/mov-mp4-iamf-7_1_4-video-first-2
- tests/ref/fate/mov-mp4-iamf-7_1_4-video-first-3
- tests/ref/fate/mov-mp4-iamf-7_1_4-video-last
- tests/ref/fate/mov-mp4-iamf-ambisonic_1
- tests/ref/fate/mov-mp4-iamf-stereo
Change #273434
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 01 Jul 2026 03:48:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d5a2ab9c08980b74dce93f55da9d95a7eefef11d Comments
checkasm/sw_rgb: fix too small source stride in uyvytoyuv422 test The planes table stored a source stride smaller than the 2*width bytes a packed UYVY line occupies (e.g. width 12 with stride 12), and the correct stride for width 128 would be 256, which does not even fit the uint8_t field. The test passed only because the oversized source buffer absorbed the resulting out-of-bounds reads. Derive srcStride from the width (2*width) instead of storing it, so each line is passed its true size. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- tests/checkasm/sw_rgb.c
Change #273435
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 01 Jul 2026 03:48:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ef18ece3f0cc7297b08918d3d242ad3eca3021ce Comments
checkasm/sw_rgb: test uyvytoyuv422 with odd widths The SIMD uyvytoyuv422 implementations only handled even widths correctly. Add odd width and 1x1 entries so the trailing column handling is exercised against the C reference. An odd width reads one source byte more than 2*width, the V sample at src[2w], so the stride is extended by one for odd widths. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- tests/checkasm/sw_rgb.c
Change #273436
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 01 Jul 2026 03:48:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 48f30aa08c473fb034f0a43313ad566a1ea7a3ed Comments
checkasm/sw_rgb: also test yuyvtoyuv422 yuyvtoyuv422 reads the trailing odd V sample at src[2w+1], one byte further than uyvytoyuv422, so the number of extra source bytes an odd width needs is passed in per format (1 for UYVY, 2 for YUYV) and added to the stride. uyvytoyuv420 and yuyvtoyuv420 are intentionally not added: their x86 mmxext chroma averaging uses PAVGB rounding and so is not bit-exact with the C reference, which truncates, so they cannot be verified this way. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- tests/checkasm/sw_rgb.c
Change #273438
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 05:03:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fad1db043d45d4d3cc482934ac6cd579f556a6e8 Comments
swscale/format: Build ff_sws_chroma_pos() even without CONFIG_UNSTABLE It is used in add_legacy_sws_pass() in graph.c. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswscale/format.c
Change #273439
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 05:03:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0002cf3ba1ee55e70381b9fa0b445c9a356573cc Comments
swscale/Makefile: Mark sws_ops* test tools as requiring CONFIG_UNSTABLE Fixes "make testprogs" with --disable-unstable Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswscale/Makefile
Change #273440
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 05:03:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fc7a984aae0b44c722d3977bb04c1d5037a3892c Comments
swscale/graph: Remove ff_sws_graph_create() Unused since 9fe0ff3d56618c24d95fa4e832148bab54928f18. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- doc/swscale-v2.txt
- libswscale/graph.c
- libswscale/graph.h
Change #273441
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 05:03:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 66d9b8e483738cd6b4c5ec3e4a5b4687512a5274 Comments
swscale/ops_chain: Disable ff_sws_setup_{clear,clamp,scale} They are only used on aarch64. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libswscale/ops_chain.c
Change #273494
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1298ce9eda515b718a77e9a77bbe1f5d434b1408 Comments
aacenc_tns: reengineer coefficient derivation The TNS tool needed a full rewrite. 1.) PNS cannot be used with M/S or I/S or TNS. The coding tools interfere with one another. 2.) The coeffs were windowed, which was wrong. 3.) The applied filter did not match what the spec required.
Changed files
- libavcodec/aacenc_tns.c
- libavcodec/lpc.c
- libavcodec/lpc.h
Change #273495
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d1943afbb787955db996ae7f2254f2d9f22d35f9 Comments
aaccoder: add NMR-based coder
Changed files
- libavcodec/aaccoder.c
- libavcodec/aaccoder_nmr.h
- libavcodec/aaccoder_twoloop.h
- libavcodec/aacenc.c
- libavcodec/aacenc.h
- libavcodec/aacencdsp.c
- libavcodec/aacencdsp.h
- libavcodec/aacpsy.c
- libavcodec/psymodel.c
- libavcodec/psymodel.h
Change #273496
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2fe4a916691a22990a7168d5587e6224b2051469 Comments
aacenc: report coding tool stats at uninit Useful for debugging.
Changed files
- libavcodec/aacenc.c
- libavcodec/aacenc.h
Change #273497
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 06e949e45de3dd8f8680e7a290a0e947808f8bd2 Comments
aacpsy: pre-echo-aware short-block detection for isolated onsets The LAME attack detector high-pass filters at fs/4 before measuring attack intensity, so the gentler attacks of tonal material (piano, plucked strings) fall below the threshold and stay in long blocks, smearing pre-echo across the quiet gap before the note. Relax the attack threshold for an isolated onset, preceded by PSY_LAME_PE_GAP long frames with a near-silent pre-onset sub-block (< PSY_LAME_PE_QUIET of the frame peak), so it switches to short blocks.
Changed files
- libavcodec/aacpsy.c
Change #273498
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0efac66e7e75aabd26ee63c16c6a198337334b0e Comments
aacenc: use the NMR coder by default The old coders will soon be removed.
Changed files
- libavcodec/aaccoder.c
- libavcodec/aacenc.c
Change #273499
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 38161819e7ab6fea011aa0c310f863ba2ba4f457 Comments
fate: update AAC encoder tests
Changed files
- tests/fate/aac.mak
- tests/ref/fate/generic-tags-remux-mov
Change #273500
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Wed 01 Jul 2026 14:12:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a974a54486c865b4482139ec55df8a04861ae9e3 Comments
avfilter: add less confusing error on frame queue overflow Currently, such filter graphs just fail with a nebulous: [fc#0 @ 0x2a7b3c0] [error] Error while filtering: Cannot allocate memory Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/avfilter.c
Change #273502
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Wed 01 Jul 2026 14:24:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1dd71edca3127c38bdd70cbaf0cb63abd5b7d2a Comments
configure: Add a dependency on user32 to the gfxcapture filter This filter uses a bunch of user32 functions, like GetMessage, DispatchMessage, PeekMessage, GetWindowRect, etc. This makes it clear that if the gfxcapture filter is built, we need to link user32, if other components that depend on user32 would happen to be disabled. Separately, if targeting UWP (with -DWINAPI_FAMILY=WINAPI_FAMILY_APP) then these user32 APIs are unavailable. We have an existing configure check for user32, checking for the GetShellWindow function. This function isn't used by gfxfilter, but its availability on UWP matches the other functions that gfxfilter uses. This fixes builds for UWP, by excluding the gfxcapture filter. (This is somewhat ironic, as the gfxcapture filter uses "winrt" APIs - but the implementation of the filter also relies on lots of APIs that are unavailable in UWP/"winrt".)
Changed files
- configure
Change #273512
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 14:38:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d936a51b270c8a9125469527f59c211a9b116fe0 Comments
libavcodec/Makefile: add aaccoder_nmr.h to SKIPHEADERS
Changed files
- libavcodec/Makefile
Change #273542
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 01 Jul 2026 18:14:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e2e889d9da7c065009198e3cc7b97cc1c47895f8 Comments
aacenc: reduce automatic cutoffs at high rates by 2Khz We were spending too many bits coding useless junk.
Changed files
- libavcodec/aacenc.c
Change #273545
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 01 Jul 2026 18:52:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d7d2d9d539e469c64f4a386d73dacc0c2371c501 Comments
tests/fate/generic-tags: use ac3_fixed encoder instead of float aac There's no guarantee the aac encoder will be bitexact in its output across platforms. Use ac3_fixed instead of aac_fixed while at it, so the aac encoder can get improvements without affecting this test. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/generic-tags.mak
- tests/ref/fate/generic-tags-remux-mov
Change #273563
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 01 Jul 2026 19:35:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a693a4cd802d33d9994761a8c7c8b69d9f913d17 Comments
tests/fate/generic-tags: use codec copy instead of encoding Using ac3_fixed output was not enough as there's float to int conversion due to the fact the mp3float decoder is used. Instead of playing with codec combinations, just remove encoding from the test altogheter. Mov supports muxing mp3 just fine. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/generic-tags.mak
- tests/ref/fate/generic-tags-remux-mov
Change #273589
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 296d86c8bb7ce097cbfd8151bcf713de00b8a6a5 Comments
tests/checkasm/vc1dsp: Improve mspel test Up until now, only the fullpel test (i.e. the test without pixel interpolation) has been tested at all. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/vc1dsp.c
Change #273590
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b122b918eb8a7b0d1966da33e5f340f5281b8d89 Comments
avcodec/x86/vc1dsp_mc: Remove unnecessary movsxdifnidn Forgotten in 5a49097b42cbc3eab888d15a91eeaf5520b5c381 merging Libav commit 2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428 (which changed the stride to ptrdiff_t). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_mc.asm
Change #273591
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 45c41d1d1b13db78ea3fee515bb5aafa9e3d7526 Comments
tests/checkasm/vc1dsp: Fix shadowing Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/vc1dsp.c
Change #273592
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f5b8a15b61bdf5cd18202a45010fcc2b67ee8d6e Comments
avcodec/x86/vc1dsp_mc: Move inverse transform into a file of its own Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/Makefile
- libavcodec/x86/vc1dsp_inv_trans.asm
- libavcodec/x86/vc1dsp_mc.asm
Change #273593
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fd711adcb61e2b2e9c6a8bef2006f9e00e84ab35 Comments
avcodec/x86/vc1dsp_mc: Add size 8 horizontal SSSE3 mc functions pmaddubsw strikes again. vc1dsp.avg_vc1_mspel_pixels_tab_mc10_8_c: 150.2 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc10_8_mmxext: 44.5 ( 3.38x) vc1dsp.avg_vc1_mspel_pixels_tab_mc10_8_ssse3: 18.5 ( 8.12x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_8_c: 288.2 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_8_mmxext: 37.7 ( 7.64x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_8_ssse3: 18.1 (15.97x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_8_c: 155.4 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_8_mmxext: 46.5 ( 3.34x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_8_ssse3: 18.1 ( 8.60x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_8_c: 282.2 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_8_mmx: 42.7 ( 6.61x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_8_ssse3: 16.4 (17.16x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_8_c: 223.4 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_8_mmx: 36.3 ( 6.15x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_8_ssse3: 16.4 (13.59x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_8_c: 255.2 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_8_mmx: 43.6 ( 5.85x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_8_ssse3: 16.4 (15.52x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_mc.asm
Change #273594
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3354cbf1b76ff687cae4852fc15b6174c4e36b48 Comments
avcodec/x86/vc1dsp_mc: Add size 16 horizontal SSSE3 mc functions vc1dsp.avg_vc1_mspel_pixels_tab_mc10_16_c: 309.1 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc10_16_mmxext: 177.3 ( 1.74x) vc1dsp.avg_vc1_mspel_pixels_tab_mc10_16_ssse3: 52.3 ( 5.91x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_16_c: 279.6 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_16_mmxext: 148.8 ( 1.88x) vc1dsp.avg_vc1_mspel_pixels_tab_mc20_16_ssse3: 52.1 ( 5.37x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_16_c: 332.6 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_16_mmxext: 177.3 ( 1.88x) vc1dsp.avg_vc1_mspel_pixels_tab_mc30_16_ssse3: 52.5 ( 6.33x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_16_c: 288.8 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_16_mmx: 170.3 ( 1.70x) vc1dsp.put_vc1_mspel_pixels_tab_mc10_16_ssse3: 51.3 ( 5.63x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_16_c: 236.2 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_16_mmx: 144.1 ( 1.64x) vc1dsp.put_vc1_mspel_pixels_tab_mc20_16_ssse3: 51.3 ( 4.61x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_16_c: 286.6 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_16_mmx: 170.1 ( 1.69x) vc1dsp.put_vc1_mspel_pixels_tab_mc30_16_ssse3: 51.2 ( 5.60x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_mc.asm
Change #273595
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4e05d94424a6c41e3b6e4d9a949faf13c9ce9fc1 Comments
avcodec/x86/vc1dsp_mmx: Remove purely horizontal MMX mc functions Superseded by SSSE3. By the way, the SSSE3 functions occupy 816B, but the functions removed now occupied 2304B with GCC and 6512B with Clang (which inlined everything). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_mmx.c
Change #273596
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b0d5914678ab9f7b610b01170fddb8bc83a383d8 Comments
avcodec/x86/vc1dsp_mc: Add size 8 vertical SSSE3 mc functions vc1dsp.avg_vc1_mspel_pixels_tab_mc01_8_c: 165.6 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc01_8_mmxext: 44.4 ( 3.73x) vc1dsp.avg_vc1_mspel_pixels_tab_mc01_8_ssse3: 18.5 ( 8.97x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_8_c: 152.5 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_8_mmxext: 37.3 ( 4.09x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_8_ssse3: 18.5 ( 8.25x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_8_c: 162.9 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_8_mmxext: 44.1 ( 3.69x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_8_ssse3: 18.3 ( 8.88x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_8_c: 150.5 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_8_mmx: 42.4 ( 3.55x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_8_ssse3: 16.5 ( 9.11x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_8_c: 78.4 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_8_mmx: 36.1 ( 2.17x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_8_ssse3: 16.5 ( 4.76x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_8_c: 144.7 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_8_mmx: 42.6 ( 3.40x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_8_ssse3: 16.3 ( 8.89x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_mc.asm
Change #273597
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a619524605fcf2d8afe3f88ecab433c107fdad47 Comments
avcodec/x86/vc1dsp_mc: Don't xor unnecessarily m0 is not used at all in this function. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_mc.asm
Change #273598
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bafcf7b73f48c978e2abc897e14078faa059b6ca Comments
avcodec/x86/vc1dsp_mc: Add size 16 vertical SSSE3 mc functions vc1dsp.avg_vc1_mspel_pixels_tab_mc01_16_c: 334.4 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc01_16_mmxext: 177.5 ( 1.88x) vc1dsp.avg_vc1_mspel_pixels_tab_mc01_16_ssse3: 52.3 ( 6.40x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_16_c: 306.9 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_16_mmxext: 149.2 ( 2.06x) vc1dsp.avg_vc1_mspel_pixels_tab_mc02_16_ssse3: 52.2 ( 5.88x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_16_c: 334.2 ( 1.00x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_16_mmxext: 176.5 ( 1.89x) vc1dsp.avg_vc1_mspel_pixels_tab_mc03_16_ssse3: 51.9 ( 6.44x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_16_c: 311.9 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_16_mmx: 169.8 ( 1.84x) vc1dsp.put_vc1_mspel_pixels_tab_mc01_16_ssse3: 51.6 ( 6.04x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_16_c: 279.3 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_16_mmx: 144.1 ( 1.94x) vc1dsp.put_vc1_mspel_pixels_tab_mc02_16_ssse3: 51.7 ( 5.40x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_16_c: 310.6 ( 1.00x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_16_mmx: 171.0 ( 1.82x) vc1dsp.put_vc1_mspel_pixels_tab_mc03_16_ssse3: 51.6 ( 6.02x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_mc.asm
Change #273599
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 01 Jul 2026 20:00:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4c6e8fdbf6408c29cc871dcd08767962ec9ca184 Comments
avcodec/x86/vc1dsp_mmx: Remove purely vertical MMX mc functions They have been superseded by SSSE3. Notice that the functions removed occupied 3424B with GCC and 6176B with Clang here, whereas the SSSE3 functions replacing them occupy only 944B. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_mmx.c
Change #273628
Category ffmpeg Changed by Thomas Guilbert <tguilbert@chromium.org> Changed at Thu 02 Jul 2026 04:49:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f956c41d7b2ecb5802a24dfe158d319b71c8a95a Comments
Guard against loop underflow This commits adds an early returns if `len <= pred_order` for RISC-V architectures, matching the logic on other architectures.
Changed files
- libavcodec/riscv/flacdsp_rvv.S
Change #273629
Category ffmpeg Changed by Thomas Guilbert <tguilbert@chromium.org> Changed at Thu 02 Jul 2026 04:49:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b3fb13e8dd6ef2451acaffbe84f178d859f50f68 Comments
Guard lpc methods in flacdsp and add tests This commit adds additional guards for the RISC-V lpc variants. It also adds tests to exercise the guarded paths in checkasm/flacdsp.c.
Changed files
- libavcodec/riscv/flacdsp_rvv.S
- tests/checkasm/flacdsp.c
Change #273630
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 02 Jul 2026 04:57:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 053b2d18fa6714e927dbe8afcf5bc6fd9a9c6a05 Comments
avcodec/aacenc: export discard padding side data when needed This is in line with other encoders, and is needed by the matroska muxer to properly signal end trimming samples. gaplessenc-pcm-to-mov-aac changes as the mov muxer now uses this information when writing the edit list, so the shorter frame duration is not needed. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/aacenc.c
- tests/ref/fate/gaplessenc-pcm-to-mov-aac
Change #273631
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Thu 02 Jul 2026 05:16:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0dac41d2e5e0f4251ed89eedb03a847d5d59ef67 Comments
avfilter/boxblur: reject pixel formats deeper than 16 bits Fixes: heap buffer overflow Fixes: CRufFb6TVikL Fixes: dee7440531 (vf_boxblur: Templatize blur{8,16}) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>Changed files
- libavfilter/vf_boxblur.c
Change #273643
Category ffmpeg Changed by wangbin <wbsecg1@gmail.com> Changed at Thu 02 Jul 2026 09:34:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d9caf5e873722a5bbbd2facacdb67fab6878c4bd Comments
lavu: monotonic av_gettime_relative for msvc
Changed files
- libavutil/time.c
Change #273648
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c5591a91ebb8ab107b136b3790cab771cba896c9 Comments
cbs_apv: relax minimum tile-sizes APV currently specifies a very large minimum tile size. Just relax it until the spec is amended.
Changed files
- libavcodec/cbs_apv_syntax_template.c
Change #273649
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 876d10f68346f7c1d4efcdb73e06cb4545ea0528 Comments
lavc/apv_encode_vulkan: add a Vulkan APV encoder This commit adds a compliant Vulkan compute APV encoder.
Changed files
- configure
- libavcodec/Makefile
- libavcodec/allcodecs.c
- libavcodec/apv_encode_vulkan.c
- libavcodec/vulkan/Makefile
- libavcodec/vulkan/apv_encode_dct.comp.glsl
- libavcodec/vulkan/apv_encode_tiles.comp.glsl
- libavcodec/vulkan/seg_gather.comp.glsl
Change #273650
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision adfa2e3255477213d292590d1489c53c01c443d3 Comments
vulkan_decode: drop ff_vk_decode_prepare_frame_sdr, use exec owned views For SDR codecs, we have zero dependency on the images we decode. So using the same scheme as the software code led us to needing unnecessarily to block on a semaphore wait. Instead of doing this, just make the imageviews a dependency of the exec context. Saves on CPU, matters particularly for very fast decoding speeds. FFv1 gets a slight workaround that's still better than what we did before.
Changed files
- libavcodec/vulkan_apv.c
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_decode.h
- libavcodec/vulkan_dpx.c
- libavcodec/vulkan_ffv1.c
- libavcodec/vulkan_prores.c
- libavcodec/vulkan_prores_raw.c
Change #273651
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d040f5d9857af76d3cad3ae679c66e0377ef728f Comments
ffv1enc_vulkan: gather slices on the GPU, drop the transfer copy Uses the gather shader from the APV encoder to copy the packet data on the GPU with a second pass. Replace all of that with a seg_gather compute dispatch in the same submission as the encode. It packs the per-slice slots tight and in order into a contiguous host-visible buffer, so the final packet is just the sum of the per-slice sizes and the gathered buffer is handed straight to pkt->buf with no extra submit, no copy, no CPU involvement. The slots are sized with the version-4 worst-case formula (the realistic lossless bound, ~17x tighter than the version-3 budget this encoder never approaches; the emitted bitstream version is unchanged) and rounded down to a 16-byte multiple so the gather reads them with aligned wide loads. Removes the transfer queue family, its exec pool, and the buf_regions scratch array.
Changed files
- libavcodec/ffv1enc_vulkan.c
- libavcodec/vulkan/Makefile
Change #273652
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5784a775dfbabada9b589f289987a2beef7a9071 Comments
vulkan/prores_raw: reconstruct DC values in 32-bit DCs can go over int16_t, and when it does, dc_add wraps, so the wrong sign is reported, which causes errors when decoding more DCs. Do the prediction in int and narrow to int16 only at store time. The read_ac_vals() sign change is cosmetic (the value is only ever 0/-1, and the old code already widened it).
Changed files
- libavcodec/vulkan/prores_raw_decode.comp.glsl
Change #273653
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8d433a5b4d325807fb049668dddf15f27c2ccaf1 Comments
avcodec/vulkan_apv: store coefficients in a flat buffer, not the image The entropy pass wrote each decoded coefficient into the output image as 16-bit scratch, then the iDCT pass read it back, dequantised it and overwrote the same texel with the final pixel. Routing the coefficients through the image couples the two passes to the image layout and forces the entropy shader to address the descriptor-indexed image. Add a dedicated device-local int16 buffer instead: the entropy shader writes coefficients into it (one plane per component, MB-aligned coded size) and the iDCT reads them, so the image is written exactly once, by the iDCT. The buffer is zero-filled before the entropy dispatch so blocks with no coded coefficients read as zero, and the decode->iDCT hand-off becomes a buffer barrier. The output image is still cleared so any padding the iDCT does not cover stays zero.
Changed files
- libavcodec/vulkan/apv_decode.comp.glsl
- libavcodec/vulkan/apv_idct.comp.glsl
- libavcodec/vulkan_apv.c
Change #273654
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9872cb8c0e908db9dd2d834799e4e0de23f75bc0 Comments
avcodec/vulkan_apv: decode VLC codes branchlessly from a single window apv_read_vlc() dispatched on the three APV code layouts with two data- dependent branches and, for the long form, a second show/skip. The longest legal code plus its optional sign bit fits in a single 32-bit window, so compute all three candidate (value, length) pairs unconditionally and select with no divergent branches: one show_bits(32) and one skip_bits per code. apv_read_vlc_sign() additionally folds the trailing sign bit into the same window, removing the separate get_bit() refill that DC and AC levels did. Clamps on the long-form length guard corrupt streams without affecting legal decodes.
Changed files
- libavcodec/vulkan/apv_decode.comp.glsl
Change #273655
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:45:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ae25ca0b3677c3f9ff8c3b5fed78f987b7e10944 Comments
avcodec/vulkan_apv: replace the iDCT tile-position search with a division The iDCT located its tile by linearly scanning the tile column/row start tables. The APV tile grid is uniform-sized columns and rows with a single remainder tile at each edge, so the tile index is just the luma position divided by the (constant) first step, clamped to the last tile. Single column/row grids have no step to read and resolve to index 0.
Changed files
- libavcodec/vulkan/apv_idct.comp.glsl
Change #273656
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:47:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bb4eb89e1d1069ebddaa49302025f4f216d2b1e7 Comments
Changelog: add new AAC encoder improvements to the changelog
Changed files
- Changelog
Change #273657
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 09:48:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f8389eae8782f815158812de49e83d579979a814 Comments
Changelog: add APV Vulkan encoder to the changelog
Changed files
- Changelog
Change #273658
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 10:05:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 88c6409a0a8438a8f82df7a459a5179420423333 Comments
avcodec/version: bump minor for recent APV Vulkan encoder and AAC encoder Helps identify what encoder users are using via a log.
Changed files
- libavcodec/version.h
Change #273659
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 10:32:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5ffea4c6f148dfac48aa353b0e63dd284158f6fe Comments
aacenc: at 192kbps per channel, code the full spectrum Better to be safer than usual, since the signal contains literally no audible data, and is so expensive to code, the coder itself is very reluctant to do so except at very high rates.
Changed files
- libavcodec/aacenc.c
Change #273665
Category ffmpeg Changed by Shreesh Adiga <16567adigashreesh@gmail.com> Changed at Thu 02 Jul 2026 11:03:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 915bac7bdc89317b85dc19e9cf6e7aed99be2e68 Comments
avutil/crc: add aarch64 hybrid crc32 NEON PMULL+EOR SIMD implementation Adding crc32 specialization for aarch64 which uses both PMULL and crc32 instructions to perform 192 bytes fold in one iteration, performing 9x PMULL and 6 crc32 in one loop iteration, obtaining higher performance for large inputs >8kB. This approach is based on zlib-ng implementation which is also described at https://github.com/corsix/fast-crc32. For smaller buffer size, it was observed to be slightly slower, thus only for input size >8192 this logic is used, for smaller sizes otherwise the 4x PMULL folding method is used along with scalar crc32 instructions for processing the remainder input size. On a MediaTek Dimensity 9400 Android device in termux environment, with normal checkasm seed 0 which picks random buffer size and max buffer size of 16kB, the data observed on Cortex X925, A720 and X4: X925 Before: crc_32_IEEE_LE_c: 12762.0 crc_32_IEEE_LE_crc: 667.5 (19.11x) crc_32_IEEE_LE_pmull_eor3: 346.9 (26.30x) X925 After: crc_32_IEEE_LE_c: 12707.6 crc_32_IEEE_LE_crc: 665.2 (19.10x) crc_32_IEEE_LE_pmull_eor3: 292.8 (41.90x) A720 Before: crc_32_IEEE_LE_c: 23059.1 crc_32_IEEE_LE_crc: 1220.7 (18.89x) crc_32_IEEE_LE_pmull_eor3: 1198.9 (19.23x) A720 After: crc_32_IEEE_LE_c: 23293.3 crc_32_IEEE_LE_crc: 1209.1 (19.26x) crc_32_IEEE_LE_pmull_eor3: 1150.4 (20.24x) X4 Before: crc_32_IEEE_LE_c: 12405.5 crc_32_IEEE_LE_crc: 664.5 (18.67x) crc_32_IEEE_LE_pmull_eor3: 498.1 (24.90x) X4 After: crc_32_IEEE_LE_c: 12457.2 crc_32_IEEE_LE_crc: 665.5 (18.72x) crc_32_IEEE_LE_pmull_eor3: 468.8 (26.57x) So it seems to work well on high performance core like X925, and results in about 20% better performance, while having tiny gains on other cores. Testing for input size of 160 kB after modifying the checkasm crc test to have buffer size increased to 160kB and always using full capacity instead of a random size results in below observations: X925 Before: crc_32_IEEE_LE_c: 210177.1 crc_32_IEEE_LE_crc: 10313.7 (20.35x) crc_32_IEEE_LE_pmull_eor3: 6580.9 (31.83x) X925 After: crc_32_IEEE_LE_c: 210869.3 crc_32_IEEE_LE_crc: 10304.8 (20.36x) crc_32_IEEE_LE_pmull_eor3: 3098.5 (68.05x) A720 Before: crc_32_IEEE_LE_c: 387502.5 crc_32_IEEE_LE_crc: 19196.7 (19.54x) crc_32_IEEE_LE_pmull_eor3: 18717.1 (20.63x) A720 After: crc_32_IEEE_LE_c: 392090.8 crc_32_IEEE_LE_crc: 19795.1 (18.68x) crc_32_IEEE_LE_pmull_eor3: 14971.4 (24.97x) X4 Before: crc_32_IEEE_LE_c: 196232.0 crc_32_IEEE_LE_crc: 10378.7 (18.68x) crc_32_IEEE_LE_pmull_eor3: 7742.0 (25.29x) X4 After: crc_32_IEEE_LE_c: 199632.9 crc_32_IEEE_LE_crc: 10495.8 (18.32x) crc_32_IEEE_LE_pmull_eor3: 5448.9 (24.69x) Seems to result in about 2x gains on X925, 25% on A70 and 40% on X4. In general the performance gains depends on the CPU Core and input size, and this optimization benefits large input size especially on high performance cores like X925 and Apple M series.
Changed files
- libavutil/aarch64/crc.S
- libavutil/aarch64/crc.h
Change #273667
Category ffmpeg Changed by Shreesh Adiga <16567adigashreesh@gmail.com> Changed at Thu 02 Jul 2026 11:03:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e18e229388b7b5d5bb3bb667533a9e853ae94737 Comments
checkasm/crc: increase size of input buffer from 8k to 16k For AArch64, AV_CRC_32_IEEE_LE implementation has codepath which is triggered when input buffer size is >= 8192. Thus to ensure sufficient test coverage, size of the input buffer in the test file is being increased from 8192 to 16384.
Changed files
- tests/checkasm/crc.c
Change #273677
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 02 Jul 2026 11:29:19 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 95a888b9cadb4888d957797ba411b300422e81cc Comments
aacenc_tns: tighten TNS toggle for short frames Excessive TNS use for short frames resulted in audible popping at high rates, this strictens the threshold conservatively.
Changed files
- libavcodec/aacenc_tns.c
Change #273713
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 02 Jul 2026 15:29:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6f80e2765492700622596af720534cef33dd31b4 Comments
avformat/spdifenc: bound DTS core_size against the packet size in the HD path Fixes: out of array read Fixes: yBSax492UIB9 Fixes: 482d98f69b2 (spdifenc: IEC 61937 encapsulation of DTS-HD for HDMI) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/spdifenc.c
Change #273714
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Thu 02 Jul 2026 15:32:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 11d5f475be95d22d5f0692220cc772b116abc632 Comments
avformat/rtpdec_asf: reject ASF objects smaller than their header Fixes: infinite loop Fixes: MzWwJdpZF2Ls Fixes: c2f3eec445389d67afc8c699ba23915a20cae51c (Implement RTSP-MS/ASF packet parsing.) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/rtpdec_asf.c
Change #273719
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 02 Jul 2026 15:48:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 324617b26f4b4e074caff12af5d7493db16bec46 Comments
tests/fate/libavutil: add FATE test for dovi_meta Test av_dovi_alloc, av_dovi_metadata_alloc, and av_dovi_find_level. Verifies that the four inline offset-based accessors (get_header, get_mapping, get_color, get_ext) return pointers consistent with the offset fields, that find_level returns the first matching ext block or NULL for a missing level, and OOM paths via av_max_alloc. Coverage for libavutil/dovi_meta.c: 63.16% -> 100.00%
Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/dovi_meta.c
- tests/fate/libavutil.mak
- tests/ref/fate/dovi_meta
Change #273720
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 02 Jul 2026 15:48:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7ea44ca6a6fb630a0678e8afbdd6bb49f06baba5 Comments
tests/fate/libavutil: add FATE test for mastering_display_metadata Test all 5 public functions: av_mastering_display_metadata_alloc, av_mastering_display_metadata_alloc_size, the create_side_data variant, av_content_light_metadata_alloc, and its create_side_data variant. Verifies the {0,1} rational defaults set by get_defaults(), write/read-back of HDR metadata fields, frame side data attachment for both mastering display and content light metadata, and OOM paths via av_max_alloc. Coverage for libavutil/mastering_display_metadata.c: 86.49% -> 100.00%Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/mastering_display_metadata.c
- tests/fate/libavutil.mak
- tests/ref/fate/mastering_display_metadata
Change #273721
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 02 Jul 2026 15:48:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 784ab1558941fa2d0e4774abb9c0ac4a0135f74c Comments
tests/fate/libavutil: add FATE test for video_hint Test av_video_hint_alloc with 0, 1, and 4 rects, and av_video_hint_create_side_data. Verifies that av_video_hint_rects and av_video_hint_get_rect return pointers consistent with rect_offset and rect_size, write/read-back of rect coordinates, both hint type values, and OOM paths via av_max_alloc. Coverage for libavutil/video_hint.c: 0.00% -> 82.05% The remaining uncovered lines are the nb_rects overflow guard and the av_buffer_create / av_frame_new_side_data_from_buf failure cleanup paths, which av_max_alloc() cannot reach since it forces the first allocation to fail.
Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/video_hint.c
- tests/fate/libavutil.mak
- tests/ref/fate/video_hint
Change #273722
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Thu 02 Jul 2026 16:29:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e85c0e0ab1b5333c9d3c3bc6fbc1574fdd2d9d3d Comments
avformat/shared: increase CRC size to 32-bits This increases the amount of corrupted data we can correctly detect as corrupted from (on average) 2 GiB to 128 TiB, at the default 32 KiB block size. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #273723
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Thu 02 Jul 2026 16:29:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aa8fc9f946c68565dd0a105437e49899154a29eb Comments
avformat/shared: add -retry_corrupt option Similar to -retry_errors, this retries blocks whose only crime is failing the CRC self-check. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- doc/protocols.texi
- libavformat/shared.c
Change #273724
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Thu 02 Jul 2026 16:29:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cce1b4f2289f9b02a3b9848dbc91c87903bf3821 Comments
avformat/shared: hash cache version into filename Changing version implies a non-backwards compatible disk layout. Alternatively, we could detect a version mismatch and delete + rebuild the cache file, but that's nontrivial to get right because of existing processes that might be concurrently trying to open the same cache file with the old version. Overall, cleaner and safer to just separate them by version. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #273725
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Thu 02 Jul 2026 16:38:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dbd495f066a85ba96b17433f4306582aa37c3951 Comments
avformat/vobsub: reuse subtitle streams and bound the stream count Fixes: heap buffer overflow Fixes: lqaO5R1BaZGO Fixes: dbfe61100b (avformat/vobsub: fix several issues.) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/mpeg.c
Change #273726
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Thu 02 Jul 2026 16:38:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1836ef96846937a6cc2443698a693104f5c0b21e Comments
avcodec/adx: sync decoder channel state on NEW_EXTRADATA Fixes: out of array access Fixes: heaNtmHvklpe Fixes: 92396cee602320c714713ca2d93b53684ad57000 (avformat: add CRI AAX demuxer) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/adxdec.c
Change #273731
Category ffmpeg Changed by Marvin Scholz <epirat07@gmail.com> Changed at Thu 02 Jul 2026 18:23:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6aa9590e7a40ff584da41dfd64d95b098bf0c9c4 Comments
avformat/hevc: use correct format specifier The numOfArrays variable is an integer, so use %d to print it.
Changed files
- libavformat/hevc.c
Change #273732
Category ffmpeg Changed by Marvin Scholz <epirat07@gmail.com> Changed at Thu 02 Jul 2026 18:23:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 909e00f3fe130cca25eaea9bd5541a163d1809bd Comments
avformat/jvdec: add fall-through annotations
Changed files
- libavformat/jvdec.c
Change #273733
Category ffmpeg Changed by Marvin Scholz <epirat07@gmail.com> Changed at Thu 02 Jul 2026 18:23:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7b451cdb2155b79839fe82a37bc7c36cceb49978 Comments
avformat/nuv: add fall-through annotations
Changed files
- libavformat/nuv.c
Change #273734
Category ffmpeg Changed by Marvin Scholz <epirat07@gmail.com> Changed at Thu 02 Jul 2026 18:23:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9448d5e0843073492087d656ae7e0896d336f0cf Comments
avfilter/vf_mcdeint: add fall-through annotations
Changed files
- libavfilter/vf_mcdeint.c
Change #273735
Category ffmpeg Changed by Marvin Scholz <epirat07@gmail.com> Changed at Thu 02 Jul 2026 18:24:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 884c05605933ec960681da22232daa6baba1182b Comments
avcodec/lcevc_parser: replace fall-through comment with annotation
Changed files
- libavcodec/lcevc_parser.c
Change #273742
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 02 Jul 2026 20:39:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a8968b14250c85de947fce4df9793b88c8580869 Comments
Makefile, ffbuild/{common,library}: Allow to build DEVTOOLS These tools run on the target and are supposed to be used for development; they are basically the same as TESTPROGS, just without the presumption of living in the tests subdirectory. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- Makefile
- ffbuild/common.mak
- ffbuild/library.mak
Change #273743
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 02 Jul 2026 20:39:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd9e6996afe679d713b726e1580a5f855cf7b255 Comments
swscale/uops: Move stuff for generating uops_macros.h out It is not used for normal builds and is more an auxiliary dev tool; move the code into a new file, uops_macros_gen.c to be built as a DEVPROG. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswscale/Makefile
- libswscale/tests/sws_ops.c
- libswscale/uops.c
- libswscale/uops.h
- libswscale/uops_list.h
- libswscale/uops_macros_gen.c
- tests/fate/libswscale.mak
Change #273744
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 02 Jul 2026 20:39:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision da8f9c4cacc2abac68855bf702ed4add2c43f5c3 Comments
swscale/ops: Move stuff for enumerating op lists out It is not used for normal builds, so move the code into a new file, uops_macros_gen_template.c to be included by its only users, namely tests/sws_ops{,_aarch64}.c and uops_macros_gen.c. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libswscale/op_list_gen_template.c
- libswscale/ops.c
- libswscale/ops.h
- libswscale/tests/sws_ops.c
- libswscale/tests/sws_ops_aarch64.c
- libswscale/uops_macros_gen.c
Change #273746
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Thu 02 Jul 2026 22:20:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 14ed5e8ae31d0c833afbb5ed0e0ca2c7cfc0db87 Comments
forgejo/workflows: rebase PR commits onto target branch before running verification This simulates the state of the repository after the PR is rebased-and-merged into the target branch and validates the merged result rather than the PR branch in isolation. Without this step, CI may run against a stale branch. A PR that merges cleanly can still fail verification after merging into target because the target branch may have advanced and changed tests. Conversely, the Docker image used for the build may no longer work with the old repository state when testing an old PR branch. This also allows the PR to be revalidated by simply rerunning CI, without requiring an explicit rebase. This change also fails CI early when rebase conflicts are detected. Since PRs with conflicts cannot be merged, there is no value in running the remaining verification steps. This is bit strict as it likely will fail to rebase merge commits, should they be present in the PR. However, we generally prefer linear history. It's rebased mostly to avoid search for merge commit in target branch. While for PR we can ask API how many commit there are and the parent of that should be merge-base commit, for target branch it's unknown how deep this common commit is. It would be trivial if we did full non-shallow clone, but we do shallow and probably want to keep it this way. This forces us to just replay commits from PR on the tip of the current target branch. It's fine, this is what we want in the end of the day. Incidentally this also fixes recently merged dd6ae3e02412021e016983cc52c242c35e2d7ab1, which tries to validate commit messages, but by default clone depth is 1 so only single commit message of head commit in PR was merged. After this change all commits will be visible. However, I still liked the API script that we had before, not sure why this was completely reworked. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- .forgejo/actions/rebase-pr/action.yml
- .forgejo/workflows/lint.yml
- .forgejo/workflows/test.yml
Change #273770
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 02 Jul 2026 22:53:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b5bfb7716c4914efdccbc3b507a77d676616be51 Comments
avcodec/ac3enc: drain the buffered samples at the end of encoding When encoding a stream with an amount of samples multiple of a block, the last the last 256 samples would be lost as the encoders were not marked as AV_CODEC_CAP_DELAY. This can be easily reproduced with: ffmpeg -f lavfi -i sine -ac 2 -af atrim=start_sample=0:end_sample=4608 -c:a eac3 -f framecrc - Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/ac3enc.c
- libavcodec/ac3enc.h
- libavcodec/ac3enc_fixed.c
- libavcodec/ac3enc_float.c
- libavcodec/ac3enc_template.c
- libavcodec/eac3enc.c
- tests/fate/ac3.mak
- tests/ref/fate/ac3-fixed-encode-2
- tests/ref/fate/shortest
Change #273771
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 02 Jul 2026 22:53:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b192eb5b71448d87aeee71cd31f1364c40d7fb5c Comments
avcodec/audio_frame_queue: take into account padding in input frames If the declared duration is less than the amount of samples in the frame, then only consider the former as valid. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/audio_frame_queue.c
Change #273772
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 02 Jul 2026 22:53:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d8c1dd4233e51c9946813f332b2c6c4a5667b154 Comments
tests/fate/ac3: add a test to check correct encoder sample output Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/ac3.mak
- tests/ref/fate/ac3-fixed-encode-3
Change #273811
Category ffmpeg Changed by Anxious Koisi <ddoaoing@gmail.com> Changed at Fri 03 Jul 2026 03:51:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 63958ce2b5dd1b22f534fc968c86329cbbceef07 Comments
avcodec/apac: Check bitstream_size to avoid integer overflow Found-by: k00shi_ Fixes: OOM Fixes: poc.c Fixes: XMkAe1I9uFro
Changed files
- libavcodec/apac.c
Change #273812
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 03 Jul 2026 03:55:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aafb5c655edc76a753275c383ebb139feb032718 Comments
avcodec/mace: reject sample counts that overflow int Fixes: heap buffer overflow Fixes: FmXBI2dbgvgD Fixes: 0eea212943544d40f99b05571aa7159d78667154 (Add avcodec_decode_audio4().) Found-by: Adrian Junge (vurlo) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/mace.c
Change #273846
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Fri 03 Jul 2026 14:24:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2e9dfa02147112f60d5415128a79b1310e4ad9f9 Comments
.forgejo/actions/rebase-pr: workaround stale `forge.event.pull_request.merge_base` value Unfortunately, Forgejo does not update the merge-base when PR branch is updated, the `forge.event.pull_request.merge_base` is stale value, from the time when PR was created. We cannot relly on it, so try to infer parent commmit of the PR from the shallow clone that we have. This can be reproduced by: 1. `git rebase X` where X is some commit on target branch, later known as merge-base 2. Create PR. Notice that `forge.event.pull_request.merge_base` == `X` 3. `git rebase X^` 4. Force push the reparented branch. Notice that forge.event.pull_request.merge_base == X. This is invalid! X not only is no longer a merge-base, but it is completelly unrelated commit, which exists only on `target` branch, not on PR branch. 5. ???? Additionally I can say that in fact Forgejo does update the merge-base value, but it looks like it does that AFTER the actions are run, or maybe concurrently and there is a race there. I've observed that on 2nd push of a PR branch, rebased on the same parent/merge-base, the reported value is actually correct, but we cannot rely on that, because on 1st run it's incorrect if PR branch was rebased on different parent. For more complex PR fallback to full unshallow and merge. While at it make git fetches verbose, so we know which commits are asked for.
Changed files
- .forgejo/actions/rebase-pr/action.yml
Change #273848
Category ffmpeg Changed by Hunter Kvalevog <hunter@kvog.sh> Changed at Fri 03 Jul 2026 14:49:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6d72600a301c441e4a6d46663fbbfdad7e021068 Comments
fftools/ffplay: remove SDL_AUDIO_ALSA_SET_BUFFER_SIZE SDL_AUDIO_ALSA_SET_BUFFER_SIZE was removed in SDL 2.0.9: https://github.com/libsdl-org/SDL/commit/c591429542f429aac4979fb6ae9bbe024491a1f Signed-off-by: Hunter Kvalevog <hunter@kvog.sh>
Changed files
- fftools/ffplay.c
Change #273851
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Fri 03 Jul 2026 14:53:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9011e7083e63c08555fd273fefb57532d1643b8c Comments
tests/fate/ffmpeg: remove audio stream from fate-autorotate It's not relevant to the test, and it's often affected by unrelated changes to the ac3 encoder. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/ffmpeg.mak
- tests/ref/fate/autorotate
Change #273858
Category ffmpeg Changed by tknaveen <unbornboron69@gmail.com> Changed at Fri 03 Jul 2026 15:29:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 766074133f9711e440144a940ac0ad32a8b8e5d7 Comments
avfilter/dnn_backend_torch: fix missing ret in async error path ff_dnn_start_inference_async() return value was not stored in ret, causing execute_model_th() to return success on async startup failure. This left vf_dnn_processing stuck in its flush loop waiting on a task that was never started.
Changed files
- libavfilter/dnn/dnn_backend_torch.cpp
Change #273871
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 03 Jul 2026 16:09:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 061b28fad6e804b75c87ad2b3136827270fe31e6 Comments
avcodec/x86/me_cmp: Improve median_sad functions The median_abs functions involve computing a predictor for a pixel difference; deviations from this predicted pixel difference are summed to the result. For the leftmost element of a row, the predictor is simply the leftmost element of the last row (if any; otherwise zero). For the other elements, it is the median of top, left and (top + left - topleft). The current approach to deal with this is to treat the first element specially (by using a special accumulator just for it and mask at the end). But there is a better way: If the left and topleft predictors are zero, the median prediction is top and therefore yields the correct result for the leftmost element, obviating the need for the special case. Creating the registers with zeroed left predictors is easy: Just shift in the other direction to how it is done now. Old benchmarks: median_sad_0_c: 429.9 median_sad_0_ssse3: 43.7 ( 9.83x) median_sad_1_c: 189.9 median_sad_1_ssse3: 24.5 ( 7.75x) New benchmarks: median_sad_0_c: 431.1 median_sad_0_ssse3: 39.7 (10.84x) median_sad_1_c: 190.6 median_sad_1_ssse3: 20.4 ( 9.36x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/me_cmp.asm
Change #273872
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 03 Jul 2026 16:09:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 67dfae9c5fad698ea4a7fa4f81b1fe4be1f1f4fd Comments
avcodec/x86/me_cmp: Reduce amount of registers used One can avoid one scratch register in MEDIAN_ABS_ACC (by clobbering topleft which isn't needed lateron). Furthermore, the earlier code requested more registers in cglobal than it actually used: median_sad8 only needs seven registers, median_sad16 only 11. One of these registers is actually unclobbered (read-only), so median_sad8 does not need to save and restore and non-volatile registers on Win64. Furthermore, the restriction of median_sad8 to x64 can now be lifted. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/me_cmp.asm
- libavcodec/x86/me_cmp_init.c
Change #273873
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 03 Jul 2026 16:09:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f3343f51b159c420724c04315e457704f112449e Comments
tests/checkasm/motion: Improve reporting Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/motion.c
Change #273874
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 03 Jul 2026 16:09:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fad2e0bc504d0619453151cdb2a88a744dee34bc Comments
tests/checkasm/motion: Improve randomizing buffers Randomize four bytes at a time and only do it if needed. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/motion.c
Change #273922
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Fri 03 Jul 2026 20:43:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a37171bed554305b7b83c521ccd25ef40806347f Comments
tests/fate/hevc: add scale filter dependency to fate-hevc-bsf-mp4toannexb-new-extradata Should fix failures when said filter is not compiled in. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/hevc.mak
Change #273936
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Fri 03 Jul 2026 21:47:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2f779272e061fbdf2725009f9e327c2f7a6b0a61 Comments
libavformat/img2enc: add update_filemtime option Add a new boolean option -update_filemtime to the image2 muxer that sets each output file's modification time based on the creation_time metadata plus the frame's PTS offset. This is useful when extracting frames from dashcam or action camera footage where wall-clock timestamps should be preserved on the output files, allowing photo management tools to sort frames by capture time without post-processing. The option requires creation_time metadata to be set (via -metadata creation_time=...). If not present, a warning is logged and the option is silently disabled. When PTS is unavailable, the creation time is used as-is without frame offset. Uses utimes() on POSIX and _utime() on Windows to set file timestamps with microsecond and second precision respectively. Includes a FATE roundtrip test that writes frames with a known creation_time, reads them back using the demuxer's -ts_from_file option, and verifies the PTS values match the expected timestamps. Closes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/22537 Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>
Changed files
- doc/muxers.texi
- libavformat/img2enc.c
- tests/fate-run.sh
- tests/fate/image.mak
- tests/ref/fate/img2-update-filemtime
Change #273947
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Sat 04 Jul 2026 01:53:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ddf8f40301af20ad985cf369d1eb6d114be0c8f0 Comments
avdevice/avfoundation: wait for frame consumption to avoid dropping A/V frames The capture callback dropped the previous frame instead of waiting for it to be consumed, so frames were lost when avf_read_packet() fell behind; 39fbd06314 (return EAGAIN instead of waiting) made it easy to hit. Add back a condition variable: the capture callback blocks until avf_read_packet() takes the current frame, and the reader waits on it when no frame is ready. An is_stopping flag set in destroy_context() wakes both sides so teardown cannot deadlock. observed_quit is now set under the lock and broadcast as well, so a blocked reader wakes and returns EOF when a transport-control device stops delivering frames. Based on a patch by Zhongxin Zhuang <zx.zhuang@hotmail.com>; here unlock_frames() only broadcasts and unlocks, so a read no longer releases the other stream's still-unconsumed frame. Verified by capturing camera+mic for 8s and comparing delivered packet counts before/after this change: ffmpeg -f avfoundation -pixel_format nv12 -framerate 30 -i "0:0" -t 8 \ -vf "scale=2560:1440,hqdn3d" -c:v libx264 -preset medium \ -c:a aac out.mp4 ffprobe -count_packets -show_entries stream=nb_read_packets out.mp4 slow consumer (ideal: video ~240, audio ~375) video audio before (EAGAIN) 174 163 (audio ~57% dropped) after (condvar) 234 376 (no drops) fast consumer (-preset ultrafast, no filter) before 240 328 after 238 376 Signed-off-by: Jun Zhao <barryjzhao@tencent.com>Changed files
- libavdevice/avfoundation.m
Change #273950
Category ffmpeg Changed by Jack Lau <jacklau1222gm@gmail.com> Changed at Sat 04 Jul 2026 04:39:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6f2f3755a06bdab40028dd8bfcfe91e057aac845 Comments
avformat/whip: disable DTLS certificate verification Fix DTLS failure since 9549c9ad79ee399ff469a420223d4b6118498f7e WebRTC does not verify CA because it allows self-signed cerificate. Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Changed files
- libavformat/whip.c
Change #273984
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Sat 04 Jul 2026 18:52:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 22b08e8cc1cc0b9504f75cf46f6b6698247c3616 Comments
swscale/x86: fix SIGILL in u8 SCALE on SSE4-only CPUs Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libswscale/x86/ops_int.asm
Change #274029
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Sun 05 Jul 2026 01:53:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0fe4bd4b435b1de950890d37b1e4df7bae3655b1 Comments
avformat/imfdec: check for a missing or empty Path in the asset map Fixes: NULL pointer dereference Fixes: vIIX7oqa3coO Fixes: 73f6cce9361 (avformat/imf: Demuxer) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/imfdec.c
Change #274030
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Sun 05 Jul 2026 01:53:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a76190152d0d1e90f38a761e0a1443c1dcb4e7a8 Comments
avformat/imfdec: reject virtual tracks with no resources Fixes: NULL pointer dereference Fixes: kia6rom3mZdr Fixes: 73f6cce9361 (avformat/imf: Demuxer) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/imfdec.c
Change #274031
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 01:59:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4c6217477fc64305055b37d9d1d0d76d30e37f97 Comments
avcodec/nvdec: don't double free the fdd-owned context on the sep_ref error path Fixes: double free Fixes: rpSz7v3yq2u8 Fixes: 72982f8cb5dad6252a14226d28128313eed4a5ff (avcodec/nvdec: add support for separate reference frame) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/nvdec.c
Change #274032
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 02:00:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3b28a08a32c3599410c7f7cd3c1032c58f34dbe0 Comments
avformat/wavdec: fix integer overflow in W64 chunk size check Fixes: 523658585/clusterfuzz-testcase-minimized-ffmpeg_dem_W64_fuzzer-5454488994643968 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/wavdec.c
Change #274033
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 02:05:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f50e22c68d1e579a3e2818a7d93d6eed092ad387 Comments
swscale/output: avoid signed overflow in yuv2rgb_write_full luma scaling Fixes: 523522305/clusterfuzz-testcase-minimized-ffmpeg_SWS_fuzzer-4574409678716928 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libswscale/output.c
Change #274034
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 02:07:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4da9812e25894fb51d62a8875cfa8eb39b5e20f5 Comments
avfilter/vf_quirc: resize the quirc buffers when the input size changes Fixes: out of array access Fixes: JbvzNObhorBp Fixes: 030e140145 (lavfi: add quirc filter) Found-by: Adrian Junge (vurlo) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/vf_quirc.c
Change #274035
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 02:08:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e7cbfd1c507b57a806a5825b87d609963e862c8c Comments
avcodec/lcldec: zero the not-decoded tail to avoid heap disclosure Fixes: use of uninitialized memory Fixes: CsNDKB1K1U0C Fixes: e2c3aa8e2b (avcodec/lcldec: More space for rgb24) Found-by: Adrian Junge (vurlo) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/lcldec.c
Change #274036
Category ffmpeg Changed by Vladimir Panteleev <git@thecybershadow.net> Changed at Sun 05 Jul 2026 02:41:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 734cbb6617036e171ed61fb990a768891bfd6030 Comments
vf_photosensitivity: scale badness threshold with history size This commit attempts to address feedback from this filter's users, by improving the filter's behavior at the start of playback or immediately after seeking. In these situations, the history buffer is empty, but because we did not previously track its size, we were calculating the weighted average as if the corresponding frames had zero badness. This caused the filter to behave differently and possibly produce false negatives when the history was not fully populated. Address this by instead taking into account the history size when calculating cumulative badness. To accomplish this: - Add a history_size field to to PhotosensitivityContext, tracking how much of the history buffer is populated. - Change the semantics of PhotosensitivityContext::badness_threshold. Previously, it was premultiplied by the maximum history size. This is no longer done, so that we can multiply it to the live history_size on the fly instead. - Calculate the badness threshold on a per-frame basis. The result is now stored in a badness_threshold local variable. This commit only changes the filter's behavior for the first PhotosensitivityContext::nb_frames (configurable as the "frames" filter option) frames. For successively filtered frames, the behavior is unchanged.
Changed files
- libavfilter/vf_photosensitivity.c
Change #274037
Category ffmpeg Changed by Vladimir Panteleev <git@cy.md> Changed at Sun 05 Jul 2026 02:41:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 722493d3e13b81a45c6ca021a8c684d2d73d042a Comments
vf_photosensitivity: add blend option This commit attempts to address feedback from this filter's users, by introducing a new option which controls the amelioration mechanism. The "blend" option is a factor which is multiplied by the difference in badness (between the threshold and the currently accumulated badness). This difference normally controls how much of the next frame we can let through without making it exceed the badness threshold. Setting the option to zero effectively puts the filter into a mode where it always duplicates the last frame (which did not put accumulated badness over the threshold) instead of attempting to blend in new frames. I have received reports that this mode is preferable to users for some types of media.
Changed files
- doc/filters.texi
- libavfilter/vf_photosensitivity.c
Change #274038
Category ffmpeg Changed by Vladimir Panteleev <git@cy.md> Changed at Sun 05 Jul 2026 02:41:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dd057bd8569a1fb74d5edc9ff56eee83bddb198f Comments
fate/filter-video: add photosensitivity blend test Add a small self-contained lavfi test for the photosensitivity filter's blend path. The graph produces one black RGB frame followed by two white RGB frames, then runs: photosensitivity=frames=2:threshold=95:blend=0.5 The threshold is chosen so that the first black-to-white transition barely exceeds the detector limit. A full 8x8 RGB grid transition has badness 64 * 3 * 255 = 48960, while threshold=95 gives 48640 for the first checked history window. That forces the filter into the blend branch without needing any external sample. With blend=0.5, the runtime factor is 48640 / 48960 * 0.5, or about 0.4967. The fixed-point blender truncates this to an input-frame weight of 127/256, so blending black toward white produces an RGB component value of 126. The reference therefore records black, the blended gray frame, and then the following accepted white frame. This makes the otherwise cryptic CRCs tie directly to the blend calculation and history update behavior. Co-authored-by: Codex CLI <noreply@openai.com>Changed files
- tests/fate/filter-video.mak
- tests/ref/fate/filter-photosensitivity-blend
Change #274039
Category ffmpeg Changed by Vladimir Panteleev <git@cy.md> Changed at Sun 05 Jul 2026 02:41:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e058e8c0c533add4878bf73ff1f148c5ea879360 Comments
vf_photosensitivity: fix metadata when duplicating frames When the blending factor was calculated to be 0, the hot path skipped updating variables later emitted in metadata. Fix the flow to ensure they are populated consistently. Extend the FATE test suite to check metadata output.
Changed files
- libavfilter/vf_photosensitivity.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-metadata-photosensitivity-blend0
Change #274040
Category ffmpeg Changed by Omkhar Arasaratnam <omkhar@linkedin.com> Changed at Sun 05 Jul 2026 04:20:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dcc18b60779b0d228b37621b6485cb74b2d6f352 Comments
avformat/mov: bound the iref thmb/cdsc entry count by the sub-box size Fixes: excessive parsing past the iref sub-box Fixes: TMwMAJfgy3l9 Fixes: 74e430202d933284fc38b591d4b3a12464e8aec6 (avformat/mov: make items referencing items generic) Found-by: Omkhar Arasaratnam Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/mov.c
Change #274041
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Sun 05 Jul 2026 04:34:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c364ab176f722bdabc886845e770c9eacbc1e3e5 Comments
avformat/hls: reject Master Playlist tags in a Media Playlist Fixes infinite loop on crafted HLS playlists. Fixes: recursion.m3u8 Fixes: cEy2cxyyPaLH Fixes: cd223e0b4e (Add Apple HTTP Live Streaming demuxer) Found-by: BapToutatis Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
Change #274042
Category ffmpeg Changed by Zhao Zhili <quinkblack@foxmail.com> Changed at Sun 05 Jul 2026 06:15:26 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 056192a835330ec476ca5254302b682c7c8d2623 Comments
avformat/mods: fix keyframe flagging in read_packet avformat_index_get_entry_from_timestamp() was called with the file position passed as wanted_timestamp, so the lookup was meaningless. Use ffstream(st)->cur_dts as the wanted timestamp.
Changed files
- libavformat/mods.c
Change #274043
Category ffmpeg Changed by Zhao Zhili <quinkblack@foxmail.com> Changed at Sun 05 Jul 2026 06:15:26 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8b1118818bc9fea829ebd07aa31dd0461b494084 Comments
avformat/mods: bail out on av_get_packet() failure
Changed files
- libavformat/mods.c
Change #274044
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 05 Jul 2026 06:22:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 14604ec4b797248222cdd72a74d39abbdad9b343 Comments
avformat/iff: reject invalid data_size in ANIM Fixes: 520277418/clusterfuzz-testcase-minimized-ffmpeg_dem_IFF_fuzzer-6733106211258368 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/iff.c
Change #274054
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 05 Jul 2026 09:02:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 97cbffe9172f1614af56363022f560700fa0c36b Comments
all: Don't discard const through {mem,str,strr}chr C23 made these generic functions that no longer cast const away for you, leading to warnings when compiling with C23 and a recent enough toolchain (glibc supports this since 2.43). This commit fixes all the warnings that can simply be fixed by adding const, without adding casts. (the latter excludes parse_forced_key_frames() in ffmpeg_mux_init.c). Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- fftools/textformat/tf_json.c
- libavcodec/htmlsubtitles.c
- libavcodec/microdvddec.c
- libavcodec/pnm_parser.c
- libavfilter/graphparser.c
- libavformat/avformat.c
- libavformat/format.c
- libavformat/http.c
- libavutil/avstring.c
- libavutil/channel_layout.c
- libavutil/mem.c
Change #274081
Category ffmpeg Changed by Pavel Kohout <disclosure@aisle.com> Changed at Sun 05 Jul 2026 19:07:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 92737390dc133daadce47dd7d2ec8ef3d9ebcbed Comments
avcodec/vulkan_hevc: reject too many VPS HRD parameter sets Fixes: stack buffer overflow Fixes: tD7Mj0ST7ND3 Fixes: 82864c21112157951ce91b4430a9018edd02f5ab (vulkan_hevc: use VK_KHR_video_maintenance2 if available) Found-by: Pavel Kohout (Aisle Research) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/vulkan_hevc.c
Change #274089
Category ffmpeg Changed by Tristan Matthews <tmatth@videolan.org> Changed at Sun 05 Jul 2026 19:47:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 79adb692a2720647e9dbe57de33fd50b41db295c Comments
rvv: add optimized h264 intra prediction functions Reviewed-by: Nathan E. Egge <unlord@xiph.org> Reviewed-by: Rémi Denis-Courmont <remi@remlab.net> Benched on SpaceMIT K1 for VLEN 256 and CanMV-K230 for VLEN 128. C RVV256 C RVV128 pred8x8_horizontal_8 31.1 19.8 (1.57x) 39.9 19.3 (2.07x) pred8x8_plane_8 175.6 78.0 (2.25x) 175.7 89.6 (1.96x) pred16x16_dc_8 56.1 44.2 (1.27x) 73.6 53.2 (1.38x) pred16x16_dc_128_8 21.1 18.5 (1.14x) 37.2 28.3 (1.31x) pred16x16_horizontal_8 84.9 37.3 (2.28x) 106.8 47.4 (2.25x) pred16x16_left_dc_8 43.6 37.9 (1.15x) 60.8 47.4 (1.28x) pred16x16_plane_8 644.8 130.0 (4.96x) 610.8 182.3 (3.35x) pred16x16_top_dc_8 36.7 29.2 (1.26x) 53.8 38.5 (1.40x) pred16x16_vertical_8 27.9 19.2 (1.45x) 42.3 28.9 (1.46x)Changed files
- libavcodec/h264pred.c
- libavcodec/h264pred.h
- libavcodec/riscv/Makefile
- libavcodec/riscv/h264_intrapred_init.c
- libavcodec/riscv/h264_intrapred_rvv.S
Change #274122
Category ffmpeg Changed by Jamaika1 <lukaszcz18@wp.pl> Changed at Mon 06 Jul 2026 00:31:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c74f27955949dea8b2b33306cf0ea864ed7bf365 Comments
avfilter/vf_quirc: Changed character specifier ``` vf_quirc.c: In function 'filter_frame': vf_quirc.c:104:46: warning: format '%ld' expects argument of type 'long int', but argument 5 has type 'int64_t' {aka 'long long int'} [-Wformat=] 104 | "Found count %d codes in image #%ld\n", codes_count, inl->frame_count_out); | ~~^ ~~~~~~~~~~~~~~~~~~~~ | | | | long int int64_t {aka long long int} | %lld ```Changed files
- libavfilter/vf_quirc.c
Change #274123
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 06 Jul 2026 02:16:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 976490dcc3dbe0684851c30eff88a85d4d386d1a Comments
avformat/hls_sample_encryption: Validate ADTS frame length against packet Fixes: out of array access Fixes: playlist.m3u8 / make_poc.py Fixes: rJ50u41V7ctk Fixes: ff958b3846 (libavformat/hls: add support for decryption of HLS media segments encrypted using SAMPLE-AES encryption method) Found-by: Clouditera Security Research Team <haoyuliu@clouditera.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/hls_sample_encryption.c
Change #274126
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Mon 06 Jul 2026 06:46:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f2cd9282a952853b91b6c4a5615e05c856efb256 Comments
Changelog: move iTerm2 muxer entry from 9.0 to <next> The iTerm2 inline image protocol muxer did not make the 9.0 release cut.
Changed files
- Changelog
Change #274127
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 06 Jul 2026 08:39:19 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c6498178bbfcdb6cc67ce01242f3faeb9d039119 Comments
avfilter/vsrc_gfxcapture_winrt: add missing system_error include Fixes: error: no type named 'system_error' in namespace 'std' Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavfilter/vsrc_gfxcapture_winrt.cpp
Change #274211
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Mon 06 Jul 2026 18:26:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 32a256f619a344a7a351b89709f4a7de732268eb Comments
avcodec: add a graph based bitstream filtering API Tagged experimental for now, as it may see modifications depending on requirements. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- configure
- doc/APIchanges
- libavcodec/Makefile
- libavcodec/bitstream_filters.c
- libavcodec/bitstreamfilter.c
- libavcodec/bsf.c
- libavcodec/bsf.h
- libavcodec/bsf/Makefile
- libavcodec/bsf/filters.h
- libavcodec/bsf/sink.c
- libavcodec/bsf/source.c
- libavcodec/bsf_internal.h
- libavcodec/bsfgraph.c
- libavcodec/version.h
Change #274212
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Mon 06 Jul 2026 18:27:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f2b3888754513ff728ecb8a4bf15fc2cb18d6b6a Comments
avcodec/bsf: add an LCEVC stream merging bsf Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- Changelog
- libavcodec/bitstream_filters.c
- libavcodec/bsf/Makefile
- libavcodec/bsf/lcevc_merge.c
- libavcodec/bsf/packetsync.c
- libavcodec/bsf/packetsync.h
- libavcodec/version.h
Change #274213
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Mon 06 Jul 2026 18:27:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4eb56054c203a4e5139ef485ec51ffa214cb469f Comments
fftools/ffmpeg_demux: merge LCEVC enhancement payloads into the base stream This is a temporary implementation until support for bitstream filter graphs is generically added to the scheduler. The dual track tests are as such changed so their output is not affected by builds with liblcevc-dec enabled. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_demux.c
- tests/fate/mpegts.mak
- tests/ref/fate/mpegts-lcevc-h264-dual-track
- tests/ref/fate/mpegts-lcevc-hevc-dual-track
- tests/ref/fate/mpegts-lcevc-vvc-dual-track
Change #274233
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Tue 07 Jul 2026 02:09:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2dfe02aff861836445735735aca1d5e8ec869721 Comments
fftools/ffmpeg_demux: free stream group reference array in DemuxStream Missed in 4eb56054c203a4e5139ef485ec51ffa214cb469f. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_demux.c
Change #274234
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Tue 07 Jul 2026 04:39:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 160737cf0da1915d8499881a8021d170f927411d Comments
fftools/opt_common: fix format string bug in print_program_info FFMPEG_CONFIGURATION and FFMPEG_VERSION were concatenated into av_log format strings, so any % in them was interpreted as a conversion specifier and consumed unrelated varargs, causing undefined behavior ranging from garbled output to a segfault on `ffmpeg -version`. Pass both as %s arguments instead. Fixes issue #23662. The FFMPEG_CONFIGURATION fix is based on a patch by FinnRG; the FFMPEG_VERSION case is fixed here as well. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- fftools/opt_common.c
Change #274264
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 15:06:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision df2649ffb128c6846c523a5cb755e8b789009e4e Comments
avcodec/vvc/dec: merge the SAO and ALF pixel buffer tab loops Both loops iterate over the same components and compute the same per-component width and height. The order of tabs within a TabList does not matter, so build all pixel buffer tabs in a single loop.
Changed files
- libavcodec/vvc/dec.c
Change #274265
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 15:06:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a41f5431137029215bc444af9cf5f16ce33e0400 Comments
avcodec/vvc/dec: fix pixel buffer tab leak on chroma format change Fixes: memleak Fixes: 518575619/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VVC_fuzzer-5161396783611904 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libavcodec/vvc/dec.c
Change #274277
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 19:30:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c5150ad48b2c6e14b01a4f73b5922f00ca200869 Comments
avcodec/hevc/ps: avoid signed overflow reading act qp offsets Fixes: 523734452/clusterfuzz-testcase-minimized-ffmpeg_dem_HEVC_fuzzer-5246801451220992 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/hevc/ps.c
Change #274278
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 19:31:26 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 90a285ca782ebe633ba40ab123b6ff0cde9085a8 Comments
avcodec/jpeg2000dec: avoid signed overflow in ROI shift Fixes: 522402419/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEG2000_DEC_fuzzer-5987463315914752 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/jpeg2000dec.c
Change #274279
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 19:35:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fe47696aa1eb3b4f2359b9c4416c529912deee38 Comments
avcodec/lzf: pad the decompressed buffer Fixes: out of array read Fixes: oddlist.mov / poc.mov Found-by: Clouditera Security; Z.ai Security; NSFOCUS Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/lzf.c
- libavcodec/lzf.h
Change #274280
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 19:43:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b3712addc9636f428a751586c903b4b1c7be7fb3 Comments
avfilter/vf_v360: reject dimensions too small for the projection Fixes: out of array read Fixes: assertion failure Fixes: mQzloVqnivHQ Found-by: Anthony Hurtado Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/vf_v360.c
Change #274281
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 07 Jul 2026 19:43:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a73d648f6e3e5224dfbee73005a59c2dc161445f Comments
avfilter/vf_v360: keep remap source coordinates in bounds Two runtime paths could compute out-of-range source coordinates for degenerate projection geometry, causing heap-buffer-overflow reads Fixes: out of array read Fixes: assertion failure Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/vf_v360.c
Change #274284
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Tue 07 Jul 2026 20:31:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 813c28d1ce216502ee21d4912980689ad60333d3 Comments
avformat/dashdec: check NULL pointer of av_strtok value before use it fix issue: issues/23057 POC1 release seg memory and return NULL if av_strtok return NULL. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/dashdec.c
Change #274285
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Tue 07 Jul 2026 20:31:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5e0ca682a43f3c3d2b443c0d86d6a3d4d6ad4dd7 Comments
avformat/dashdec: check NULL pointer before use str_end_offset fix issue: issues/23057 POC2 Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/dashdec.c
Change #274287
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Tue 07 Jul 2026 20:31:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0c0dd61b8f0cee6ed53f735d06b73998e13b6fea Comments
avformat/dashdec: fix integer truncation in calc_max_seg_no() When computing the segment count for a SegmentTimeline entry with repeat="-1" (indefinite repeat, typical for live streams), the expression: length_of_each_segment = pls->timelines[i]->duration / pls->fragment_timescale; num = c->period_duration / length_of_each_segment; performs two successive integer divisions. The first division truncates toward zero; if the segment duration in timescale ticks is smaller than the timescale (duration < fragment_timescale), length_of_each_segment becomes 0, and the second division triggers a division by zero. Fix this by using av_rescale(), which computes period_duration * fragment_timescale / duration with 64-bit intermediate precision, avoiding both the truncation and the zero-division risk. If duration is 0 (invalid manifest), explicitly fall back to first_seq_no instead of crashing. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>Changed files
- libavformat/dashdec.c
Change #274289
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Tue 07 Jul 2026 20:31:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6a351a3113e407885a6ca6787b55fbf1b78cbee5 Comments
avformat/dashdec: check fragment_timescale before division in refresh_manifest fix issue: issues/23057 POC4 In refresh_manifest(), when timelines are present, fragment_timescale is used as the denominator to compute currentTime. If fragment_timescale is zero (e.g., timescale attribute missing from a crafted manifest with SegmentTimeline), this results in a division by zero. Add fragment_timescale > 0 guard to both the video and audio timeline processing paths to prevent the crash. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/dashdec.c
Change #274290
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Tue 07 Jul 2026 21:04:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 089e86692c58822e9ac8e56d890066e99a0056f2 Comments
avcodec/bsf: fix codec-id match loop in av_bsf_link The break statement only exits the inner j loop, so the outer i loop always runs to the AV_CODEC_ID_NONE terminator and the match result is never recorded. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/bitstreamfilter.c
Change #274291
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Tue 07 Jul 2026 21:04:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3b08818dd80bf634a44b3db159de05af45c5858d Comments
avcodec/bsf: fix wrong pad index in av_bsf_link diagnostics The error-path log loops read pad 0's codec id list instead of the actual srcpad/dstpad, printing the wrong supported-codec list when a link is rejected. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/bitstreamfilter.c
Change #274292
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Tue 07 Jul 2026 21:04:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2b5a258ad59496a3c1e69ca71edbaf4e16b7632a Comments
avcodec/bsf: tighten loop variable scope in av_bsf_link And replace tab-indented log lines with spaces. No functional change. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/bitstreamfilter.c
Change #274293
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Tue 07 Jul 2026 21:04:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1d5550613bd70343034d949a395ff888b2a8c561 Comments
avcodec/bsf/source: fix packet leak on av_packet_ref failure Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/bsf/source.c
Change #274297
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 08 Jul 2026 05:37:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 741e5630771c2e2068e3f6b4609ada28ca3d1de1 Comments
aarch64/h26x: parameterize calc_all step macro name So callers can pass a named step macro instead of relying on a locally redefined `calc` followed by `.purgem calc`. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/aarch64/h26x/epel_neon.S
- libavcodec/aarch64/h26x/qpel_neon.S
Change #274298
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 08 Jul 2026 05:37:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ee9aba4c5560cc7236591a09a0928176f66583c4 Comments
aarch64/h26x: give step macros distinct names per function Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/aarch64/h26x/epel_neon.S
- libavcodec/aarch64/h26x/qpel_neon.S
Change #274299
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 08 Jul 2026 05:37:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 45bc6c0c08bbbee3493084ff8816aa61350b62b5 Comments
aarch64/h26x: move step macros before their functions No functional changes. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/aarch64/h26x/epel_neon.S
- libavcodec/aarch64/h26x/qpel_neon.S
Change #274300
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Wed 08 Jul 2026 05:54:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 927f205eb8de44fc106a36f00ea9d713c813a4f3 Comments
avutil/hwcontext_vulkan: fix CUDA interop for packed formats The current export_to_cuda logic only works for planar and semi-planar formats. When presented with a single plane packed format, it will incorrectly calculate the number of channels, resulting in failures later on when cuda code tries to access the frame. Let's fix it.
Changed files
- libavutil/hwcontext_vulkan.c
Change #274301
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Wed 08 Jul 2026 05:54:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 30ba440386deb62eb9e489c8939812138a71afe6 Comments
avutil/hwcontext_vulkan: CUDA interop semaphores are per image The current semaphore logic dates back to a time where we did not have any multiplane images, and it has not kept up. As a result, we currently try and manipulate too many semaphores when dealing with multiplane images, leading to errors and crashes. Let's fix it.
Changed files
- libavutil/hwcontext_vulkan.c
Change #274302
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Wed 08 Jul 2026 05:54:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c29d710cd5d0f80bbb56f7ec1f35d5fb7ed44d05 Comments
avutil/hwcontext_vulkan: reject unsupported semi-planar CUDA imports Cuda currently only supports packed and single-component planar formats, but fails to import semi-planer (eg: NV12, P010). Even though there are now semi-planar cuda array formats, which the latest nvdec can use, these formats are not used when mapping Vulkan imports. Maybe they'll fix that some day. But until then, let's explicitly detect the case and return a clear error message for the user. Exercising this error path revealed that vulkan_free_internal() frees f->internal on a transfer error and then runs again when the frame is destroyed, dereferencing the freed pointer; let's make it idempotent.
Changed files
- libavutil/hwcontext_vulkan.c
Change #274346
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 08 Jul 2026 14:37:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c57660fb18f058e8ead224e840b242d9c68fd3c4 Comments
avfilter/vf_scale_cuda: fix non-scaling format conversion A format-only conversion leaves the auto use_filters value unresolved. Regression since 5d0748243f8. Fix issue #23737 Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavfilter/vf_scale_cuda.c
Change #274352
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Thu 09 Jul 2026 02:35:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ec6c89c1bb0a6b724b5c3930b7f53f1900b2af70 Comments
avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8l_dc_8 Deprecate MMX. Remove the SSSE3 impl. since we no longer use palignr. The SSE2 impl. uses several more instructions but is slightly faster. pred8x8l_dc_8_mmxext: 20.5 ( 1.66x) pred8x8l_dc_8_ssse3: 17.9 ( 1.90x) pred8x8l_dc_8_sse2: 15.9 ( 2.15x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #274356
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 09 Jul 2026 04:53:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 15bbf3a21d11847de21aa429ec22acf9424953ec Comments
avformat/spdif: fix reading past the buffer when probing AAC in IEC 61937 Fixes: read of uninitialized memory Fixes: 528525234/clusterfuzz-testcase-minimized-ffmpeg_dem_W64_fuzzer-6429204661731328 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libavformat/spdifdec.c
Change #274357
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 09 Jul 2026 04:54:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8de8405796df0c11c52772dd14bf6ed552d25c07 Comments
avcodec/tdsc: reject out-of-frame cursor position Fixes: signed integer overflow Fixes: 519649309/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TDSC_fuzzer-6322382028734464 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libavcodec/tdsc.c
Change #274394
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Thu 09 Jul 2026 15:25:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8ad6288553ffb99f1260d4770683f9d6c367e16b Comments
avfilter/vf_libplacebo: add flag to inherit the input's Vulkan device vf_libplacebo is unique in that it can function as both a Vulkan filter, and a software filter, depending on how it the filter graph is configured. While this is very flexible, it create a problem in situations where the filter does not receive a Vulkan hw frames context up front. When that doesn't happen, it will initialise its own standalone pl context, and then fail to interoperate with a context provided via the input link. This then leads to graph failures. There are two primary scenarios where this existing logic breaks what should be valid configurations: * When the global filter hw device is a cuda device and we use something like `hwupload=derive_device=vulkan` to pass frames from cuda to vulkan * In mpv (and probably other media players) which don't set the global filter hw device at all. In this case, it's impossible to configure vf_libplacebo to use a hw frames ctx, even if it's using Vulkan for everythng else. This prevents the use of vf_libplacebo in any fully hardware accelerated pipeline in mpv There are various ways we could imagine addressing it - such as allowing the filter to discard the initial pl context and recreating it based on the passed in device, but it's easier to reason about if we add a flag that explicitly tells the filter that it should inherit the device context from the input link. This puts the filter into a mode that works like all the other Vulkan filters. This requires explicit configuration from the user, but the intent is clearer, and the user can always know when it's necessary as they define the filter graph.
Changed files
- doc/filters.texi
- libavfilter/vf_libplacebo.c
Change #274415
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Thu 09 Jul 2026 20:39:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b4b30ff8fd1580c4fc1330afdf6c8fde242e1754 Comments
libavutil/vulkan: fix elem_size computation in vulkan_export_to_cuda
Changed files
- libavutil/hwcontext_vulkan.c
Change #274430
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 09 Jul 2026 23:39:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 40ce1513c6a883bc2b96d33d968013b89dfe76af Comments
avcodec/mjpegdec: reject flipping of bayer images Fixes: assertion failure Fixes: 523522308/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_DEC_fuzzer-4771843818192896 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/mjpegdec.c
Change #274446
Category ffmpeg Changed by Vignesh Venkat <vigneshv@google.com> Changed at Fri 10 Jul 2026 03:56:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c4e41b54cd9fba6f73ee4500a459430ed917722 Comments
avcodec: Add itut-t35 metadata as a codec type Signed-off-by: Vignesh Venkat <vigneshv@google.com>
Changed files
- doc/APIchanges
- libavcodec/codec_desc.c
- libavcodec/codec_id.h
- libavcodec/version.h
Change #274447
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Fri 10 Jul 2026 05:20:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0baa71b53cd9dc6ecf0cf9a5c271bcbde04135ba Comments
avutil/hwcontext_vulkan: query the actual image format in try_export_flags GetPhysicalDeviceImageFormatProperties2() must be queried with the format that will actually be used to create the image, otherwise the external memory export capability check answers for a different format than the one being allocated. When AV_VK_FRAME_FLAG_DISABLE_MULTIPLANE is set (e.g. by ffplay for CUDA interop), vulkan_frames_init selects the per-plane fallback format via vkfmt_from_pixfmt2(disable_multiplane=1) and stores it in hwctx->format[]. The image is then created with that fallback format. Querying the multiplane vkf instead returns capability for a format that is never instantiated, and on NVIDIA GPUs with OPTIMAL tiling the answer differs between the two formats, producing broken CUDA hwaccel output. Read hwctx->format[0], which is populated by vulkan_frames_init before vulkan_pool_alloc runs, so the query matches the image regardless of whether the multiplane or fallback path was taken. Fix artifacts with `ffplay -hwaccel cuda foo.mp4`.
Changed files
- libavutil/hwcontext_vulkan.c
Change #274449
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 10 Jul 2026 06:41:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d09d5afc3aebede25d2d245ee23b75a47ea17c3a Comments
avutil/hwcontext_vulkan: declare cuda as a transfer-compatible format The cuda hwcontext has listed AV_PIX_FMT_VULKAN among its supported formats since Vulkan interop was first added, so a device's frame constraints advertise Vulkan as a transfer-compatible ("sw") format. This is what allows an hwupload targeting a cuda device to accept a Vulkan frame as input during format negotiation. The Vulkan hwcontext never made the reciprocal declaration, so an hwupload targeting a Vulkan device would not accept a cuda frame, and a cuda -> Vulkan upload could not be configured even though the transfer itself is supported. Advertise AV_PIX_FMT_CUDA in the Vulkan frame constraints to ensure we have consistent behaviour in both directions.Changed files
- libavutil/hwcontext_vulkan.c
Change #274474
Category ffmpeg Changed by Tobias Rapp <t.rapp@noa-archive.com> Changed at Fri 10 Jul 2026 12:12:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 35f8f4bdc075db1ae63d999edf7ae682fcaf3cf7 Comments
avformat/wavdec: limit memory allocated for BEXT coding history data Avoid excessive memory allocation when parsing coding history data from BWF/WAV files by using a size limit of 1MB. When the chunk size limit is exceeded read fails with an error log message. Patch-by: Leander-Amz in https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20642#issuecomment-48126
Changed files
- libavformat/wavdec.c
Change #274504
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Fri 10 Jul 2026 19:45:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 19a2758e55a6edcc185061958740fcac4b83378f Comments
avformat/mvrdec: add MVR CCTV demuxer The format stores video-only H.264 in a fixed header + index table + chunk layout. Each chunk is a self-contained GOP, enabling simple random access via the index. Fix #23540
Changed files
- Changelog
- libavformat/Makefile
- libavformat/allformats.c
- libavformat/mvrdec.c
- libavformat/version.h
Change #274509
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 11 Jul 2026 04:09:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7c116b536d0d64c96dd15b096aaab1a76cce3b0 Comments
avcodec/mjpegdec: reject redundant scans of a sequential image Fixes: Timeout Fixes: 527085539/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AMV_DEC_fuzzer-6502692927897600 Fixes: 523663551/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MJPEG_DEC_fuzzer-5493410811936768 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/mjpegdec.c
- libavcodec/mjpegdec.h
Change #274510
Category ffmpeg Changed by Nil Fons Miret <nilf@netflix.com> Changed at Sat 11 Jul 2026 04:46:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6bae3bd38558363542fca509cb7677d727f2beb9 Comments
avformat/wavdec: move ID3v2 auto-parsing flag from w64 to wav 9d037c54f2 (avformat/demux: avoid unconditional ID3v2 tag consumption) introduced FF_INFMT_FLAG_ID3V2_AUTO to opt formats into generic ID3v2 parsing, but mistakenly set it on ff_w64_demuxer instead of ff_wav_demuxer (both live in wavdec.c, with w64 at the end of the file). As a result, WAV files carrying a prepended ID3v2 tag were no longer parsed generically, while w64 attempted to parse an ID3v2 tag it didn't need. Move the flag to the wav demuxer, restoring the originally intended behavior. Reported-by: Daniel Verkamp <daniel@drv.nu> Signed-off-by: Nil Fons Miret <nil.fons@gmail.com>
Changed files
- libavformat/wavdec.c
Change #274514
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 11 Jul 2026 10:10:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 300cac3078185718de65bfd66b75b5dcfc57a5c0 Comments
apv_decode: call ff_thread_finish_setup() "[...] decoders with update_thread_context callback have to call ff_thread_finish_setup() themselves; it is not done implicitly in ff_thread_get_buffer() any more. Not doing so makes the decoder effectively single-threaded."
Changed files
- libavcodec/apv_decode.c
Change #274520
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 11 Jul 2026 15:45:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1f2484023936c4da95035459ebf11fc7730f18af Comments
avdevice/alsa: auto-detect channel layout when capturing audio
Changed files
- doc/indevs.texi
- libavdevice/alsa.c
- libavdevice/alsa.h
- libavdevice/alsa_dec.c
Change #274521
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sat 11 Jul 2026 16:10:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 87bcbbff5722867d1d9e82c12299bd23382782c8 Comments
avcodec/libfdk-aacenc: don't propagate a skip samples value higher than the frame size This puts the burden of keeping track of remaining samples on the user. It's best if we just report the exact amount of discardable samples within the packet's duration. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libfdk-aacenc.c
Change #274522
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sat 11 Jul 2026 16:10:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c31a781412a3aa801cc0997ba001177f258f4d80 Comments
avcodec/audio_frame_queue: add skip samples side data to output packets Instead of reimplementing the same code on every afq user, just do it here. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/aacenc.c
- libavcodec/ac3enc.c
- libavcodec/aptxenc.c
- libavcodec/audio_frame_queue.c
- libavcodec/audio_frame_queue.h
- libavcodec/audiotoolboxenc.c
- libavcodec/libfdk-aacenc.c
- libavcodec/libmp3lame.c
- libavcodec/libopencore-amr.c
- libavcodec/libopusenc.c
- libavcodec/libshine.c
- libavcodec/libspeexenc.c
- libavcodec/libvorbisenc.c
- libavcodec/mlpenc.c
- libavcodec/nellymoserenc.c
- libavcodec/opus/enc.c
- libavcodec/ra144enc.c
- libavcodec/vorbisenc.c
- tests/ref/fate/ac3-fixed-encode-2
- tests/ref/fate/ac3-fixed-encode-3
- tests/ref/fate/copy-shortest1
- tests/ref/fate/copy-shortest2
- tests/ref/fate/ffmpeg-filter_complex_audio
- tests/ref/fate/opus-enc-silence
- tests/ref/fate/shortest
Change #274523
Category ffmpeg Changed by Charly Morgand-Poyac <charly.morgand-poyac@bbright.com> Changed at Sat 11 Jul 2026 16:23:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 24f3ab761e4648105d5734f72f94c3e2ddd9c9fa Comments
lavc/hevcdec: precompute the significance context tables per scan The significance flag loop looked up scan_x_off/scan_y_off and then ctx_idx_map for every decoded bin. The composition of the two is constant per scan type, so precompute the three permuted tables and index them by scan position directly. The SCAN_HORIZ table is the original one, horizontal scan order being raster order. About 2.5% faster single threaded decoding on high bitrate streams. Signed-off-by: Charly Morgand-Poyac <charly.morgand-poyac@bbright.com>
Changed files
- libavcodec/hevc/cabac.c
Change #274524
Category ffmpeg Changed by Charly Morgand-Poyac <charly.morgand-poyac@bbright.com> Changed at Sat 11 Jul 2026 16:23:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ea8ca20168f103733e10d90e2954d5f09f9a8a13 Comments
lavc/hevcdec: skip the coefficient clear for DC-only blocks idct_dc reads coeffs[0] only and writes the whole block, so the clear before residual decoding is not needed on that path. Move it after the last significant coefficient position is known and compute col_limit once instead of at the transform call. Signed-off-by: Charly Morgand-Poyac <charly.morgand-poyac@bbright.com>
Changed files
- libavcodec/hevc/cabac.c
Change #274525
Category ffmpeg Changed by Charly Morgand-Poyac <charly.morgand-poyac@bbright.com> Changed at Sat 11 Jul 2026 16:23:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5d6f409cdd65c3943d1b7447524008bba4ac36c9 Comments
lavc/hevcdec: decode runs of bypass bins with one integer division Reading a bypass bin doubles the offset and conditionally subtracts range << 17, which is one step of a binary long division: a run of n bins is the quotient of the offset, shifted and refilled upfront, by range << 17, and the new offset is its remainder. Decisions only depend on multiples of 2^17, so the reordered refill cannot change any of them; a quotient overflowing n bits, which needs an offset closer to the range than the pending low bits can distinguish, falls back to the serial loop. Use it for the coefficient sign runs, the Golomb-Rice suffixes and the unary prefixes, whose length is the number of leading ones of a quotient peeked without committing the bins past the terminating zero. Sign bins are equiprobable by construction, so on top of the saved renormalisation work this removes data dependent branch mispredictions. About 3% faster single threaded decoding on high bitrate streams. Signed-off-by: Charly Morgand-Poyac <charly.morgand-poyac@bbright.com>
Changed files
- libavcodec/hevc/cabac.c
Change #274526
Category ffmpeg Changed by Charly Morgand-Poyac <charly.morgand-poyac@bbright.com> Changed at Sat 11 Jul 2026 16:23:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4ff36f83eb5c644de7a694ffe8060b19d63b0c4f Comments
lavc/hevcdec: remove data dependent branches from residual decoding Freshly decoded bins are close to equiprobable, so branching on them mispredicts half of the time. Apply the coefficient signs and the clipping with the xor/subtract idiom and FFMIN/FFMAX, store the significant coefficient positions unconditionally while advancing the count by the flag value, and derive the greater1 contexts and the first greater1 index arithmetically from a flag mask. About 7% faster single threaded decoding on high bitrate streams. Signed-off-by: Charly Morgand-Poyac <charly.morgand-poyac@bbright.com>
Changed files
- libavcodec/hevc/cabac.c
Change #274527
Category ffmpeg Changed by Charly Morgand-Poyac <charly.morgand-poyac@bbright.com> Changed at Sat 11 Jul 2026 16:23:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6179982c9c0ae6ff5092b4df3a173a79e2227785 Comments
avcodec/x86/cabac: compute renormalisation shifts with lzcnt The norm_shift loads sit on the serial range dependency chain and cost several cycles where lzcnt costs one. Builds targeting CPUs without LZCNT keep the exact original code. About 1.5% faster CABAC heavy H.264 and HEVC decoding. Signed-off-by: Charly Morgand-Poyac <charly.morgand-poyac@bbright.com>
Changed files
- libavcodec/x86/cabac.h
Change #274531
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 11 Jul 2026 19:14:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c1be9b4a81774105f355a967a59bc0e4bdbd4e97 Comments
Add FATE tests for stale metadata during re-encoding.
Changed files
- tests/fate/id3v2.mak
- tests/fate/matroska.mak
- tests/fate/mov.mak
- tests/ref/fate/id3v2-reenc-delete-metadata
- tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata
- tests/ref/fate/id3v2-reenc-remux-keep
- tests/ref/fate/matroska-reenc-chapter-nofilter
- tests/ref/fate/matroska-reenc-delete-metadata
- tests/ref/fate/matroska-reenc-delete-metadata-filter-output
- tests/ref/fate/matroska-reenc-delete-metadata-spec-scope
- tests/ref/fate/mov-reenc-delete-format-metadata
- tests/ref/fate/mov-reenc-delete-stream-metadata
- tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag
Change #274534
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 11 Jul 2026 19:14:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4641be96e5c97c3a91bba0980cb7377586156195 Comments
fftools/ffmpeg_mux_init.c: delete encoder-specific metadata when re-encoding.
Changed files
- doc/ffmpeg.texi
- fftools/ffmpeg.h
- fftools/ffmpeg_mux_init.c
- fftools/ffmpeg_opt.c
- tests/fate/id3v2.mak
- tests/fate/matroska.mak
- tests/fate/mov.mak
- tests/ref/fate/caf-alac-remux
- tests/ref/fate/cover-art-flac-remux
- tests/ref/fate/cover-art-mp3-id3v2-remux
- tests/ref/fate/enhanced-flv-hevc
- tests/ref/fate/enhanced-flv-multitrack
- tests/ref/fate/generic-tags-remux-asf
- tests/ref/fate/generic-tags-remux-riff
- tests/ref/fate/generic-tags-remux-vorbiscomment
- tests/ref/fate/h264-bsf-redundant-pps-side-data
- tests/ref/fate/h264-bsf-redundant-pps-side-data2
- tests/ref/fate/id3v2-reenc-delete-metadata
- tests/ref/fate/id3v2-reenc-delete-metadata-keep
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream
- tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata
- tests/ref/fate/matroska-alac-remux
- tests/ref/fate/matroska-crop
- tests/ref/fate/matroska-dovi-hvce-mp4-to-mkv
- tests/ref/fate/matroska-dovi-write-config7
- tests/ref/fate/matroska-dovi-write-config8
- tests/ref/fate/matroska-non-rotation-displaymatrix
- tests/ref/fate/matroska-reenc-chapter-nofilter
- tests/ref/fate/matroska-reenc-delete-audio-metadata
- tests/ref/fate/matroska-reenc-delete-metadata
- tests/ref/fate/matroska-reenc-delete-metadata-filter-output
- tests/ref/fate/matroska-reenc-delete-metadata-keep
- tests/ref/fate/matroska-reenc-delete-metadata-keep-prefix-nomatch
- tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video
- tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video-suffix
- tests/ref/fate/matroska-reenc-delete-metadata-keep-stream-video1
- tests/ref/fate/matroska-reenc-delete-metadata-spec-scope
- tests/ref/fate/mov-cover-reenc-keeps-audio-format-tags
- tests/ref/fate/mov-reenc-delete-format-metadata
- tests/ref/fate/mov-reenc-delete-stream-metadata
- tests/ref/fate/mov-reenc-delete-stream-metadata-global-tag
- tests/ref/fate/rgb24-mkv
Change #274537
Category ffmpeg Changed by KawaiiEngine (Sashimiso) <209421934+KawaiiEngine@users.noreply.github.com> Changed at Sat 11 Jul 2026 19:17:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1814fc7e4a79229e1fcd34a2ed5b8b6f53f9f23d Comments
avutil/hwcontext_cuda: fail derive if no CUDA device matches When CUDA enumeration succeeds but none of the device UUIDs matches the source Vulkan device, ret still holds zero from the last successful CUDA call. The error path therefore uninitializes the destination and returns success. av_hwdevice_ctx_create_derived() then returns a CUDA device context without a CUDA context. Later frame allocation fails with an unrelated error. Set ret to AVERROR(ENODEV) for the no-match case, consistent with equivalent Vulkan and OpenCL device selection failures. Signed-off-by: KawaiiEngine (Sashimiso) <209421934+KawaiiEngine@users.noreply.github.com>
Changed files
- libavutil/hwcontext_cuda.c
Change #274539
Category ffmpeg Changed by Frank Plowman <post@frankplowman.com> Changed at Sat 11 Jul 2026 22:36:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 265d39e551956d911a0c1c52bff5186a6bae660e Comments
lavc/hevc: Always generate missing refs for foll pictures Since bc1a3bfd2cbc01ffa386312662af8a014890d861, missing reference pictures are not replaced with generated pictures unless `-flags show_corrupt` is used. For `ST_FOLL`/`LT_FOLL` reference pictures, however, generation of missing references is required by the spec per 8.3.3. We should not require the `show_corrupt` flag to be used in order to be spec-conformant, so this patch removes the `show_corrupt` behaviour added in bc1a3bfd2cbc01ffa386312662af8a014890d861 for `ST_FOLL`/`LT_FOLL` references and instead unconditionally generates reference pictures in these sets when unavailable Fixes: NUT_A_ericsson_5 Fixes: RPS_D_ericsson_6
Changed files
- libavcodec/hevc/refs.c
- tests/fate/hevc.mak
Change #274542
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 11 Jul 2026 23:53:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 501d8eb62dd4f91dd19fb874f555db7ca3fde317 Comments
avcodec/bsf/dts2pts: chain same-gop nodes instead of collecting into a fixed array hevc_queue_frame() collected all tree nodes of the current gop into a fixed nodes[HEVC_MAX_DPB_SIZE * 2] array and asserted the count stayed within it. For a crafted HEVC stream the tree can hold slightly more same-gop nodes than that estimate (observed 34 vs 32), tripping the av_assert0 and aborting. Link the matching nodes into a list through a next pointer in the node instead; this has no size limit and needs neither extra passes nor allocation. Fixes: assertion failure Fixes: 519466146/clusterfuzz-testcase-minimized-ffmpeg_BSF_DTS2PTS_fuzzer-5238235193475072 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Co-Authored-By: Fable-5
Changed files
- libavcodec/bsf/dts2pts.c
Change #274543
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 11 Jul 2026 23:53:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4133db39b2bd1491e41457e819ed3ca96ef555ff Comments
avcodec/bsf/dts2pts: fix removal of 2nd field nodes alloc_and_insert_node() inserts the nodes for 2nd fields with duration / poc_diff added to the timestamp, but the removal loop compared all nodes of a frame against the unadjusted first timestamp, so 2nd field nodes never matched and stayed in the tree until close. Advance the compared timestamp the same way the insertion does. Fixes: tree nodes leaking on every field coded frame Co-Authored-By: Fable-5
Changed files
- libavcodec/bsf/dts2pts.c
Change #274544
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 11 Jul 2026 23:53:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dd941af8ac9c97017b335832714457fe9dd7f6be Comments
avcodec/bsf/dts2pts: evict unconsumable nodes from the poc tree Each pending packet consumes up to poc_diff tree nodes when it is output, so the packets in the FIFO can consume at most nb_pending nodes in total. Frames whose tree lookup misses on output leave their nodes behind, and damaged or crafted streams can make that happen indefinitely, growing the tree without limit. Track the node count and insertion order, keep the leftovers of up to MAX_DAMAGED_FRAMES frames and beyond that evict the nodes unconsumed the longest. Timestamps of valid frames are unaffected unless more frames than that are damaged. No eviction is done at EOF, where nodes are deliberately kept to regenerate timestamps from. Of all h264/hevc conformance samples only MR3_TANDBERG_B.264 triggers evictions, and no sample changes output. Fixes: unbounded memory growth with damaged streams Co-Authored-By: Fable-5
Changed files
- libavcodec/bsf/dts2pts.c
Change #274545
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 56e39bd20b418b9298488bd5a261a0ee5ae21525 Comments
avutil/downmix_info: add a new API to propagate pre-made downmix matrixes Useful for formats where they provide the downmix matrix in the bistream rather than scale factors for channel groups. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/APIchanges
- libavutil/downmix_info.c
- libavutil/downmix_info.h
- libavutil/version.h
Change #274546
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7e68fdd4dabc02cb76c7924398928a49031847a8 Comments
avutil/frame: add a new side data type for downmix matrix Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/APIchanges
- libavutil/frame.h
- libavutil/side_data.c
- libavutil/version.h
Change #274547
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6336cffdceeece9b7d222d5dc88705db08f88aac Comments
avfilter/af_ashowinfo: support printing downmix matrix side data Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavfilter/af_ashowinfo.c
Change #274548
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9646228fd676ff59168dd546924705d2fb3f250c Comments
swresample/rematrix: print custom downmix matrix coefficients Similar to how it's done to the matrix built in auto_matrix(). Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libswresample/rematrix.c
Change #274549
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b662613b63e902e3978bc3977e4ad3ccb738110f Comments
avfilter/af_aresample: also look for downmix matrix side data Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavfilter/af_aresample.c
Change #274550
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e1e6ebb065ebfb2a08a4adc4b4aae0a85640018d Comments
fftools/ffmpeg_filter: propagate downmix matrix side data to the filterchain Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_filter.c
Change #274551
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 57708daf619c1de0ea25366ef11e527f292acd55 Comments
avcodec/dca_core: export downmix matrix coefficients $ ./ffmpeg -downmix stereo -i $fate-suite/dts/dcadec-suite/core_51_24_48_768_1.dtshd -y native.wav Before: $ ./ffmpeg -i $fate-suite/dts/dcadec-suite/core_51_24_48_768_1.dtshd -af aresample,aformat=channel_layouts=stereo -y swr.wav [...] [Parsed_aresample_0] [SWR] Using fltp internally between filters [Parsed_aresample_0] [SWR] Matrix coefficients: [Parsed_aresample_0] [SWR] FL: FL:0.414214 FR:0.000000 FC:0.292893 LFE:0.000000 SL:0.292893 SR:0.000000 [Parsed_aresample_0] [SWR] FR: FL:0.000000 FR:0.414214 FC:0.292893 LFE:0.000000 SL:0.000000 SR:0.292893 [Parsed_aresample_0] ch:6 chl:5.1(side) fmt:fltp r:48000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz [...] $ tests/tiny_psnr.exe native.wav swr.wav s16 stddev:18907.06 PSNR: 10.80 MAXDIFF:51590 bytes: 8192/ 8192 After: $ ./ffmpeg -i $fate-suite/dts/dcadec-suite/core_51_24_48_768_1.dtshd -af aresample,aformat=channel_layouts=stereo -y swr.wav [...] [Parsed_aresample_0] [SWR] Using fltp internally between filters [Parsed_aresample_0] [SWR] Custom matrix coefficients: [Parsed_aresample_0] [SWR] FL: FL:-0.100006 FR:0.000000 FC:0.000000 LFE:0.000000 SL:-0.707092 SR:0.000000 [Parsed_aresample_0] [SWR] FR: FL:0.000000 FR:-0.100006 FC:0.000000 LFE:0.000000 SL:0.000000 SR:-0.707092 [Parsed_aresample_0] ch:6 chl:5.1(side) fmt:fltp r:48000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz [...] $ tests/tiny_psnr.exe native.wav swr.wav stddev: 0.02 PSNR:129.44 MAXDIFF: 1 bytes: 8192/ 8192 Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/dca_core.c
- libavcodec/dcadec.c
- libavcodec/dcadec.h
- tests/fate/dca.mak
Change #274552
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 12 Jul 2026 00:32:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c16840b826584b7682078cec4d5e8405b06f03c8 Comments
avcodec/dca_xll: export downmix matrix coefficients Only for primary channel sets if they embeed coefficients for now. $ ./ffmpeg -downmix stereo -i $fate-suite/dts/dcadec-suite/xll_51_24_48_768.dtshd -y native.wav Before: $ ./ffmpeg -i $fate-suite/dts/dcadec-suite/xll_51_24_48_768.dtshd -af aresample,aformat=channel_layouts=stereo -y swr.wav [...] [Parsed_aresample_0] [SWR] Using fltp internally between filters [Parsed_aresample_0] [SWR] Matrix coefficients: [Parsed_aresample_0] [SWR] FL: FL:0.414214 FR:0.000000 FC:0.292893 LFE:0.000000 SL:0.292893 SR:0.000000 [Parsed_aresample_0] [SWR] FR: FL:0.000000 FR:0.414214 FC:0.292893 LFE:0.000000 SL:0.000000 SR:0.292893 [Parsed_aresample_0] ch:6 chl:5.1(side) fmt:s32p r:48000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz [...] $ tests/tiny_psnr.exe native.wav swr.wav stddev:21178.05 PSNR: 9.81 MAXDIFF:49613 bytes: 8192/ 8192 After: $ ./ffmpeg -i $fate-suite/dts/dcadec-suite/xll_51_24_48_768.dtshd -af aresample,aformat=channel_layouts=stereo -y swr.wav [...] [Parsed_aresample_0] [SWR] Using fltp internally between filters [Parsed_aresample_0] [SWR] Custom matrix coefficients: [Parsed_aresample_0] [SWR] FL: FL:-0.100006 FR:0.000000 FC:0.000000 LFE:0.000000 SL:-0.707092 SR:0.000000 [Parsed_aresample_0] [SWR] FR: FL:0.000000 FR:-0.100006 FC:0.000000 LFE:0.000000 SL:0.000000 SR:-0.707092 [Parsed_aresample_0] ch:6 chl:5.1(side) fmt:s32p r:48000Hz -> ch:2 chl:stereo fmt:s16 r:48000Hz [...] $ tests/tiny_psnr.exe native.wav swr.wav stddev: 0.71 PSNR: 99.22 MAXDIFF: 1 bytes: 8192/ 8192 Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/dca_xll.c
- tests/fate/dca.mak
- tests/ref/fate/dca-xll_51_24_48_768-dmix_2_matrix
Change #274553
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Sun 12 Jul 2026 02:02:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 683fae35e1bf9cc69d903eacc53cf5dde0ca7c7a Comments
avformat/internal: fix typo allow_unkown -> allow_unknown The declaration of ff_parse_opts_from_query_string() misspelled "unknown" as "unkown". The implementation in utils.c already uses the correct spelling. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Changed files
- libavformat/internal.h
Change #274554
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Sun 12 Jul 2026 02:02:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a6ed750664d6d8760bcee88f8aacec2e7d1b3ab7 Comments
avformat/utils: fix ff_mkdir_p() swallowing intermediate mkdir errors When creating nested directories (e.g. /a/b/c), a genuine mkdir() failure for an intermediate component was overwritten by later attempts, making the original failure harder to diagnose. Stop immediately on intermediate errors other than EEXIST, preserving errno for the caller. Existing path components remain non-fatal, as required by mkdir -p semantics. Add a regression test for creating a child below an existing parent directory. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Changed files
- libavformat/Makefile
- libavformat/tests/.gitignore
- libavformat/tests/mkdir.c
- libavformat/utils.c
- tests/fate/libavformat.mak
Change #274555
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Sun 12 Jul 2026 02:02:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8656a45be55a424af93e052e386ccac2ac46608b Comments
avformat/tls: remove orphan ff_openssl_init/ff_openssl_deinit declarations These declarations were left behind by f0913b3f16 which removed support for OpenSSL < 1.1.0. Since OpenSSL >= 1.1.0 auto-initializes, neither function has an implementation or caller. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Changed files
- libavformat/tls.h
Change #274557
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Sun 12 Jul 2026 02:02:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fe38a1e257f85ad2e16e4b3bd0bde9f6873592e7 Comments
avformat/network: make ff_network_init() follow standard AVERROR convention ff_network_init() used to return 0 on failure and 1 on success, requiring callers to check !ff_network_init(). Change it to return a negative AVERROR(EIO) on failure and 0 on success, matching the standard FFmpeg convention where negative values indicate errors. Update all callers (avio.c, rtsp.c, rtspdec.c, sapdec.c, sapenc.c, utils.c) to use the standard (ret = ff_network_init()) < 0 pattern. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Changed files
- libavformat/avio.c
- libavformat/network.c
- libavformat/rtsp.c
- libavformat/rtspdec.c
- libavformat/sapdec.c
- libavformat/sapenc.c
Change #274561
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 12 Jul 2026 06:34:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 30b6ccb59af96dd1fae7668fdbf503527a37c2fc Comments
vulkan: fix u32vec2buf/u32vec4buf alignment values We were optimistic, looking through the GLSL specs, it was illegal to use an alignment value which satisfied scalar alignment when doing vector loads. At best, the GPU compiler split it up into multiple parts.
Changed files
- libavcodec/vulkan/common.glsl
Change #274562
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 12 Jul 2026 06:34:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 43d0d365f3bb4ca9f6e5e6615a4f7aecc6e9df9d Comments
ffv1enc_vulkan: fix VRAM size detection The reduction accumulated into the zero-initialized context field instead of the local variable, so the detected VRAM was whatever device-local heap the implementation listed last, usually the 256MiB BAR heap rather than the multi-GiB VRAM heap. This made the encoder take the host-memory fallback (or fail the allocation outright at 12K and above) on hardware with plenty of VRAM.
Changed files
- libavcodec/ffv1enc_vulkan.c
Change #274563
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 12 Jul 2026 06:34:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 720bc0b916c0396ada52490cc75c652d42ccf9c7 Comments
vulkan/seg_gather: avoid scratch spills and serial prefix summing Compilers lowered the funnel indexer to scratch (spilling the data), during the tight copy loop into something that spills every load. Just use a case to select from the 2 source vectors. Summing the offsets at the end took far longer than expected and blocked all invocs. Just use a trivial subgroup add + atomic add to finish the sum quickly and with less contention.
Changed files
- libavcodec/vulkan/seg_gather.comp.glsl
Change #274564
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 12 Jul 2026 06:34:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 48236ce1a8c0d37c31ce5c6394e4bd284b8b3bc1 Comments
ffv1enc_vulkan: gather into VRAM and then copy, drop the host-only path The gather shader wrote the finished bitstream directly into a host visible buffer with BDA stores. Keep the gather output in VRAM and append a single copy-engine transfer to the same submission to move it into the host-visible readback buffer. DMA readback into cached system memory is the one path every driver optimizes. Still no CPU involvement. The host path was awfully slow and only really used because of FFv1's insane overallocation.
Changed files
- libavcodec/ffv1enc_vulkan.c
Change #274565
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 12 Jul 2026 06:34:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a09be9b91e8e1219f297586873b0d7322b47df96 Comments
apv_encode_vulkan: read the gathered bitstream back with the copy engine Same as FFv1.
Changed files
- libavcodec/apv_encode_vulkan.c
Change #274616
Category ffmpeg Changed by Shreesh Adiga <16567adigashreesh@gmail.com> Changed at Sun 12 Jul 2026 21:44:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7b9eeadda06edd6ef7f604d5c3863f30722c7c15 Comments
tests/checkasm/aes: fix memcmp size argument sizeof(16 * count) evaluates to 4 and thus only the first 4 bytes of aes output was being compared. Removing the sizeof operator will ensure that the whole output buffer will be compared.
Changed files
- tests/checkasm/aes.c
Change #274639
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2e3bc3ebb268666146e4a902a3afe8e8dbd802ad Comments
avcodec/x86/vp9lpf: Combine comparisons The VP9 loop filter involves comparing several unsigned values against the same value and combines the results: a <= I && b <= I && ... This is equivalent to max(a,b,...) <= I and using this form is beneficial: Each comparison needs one pxor* and one pcmpgtb and every comparison except the first uses one por to combine the result. Switching to max instead results in one comparison and (operands - 1) pmaxub to create the maximum; the latter can be relaxed to por if the final comparator is one**, as it is for flat8{in,out}. Doing so saves 4113B of .text here and is beneficial for performance: Old benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 78.0 vp9_loop_filter_h_4_8_8bpp_mmxext: 74.2 ( 1.05x) vp9_loop_filter_h_8_8_8bpp_c: 85.0 vp9_loop_filter_h_8_8_8bpp_mmxext: 101.9 ( 0.83x) vp9_loop_filter_h_16_8_8bpp_c: 140.3 vp9_loop_filter_h_16_16_8bpp_c: 250.7 vp9_loop_filter_h_16_16_8bpp_sse2: 176.1 ( 1.39x) vp9_loop_filter_h_16_16_8bpp_ssse3: 172.9 ( 1.38x) vp9_loop_filter_h_16_16_8bpp_avx: 165.5 ( 1.46x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 167.5 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 70.5 ( 2.32x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 69.7 ( 2.40x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 70.3 ( 2.38x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 175.5 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 93.3 ( 1.87x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 93.3 ( 1.87x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 90.1 ( 1.95x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 177.1 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 94.3 ( 1.82x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 90.6 ( 1.92x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 88.8 ( 1.99x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 186.4 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 94.7 ( 1.95x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 93.7 ( 1.98x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 89.7 ( 2.07x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 176.0 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 29.7 ( 5.92x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 29.3 ( 6.02x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 30.5 ( 5.76x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 187.7 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 65.1 ( 2.82x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 65.2 ( 2.84x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 56.0 ( 3.35x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 188.3 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 60.7 ( 3.03x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 64.8 ( 2.80x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 56.8 ( 3.21x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 199.4 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 65.8 ( 3.01x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 57.6 ( 3.46x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 56.3 ( 3.53x) vp9_loop_filter_v_4_8_8bpp_c: 82.8 vp9_loop_filter_v_4_8_8bpp_mmxext: 32.4 ( 2.50x) vp9_loop_filter_v_8_8_8bpp_c: 91.9 vp9_loop_filter_v_8_8_8bpp_mmxext: 65.6 ( 1.40x) vp9_loop_filter_v_16_8_8bpp_c: 156.2 vp9_loop_filter_v_16_16_8bpp_c: 291.3 vp9_loop_filter_v_16_16_8bpp_sse2: 125.7 ( 2.25x) vp9_loop_filter_v_16_16_8bpp_ssse3: 123.1 ( 2.31x) vp9_loop_filter_v_16_16_8bpp_avx: 115.3 ( 2.51x) New benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 78.8 vp9_loop_filter_h_4_8_8bpp_mmxext: 62.4 ( 1.26x) vp9_loop_filter_h_8_8_8bpp_c: 85.8 vp9_loop_filter_h_8_8_8bpp_mmxext: 86.5 ( 0.97x) vp9_loop_filter_h_16_8_8bpp_c: 139.3 vp9_loop_filter_h_16_16_8bpp_c: 251.3 vp9_loop_filter_h_16_16_8bpp_sse2: 164.7 ( 1.45x) vp9_loop_filter_h_16_16_8bpp_ssse3: 164.2 ( 1.49x) vp9_loop_filter_h_16_16_8bpp_avx: 155.2 ( 1.56x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 168.3 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 60.1 ( 2.80x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 60.1 ( 2.80x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 60.4 ( 2.79x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 178.1 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 83.5 ( 2.07x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 84.0 ( 2.02x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 78.0 ( 2.28x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 181.7 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 78.3 ( 2.20x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 85.1 ( 2.12x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 79.8 ( 2.27x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 184.8 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 85.6 ( 2.14x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 85.1 ( 2.09x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 77.6 ( 2.38x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 176.0 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 28.1 ( 6.27x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 32.3 ( 5.42x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 27.4 ( 6.43x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 187.4 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 55.3 ( 3.39x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 54.7 ( 3.42x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 53.7 ( 3.48x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 189.6 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 62.5 ( 3.00x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 61.3 ( 3.07x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 54.3 ( 3.47x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 199.5 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 55.1 ( 3.52x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 54.4 ( 3.66x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 53.0 ( 3.69x) vp9_loop_filter_v_4_8_8bpp_c: 84.3 vp9_loop_filter_v_4_8_8bpp_mmxext: 32.0 ( 2.62x) vp9_loop_filter_v_8_8_8bpp_c: 94.3 vp9_loop_filter_v_8_8_8bpp_mmxext: 63.7 ( 1.48x) vp9_loop_filter_v_16_8_8bpp_c: 155.8 vp9_loop_filter_v_16_16_8bpp_c: 292.0 vp9_loop_filter_v_16_16_8bpp_sse2: 119.5 ( 2.39x) vp9_loop_filter_v_16_16_8bpp_ssse3: 119.1 ( 2.39x) vp9_loop_filter_v_16_16_8bpp_avx: 111.0 ( 2.61x) *: to shift unsigned values to signed ones for pcmpgtb **: or any comparison like <= 2^n-1 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/vp9lpf.asm
Change #274641
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 10232fdd710cd15670119c71375d7d64355cde40 Comments
avcodec/x86/vp9lpf: Don't do work twice max(abs(p1-p0),abs(q1-q0)) is currently computed twice. Stop doing so. This saves 1681B of .text and gives a small performance boost. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #274642
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fee9a4fedfc0d89b6213d7b8f1c12efaf7fbaa43 Comments
avcodec/x86/vp9lpf: Improve deriving masks Deriving the fm, flat8in and flat8out masks involves calculating max{abs(a_i-a), 1<=i<=N} (with N being two or four). The current code does this by calculating the abs individually (two psubusb and a por), followed by combining the results (another por or pmaxub). But there is a better way: Calculate the min m and max M of the a_i. Then the result equals max{(M-a)^+,(a-m)^+}, which can be calculated with two psubusb, followed by combining the result. E.g. for N=2 this saves two por and exchanges two psubusb with pmaxub/pminub. Doing so saves 2062B of .text here; performance is basically flat (the length of the critical section is unchanged). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/vp9lpf.asm
Change #274643
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b5970d7cb9b5ed1754ab539d5290aae86dc8ef3c Comments
avcodec/x86/vp9lpf: Avoid reloading constant pb_80 is still in a register. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #274644
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c727bc3480640c266176134eb813b2b046165a7d Comments
avcodec/x86/vp9lpf: Avoid inverting masks Change the comparison instead to already yield the inverted mask. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #274645
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0c3a212c74399586c671f939be30e8e596335bcb Comments
avcodec/x86/vp9lpf: Avoid unnecessary stores P1, P0, Q0 and Q1 are kept in registers throughout the whole function (when using xmm registers on x64), so they need not be stored on the stack. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #274646
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a619985145c69906707a8040327d0e80dc6aa8ae Comments
avcodec/x86/vp9lpf: Combine filter2 and filter4 cases There are two differences between the filter2 and filter4 case. The first one is if (hev) { int f = av_clip_intp2(p1 - q1, BIT_DEPTH - 1); f = av_clip_intp2(3 * (q0 - p0) + f, BIT_DEPTH - 1); ... } else { int f = av_clip_intp2(3 * (q0 - p0), BIT_DEPTH - 1); ... which can simply be combined to int f = hev ? av_clip_intp2(p1 - q1, BIT_DEPTH - 1) : 0; f = av_clip_intp2(3 * (q0 - p0) + f, BIT_DEPTH - 1); which boils down to masking f by hev after the first av_clip_intp2(). The second is that two more rows are processed for filter4(), but one can simply mask the differential there, too. So one can just combine both filters into one; doing so saves 8457B of .text here and improves performance. Old benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 77.3 vp9_loop_filter_h_4_8_8bpp_mmxext: 60.8 ( 1.27x) vp9_loop_filter_h_8_8_8bpp_c: 86.3 vp9_loop_filter_h_8_8_8bpp_mmxext: 82.9 ( 1.04x) vp9_loop_filter_h_16_8_8bpp_c: 139.7 vp9_loop_filter_h_16_16_8bpp_c: 251.9 vp9_loop_filter_h_16_16_8bpp_sse2: 164.8 ( 1.44x) vp9_loop_filter_h_16_16_8bpp_ssse3: 164.4 ( 1.49x) vp9_loop_filter_h_16_16_8bpp_avx: 155.1 ( 1.59x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 169.2 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 58.0 ( 2.91x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 56.6 ( 2.99x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 57.1 ( 2.96x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 174.9 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 75.4 ( 2.32x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 80.6 ( 2.16x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 75.1 ( 2.28x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 179.7 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 79.5 ( 2.25x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 78.2 ( 2.28x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 76.1 ( 2.32x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 184.5 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 82.5 ( 2.23x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 78.7 ( 2.34x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 74.4 ( 2.48x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 176.0 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 28.4 ( 6.18x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 26.3 ( 6.69x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 26.2 ( 6.72x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 188.7 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 60.4 ( 3.11x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 53.6 ( 3.50x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 51.2 ( 3.64x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 191.7 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 55.2 ( 3.40x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 51.6 ( 3.71x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 50.8 ( 3.77x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 201.1 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 52.1 ( 3.86x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 53.9 ( 3.73x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 51.5 ( 3.90x) vp9_loop_filter_v_4_8_8bpp_c: 83.7 vp9_loop_filter_v_4_8_8bpp_mmxext: 29.7 ( 2.81x) vp9_loop_filter_v_8_8_8bpp_c: 93.2 vp9_loop_filter_v_8_8_8bpp_mmxext: 58.7 ( 1.59x) vp9_loop_filter_v_16_8_8bpp_c: 156.5 vp9_loop_filter_v_16_16_8bpp_c: 292.9 vp9_loop_filter_v_16_16_8bpp_sse2: 117.8 ( 2.43x) vp9_loop_filter_v_16_16_8bpp_ssse3: 116.7 ( 2.45x) vp9_loop_filter_v_16_16_8bpp_avx: 104.5 ( 2.78x) New benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 77.5 vp9_loop_filter_h_4_8_8bpp_mmxext: 54.8 ( 1.41x) vp9_loop_filter_h_8_8_8bpp_c: 85.5 vp9_loop_filter_h_8_8_8bpp_mmxext: 75.0 ( 1.12x) vp9_loop_filter_h_16_8_8bpp_c: 139.8 vp9_loop_filter_h_16_16_8bpp_c: 249.7 vp9_loop_filter_h_16_16_8bpp_sse2: 154.9 ( 1.54x) vp9_loop_filter_h_16_16_8bpp_ssse3: 152.9 ( 1.54x) vp9_loop_filter_h_16_16_8bpp_avx: 142.1 ( 1.62x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 167.8 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 52.3 ( 3.21x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 52.7 ( 3.18x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 51.9 ( 3.18x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 175.1 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 73.2 ( 2.39x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 74.9 ( 2.28x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 69.0 ( 2.54x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 177.7 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 72.6 ( 2.45x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 71.3 ( 2.48x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 69.3 ( 2.56x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 184.3 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 69.6 ( 2.59x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 70.2 ( 2.62x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 69.3 ( 2.66x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 176.3 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 22.0 ( 7.98x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 21.4 ( 8.23x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 21.6 ( 8.18x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 187.8 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 49.9 ( 3.75x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 47.3 ( 3.96x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 46.1 ( 4.07x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 189.7 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 51.2 ( 3.58x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 48.4 ( 3.90x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 45.9 ( 4.14x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 199.8 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 51.2 ( 3.88x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 50.5 ( 3.93x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 45.4 ( 4.40x) vp9_loop_filter_v_4_8_8bpp_c: 83.3 vp9_loop_filter_v_4_8_8bpp_mmxext: 23.2 ( 3.58x) vp9_loop_filter_v_8_8_8bpp_c: 92.6 vp9_loop_filter_v_8_8_8bpp_mmxext: 52.5 ( 1.76x) vp9_loop_filter_v_16_8_8bpp_c: 154.9 vp9_loop_filter_v_16_16_8bpp_c: 291.3 vp9_loop_filter_v_16_16_8bpp_sse2: 104.8 ( 2.68x) vp9_loop_filter_v_16_16_8bpp_ssse3: 107.5 ( 2.64x) vp9_loop_filter_v_16_16_8bpp_avx: 97.7 ( 2.90x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/vp9lpf.asm
Change #274647
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 12 Jul 2026 23:46:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a13c2b1e4f7e39a86a863a7682a6e11cd6d12dba Comments
avcodec/x86/vp9lpf: Simplify clip_u8(u8+i8) Just subtract 128 from u8 to make it signed, use paddsb and convert back to u8. Saves 2477B of .text here. Old benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 77.5 vp9_loop_filter_h_4_8_8bpp_mmxext: 54.8 ( 1.41x) vp9_loop_filter_h_8_8_8bpp_c: 85.5 vp9_loop_filter_h_8_8_8bpp_mmxext: 75.0 ( 1.12x) vp9_loop_filter_h_16_8_8bpp_c: 139.8 vp9_loop_filter_h_16_16_8bpp_c: 249.7 vp9_loop_filter_h_16_16_8bpp_sse2: 154.9 ( 1.54x) vp9_loop_filter_h_16_16_8bpp_ssse3: 152.9 ( 1.54x) vp9_loop_filter_h_16_16_8bpp_avx: 142.1 ( 1.62x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 167.8 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 52.3 ( 3.21x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 52.7 ( 3.18x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 51.9 ( 3.18x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 175.1 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 73.2 ( 2.39x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 74.9 ( 2.28x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 69.0 ( 2.54x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 177.7 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 72.6 ( 2.45x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 71.3 ( 2.48x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 69.3 ( 2.56x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 184.3 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 69.6 ( 2.59x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 70.2 ( 2.62x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 69.3 ( 2.66x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 176.3 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 22.0 ( 7.98x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 21.4 ( 8.23x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 21.6 ( 8.18x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 187.8 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 49.9 ( 3.75x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 47.3 ( 3.96x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 46.1 ( 4.07x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 189.7 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 51.2 ( 3.58x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 48.4 ( 3.90x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 45.9 ( 4.14x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 199.8 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 51.2 ( 3.88x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 50.5 ( 3.93x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 45.4 ( 4.40x) vp9_loop_filter_v_4_8_8bpp_c: 83.3 vp9_loop_filter_v_4_8_8bpp_mmxext: 23.2 ( 3.58x) vp9_loop_filter_v_8_8_8bpp_c: 92.6 vp9_loop_filter_v_8_8_8bpp_mmxext: 52.5 ( 1.76x) vp9_loop_filter_v_16_8_8bpp_c: 154.9 vp9_loop_filter_v_16_16_8bpp_c: 291.3 vp9_loop_filter_v_16_16_8bpp_sse2: 104.8 ( 2.68x) vp9_loop_filter_v_16_16_8bpp_ssse3: 107.5 ( 2.64x) vp9_loop_filter_v_16_16_8bpp_avx: 97.7 ( 2.90x) New benchmarks: vp9_loop_filter_h_4_8_8bpp_c: 77.1 vp9_loop_filter_h_4_8_8bpp_mmxext: 52.0 ( 1.48x) vp9_loop_filter_h_8_8_8bpp_c: 85.6 vp9_loop_filter_h_8_8_8bpp_mmxext: 73.3 ( 1.17x) vp9_loop_filter_h_16_8_8bpp_c: 139.2 vp9_loop_filter_h_16_16_8bpp_c: 252.4 vp9_loop_filter_h_16_16_8bpp_sse2: 149.3 ( 1.60x) vp9_loop_filter_h_16_16_8bpp_ssse3: 149.3 ( 1.62x) vp9_loop_filter_h_16_16_8bpp_avx: 140.2 ( 1.77x) vp9_loop_filter_mix2_h_44_16_8bpp_c: 168.5 vp9_loop_filter_mix2_h_44_16_8bpp_sse2: 48.4 ( 3.48x) vp9_loop_filter_mix2_h_44_16_8bpp_ssse3: 49.6 ( 3.39x) vp9_loop_filter_mix2_h_44_16_8bpp_avx: 49.0 ( 3.43x) vp9_loop_filter_mix2_h_48_16_8bpp_c: 174.8 vp9_loop_filter_mix2_h_48_16_8bpp_sse2: 66.0 ( 2.65x) vp9_loop_filter_mix2_h_48_16_8bpp_ssse3: 64.9 ( 2.69x) vp9_loop_filter_mix2_h_48_16_8bpp_avx: 64.6 ( 2.65x) vp9_loop_filter_mix2_h_84_16_8bpp_c: 177.6 vp9_loop_filter_mix2_h_84_16_8bpp_sse2: 70.5 ( 2.51x) vp9_loop_filter_mix2_h_84_16_8bpp_ssse3: 66.8 ( 2.65x) vp9_loop_filter_mix2_h_84_16_8bpp_avx: 66.3 ( 2.68x) vp9_loop_filter_mix2_h_88_16_8bpp_c: 185.6 vp9_loop_filter_mix2_h_88_16_8bpp_sse2: 72.1 ( 2.50x) vp9_loop_filter_mix2_h_88_16_8bpp_ssse3: 70.7 ( 2.54x) vp9_loop_filter_mix2_h_88_16_8bpp_avx: 65.5 ( 2.83x) vp9_loop_filter_mix2_v_44_16_8bpp_c: 175.9 vp9_loop_filter_mix2_v_44_16_8bpp_sse2: 19.2 ( 9.17x) vp9_loop_filter_mix2_v_44_16_8bpp_ssse3: 19.2 ( 9.16x) vp9_loop_filter_mix2_v_44_16_8bpp_avx: 19.1 ( 9.18x) vp9_loop_filter_mix2_v_48_16_8bpp_c: 186.9 vp9_loop_filter_mix2_v_48_16_8bpp_sse2: 49.6 ( 3.73x) vp9_loop_filter_mix2_v_48_16_8bpp_ssse3: 47.7 ( 3.89x) vp9_loop_filter_mix2_v_48_16_8bpp_avx: 43.6 ( 4.28x) vp9_loop_filter_mix2_v_84_16_8bpp_c: 189.1 vp9_loop_filter_mix2_v_84_16_8bpp_sse2: 45.8 ( 4.12x) vp9_loop_filter_mix2_v_84_16_8bpp_ssse3: 46.6 ( 4.05x) vp9_loop_filter_mix2_v_84_16_8bpp_avx: 43.0 ( 4.27x) vp9_loop_filter_mix2_v_88_16_8bpp_c: 198.6 vp9_loop_filter_mix2_v_88_16_8bpp_sse2: 43.5 ( 4.57x) vp9_loop_filter_mix2_v_88_16_8bpp_ssse3: 43.3 ( 4.57x) vp9_loop_filter_mix2_v_88_16_8bpp_avx: 43.0 ( 4.62x) vp9_loop_filter_v_4_8_8bpp_c: 83.2 vp9_loop_filter_v_4_8_8bpp_mmxext: 21.8 ( 3.81x) vp9_loop_filter_v_8_8_8bpp_c: 92.3 vp9_loop_filter_v_8_8_8bpp_mmxext: 51.5 ( 1.79x) vp9_loop_filter_v_16_8_8bpp_c: 155.6 vp9_loop_filter_v_16_16_8bpp_c: 290.3 vp9_loop_filter_v_16_16_8bpp_sse2: 105.1 ( 2.68x) vp9_loop_filter_v_16_16_8bpp_ssse3: 103.8 ( 2.72x) vp9_loop_filter_v_16_16_8bpp_avx: 97.7 ( 2.86x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #274648
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 02:57:26 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 206f2d92db2e67914cb417b9e1efac191c3b0690 Comments
avcodec/exr: bound total decoded pixels by max_pixels Use the maximum block dimensions decode_block() can assign after clipping the nominal tile or scanline block to the data window. Fixes: Timeout Fixes: 521392254/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_DEC_fuzzer-6740984590565376 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/exr.c
Change #274649
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 02:58:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a39c205ae90f3691a9996a69e7a52c06312ad32 Comments
avcodec/vorbisdec: skip the MDCT for unused channels Fixes: Timeout Fixes: 490144337/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VORBIS_DEC_fuzzer-4539724776931328 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libavcodec/vorbisdec.c
Change #274650
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 03:07:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ed4f286a1049bcd394ab9a5ce71e297f6cbba002 Comments
avcodec/ffv1dec: mask the fltmap index on the 8bit remap path Fixes: out of array access Fixes: ffv1_poc/test_ffv1_8bit_v4.avi Fixes: 6p0ahHBxreqG Found-by: SecBuddyF - Tencent KeenLab
Changed files
- libavcodec/ffv1dec.c
Change #274651
Category ffmpeg Changed by Jiale Yao <yaojiale02@163.com> Changed at Mon 13 Jul 2026 03:08:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 705ff11c2b02d2925fca5c2c78c547ccbd901182 Comments
avcodec/libcodec2: reject packet sample counts that overflow int Fixes: out of array access Fixes: 2jy_poc_codec2.zip / poc_codec2.raw Fixes: jOQASNnOm6O7 Found-by: Jiale Yao <yaojiale02@163.com>
Changed files
- libavcodec/libcodec2.c
Change #274652
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 03:08:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9c2aabaa34147b7a3812e5857bcb4f9f6e17a5f7 Comments
avcodec/cavsdec: reject invalid start-code bitreader sizes Fixes: NULL pointer dereference Fixes: 4jy_poc_cavs.zip / poc_cavs.avi Fixes: UH66Y8Om9F8X Found-by: Jiale Yao <yaojiale02@163.com>
Changed files
- libavcodec/cavsdec.c
Change #274717
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b2b0429d153cdbc1af0711af98e18d4ae861d4cf Comments
swscale/vulkan: fix invalid SPIR-V generation for plane-remapped passes The CLEAR codegen iterated components by value[i].den, while the constants pass iterates by clear.mask; unmasked components may hold leftover values with a nonzero denominator, consuming more constant IDs than were registered and emitting ID 0 into the instruction stream. The image handle arrays were also sized by the number of planes an op touches, but plane_src/plane_dst contain actual frame plane indices, so a pass writing only e.g. the alpha plane references handle 3 while only handle 0 was loaded. Either results in invalid SPIR-V, which crashes RADV inside spirv_to_nir when creating the shader object.
Changed files
- libswscale/vulkan/ops.c
Change #274718
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4b9c4b9cfb56126dccd9dd4e0c78736d1f5d6ff1 Comments
swscale/ops_dispatch: fix use-after-free when adding opaque ops passes comp points into p, which is freed before comp->backend is read. Use the copy taken before the free.
Changed files
- libswscale/ops_dispatch.c
Change #274719
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1a4250e9249682bae2c1e888f9d751a5f34ee9c0 Comments
avcodec: remove unneeded vulkan_spirv.h includes Leftover crud from before the rewrite to compile-time SPIR-V.
Changed files
- libavcodec/apv_encode_vulkan.c
- libavcodec/proresenc_kostya_vulkan.c
Change #274720
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6219d4fdd1fb61b7fff0c713f92dbdd156feaa35 Comments
vf_scale_vulkan: port to compile-time SPIR-V generation Same functionality as before, but cleaner.
Changed files
- libavfilter/vf_scale_vulkan.c
- libavfilter/vulkan/Makefile
- libavfilter/vulkan/debayer.comp.glsl
- libavfilter/vulkan/scale.comp.glsl
Change #274721
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aa6aa4ec3ef89fcaf1c7f73da4caa2116b3cbea0 Comments
swscale: remove GLSL backend No longer needed. The SPIR-V version is pretty clean and neat.
Changed files
- doc/scaler.texi
- libswscale/ops.c
- libswscale/options.c
- libswscale/swscale.h
- libswscale/vulkan/Makefile
- libswscale/vulkan/ops.c
- libswscale/vulkan/ops.h
- libswscale/vulkan/vulkan_glslang.c
- libswscale/vulkan/vulkan_shaderc.c
Change #274722
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9e9ac0dcd93d0dfe31827237539cb82b4c7e4dc7 Comments
vulkan: remove runtime shader compilation support No longer needed.
Changed files
- libavcodec/apv_encode_vulkan.c
- libavcodec/ffv1enc_vulkan.c
- libavcodec/proresenc_kostya_vulkan.c
- libavcodec/vulkan_apv.c
- libavcodec/vulkan_dpx.c
- libavcodec/vulkan_ffv1.c
- libavcodec/vulkan_prores.c
- libavcodec/vulkan_prores_raw.c
- libavfilter/vf_avgblur_vulkan.c
- libavfilter/vf_blackdetect_vulkan.c
- libavfilter/vf_blend_vulkan.c
- libavfilter/vf_bwdif_vulkan.c
- libavfilter/vf_chromaber_vulkan.c
- libavfilter/vf_flip_vulkan.c
- libavfilter/vf_gblur_vulkan.c
- libavfilter/vf_interlace_vulkan.c
- libavfilter/vf_nlmeans_vulkan.c
- libavfilter/vf_overlay_vulkan.c
- libavfilter/vf_scale_vulkan.c
- libavfilter/vf_scdet_vulkan.c
- libavfilter/vf_transpose_vulkan.c
- libavfilter/vf_v360_vulkan.c
- libavfilter/vf_xfade_vulkan.c
- libavfilter/vsrc_testsrc_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
- libswscale/vulkan/ops.c
Change #274723
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 92f2e6374dfbe9bf1c8e4d879f8810deafff3710 Comments
configure: remove libshaderc and libglslang support All of it is now gone.
Changed files
- .forgejo/workflows/test.yml
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/vulkan_glslang.c
- libavfilter/vulkan_shaderc.c
- libavutil/Makefile
- libavutil/vulkan_glslang.c
- libavutil/vulkan_shaderc.c
- libavutil/vulkan_spirv.h
Change #274724
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 11:57:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 90436de5e10ebeac98a3c5e1fb8b2f509e3f96e5 Comments
vf_libplacebo: add missing avstring.h include Otherwise compilation fails due to vulkan.h no longer including it.
Changed files
- libavfilter/vf_libplacebo.c
Change #274795
Category ffmpeg Changed by Cloud-LHY <security@clouditera.com> Changed at Mon 13 Jul 2026 18:13:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fd3ee52fab34d98a95b787d0b5ff45685766200c Comments
avcodec/tdsc: unref the reference frame before reallocating on size change Fixes: out of array access Fixes: tdsc_poc/ffmpeg-tdsc-linesize-report/poc.avi / gen_poc.py Fixes: tdsc_resize_jpeg_oob.avi / tdsc-resize-stale-linesize-jpeg-oob-generate-poc.py Fixes: p9xG4xGf9P7H Fixes: HQL7a1WgTdHZ Found-by: Cloud-LHY / Clouditera Security, Z.ai Security, NSFOCUS Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/tdsc.c
Change #274800
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 18:13:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0c29cabc97639ccf2f3d676540c3f4d4a54c423e Comments
doc/infra.txt: add fairy
Changed files
- doc/infra.txt
Change #274803
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 18:13:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 01a9a98f353bcf9ffcdfdcc62533ef063231384d Comments
doc/developer.texi: update reviews section Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- doc/developer.texi
Change #274806
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 18:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 569674ac8dc00c11eaa96d86870b186cfb076639 Comments
vulkan_encode: free CBS context, fragment and SEI buffers on close The CBS context, its current access unit fragment, and the SEI buffers were never freed, leaking the refcounted parameter set clones stored in the CBS private data on every encoder teardown.
Changed files
- libavcodec/vulkan_encode_av1.c
- libavcodec/vulkan_encode_h264.c
- libavcodec/vulkan_encode_h265.c
Change #274809
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 18:23:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ddfa842088cd86bd48bc4533f10a4b5badcbd02d Comments
vulkan_encode: destroy image views of queued pictures on uninit ff_hw_base_encode_close() frees any pictures still in the encode queue without invoking the encoder's free callback, leaking their image views when an encoder is closed without fully draining it. Also uninit the packet buffer pool before the base encode context, rather than after.
Changed files
- libavcodec/vulkan_encode.c
Change #274810
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 13 Jul 2026 18:23:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b672ae39053759557a42f3a54f31f8413a37d871 Comments
vulkan_encode: fix leak and swallowed errors in init_base_units() The encoded session parameters buffer was never freed, and both GetEncodedVideoSessionParametersKHR error paths returned err, which is always 0 at that point, reporting success on failure.
Changed files
- libavcodec/vulkan_encode_av1.c
- libavcodec/vulkan_encode_h264.c
- libavcodec/vulkan_encode_h265.c
Change #274811
Category ffmpeg Changed by Araz Iusubov <Primeadvice@gmail.com> Changed at Mon 13 Jul 2026 18:40:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fc4b5235963441cf29fa3c9f0f6d6ad1e61b8749 Comments
avfilter/vf_vqe_amf: Add AMF Video Quality Enhancer filter
Changed files
- Changelog
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_vqe_amf.c
Change #274812
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 19:14:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0089694c060bf25b628d16ba6078f083f7522bae Comments
avfilter/vf_lut3d: compute size2 after the 3DLUTSIZE directive Fixes: out of array access Fixes: lut3d_poc/poc_3dlut2.dat Fixes: 6p0ahHBxreqG Found-by: SecBuddyF - Tencent KeenLab
Changed files
- libavfilter/vf_lut3d.c
Change #274813
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 19:14:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 24c322fdb232d0a3f3790d544dcb64e5c2138e79 Comments
avfilter/vf_floodfill: size the point stack for the current frame Fixes: out of array access Fixes: 8aj_floodfill_dynamic_size.pgm / 8aj_generate_floodfill_dynamic_size_pgm.py Fixes: 3MleMXjGZvu3 Found-by: Adrian Junge (vurlo) <adjun37@gmail.com>
Changed files
- libavfilter/vf_floodfill.c
Change #274814
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 19:14:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f186c50cf53aec20e9a29059cb22ca3f2d59201c Comments
avfilter/vf_floodfill: remove unneeded variables Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavfilter/vf_floodfill.c
Change #274815
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 20:16:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cff4a692949a0c4b5ef36c1438abaccc5a1588de Comments
avfilter: add latticepal filter Convert packed 24/32-bit RGB/BGR/RGBA/BGRA input to PAL8 using a per-frame palette whose colors are placed on a face-centered cubic lattice (realized as the scaled D3/D4 checkerboard lattice), with a user-supplied density controlling the number of lattice steps spanning one color axis. Only lattice points actually used by a frame enter its palette; if a frame needs more than 256 of them, the filter will itearatively drop palettte entries and reassign affected pixels until 256 color remain lookup uses the Conway-Sloane rounding algorithm. Supported dithering modes: none, ordered 8x8 bayer (swscale), Cluster & Void blue noise and Floyd-Steinberg error diffusion. Co-Authored-by: Fable-5 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- Changelog
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/version.h
- libavfilter/vf_latticepal.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-latticepal
- tests/ref/fate/filter-latticepal-batched
- tests/ref/fate/filter-latticepal-bayer
- tests/ref/fate/filter-latticepal-maxcolors
- tests/ref/fate/filter-latticepal-refine
- tests/ref/fate/filter-latticepal-residual
Change #274816
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 20:22:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7e38b617b32f996beaa371bbf04b39907d7a527 Comments
avfilter/vf_swaprect: size the temp row buffer for the widest plane Fixes: out of array access Fixes: 7aj_swaprect_odd17_nv12.nut / 7aj_generate_swaprect_odd17_nv12.py Fixes: VRAXYvKtmKa8 Found-by: Adrian Junge (vurlo) <adjun37@gmail.com>
Changed files
- libavfilter/vf_swaprect.c
Change #274817
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 20:29:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision de771bd52774a52d45b0e2c82e56995a1ef40df7 Comments
avformat/ty: don't let the Series2 AC3 trim underflow the packet size Fixes: negative-size-param Fixes: ty-s2-ac3-negative-size-single-file.ffconcat / create_poc.py Fixes: g0qeE6KvrjZi Found-by: Adrian Junge (vurlo)
Changed files
- libavformat/ty.c
Change #274818
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 20:36:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ba55f425fdd889a7998fce068367e9d3a6c40af4 Comments
avcodec/hevc: Fix integer overflow in WPP entry point range check Fixes: out of array access Fixes: poc.hevc / make_poc.py Fixes: 83WY4xnR87vb Fixes: dad354f38d (avcodec/hevc: Check max ctb addresses for WPP) Found-by: VulnForge Security Research Team <haoyuliu@clouditera.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavcodec/hevc/hevcdec.c
Change #274819
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e1ef95c779a3757d21ab970c06aac3e9e1b71974 Comments
avcodec/d3d12va_av1: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_av1.c
Change #274820
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7309ad9fd78d875e60427daa52260834e27ef2ea Comments
avcodec/d3d12va_av1: check slice bitstream size against available buffer size
Changed files
- libavcodec/d3d12va_av1.c
Change #274821
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 19e81f9260e64c43604556cbd4079fadee4ac4f1 Comments
avcodec/d3d12va_h264: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_h264.c
Change #274822
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fea3f13a1cc5395b0ab6db95dd20e7cf6023c311 Comments
avcodec/d3d12va_hevc: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_hevc.c
Change #274823
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 26a9f9b3aeb054901b69518223af0d6f4f991fd9 Comments
avcodec/d3d12va_mpeg2: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_mpeg2.c
Change #274824
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1307db3d3c95223b1d2164844e0542cddbb2a401 Comments
avcodec/d3d12va_vc1: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_vc1.c
Change #274825
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 13 Jul 2026 21:13:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a633df56a455ffb75cd97af784cb1f2d2ec2bca9 Comments
avcodec/d3d12va_vp9: check size of frame bitstream against available buffer size
Changed files
- libavcodec/d3d12va_vp9.c
Change #274826
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 13 Jul 2026 21:35:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 597036b692b8c39198fe572aad027eeb4c13da35 Comments
avformat: Add recursion limit This is a generic recursion limit that is not specific to a demuxer it does change public API which makes this unsuitable for backporting Fixes: self_ref.ffconcat Reported-by: Yuhao Jiang <danisjiang@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/avformat.c
- libavformat/avformat.h
- libavformat/options_table.h
- libavformat/version.h
Change #274831
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 14 Jul 2026 04:52:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 58d39e99e26d1116f43a67d66ecfe71dba316875 Comments
avformat/concatdec: Check recursion depth This variant is easy backportable but is concatdec specific Fixes: self_ref.ffconcat Reported-by: Yuhao Jiang <danisjiang@gmail.com> Rediscovered-by: Anxious Koisi Fixes: RWHkT0ASFMNI Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/concatdec.c
Change #274844
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 14 Jul 2026 10:01:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f769e433a3486252143e8d912c45fe44a47d8c04 Comments
Revert "tests/checkasm/vp9dsp: Allow to run only a subset of tests" This reverts commit 7bc35b8426cee8114b5d807b4d0e37fefe9995fa. The aim of this patch can now be achieved via checkasm's --function pattern matching. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
- tests/checkasm/vp9dsp.c
Change #274845
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 14 Jul 2026 10:01:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8bea614d987e481c5e912588c50dbdc9920f87f7 Comments
avcodec/x86/sbcdsp: Avoid shift Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/sbcdsp.asm
Change #274859
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2dbcec5222775b9afd82c6379f20da5ebe91e728 Comments
swscale/ops_dispatch: remove outdated comment Missed by 228ef8d97b. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_dispatch.h
Change #274861
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 670324675fed1ea22f98e5ad07d5fcf4375e0187 Comments
swscale/uops: add extra convenience metadata for the backends Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops.c
- libswscale/uops.h
Change #274862
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 17a9a59333469cf98dc7459f47968b160422dca3 Comments
swscale/x86/ops: avoid direct reliance on `ops` metadata Instead, use the new metadata introduced in the previous commit. The motivating reason here is a desire to stop taking a direct SwsOpList from the backends altogether. In theory, we could still recover this information from the `uops` list itself, but that would require far more boilerplate than simply having uops.c generate it using existing SwsOpsList helpers. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/x86/ops.c
Change #274863
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 33d183a4735f170d91456e0ce59ebcaf4b4a9480 Comments
swscale/ops_dispatch: add SwsOpBackend.compile_uops() This can be used as an alternative to the existing compile() backend, that takes SwsUOpList instead of SwsOpList. Down the line, I plan on also moving the uops translation to the dispatch layer itself, but this requires some further changes which have not yet been merged, so this commit represents a stopgap solution. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_dispatch.h
- libswscale/uops_backend.c
Change #274864
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bb553f91605d963173312474210f0a9444479c7f Comments
swscale/x86/ops: implement compile_uops() This also splits off the mmsize determination to a separate helper, to make the code a bit more reusable. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/x86/ops.c
Change #274865
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b3a998699c53aa3be37919becb6496dddb6b0a7b Comments
swscale/x86/ops: add micro-op dump to compile_uops_x86() as well This was only done in compile_uops_c(). Add it here as well for consistency. Long-term I want to move this code to ops_dispatch.c, but that requires moving the packed shuffle solver there as well, which is still WIP. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/x86/ops.c
Change #274866
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 44e1b60c6acf0511222f4e0892f3545696bb7769 Comments
swscale/uops: consolidate SWS_UOP_{PERMUTE,COPY,MOVE} Rather than having two uops for the C reference code and a separate uop for the x86 backend, we can just implement the C reference using the same register-register assignment logic. This results in only slightly worse codegen, since the compiler is smart enough to eliminate the unnecessary copies. The main downside is the fact that we need to allocate extra stack space to back-fill the remaining (unused) pointers. In theory, we could do this more efficiently by re-using unused *input* registers directly, but that would require a lot of reliance on compile-time constant folding teasing apart the entire register index tracking loop and duplicate check, so this is a useful middle ground. On platforms like x86, we still don't care about the PERMUTE vs COPY distinction, but it's also harmless (2-3 extra lines to instantiate the underlying MOVE macro on both uop variants). Finally, we need to add a mask to the move uops to keep track of which outputs are actually needed (especially for checkasm). Though it does result in the rather unfortunate downside that it bloats the names of the uop names. The op lists change to reflect the new representation, e.g.: rgb24 16x16 -> bgr24 16x16: [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 min: {0 0 0 _}, max: {255 255 255 _} [ u8 +++X] SWS_OP_SWIZZLE : 2103 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 ('X' unused, 'z' byteswapped, '=' copied, '$' const, '+' integer, '0' zero) translated micro-ops: u8_read_packed_xyz - u8_permute_zyxw + u8_permute_xyzw_txz_xzt u8_write_packed_xyz Signed-off-by: Niklas Haas <git@haasn.dev>Changed files
- libswscale/uops.c
- libswscale/uops.h
- libswscale/uops_list.h
- libswscale/uops_macros.h
- libswscale/uops_macros_gen.c
- libswscale/uops_tmpl.c
- libswscale/x86/ops.c
- libswscale/x86/ops_int.asm
- libswscale/x86/uops_macros.asm.h
- tests/checkasm/sw_ops.c
- tests/ref/fate/sws-ops-list
Change #274867
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 909ca1d7ce77f9a188c979902acc223096b5a5ec Comments
swscale/x86/ops: add missing non-FMA SWS_UOP_LINEAR fallback Needed for platforms without SSE4.1 support, as well as checkasm. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/x86/ops.c
- libswscale/x86/ops_float.asm
- libswscale/x86/uops_macros.asm.h
Change #274868
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e65dab2b5919ede3a4f308d723e46a6f65643ca8 Comments
swscale/tests/sws_ops: rewrite to test uops directly Instead of awkwardly reverse-engineering each uop to reflect it back to the corresponding SwsOp, this leverages the new compile_uops() API to directly test the uop in question. This is not only vastly simpler but also fixes several major shortcomings with the previous design, such as always having to keep the reflection code in sync for any newly added uop, or not testing uops that get translated to a packed shuffle fast path. The major downside is that arch-specific uops can now no longer be tested against the C reference unless we specifically add a C reference function for each relevant uop; and also, that the packed shuffle fast path is currently no longer tested by checkasm. (But this will be fixed by my upcoming pshufb uop series) Another downside is that this effectively disables testing for e.g. aarch64, since it does not yet use the uops architecture. $ time checkasm --test=sw_ops --repeat=10 # 1.85s -> 1.39s Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops.h
- tests/checkasm/sw_ops.c
Change #274869
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 14 Jul 2026 14:24:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 150f7d15df726bdcf49a7c5ef9d8d67c46ed3d41 Comments
swscale/uops_macros_gen: drop checkasm planar write hack No longer needed since the new uops-based rewrite. Here's hoping we won't need to revert it if these ops come up again in the future. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops_macros.h
- libswscale/uops_macros_gen.c
Change #274876
Category ffmpeg Changed by lck <luckysk@foxmail.com> Changed at Tue 14 Jul 2026 15:54:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9287fc3bc90e6c2cbdd5a5955eb46153501695fe Comments
lavc/mediacodecdec: rename MediaCodecH264DecContext to MediaCodecContext The context structure was named specifically for H.264, but it's actually used for multiple codecs (H.264, H.265, MPEG-4, etc.). Renaming it to MediaCodecContext better reflects its actual usage and makes the code more consistent.
Changed files
- libavcodec/mediacodecdec.c
Change #274877
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Tue 14 Jul 2026 16:26:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 312c8309162eab790d6bed069db7eb1a52263e1e Comments
avfilter/dnn: auto-initialize nireq for Torch backend Initialize ctx->nireq with av_cpu_count() / 2 + 1 when unset, matching the TensorFlow and OpenVINO backends. Create ctx->nireq THRequestItems in a loop instead of hardcoding a single request, enabling concurrent async inference requests for improved throughput. Signed-off-by: Raja Rathour <imraja729@gmail.com>
Changed files
- libavfilter/dnn/dnn_backend_torch.cpp
Change #274893
Category ffmpeg Changed by Vignesh Venkat <vigneshv@google.com> Changed at Tue 14 Jul 2026 20:50:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a302c9ae44ec07cbe12417f14c1852868f903f60 Comments
avformat/mov: Add itut-t35 data codec support The specification for the T35MetaDataSampleEntry ('it35') box is available in the "Draft text of ISO/IEC 14496-12 10th edition" which can be found on the MPEG website: https://www.mpeg.org/standards/MPEG-4/12/ Support the t35 track in mov and export the `t35_identifier` as extradata and human readable sample description as the stream description. Signed-off-by: Vignesh Venkat <vigneshv@google.com>Changed files
- libavformat/isom.c
- libavformat/mov.c
Change #274894
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Tue 14 Jul 2026 20:50:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8a3e9147b697f093ef59675906ceb8f64cd78d19 Comments
avformat/mov: parse cdsc track references Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/mov.c
Change #274895
Category ffmpeg Changed by Vignesh Venkat <vigneshv@google.com> Changed at Tue 14 Jul 2026 20:50:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5002b55ce79fda51e1d329a28d112495aab9f8cb Comments
fate/mov: Add fate test for t35 cdsc track Signed-off-by: Vignesh Venkat <vigneshv@google.com>
Changed files
- tests/fate/mov.mak
- tests/ref/fate/mov-t35-cdsc-track
Change #274896
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c7546ce0ea6e451c33bf16c8ea1a341b917652a5 Comments
avutil/pixfmt: add AV_PIX_FMT_CUARRAY for opaque CUDA block-linear surfaces Add a new hardware pixel format representing opaque block-linear CUDA arrays (CUarray). This format is used by NVDEC when decoding into opaque surfaces registered with cuvidRegisterDecodeSurfaces, and can be consumed directly by NVENC as CUDA array input without requiring a pitch-linear copy. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- doc/APIchanges
- libavutil/pixdesc.c
- libavutil/pixfmt.h
Change #274897
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ef3dcf4ea6139f2b8cad29e67b48a39f094fa3bc Comments
avutil/hwcontext_cuda: add CUarray surface pool support Extend the internal CUDA frames context (CUDAFramesContext) to manage block-linear CUarray surfaces alongside the existing pitched-linear allocations. When the frames context format is AV_PIX_FMT_CUARRAY, the caller (e.g. NVDEC) can fill cuarray_desc and cuarray_num_surfaces before calling av_hwframe_ctx_init(), which then allocates the CUarray surfaces. Also add cuda_transfer_data_from_cuarray() to support hwdownload from CUarray frames to host memory via cuMemcpy2DAsync. Co-authored-by: Diego de Souza <ddesouza@nvidia.com> Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- doc/APIchanges
- libavutil/hwcontext_cuda.c
- libavutil/hwcontext_cuda.h
- libavutil/hwcontext_cuda_internal.h
- libavutil/version.h
Change #274898
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ca13ad0c2873f682f99ae52cfe7c8b611044d63b Comments
avcodec/nvdec: add opaque CUARRAY output and zero-copy decode support Add support for NVDEC opaque output using block-linear CUarray surfaces registered with cuvidRegisterDecodeSurfaces (Video Codec SDK 13.1+). Two output modes are implemented: - Zero-copy (unsafe_output): decode surfaces are exposed directly to the consumer (e.g. NVENC). The surface is locked via surface_in_use[] and released when the downstream AVBufferRef is freed. - Safe copy (!unsafe_output): the frame is set up pointing to the decode CUarray, then av_frame_make_writable() copies it into a new CUarray from the output hwframes pool via cuda_transfer_data(). This decouples the decode and encode surface lifetimes. All opaque-specific code is guarded by NVDEC_HAVE_OPAQUE_OUTPUT_SUPPORT, with a AVERROR(ENOSYS) fallback when building against older SDK versions. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>Changed files
- libavcodec/nvdec.c
- libavcodec/nvdec.h
Change #274899
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision acbaf420aade95d5965260ede91945b194093b32 Comments
avcodec/nvdec: register CUARRAY hwaccel variants for all supported codecs Add CUARRAY hwaccel structs (ff_<codec>_nvdec_cuarray_hwaccel) and the corresponding AV_PIX_FMT_CUARRAY entries in each decoder's pixel format negotiation list. This allows decoders to advertise CUARRAY as a supported hardware output format alongside AV_PIX_FMT_CUDA. Codecs: H.264, HEVC, AV1, MPEG-1, MPEG-2, MPEG-4, VC-1, WMV3, VP8, VP9. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- configure
- libavcodec/Makefile
- libavcodec/av1dec.c
- libavcodec/h263dec.c
- libavcodec/h264_slice.c
- libavcodec/h264dec.c
- libavcodec/hevc/hevcdec.c
- libavcodec/hwaccels.h
- libavcodec/hwconfig.h
- libavcodec/mpeg12dec.c
- libavcodec/mpeg4videodec.c
- libavcodec/nvdec_av1.c
- libavcodec/nvdec_h264.c
- libavcodec/nvdec_hevc.c
- libavcodec/nvdec_mpeg12.c
- libavcodec/nvdec_mpeg4.c
- libavcodec/nvdec_vc1.c
- libavcodec/nvdec_vp8.c
- libavcodec/nvdec_vp9.c
- libavcodec/vc1dec.c
- libavcodec/vp8.c
- libavcodec/vp9.c
Change #274900
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0c0580e5bf97fc5792af0b635ce5a50a501526ee Comments
avcodec/cuviddec: add CUARRAY opaque output and zero-copy support Implement opaque block-linear output for the CUVID decoder, mirroring the NVDEC hwaccel path but within the standalone CUVID demuxer/decoder. Key additions: - output_format=cuarray option and zero_copy toggle - CUarray surface creation and cuvidRegisterDecodeSurfaces - Zero-copy path: frames reference decode CUarray surfaces directly - Copy path: output surfaces allocated from the hwcontext_cuda pool - Deferred decoder cleanup (CuvidDecoderCleanup) to handle the case where surfaces outlive the decoder due to encoder buffering - 444 chroma sw_pix_fmt remapping to semi-planar (NV24, P410, P412, P416) to match the native CUarray layout - Per-plane linesize derived from CUarray plane descriptors via cuArrayGetPlane / cuArray3DGetDescriptor - Crop, resize, and deinterlace forced off (with warnings) for cuarray output, as the decode surfaces are used directly All opaque-specific code is guarded by NVDEC_HAVE_OPAQUE_OUTPUT_SUPPORT. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>Changed files
- libavcodec/cuviddec.c
Change #274901
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a127ad2da64e7337efa850a5186ead9ee70b546d Comments
avcodec/nvenc: add CUARRAY (block-linear) input support Allow NVENC to accept AV_PIX_FMT_CUARRAY frames by registering them as NV_ENC_INPUT_RESOURCE_TYPE_CUDAARRAY. This enables zero-copy transcode when paired with NVDEC CUARRAY output, avoiding the pitched-linear intermediate copy. Also accept semi-planar 444 formats (NV24, P410, P412, P416) and map them to the corresponding NVENC buffer formats when registered as CUarray input resources. Guarded by NVENC_HAVE_CUDA_ARRAY_INPUT_SUPPORT (SDK 13.1+). Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavcodec/nvenc.c
- libavcodec/nvenc.h
- libavcodec/version.h
Change #274902
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1eb47126215761abf89ff9db8fd9164bd596d206 Comments
fftools/ffmpeg_dec: improve hwaccel format negotiation for CUARRAY Adjust get_format() to prefer the exact hwaccel_output_format requested by the user when multiple hardware formats are available (e.g. both AV_PIX_FMT_CUDA and AV_PIX_FMT_CUARRAY). Previously, the loop would break on the first matching device type, ignoring the user's preferred output format. When the preferred format is not available, the code now falls back gracefully and emits a warning. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- fftools/ffmpeg_dec.c
Change #274903
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Tue 14 Jul 2026 21:45:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 07020f5ce8dbac1bbde8cb9fa1cad1accb9a5042 Comments
avfilter/hwupload_cuda: add CUARRAY output and semi-planar 444 format support Add an output_format option (cuda | cuarray) so the filter can produce either pitched-linear (AV_PIX_FMT_CUDA, default) or block-linear (AV_PIX_FMT_CUARRAY) device frames. This enables host-to-device upload directly into CUarray surfaces for the CUARRAY transcode pipeline. Also extend the accepted input pixel format list with semi-planar 444 formats (NV24, P410, P416) and the planar MSB variants (YUV444P10MSB, YUV444P12MSB). Semi-planar 444 formats are rejected with a clear error when output_format=cuda, as they are only supported by the CUarray allocation path. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/version.h
- libavfilter/vf_hwupload_cuda.c
Change #274917
Category ffmpeg Changed by zhanghongyuan <zhanghongyuan@uniontech.com> Changed at Tue 14 Jul 2026 23:25:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ac91f1c0f7001cd62528a2130a41379fd2b6d176 Comments
avdevice/pulse_audio_dec: validate sample spec before use ff_codec_id_to_pulse_format() returns PA_SAMPLE_INVALID for unsupported codecs (e.g. AAC, FLAC, Opus). Without validation, the invalid format propagates to pa_frame_size() and other PA calls, causing assertion failures or division-by-zero. Add pa_sample_spec_valid() check, matching the existing guard in pulse_audio_enc.c. Signed-off-by: zhanghongyuan <zhanghongyuan@uniontech.com>
Changed files
- libavdevice/pulse_audio_dec.c
Change #274925
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 15 Jul 2026 00:48:26 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 96bce2956546468bc1019fa772eae8820fe48c68 Comments
avformat/mov: fix error log for cdsc track references Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/mov.c
Change #274933
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 15 Jul 2026 02:17:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1ad50bb62ced9c3a8479ebc57dc3c78d89c25eda Comments
configure: gate CUARRAY support on ffnvcodec capabilities The CUARRAY implementation unconditionally references CUDA array formats and dynamic-loader entries added in nv-codec-headers 13.1. This breaks builds with older ffnvcodec versions that configure still accepts. Probe for the complete CUARRAY header support and use the result to disable only CUARRAY hwaccels and code paths. Ordinary CUDA, NVDEC, NVENC, and hwupload_cuda remain available with older headers. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- configure
Change #274934
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Wed 15 Jul 2026 02:24:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d7fe91e9c38fa968034d33d15c3b6c79d0f9c405 Comments
avutil/hwcontext_cuda: fix build with old cuda headers
Changed files
- libavutil/hwcontext_cuda.c
Change #274935
Category ffmpeg Changed by Thomas Guilbert <tguilbert@chromium.org> Changed at Wed 15 Jul 2026 03:36:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 005e963c85689f4714ea9948a6be4739fc68ebc9 Comments
Guard against int overflow when discarding samples In `discard_samples()`, the rescaling operation can evaluate to AV_NOPTS_VALUE if the rescaling operation overflows. This commit prevents adjusting timestamp and durations by the invalid value.
Changed files
- libavcodec/decode.c
Change #274936
Category ffmpeg Changed by Mirkó Visontai <mirkov@google.com> Changed at Wed 15 Jul 2026 05:47:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1588bce21b6d5d9064fd9576c038fd8d6ec8beac Comments
avdevice/android_camera: fix OOB read in metadata parsing ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS metadata is an int32[n*4] array (one 4-tuple per stream config: format, width, height, input/output flag). ACameraMetadata_const_entry.count is the total number of int32_t elements, not the number of tuples. The loop bound must be count/4 to avoid iterating past the end of the array. Similarly, ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES is an int32[n*2] array (min/max pairs). The loop bound must be count/2. Without this fix, both loops over-iterate and read heap memory beyond the metadata array bounds. Signed-off-by: Mirko Visontai <mirkov@google.com>
Changed files
- libavdevice/android_camera.c
Change #274955
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 15 Jul 2026 12:46:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a5e6c0175a7245fc1a9f4639da2810156128aa8b Comments
swscale/uops: mark unneeded rows as zero in translate_linear_op()
Changed files
- libswscale/uops.c
- libswscale/uops_macros.h
Change #275023
Category ffmpeg Changed by Hans-Kristian Arntzen <post@arntzen-software.no> Changed at Thu 16 Jul 2026 09:19:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0661ef6bb3e50f502e79d3c5fea1c83e860f1d09 Comments
avcodec/h264: Ensure that private HW data is freed early for pictures. Vulkan video decode holds a reference to a VkSemaphore that is waited on in ff_vk_decode_free_frame. The bug manifests when a H264 stream changes resolution (or similar) where the stream needs to be reset in-flight. In this case, the wait_semaphores call ends up waiting on a destroyed semaphore, leading to segfaults in drivers. FFVulkanDecodePicture does not hold an owning reference to the semaphore, so destruction order matters in this case. Vulkan validation flags the error as waiting on an invalid semaphore.
Changed files
- libavcodec/h264_picture.c
Change #275024
Category ffmpeg Changed by Hans-Kristian Arntzen <post@arntzen-software.no> Changed at Thu 16 Jul 2026 09:19:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d34492955221cc2633a9fe26145e099a702b9d90 Comments
avcodec/hevc: Ensure that private HW data is freed early for pictures. Lynne suggested that HEVC would have a similar bug. I couldn't reproduce a crash or VVL error in this area. Comment copied from the h264 fix: Vulkan video decode holds a reference to a VkSemaphore that is waited on in ff_vk_decode_free_frame. The bug manifests when a H264 stream changes resolution (or similar) where the stream needs to be reset in-flight. In this case, the wait_semaphores call ends up waiting on a destroyed semaphore, leading to segfaults in drivers. FFVulkanDecodePicture does not hold an owning reference to the semaphore, so destruction order matters in this case. Vulkan validation flags the error as waiting on an invalid semaphore.
Changed files
- libavcodec/hevc/refs.c
Change #275025
Category ffmpeg Changed by Hans-Kristian Arntzen <post@arntzen-software.no> Changed at Thu 16 Jul 2026 09:19:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 977db8c2cbfc835401f972dc15161fc01155b189 Comments
avcodec/av1: Ensure that private HW data is freed early for pictures. Comment copied from the h264 fix: Vulkan video decode holds a reference to a VkSemaphore that is waited on in ff_vk_decode_free_frame. The bug manifests when a H264 stream changes resolution (or similar) where the stream needs to be reset in-flight. In this case, the wait_semaphores call ends up waiting on a destroyed semaphore, leading to segfaults in drivers. FFVulkanDecodePicture does not hold an owning reference to the semaphore, so destruction order matters in this case. Vulkan validation flags the error as waiting on an invalid semaphore.
Changed files
- libavcodec/av1dec.c
Change #275026
Category ffmpeg Changed by Hans-Kristian Arntzen <post@arntzen-software.no> Changed at Thu 16 Jul 2026 09:19:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0b0870dc8cfe099f51a4836c3ff5b34d77e6b5cb Comments
avcodec/vp9: Ensured that private HW data is freed early for pictures. Comment copied from the h264 fix: Vulkan video decode holds a reference to a VkSemaphore that is waited on in ff_vk_decode_free_frame. The bug manifests when a H264 stream changes resolution (or similar) where the stream needs to be reset in-flight. In this case, the wait_semaphores call ends up waiting on a destroyed semaphore, leading to segfaults in drivers. FFVulkanDecodePicture does not hold an owning reference to the semaphore, so destruction order matters in this case. Vulkan validation flags the error as waiting on an invalid semaphore.
Changed files
- libavcodec/vp9.c
Change #275029
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:28:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b801236856a1bed30052e4ca008a3cc88976ddb0 Comments
avutil/bprint: fix pointer signedness in return value for av_bprint_get_buffer() This is usually silenced by -Wno-pointer-sign, but a good fix nonetheless.
Changed files
- libavutil/bprint.c
Change #275030
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:28:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 61939878a48dcd04ab0431cd440397f1434e7d14 Comments
swscale/aarch64/rasm: use AVBPrint instead of custom string functions AVBPrint can be #include'd directly into aarch64/ops_asmgen so it can keep working standalone. This move will help implementing runtime JIT support for aarch64. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/rasm.h
- libswscale/aarch64/rasm_print.c
Change #275031
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:30:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5e7983d7fc34985a8750a66ad5b727ae803b3d6b Comments
swscale/aarch64/ops: fix SWS_OP_CLEAR parameter extraction The mask at op->clear.mask already contains only the components which are necessary. The values in op->clear.value may contain stale values for unneeded components. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_impl_conv.c
Change #275032
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:30:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3d5ab8093b1c163f8362a6ab57a818e46035de97 Comments
swscale/aarch64/ops: perform pass splitting while generating ops_entries.c There was a mismatch between the ops generated by sws_ops_aarch64 and the aarch64 backend, leading to missed optimizations. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_entries.c
- libswscale/tests/sws_ops_aarch64.c
Change #275033
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:30:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 136ecf554d69f1c65edc354391b818e0dbda9e93 Comments
swscale/aarch64/ops: remove struct SwsAArch64BackendContext and aarch64_optimize() stubs The purpose of this struct and function was to perform aarch64-specific optimizations, but the backend will eventually be converted to the new uops architecture, which has the ability to perform arch-specific optimizations. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops.c
Change #275034
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:30:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 91f4552d9f633ad341659208ee4752ffa0f2cdb5 Comments
swscale/aarch64/ops: move SwsOpExec/SwsOpImpl offset value checks to ops.c This prevents build warnings for ops_asmgen on non-aarch64 hosts. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops.c
- libswscale/aarch64/ops_impl.h
Change #275035
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:30:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a09558e5cca19177efbdd9105f9d5ba9a6d50b5 Comments
swscale/uops: move some simple functions to header file So that they may be used without uops.c. This will be useful for aarch64/ops_asmgen.c which is built for the host system, and not the target system. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/ops.c
- libswscale/uops.h
Change #275036
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:32:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4d9be5f57c0e3153c1741bcfc54a13d0d3943f43 Comments
swscale/jit: move jit-related code to its own file Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/Makefile
- libswscale/jit.c
- libswscale/jit.h
- libswscale/utils.c
Change #275037
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:32:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 771999278027b1930b0f2948ec8a9f24659446e6 Comments
swscale/jit: implement ff_sws_jit_protect() for win32 Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/jit.c
Change #275040
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Thu 16 Jul 2026 10:46:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1dae8f89b24ff23565be29b689c061a2d499bbeb Comments
swscale/uops: generate more specific masks for unpack when translating Unused components weren't being taken into consideration.
Changed files
- libswscale/uops.c
- libswscale/uops_macros.h
- tests/ref/fate/sws-ops-list
Change #275041
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Thu 16 Jul 2026 10:54:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 86c03a14ee81536f19e7cecf9d9dc028a3bba896 Comments
avcodec/d3d12va_encode_av1: add user-configurable tile support Add a "tiles" option (WxH format) to the D3D12VA AV1 encoder. When unset, the encoder falls back to the minimum number of tile columns/rows that satisfies AV1 spec constraints. Multi-tile support is also a prerequisite for 8K encoding. Example usage: # default (minimum tiles, auto-computed): ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v av1_d3d12va output.mp4 # 2x2 tile (4 tiles): ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v av1_d3d12va -tiles 2x2 output.mp4 # 4x4 tile - required for 8K (7680x4320): ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input_8k.mp4 -c:v av1_d3d12va -tiles 4x4 output_8k.mp4 Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- libavcodec/d3d12va_encode.c
- libavcodec/d3d12va_encode.h
- libavcodec/d3d12va_encode_av1.c
Change #275043
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 16 Jul 2026 11:17:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ceabc9b306f5385d92efdd9cd18d210deb3055b3 Comments
avcodec/x86/vp9lpf: Avoid load Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9lpf.asm
Change #275068
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Thu 16 Jul 2026 15:02:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7f0b6476b6ef2d07d163a7d3229f8c9e250112b5 Comments
avcodec/nvdec: pass hw format explicitly to frame params avcodec_get_hw_frames_parameters() may invoke frame_params from an application's get_format() callback. ff_get_format() clears the current hwaccel before calling get_format(), so avctx->hwaccel is NULL at that point. The CUARRAY frame-parameter path dereferenced avctx->hwaccel to distinguish CUDA from CUARRAY, causing callers such as mpv to crash. Add per-variant callbacks that pass the registered pixel format explicitly instead. Fixes issue #23826. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavcodec/nvdec.c
- libavcodec/nvdec.h
- libavcodec/nvdec_av1.c
- libavcodec/nvdec_h264.c
- libavcodec/nvdec_hevc.c
- libavcodec/nvdec_mjpeg.c
- libavcodec/nvdec_mpeg12.c
- libavcodec/nvdec_mpeg4.c
- libavcodec/nvdec_vc1.c
- libavcodec/nvdec_vp8.c
- libavcodec/nvdec_vp9.c
Change #275073
Category ffmpeg Changed by Vignesh Venkat <vigneshv@google.com> Changed at Thu 16 Jul 2026 21:35:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e0947fcb655c8663a7fc3351254f6378b9a8305f Comments
avcodec/hevcdec: Support SMPTE-2094-50 metadata Handle SMPTE-2094-50 metadata that appears as a SEI message. Signed-off-by: Vignesh Venkat <vigneshv@google.com>
Changed files
- libavcodec/hevc/hevcdec.c
Change #275074
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Thu 16 Jul 2026 21:49:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8e081d3c31c84429a117e14b7aa947b7c4bf6e90 Comments
checkasm: sw_ops: Fix building with older versions of Clang Older versions of Clang (17 and older) errored out on the previous form like this: ./src/tests/checkasm/sw_ops.c:210:9: error: expected expression 210 | static_assert(sizeof(src0[1]) >= sizeof(uint32_t[256]), "palette plane too small"); | ^ /usr/include/assert.h:158:24: note: expanded from macro 'static_assert' 158 | # define static_assert _Static_assert | ^ While newer versions of Clang merely warned about it: ./src/tests/checkasm/sw_ops.c:210:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 210 | static_assert(sizeof(src0[1]) >= sizeof(uint32_t[256]), "palette plane too small"); | ^ /usr/include/assert.h:158:24: note: expanded from macro 'static_assert' 158 | # define static_assert _Static_assert | ^Changed files
- tests/checkasm/sw_ops.c
Change #275077
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Thu 16 Jul 2026 23:39:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7f6b35d6c804ed8d1bc517c33044f075d72852ba Comments
arm: Avoid warnings about redefining HWCAP constants Before ced4a6ebc9e7cd92d0ca9b9fb8f9d1013d23cbfa, we used constants in the form HWCAP_NEON. In that commit, they were renamed to HWCAP_ARM_NEON, to match the pattern used for aarch64 and PPC. On PPC our naming is entirely custom to us, upstream headers (from e.g. glibc) use an entirely different naming. On aarch64, we use names similar to the system headers, where they are named e.g. HWCAP_CRC32, but we add an extra prefix, naming them HWCAP_AARCH64_CRC32, to avoid any potential conflict and redefinition issues. (In practice, this isn't needed - both glibc, musl and BSDs provide the aarch64 HWCAP_ defines with the same names and same literal expansion.) However, on ARM, the landscape of the HWCAP defines is much less consistent. On glibc, <bits/hwcap.h> (which gets included by <sys/auxv.h>) provides most constants with an HWCAP_ARM_ prefix. (The couple newest constants lack that prefix though.) The kernel headers, in <asm/hwcap.h>) define them with just a HWCAP_ prefix, i.e. HWCAP_ARM_NEON vs HWCAP_NEON. For the actual expansion, <asm/hwcap.h> defines HWCAP_NEON as (1 << 12), while glibc <bits/hwcap.h> defines HWCAP_ARM_NEON as 4096. Musl's <bits/hwcap.h> defines both HWCAP_NEON and HWCAP_ARM_NEON, as (1 << 12). The BSDs define HWCAP_NEON in <elf.h>, defined as 0x00001000. Thus, all system headers define the constant with differing expansions. And they differ in which name they expose for the constants. But we provide our definitions in any case. Due to all this, wrap our definitions in #ifndefs, to avoid warnings about redefining the constants on glibc.
Changed files
- libavutil/arm/cpu.c
Change #275081
Category ffmpeg Changed by deng.zewen <deng.zewen@zte.com.cn> Changed at Fri 17 Jul 2026 04:44:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8d394252d80d045bd5ad473f25e85dc55556105d Comments
avcodec/riscv/hevcdsp_init: decouple add_residual from RVB guard
Changed files
- libavcodec/riscv/hevcdsp_init.c
Change #275110
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 89cc079b302752dd2b870752cbe746be7703886e Comments
swscale/ops_optimizer: add ff_sws_uop_list_optimize() placeholder This will be populated with logic in the near future. I decided to also include the skeleton of the loop here, guarded by #if 0 to avoid triggering unused variable warnings until we actually use it. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_optimizer.c
- libswscale/uops.c
- libswscale/uops.h
Change #275111
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 755be6f8422fa59c7372b161783e16cdc3f39cbe Comments
swscale/uops: add ff_sws_uop_list_remove_at() Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops.c
- libswscale/uops.h
Change #275112
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5c864087246655cf102e614c2096055f9afc78a2 Comments
swscale/uops: add SWS_UOP_RW_SHUFFLE This directly encodes the "pshufb" loop style processing seen in the x86 backend (and, presumably, other backends down the line). The major advantage of encoding this as a separate UOP is that it allows the macro generator to exhaustively enumerate all needed variants of the read/write chunk sizes, which so-far have been hand-maintained through trial and error. I decided to also go ahead and pre-emptively generalize the clear value to allow us to encode RGBA clears in addition to RGB0 clears, which makes this UOP useful for e.g. Gray -> RGBA32 as well; something that the current pshufb loop did not handle. This commit merely adds the UOP defition; it does not yet port the packed shuffle solver or x86 implementation. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops.c
- libswscale/uops.h
- libswscale/uops_list.h
- libswscale/uops_macros.h
- libswscale/uops_macros_gen.c
Change #275113
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 535ee06f6d050a1957f17fc255a6b487a9c77133 Comments
swscale/uops: add SWS_UOP_FLAG_PSHUFB Exposes the SWS_UOP_RW_SHUFFLE capability. While this translates to the exact `pshufb` instruction on x86, we don't expose a separate capability for e.g. `vpermb` on AVX-512, since the underlying semantics are essentially equivalent. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops.h
- libswscale/uops_macros_gen.c
- libswscale/x86/ops.c
Change #275114
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 784f4c10cd1f05f23f197af2456a4f461ca24167 Comments
swscale/uops: add ff_sws_shuffle_mask() helper This takes an arbitrary shuffle mask and expands it out to the needed number of bytes by repeating pixels. I decided to have the implementation live in ops_optimizer.c to locate it closer to the code where these shuffle masks are generated, to aid in understanding, and because the optimizer will itself use it (in the following commit). Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_optimizer.c
- libswscale/uops.h
Change #275115
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b97d65aae23e5184fdaf699e427feba96d796e4b Comments
swscale/uops: rewrite ff_sws_solve_shuffle() in terms of uops This allows the uop optimizer stage to directly generate RW_SHUFFLE uops, which will replace the original ff_sws_solve_shuffle() over the next couple of commits. This way of solving it has a number of additional upsides, including but not limited to: - The ability to move certain low-level optimizations (like expanding conversions) out of the higher-level abstraction and have them arise purely during uops translation / optimization - The ability to stop passing SwsOpList to backends at all Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_optimizer.c
- libswscale/uops_macros.h
Change #275116
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8fdafc8198c7aac078b4a9c550ac50e32ae3ec2b Comments
swscale/x86/ops: rewrite packed_shuffle() in terms of uops macro This is mostly the same, with the added complication of now needing to handle the case of clearing to a nonzero value, which we do using `pblendb` on SSE4, and respectively `vpblendb` / `vpblendmb` on AVX-2 and AVX-512. Since `pblendb` hard-codes XMM0 implicitly, we have to flip the order of `m0` and `m1` in the rest of the code as well; though that's not a huge deal. The bigger complication comes from the fact that the macro gives us the size for a size 16 mask, which may need to be rounded up for the lane-aligned AVX-2 / AVX-512 paths, so we need to recreate this logic in the NASM macro itself. Fortunately, it's fairly straightforward. The big upside is that we now gain a fast path for e.g. rgb24 -> rgba, which is arguably more common than rgb24 -> rgb0: rgb24 1920x1080 -> rgba 1920x1080, speedup=7.106x faster It's worth pointing out that, because checkasm sometimes generates weird ops that don't occur in real pixel formats, it's not a guarantee that we will actually implement all paths that the optimizer spits out. This should be improved by a future checkasm refactor; but for now, we need to return ENOTSUP in the case that we encounter a shuffle mask combination that doesn't actually exist. (In practice, this only happens for degenerate no-op tests like 1->1 shuffles) Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/x86/ops.c
- libswscale/x86/ops_common.asm
- libswscale/x86/uops_macros.asm.h
Change #275117
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a785ff4ca2a73d151d5a8b7ce5d101063fe3dc3c Comments
swscale/x86/ops: add AVX512 vpermb packed shuffle path We can quite easily generalize the existing AVX512 pushfb implementation to support vpermb when the shuffle mask is cross-lane. rgb24 1920x1080 -> rgba 1920x1080, speedup=1.372x faster This does require some finesse w.r.t. the MOVSIZE macro, to avoid reading or writing too many bits. In particular, for gray->rgba64le, the pattern even devolves into 8/64 which would trigger an illegal operand error when combining movq with zmm registers. Other than that, we can use {k1}{z} zero masking to cleanly recreate the semantics of pushfb's implicit zero masking, except for non-zero clear values where we continue doing what we already do. Lastly, while EVEX-encoded vpermb can take the source operand directly, this somewhat defeats the purpose of the READ size optimization; in practice it was better to keep the read and vpermb separate. Signed-off-by: Niklas Haas <git@haasn.dev>Changed files
- libswscale/x86/ops.c
- libswscale/x86/ops_common.asm
Change #275118
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 17 Jul 2026 15:23:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0869e710e6876792fbcebccb536ad620d8e65b97 Comments
swscale/ops_optimizer: remove now-unused ff_sws_solve_shuffle() Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_internal.h
- libswscale/ops_optimizer.c
Change #275148
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Sat 18 Jul 2026 04:56:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c60ac8f256cd76341df4fb5abdfd38d9c47c0a6e Comments
avfilter/dnn: implement batching for Torch backend Add batch processing support to the LibTorch DNN backend, following the same pattern used by the OpenVINO backend. Key changes: - Add batch_size AVOption (range 1-1000, default 1) to DnnContext - Accumulate lltasks in the queue, trigger inference when batch_size lltasks are ready (matching the OpenVINO batch execution pattern) - Pre-allocate a single contiguous memory buffer for the entire batch in fill_model_input_th() to avoid unnecessary tensor copies - Split batched output in infer_completion_callback() and dispatch each slice to its corresponding task Tested with: ffmpeg -f lavfi -i testsrc=duration=5:size=640x480:rate=25 -vf format=rgb24,dnn_processing=dnn_backend=torch:model=dummy_model.pt:batch_size=4 -f null - Signed-off-by: Raja Rathour <imraja729@gmail.com>
Changed files
- libavfilter/dnn/dnn_backend_torch.cpp
- libavfilter/dnn/dnn_interface.c
- libavfilter/dnn_interface.h
Change #275151
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 16:59:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9dcb14d9825415c35d675b4e22d36db5d9729756 Comments
tests/fate/id3v2.mak: add test for XXX lang in COMM and USLT frames, fix comment for -sort test.
Changed files
- tests/fate/id3v2.mak
- tests/ref/fate/id3v2-comm-foo-lang-as-descriptor
- tests/ref/fate/id3v2-comm-sort-
- tests/ref/fate/id3v2-comm-sort-eng
- tests/ref/fate/id3v2-lang-und
- tests/ref/fate/id3v2-lang-xxx
- tests/ref/fate/id3v2-lang-xxx-remux
Change #275152
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 16:59:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9998dc7cc0c4b74d48f2bad16d7b205afce77001 Comments
fftools/ffmpeg_mux_init.c: Add comment-* version of the filtered iTunes id3v2 tags that are actually encoded as comments.
Changed files
- fftools/ffmpeg_mux_init.c
Change #275153
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 16:59:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eb107d87723508907f1690552b29f803f241068e Comments
libavformat/id3v2.c: Factor out support for reading lyrics and comment tags.
Changed files
- libavformat/Makefile
- libavformat/id3v2.c
- tests/ref/fate/id3v2-lang-xxx
- tests/ref/fate/id3v2-lang-xxx-remux
- tests/ref/fate/id3v2-wma-comm
- tests/ref/fate/id3v2-wma-comm-asf_o
Change #275154
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 16:59:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b0c702aec28b00aa08cce05c6066e535a5c210a5 Comments
libavformat/id3v2: deprecate legacy COMM descriptor-as-key behavior
Changed files
- doc/APIchanges
- libavformat/avformat.h
- libavformat/id3v2.c
- libavformat/version.h
- libavformat/version_major.h
- tests/ref/fate/id3v2-reenc-remux-keep
- tests/ref/fate/id3v2-wma-comm
- tests/ref/fate/id3v2-wma-comm-asf_o
Change #275155
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 16:59:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b79eae1af40f5831d5529eae6b919c43a713be00 Comments
libavformat/id3v2enc.c: add write support for COMM/USLT descriptor+lang keys
Changed files
- libavformat/avformat.h
- libavformat/id3v2.c
- libavformat/id3v2enc.c
- tests/ref/fate/generic-tags-remux-mp3
- tests/ref/fate/id3v2-comm
- tests/ref/fate/id3v2-comm-dashed-descriptor
- tests/ref/fate/id3v2-comm-descriptor
- tests/ref/fate/id3v2-comm-descriptor-no-lang
- tests/ref/fate/id3v2-comm-foo-lang-as-descriptor
- tests/ref/fate/id3v2-comm-invalid-lang
- tests/ref/fate/id3v2-comm-lang-as-descriptor
- tests/ref/fate/id3v2-comm-long-descriptor
- tests/ref/fate/id3v2-comm-multi-invalid-lang
- tests/ref/fate/id3v2-comm-raw-key
- tests/ref/fate/id3v2-comm-sort
- tests/ref/fate/id3v2-comm-sort-
- tests/ref/fate/id3v2-comm-sort-eng
- tests/ref/fate/id3v2-lang-und
- tests/ref/fate/id3v2-lang-xxx-remux
- tests/ref/fate/id3v2-lyrics
- tests/ref/fate/id3v2-reenc-remux-keep
Change #275156
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 17:48:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision de038122a37c7c4f4938d4c0340584bf25789447 Comments
tests/fate/ogg-vorbis.mak: add test to show packets initial padding and side data.
Changed files
- tests/fate/ogg-vorbis.mak
- tests/ref/fate/ogg-vorbis-bear
- tests/ref/fate/ogg-vorbis-initial-padding-chained
- tests/ref/fate/ogg-vorbis-libvorbis-1s
- tests/ref/fate/ogg-vorbis-libvorbis-30s
- tests/ref/fate/ogg-vorbis-ts-offset
- tests/ref/fate/ogg-vorbis-ts-seek
Change #275157
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 17:48:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 63b7e4cefa91aac517e3012d64f75c754e680674 Comments
lavf/oggparsevorbis: rework timestamp offset and end trimming Replace the first-page packet scan with a direct use of the first packet's duration as the timestamp offset (the Vorbis I spec guarantees it produces no PCM output). Track last_page_granule to correctly anchor EOS trimming regardless of any initial granule offset. Track bos_pos to reinitialize parser state at stream boundaries without resetting at page boundaries. Restore the granule=0 workaround from ticket #3710 and handle chained streams by clearing bos_pos when new headers are collected. Vorbis I spec: https://xiph.org/vorbis/doc/Vorbis_I_spec.html
Changed files
- libavformat/oggdec.c
- libavformat/oggdec.h
- libavformat/oggparsevorbis.c
- tests/ref/fate/limited_input_seek
- tests/ref/fate/limited_input_seek-copyts
- tests/ref/fate/mov-mp4-chapters
- tests/ref/fate/ogg-vorbis-bear
- tests/ref/fate/ogg-vorbis-chained-meta.txt
- tests/ref/fate/ogg-vorbis-initial-padding-chained
- tests/ref/fate/ogg-vorbis-libvorbis-1s
- tests/ref/fate/ogg-vorbis-libvorbis-30s
- tests/ref/fate/ogg-vorbis-ts-offset
- tests/ref/fate/ogg-vorbis-ts-seek
- tests/ref/fate/webm-dash-chapters
- tests/ref/lavf-fate/vp8.ogg
Change #275158
Category ffmpeg Changed by 张永鹏 <roc63@outlook.com> Changed at Sat 18 Jul 2026 19:04:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 629a5b4b0fcc0e574e4c35068d81445ec399df37 Comments
fftools: reject negative -t durations Reject negative recording durations for input and output -t before they reach streamcopy or trim handling. Keep -t 0 accepted. Signed-off-by: 张永鹏 <roc63@outlook.com>
Changed files
- fftools/ffmpeg_demux.c
- fftools/ffmpeg_mux_init.c
- tests/fate/ffmpeg.mak
Change #275159
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 18 Jul 2026 19:06:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 70a5df6d274400b186a1166551be3aa304b1d195 Comments
fftools: fix manual merge missing changes Signed-off-by: Romain Beauxis <romain.beauxis@gmail.com>
Changed files
- fftools/ffmpeg_demux.c
- fftools/ffmpeg_mux_init.c
Change #275165
Category ffmpeg Changed by Kirill A. Korinsky <kirill@korins.ky> Changed at Sun 19 Jul 2026 01:09:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 65c6383f899be853e6bed30797909073956e4745 Comments
configure/x86: test 6- and 7-register inline asm HAVE_6REGS and HAVE_7REGS should describe whether the compiler can allocate the inline asm register sets they guard. The old x86-32 logic inferred that from EBX/EBP availability, while x86-64 enabled both macros without a configure test. Probe the 6- and 7-register asm constraints directly for all x86 targets and let asm.h use the configure results. Drop the EBP availability probe, which is no longer used. Keep EBX availability, as other inline asm still uses it to decide whether named EBX can be clobbered.
Changed files
- configure
- libavutil/x86/asm.h
Change #275166
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 19 Jul 2026 02:48:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6d300b473266cda5926d86fe5a9d126c9c10b3c6 Comments
avformat/mov: avoid overflow/negative discard sample duration This also fixes a corner case with st->duration = INT64_MAX This assumes pkt->duration >= 0 Fixes: 525566001/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-5952332261818368 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/mov.c
Change #275168
Category ffmpeg Changed by Omkhar Arasaratnam <omkhar@linkedin.com> Changed at Sun 19 Jul 2026 05:56:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b96701098fd8bc33a7726b895ca92102da65202d Comments
avformat/tls_mbedtls: check the certificate verification result in tls_handshake() tls_mbedtls verifies the peer certificate manually via mbedtls_ssl_get_verify_result() (it uses MBEDTLS_SSL_VERIFY_OPTIONAL), but only in tls_open(). On the external-socket path (external_sock=1) tls_open() skips the handshake; it then runs later through the url_handshake hook, tls_handshake(), which never checks the verification result, so with verify=1 an untrusted peer certificate would be accepted. The only in-tree user of this path is the WHIP muxer, which sets verify=0 (WebRTC binds the peer via the SDP a=fingerprint, not a CA), so this is not reachable today. This change is defence-in-depth: it makes tls_handshake() honor verify symmetrically with the existing tls_open() check. Signed-off-by: Omkhar Arasaratnam <omkhar@linkedin.com>
Changed files
- libavformat/tls_mbedtls.c
Change #275169
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 19 Jul 2026 12:20:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ccaeb89a643a98717951bbe562fce0f4582b3182 Comments
avformat/shared: use strong CAS for marking PENDING This was using a weak atomic under the assumption that the `goto retry` will immediately jump back to the same line. However, that's no longer true after the introduction of the `read_block` label, which we can jump to from the error handling fallback path. In this case, we really ought to use a strong CAS to ensure that we only re-check the state if it truly changed in the meantime. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #275170
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 19 Jul 2026 12:20:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c764c4b8e47cd3764aff1de33b1d1f710dd34980 Comments
avformat/shared: give up on cache file after too many corrupt blocks If we got 10 corrupt blocks in a row, chances are, the rest of the file is completely corrupt. I didn't bother making this user-configurable as it is already sort of a niche option to work around lack of a reliable filesystem. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #275171
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 19 Jul 2026 12:20:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9bc73ba3449ff91e760b8c4e0a5d2bbc953ab9ac Comments
avformat/shared: treat unexpected EOF as corruption This can happen if e.g. the file is truncated (e.g. by a filesystem bug or self-healing response to an underlying checksum mismatch), in which case we should treat it similar as a corruption case and retry it under -retry_corrupt. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #275172
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 26586c898fadd410989fa52f591dce3055e08e53 Comments
avcodec/psymodel: add pair-synced window switching hook and pair state Divergent block switching between the two channels of a CPE disables common_window, and with it every joint stereo tool, on exactly the frames that need them most; the lone short channel then codes its transient alone, which is audible as one-channel garble at beats. Add an optional window_pair() model hook so a psy model can decide both channels of a pair together, and encoder-fed per-pair state: the joint-tool candidacy fraction EMA and a Schmitt-gated decouple flag, letting the model fall back to independent per-channel switching on content whose joint tools are dead (diffuse, decorrelated pairs) where forcing a common grid only costs quality.
Changed files
- libavcodec/psymodel.h
Change #275173
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 646f2796c8e267fd77b6f6dacc60c6e9ea333c95 Comments
avcodec/aacenc: rework NMR rate control, pool CPE budgets, add decision memory Rate control: replace the integral servo with a stateless pressure offset (exp2(-K*fill/R)) so a drained reservoir cannot wind up and crater quality after loud stretches; slew-limit the final operating lambda per frame (bits deviate instead, the reservoir absorbs); seed the reservoir full at stream start; and track rate strain explicitly: a long-frame lambda EMA against anchors that scale up when the achieved distortion/mask ratio flags noise-class content (whose psy masks are wholesale violated and lambda reads inflated), plus a lambda min-tracker separating sustained starvation from transient spikes at a comfortable operating point. The resulting pressure ramp gates every pressure-adaptive tool from one place. CPE budget pooling: solve both channels of a pair jointly under one shared lambda against a pooled budget (NMRSlot defer/solve/commit) instead of an equal per-channel split, which starved the mid/carrier while the side gold-plated. Mono and VBR output are unchanged. Transients: isolated onsets are coded uniformly finer across the short run and repaid from steady stretches; dense-beat runs get a starvation-scaled boost; a transition premask clamps START-frame thresholds toward the previous long frame (an attack cannot mask backwards). Decision memory: marginal per-frame re-decisions oscillate audibly, so every stateful choice now carries hysteresis - band zeroing, PNS enter/leave with debounce (and near-masked bands staying noise until a loudness guard), per-grid stereo mode banks that survive window switches, and the short-TNS accept state. TNS-covered bands price distortion by the synthesis filter's re-amplification gain, so the trellis spends where noise will actually be heard.
Changed files
- libavcodec/aaccoder_nmr.h
- libavcodec/aacenc.h
- tests/ref/fate/id3v2-reenc-delete-metadata
- tests/ref/fate/id3v2-reenc-delete-metadata-keep
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream
- tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata
Change #275174
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision abe157fbf2bc34f99ef87e55abfdf5fe74d5651e Comments
avcodec/aaccoder: widen PNS candidacy to near-masked bands Bands whose energy sits between threshold/4 and 2x threshold are deletion candidates for the trellis: coded, they round to silence under pressure, and an audible hole is worse than energy-matched noise. Let them qualify for PNS with a relaxed uniformity requirement, so the noise substitution keeps the texture the allocator was about to delete.
Changed files
- libavcodec/aaccoder.c
Change #275175
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aa88527d27e564348b854045e3bbd35705576abc Comments
avcodec/aacenc_tns: enable short-block TNS via pooled per-group filters Per-window filters combined with group-shared scalefactors made short-block TNS produce decoder-synthesized silence: a weak residual in one sub-window rounds to zero under the group's scalefactor and the synthesis filter has nothing to re-amplify, audible as 1.5-3 ms dropouts on beat content. Fit ONE filter per window group instead, on the concatenated weighted spectra, and require every window in the group to pass the prediction-gain bar. Accepts are Schmitt-gated and run-scoped: within a short run the enter bar is raised and the hold bar lowered (accept flicker was audible as gravel), while isolated transient frames - where TNS matters most and cannot flicker - use the base bar.
Changed files
- libavcodec/aacenc_tns.c
Change #275176
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c8dc3cf4003cb09f9fc4b2d3dbce2d01c7b0f77e Comments
avcodec/aacpsy: sync block switching across channel pairs Implement the window_pair() hook: detect both channels of a CPE, then decide together - if either channel attacks, both switch, with one merged attack map so the grouping matches across the pair and common_window survives transients. Pairs the encoder has flagged as decoupled (joint tools dead) keep independent per-channel decisions, where forcing the steady channel short at every event in the other only costs quality. Attacks must also be NOVEL against the trailing high-pass max-envelope: a steady pitch-pulse train repeats its peak every period and re-fires the ratio test forever, producing long false short runs on periodic content (low brass and the like); a genuine onset towers over the recent past. The pre-echo threshold relaxation for gentler isolated onsets is kept, and START frames entering a short sequence clamp their thresholds toward the previous long frame's per-band values on the mapped long grid.
Changed files
- libavcodec/aacpsy.c
Change #275177
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9d0a4132ff5b53ba2240ed2465f953a0d1a55634 Comments
avcodec/aacenc: rework NMR stereo decisions, retune coded bandwidth Stereo decisions are made per band before quantization, from the psy model's spectra, and carry cross-frame memory (EMA-smoothed statistics, per-grid mode banks, leave-hysteresis) so the image holds instead of churning: * M/S adopts content-driven and rate-free (side under half the mid); for mid-dominant bands M/S is simply the better coding at every rate, and a wandering L/R fraction reads as image instability. * I/S competes with M/S above 6.1 kHz instead of only seeing M/S rejects (which are exactly the wide bands it cannot render), and engages under SUSTAINED strain only: the pressure ramp gated by the lambda floor, so pressure spikes at a comfortable operating point cannot flood it onto content where coding the side is affordable and strictly better. Unengaged candidates fall back to M/S. * Pairs whose joint-tool candidacy fraction stays low decouple: block switching goes per-channel and M/S stops, matching how independent coding wins on diffuse decorrelated content. * PNS in a pair is reserved for clearly-wide bands (it renders uncorrelated noise per channel). Block switching for a pair is decided through the psy window_pair() hook so common_window survives transients. The NMR rate-to-bandwidth table is retuned upward at >= 48 kbps/ch to track the bandwidth strong encoders deliver; both quality metrics improve on a 16-clip battery and wider regresses. Lower rates are unchanged.Changed files
- libavcodec/aacenc.c
- tests/fate/aac.mak
- tests/ref/fate/id3v2-reenc-delete-metadata
- tests/ref/fate/id3v2-reenc-delete-metadata-keep
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-stream
- tests/ref/fate/id3v2-reenc-delete-metadata-map-metadata
Change #275178
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 14:41:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ddc587bad18eb8a46425008b91bd18cb7aa97e46 Comments
aacenc: add an info log to ask users to resample
Changed files
- libavcodec/aacenc.c
Change #275179
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 086029215702b95e980898c4e981fe79d2122ce1 Comments
swscale/aarch64/ops: consistently use SWS_COMP() to test and set mask values Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_impl_conv.c
Change #275180
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4e91f49e3db857e71451f7acb41b0a6808d7bad2 Comments
swscale/aarch64/ops: convert swizzle operation to a series of moves This is similar to the way SWS_UOP_PERMUTE/SWS_UOP_COPY work and will simplify the move to uops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
Change #275181
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision be71c4a70f3fec81f3915b3d4ac9f62f4bb2509c Comments
swscale/aarch64/ops: specialize convert and expand operations This is similar to the way SWS_UOP_TO_{U8,U16,U32,F32} and SWS_UOP_EXPAND_{PAIR,QUAD} work and will simplify the move to uops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
Change #275182
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e66601ac6b410f05d353d63ad4b9f05816fcf18c Comments
swscale/aarch64/ops: specialize linear operation This is similar to the way SWS_UOP_LINEAR{,_FMA} work and will simplify the move to uops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275183
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cc7784205c5b2877c693fafcfe859d6f3caada9d Comments
swscale/aarch64/ops: specialize clear operation There are now more specialized functions for components that clear to zero and one (using `movi` instead of `dup`). This is similar to the way SWS_UOP_CLEAR works and will simplify the move to uops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
Change #275184
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5778cbb11fe00d30d2d9cb4e666a60eec1961257 Comments
swscale/aarch64/ops: remove overly-complicated generated lookup function ... and replace it by a simple linear lookup over ops_entries. The previous approach was faster, but for an init function this hardly matters. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/Makefile
- libswscale/aarch64/ops.c
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.c
- libswscale/aarch64/ops_lookup.h
- libswscale/tests/sws_ops_aarch64.c
Change #275185
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f4edbf0b38bb88f3ad950754063266f979bc4ebb Comments
swscale/aarch64/ops: remove overly-complicated field-specific functions ... and replace them by simple switches. Since the last commit, op_fields is no longer used by aarch64/ops_asmgen, so it can be simplified into its only user. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_impl.c
- libswscale/tests/sws_ops_aarch64.c
Change #275186
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 000bc6c85a8a6deb4fc4d4a91a3f8599924ff8f9 Comments
swscale/tests/sws_ops_aarch64: use AVBPrint instead of custom string functions buf_appendf() was used when this code still needed to run standalone in aarch64/ops_asmgen. Since this is no longer the case, use AVBPrint instead. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/tests/sws_ops_aarch64.c
Change #275187
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a839f444b002cf0cfef1013672f633d135ece5b3 Comments
swscale/aarch64/ops: use SwsUOpType/SwsPixelType instead of SwsAArch64OpType/SwsAArch64PixelType Also use ff_sws_pixel_type_size() instead of aarch64_pixel_size(). This is a step towards the move to uops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275188
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:02 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3332e5e27895051a2bacfe63064d19831281768b Comments
swscale/aarch64/ops: use SwsShiftUOp for SwsAArch64OpImplParams.shift This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275189
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 57ca4d2ae330e5acfd0486b01c1dc6c5f817ba6d Comments
swscale/aarch64/ops: use SwsClearUOp for SwsAArch64OpImplParams.clear This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275190
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c0e5d4682cdb9daeb2e359c41b44e5921a447cd Comments
swscale/aarch64/ops: use SwsMoveUOp for SwsAArch64OpImplParams.move This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275191
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e45e0e708420294995a67f2013b5a64218f1436d Comments
swscale/aarch64/ops: use SwsPackUOp for SwsAArch64OpImplParams.pack This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275192
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4a33d2ce2c5cc08988e357b394fbce5ec2b4ac4a Comments
swscale/aarch64/ops: use SwsLinearUOp for SwsAArch64OpImplParams.linear This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops.c
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275193
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 353b8297a5c81c08049b43845ff21876e360b3f7 Comments
swscale/aarch64/ops: use SwsDitherUOp for SwsAArch64OpImplParams.dither This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275194
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0536c93b3289c98f90a2dfae7cc9045891a9252c Comments
swscale/aarch64/ops: use SwsCompMask for SwsAArch64OpImplParams.mask This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275195
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 19cc66f02f2926fc2b9246a221015cebc7d5f501 Comments
swscale/aarch64/ops: use SwsUOpParams for SwsAArch64OpImplParams's parameter fields This is one more step to eventually replace the parameter fields in SwsAArch64OpImplParams by generic structs from libswscale/uops.h. The function names and ordering in ops_entries.c is maintained to simplify the gradual move to uops.h. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops.c
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_entries.c
- libswscale/aarch64/ops_impl.h
- libswscale/aarch64/ops_impl_conv.c
- libswscale/tests/sws_ops_aarch64.c
Change #275196
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Sun 19 Jul 2026 15:07:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 82c1a01142177282beee13382f8b57c8cb2c9a0f Comments
swscale/tests/sws_ops_aarch64: pretty-print entries in ops_entries.c This makes them all neatly aligned. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_entries.c
- libswscale/tests/sws_ops_aarch64.c
Change #275200
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 19 Jul 2026 17:50:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3a8a1a7c6a20cb2738bc3721624b7d10d1fec19d Comments
avcodec/aacpsy: fix the attack lookback This fixes a 15+ year old bug. The novelty check read its previous-frame envelope from prev_energy_subshort after the sub-block loop had already overwritten it with current-frame values, so early sub-blocks were compared against the frame's own future instead of the past. That accident suppressed short-period pitch trains well enough, but also suppressed genuine onsets, and could not see pulse periods beyond ~12ms at all: on quiet slow pulse trains (engine-idle buzz and the like) the ratio test leaks sporadic isolated short excursions, each an audible click - reported against this encoder since 2015, at every bitrate, and immune to disabling every coding tool. Keep a rolling two-frame history of HP sub-block peaks instead and require an attack to tower over it: within ~12ms unconditionally (pitch-rate trains), and within ~44ms when coming from steady long-window state (slow trains, where an isolated short excursion can only click). Dense irregular transients tower locally and reset frames_since_short, so their block switching is untouched.
Changed files
- libavcodec/aacpsy.c
- tests/fate/aac.mak
Change #275201
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Sun 19 Jul 2026 18:10:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e2acef488f20098576cfbcd99c0c256313e913e8 Comments
forgejo/workflows: add workflow for automatic backport PRs via labels
Changed files
- .forgejo/workflows/backports.yml
Change #275202
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Sun 19 Jul 2026 18:29:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 162c2784f90969ae53c1f4aa36d22ef93945a293 Comments
forgejo/workflows: fix backport condition compatibility
Changed files
- .forgejo/workflows/backports.yml
Change #275227
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Sun 19 Jul 2026 22:47:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1b0c9e3dce64423052e204ca5669a21f9f9a2eac Comments
forgejo/workflows: block concurrent backport runs for the same pull request
Changed files
- .forgejo/workflows/backports.yml
Change #275249
Category ffmpeg Changed by sfan5 <sfan5@live.de> Changed at Mon 20 Jul 2026 04:35:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8fe61b7a6446b6a687b9056ba34664a2de168e5a Comments
libavcodec/mediacodecdec_common: improve logging for failing to get codec The logging should obviously happen before returning an error. Also include the mime type and detected profile. Signed-off-by: sfan5 <sfan5@live.de>
Changed files
- libavcodec/mediacodecdec_common.c
Change #275250
Category ffmpeg Changed by sfan5 <sfan5@live.de> Changed at Mon 20 Jul 2026 04:35:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c23123630e6a7e645c199599b8ade3fe7e9ab3db Comments
libavcodec/mediacodecdec_common: support AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH Signed-off-by: sfan5 <sfan5@live.de>
Changed files
- libavcodec/mediacodecdec_common.c
Change #275322
Category ffmpeg Changed by StachowiakDawid <dawidos234@gmail.com> Changed at Mon 20 Jul 2026 19:49:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c182b1c09c086deb62545393cc7b4a829d541508 Comments
Add new mode to mpdecimate video filter
Changed files
- doc/filters.texi
- libavfilter/vf_mpdecimate.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-mpdecimate-mode-1
- tests/ref/fate/filter-mpdecimate-mode-1-min-3
Change #275326
Category ffmpeg Changed by David Rosca <david.rosca@amd.com> Changed at Tue 21 Jul 2026 06:25:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c349297c163151c2576882887ae12e4cf2bdae4 Comments
avcodec/vulkan_encode_av1: fix level auto-detection using zero dimensions Move level guessing from init_profile() to init_sequence_headers(), where base_ctx->surface_width/height are already initialized. init_profile() is called from ff_vulkan_encode_init() before the surface dimensions are set, so ff_av1_guess_level() always received zeros and selected the lowest level (2.0). init_sequence_headers() runs after ff_vulkan_encode_init() returns, matching how H.264 and H.265 Vulkan encoders handle level detection. Co-Authored-By: Claude Opus 4
Changed files
- libavcodec/vulkan_encode_av1.c
Change #275327
Category ffmpeg Changed by David Rosca <david.rosca@amd.com> Changed at Tue 21 Jul 2026 06:25:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ccc57378b37d9129396a037df02c83a877d8eef0 Comments
avcodec/vulkan_encode_av1: fix level and tier option handling Copy opts.level into avctx->level (matching H.264/H.265 encoders), so the -level command line option is actually used. Also initialize enc->seq_tier from opts.tier so the -tier option takes effect. The -level option values (0-23) already match the StdVideoAV1Level enum directly, so assign avctx->level to seq_level_idx without going through ff_vk_av1_level_to_vk() which expects AV1 spec-style level numbers (20, 21, 30, ...). Co-Authored-By: Claude Opus 4
Changed files
- libavcodec/vulkan_encode_av1.c
Change #275378
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 21 Jul 2026 20:48:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 44889493e3b11a90a9a816ed350cfada17f01c84 Comments
tools/target_dec_fuzzer: use av_fallthrough to avoid warning Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/target_dec_fuzzer.c
Change #275379
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 21 Jul 2026 20:48:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 95d5815003258be03929e0fcbd6d5a504c5ccd2b Comments
tools/target_enc_fuzzer: mark flags64 as unused Still read, to not change byte stream offsets. Technically we could skip those bytes, but this way it's clear for te future that we can use those flags for anything needed. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/target_enc_fuzzer.c
Change #275380
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 21 Jul 2026 20:48:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b96a1ff373e5442707c88a10f6c1941fbeb6a121 Comments
tools/target_enc_fuzzer: don't access removed AVCodec::pix_fmts Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/target_enc_fuzzer.c
Change #275403
Category ffmpeg Changed by Leo Izen <leo.izen@gmail.com> Changed at Tue 21 Jul 2026 23:41:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b506fafec9a19fcbc2be5271875fd4a63d6615bc Comments
avcodec/pngenc: fix overrun caused by exif size discrepancy If the estimated EXIF size based on the attached frame data is lower than the actual EXIF size after sanitizing the IFD, then an overrun might occur. Instead, we parse the IFD and use the parsed size as the estimated exif size so there won't be any discrepancy between the two values. Signed-off-by: Leo Izen <leo.izen@gmail.com> Reported-by: Adrian Junge <adjun37@gmail.com>
Changed files
- libavcodec/pngenc.c
Change #275408
Category ffmpeg Changed by KawaiiEngine (Sashimiso) <209421934+KawaiiEngine@users.noreply.github.com> Changed at Wed 22 Jul 2026 00:39:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0f1e9710896108e8aa7f60f8b1c6d16333eab2ae Comments
avutil/hwcontext_cuda: drain queued copies on transfer error cuda_transfer_data() can enqueue copies for earlier planes before a later cuArrayGetPlane() or cuMemcpy2DAsync() fails. Returning at that point can let queued work outlive caller-owned AVFrame buffers. Track whether a copy was successfully queued and synchronize the stream on these later failures. Synchronization is best-effort: its errors and cuCtxPopCurrent() errors stay logged without replacing the primary failure. Successful H2D and D2D transfers remain asynchronous, and the normal host-download synchronization path is unchanged. Signed-off-by: KawaiiEngine (Sashimiso) <209421934+KawaiiEngine@users.noreply.github.com>
Changed files
- libavutil/hwcontext_cuda.c
Change #275409
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 22 Jul 2026 04:50:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f0f634b6585fdc7bbb43ab3ae461499bfca9ad2e Comments
avfilter/vf_hqdn3d: reject unsupported frame parameter changes Fixes: out of array access Fixes: 9aj_hqdn3d_dynamic_res.mjpg / 9aj_generate_hqdn3d_dynamic_res_mjpg.py Fixes: wWDsy2oDvMuR Found-by: Adrian Junge (vurlo) <adjun37@gmail.com>
Changed files
- libavfilter/vf_hqdn3d.c
- libavfilter/vf_hqdn3d.h
Change #275410
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 22 Jul 2026 04:50:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5d7112c60e6f0f0742ce47d448e6da0718a70f4c Comments
avfilter/vf_hqdn3d: support dynamic frame sizes
Changed files
- libavfilter/avfilter.c
- libavfilter/vf_hqdn3d.c
Change #275411
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Wed 22 Jul 2026 05:18:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1b1f6026990bd081ec6e2cef8cd88f60ddbfea66 Comments
avcodec/d3d12va_encode: set extradata for global header when muxing AV1 to MKV When the muxer sets AV_CODEC_FLAG_GLOBAL_HEADER (as MKV does), the codec must populate avctx->extradata with the sequence header so the muxer can write the av1C codec private entry. Otherwise, the mkv muxer will return AVERROR_INVALIDDATA on the first packet (Invalid data found when processing input). Example usage: # use mkv container: ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v av1_d3d12va output.mkv Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- libavcodec/d3d12va_encode.c
Change #275473
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 22 Jul 2026 14:52:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f8c4828c0f1b5b15c404042d390dbfe38fc4d023 Comments
avutil/x86/asm: Remove HAVE_[67]REGS, use HAVE_X86_[67]REGS directly This allows to remove the asm.h inclusion from x86/mathops.h and therefore from hundreds of files which don't need it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/dirac_arith.h
- libavcodec/msmpeg4.c
- libavcodec/x86/cabac.h
- libavcodec/x86/h264_cabac.c
- libavcodec/x86/mathops.h
- libavcodec/x86/mlpdsp_init.c
- libavcodec/x86/mpeg4videodsp.c
- libavcodec/x86/mpegaudiodsp.c
- libavcodec/x86/snowdsp_init.c
- libavcodec/x86/vc1dsp.h
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_mmx.c
- libavcodec/x86/vpx_arith.h
- libavfilter/x86/vf_noise.c
- libavutil/x86/asm.h
- libswscale/x86/rgb2rgb.c
- libswscale/x86/swscale.c
- libswscale/x86/swscale_template.c
Change #275474
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 22 Jul 2026 14:52:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 68c94ed330a5b00d6b655e93679f0f189c9bcf00 Comments
av{codec,filter}/x86: Remove unnecessary asm.h inclusions asm.h is only for inline assembly. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/ac3dsp_init.c
- libavcodec/x86/apv_dsp_init.c
- libavcodec/x86/h264dsp_init.c
- libavcodec/x86/h26x/h2656dsp.c
- libavcodec/x86/h26x/h2656dsp.h
- libavcodec/x86/hevc/dsp_init.c
- libavcodec/x86/huffyuvdsp_init.c
- libavcodec/x86/mpegvideoenc.c
- libavcodec/x86/utvideodsp_init.c
- libavfilter/x86/vf_atadenoise_init.c
- libavfilter/x86/vf_bwdif_init.c
- libavfilter/x86/vf_eq_init.c
- libavfilter/x86/vf_maskedclamp_init.c
- libavfilter/x86/vf_tinterlace_init.c
- libavfilter/x86/vf_transpose_init.c
- libavfilter/x86/vf_w3fdif_init.c
- libswscale/utils.c
Change #275475
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 22 Jul 2026 14:52:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1cf582b00ce14b6c8639e62a154497066f2c3bf6 Comments
configure: Remove unused check_exec_crash Unused since 65c6383f899be853e6bed30797909073956e4745. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- configure
Change #275477
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 53f1b3dd0917ea4645e553510bbc94c5574ebf56 Comments
swscale/aarch64/rasm: fill AArch64VecViews by value Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/rasm.c
- libswscale/aarch64/rasm.h
Change #275479
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e418d44c1e19580731699716ba35a30be23b7c48 Comments
swscale/aarch64/rasm: add extra helpers for instructions that take all 16b operands Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/rasm.h
Change #275481
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d34ed6ce404bf4a6e73a8a9f9e36c0029e275c3a Comments
swscale/aarch64/ops_asmgen: use and/orr arrangement specifier helpers from rasm This way, we don't depend on the RasmOp having been correctly reshaped prior to being used. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275483
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a9665b7c9696fe29844d1b5f4c85e060f5ea084 Comments
swscale/aarch64/ops_asmgen: use arrangement specifiers for vector registers with known size This way, we don't depend on the RasmOp having been correctly reshaped prior to being used. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275485
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision af0d56b00e33a6c55d32d743d9e812d73d28a2fb Comments
swscale/aarch64/ops_asmgen: use RasmOp directly when generating masks for SWS_UOP_UNPACK There is no need to pack the vector register usage for this function. This change creates holes in the usage of const vector registers, but populates the RasmOp const array directly, which will help for the implementation of the JIT compiler. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275487
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 154791b150eb3b9ce2c646df1d95c785401b99d0 Comments
swscale/aarch64/ops_asmgen: add IMPL_PRIV helper for offset operand This reduces the line length for instructions that access impl->priv. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275488
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 97590dbd48103b4742d767fa3eaf1e040ab02436 Comments
swscale/aarch64/ops_asmgen: split constant vector registers out of temp This makes each vector register's purpose clearer, and will let the JIT compiler later factor loading of constant values out of the main loop. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275489
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 98e536f4d3a9eb114079f803c5a281ad8f447d1d Comments
swscale/aarch64/ops_asmgen: split reshape_all_vectors() into vector register classes This reduces some unnecessary vector reshaping, and also makes the intention clearer at the call-sites. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275490
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d99e656ee022f9000a705ef7ffd459d95c487544 Comments
swscale/aarch64/ops_asmgen: pass SwsAArch64OpRegs as a separate argument to asmgen_op_*() This will help the JIT compiler by letting us provide a separate set of registers for each operation. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275491
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7ee8947b2ca0bc1a3bf001c9a83749868bf94ba8 Comments
swscale/aarch64/ops_asmgen: split asmgen_setup_*() out of asmgen_op_*() This paves the way for performing operation setup differently for the JIT backend, which will have constant values factored out of the loop. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275492
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 90a8749bf35b25e7e61b9413db4c3a9ef67d4c92 Comments
swscale/aarch64/ops_asmgen: split cps code out of asmgen_process() The asmgen_process() function is now more generic, which will allow us to use it from the JIT compiler. The naming of the function, along with the setup code and main loop, are moved to asmgen_process_cps(). Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275493
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 28a47aea66fba67a21c38fce8d9817441b6ff792 Comments
swscale/aarch64/ops_asmgen: pass both input and output masks to asmgen_process() Currently, for CPS code, both masks are the same, similar to how the C and x86 backends do it. But the JIT compiler will have more precise input and output masks. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275494
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 25ee9a4218d522f780c8076c9e035656a81d213c Comments
swscale/aarch64/ops_asmgen: use more (but simpler) loops for exec load generation Same behaviour, just looks neater. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275495
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0096b488257cdfe9ac5acf51637c7974973e22a3 Comments
swscale/aarch64/ops_asmgen: load values from exec before performing setup This changes little for the current CPS code, which has fairly simple setup code. But in JIT we will factor out much more code from the main loop into the setup section. This also frees up the register used by exec (x0) earlier on, so it may be reused earlier in JIT code. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275496
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 12a01917449ec8bb09683cc0e0ca9126b999ea81 Comments
swscale/aarch64/ops_asmgen: setup frame for each function Currently this is redundant, since all CPS functions share the same frame. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275497
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 940e4b29e150761c2ca9dea1970438fe29355c4e Comments
swscale/aarch64/ops_asmgen: split vector init from reshaping This changes nothing for the CPS code, but will allow the JIT compiler to allocate and reorder vector registers without them being affected by reshaping. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275498
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1b66342df27499271654b4b888c8e2e4e3b31272 Comments
swscale/aarch64/ops_asmgen: split input/output vector banks into separate register variables For CPS these will continue being the same vector register numbers, because of the fixed ABI, but for JIT we will be able to use different input/output vector registers to implicitly perform swizzles. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275499
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 132187cdbba4230005d96705751dff95e2316e79 Comments
swscale/aarch64/ops_asmgen: increase the number of temp vectors to 12 This change is done separately from the next commit (which uses the new temp vectors in the linear op) to make it easier to track changes to ops_neon.gen.S. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275500
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ecbb883014676bf25ce62b50f056f9ec16424305 Comments
swscale/aarch64/ops_asmgen: move save_mask setup out of asmgen_op_linear() and into asmgen_setup_linear() The save_mask setup makes copies of input data that would be clobbered by the linear operation itself. This setup is not entirely necessary with JIT, since we may have separate input and output vector registers, so the code is moved into the setup function which will be CPS-only. This doubles the amount of temp registers needed, since they must all be copied before both loops. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275501
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1fcb227aec266d67712296bd21664d61ca13f94 Comments
swscale/aarch64/ops_asmgen: reword annotations for linear operation Refer to offset[i] or coeff[i][j] instead of position of the value from the packed data. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275502
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bc06af02c62c538ddd5024513271d5abf46a18fe Comments
swscale/aarch64/ops_asmgen: use different value for vtmp register index Use vtmp register index relative to the current matrix column instead of reusing the position of the value from the packed data. The i_coeff and derived values will be removed in the following commit. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275503
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e69c1d87f208cfcbacc5c55c175368c91d7a1e3e Comments
swscale/aarch64/ops_asmgen: populate operands matrix in asmgen_setup_linear() This will serve multiple purposes: - Allow JIT code to populate operands from a deduplicated data pool; - Simplify the future implementation of integer linear operation, since mul/mla take full vector registers as coefficients, and not elements. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/ops_asmgen.c
Change #275504
Category ffmpeg Changed by Ramiro Polla <ramiro.polla@gmail.com> Changed at Wed 22 Jul 2026 16:07:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c61690153c9089e082e1b1c36ae48959d542b7e8 Comments
swscale/aarch64: split ops_static.c out of ops_asmgen.c ops_asmgen.c contains common aarch64 asm generation code that will be used by CPS backend and the JIT backend. The standalone tool with CPS-specific code is now ops_static.c. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>
Changed files
- libswscale/aarch64/.gitignore
- libswscale/aarch64/Makefile
- libswscale/aarch64/ops.c
- libswscale/aarch64/ops_asmgen.c
- libswscale/aarch64/ops_asmgen.h
- libswscale/aarch64/ops_static.c
Change #275511
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 22 Jul 2026 16:08:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c450bf833caf2a35392e073cbf33b3598e40fe09 Comments
Revert "avformat/concatdec: Check recursion depth" This reverts commit 58d39e99e26d1116f43a67d66ecfe71dba316875. Superseded by the generic recursion limit introduced in 597036b692b8c39198fe572aad027eeb4c13da35. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/concatdec.c
Change #275543
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Wed 22 Jul 2026 23:42:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2cf3f4d64de0efa5ccb4021f7245e93b041dbd9e Comments
avutil/hwcontext_cuda: remove format allowlist, accept any pixel format Remove the static supported_formats[] allowlist from hwcontext_cuda. cuda_frames_get_constraints() now iterates all registered pixel formats and includes every non-hwaccel, non-palette format. cuda_frames_init() validates with av_pix_fmt_desc_get() instead of checking against the allowlist. Palette formats have a special-cased use of plane[1] for the palette itself and it's not worth the hassle of supporting in an otherwise clean generic copy loop. Also add a roundtrip test that uploads a deterministic byte pattern to CUDA, downloads it back, and verifies the data match. This tests all non-hwaccel pixel formats. The test is gated on CONFIG_CUDA.
Changed files
- libavutil/Makefile
- libavutil/hwcontext_cuda.c
- libavutil/tests/.gitignore
- libavutil/tests/hwcontext_cuda.c
- tests/fate/hw.mak
Change #275558
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 23 Jul 2026 01:50:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 642ae726ff3a0d8d8c9416c0f1968b936df7e9c4 Comments
avformat/matroska: rescale default duration derived block durations to stream timebase Block timestamps and durations are in Track Ticks, meaning they are scaled with both Segment timescale and Track timescale. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/matroskadec.c
Change #275559
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 23 Jul 2026 01:50:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9c8fc66ce196d40b12259458e045436cedc0d69e Comments
tests/fate/matroska: add a test for Track Timescale handling Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/matroska.mak
- tests/ref/fate/matroska-track-timescale
Change #275561
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 23 Jul 2026 02:14:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision afb74faff6fb20cca0c15477872583a7c3d54977 Comments
tests/ref: update references Missed in 642ae726ff3a0d8d8c9416c0f1968b936df7e9c4 after a faulty rebase. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/ref/fate/atrac-matroska-remux
- tests/ref/fate/ffmpeg-streamloop-transcode-av
- tests/ref/fate/h264-dts_5frames
- tests/ref/fate/hevc-bsf-dovi-split-bl
- tests/ref/fate/hevc-bsf-dovi-split-bl-rpu
- tests/ref/fate/hevc-bsf-dovi-split-el
- tests/ref/fate/hevc-bsf-dovi-split-el-rpu
- tests/ref/fate/matroska-dovi-hvce-mkv-to-mkv
- tests/ref/fate/matroska-dovi-write-config7
- tests/ref/fate/matroska-flac-channel-mapping
- tests/ref/fate/matroska-mastering-display-metadata
- tests/ref/fate/matroska-ms-mode
- tests/ref/fate/matroska-qt-mode
- tests/ref/fate/mkv
- tests/ref/fate/mkv-1242
- tests/ref/fate/mov-dovi-hvce-mkv-to-mp4
Change #275572
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Thu 23 Jul 2026 05:26:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 80eb9e99b93491753fc9d5bf1f8718c361131998 Comments
avutil/hwcontext_cuda: fix unused variable 'i' warning The variable i is only used inside the HAVE_FFNVCODEC_CUARRAY block. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavutil/hwcontext_cuda.c
Change #275634
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 23 Jul 2026 15:39:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e1c1b6c55835d13647636340d478d370aa48fb8d Comments
avcodec/get_buffer: use frame pixel format instead of context The documentation for get_buffer2() states: "This callback must use the frame values, not the codec context values, to calculate the required buffer size." Fixes wrong output on hbd LCEVC enhanced samples where the base stream is 8bit. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/get_buffer.c
Change #275647
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 23 Jul 2026 18:56:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b3d4ce20a4608fe72af0b035b4007bba46a15279 Comments
avformat/lcevc: add a log context parameter to all functions Printing to NULL should be avoided when possible. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/codecstring.c
- libavformat/lcevc.c
- libavformat/lcevc.h
- libavformat/movenc.c
Change #275648
Category ffmpeg Changed by Marcos Ashton Iglesias <marcosashiglesias@gmail.com> Changed at Thu 23 Jul 2026 19:58:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9347affa3dc3aa35e90661a4a7564328f3db7972 Comments
avcodec/x86/hevc: add SSE2 and AVX transform_4x4_luma Implements the 4x4 luma DST-VII inverse transform for 8 and 10 bit, using pmaddwd on (src0,src2)/(src1,src3) pairs, mirroring the existing 4x4 IDCT structure. checkasm --bench on a Core Ultra 7 155H: hevc_transform_luma_4x4_8_c: 151.0 hevc_transform_luma_4x4_8_sse2: 35.9 ( 4.20x) hevc_transform_luma_4x4_8_avx: 34.2 ( 4.42x) hevc_transform_luma_4x4_10_c: 146.5 hevc_transform_luma_4x4_10_sse2: 35.0 ( 4.19x) hevc_transform_luma_4x4_10_avx: 33.7 ( 4.35x) Part of #23022.
Changed files
- libavcodec/x86/hevc/dsp_init.c
- libavcodec/x86/hevc/idct.asm
Change #275667
Category ffmpeg Changed by Jun Zhao <barryjzhao@tencent.com> Changed at Fri 24 Jul 2026 04:36:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2f209337fc66b58bf0495265880bb37580c3f981 Comments
avformat/mov: read DTS metadata from ddts box The MOV demuxer only handled the low four bits of ChannelLayout and did not expose the DTS profile carried by StreamConstruction. It also discarded the sample-entry channel count when ChannelLayout was zero. Parse StreamConstruction, RepresentationType, and all 16 ChannelLayout bits according to ETSI TS 102 114. Map StreamConstruction to the corresponding FFmpeg DTS profile, and preserve the sample-entry channel count for zero layouts unless RepresentationType explicitly signals two encoded channels. This also provides profile and channel metadata for encrypted samples whose frame headers cannot be inspected. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Changed files
- libavformat/mov.c
Change #275709
Category ffmpeg Changed by Guo Yejun <yejun.guo@intel.com> Changed at Fri 24 Jul 2026 16:06:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6095372a70d17e48b67678532a492f943d206d00 Comments
avfilter/dnn: use batch_size in DnnContext instead of ov_option batch_size in DnnContext is a common variable for all dnn backends
Changed files
- libavfilter/dnn/dnn_backend_openvino.c
- libavfilter/dnn_interface.h
Change #275718
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 24 Jul 2026 21:09:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 92cd5c97817be98361137e12fdba1f13db20f5c9 Comments
avfilter/vf_lut3d: do not compute size*size before the size is validated parse_dat(), parse_cube(), and parse_cinespace() multiply an untrusted LUT size before allocate_3dlut() validates it, which can overflow int. Use the validated lutsize2 computed by allocate_3dlut() instead. Fixes: signed integer overflow
Changed files
- libavfilter/vf_lut3d.c
Change #275789
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 607862dd6685f53bdb26b6c92e4d04057d1c18f8 Comments
avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8l_vertical_8 Deprecate MMX. Remove the SSSE3 impl. since we no longer use palignr. pred8x8l_vertical_8_mmxext: 7.4 ( 3.61x) pred8x8l_vertical_8_ssse3: 6.6 ( 4.03x) pred8x8l_vertical_8_sse2: 6.3 ( 4.19x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275790
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c7e532e81e44c5687270dfffa8c05e393bd94830 Comments
avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8l_horizontal_8 Deprecate MMX. Remove the SSSE3 impl. since we no longer use palignr. No change in performance. pred8x8l_horizontal_8_mmxext: 16.2 ( 1.44x) pred8x8l_horizontal_8_ssse3: 15.6 ( 1.50x) pred8x8l_horizontal_8_sse2: 15.8 ( 1.49x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275791
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3333082cd79fb4ad4b8cb4134a2350d63f0dc87a Comments
avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8l_horizontal_up_8 Deprecate MMX. Remove the SSSE3 impl. since we no longer use palignr and SSE2 is faster. pred8x8l_horizontal_up_8_mmxext: 27.1 ( 2.30x) pred8x8l_horizontal_up_8_ssse3: 23.9 ( 2.60x) pred8x8l_horizontal_up_8_sse2: 20.9 ( 2.96x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275792
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 14dfce5eaf18b7630922117a2541d8646db21289 Comments
avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8_dc_rv40_8 Deprecate MMX. No change in performance. Also add test coverage in checkasm. pred8x8_dc_rv40_mmxext: 10.0 ( 1.24x) pred8x8_dc_rv40_sse2: 10.0 ( 1.24x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
- tests/checkasm/h264pred.c
Change #275793
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d03788af83260044c6ef0e21a1c24245920cb5c4 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred8x8l_down_right_8 Convert use of MMX to SSE2, also remove the SSSE3 impl. since we no longer use palignr Before: pred8x8l_down_right_8_sse2: 26.4 ( 3.26x) pred8x8l_down_right_8_ssse3: 23.0 ( 3.74x) After: pred8x8l_down_right_8_sse2: 19.7 ( 4.33x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275794
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ea2bf7e7757b6528dd5a83b0eb750e10dda86df2 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred8x8l_vertical_right_8 Convert use of MMX to SSE2, also remove the SSSE3 impl. since we no longer use palignr Before: pred8x8l_vertical_right_8_sse2: 24.1 ( 3.51x) pred8x8l_vertical_right_8_ssse3: 20.8 ( 4.07x) After: pred8x8l_vertical_right_8_sse2: 19.5 ( 4.38x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275795
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 093fda3c21679c4a81902f0baeaa361fc3b2a1cd Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred8x8l_vertical_left_8 Convert use of MMX to SSE2, also remove the SSSE3 impl. since we no longer use palignr Before: pred8x8l_vertical_left_8_sse2: 17.3 ( 4.89x) pred8x8l_vertical_left_8_ssse3: 15.0 ( 5.63x) After: pred8x8l_vertical_left_8_sse2: 11.8 ( 6.80x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275796
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1a0747633c25eed7592e36a94ce1b12ea7e067b1 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred8x8l_horizontal_down_8 Convert use of MMX to SSE2, also fix checkasm test. Before: pred8x8l_horizontal_down_8_sse2: 33.2 ( 2.53x) pred8x8l_horizontal_down_8_ssse3: 27.8 ( 3.02x) After: pred8x8l_horizontal_down_8_sse2: 24.3 ( 3.45x) pred8x8l_horizontal_down_8_ssse3: 22.6 ( 3.71x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- tests/checkasm/h264pred.c
Change #275797
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9e3d688314d84968e9da6d1d64a351e254defdd0 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred16x16_dc_8 Convert use of MMX to SSE2; no change in performance. Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
Change #275798
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c87b51a93e72ae0b70abc507666b5615c70f6934 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from all pred4x4 functions Convert all use of MMX to XMM; no change in performance. Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275799
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 25 Jul 2026 04:16:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9e598c5188d5d279eeeb08a128854d70094d8597 Comments
avcodec/x86/h264_intrapred: Deprecate MMX from pred8x8l_down_left_8 Convert use of MMX to SSE2, also remove the SSSE3 impl. since we no longer use palignr Before: pred8x8l_down_left_8_sse2: 18.0 ( 4.04x) pred8x8l_down_left_8_ssse3: 16.2 ( 4.49x) After: pred8x8l_down_left_8_sse2: 14.2 ( 5.14x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libavcodec/x86/h264_intrapred_init.c
Change #275800
Category ffmpeg Changed by wang-bin <wbsecg1@gmail.com> Changed at Sat 25 Jul 2026 07:30:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a06abd2d7cf32b5dc2e0dd0c4578afcd845a9ba Comments
hwcontext_vaapi: fix undefined close() on windows
Changed files
- libavutil/hwcontext_vaapi.c
Change #275822
Category ffmpeg Changed by Guo Yejun <yejun.guo@intel.com> Changed at Sat 25 Jul 2026 13:39:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d09db42d8f6b1665fb4bdbdd92f78c1e6be908f7 Comments
configure: add manual check for openvino v2
Changed files
- configure
Change #275945
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Sat 25 Jul 2026 17:08:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b52c71e43813952650a74c57b2f31bd0166600ba Comments
avfilter/dnn: fix async teardown race condition in all backends When the filter graph is torn down early (e.g. at EOF with -frames:v), the main thread calls dnn_free_model and destroys the request queue while async inference threads may still be running. When a detached thread finishes and tries to push its result back to the destroyed queue, it triggers a segmentation fault. Add ff_dnn_wait_requests() to dnn_backend_common which blocks until all allocated request items (ctx->nireq) have been safely returned to the request_queue. Call it from dnn_free_model in the torch, tensorflow, openvino, and onnx backends before destroying the queue.
Changed files
- libavfilter/dnn/dnn_backend_common.c
- libavfilter/dnn/dnn_backend_common.h
- libavfilter/dnn/dnn_backend_onnx.c
- libavfilter/dnn/dnn_backend_openvino.c
- libavfilter/dnn/dnn_backend_tf.c
- libavfilter/dnn/dnn_backend_torch.cpp
Change #275946
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Sun 26 Jul 2026 03:05:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 275e217b10057e812039c722d420b3ba996ae69a Comments
avformat/hlsenc: Fix heap buffer overflow in parse_playlist() Fix: vulnerability:019f3b84-903b-75fb-a8de-fe6f84d6bc32 When parsing IV=0x... followed by a comma, end - ptr was passed directly to av_strlcpy() as the destination size. Since iv_string is only 33 bytes (KEYSIZE*2 + 1), a long IV token could overflow into adjacent heap data. Use FFMIN(end - ptr + 1, sizeof(buf)) to cap the copy size to the actual buffer size. Apply the same fix to key_uri parsing for consistency. Fixes a heap buffer overflow in append_list mode when reading an existing playlist with a crafted IV or URI token length. Found-by: depthfirst Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/hlsenc.c
Change #275947
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Sun 26 Jul 2026 03:05:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 23602df9cd1b485c45ba6f533d3b85569de3f323 Comments
avformat/hls: Enforce protocol checks when opening child playlists Fix: vulnerability:019f3b84-903b-75fb-a8de-fad1c2d7e99c The parse_playlist() path for opening a new child playlist (in == NULL) directly called c->ctx->io_open(), bypassing the protocol whitelist and file-extension checks that open_url() enforces. This allowed child URLs from a master playlist to use protocols other than file/http/data or to have disallowed extensions. Route the !in branch through open_url() so that all child playlists are subject to the same security policy as segment URLs. Fixes a security bypass in HLS master playlist parsing. Found-by: depthfirst Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/hls.c
Change #275948
Category ffmpeg Changed by Steven Liu <lq@chinaffmpeg.org> Changed at Sun 26 Jul 2026 03:05:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 601d9ee881fbd9d9ff44466c561c480ff244eb9f Comments
avformat/hlsenc: Handle extensionless URIs in extract_segment_number() fix: vulnerability:019f3b84-90fb-737a-ae7a-b3e0219266fc extract_segment_number() used strrchr(filename, '.') and immediately did dot - 1 without checking for NULL. A segment URI with no extension would cause undefined behavior (NULL pointer arithmetic) when resuming an append_list playlist with subtitle variants. Add a NULL check and return -1 early when no dot is found. Fixes a crash/UB in HLS muxer resume path. Found-by: depthfirst Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Changed files
- libavformat/hlsenc.c
Change #275972
Category ffmpeg Changed by Nathan Lucas <nlucasgit@gmail.com> Changed at Sun 26 Jul 2026 04:12:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2db563fac2ad9e8509d4c5a699462eead5c32b8c Comments
avformat/spdifenc: preserve TrueHD MAT padding across branches Some TrueHD streams, particularly remuxes of seamless branching Blu-rays, contain input_timing gaps that require more padding than the current MAT_FRAME_SIZE / 2 limit allows. spdifenc treats this padding as invalid and drops it, breaking MAT timing and IEC 61937 carrier cadence, causing TrueHD/Atmos dropouts on some receivers. Allow larger valid padding gaps and queue completed MAT buffers so the muxer can preserve the carrier cadence while still writing at most one MAT buffer per input packet. Some branches also have discontinuous timing, so input_timing cannot be directly used to compute padding at those boundaries. When output_timing is available from a TrueHD restart header, use it to detect those discontinuities and compute padding from the change in output_timing - input_timing offset across the boundary instead. Fixes: https://trac.ffmpeg.org/ticket/9569 Fixes: https://trac.ffmpeg.org/ticket/10948 See also: https://github.com/mpv-player/mpv/issues/9659 See also: https://github.com/mpv-player/mpv/issues/13943 Signed-off-by: Nathan Lucas <nlucasgit@gmail.com>
Changed files
- libavformat/spdifenc.c
Change #275973
Category ffmpeg Changed by Nathan Lucas <nlucasgit@gmail.com> Changed at Sun 26 Jul 2026 04:12:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7002e01c192e0cd44119cf3e3790c642cb4d0942 Comments
tests/fate/spdif: add TrueHD branch padding test Add a small synthetic TrueHD sample that exercises large MAT padding in spdifenc. The sample covers both the input_timing path with padding above MAT_FRAME_SIZE / 2 and the output_timing discontinuity path. It also verifies queued MAT frame emission when one input packet completes more than one MAT frame. Signed-off-by: Nathan Lucas <nlucasgit@gmail.com>
Changed files
- tests/fate/spdif.mak
- tests/ref/fate/spdif-truehd-branch-padding
Change #276042
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 27 Jul 2026 05:33:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 705890061467ad550ecc1dad5eea07f28ccfb43e Comments
avcodec/screenpresso: reject deflate output shorter than the frame Fixes: use of uninitialized memory Fixes: screenpresso_short_zlib_heap_disclosure.avi Fixes: ksUBwBOjJodq Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/screenpresso.c
Change #276073
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:27:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd9d265344b1d39c7b65eb018acac0478c5d736a Comments
Revert "avfilter/avfiltergraph: always retry format negotiation after auto-filters" This reverts commit 978a0821eeb909d7b2cb777bed03a8fc380e9503. The stability of the negotiation process has never been studied with multiple rounds. It has always been documented to users that scale was the filter to insert to manage format conversions. A second filter for a specific type of conversion should never have been added: the proper fix for the issue that this commit tried to fix is to give scale the ability to handle premultiplication too.
Changed files
- libavfilter/avfiltergraph.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-scale-premultiply
Change #276074
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:27:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f3431169daab3f1ca26638de6d4f6fca0f090c15 Comments
lavfi: do not send premultiplied alpha to filters not ready for it The arithmetic to process colors in premultiplied alpha is completely different from the arithmetic for straight alpha. Running a filter using straight arithmetic on premultiplied will result in incorrect and sometimes invalid output. Therefore, premultiplied alpha should only be selected for filters that either explicitly support it or only use elementary color arithmetic or none at all. For other filters, automatic conversion will do its work.
Changed files
- libavfilter/formats.c
- libavfilter/formats.h
Change #276075
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:27:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a757b708ae7d43fdec89545a55cbc11ae2967b19 Comments
lavfi: cosmetic: rename variable
Changed files
- libavfilter/formats.c
Change #276098
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:51:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cf6abefe83e8faa06f8f7e033a67716f1c1f937d Comments
lavfi/vf_format: report error for invalid names
Changed files
- libavfilter/vf_format.c
Change #276099
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:51:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ad1f8a09a66c1126f77b07610f4fbe00f7860504 Comments
lavfi/vf_format: factor parsing the lists
Changed files
- libavfilter/vf_format.c
Change #276100
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 10:51:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ef82d0789afe9783cf2aad186addbe81fa30d00a Comments
fftools/ffmpeg: remove extra \n
Changed files
- fftools/ffmpeg_mux_init.c
Change #276116
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 13:38:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision acf6b520c1e73707190c0a591735ee8c7fbe8f58 Comments
fftools/ffmpeg_sched: do not print error code The error codes are meaningless to users, especially the ones that do not come from standard errno codes.
Changed files
- fftools/ffmpeg_sched.c
Change #276146
Category ffmpeg Changed by Nicolas George <george@nsup.org> Changed at Mon 27 Jul 2026 16:07:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 336b175c9f5d1194f4377f34aacfe4a85ca628b6 Comments
fate: disable tests that depend on premultipled conversion They can be re-enabled onece automatic conversion of premultiplied alpha is fixed.
Changed files
- tests/fate/image.mak
- tests/fate/lavf-image.mak
Change #276149
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c6e2ae51073120b063a46ec49748bfb3534afeb3 Comments
avformat: add parent AVFormatContext to URLContext Add a URLContext.fmt_ctx back-reference, set by io_open_default before url_open() runs. Will be used to access shared resources per avfc. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/avio.c
- libavformat/avio_internal.h
- libavformat/internal.h
- libavformat/options.c
- libavformat/url.h
Change #276150
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dd2554331668097f59e4a47a353dd16b4ae90fe9 Comments
avformat/libcurl: add libcurl protocol skeleton configure changes, and protocol with ENOSYS impl. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- configure
- libavformat/Makefile
- libavformat/libcurl.c
- libavformat/protocols.c
Change #276151
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 15e07fbcd1739acffbcd9be21df29d2901b9df1e Comments
avformat/libcurl: implement event loop and read path Add the per-AVFormatContext curl_multi worker thread, the command queue, write/header/xferinfo callbacks and a FIFO with pause/unpause backpressure. url_open2 probes the response on a dedicated thread. url_read drains the FIFO and yields to the avio layer so the interrupt callback is honoured. An explicit "libcurl:" URL prefix forces the protocol. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- configure
- libavformat/avformat.c
- libavformat/internal.h
- libavformat/libcurl.c
Change #276152
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 363f04fee9ef7fa0699d6d484966719c44703f2d Comments
avformat/libcurl: add seek, size and retry Probe Accept-Ranges/Content-Range/Content-Encoding to determine seekability and total size, issue ranged requests via CURLOPT_RANGE, implement url_seek (including AVSEEK_SIZE) as a reconnect at the new offset, and resume seekable transfers from the next missing byte after a recoverable error. Note that we prefer the compression over seekability, as servers are unlikely to compress media files in practice, as this would be huge performance cost for zero gain. However downloading text playlists benefits a lot from compression. YouTube for example can serve text files that have 30MB+ which is huge bandwidth usage when not compressed. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276153
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d0972a725d1f91f069a5e044d220fe45a573bb3e Comments
avformat/libcurl: add options, TLS, proxy, cookies and headers Add the AVOption table and map it onto libcurl. Verbose curl output is routed to av_log at debug level. This mirrors subset of http.c options. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- doc/protocols.texi
- libavformat/libcurl.c
Change #276154
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7346f917e4219888ffdefc80cc5b5803b4d939a3 Comments
avformat: add prefer_libcurl option to route http(s) via libcurl Register a prefer_libcurl IO option that, when set, opens http(s) URLs with the libcurl protocol instead of the native one. The native http protocol stays the default. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- doc/protocols.texi
- libavformat/avio.c
- libavformat/url.h
Change #276155
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0a3cf17d5ff18cd6a69e62985f88e48b572fef88 Comments
avformat/libcurl: set minimum buffer size to curl write size Otherwise, there will never be enough space in the FIFO to put the data written, resulting in the write callback being stuck/paused indefinitely. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276157
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a910a30326fdcaeef1ed6b1ba4ea56d935200b6d Comments
avformat/libcurl: also allow forcing streams to be seekable The documentation states this as a valid option, but the code only allows force-disabling atm. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276158
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4127eb2d6ab0008b4c7a347fffef42b467c88f5b Comments
avformat/libcurl: avoid TOCTOU in libcurl_seek() If this triggers while an asynchronous header_callback() (e.g. from a previous seek or redirect) is still running, the seekable/content_size fields can be written to while libcurl_seek() is still reading from them. I'm not convinced this is an actual bug in practice, but tsan at least is bound to complain about it. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276159
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6c338a659551c8f395954698f8e0c8607c3e3f4c Comments
avformat/libcurl: attach a CURLSH shared handle to all requests This allows sharing cookies, HSTS state etc. between requests inside a single AVFormatContext. This is analogous to the status quo of http.c, which also re-uses cookies across all requests. Note that the connection state, DNS cache, SSL session etc. are shared by default when using a multi handle, so we only need to explicitly share the rest. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276160
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c70d777f7fb1023adba169dd2e037b4900e96af7 Comments
avformat/libcurl: enable cookie engine unconditionally With the previous commit, this allows cookies to persist across requests. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276161
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e11cec1059cd2e183be2ce0b7ab4b29a173667f7 Comments
avformat/libcurl: respect format whitelist And also set a reasonable default whitelist. This is especially important because libcurl supports a much wider range of protocols than FFmpeg, including e.g. smtps, telnet, gopher, etc. We have to include "libcurl" in libcurl's own default whitelist, otherwise it will refuse te recursively open itself for e.g. HLS. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276162
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b737bddaf197be1cd6b846b4d8810fb20a2366d0 Comments
avformat/avio: re-use av_opt_set() to parse prefer_libcurl Otherwise, this fails to parse values like "true" or "yes". This does require stack-allocating a dummy object, but that's not a big deal, as we only ever set this single option on it, so nothing should ever get allocated. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/avio.c
Change #276163
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 45c4f59eb2da4a084fd2cda52ec362e6185839b8 Comments
avformat/aviobuf: add prefer_libcurl to ffurl_copy_url_options() Otherwise this doesn't reach e.g. the inner HTTP requets made by HLS etc. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/aviobuf.c
Change #276164
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b5bf0a1a87c4fc572a899234d63e1db3e2b0dafa Comments
avformat/hls: check if http protocol is native or not When using -prefer_libcurl, http might be served by libcurl instead of the native HTTP backend; in this case we shouldn't use `ff_http_do_new_request2` and instead create a new request. I added a few assertions to safeguard some of the assumptions this code clearly relies on. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/hls.c
Change #276165
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 835ebef5351dd7bd60ce59070c24099678c93021 Comments
avformat/libcurl: keep track of owning AVFormatContext For avfc-attached curl loops. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276166
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cee0613cf7787a9dce9a256027dd4484deea21e6 Comments
avformat/libcurl: track and report connection/request statistics In theory, we could expand this a lot more, by adding more verbose statistics about individual request latency etc, but I don't think that's as helpful (to me) as at least tracking the number of requests made. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276167
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d993f37a1bb8ac6ba4094b82767c596c031edc49 Comments
avformat/avio: propagate prefer_libcurl preference from parent URLContext Since this is consumed by e.g. protocols which open inner protocols. This would normally be propagated by the `av_opt_copy` call, but as this check happens *before* the inner URLContext is even allocated, we're forced to propagate the options manually. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/avio.c
Change #276168
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 90a08d3657654603d45b54d9f4a6b71846578c76 Comments
avformat/libcurl: early exit on no-op seek Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276169
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 34015e179d947d27475defe2dea46457698f9bbd Comments
avformat/libcurl: fully parse Content-Range header Logic copied from http.c Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276170
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d754fb37a572148830625f7a4d8006c3836822b1 Comments
avformat/libcurl: simplify continuation decision logic Instead of trying to statically guess whether or not we expect more data to be available by exactly recreating the logic, we can consult the parsed content-range header directly to determine if there are more bytes in the file. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276171
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 946a450cecaededc1a44d779176684e3412ceb71 Comments
avformat/libcurl: implement -initial_request_size See corresponding feature in http.c. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- doc/protocols.texi
- libavformat/libcurl.c
Change #276172
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7530aa12ee9e0ee33d5dfc2336411acae378ebf1 Comments
avformat/libcurl: avoid integer overflow in connect_timeout This is multiplied by 1000, which can overflow on systems with 32-bit long (i.e. most of them). Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276173
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 615032302929256507093419f8637d3f81140367 Comments
avformat/libcurl: use int64_t consistently Instead of randomly mixing in uint64_t. As far as I can tell, we don't depend on defined overflow behavior anywhere, except where such would be a bug anyways, and I'm also pretty sure we won't exhaust the 63-bit file size limit of int64_t any time soon, so this is just a footgun prevention mechanism. We already have a few dodgy places of mixing int64_t and uint64_t values in the code haphazardly. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276174
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a6514b7c4bbc67b1458caf306e742a121088976 Comments
avformat/libcurl: harden against malicious underflow If the server sends a value of INT64_MIN here, we would correctly parse it and then subtract off -1, underflowing to a huge positive value (and triggering undefined behavior in the process). Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276175
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fea5d3ccc3b13bd60bdd4316309856b8043aec7c Comments
avformat/libcurl: guard against overflow on seek() Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276176
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 337b884a4ea56a84e269a40154328f99731f0d9c Comments
avformat/libcurl: guard against integer overflow on start_request() The failure mode here is to just request the rest of the file, which is explicitly safe. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276177
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 488061b9cb2e29a22b64962b64e2424b732d10a8 Comments
avformat/libcurl: guard against overflow from over-reading data In theory a client could be coaxed by a malicious server to seek to a large 64-bit offset, which would then trigger an overflow of the position. Better safe than sorry and just error out with EIO in such cases. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276178
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cbed9900216d4885e089a59eedd6893104c4d6bc Comments
avformat/libcurl: guard against unexpected reply content-range Harden against malicious or badly misbehaving servers. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/libcurl.c
Change #276179
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 723a855e52cabe7784193b7cd63772bd8916ee55 Comments
avformat/libcurl: validate that the server honored a requested start offset Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276180
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aec0c7a0cb4f5dae75c39db56c1a33b1f469668f Comments
avformat/libcurl: only offer compression for full unbounded requests Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276181
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision be6b6743b81109b865964325b1ffce88c92888fb Comments
avformat/libcurl: improve content size tracking Track the size for non-seekable replies too, don't reset a known size when a reply omits it, and don't store the encoded length of a compressed body. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276182
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c2b0152ad3468ffe35ecd6eb63afdee30e5d15c5 Comments
avformat/libcurl: keep the seekable user override across replies It was applied once after the probe, from the wrong thread, and any follow-up reply re-evaluating seekability discarded it. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276183
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 798fb1f9aae45bcdde0496950a7fdc7625585d22 Comments
avformat/libcurl: clear the pause flag when unpausing Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276184
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6d626c1a3c104602fa9ea6ea0d8db0b669ec8f78 Comments
avformat/libcurl: fix AVBPrint leak on setup_protocols() error paths The API is not clear to me if AVBPrint has to be finalized on errors, but there is nothing wrong to be defensive here Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276185
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d097f9385fb91b36b82a39033a4ca0ce739f054c Comments
avformat/libcurl: limit buffer_size to INT_MAX Larger values silently truncate on 32-bit, which can make the resulting FIFO too small to ever satisfy the unpause threshold. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276186
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 27 Jul 2026 19:05:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 298f67fa2a8ec97af323e92c76a65b5f3552ed7a Comments
avformat/libcurl: fix comments Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/libcurl.c
Change #276212
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 27 Jul 2026 20:13:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7e1f4dc31864b4bde2b43ed80aedaa2b6600ff81 Comments
Reapply "avfilter/avfiltergraph: always retry format negotiation after auto-filters" This reverts commit cd9d265344b1d39c7b65eb018acac0478c5d736a.
Changed files
- libavfilter/avfiltergraph.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-scale-premultiply
Change #276213
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 27 Jul 2026 20:32:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 80f14b251b54d259b18b0ba55ca06d23da2c20f0 Comments
Revert "lavfi: do not send premultiplied alpha to filters not ready for it" This reverts commit f3431169daab3f1ca26638de6d4f6fca0f090c15, which introduced various regressions and hangs with at least exr, as reported by fate, and potentially other codecs that are not as thouroughly tested.
Changed files
- libavfilter/formats.c
- libavfilter/formats.h
Change #276214
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 27 Jul 2026 20:34:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2be4a694a3893d2ec741ab8c51c2217f95411273 Comments
Revert "fate: disable tests that depend on premultipled conversion" This reverts commit 336b175c9f5d1194f4377f34aacfe4a85ca628b6.
Changed files
- tests/fate/image.mak
- tests/fate/lavf-image.mak
Change #276215
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 28 Jul 2026 00:53:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 42970ac7e2a18334e1cc645f6a39194778c4e35a Comments
tests/checkasm/checkasm: Map rnd to checkasm_rand_uint32 Before the switch to libcheckasm, rnd returned an unsigned value; now it only returns a signed value in the range 0..INT_MAX, so that the sign bit is not random at all. This means that when rnd is used to initialize four bytes at a time, one bit is not random. Fix this by mapping rnd to checkasm_rand_uint32(). Reviewed-by: Niklas Haas <ffmpeg@haasn.dev> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/checkasm.h
Change #276216
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 28 Jul 2026 00:54:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c6309b5c63add7ad0ec221fafefc32bdcd6f8b91 Comments
tests/checkasm/h264pred: Avoid declare_func_emms This is possible after the recent MMX->XMM conversions and preferable as it makes the test stricter. Reviewed-by: Niklas Haas <ffmpeg@haasn.dev> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/h264pred.c
Change #276235
Category ffmpeg Changed by Christopher Decker <chris.decker08@gmail.com> Changed at Tue 28 Jul 2026 06:59:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 94ff335d762ad08f2557a320def57f287d74e2a5 Comments
avformat/os_support: fix return value of win32_rename The return value of MoveFileExW was not being correctly interpreted, see https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexw. On Windows a failed rename over the file: protocol now surfaces as failed to rename file %s to %s: Operation not permitted (ff_rename, libavformat/avio.c:867) plus an AVERROR(EPERM) return, where previously the muxer reported success and the user was left with a missing or stale output file and no diagnostic. This affects the write-to-temp-then-rename paths in hlsenc, dashenc, hdsenc, smoothstreamingenc, segment, and img2enc (e.g. HLS/DASH playlist updates, -write_temp_file, segment list finalization). Also, added unit tests to exercise the rename function. Signed-off-by: Christopher Decker <chris.decker08@gmail.com>
Changed files
- libavformat/Makefile
- libavformat/os_support.h
- libavformat/tests/rename.c
- tests/fate/libavformat.mak
Change #276245
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 10:39:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5dbf1dccadd51718a4553879d1eaf6fd9ee962b0 Comments
avcodec/dxva2: map 4:2:0 12-bit to P012 surfaces Select P012 as the D3D11VA/DXVA2 frames sw_format for YUV420P12 content and map it to DXGI_FORMAT_P016, so 12-bit 4:2:0 hardware decoding can allocate a usable surface. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/dxva2.c
Change #276247
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 10:39:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 04d2790ab75127216f00316f3c8a15ff20ffc0eb Comments
avcodec/dxva2: add AV1 Profile 2 decoder GUIDs Add the AV1 Professional (Profile 2) decoder GUIDs, including the dedicated 12-bit 4:2:0 mode, so D3D11VA/DXVA2 can match a decoder for Profile 2 streams. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/dxva2.c
Change #276248
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 10:39:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 099aa719021a09d2373dec6cadb6b3d4c280095d Comments
avcodec/av1dec: allow D3D11VA for 12-bit 4:2:0 Offer the D3D11VA hwaccel pixel formats for YUV420P12 (AV1 Profile 2), enabling hardware decoding of 12-bit 4:2:0 streams on capable devices. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/av1dec.c
Change #276249
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 10:39:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fe953596e9f53e3d61c465bce7a29834cae3375b Comments
avcodec/d3d12va: add AV1 Profile 2 support Accept the AV1 Professional profile in the D3D12VA hwaccel and select the matching decode profile GUID, offer D3D12 for YUV420P12 in the decoder, map the frames context to P012, and add P016 (12-bit) support to the d3d12va hwcontext. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/av1dec.c
- libavcodec/d3d12va_av1.c
- libavcodec/d3d12va_decode.c
- libavutil/hwcontext_d3d12va.c
Change #276299
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 17:39:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cac354352929816748f7fcb99ccf2e1740d7955f Comments
avcodec/codec_desc: sync long_name with pcm-dvd.c It was outdated for a long time. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/codec_desc.c
Change #276300
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 17:39:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 88c8100e22d538ea318a505efa93c9f2d353249f Comments
avcodec/pcm-dvd: rename long codec name to DVD-Video Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/pcm-dvd.c
- libavcodec/pcm-dvdenc.c
Change #276316
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 17:54:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 047eb18451180c5b4933050a4453274d81ae4127 Comments
avcodec: add PCM DVD-Audio decoder Decodes the LPCM variant found in DVD-Audio AOB streams. Unlike DVD-Video LPCM it supports up to 192 kHz sample rates and splits channels in two channel groups, which may use different quantization. Samples are grouped in sets of 2 samples over all channels, with the second channel group's data stored first within each set, as 16-bit big-endian most significant parts followed by the remaining bits. Based on information from expired US 6,580,671 patent et al. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- Changelog
- doc/APIchanges
- doc/decoders.texi
- doc/general_contents.texi
- libavcodec/Makefile
- libavcodec/allcodecs.c
- libavcodec/codec_desc.c
- libavcodec/codec_id.h
- libavcodec/pcm-dvda.c
- libavcodec/version.c
- libavcodec/version.h
Change #276317
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 17:55:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ff818b87bf1cfee7a10196e90d0df8de44e9a771 Comments
avformat/mpeg: fix demuxing of DVD-Audio LPCM Substream 0xa0 packets without the DVD-Video dynamic range control marker byte were assumed to be MLP, while in DVD-Audio AOBs substream 0xa0 always carries LPCM (MLP uses 0xa1), so hi-res LPCM streams were misdetected and decoded as garbage. Classify them as PCM_DVDA and keep the private stream header in the packet for the decoder to parse, as its length is variable and it carries the audio format. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/mpeg.c
Change #276318
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 17:55:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b449f86287f173802abadcf3fa3e37f88d9fb685 Comments
tests/fate/pcm: add fate-pcm_dvda test Input is cut down version of https://samples.mplayerhq.hu/DVD-Audio/ats.AOB Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tests/fate/pcm.mak
- tests/ref/fate/pcm_dvda
Change #276319
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e822dd253b281e24a6a25cfe422ba5323ae9b961 Comments
avformat/hls: remove else after break To reduce unnecessary nesting.
Changed files
- libavformat/hls.c
Change #276320
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2526ac4771d6fff24506e5871d842771e2bbd59c Comments
avformat/hls: use av_rescale_q instead of doing only denominator
Changed files
- libavformat/hls.c
Change #276321
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ede944b3622dd2bcd414f6e522ce7fbeb5f7974a Comments
avformat/hls: allow seeking within live playlists Live (and EVENT) playlists are seekable within the currently known segment list. Seeks before the list start clamp to the oldest segment, past the end to the live edge. Live playlist can evict old segments, we track that by reading EXT-X-MEDIA-SEQUENCE. Previusly the code assumed that the live playlist, don't have past segments, however some servers has very deep usable timeshift. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
Change #276322
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 84bc57637130c320a8bdbdce9bd438b8210fe980 Comments
avformat/hls: set stream start_time for all playlist types Rebase the first packet's timestamp onto the start of the segment list regardless of playlist type, and report it as start_time. Previously only EVENT playlists did this and live streams took start_time from the first loaded segment at the live edge. Which is not correct as some servers provide very deep (hours even) time shift in live playlist. The evicted segments are already tracked by EXT-X-MEDIA-SEQUENCE. This allows us to use all available segments, not only the future ones on live playlist. Also prefer PTS over DTS, as EXTINF durations and start_time are presentation time. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
- tests/fate/hlsenc.mak
- tests/ref/seek/hls
Change #276323
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 848fb754dd8ac26e1fa42a94d1034af3eabcea0d Comments
avformat/hls: don't discard target segment's first keyframe when seeking Segment starts on the seek timeline are derived from EXTINF durations, so the first keyframe of the target segment can have a slightly lower DTS than the snapped seek position, in which case the packet discard loop would skip it and resume playback one segment late. Make sure we start at the very beginning of the stream in this case. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
- tests/ref/seek/hls
Change #276324
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 28 Jul 2026 18:01:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f6fa0d3fdafc8cd8224c5fe9dc974bd5ad2c9a5e Comments
avformat/hls: refine first_timestamp from the first segment's packets first_timestamp is taken from the first packet in mux order, which is not necessarily the earliest timestamp in the segment. Lower it while packets of that segment are still arriving, so the seek timeline is anchored at the true segment start. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
Change #276330
Category ffmpeg Changed by Kenan Alghythee <kalghy2@uic.edu> Changed at Tue 28 Jul 2026 20:04:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e2bc6d88cd68184288c16570e04881c3a426a05a Comments
avcodec/cbs_av1: pad the ITU-T T.35 payload buffer Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavcodec/cbs_av1_syntax_template.c
Change #276373
Category ffmpeg Changed by Kenan Alghythee <kalghy2@uic.edu> Changed at Wed 29 Jul 2026 02:42:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 06fd4fd0e787e819fd697dc687efe7f7eae798c8 Comments
avfilter/vf_xpsnr: avoid a zero block size on small frames Fixes: division by zero Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavfilter/vf_xpsnr.c
Change #276375
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 29 Jul 2026 04:03:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2b7e5012424a52998cd6a1fe3556272313cb7527 Comments
avformat/codec2: avoid integer overflow in packet size and duration Fixes: signed integer overflow Fixes: 2jy_poc_codec2.zip / poc_codec2.raw Fixes: jOQASNnOm6O7 Found-by: Jiale Yao <yaojiale02@163.com>
Changed files
- libavformat/codec2.c
Change #276376
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 29 Jul 2026 06:37:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f3b13867076d616de36d7d8c50298c113b1c62ba Comments
avcodec/videotoolboxenc: check PTS validity before timestamp conversion
Changed files
- libavcodec/videotoolboxenc.c
Change #276377
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 29 Jul 2026 06:37:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6f82db5ad5a10a6b49d1460a7ed4acace5e2c6a9 Comments
avcodec/videotoolboxenc: respect CMTime.timescale when computing timestamps vtenc_cm_to_avpacket converts output CMSampleBuffer timestamps back to codec timebase by dividing pts.value by avctx->time_base.num. This relies on the output CMTime having the same timescale as the one passed to VTCompressionSessionEncodeFrame. Apple does not guarantee this, and the output timescale can differ from the input. Use av_rescale_q with the actual CMTime timescale so that the conversion is correct regardless of what timescale VideoToolbox returns. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Changed files
- libavcodec/videotoolboxenc.c
Change #276381
Category ffmpeg Changed by Julius Bairaktaris <julius@bairaktaris.de> Changed at Wed 29 Jul 2026 10:52:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d43b1efd2e948f44cfac91f7a4325a3d927d6718 Comments
avfilter/vf_amf_common: fix component Init() format with hwaccel input frames amf_init_filter_config() returned the hardware pixel format (e.g. AV_PIX_FMT_D3D11) as in_format when the input link carries D3D11VA or DXVA2 hw frames. av_av_to_amf_format() maps hw formats to AMF_SURFACE_UNKNOWN, so every AMF filter failed its component Init() with AMF_INVALID_ARG (VQEnhancer, FRC) or AMF_NOT_SUPPORTED (Converter, HQScaler). Return the underlying software format instead, which is already validated against AMF a few lines above. Apply the same mapping to the default output sw format, which otherwise ends up as the hw pixel format in hwframes_out->sw_format when the output link uses a hwaccel format. Fixes e.g.: ffmpeg -hwaccel d3d11va -hwaccel_output_format d3d11 -i in.mp4 -vf frc_amf -c:v hevc_amf out.mp4 Note: with D3D11VA input, the compute-based components (VQEnhancer, HQScaler, VideoConverter) additionally require decode textures created with D3D11_BIND_SHADER_RESOURCE, e.g.: -init_hw_device d3d11va=dx11:,SHADER=1 -hwaccel_device dx11 FRC and DXVA2 input work with default decode textures.
Changed files
- libavfilter/vf_amf_common.c