Builder ffmpeg64-solaris10-i386 Build #14066
Results:
Failed shell_2 shell_3 shell_4 shell_5
SourceStamp:
| Project | ffmpeg |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Branch | master |
| Revision | 9fc8c785e2747c87121ec28f8f10ceab0562384b |
| Got Revision | 9fc8c785e2747c87121ec28f8f10ceab0562384b |
| Changes | 1072 changes |
BuildSlave:
unstable10xReason:
The SingleBranchScheduler scheduler named 'schedule-ffmpeg64-solaris10-i386' triggered this build
Steps and Logfiles:
-
git update ( 35 secs )
-
shell 'gsed -i ...' ( 0 secs )
-
shell_1 'gsed -i ...' ( 0 secs )
-
shell_2 'gsed -i ...' failed ( 0 secs )
-
shell_3 './configure --samples="../../../ffmpeg/fate-suite" ...' failed ( 7 secs )
-
shell_4 'gmake fate-rsync' failed ( 0 secs )
-
shell_5 '../../../ffmpeg/fate.sh ../../../ffmpeg/fate_config_64.sh' failed ( 0 secs )
Build Properties:
| Name | Value | Source |
|---|---|---|
| branch | master | Build |
| builddir | /export/home/buildbot/slave/ffmpeg64-solaris10-i386 | slave |
| buildername | ffmpeg64-solaris10-i386 | Builder |
| buildnumber | 14066 | Build |
| codebase | Build | |
| got_revision | 9fc8c785e2747c87121ec28f8f10ceab0562384b | Git |
| project | ffmpeg | Build |
| repository | https://git.ffmpeg.org/ffmpeg.git | Build |
| revision | 9fc8c785e2747c87121ec28f8f10ceab0562384b | Build |
| scheduler | schedule-ffmpeg64-solaris10-i386 | Scheduler |
| slavename | unstable10x | BuildSlave |
| workdir | /export/home/buildbot/slave/ffmpeg64-solaris10-i386 | slave (deprecated) |
Forced Build Properties:
| Name | Label | Value |
|---|
Responsible Users:
- Abdessamietry70457@gmail.com
- Ackanirgit.ackanir@gmail.com
- Aleksander Shveikinalex.svek@gmail.com
- Andreas Menzeandreas.menze@hr.de
- Andreas Rheinhardtandreas.rheinhardt@outlook.com
- Anxious Koisiddoaoing@gmail.com
- Araz IusubovPrimeadvice@gmail.com
- Ayoub Nabil237098474+ayoubnabil@users.noreply.github.com
- Ayoub Nabil Boubagrat237098474+ayoubnabil@users.noreply.github.com
- Brad Smithbrad@comstyle.com
- Brian Leakephyd@phyd.org
- Charly Morgand-Poyaccharly.morgand-poyac@bbright.com
- Christopher Deckerchris.decker08@gmail.com
- Cloud-LHYsecurity@clouditera.com
- Dan Dennedydan@dennedy.org
- Daniel Verkampdaniel@drv.nu
- David Roscadavid.rosca@amd.com
- Diego de Souzaddesouza@nvidia.com
- Dmitrii Gershenkopbortengineer@protonmail.com
- Frank Plowmanpost@frankplowman.com
- Gabriel Balaichffmpeg@ninbura.com
- Guo Yejunyejun.guo@intel.com
- Hans-Kristian Arntzenpost@arntzen-software.no
- Hao Chenhaochenc@google.com
- Haochen Chenhaochenc@google.com
- Hawthornrv.help23@gmail.com
- Hunter Kvalevoghunter@kvog.sh
- J. Brandt Buckleybrandt@runlevel1.com
- Jack Laujacklau1222gm@gmail.com
- Jamaika1lukaszcz18@wp.pl
- James Almerjamrial@gmail.com
- Jeongkeun Kimvariety0724@gmail.com
- Jiale Yaoyaojiale02@163.com
- Joshua RogersMegaManSec@users.noreply.github.com
- Julius Bairaktarisjulius@bairaktaris.de
- Jun Zhaobarryjzhao@tencent.com
- KO Myung-Hunkomh78@gmail.com
- Kacper Michajłowkasper93@gmail.com
- KawaiiEngine (Sashimiso)209421934+KawaiiEngine@users.noreply.github.com
- Kenan Alghytheekalghy2@uic.edu
- Kirill A. Korinskykirill@korins.ky
- Kostazolkostazol@users.noreply.github.com
- 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
- Michael Partridgemichael.partridge@petrosys.com.au
- Mirkó Visontaimirkov@google.com
- Nathan Lucasnlucasgit@gmail.com
- Nicolas Gaulliernicolas.gaullier@cji.paris
- Nicolas Georgegeorge@nsup.org
- Niklas Haasgit@haasn.dev
- Nil Fons Miretnilf@netflix.com
- Omkhar Arasaratnamomkhar@linkedin.com
- Paulo Cabral Sanzpaulosanz@poli.ufrj.br
- Pavel Kohoutdisclosure@aisle.com
- Philip Langdalephilipl@overt.org
- Raja-89imraja729@gmail.com
- Ramiro Pollaramiro.polla@gmail.com
- Reda DRISSIreda.drissi@yahoo.fr
- Romain Beauxisromain.beauxis@gmail.com
- Scott Kidderscott@kidder.io
- Shiyou Yinyinshiyou-hf@loongson.cn
- Shreesh Adiga16567adigashreesh@gmail.com
- StachowiakDawiddawidos234@gmail.com
- Steve Lhommerobux4@ycbcr.xyz
- Steven Liulq@chinaffmpeg.org
- Sylvestre Ledrusylvestre@debian.org
- Thomas Guilberttguilbert@chromium.org
- Théo Valette315040668+theovalette@users.noreply.github.com
- Timo Rothenpielertimo@rothenpieler.org
- Tobias Rappt.rapp@noa-archive.com
- Tristan Matthewstmatth@videolan.org
- Tymur Boikotboiko@nvidia.com
- Umar Pathanhello@umar.ac
- Vignesh Venkatvigneshv@google.com
- Vladimir Panteleevgit@cy.md
- Vladimir Panteleevgit@thecybershadow.net
- Wu Jianhuatoqsxw@outlook.com
- WyattBluewyattblue@auto-editor.com
- Zhao Zhiliquinkblack@foxmail.com
- Zhao Zhilizhilizhao@tencent.com
- Zsolt Vadaszzsolt_vadasz@protonmail.com
- Zuxy Mengzuxy.meng@gmail.com
- adornadorn@hr.de
- almogyalinalmog.yalin@gmail.com
- deng.zewendeng.zewen@zte.com.cn
- guy-with-a-whyaaron@iterationlab.io
- iSold Leos@qwqlog.com
- jiangjiejiangjie@agora.io
- lckluckysk@foxmail.com
- marcos ashtonmarcosashiglesias@gmail.com
- ninburagabriel@ninbura.com
- panboxiaosapanboxiaosa@gmail.com
- qaq031011440810736@qq.com
- sfan5sfan5@live.de
- shadowcaster3vasyl.samoilov@gmail.com
- softworkzsoftworkz@hotmail.com
- tangshatangsha@kylinos.cn
- tknaveenunbornboron69@gmail.com
- unfunnyatearugyalisib2222@gmail.com
- wang-binwbsecg1@gmail.com
- wangbinwbsecg1@gmail.com
- wangnovwangnov6@gmail.com
- yongdevyongdev@google.com
- younengxiaosteven.xiao@amd.com
- yuanhecaiyuanhecai@loongson.cn
- zhanghongyuanzhanghongyuan@uniontech.com
- zhorzhetta1404-uxzhorzhetta1404@gmail.com
- 张永鹏roc63@outlook.com
- 罗乾林luoqianlin@sansi.com
Timing:
| Start | Thu Sep 3 14:50:27 2026 |
| End | Thu Sep 3 14:51:14 2026 |
| Elapsed | 47 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
Change #276439
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Wed 29 Jul 2026 14:37:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a234fc1130e6b17d550371dede849918202a303a Comments
avfilter/dnn: prevent crash on parameterless LibTorch models When loading a TorchScript model that does not contain any learnable parameters (e.g., a purely functional model), the Torch backend would crash during inference. This occurred because the code attempted to dereference the first iterator of the model's parameter list `parameters().begin()` to determine the device, which results in Undefined Behavior when the parameter list is empty. This commit fixes the issue by determining the inference device directly from the user-configured `ctx->device` string instead of probing the model parameters, allowing parameterless models to execute safely. Testing: 1. Generate a parameterless model: cat << 'EOF' > generate_model.py import torch class DummyModel(torch.nn.Module): def forward(self, x): return x scripted_model = torch.jit.script(DummyModel()) scripted_model.save("dummy_model.pt") EOF python3 generate_model.py 2. Run inference (previously crashed, now succeeds): ./ffmpeg -y -i input.mp4 -vf 'format=rgb24,dnn_processing=dnn_backend=torch:model=dummy_model.pt' -frames:v 5 -f null - Signed-off-by: Raja Rathour <imraja729@gmail.com>Changed files
- libavfilter/dnn/dnn_backend_torch.cpp
Change #276475
Category ffmpeg Changed by Omkhar Arasaratnam <omkhar@linkedin.com> Changed at Wed 29 Jul 2026 22:37:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 83c692282631e6d035fa52d2e2c5118b1d2a27d7 Comments
avformat/tls_openssl: bind peer identity for numeric-IP verify tls_open() installed a peer-identity target only when the URL host was non-numeric. For a numeric-IP target the whole block was skipped, so with verify=1 OpenSSL validated the chain to a trusted CA but bound no identity, and any publicly-trusted certificate for any name was accepted (e.g. tls://203.0.113.10?verify=1). Run the identity block for every non-listening connection. Classify s->host with the same getaddrinfo(AI_NUMERICHOST) rule tls.c uses. A numeric host is pinned to the certificate's iPAddress SAN by handing OpenSSL the parsed binary address via X509_VERIFY_PARAM_set1_ip(); everything else, including a verifyhost=<name> override, binds by name via SSL_set1_host(). Passing the binary address rather than re-probing the ASCII form pins legacy numeric spellings such as 2130706433 as IPs instead of letting them fall back to hostname matching. SNI is still suppressed for numeric transport hosts (RFC 6066 sec. 3) via s->numerichost. The identity target is installed unconditionally for non-listening connections; whether the certificate is actually verified stays controlled separately by SSL_CTX_set_verify() under s->verify, so disabling verification keeps the prior behaviour. Sets AVERROR_EXTERNAL with an explicit log line on failure. dtls_open() sets s->is_dtls and then calls tls_open(), so DTLS client connections run through the same identity block and are covered here. Found-by: Claude (Anthropic). Human-verified and reported by Omkhar Arasaratnam <omkhar@linkedin.com>. Signed-off-by: Omkhar Arasaratnam <omkhar@linkedin.com>
Changed files
- libavformat/tls_openssl.c
Change #276479
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 29 Jul 2026 23:07:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 93f2a525ec6c7b467bae68322720d10188fc6e30 Comments
avcodec/dvbsub_parser: avoid signed overflow in the capacity check Fixes: signed integer overflow Fixes: out of array access Fixes: poc.wtv Fixes: fJeEU9JwKwsR Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/dvbsub_parser.c
Change #276480
Category ffmpeg Changed by almogyalin <almog.yalin@gmail.com> Changed at Wed 29 Jul 2026 23:08:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 04ecca792fe8c4bfb9a8a2f580e6f3740258feee Comments
avformat/iamf_parse: fix inverted subblock duration validation The check on variable subblock durations had an inverted comparison, rejecting valid multi-subblock parameters and failing to catch subblock durations exceeding the remaining time.
Changed files
- libavformat/iamf_parse.c
Change #276481
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 29 Jul 2026 23:20:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd1f545cf27ba08f6f5b31b1e92665d7874d4fd7 Comments
avcodec/rscc: do not leave uninitilized data when the input is too short Fixes: use of uninitialized memory Fixes: rscc_short_deflate_heap_disclosure.avi Fixes: plB80py3i3Bu Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/rscc.c
Change #276501
Category ffmpeg Changed by panboxiaosa <panboxiaosa@gmail.com> Changed at Thu 30 Jul 2026 01:49:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b57a3d028dbefc95f5f4bb70f2b2f5f8debb9a0c Comments
avformat/mov: set video packet durations in presentation order STTS sample deltas follow decode order, while AVPacket.duration is defined as the interval to the next PTS in presentation order. Assigning the deltas directly therefore produces incorrect packet durations for VFR video with reordered frames. After index construction and edit-list processing, sort samples by PTS and set every duration with a following PTS from adjacent presentation timestamps. This reorders STTS durations where possible and derives intervals produced by the STTS/CTTS combination when necessary. Keep the original timing table if allocation fails or timestamps are invalid. Add FATE coverage for the official VFR H.264 sample and for a generated MPEG-4 case whose presentation intervals are not a permutation of its STTS deltas. Update the HEVC dts2pts CRA reference for the corrected presentation-order durations. Signed-off-by: panboxiaosa <panboxiaosa@gmail.com>
Changed files
- libavformat/mov.c
- tests/fate/mov.mak
- tests/ref/fate/hevc-bsf-dts2pts-cra
- tests/ref/fate/mov-vfr-bframes-derived-duration
- tests/ref/fate/mov-vfr-bframes-duration
Change #276502
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 30 Jul 2026 02:12:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2f234ea34c81288e3840fca632dd16481d8de39f Comments
avcodec/tiff: reject inflate output shorter than the strip Fixes: use of uninitialized memory Fixes: tiff_short_deflate_heap_disclosure.tiff Fixes: 1cRIkpUVMQtn Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/tiff.c
Change #276503
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 30 Jul 2026 02:13:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a100d346dafd012bfc0c20098a764c6d01a05714 Comments
avformat/mov: bound sgpd sync entry_count by the atom size Fixes: unbounded allocation Fixes: ffmpeg-sgpd-sync-entry-count-alloc.mp4 Fixes: 4f7OaHqbUKh2 Found-by: Brian Lee, Youngjoon Kim (Georgia Tech SSLab)
Changed files
- libavformat/mov.c
Change #276519
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Thu 30 Jul 2026 06:47:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 05be98e3a2ea5c8dfc102860bd96a12a84b93346 Comments
doc/nut.texi: point at the latest spec in the git repository subversion in 2026 is a bit odd
Changed files
- doc/nut.texi
Change #276537
Category ffmpeg Changed by wangnov <wangnov6@gmail.com> Changed at Thu 30 Jul 2026 08:51:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2ae24134889e3684327196a2e6354c36d967051a Comments
avcodec/vp8, vp9: warn when native decoders ignore WebM alpha WebM VP8/VP9 alpha is a second bitstream attached via a Matroska BlockAdditional element (BlockAddID 1). Only the libvpx wrapper decoders merge it into the output frame; the native vp8/vp9 decoders have no code path for it and silently return an opaque frame. Warn once per decoder instance instead of failing silently, pointing at the decoder that does support it. The av_log_once() state is synchronized across frame-thread contexts to avoid duplicate warnings with frame threading. Reported in https://trac.ffmpeg.org/ticket/11165 and https://github.com/renpy/renpy/issues/1402. Signed-off-by: wangnov <wangnov6@gmail.com>
Changed files
- libavcodec/vp8.c
- libavcodec/vp8.h
- libavcodec/vp9.c
- libavcodec/vp9dec.h
Change #276592
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 30 Jul 2026 15:19:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c77c0e580a39580c085b7182885601015b7f3da4 Comments
avcodec/bsf/eac3_core: clear profile value on init() The output stream no longer has Atmos metadata, so the AV_PROFILE_EAC3_DDP_ATMOS profile, if it was set, is no longer valid. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/bsf/eac3_core.c
Change #276593
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 30 Jul 2026 15:19:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 86940d45aff7d59810794df3ab2b39b7b83b478c Comments
avcodec/bsf/truehd_core: clear profile value on init() The output stream no longer has Atmos metadata, so the AV_PROFILE_TRUEHD_ATMOS profile, if it was set, is no longer valid. Fixes issue #23195. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/bsf/truehd_core.c
Change #276604
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 30 Jul 2026 23:31:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c6bd6abb59926385a454a4485f9c28d08a20f775 Comments
avcodec/x86/h264_intrapred: Report accurate number of registers used The pred{8x8,16x16}_plane functions only use five xmm register. The inflated number of seven (which leads to saving and restoring xmm6 on Win64) has been introduced in d20f133ef962da71326bc3635e086696f45ab64e, probably because the mmx version of these functions used seven mmx register. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/h264_intrapred.asm
Change #276605
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 30 Jul 2026 23:31:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 27a90f6ad4c62f1bbbc6cf74e78f4a5e0c9ccd37 Comments
avcodec/x86/h264_intrapred: Reduce number of regs in pred4x4_tm_vp8_8 Avoids saving and restoring volatile xmm registers on Windows; no change in benchmarks here (on Unix64). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
Change #276606
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 30 Jul 2026 23:31:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5f832b7b3fd4cb8daf9bb64373230809c246bd84 Comments
avcodec/x86/h264_intrapred: Avoid shuffles We only need the shuffle a byte in the lower quadword; also notice that we don't need the clamping provided by packuswb as these values are averages of byte values. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
Change #276609
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 06:00:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e38b5d15bd93585f96c75e31e2dd1e1fe9294d05 Comments
avfilter/af_arnndn: pad the DCT input buffers to the read length Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavfilter/af_arnndn.c
Change #276610
Category ffmpeg Changed by Kenan Alghythee <kalghy2@uic.edu> Changed at Fri 31 Jul 2026 06:00:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 534f16d866c732a85c34ac576d66d578669578f1 Comments
avcodec/bsf/dovi_rpu: handle update_rpu() returning no RPU Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavcodec/bsf/dovi_rpu.c
Change #276611
Category ffmpeg Changed by Kenan Alghythee <kalghy2@uic.edu> Changed at Fri 31 Jul 2026 06:00:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 372a611913e6e2ba3d0fe859a00934f974f7d003 Comments
avcodec/dovi_rpuenc: validate vdr_rpu_id from the input metadata Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavcodec/dovi_rpuenc.c
Change #276612
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 06:00:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 79e10e51960f848b82c597c540087bcc66aa6e17 Comments
avcodec/dovi_rpudec: bound num_x/y_partitions Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavcodec/dovi_rpudec.c
Change #276613
Category ffmpeg Changed by Kenan Alghythee <kalghy2@uic.edu> Changed at Fri 31 Jul 2026 06:00:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f1ed338541d7596f5cd7721288049745ec5265f5 Comments
avcodec/dovi_rpuenc: validate the data mapping before generation Fixes: out of array access Fixes: SUcVEyk7r3Gc Found-by: Kenan Alghythee <kalghy2@uic.edu>
Changed files
- libavcodec/dovi_rpuenc.c
Change #276614
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 06:00:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2c18311d59ac8b1a4ca2255750836b892179d27a Comments
avcodec/dovi_rpuenc: normalize vdr_dm_metadata_present to 0/1
Changed files
- libavcodec/dovi_rpuenc.c
Change #276615
Category ffmpeg Changed by Abdessamie <try70457@gmail.com> Changed at Fri 31 Jul 2026 06:01:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a441a2eb383960d76632eb5dc42639ec52d46bd8 Comments
avformat/rtsp: clear authentication on cross-origin redirects RTSP redirects retain URL credentials and authentication state when a Location URI changes to another origin. This can forward reusable credentials to a server with a different scheme, host, or port. Clear the stored credentials and authentication state when the redirect crosses an origin boundary. Preserve them for same-origin redirects. Fixes: cross-origin credential disclosure Fixes: rtsp_redirect_auth_leak_poc.py Fixes: VaKaPOnfN02z
Changed files
- libavformat/rtsp.c
Change #276616
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Fri 31 Jul 2026 07:41:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 43efff09ee84c95341a945097e467dcbbf9dbbe3 Comments
libavcodec/x86/h264_intrapred: xmmN -> mN, movdqa -> mova Use m aliases instead of xmm registers directly so that certain macros can work (e.g. SWAP); likewise replace movdqa with mova Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
Change #276617
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Fri 31 Jul 2026 07:41:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a83c6ad94619ab8f7f4f877463c9532a4f10bb78 Comments
libavcodec/x86/h264_intrapred: Base-4 numbers for shuffling immediates 0xee -> q3232 for example for better readability Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
Change #276618
Category ffmpeg Changed by shadowcaster3 <vasyl.samoilov@gmail.com> Changed at Fri 31 Jul 2026 08:25:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ad53728984531cebdb027e70e78d7165a6bdfe20 Comments
avformat/mpegtsenc: add mpegts_pcr_pid option for separate PCR PID Add a new muxer option mpegts_pcr_pid that generates PCR on a dedicated adaptation-field-only PID, separate from any elementary stream. ISDB-T 1seg receivers require PCR on a standalone PID. When PCR shares the video PID, these receivers acquire the service but refuse to decode video and audio. This is standard practice in Japanese digital terrestrial broadcasting per ARIB TR-B14. When mpegts_pcr_pid is set to a valid PID value: - PCR packets are generated as adaptation-field-only packets on the specified PID at the interval set by pcr_period - The video stream adaptation fields do not carry PCR flags - The PMT PCR_PID field is set to the specified PID When mpegts_pcr_pid is -1 (default): existing behavior is unchanged. The existing mpegts_insert_pcr_only function is refactored into a parameterized mpegts_insert_pcr_only_pid(s, pid, cc, discontinuity) to avoid code duplication. Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/23649 Signed-off-by: shadowcaster3 <vasyl.samoilov@gmail.com>
Changed files
- doc/muxers.texi
- libavformat/mpegtsenc.c
Change #276648
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 15:18:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision db05df9d135fb56a4babb836d5e9f5c1d984e087 Comments
avcodec/cfhd: reject transform-2 output wider than the plane Fixes: out of array access Fixes: cfhd_transform2_output_width_oob.avi Fixes: MimvoaEVpKow Found-by: Adrian Junge (vurlo)
Changed files
- libavcodec/cfhd.c
Change #276649
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Fri 31 Jul 2026 15:21:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0dd50ec5353ce61f7e2c75a44036de8b8338b055 Comments
avfilter/dnn: initialize DNNData at the config_input call sites vf_dnn_processing.c and vf_dnn_detect.c both declare an uninitialized DNNData model_input before using it. This commit initialize it. Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- libavfilter/vf_dnn_detect.c
- libavfilter/vf_dnn_processing.c
Change #276650
Category ffmpeg Changed by Dan Dennedy <dan@dennedy.org> Changed at Fri 31 Jul 2026 15:29:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 66a8c3758216736cb0cc0b9123f0514eb2627d2f Comments
scale_d3d11: Fix hw_frame_ctx reference leak This fixes #20995. The reference is taken twice and assigned to the same pointer (see above in the same function). Only the latter is needed.
Changed files
- libavfilter/vf_scale_d3d11.c
Change #276651
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 15:34:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5d4d3bdc61412641883a45e060e810f80ea7f4b5 Comments
avcodec/pgssubdec: always give an output rect a palette Fixes: NULL pointer dereference Fixes: poc_null_deref.sup Fixes: Fobbab5Vtlr3 Found-by: VRI with 图龙锋
Changed files
- libavcodec/pgssubdec.c
Change #276664
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8ab8b4fabe8440d32a966f355dc2102d86336673 Comments
avcodec/ffv1dec: mark the slice damaged when its remap fails
Changed files
- libavcodec/ffv1dec.c
Change #276665
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 56743898d214decccf219aea4233da7aca9dc71c Comments
avcodec/ffv1dec: reject a remap that produces zero entries
Changed files
- libavcodec/ffv1dec.c
Change #276666
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 533a3c254d864a7cd4066cd055c2e2d038e95576 Comments
avcodec/vulkan/ffv1_dec_setup: act on the slice header rejection
Changed files
- libavcodec/vulkan/ffv1_dec_setup.comp.glsl
Change #276667
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cc82fdfbd4cacef2018f1dadb29330bf80c4fe87 Comments
avcodec/vulkan/ffv1_dec_setup: reject a remap that produces zero entries
Changed files
- libavcodec/vulkan/ffv1_dec_setup.comp.glsl
Change #276668
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c91b50659b9ae66a966b74246ead91418be53d21 Comments
avcodec/vulkan/ffv1_dec_setup: test mul_count as unsigned
Changed files
- libavcodec/vulkan/ffv1_dec_setup.comp.glsl
Change #276669
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Fri 31 Jul 2026 21:37:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 946272b79a325e9bce613b260e50e4e4fe7f3159 Comments
avcodec/vulkan/ffv1_dec_setup: bound the fltmap write
Changed files
- libavcodec/vulkan/ffv1_dec_setup.comp.glsl
Change #276701
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 01 Aug 2026 16:45:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4f8043e658e195cc4e44cb79e864c4a6466b72a7 Comments
avcodec/cbs_h266: size vps_direct_ref_layer_flag for the full layer range Fixes: out of array access Fixes: poc_vvc_vps.266 Fixes: 1z6RugPwxp39 Found-by: TainAn Bill
Changed files
- libavcodec/cbs_h266.h
Change #276706
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b5483446d33c6a883d7eec247498a3cc067bfeba Comments
avcodec/x86/vc1dsp_init: Avoid fpel wrappers One can just reuse the already existing SIZExSIZE fpel wrappers. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/fpel.asm
- libavcodec/x86/vc1dsp_init.c
Change #276707
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 933b195bcb2cf1cd8e2c7ba0967452074f01e77d Comments
avcodec/vc1dsp: Avoid negating unnecessarily Due to the earlier "if (a1 < a0 || a2 < a0)" check it is guaranteed that min(a1,a2) is < a0, allowing simplifications. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/vc1dsp.c
Change #276708
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f30ef7eec41dce9ff0f134dcd579b5ade95b5b1b Comments
avcodec/x86/vc1dsp_loopfilter: Avoid imul Multipliying a GPR by 0x01010101 splats a byte to a dword; the intention was to avoid vector shuffles lateron, yet this is not true because the byte splat necessitates a byte->word conversion lateron. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276709
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8434869cfdf3c708c048ce7db1519d4a27f20e1d Comments
avcodec/x86/vc1dsp_loopfilter: Reduce number of GPRs used Reuse the register that held pq for this instead of using another one. This saves a push+pop on 32bit systems and avoids REX prefixes on Unix64. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276710
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f2035a4605734b15847ebf6ffb0d6bd0b1507de3 Comments
avcodec/x86/vc1dsp_loopfilter: Reorder instructions slightly In particular, apply the rounding before adding the result of the multiplication. No change in performance here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276711
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 55bdc109a1911044d11c2a8d8b447a55f6bbe059 Comments
avcodec/x86/vc1dsp_loopfilter: Avoid unnecessary PABSW The loop filter is only active if min(a1,a2)<abs(a0) which is done via masking. Ergo the sign of min(a1,a2)-abs(a0) is known (always negative) and one does not need to use PABSW to get its absolute value. This gives a small speedup. Old benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.1 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 33.6 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 43.0 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 33.4 ( 1.29x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.0 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 38.4 ( 0.16x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 37.2 ( 0.16x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 37.6 ( 0.16x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.5 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 38.4 ( 2.28x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 37.6 ( 2.32x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 37.6 ( 2.32x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 11.7 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 42.0 ( 0.28x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 41.4 ( 0.28x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 44.8 ( 0.26x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 167.2 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 41.8 ( 4.00x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 41.7 ( 3.92x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 45.3 ( 3.69x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 17.1 ( 0.21x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.3 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 17.0 ( 2.89x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.3 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 17.7 ( 0.36x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 16.8 ( 0.38x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.8 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 17.7 ( 4.83x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 16.7 ( 5.12x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 12.7 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 26.4 ( 0.48x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 24.0 ( 0.53x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 170.1 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 25.7 ( 6.63x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 25.2 ( 6.75x) New benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.4 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 42.3 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 32.7 ( 1.29x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.1 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 37.1 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 36.4 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 36.6 ( 0.17x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.2 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 36.9 ( 2.36x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 35.8 ( 2.35x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 36.7 ( 2.38x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 12.0 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 40.0 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 39.8 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 44.4 ( 0.27x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 166.4 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 39.9 ( 4.17x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 39.7 ( 4.19x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 43.8 ( 3.80x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 16.3 ( 0.22x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.3 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 16.2 ( 3.04x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.4 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 16.3 ( 0.39x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 15.8 ( 0.40x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.7 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 16.3 ( 5.24x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 15.8 ( 5.42x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 12.7 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 24.7 ( 0.52x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 22.7 ( 0.56x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 169.4 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 24.1 ( 7.03x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 24.6 ( 6.88x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276712
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8f05c446a1e3f16785b3768623050a23c7d7bfb1 Comments
avcodec/x86/vc1dsp_loopfilter: Use psignw when available The VC1 loop filter uses something equivalent to if (a0_sign ^ clip_sign) { if (clip_sign) d = -d; } else d = 0; which can be mapped to psignw. Old benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.4 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 42.3 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 32.7 ( 1.29x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.1 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 37.1 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 36.4 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 36.6 ( 0.17x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.2 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 36.9 ( 2.36x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 35.8 ( 2.35x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 36.7 ( 2.38x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 12.0 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 40.0 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 39.8 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 44.4 ( 0.27x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 166.4 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 39.9 ( 4.17x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 39.7 ( 4.19x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 43.8 ( 3.80x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 16.3 ( 0.22x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.3 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 16.2 ( 3.04x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.4 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 16.3 ( 0.39x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 15.8 ( 0.40x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.7 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 16.3 ( 5.24x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 15.8 ( 5.42x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 12.7 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 24.7 ( 0.52x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 22.7 ( 0.56x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 169.4 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 24.1 ( 7.03x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 24.6 ( 6.88x) New benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.0 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 43.2 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 31.8 ( 1.36x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.0 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 36.9 ( 0.16x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 35.5 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 36.2 ( 0.17x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.3 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 37.6 ( 2.33x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 35.3 ( 2.40x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 36.1 ( 2.42x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 11.8 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 40.1 ( 0.29x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 39.2 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 42.9 ( 0.28x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 166.5 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 39.8 ( 4.18x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 39.1 ( 4.26x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 42.9 ( 3.88x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 15.7 ( 0.22x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.1 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 15.8 ( 3.10x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.4 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 16.3 ( 0.39x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 15.3 ( 0.42x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.7 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 16.3 ( 5.26x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 15.2 ( 5.62x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 13.6 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 24.8 ( 0.55x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 21.3 ( 0.64x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 170.0 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 23.9 ( 7.11x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 23.3 ( 7.28x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276713
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3ea01992d6330a13e56b332d0e99397852ce2e06 Comments
avcodec/x86/vc1dsp_loopfilter: Don't use MMX regs in horiz. loop filter Using XMM registers in this SSSE3 function leads to fewer shuffles when transposing the input; it also allows to combine calculating a1 and a2. Because of this, codesize is the same as before (on Unix64) although MMX instructions are shorter. Old benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.0 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 42.9 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 31.9 ( 1.35x) New benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 29.9 ( 0.10x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 43.7 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 29.9 ( 1.46x) Hint: checkasm's benchmark always uses the same buffer that is partially updated by the horizontal loop filter function (the middle two of eight columns are updated using word-sized stores). They therefore lead to store-to-load-forwarding failure. If checkasm_alternate were used to alternate between two buffers, the benchmarks would be as follows: Old benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 16.4 ( 0.18x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 23.9 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 16.3 ( 1.47x) New benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 15.1 ( 0.20x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 23.6 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 15.2 ( 1.55x) Notice that at some callsites, the partially modified buffer is immediately reloaded again*, so that both scenarios can happen. *: See the TT_4X4 and TT_4X8 cases at the end of vc1_p_h_loop_filter() or vc1_b_h_intfi_loop_filter() or the luma field blocks in vc1_p_h_intfr_loop_filter(). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
Change #276714
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3db7a55280c7af2a5897c6f9473cc5816ff37631 Comments
avcodec/x86/vc1dsp_loopfilter: Don't use MMX regs Up until now ff_vc1_v_loop_filter4_ssse3 used MMX registers despite being an SSSE3 function. Porting it to XMM registers didn't lead to any change in benchmarks here, but abides by the ABI (one function less that does not omit emms). Unfortunately the size of the function increased by 64B by this. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm
- tests/checkasm/vc1dsp.c
Change #276715
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 01 Aug 2026 16:50:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 406c5a37aa666d648928a142d367483fe1acdd17 Comments
avcodec/x86/vc1dsp_inv_trans: Port to SSE2 No change in performance here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_init.c
- libavcodec/x86/vc1dsp_inv_trans.asm
- tests/checkasm/vc1dsp.c
Change #276721
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 02 Aug 2026 00:44:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1b946a3abd81bd2b50ef6d38003ddb848be7acc7 Comments
avformat/iamf_parse: check that num_sub_mixes and num_audio_elements in Mix Presentations are not zero As required by the spec in Section 3.7 Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/iamf_parse.c
Change #276722
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 02 Aug 2026 00:44:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d2476bfd2b0ab683f24ff92cb2b206549f0a1659 Comments
avformat/iamf_parse: bound the output mix gain duration by the audio elements Based on a patch by Michael Niedermayer Fixes: unbounded allocation Fixes: poc_output_mix_config_dos.iamf Fixes: 387qWpjUgeKH Found-by: Duong Tran Thai (CyStack) Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/iamf_parse.c
Change #276723
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 02 Aug 2026 00:47:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d9da090b1d05cd731610462fd91c5f167e698909 Comments
avformat/dashdec: don't stop at the first input EOF The current logic would stop demuxing the entire manifest once the first Representation returned EOF, which could result in plenty of packets from other Representations being lost. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/dashdec.c
Change #276726
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c9d1fd3c0117db40456f2e2f9492a15f36a7534 Comments
tests/checkasm/huffyuvdsp: Return early if there is no function to test Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/huffyuvdsp.c
Change #276727
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dd8730cfe354b84d60b1d70ac36c5fe23425f9dc Comments
tests/checkasm/huffyuvdsp: Actually test masks Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/huffyuvdsp.c
Change #276728
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b1142ed5be1f48af8b1d8989ab04fb379e24fe59 Comments
tests/checkasm/huffyuvdsp: Actually test width not multiple of 16 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/huffyuvdsp.c
Change #276729
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3928c291b75420cc5fe7e17fb0541f6fceb7314c Comments
avcodec/x86/huffyuvdsp: Remove unaligned add_int16 version Both source and dst are always properly aligned (to stride align) here; also document this fact. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/huffyuvdsp.h
- libavcodec/x86/huffyuvdsp.asm
Change #276730
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0d342f01f03530e37e23372467c8d3b9623a19d0 Comments
avcodec/x86/huffyuvdsp_template: Don't push+pop reg unnecessarily All calling conventions on x64 have enough volatile GPRs. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/huffyuvdsp_template.asm
Change #276731
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d8cb1ef0e52d4b5847796b6c0e2e9a702985daa3 Comments
avcodec/x86/huffyuvdsp: Remove remnants of MMX Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/huffyuvdsp.asm
Change #276732
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:00:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eb40b0b6b7424bb7eee66abfaab8577c5a13cb7b Comments
tests/checkasm/huffyuvdsp: Add test for add_hfyu_median_pred_int16 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/huffyuvdsp.c
Change #276733
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:12:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0127016c41092e53809b6548cc1487ec5a8c87d0 Comments
avcodec/x86/huffyuvdsp: Add SSE4 add_hfyu_median_pred_int16 Heavily based upon the existing mmxext function, but it allows to use p{max,min}uw, so also supports 16bpp pixel formats. It is also faster: add_hfyu_median_pred_int16_c: 14368.1 add_hfyu_median_pred_int16_mmxext: 7384.2 ( 1.94x) add_hfyu_median_pred_int16_sse4: 6474.4 ( 2.21x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/huffyuvdsp.asm
- libavcodec/x86/huffyuvdsp_init.c
Change #276734
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:19:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c8fb970a9220f79f1e659309daba3a264da78253 Comments
avcodec/x86/huffyuvdsp: Remove ff_add_hfyu_median_prediction_mmxext Superseded by SSE4. This makes the huffyuv decoders ABI compliant, e.g. nothing messes up the FPU state at all any more. Therefore the emms_c() can be removed from huffyuvdec.c. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/huffyuvdec.c
- libavcodec/x86/huffyuvdsp.asm
- libavcodec/x86/huffyuvdsp_init.c
- tests/checkasm/huffyuvdsp.c
Change #276735
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 02:19:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a59498db085e3d635532397128550141ab87408a Comments
avcodec/huffyuvdsp: Remove pix_fmt parameter from ff_huffyuvdsp_init() It is unused since the mmx add_hfyu_median_pred_int16 function has been removed. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/aarch64/huffyuvdsp_init_aarch64.c
- libavcodec/huffyuvdec.c
- libavcodec/huffyuvdsp.c
- libavcodec/huffyuvdsp.h
- libavcodec/riscv/huffyuvdsp_init.c
- libavcodec/x86/huffyuvdsp_init.c
- tests/checkasm/huffyuvdsp.c
Change #276736
Category ffmpeg Changed by Guo Yejun <yejun.guo@intel.com> Changed at Sun 02 Aug 2026 06:38:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 133923a209c4581d31d44f55136976f464934155 Comments
avfilter/dnn: assign correct output layout before use
Changed files
- libavfilter/dnn/dnn_backend_tf.c
Change #276737
Category ffmpeg Changed by Guo Yejun <yejun.guo@intel.com> Changed at Sun 02 Aug 2026 09:59:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7e72069f15efbef1e25b25d35c4e0511b43262e Comments
avfilter/dnn: fix race when querying queue length Replace av_usleep polling with a condition variable wait.
Changed files
- libavfilter/dnn/dnn_backend_common.c
- libavfilter/dnn/safe_queue.c
- libavfilter/dnn/safe_queue.h
Change #276755
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 898b8aa9220a6c71c61f649f55dbf7407f180c2a Comments
vulkan_ffv1: survive setup failures on preceding frames A frame's private data is allocated before start_frame(), and its free callback runs even if setup failed partway, so partially-initialized private data has to be tolerated everywhere: inter frames reffed the previous frame's slice state without checking it exists, end_frame() waited on a semaphore that was never created, and the free callback read a feedback buffer that was never allocated or written. Inter frames after a failed frame now error out until the next keyframe. Also set the device function pointers before anything can fail, as the free callback needs them.
Changed files
- libavcodec/vulkan_ffv1.c
Change #276756
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b27f276bdd1ec490c67bc9bfeaa8bef113a9f2f4 Comments
vulkan_ffv1: use the extradata slice structure in the low-slice-count warning slice_count is only set while decoding a frame, so the warning always printed a slice count of 0 at init time, and fired on streams with plenty of slices.
Changed files
- libavcodec/vulkan_ffv1.c
Change #276757
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2b0c0b2c000b2ecac8c211cddbd6aeee3d0293b1 Comments
hwcontext_vulkan: do not enable host transfers on coinciding decode output Decode output which doubles as reference frames (COINCIDE mode) remains an active DPB slot for as long as the decoder keeps referencing it, and decode submissions bake the image layout into their barriers at record time. A host-side layout transition can therefore not be synchronized against them, and host transfers of such frames were found to corrupt image contents on Intel once frame threading varied the submission order. Do not set VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT on such frames. This makes the incompatibility visible through the usage flags, and routes our own transfer path through the queue.
Changed files
- libavutil/hwcontext_vulkan.c
Change #276758
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d42cd604d02c920c8c9bf2a8d8b9962a122044e2 Comments
vulkan_ffv1: always keep the decoder's fltmap descriptor valid The setup shader statically uses the fltmap binding, but the decoder only bound a buffer to it for float formats, leaving a dangling descriptor on everything else, with the write reachable by any bitstream signalling remap. Gate remap on a new push-constant flag, so that streams signalling it without a fltmap buffer error out, and point the descriptor at the slice feedback buffer when no fltmap exists; the gate guarantees it is never written through this binding.
Changed files
- libavcodec/ffv1_vulkan.h
- libavcodec/vulkan/ffv1_common.glsl
- libavcodec/vulkan/ffv1_dec_setup.comp.glsl
- libavcodec/vulkan_ffv1.c
Change #276759
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2dd3328240cc11a32c1acbae365558e3a1b0232e Comments
vulkan: give ff_vk_host_map_buffer an explicit import length The function sized every import from src_data to the end of the source buffer. For packets which are small views of a much larger allocation, this pinned and mapped every page of the underlying allocation, at around 1.6us per page, regardless of what the GPU ever touches. Take the import length as a VkDeviceSize, clamped to the end of the source buffer; the clamp doubles as the implementation of VK_WHOLE_SIZE.
Changed files
- 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
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #276760
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ac16cfb86e3cdba0c05778ab09309b7d900a136c Comments
hwcontext_vulkan: only originate host image layout transitions from copyable layouts Host image layout transitions may only originate from a layout in pCopySrcLayouts, or from UNDEFINED, discarding the contents. The host transfer path transitioned from whatever layout the frame was last left in, which for pool-recycled frames can be a video layout, which no driver lists as host-copyable. Uploads overwrite the entire image, so transition from UNDEFINED there. Downloads have to preserve the contents, so route frames in a non-host-copyable layout through the GPU path.
Changed files
- libavutil/hwcontext_vulkan.c
Change #276761
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sun 02 Aug 2026 15:11:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0da8f2f4eea877d234cbc88fa394ddfa028ffa94 Comments
vulkan_encode_av1: set primary_ref_frame to a reference name, not a slot primary_ref_frame is an index into the seven reference names, but the code assigned it the reference's DPB slot. The two coincide only while the reference sits in slot 0; once it rotates to slot 1, referenceNameSlotIndices[primary_ref_frame] is -1, which is invalid, and NVIDIA drivers lose the device. Inherited from vaapi_encode_av1, where the same confusion is harmless as the raw frame header maps every reference name to the same slot. Have set_name_slot() return the name it picked and use that. Fixes #20540.
Changed files
- libavcodec/vulkan_encode_av1.c
Change #276766
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 02 Aug 2026 18:05:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ae0e0ba3c3df840191e7a4c9b76494372ec53202 Comments
avformat/mov: reject a trun sample count the input cannot hold Fixes: OOM Fixes: 525088811/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5229499332231168 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Changed files
- libavformat/mov.c
Change #276767
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 02 Aug 2026 18:06:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a290dec0bfe45f68880dcbf7cddea3a4939d00b2 Comments
avcodec/utils: factor the timecode fields out of ff_alloc_timecode_sei
Changed files
- libavcodec/utils.c
Change #276768
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 02 Aug 2026 18:06:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5589dfd9bc0153f9c29832f39bfe1989ebf5f5aa Comments
avcodec/utils: add ff_alloc_timecode_metadata_av1()
Changed files
- libavcodec/internal.h
- libavcodec/utils.c
Change #276769
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sun 02 Aug 2026 18:06:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision afd059c340feb7379d33f8102b7dd7d01288fba1 Comments
avcodec/nvenc: write AV1 timecode metadata in AV1 syntax Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/20610 Tested on 5090 by claude
Changed files
- libavcodec/nvenc.c
Change #276770
Category ffmpeg Changed by 张永鹏 <roc63@outlook.com> Changed at Sun 02 Aug 2026 18:33:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d09b0c5e1707dc21ecb7df8195d9f896d5c13606 Comments
fftools/ffmpeg_opt: return an error when refusing overwrite Return EEXIST when output overwrite is refused so ffmpeg exits with a non-zero status for -n and interactive no responses. Signed-off-by: 张永鹏 <roc63@outlook.com>
Changed files
- fftools/ffmpeg_opt.c
- tests/fate/ffmpeg.mak
Change #276772
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 18:36:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b4d11f4046335a1e992d75e4ef9890844f7cf742 Comments
avcodec/x86/lossless_videodsp: Optimize add_gradient_pred Combinations of shift and add like pslldq m3, m2, 1 paddb m2, m3 are linear in the input register m2. This implies that instead of applying the same sequence of shifts and adds to two different registers and adding said registers one can just add the register first and then apply said sequence of shifts and adds once. Old benchmarks: add_gradient_pred_c: 2296.2 add_gradient_pred_ssse3: 570.4 ( 3.95x) add_gradient_pred_avx2: 308.8 ( 7.29x) New benchmarks: add_gradient_pred_c: 2315.6 add_gradient_pred_ssse3: 344.0 ( 6.72x) add_gradient_pred_avx2: 205.2 (11.28x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/lossless_videodsp.asm
Change #276773
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 18:36:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6c123e217ba990732be960c99e0571528e6201c6 Comments
avcodec/x86/lossless_videodsp: Hoist calculation out of loop Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/lossless_videodsp.asm
Change #276774
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 02 Aug 2026 18:36:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f0fc529cbe5c918553dd210999b140efd6632a46 Comments
avcodec/x86/lossless_videodsp: Use memory operand where possible Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/lossless_videodsp.asm
Change #276775
Category ffmpeg Changed by ninbura <gabriel@ninbura.com> Changed at Sun 02 Aug 2026 19:10:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c2802e520a08dbf0c939ec8b5653b29dfd886427 Comments
avdevice/avfoundation: add device selection by USB serial and unique ID A capture device could previously be selected only by index or by name. Both are unreliable when multiple audio/video devices share a name or across reboots. AVFoundation reorders the device indices, and the USB video uniqueID embeds the macOS locationID, which can be reassigned on reboot or replug and can then resolve to a different physical device. Add -video_device_id and -audio_device_id, which take a prefixed identifier: uid:<unique ID> or serial:<USB serial number>. The USB serial number is the only identifier that stays pegged to a given physical unit. For video it is resolved to the device's current locationID via IOKit. For audio it is matched against the uniqueID, which already embeds it. The unique ID covers devices that have no serial, such as virtual camera/audio devices. -list_devices additionally prints each device's uniqueID and USB serial so the values can be discovered. IOKit is detected in configure and used only when available. Signed-off-by: Gabriel Balaich <ffmpeg@ninbura.com>
Changed files
- Changelog
- configure
- doc/indevs.texi
- libavdevice/avfoundation.m
Change #276786
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Mon 03 Aug 2026 03:54:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 146e0f7b792033848e549c58ff928645fdeb5991 Comments
avformat/mp3enc: fix underflow of the LAME encoder delay AV_RL32() is unsigned, so a skip_samples value below 528 + 1 wraps around instead of clamping to zero and is written out as a delay of 4095 samples.
Changed files
- libavformat/mp3enc.c
Change #276787
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 03 Aug 2026 03:57:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 64fe3bee7f169ab034f084e5b1d66859bf2ddbbf Comments
vulkan: enable VK_KHR_shader_maximal_reconvergence when available
Changed files
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan_functions.h
- libavutil/vulkan_loader.h
Change #276788
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 03 Aug 2026 03:57:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e54f60ed1b9565d0a864595d7ae50d04f53e3536 Comments
vulkan: declare maximal reconvergence in shaders doing subgroup reductions These shaders reduce across the subgroup after divergent control flow and implicitly rely on invocations reconverging as written, the MaximallyReconvergesKHR execution mode turns that assumption into a guarantee.
Changed files
- libavcodec/vulkan/apv_encode_tiles.comp.glsl
- libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl
- libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl
- libavcodec/vulkan/prores_ks_trellis_node.comp.glsl
Change #276789
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 03 Aug 2026 06:18:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 25663e69246ae373efb2358fdf509858045e69c8 Comments
vulkan: only reset execution fences at submission time The fence was reset when a context began recording, so an error between recording start and submission (observed in the wild as intermittent VK_ERROR_MEMORY_MAP_FAILED from vkEndCommandBuffer on ANV under threaded load) left it permanently unsignalled, deadlocking the next user of the context. Reset the fence only once a fully recorded submission is about to be handed to the queue: abandoned recordings then leave the fence signalled from the previous submission, and the context self-heals on reuse. Should the queue submission itself fail, signal the fence with an empty submission.
Changed files
- libavutil/vulkan.c
Change #276798
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 934742548a3c3f34ceaef2116dda2810bacdf625 Comments
tests/checkasm/huffyuvencdsp: Avoid using static variable This has been done in order to use the same width for benchmarks of different instruction sets to make the benchmarks comparable. Yet it has a downside: Only one width would ever be executed when using --repeat. Luckily libcheckasm makes it easy to fix this: At the start of every test function, the internal state of rnd() is reset, so that it produces the same sequence of random values. So just removing the static variable works. This would also make this test trivially parallelizable. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/huffyuvencdsp.c
Change #276799
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8984d7c239095f5fdaf2c55665386fdb0aa42183 Comments
tests/checkasm/sbcdsp: Avoid using static variable This has been done in order to use the same number of blocks for benchmarks of different instruction sets to make the benchmarks comparable. Yet it has a downside: Only one number would ever be executed when using --repeat. Luckily libcheckasm makes it easy to fix this: At the start of every test function, the internal state of rnd() is reset, so that it produces the same sequence of random values. So just removing the static variable works. This would also makes this test trivially parallelizable. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/sbcdsp.c
Change #276800
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 78193e6490b92b9749183beb0defd6c355f452aa Comments
tests/checkasm/llviddsp: Fix crash with AVX2 llviddsp functions typically operate on whole lines, i.e. the pointers are aligned to STRIDE_ALIGN. They can therefore avoid tail handling by just clobbering the padding (if any). The test gets a random width via 16 * av_clip(rnd(), 16, 128); in practice, it is very unlikely for rnd() to return a value between 16 and 128, so width is typically 16*16 or 16*128. Buffers of this size are allocated later. When rnd() returns an odd number in the allowed range (this happens for the seed 4161216273), the buffers used in the test don't contain the padding that exists in actual usage, leading to invalid stores and also to segmentation faults (usage of aligned load instructions on unaligned addresses). Fix this by adding the necessary alignment to the buffers. Also don't use a static variable to store width (it is unnecessary, because since the switch to libcheckasm, rnd() always returns the same sequence of random numbers for test runs with different instruction sets) and use a really random width, not something that is mostly just one of two values and always mod 16. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/llviddsp.c
Change #276801
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4a51f189ea288b2f0692a357fb2ee8fdeb935625 Comments
tests/checkasm/hpeldsp: Avoid using static variables This has been done in order to use the same height for each function for benchmarks of different instruction sets to make the benchmarks comparable. Yet it has a downside: Only one number would ever be executed when using --repeat, hiding potential bugs. Luckily libcheckasm makes it easy to fix this: At the start of every test function, the internal state of rnd() is reset, so that it produces the same sequence of random values. So just initialize the heights every time (and before actually testing any function). This also would make this test trivially parallelizable with --repeat. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/hpeldsp.c
Change #276802
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4acf9f27062abbffb8eefd522df0d57355b29167 Comments
tests/checkasm/mpegvideo_unquantize: Avoid using static variables This has been done in order to use the same parameters that influence the number of elements to be processed sets to make benchmarks between different instruction sets comparable. Yet it has a downside: Only one parameter combination would ever be executed when using --repeat, hiding potential bugs. Luckily libcheckasm makes it easy to fix this: At the start of every test function, the internal state of rnd() is reset, so that it produces the same sequence of random values. So just initialize these parameters every time (and before actually testing any function). This also would make this test trivially parallelizable with --repeat. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/mpegvideo_unquantize.c
Change #276803
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 03 Aug 2026 09:20:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a6ed5e29c1b3e29271a3c73fe778a04ddcb5576 Comments
tests/checkasm/checkasm: Remove inappropriate headers Since the switch to libcheckasm, checkasm no longer uses FFmpeg's emms_c, timers, AVLFG or string handling functions, so remove these headers. This necessitated adding some missing headers (mostly string.h) to some files. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/aacpsdsp.c
- tests/checkasm/aes.c
- tests/checkasm/af_afir.c
- tests/checkasm/apv_dsp.c
- tests/checkasm/cavsdsp.c
- tests/checkasm/checkasm.h
- tests/checkasm/crc.c
- tests/checkasm/diracdsp.c
- tests/checkasm/float_dsp.c
- tests/checkasm/lls.c
- tests/checkasm/mpeg4videodsp.c
- tests/checkasm/opusdsp.c
- tests/checkasm/png.c
- tests/checkasm/qpeldsp.c
- tests/checkasm/sbcdsp.c
- tests/checkasm/sbrdsp.c
- tests/checkasm/vf_nlmeans.c
- tests/checkasm/vf_pp7.c
- tests/checkasm/vorbisdsp.c
Change #276812
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 08c90c60f7562301858f1bdf06e6bc8abd3ec878 Comments
swscale/ops: fix merge_comp_flags() for SWS_COMP_SWAPPED This violates the documentation (monoid property). It's a bit arbitrary whether to consider this an OR-type or AND-type flag, since mixing swapped and non-swapped components is almost surely a bug, but keeping it as an OR-type makes sure such cases at least show up in the result. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops.c
Change #276813
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fc94457bb722159c1a8338b7f8454228210f9646 Comments
swscale/ops: refactor comp flags propagation slightly Introduce a unified FORWARD() helper macro that can be used for any type of op, whether it is independent per component or more complex. By initializing every op to the same IDENTITY state, we can leverage the monoid property to make this work for naive propagations as well. As an aside, we also properly zero out the unrelated fields when discarding a component (i.e. marking it as GARBAGE). This will make a couple of up-coming refactors a bit easier. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops.c
Change #276814
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6321b5380939a4e676854d67fe41085d5f0c4ad8 Comments
swscale/ops: solve for component dependencies Needed to determine reverse dependencies of different input planes, for appropriately splitting op lists involving subsampled planes. Generates benign diffs that just reflect the new addition, e.g.: yuva444p 16x16 -> rgb24 16x16: [ u8 ===X] SWS_OP_READ : 3 elem(s) planar >> 0 min: {0 0 0 _}, max: {255 255 255 _} + inputs: {x y z _}, outputs: {xyz yz xy _} [ u8 ===X] SWS_OP_CONVERT : u8 -> f32 min: {0 0 0 _}, max: {255 255 255 _} + inputs: {x y z _}, outputs: {xyz yz xy _} [f32 ...X] SWS_OP_LINEAR : matrix3+off3 [[85/73 0 1.596027 0 -222.921566] [85/73 -0.391762 -0.812968 0 135.575295] [85/73 2.017232 0 0 -276.835851] [0 0 0 1 0]] min: {-222.921566 -171.630839 -276.835851 _}, max: {480.983073 432.493103 534.476153 _} + inputs: {xz xyz xy _}, outputs: {x y z _} [f32 ...X] SWS_OP_DITHER : 16x16 matrix + {0 3 2 -1} min: {-222.919612 -171.628886 -276.833898 _}, max: {481.981120 433.491150 535.474200 _} + inputs: {xz xyz xy _}, outputs: {x y z _} [f32 ...X] SWS_OP_MAX : {0 0 0 _} <= x min: {0 0 0 _}, max: {481.981120 433.491150 535.474200 _} + inputs: {xz xyz xy _}, outputs: {x y z _} [f32 ...X] SWS_OP_MIN : x <= {255 255 255 _} min: {0 0 0 _}, max: {255 255 255 _} + inputs: {xz xyz xy _}, outputs: {x y z _} [f32 +++X] SWS_OP_CONVERT : f32 -> u8 min: {0 0 0 _}, max: {255 255 255 _} + inputs: {xz xyz xy _}, outputs: {x y z _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 ('X' unused, 'z' byteswapped, '=' copied, '$' const, '+' integer, '0' zero) Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>Changed files
- libswscale/ops.c
- libswscale/ops.h
- tests/ref/fate/sws-ops-list
Change #276815
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 327319bb7b34d91a50b479f30055770f7ea603dd Comments
swscale/ops: remove SwsLinearOp.mask This was originally introduced to make matching linear ops against implementations faster. However, since this is now handled on the uops level, there is no more reason to carry this metadata on the ops level. Simplifies a lot of places in the code. It will simplify even more, once the linear optimizations are moved to the uops level. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/aarch64/ops_impl_conv.c
- libswscale/format.c
- libswscale/ops.h
- libswscale/ops_optimizer.c
- libswscale/uops.c
Change #276816
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0ff884dabec72f9e8bb548739e2a75ab03d1487b Comments
swscale/csputils: remove unused struct Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/csputils.h
Change #276817
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d0bf8cff9fd86d43d6eecfa1dba00ae454cf09c9 Comments
swscale/aarch64: reject unknown ops by default Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/aarch64/ops_impl_conv.c
Change #276818
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ea8fb1b71eba487d0d5b5fc394d3760aa7fd7620 Comments
swscale/lut3d: alignment (cosmetic) Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/lut3d.c
Change #276819
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 69f0fa91d47c47c13c5182fc294f650aebacdf98 Comments
swscale/lut3d: pad 3DLUT to eliminate over-read Instead of clamping in the application function. Trivial simplicity gain for the SIMD code. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/lut3d.c
- libswscale/lut3d.h
Change #276820
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6a56bd03620f7a6cdc934a34f17568e95f25fe19 Comments
swscale/lut3d: use refstruct for 3D LUT allocations Needed anyways for the upcoming SWS_OP_LUT_3D. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
- libswscale/lut3d.c
- libswscale/lut3d.h
Change #276821
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e43517c1d1b1e48399fec7f5a5d2c7158cff40ff Comments
swscale/lut3d: simplify and hard-code 3DLUT format The ops-based 3DLUT approach will take care of appropriately normalizing the input to the expected domain; so the format choice no longer matters here except for the lut3d_apply() function, which will only be used by the legacy reference code path. So we can just continue hard-coding the format there. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
- libswscale/lut3d.c
- libswscale/lut3d.h
Change #276822
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 96e0967ecac6cd7aaf4e25c5af72de82b9814c8a Comments
swscale/cms: fix IPT rounding error av_round16f() was incorrectly scaling to 65534, which would correspond to a neutral PT offset of 32767 = (1 << 15) - 1, but the code was assuming a value of (1 << 15). To fix it, and make the PT channel correctly symmetric around the intended neutral value, we have to map PT = +0.5 to 65536, an unrepresentable value. This is not an issue because the PT channel values are strictly inside some subset of [-0.5, 0.5] in practice, for real in-gamut color values - it's already an envelope that includes quite a bit of safety margin. Similarly, av_round16f() is also the wrong tool for the I/RGB channels, because it incorrectly scaled those to 65534, an off by one of the intended unorm16 full range peak of 65535. This silently resulted in e.g. RGBA64 true white (65535) not round-tripping through the 3DLUT. Fix both by splitting this helper into two separate helpers, each of them fixed to the correct, intended value range. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/cms.c
Change #276823
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6c770f33c8e94ea18000cd81da4f1e0ad0bac7a7 Comments
swscale/ops: add SWS_OP_LUT_3D and supporting code After extensive testing, prototyping and benchmarking across a range of systems, I determined that the optimal data layout for the SIMD 3DLUT is essentially exactly the one we have. 16-bit integers are near optimal for quality vs compactness, and crucially, x86 lets us load the entire packed 3DLUT entry with a single `vpgatherdq` instruction. This dwarfs the loss from needing to cast the resulting 16-bit integers back to f32 and renormalize. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops.c
- libswscale/ops.h
- libswscale/ops_optimizer.c
Change #276824
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4bdb4d564f677d2f7f7f03b3b9a902a06cd916ee Comments
swscale/uops: add SWS_UOP_LUT_3D reference implementation The structure for the tetrahedral interpolation deviates slightly from the naive formulation in lut3d.c; instead of branching into every separate case, we sort the weights and offsets using a series of conditional swaps. This actually performs identically on my end, but results in code that is much closer to what SIMD will be doing. That should hopefully serve as a better reference for future SIMD implementors. (Myself included) I also reordered the dynamic tone-mapping code a bit to better indicate the sources of live register pressure that will manifest in the real SIMD kernel. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/csputils.h
- libswscale/uops.c
- libswscale/uops.h
- libswscale/uops_backend.c
- libswscale/uops_list.h
- libswscale/uops_macros.h
- libswscale/uops_tmpl.c
Change #276825
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d803957307d3b6ffda8d998d2282f11531477595 Comments
swscale/graph: lift SwsLut3D to SwsGraph top level Since this depends on the overall picture parameters anyways, updating it directly from the private setup() function was always a bit hacky. More importantly, this needed for the ops-based 3DLUT implementation, which is already using the pass priv pointer to store the compiled function. Overall, simpler to just lift it to the top level and update it directly as needed. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
- libswscale/graph.h
Change #276826
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 38196645f5e20b50a5143db6f0d14814fed77116 Comments
swscale/graph: move 3DLUT application to the conversion pass Instead of generating the 3DLUT and applying it right away, init_passes() now just generates it and passes it as a parameter to add_convert_pass(), which will forward it to the underlying implementation. I pre-emptively moved the function to the legacy section, in anticipation of the following commit which will make this legacy-only. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
Change #276827
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 05d8891a20de059f901fbb106f45b7699f81bba0 Comments
swscale/format: add SwsLut3D support to the ops list generator The value range normalization and input range clamp will normally be optimized away. This commit also moves the legacy 3dlut pass to be legacy-exclusive, as the ops code now uses the new logic. This ordering ensures that the conversion works on every commit in isolation. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/format.c
- libswscale/format.h
- libswscale/graph.c
- libswscale/op_list_gen_template.c
Change #276828
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3df239e113e5c5d23acbedc5cde4a5d70c5ad620 Comments
swscale/uops_macros: also generate op lists involving 3DLUTs These may differ from the regular op lists in nontrivial ways, due to e.g. different optimization steps being taken. In practice, it seems this just adds the extra LUT_3D uops, but we don't know that for sure, so better to brute force the list. That said, I do think we can safely skip the extra backend flags in this case, at least. Even in the worst case scenario, that would just force a fallback to the C reference backend. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/op_list_gen_template.c
- libswscale/tests/sws_ops.c
- libswscale/tests/sws_ops_aarch64.c
- libswscale/uops_macros.h
- libswscale/uops_macros_gen.c
Change #276829
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 03 Aug 2026 11:32:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 01a25f74cc446a683318bab13dfd98a467082ef7 Comments
checkasm/sw_ops: add SWS_UOP_LUT_3D test checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (448667793 cycles) - Random seed: 3773883393 Benchmark results: name cycles (vs ref) f32_lut_3d_xyz_dynamic_c: 125193.9 f32_lut_3d_xyz_static_c: 25792.1 f32_lut_3d_xyzw_dynamic_c: 123807.1 f32_lut_3d_xyzw_static_c: 25739.0 This is roughly ~50% faster than the existing code in lut3d.c, from a quick test. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- tests/checkasm/sw_ops.c
Change #276848
Category ffmpeg Changed by Scott Kidder <scott@kidder.io> Changed at Mon 03 Aug 2026 13:08:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 883e8a6336b2651f7be79a6a9aa5f3cc22937948 Comments
avcodec/libopenh264dec: implement flush callback Cisco's ISVCDecoder retains DPB and reference state across avcodec_flush_buffers(), causing the next IDR to be accepted but subsequent P-frames to fail decode after a seek or loop. Cisco's API does not expose a non-destructive reset; tear down and rebuild the decoder via the existing close/init callbacks. The .flush callback is void and cannot report a re-init failure, so svc_decode_frame() guards against a NULL decoder left behind by a failed re-init. svc_decode_init() now also tears the decoder back down on an Initialize() failure so that path leaves the same clean NULL state the guard expects and does not leak the ISVCDecoder. Signed-off-by: Scott Kidder <scott@kidder.io>
Changed files
- libavcodec/libopenh264dec.c
Change #276882
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 03 Aug 2026 13:51:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d3ad8a7fee6a647c6362e4a105d949282d50a98f Comments
avformat/rawutils: reject raw RGB frames that do not fit an AVPacket Fixes: integer overflow Fixes: out of array access Fixes: payload.film Fixes: czK1F83k3zvT Found-by: Clouditera Security, Z.ai Security, NSFOCUS
Changed files
- libavformat/rawutils.c
Change #276923
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 03 Aug 2026 20:16:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9862dd83b1645b0c6e39b318aefb896138ffb08e Comments
avcodec/aarch64/vc1dsp_neon: reduce literal pool alignment to 16 bytes armasm64 warns "A4228: Alignment value exceeds AREA alignment; alignment not guaranteed" on the .Lcoeffs literal pool. gas-preprocessor.pl emits the text section as "AREA |.text|, CODE, READONLY, ALIGN=4", i.e. a 16-byte section alignment, so a 32-byte ALIGN inside it cannot be guaranteed by the assembler. 16 is enough here: the pool holds .quad values that are read with "ldr d0, .Lcoeffs" literal loads, which only require 8-byte alignment. It also matches the rest of the aarch64 asm, where the function and const macros both default to .align 4. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/aarch64/vc1dsp_neon.S
Change #277006
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1d14f9f8c3e4efb32000cb463ebb635ad6f2adb0 Comments
vulkan: decouple execution pool depths from queue and thread counts Pool depth sets how far the CPU records ahead of the GPU, and has no relation to the number of queues in a family. Scaling it by the queue count only multiplied command pools, fences and context state. Use a small fixed depth everywhere, and one context per thread only for threadsafe hwaccels, which submit from every frame thread concurrently.
Changed files
- libavcodec/vulkan_decode.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_overlay_vulkan.c
- libavfilter/vf_scale_vulkan.c
- libavfilter/vf_scdet_vulkan.c
- libavfilter/vf_transpose_vulkan.c
- libavfilter/vf_xfade_vulkan.c
- libavfilter/vsrc_testsrc_vulkan.c
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.h
Change #277007
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b6ac28aff6ca8efdf0be3a8a159ae37b7234e408 Comments
vulkan: use fixed-size dependency arrays in FFVkExecContext Execution contexts track at most a few dozen dependencies so dynamically growing the arrays was just stupid, and ARR_REALLOC required the field name to also exist as a local variable.
Changed files
- libavcodec/vulkan_ffv1.c
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277008
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c5dddc2bbfa6c870092b80cededc1dd714d8e60 Comments
vulkan: release dependencies of completed execution contexts eagerly Dependencies were only released when a context was about to be reused, so all buffers and deps got held up and piled up in the queue. Release them as soon as they're done instead. Cuts RAM usage down by a ton.
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277009
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 24170896fa14845e2549ef5db47a4cddf660609b Comments
vulkan: allow tracking AVRefStruct objects as execution dependencies RefStructs > BufferRefs. We're converting everything.
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277010
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d4bc34a070c00069e3da81a86fbf22aedb680825 Comments
vulkan: track semaphores/views directly as deps There's no need for them to live in bufferrefs.
Changed files
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277011
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 318e2e3943cef34a353b17985495719f28ce0bb1 Comments
vulkan: manage buffer pools and host mappings with AVRefStruct This converts all buffers/buffer pools into refstructs/refstruct pools, saving allocs and making them easier to work with.
Changed files
- libavcodec/apv_encode_vulkan.c
- libavcodec/ffv1enc_vulkan.c
- libavcodec/proresenc_kostya_vulkan.c
- libavcodec/vulkan_apv.c
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_decode.h
- libavcodec/vulkan_dpx.c
- libavcodec/vulkan_encode.c
- libavcodec/vulkan_encode.h
- libavcodec/vulkan_ffv1.c
- libavcodec/vulkan_prores.c
- libavcodec/vulkan_prores_raw.c
- libavfilter/vf_blackdetect_vulkan.c
- libavfilter/vf_nlmeans_vulkan.c
- libavfilter/vf_scdet_vulkan.c
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277012
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4e141536767ef57f0aaf1f5f33bfed3001d68d7d Comments
vulkan: manage image views with AVRefStruct The biggest gain is no longer needing to spin on the CPU on a semaphore waiting for the image to become freeable. This was awful.
Changed files
- libavcodec/vulkan_av1.c
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_decode.h
- libavcodec/vulkan_ffv1.c
- libavcodec/vulkan_h264.c
- libavcodec/vulkan_hevc.c
- libavcodec/vulkan_vp9.c
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277013
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 56d60b54196bd0b9e3d187385822acf4f9d3dbc9 Comments
proresenc_kostya_vulkan: gather slices on the GPU Same as with APV, and FFv1. 1080p on RADV goes from 34 to 48 fps, 4K goes from 20 to 31 fps.
Changed files
- libavcodec/proresenc_kostya_vulkan.c
- libavcodec/vulkan/prores_ks_encode_slice.comp.glsl
Change #277014
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 73cc45ef0d5b3357d61e19d36624271d0fa3d81e Comments
vulkan_decode: manage session parameters with AVRefStruct Ditto.
Changed files
- libavcodec/vulkan_av1.c
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_decode.h
- libavcodec/vulkan_h264.c
- libavcodec/vulkan_hevc.c
Change #277015
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9548d68e5b54dfa46620d441da4ff44b3b64f2bf Comments
vulkan: remove ff_vk_exec_add_dep_buf
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #277016
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eed19eefdaa605d02ff0795c9e7e82ca46636f99 Comments
vulkan: use only coherency to flush mapped memory when needed Host map'd bufs skipped flushes unconditionally, always forcing the coherent flag regardless of the memory type actually chosen for the import. All known implementations import host memory as coherent, in which case nothing changes.
Changed files
- libavutil/vulkan.c
Change #277017
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 709a72c374dc812c4e363fc68e57cfa28d1158c8 Comments
vulkan_decode: prefer device-local memory for the bitstream buffer Fixes #23865
Changed files
- libavcodec/vulkan_decode.c
Change #277018
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9287eb62b56b2d1e935bcf99912d70e394ec33fb Comments
vulkan_ffv1: fall back to host memory for the fltmap buffer A megabyte per slice, systems without resizable BAR can run out of mappable device memory to place it in.
Changed files
- libavcodec/vulkan_ffv1.c
Change #277019
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Wed 05 Aug 2026 09:04:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d295add2225e1ad9ba9d55cb612cce50072dc45d Comments
vulkan: fix typo when printing the SPIR-V/binary size
Changed files
- libavutil/vulkan.c
Change #277058
Category ffmpeg Changed by Steve Lhomme <robux4@ycbcr.xyz> Changed at Wed 05 Aug 2026 13:06:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 87f17b68a831b3ebe5f10278fc7acd3bebe83ecc Comments
swscale/x86: use HOSTCPPFLAGS instead of CPPFLAGS for native code Similar to 976e18fdef8bcd0602b6b94bb157a82a3eb9a1a6.
Changed files
- libswscale/x86/Makefile
Change #277070
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Wed 05 Aug 2026 13:49:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f1dbe5252b31f07954d1de42b513bb9f7b3b3970 Comments
avcodec/aarch64: rewrite lfe_fir1 to remove faddp reduction The original implementation was a regression on Cortex-X925 (0.88x). X925 clang X925 gcc A725 clang A725 gcc A510 clang c: 891 1638 792 1475 8084 neon_original: 1015 (0.88x) 1016 (1.61x) 747 (1.06x) 747 (1.97x) 6126 (1.31x) neon_new: 696 (1.28x) 696 (2.35x) 623 (1.27x) 623 (2.37x) 3697 (2.18x) Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>Changed files
- libavcodec/aarch64/dcadsp_neon.S
Change #277086
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 05 Aug 2026 15:06:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8f80421b2da8f2f29bff7de089c3f06eeae32c9c Comments
swscale/aarch64/ops_static: fix av_assert0 on NDEBUG builds av_assert0 suppose to run always. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libswscale/aarch64/ops_static.c
Change #277117
Category ffmpeg Changed by Guo Yejun <yejun.guo@intel.com> Changed at Wed 05 Aug 2026 15:11:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e13b2e00e89dc8cdbb05cca7c22ebbbf8d9fd171 Comments
avfilter/dnn: fix object detection of openvino backend update ctx->ov_option.layout to the explict value which will be used in function init_model_ov. also move the code before input_resizable which uses the layout
Changed files
- libavfilter/dnn/dnn_backend_openvino.c
Change #277138
Category ffmpeg Changed by iSold Leo <s@qwqlog.com> Changed at Wed 05 Aug 2026 21:34:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ec2a4105e2a5db5941e93326ee89897774a95462 Comments
swscale: avoid overflow in fast bilinear edge handling The final edge clamp computes the source position using int multiplication before shifting. With sufficiently wide inputs this overflows, which may suppress the clamp and leave the last output pixels interpolated with the padding byte. Promote the multiplication to int64_t in the C, MMXEXT and VSX implementations. Add a regression test covering the rightmost pixel of a wide upscale, which is wrong before this change on both the C and the MMXEXT path. Fixes: signed integer overflow: 15 * 255918080 cannot be represented in type 'int' Fixes: #21591 Signed-off-by: iSold Leo <s@qwqlog.com>
Changed files
- libswscale/hscale_fast_bilinear.c
- libswscale/ppc/swscale_vsx.c
- libswscale/x86/hscale_fast_bilinear_simd.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-scale-fast-bilinear-wide-edge
Change #277139
Category ffmpeg Changed by iSold Leo <s@qwqlog.com> Changed at Wed 05 Aug 2026 21:37:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f02c4372ed28b40502a5d377a8a8d3492cafce58 Comments
avfilter/af_pan: check the id of named input channels before use parse_channel_name() only rejects negative values on the named channel path, while the numbered "c%d" path also checks against MAX_CHANNELS. av_channel_from_string() accepts UNSD (512), UNK (768) and AMBI (1024), and the id was then used directly to index used_in_ch[MAX_CHANNELS] on the stack and pan->gain[out_ch_id][in_ch_id]. Before this change: ffmpeg -f lavfi -i "anullsrc=cl=stereo" -af "pan=stereo|FL=AMBI" -f null - af_pan.c:214:17: runtime error: index 1024 out of bounds for type 'int[64]' The first out of bounds access is the read at the "reference twice" check, so the symptom depends on what happens to be on the stack: FL=UNK is silently accepted and produces silence, FL=UNSD reports "Can not reference in channel 512 twice", and FL=AMBI aborts. The check has to be at the caller and not in parse_channel_name(), which is shared with the out channel path: there the named id is converted by av_channel_layout_index_from_channel() into a layout index, so high ids are legitimately supported and "pan=AMBI|AMBI=FL" works. AVERROR_PATCHWELCOME is used because these are valid AVChannel values that af_pan cannot represent: for named input channels the gain matrix is indexed by the raw id, and the renumbering loop in config_props() is bounded by MAX_CHANNELS as well, so such a mapping never worked. The in_ch_id < 0 half is currently unreachable and only kept for symmetry with the out channel check above. Regression since 1f96db959c1235bb7079d354e09914a0a2608f62, which dropped the "channel_id >= MAX_CHANNELS" part of the check when converting to the new channel layout API. Reported-by: karnakarreddi Fixes: #22963 Signed-off-by: iSold Leo <s@qwqlog.com>
Changed files
- libavfilter/af_pan.c
Change #277140
Category ffmpeg Changed by iSold Leo <s@qwqlog.com> Changed at Wed 05 Aug 2026 21:37:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f9ed016d429597810bd3173e131531179e711f1f Comments
fate/filter-audio: add test for pan named input channel id rejection "pan=stereo|FL=UNK" resolves to AVChannel id 768, which was used as an index into a 64 element array before the previous commit. UNK is used because it was the only one of the three reachable high ids that exited with 0 before the fix; AMBI (1024) aborted and UNSD (512) failed with an unrelated message, so a test that only checked for a non-zero exit status would have passed before the fix as well. For the same reason the test greps the error message on stderr instead of only looking at the exit status: a crash also exits non-zero. Signed-off-by: iSold Leo <s@qwqlog.com>
Changed files
- tests/fate/filter-audio.mak
Change #277160
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Thu 06 Aug 2026 00:28:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 85c857a7c3b7ce9d0da041edbb85559e3a8cbd0e Comments
compat/w32pthreads: add pthread_mutex_trylock
Changed files
- compat/w32pthreads.h
Change #277167
Category ffmpeg Changed by Ayoub Nabil <237098474+ayoubnabil@users.noreply.github.com> Changed at Thu 06 Aug 2026 02:30:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fc02470c62a71a8fa431f3e424bc8049fec8d90a Comments
avfilter/f_ebur128: fix top-back channel weighting ITU-R BS.1770 assigns a weight of 1.0 to height channels, but the filter included the top-back channels in the 1.41 surround mask. remove the top-back channels from that mask and add a FATE test for the resulting loudness measurement. fixes #23968. Signed-off-by: Ayoub Nabil <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/f_ebur128.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-metadata-ebur128-height
Change #277235
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 11:26:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 95c43d7df7b72e3a4e8dce8c6718cffedb32211d Comments
avcodec/fmtconvert: Remove int32_to_float_fmul_array8 Unused since aebf07075f4244caf591a3af71e5872fe314e87b. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/aarch64/fmtconvert_init.c
- libavcodec/aarch64/fmtconvert_neon.S
- libavcodec/arm/fmtconvert_init_arm.c
- libavcodec/arm/fmtconvert_neon.S
- libavcodec/arm/fmtconvert_vfp.S
- libavcodec/fmtconvert.c
- libavcodec/fmtconvert.h
- libavcodec/riscv/fmtconvert_init.c
- libavcodec/riscv/fmtconvert_rvv.S
- libavcodec/x86/fmtconvert.asm
- libavcodec/x86/fmtconvert_init.c
- tests/checkasm/fmtconvert.c
Change #277297
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 06 Aug 2026 15:52:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a72b9465cda477b34e35d6d1eda670603a0a9f5b Comments
configure: make _WIN32_WINNT == 0x0601 the minimum supported version Every hardware accel implementation and now Vulkan require API present stating with Windows 7, so it's about time we stop pretending to support Vista. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- configure
Change #277309
Category ffmpeg Changed by Nicolas Gaullier <nicolas.gaullier@cji.paris> Changed at Thu 06 Aug 2026 17:19:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 73aa056f4934d825af9ef86ffa4c6cca4e9ccd10 Comments
avcodec/dolby_e: Add error recovery when parse_mantissas run out of bits Mantissas are the last data in the channel subsegment and it appears it is sometimes missing a very few bits for the parsing to complete. This must not be confused with data corruption. In standard conditions with certified products, it has been observed that the occurence of this issue is pretty steady and about once every 2 hours. The truncation is at about 950 out of the 1024 values (923 is the minimum I have seen so far). The current code raises a severe 'Read past end' error and all data is lost resulting in 20ms(@25fps) of silence for the affected channel. This patch introduces a tolerance: if 800 out of the 1024 mantissas have been parsed, a simple warning is raised and the data is preserved. Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Changed files
- libavcodec/dolby_e.c
Change #277315
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:58:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 91188e6ae0fe6d3ea41f45878232476b20238674 Comments
avfilter/x86/vf_pullup: Avoid addition Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_pullup.asm
Change #277316
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fb15c5dd4f010396f740c13bc9cadb6fbb19e9f4 Comments
avfilter/x86/vf_atadenoise: Reduce number of registers used Saves a push+pop on Win64 and some REX prefixes everywhere. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277317
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e4f2d7595bae4d004ac1e18b833a310775715b46 Comments
avfilter/x86/vf_atadenoise: Don't load too much data Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277318
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bab7f937a6b246740fb3252827e95d28f5f0c2f6 Comments
avfilter/x86/vf_atadenoise: Combine stores Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277319
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 698f0d22bf983f9b804da31b46b796d5a35c332f Comments
avfilter/x86/vf_atadenoise: Avoid negating mask Possible by using pandn. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277320
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5ccfaa872ae46115510fa258c83c14fe528cd222 Comments
avfilter/x86/vf_atadenoise: Avoid shifting unnecessarily For a word mask register (where all the values are either 0x0 or 0xFFFF) a right logical shift by 15 is equivalent to negating, so instead of negating the mask and then adding it to another register one can simply subtract the mask from the other register. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277321
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 06 Aug 2026 21:59:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fda0cb5cf8b5e34b29e8c1e3e756750e5e2a8a46 Comments
avfilter/x86/vf_atadenoise: Test earlier ptest has quite a bit of latency, so it should be scheduled earlier. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/vf_atadenoise.asm
Change #277340
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Fri 07 Aug 2026 04:01:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 06deae14bf15e937e639d3c1382c2aecb2453e2a Comments
avcodec/x86/h264_intrapred_10bit: Replace MMX with SSE2 Replace MMX implementation of pred4x4_dc_10 and pred4x4_horizontal_up_10 with SSE2. pred4x4_dc_10_c: 9.7 pred4x4_dc_10_mmxext: 3.7 ( 2.63x) pred4x4_dc_10_sse2: 3.6 ( 2.71x) pred4x4_horizontal_up_10_c: 13.7 pred4x4_horizontal_up_10_mmxext: 5.5 ( 2.52x) pred4x4_horizontal_up_10_sse2: 4.6 ( 2.96x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_intrapred_10bit.asm
- libavcodec/x86/h264_intrapred_init.c
Change #277341
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 07 Aug 2026 04:33:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c717827955ae7b996923fe6952ad5699b84af4bd Comments
swresample/rematrix: use unity gain for top-front downmix ITU-R BS.2127-1 maps U+030 and U-030 to the matching ear-level front channels at unity gain. the current matrix uses 0.707 when the input also contains front channels. use 1.0 instead. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libswresample/rematrix.c
Change #277342
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 07 Aug 2026 04:33:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5c395992f99feb47860e4cc99a0cea2009457870 Comments
swresample/rematrix: handle top-back channels top-back channels are currently left unaccounted and can be dropped during downmixing. when the output retains top-front channels, follow IAMF 1.1.0 and fold top-back into top-front at 0.707. prefer this path over ear-level rear channels to preserve the height layer in x.1.4 to x.1.2 downmixes. when no matching height output remains, map top-back to back or side channels, then fall back to front or mono outputs. handle top-back center separately and add direct tests for every matrix path. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libswresample/Makefile
- libswresample/rematrix.c
- libswresample/tests/.gitignore
- libswresample/tests/rematrix.c
- tests/fate/libswresample.mak
Change #277419
Category ffmpeg Changed by Gabriel Balaich <ffmpeg@ninbura.com> Changed at Fri 07 Aug 2026 15:55:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a81b23a85aca34f9942dc1a63a521946a6407d3f Comments
avdevice/avfoundation: fix build with deployment targets below macOS 12 c2802e520a selected kIOMainPortDefault whenever the SDK is new enough (__MAC_OS_X_VERSION_MAX_ALLOWED), but that symbol is only available since macOS 12, so building with a newer SDK against an older deployment target failed with -Wunguarded-availability-new. Check the deployment target (__MAC_OS_X_VERSION_MIN_REQUIRED) instead and keep using the equivalent kIOMasterPortDefault when targeting older releases. See: https://lists.ffmpeg.org/archives/list/ffmpeg-devel@ffmpeg.org/thread/S7PGVSGNLIZ2WRYV6VOBAD3RWYUNWA3H/ Reported-by: Helmut K. C. Tessarek <tessarek@evermeet.cx> Signed-off-by: Gabriel Balaich <ffmpeg@ninbura.com>
Changed files
- libavdevice/avfoundation.m
Change #277433
Category ffmpeg Changed by softworkz <softworkz@hotmail.com> Changed at Fri 07 Aug 2026 19:51:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 63d0237033cca9782932b809f960378d34ee4869 Comments
avutil/hwcontext_vulkan: Query export support with the real image flags Query with the flags the images are actually created with. The DRM-modifier path is unchanged. Signed-off-by: softworkz <softworkz@hotmail.com>
Changed files
- libavutil/hwcontext_vulkan.c
Change #277446
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Fri 07 Aug 2026 23:18:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 23fccd657c0ac89f7e60f5465cf3f33fb796d29f Comments
avformat/mp3enc: keep trailing padding spanning several packets The trailing padding is read from the AV_PKT_DATA_SKIP_SAMPLES side data of every packet, overwriting the previous value, so only the last packet was ever accounted for. A single packet holds at most one frame, which caps the padding that can be written at 1152 + 528 + 1 samples. LAME regularly reports more than that: gapless/gapless.mp3 carries 1984 and comes out of a stream copy with 1681, decoding to 303 samples more than the file it was copied from. Accumulate instead, and add the decoder delay once the total is known. Fixes: https://trac.ffmpeg.org/ticket/9755
Changed files
- libavformat/mp3enc.c
- tests/fate/gapless.mak
- tests/ref/fate/gapless-mp3-remux
Change #277447
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 08 Aug 2026 02:33:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f944afd04097178b7e3c0d6c7f4e524a9e8f6063 Comments
avutil/opt: Use correct enum size AV_OPT_TYPE_PIXEL_FMT and AV_OPT_TYPE_SAMPLE_FMT are documented to use the corresponding enum type. This matters when using -fshort-enums. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/opt.c
Change #277512
Category ffmpeg Changed by Jeongkeun Kim <variety0724@gmail.com> Changed at Sat 08 Aug 2026 23:18:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d920566afea459ea8700b4ac7c888ab78733a981 Comments
tests/checkasm/dcadsp: add test for lfe_x96_fixed
Changed files
- tests/checkasm/dcadsp.c
Change #277514
Category ffmpeg Changed by Jeongkeun Kim <variety0724@gmail.com> Changed at Sat 08 Aug 2026 23:18:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 280fd609164a3137c53d760a52fa78bbaf37d5d0 Comments
avcodec/aarch64: add NEON lfe_x96_fixed for DCA DSP Implement the fixed-point LFE x96 interpolation filter in AArch64 NEON. Four input samples are processed per iteration. The history sample is kept in a vector lane, and ext constructs the delayed input. Benchmarks by Martin Storsjö using checkasm: a53 a55 a520 a72 a76 a720 1.86x 1.88x 1.24x 1.99x 1.62x 2.30x Author's measurement on Neoverse-N1 (Oracle Cloud, clang 14): 1.29x. Signed-off-by: Jeongkeun Kim <variety0724@gmail.com>Changed files
- libavcodec/aarch64/dcadsp_init_aarch64.c
- libavcodec/aarch64/dcadsp_neon.S
Change #277522
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Sat 08 Aug 2026 23:46:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5e6d663c94936db16fcb381f709524b07373e53d Comments
avfilter/vf_bwdif: fix line boundary checks for >8 bits content The mrefs/prefs boundary conditions scaled the y limits by the number of bytes per sample, even though the ref offsets are already expressed in elements. For content deeper than 8 bits this clamped perfectly valid in-bounds line taps. Found by validating the libplacebo GPU port against this filter, which matches exactly on 16-bit content everywhere except these lines. This changes the output for >8 bit content on the affected lines. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavfilter/vf_bwdif.c
- tests/ref/fate/filter-bwdif10
Change #277523
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Sat 08 Aug 2026 23:46:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a20737f662fd3f3f5999e873b9e7c90b5efc375 Comments
Revert "lavfi/bwdif: fix heap-buffer-overflow with small height videos" This reverts commit 795bccdaf57772b1803914dee2f32d52776518e2. The heap-buffer-overflow was a symptom of the >8 bit boundary conditions bug fixed in the previous commit. This workaround is no longer needed. This restores spatial-only interpolation of the whole frame for the first and last fields, instead of running the temporal edge filter against cloned reference frames on the outermost lines. Because of that first frame references are updated to pre-fix values. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavfilter/vf_bwdif.c
- tests/ref/fate/filter-bwdif-mode0
- tests/ref/fate/filter-bwdif-mode1
- tests/ref/fate/filter-bwdif10
Change #277539
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Sun 09 Aug 2026 04:13:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 09bf8dab5b8f5c9d1c9280af4dec7f84e8c0fe8b Comments
avfilter/dnn: implement zero-copy CUDA tensor mapping for Torch backend When a CUDA frame with a supported RGB sw_format is received, map the GPU device pointer directly into a LibTorch tensor using torch::from_blob() with CUDA device options, bypassing cudaMemcpy entirely. Changes: - Add fill_model_input_cuda() that extracts the CUdeviceptr from the AVHWFramesContext and wraps it in a PyTorch GPU tensor with a no-op deleter (memory owned by FFmpeg AVBuffer ref-counting). - Handle GPU memory alignment padding via custom strides derived from AVFrame linesize. - Permute the mapped NHWC tensor to NCHW (PyTorch convention). - Manage CUDA context explicitly with cuCtxPushCurrent/cuCtxPopCurrent for thread safety in async filter graphs. - Implement zero-copy Device-to-Device output mapping that writes the model result directly into the output frame's VRAM, bypassing ff_proc_from_dnn_to_frame / sws_scale entirely for CUDA frames. - Add torch::cuda::synchronize() to prevent async race conditions with downstream encoders (e.g. NVENC reading uninitialized frames). - Add format validation in ff_dnn_zero_copy_supported_cuda() to reject unsupported sw_formats and batching with CUDA zero-copy early. - Register AV_PIX_FMT_CUDA in vf_dnn_processing pixel format list. - Gracefully fall back to CPU path when sw_format is not a supported RGB variant or when CONFIG_CUDA is not enabled. Signed-off-by: Raja-89 <imraja729@gmail.com>
Changed files
- doc/filters.texi
- libavfilter/dnn/dnn_backend_torch.cpp
- libavfilter/dnn_filter_common.c
- libavfilter/dnn_filter_common.h
- libavfilter/vf_dnn_processing.c
Change #277540
Category ffmpeg Changed by Raja-89 <imraja729@gmail.com> Changed at Sun 09 Aug 2026 04:13:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1e0279143db99d7324b17f9784b3229122269b38 Comments
doc/filters: document async, nireq, and batch_size options for dnn_processing Add documentation for three previously undocumented common DNN options: - async: toggle async inference (default enabled) - nireq: number of concurrent inference requests - batch_size: frames per inference request Also add usage examples for the Libtorch backend showing basic CPU inference and batch inference pipelines. Signed-off-by: Raja Rathour <rajarathour1829@gmail.com>
Changed files
- doc/filters.texi
Change #277547
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:24:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5d53a3f9cdfeea9e40ed218aba9d4e36ff206545 Comments
Squashed 'tests/checkasm/ext/' changes from e13b0bb3ff..e822e429f3 e822e429f3 utils: Silence an MSVC warning about conversion from double to float abf8fb0261 utils: Add checkasm_randomize_interval() and float equivalent 7aea236f8f utils: Simplify checkasm_randomize_range() formulation 49972c1c72 utils: Fix advertised value range of checkasm_randf() 11c569cbdc utils: Use appropriate PRNG size for checkasm_init() 6fd9bafd11 utils: Add way more PRNG helper functions d7f10858c8 utils: Use prng() primitive for checkasm_randomize() 781f16f1ac utils: Parallelize PRNG 4681280b65 selftest: Add tests for utils.h functions 02d0b1ee4c Clear CPU state after any checkasm_call() 48821c5d14 Print cpu mask in JSON output 5d500889dc tests/selftest: Test CPU flag masking dbf5380202 tests: Offset arch-specific CPU flags by 10 09b4c6a8c9 include/checkasm.h: Add CheckasmCpuInfo.mask dd1ca4ed09 utils: Document PRNG re-seeding at the start of each test c93961a221 utils: Use substantially more robust PRNG e46c473f73 Re-order conditional (mostly cosmetic) 16738f028d Seed PRNG before running CheckasmTest.init() 9292f9cf6d Bikeshed summary line a bit more, especially for interrupted runs 0f03612ec9 Suppress non-failure output after first iteration bfdb230dd9 checkasm: Print statusline to track current test/bench progress c8996a284b checkasm: Move test iteration variable to global state 46e136ee0e utils: Add self-repainting statusline buffer 800053edca Route all log messages through checkasm_fprintf() f6791fee59 utils: Redefine checkasm_fprintf() as checkasm_vfprintf() 629a211feb Add optional CheckasmTest.init() and uninit() 354f3d3e8d riscv/callcheck: Avoid out-of-range li immediate under LLVM on rv32 6e1b4cd6ca riscv/cpu: Include <asm/unistd.h> for __NR_riscv_hwprobe 8130043b32 Fix CPU detection for AVX512F 9760810b49 Support YMM copy tests on processors with only AVX dc8c320313 Support XMM copy tests on processors with only SSE git-subtree-dir: tests/checkasm/ext git-subtree-split: e822e429f33e4d02e0815bd497952b3f6deb0a7d
Changed files
- ext-build-test.make
- include/checkasm/checkasm.h
- include/checkasm/test.h
- include/checkasm/utils.h
- src/checkasm.c
- src/internal.h
- src/riscv/callcheck.S
- src/riscv/cpu.c
- src/utils.c
- src/x86/cpu.c
- tests/meson.build
- tests/selftest.c
- tests/tests.h
- tests/utils.c
- tests/x86/tests.c
- tests/x86/tests_asm.asm
Change #277548
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:24:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b59a4375acf0176efaf0152117e87c15d1e2aa90 Comments
checkasm: Update from upstream This update is done because of the newly added init and uninit callbacks which will be used to fix a segfault when repeating the tx test; it also improves both the quality and performance of the PRNG. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- no files
Change #277549
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:28:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 289595a834ecd2ffcc3022d8a445ef3827c4de9c Comments
tests/checkasm/av_tx: Fix segfault when using --repeat The TX tests require a context that is initialized for a specific set of CPU flags. So in order to have a context for the reference function to use, the last context is stored (in static storage). This works well in normal usage, but it does not work with the --repeat feature that has been added to checkasm by the switch to libcheckasm: When the C functions ought to be tested a second time, there is a mismatch between the new function pointer (which is the C version) and the reference context (which is initialized to optimized CPU flags; up until now, there was no stored context when testing the C versions, but there is with --repeat), leading to segfaults. Fix this by adding an uninit callback for the TX test, replacing the atexit handler. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/av_tx.c
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
Change #277550
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:29:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c4a74c53c3205026a24f360213d181f3502e9c12 Comments
tests/checkasm/crc: Free allocations The CRC test uses a linked list of containing the CRC tables of already tested instruction sets; the head of the list is in static storage and up until now was never freed (i.e. reported as "still reachable" by Valgrind). Free it properly by adding an uninit callback. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
- tests/checkasm/crc.c
Change #277551
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:30:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4a2c02a993856576bf2852e2d3482b13f6d9012a Comments
tests/checkasm/crc: Avoid static variables This is possible because the state of the PRNG at the beginning of every test function is the same for every cpu flag (since the switch to libcheckasm). It also has the advantage that random sizes are checked when using --repeat. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/crc.c
Change #277552
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 16:31:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a0e01bcee1cdf505bbcaf5fe7319387a35940fd8 Comments
tests/checkasm/sbcdsp: Zero-init SBCDSPContext ff_sbcdsp_init() checks SBCDSPContext.increment to set sbc_analyze_8s (which is not tested), leading to Valgrind errors. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/sbcdsp.c
Change #277557
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:10:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ee89beda21284d0cf5f44cbe0af24f1c9320eb8b Comments
tests/checkasm: Add ttadsp test Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/Makefile
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
- tests/checkasm/ttadsp.c
- tests/fate/checkasm.mak
Change #277558
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:21:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9612684badbfb61d6382545bfbdebef1bb4b4bea Comments
avcodec/ttadata: Don't use too big arrays Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/ttadata.h
Change #277559
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:22:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4d151c37e0ba0df979b65030e568f1e94aa6bca3 Comments
avcodec/ttadata: Explicitly specify alignment x86 assembly relies on it. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/ttadata.h
Change #277560
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:22:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a906e31d949e50b104db1b524bb8d66cf05f47d Comments
avcodec/x86/ttaencdsp: Merge into ttadsp This allows to avoid duplication of (source) code and constants. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/Makefile
- libavcodec/x86/ttadsp.asm
- libavcodec/x86/ttaencdsp.asm
Change #277561
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:22:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision de1bc8ea1dcebd00321ad6476db101871022fc2c Comments
avcodec/ttaencdsp: Use unsigned to avoid UB The decoder has been made to use unsigned values after the fuzzer encountered signed integer overflow; the same can probably happen in the encoder (I don't know), but it definitely can happen in the checkasm test that will be added soon. So use unsigned here, too. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/ttaencdsp.c
Change #277562
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:22:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d7ce8c30e0206c94a399de34dfed641b68d6923e Comments
tests/checkasm/ttadsp: Also test ttaencdsp Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/Makefile
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
- tests/checkasm/ttadsp.c
- tests/fate/checkasm.mak
Change #277563
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:23:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a8d3ae2a7183a8243ebaf3d135915dea8c719371 Comments
avcodec/x86/ttadsp: Reduce number of registers used Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/ttadsp.asm
Change #277564
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:23:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ee83c175f817dd413f20d2453e4dc4eabd1e87f5 Comments
avcodec/x86/ttadsp: Optimize updating dl[4..7] ttaencdsp old: filter_process_c: 15.0 filter_process_ssse3: 9.0 ( 1.66x) filter_process_sse4: 6.9 ( 2.18x) ttaencdsp new: filter_process_c: 14.9 filter_process_ssse3: 8.3 ( 1.79x) filter_process_sse4: 6.4 ( 2.32x) ttadsp old: filter_process_c: 14.7 filter_process_ssse3: 8.7 ( 1.70x) filter_process_sse4: 6.6 ( 2.24x) ttadsp new: filter_process_c: 14.6 filter_process_ssse3: 8.1 ( 1.81x) filter_process_sse4: 6.3 ( 2.30x) Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/ttadsp.asm
Change #277565
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:25:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1f276a42dbd693ef58222e2c1499d45691b49089 Comments
avcodec/tta{,enc}dsp: Avoid stack Pass the input value by value and return the output value as return value and not by passing the input value by reference. This improves decoding speed by 2% here. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/tta.c
- libavcodec/ttadsp.c
- libavcodec/ttadsp.h
- libavcodec/ttaenc.c
- libavcodec/ttaencdsp.c
- libavcodec/ttaencdsp.h
- libavcodec/x86/ttadsp.asm
- libavcodec/x86/ttadsp_init.c
- libavcodec/x86/ttaencdsp_init.c
- tests/checkasm/ttadsp.c
Change #277592
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:26:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7635b501b841c8d91179f57cd88c49e270e473e1 Comments
avcodec/x86/diracdsp: Properly sign-extend strides Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/diracdsp.asm
- libavcodec/x86/diracdsp_init.c
Change #277593
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:26:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fc866eaab31e1e05bf377a88a10fc4cff02b4897 Comments
avcodec/diracdsp: Use ptrdiff_t for stride Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/diracdec.c
- libavcodec/diracdsp.c
- libavcodec/diracdsp.h
- libavcodec/qpeldsp.c
- libavcodec/x86/diracdsp.asm
- libavcodec/x86/diracdsp_init.c
- tests/checkasm/diracdsp.c
Change #277594
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:26:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision af87713f8aff14a24e622ded02d7c87cce948a48 Comments
avcodec/diracdec: Fix shadowing Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/diracdec.c
Change #277595
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:26:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0654b34370cbdc1ec4f3768c235a8bf06bef5988 Comments
avcodec/x86/diracdsp: Fix clipping packusdw saturates to uint16_t, yet CLIPW is designed for signed values. If any of the saturated unsigned values were >= 2^16*, the macro would return 0. Anyway, given that packusdw already saturates below, clipping from both sides again is simply wasteful. *: I don't know whether this can happen at all. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/diracdsp.asm
Change #277596
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:27:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a9cf64766434d27078f7887085cab8d35db3baa0 Comments
avcodec/x86/diracdsp: Avoid useless macros, init cpuflags properly {ADD,PUT}_RECT was only used once since the removal of mmx functions in d29a9c2aa68fc3eb6d61ff95c698e29316037583. Furthermore, several of the INIT_XMM calls lacked the actual cpuflags. Therefore the cpu flag suffix has been manually added to the function names; furthermore, cpuflags() as well as the check for supported instructions wouldn't work. So add the cpu flags to INIT_XMM. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/diracdsp.asm
Change #277597
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:28:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 51c756382495f15116df6b39f7fceb09758629d2 Comments
avcodec/x86/diracdsp_init: Name function parameters Also fix the comment of the same function in assembly. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/diracdsp.asm
- libavcodec/x86/diracdsp_init.c
Change #277598
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:28:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 251b43db69db2bb1d935bd4ad1f20b58473bbec7 Comments
avcodec/x86/diracdsp: Avoid push+pop of xmm register Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/diracdsp.asm
Change #277599
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:28:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7637009f0276c47b4a101cf0ef12458dfea0d9b3 Comments
avcodec/x86/diracdsp_init: Avoid cast put_signed_rect_clamped uses different types for differnt 8bit and >8bit content. The 8bit SSE2 function used the real type in its function signature; this does not coincide with the array of function pointers it gets put into and therefore also not with how it is called which is UB. Also, casts of function pointers to void* like it is done here are not legal ISO-C as function pointers and object pointers need not be convertible. So just declare the function to have the required type for the function pointer array. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/diracdsp.asm
- libavcodec/x86/diracdsp_init.c
Change #277600
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:29:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7d448c9709ae04734f4e32bd7baf392cbd1c3c16 Comments
avcodec/qpeldsp, qpel_template: Use ptrdiff_t for stride Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/qpel_template.c
- libavcodec/qpeldsp.c
Change #277601
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:29:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7289b00894a9d5f0b57deac6d86a228fc8f5607f Comments
avcodec/dirac_dwt: Use ptrdiff_t for stride Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/dirac_dwt.c
- libavcodec/dirac_dwt.h
- libavcodec/dirac_dwt_template.c
Change #277602
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 09 Aug 2026 17:30:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 353deaf31e88e2f74b0dcb7d6ba77e68089cf7e3 Comments
avcodec/h264qpel_template: Use ptrdiff_t for stride Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/h264qpel_template.c
Change #277603
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 09 Aug 2026 18:55:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 77998c0dec044f5693188d8d1e2f0e0677d39241 Comments
swresample/rematrix: handle missing channels from 22.2 layout Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libswresample/rematrix.c
- libswresample/swresample_internal.h
- libswresample/tests/rematrix.c
Change #277604
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 09 Aug 2026 18:55:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision afd6b8451f845508972b43ff29ad837be0228ac1 Comments
libswresample/tests/rematrix: rewrite into a matrix printing tool Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libswresample/rematrix.c
- libswresample/tests/rematrix.c
- tests/fate/libswresample.mak
- tests/ref/fate/swr-rematrix-22.2-5.1
- tests/ref/fate/swr-rematrix-22.2-5.1.2
- tests/ref/fate/swr-rematrix-22.2-5.1.4
- tests/ref/fate/swr-rematrix-22.2-7.1
- tests/ref/fate/swr-rematrix-22.2-7.1.2
- tests/ref/fate/swr-rematrix-22.2-7.1.4
- tests/ref/fate/swr-rematrix-22.2-7.2.3
- tests/ref/fate/swr-rematrix-22.2-9.1.4
- tests/ref/fate/swr-rematrix-22.2-9.1.6
- tests/ref/fate/swr-rematrix-22.2-mono
- tests/ref/fate/swr-rematrix-22.2-stereo
- tests/ref/fate/swr-rematrix-5.1-mono
- tests/ref/fate/swr-rematrix-5.1-stereo
- tests/ref/fate/swr-rematrix-5.1.2-5.1
- tests/ref/fate/swr-rematrix-5.1.2-7.1
- tests/ref/fate/swr-rematrix-5.1.2-mono
- tests/ref/fate/swr-rematrix-5.1.2-stereo
- tests/ref/fate/swr-rematrix-5.1.4-5.1
- tests/ref/fate/swr-rematrix-5.1.4-5.1.2
- tests/ref/fate/swr-rematrix-5.1.4-7.1
- tests/ref/fate/swr-rematrix-5.1.4-mono
- tests/ref/fate/swr-rematrix-5.1.4-stereo
- tests/ref/fate/swr-rematrix-7.1-5.1
- tests/ref/fate/swr-rematrix-7.1-mono
- tests/ref/fate/swr-rematrix-7.1-stereo
- tests/ref/fate/swr-rematrix-7.1.2-5.1
- tests/ref/fate/swr-rematrix-7.1.2-5.1.2
- tests/ref/fate/swr-rematrix-7.1.2-5.1.4
- tests/ref/fate/swr-rematrix-7.1.2-7.1
- tests/ref/fate/swr-rematrix-7.1.2-mono
- tests/ref/fate/swr-rematrix-7.1.2-stereo
- tests/ref/fate/swr-rematrix-7.1.4-5.1
- tests/ref/fate/swr-rematrix-7.1.4-5.1.2
- tests/ref/fate/swr-rematrix-7.1.4-5.1.4
- tests/ref/fate/swr-rematrix-7.1.4-7.1
- tests/ref/fate/swr-rematrix-7.1.4-7.1.2
- tests/ref/fate/swr-rematrix-7.1.4-mono
- tests/ref/fate/swr-rematrix-7.1.4-stereo
- tests/ref/fate/swr-rematrix-7.2.3-5.1
- tests/ref/fate/swr-rematrix-7.2.3-5.1.2
- tests/ref/fate/swr-rematrix-7.2.3-5.1.4
- tests/ref/fate/swr-rematrix-7.2.3-7.1
- tests/ref/fate/swr-rematrix-7.2.3-7.1.2
- tests/ref/fate/swr-rematrix-7.2.3-7.1.4
- tests/ref/fate/swr-rematrix-7.2.3-mono
- tests/ref/fate/swr-rematrix-7.2.3-stereo
- tests/ref/fate/swr-rematrix-9.1.4-5.1
- tests/ref/fate/swr-rematrix-9.1.4-5.1.2
- tests/ref/fate/swr-rematrix-9.1.4-5.1.4
- tests/ref/fate/swr-rematrix-9.1.4-7.1
- tests/ref/fate/swr-rematrix-9.1.4-7.1.2
- tests/ref/fate/swr-rematrix-9.1.4-7.1.4
- tests/ref/fate/swr-rematrix-9.1.4-7.2.3
- tests/ref/fate/swr-rematrix-9.1.4-mono
- tests/ref/fate/swr-rematrix-9.1.4-stereo
- tests/ref/fate/swr-rematrix-9.1.6-5.1
- tests/ref/fate/swr-rematrix-9.1.6-5.1.2
- tests/ref/fate/swr-rematrix-9.1.6-5.1.4
- tests/ref/fate/swr-rematrix-9.1.6-7.1
- tests/ref/fate/swr-rematrix-9.1.6-7.1.2
- tests/ref/fate/swr-rematrix-9.1.6-7.1.4
- tests/ref/fate/swr-rematrix-9.1.6-7.2.3
- tests/ref/fate/swr-rematrix-9.1.6-9.1.4
- tests/ref/fate/swr-rematrix-9.1.6-mono
- tests/ref/fate/swr-rematrix-9.1.6-stereo
- tests/ref/fate/swr-rematrix-stereo-mono
Change #277605
Category ffmpeg Changed by qaq03101 <1440810736@qq.com> Changed at Sun 09 Aug 2026 19:24:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9c176644aadb80ff1dfc65dc9d73f132ab81c999 Comments
avformat/scd: reject zero-channel tracks A zero channel count can cause a division by zero in scd_read_packet(). Reported-by: sdjasj Fixes #23181. Signed-off-by: qaq03101 <1440810736@qq.com>
Changed files
- libavformat/scd.c
Change #277606
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 09 Aug 2026 20:01:31 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0f7eec026cb79300a460acb49fb03769abfbce5d Comments
avcodec/cbs_lcevc: don't return an error if a Process Block is missing padding bits Samples made following the current (for now) faulty specification may not include alignment bits at the end of VUI parameters, so instead of erroring out, warn about it and keep going. In a writing scenario, like the lcevc_metadata bsf, the output bitstream will be written with them. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/cbs_lcevc_syntax_template.c
Change #277624
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4af33ec41801b9834fbe6772f9c1e53c48e0cd0d Comments
swscale/graph: ensure intermediate buffers have extra line padding This basically guarantees that optimized packed routines have enough space to write a few bytes past the end of the line. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
Change #277625
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6b38a4035ab9250d9e04cf211675f87fe279c6c0 Comments
swscale/graph: add plane copy metadata This can be set opportunistically by passes which are effectively memcopies. Information about end-to-end plane copies will also propagate upwards to the SwsGraph, and can be used there by the caller. The reason we need to solve it this way is deeply tied to the way SwsGraph is designed; specifically the fact that it can be used with arbitrary frames and also lives per-field (rather than per-frame), meaning that we can't just directly mutate the output frame somehow from the run() call to ref the output planes. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
- libswscale/graph.h
Change #277626
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a167248c4d9caea103ec01d26f45bde246f4ba38 Comments
swscale/ops_memcpy: omit memcpy() if src and dst are identical This allows already referenced planes to be skipped (and avoids UB in this case). Note that this is already safe for the other backends, because reading from and writing to the same pointer via e.g. AVX operations is also effectively a no-op. See-Also: 1e071c8585467539d48cb33f239811309eed46a0 Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_memcpy.c
Change #277627
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 49dd7666d1c1f455f627765b2e1c49e2e17caebf Comments
swscale/ops: use unzwizzled component index for SwsComps.dep_in[] This is more true to the name; these dependencies track *components*, not planes - in both directions. Generates a bunch of benign diffs. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops.c
- tests/ref/fate/sws-ops-list
Change #277628
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd20a6f43c84ba2c5c5b428efa91d39a78f0ba36 Comments
swscale/ops: generate plane copy map for passes Uses the previously added SWS_COMP_COPY to determine which planes are direct copies of other planes. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops_dispatch.c
Change #277629
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d3d74f0ce452918e5c3f3123395c2c7f5d9d6636 Comments
swscale/aarch64/ops: set correct mask for SWS_OP_MIN/MAX This was already the established convention, aarch64 just didn't follow it. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/aarch64/ops_impl_conv.c
Change #277630
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 770a1ef28de945b894c19c1066692b614f3de1f7 Comments
swscale/ops_optimizer: eliminate unneeded SWS_OP_MIN/MAX components The current code only checks to see if the entire operation is a no-op, but doesn't allow removing unneeded components from the operation. Results in a large number of minor improvements, e.g. rgba 16x16 -> ya8 16x16: u8_read_packed_xyzw u8_to_f32_xyzw f32_linear_x_xxx00 f32_dither_x_0_16x16 - f32_min_xw + f32_min_x f32_to_u8_xw u8_permute_xyz_y_w u8_write_packed_xy or: rgba 16x16 -> yuva444p10le 16x16: u8_read_packed_xyzw u8_to_f32_xyzw f32_linear_xyzw_xxx0x_xxx0x_xxx0x_000x0 f32_dither_xyzw_0_3_2_5_16x16 - f32_min_xyzw + f32_min_w f32_to_u16_xyzw u16_write_planar_xyzw And some major ones, e.g. yuva444p 16x16 -> gbrap 16x16: - u8_read_planar_xyzw - u8_to_f32_xyzw + u8_read_planar_x + u8_write_planar_x + Sub-pass #1: + u8_read_planar_xyz + u8_to_f32_xyz f32_linear_xyz_x0x0x_xxx0x_xx00x f32_dither_xyz_0_3_2_16x16 - f32_max_xyzw - f32_min_xyzw - f32_to_u8_xyzw - u8_write_planar_xyzw + f32_max_xyz + f32_min_xyz + f32_to_u8_xyz + u8_write_planar_xyz Which is now split between two subpasses, one for the no-op alpha copy and one for the yuv444 -> gbrp conversion. This has been previously blocked by the SWS_OP_MIN/MAX clamp on the RGB channels marking the alpha channel as dirty, even though it should be a no-op on the alpha channel. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/aarch64/ops_entries.c
- libswscale/ops_optimizer.c
- libswscale/uops_macros.h
- tests/ref/fate/sws-ops-list
Change #277631
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:03:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5ca18fdde49d97b7d4c194fab1c9550bb606689d Comments
swscale/graph: internally ref copied intermediate buffers If the pass we are allocating output buffers for has a plane copy map, we can optimize away the internal buffer by setting it to a ref of its input buffer, if one exists. In theory, we can also do this if there is not an input buffer, by directly referencing a sentinel or placeholder SwsPassBuffer corresponding to the original input image, but this will require a bit more work so I have decided to hold off on it for now. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/graph.c
Change #277632
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Sun 09 Aug 2026 21:05:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6bbc22dc09c214b2f5334afa30167fa1990eb5df Comments
swscale: partially ref copied planes Instead of all-or-nothing, this commit allows ref'ing some planes while copying others, by referencing the SwsGraph plane copy map. Notable examples: yuv444p 1920x1080 -> yuva444p 1920x1080, flags=0x0 dither=1 scaler=0/0 time=364/10 us (ref=4201/10 us), speedup=11.541x faster yuv444p16le 1920x1080 -> yuva444p16le 1920x1080, flags=0x0 dither=1 scaler=0/0 time=1140/10 us (ref=9651/10 us), speedup=8.466x faster gray 1920x1080 -> yuvj444p 1920x1080, flags=0x0 dither=1 scaler=0/0 time=894167/10000 us (ref=1942384/10000 us), speedup=2.172x faster gbrap 1920x1080 -> yuva444p 1920x1080, flags=0x0 dither=1 scaler=0/0 time=5670793/10000 us (ref=6572410/10000 us), speedup=1.159x faster Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/swscale.c
Change #277708
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:45:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 33d5616fbeb9c0581c6a25a624aae8195335815b Comments
ffbuild: show install destinations in the INSTALL build output The INSTALL pretty-printer echoed the rule prerequisites ($^), which printed duplicate and phony names and never showed the destination. Convert the install recipes to an INSTALL_FILES helper that receives the install options, source files and destination as separate arguments. In quiet mode it prints one "source -> destination" line per installed file. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- Makefile
- doc/Makefile
- doc/examples/Makefile
- ffbuild/common.mak
- ffbuild/library.mak
- fftools/Makefile
Change #277720
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:19 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c22a84c655c9bb11c82c232a5bd9b2f994a57fcc Comments
avfilter/vsrc_amf: drop WINMMAPI from function pointer typedefs The dllimport attribute is meaningless on a pointer typedef and the symbols are resolved with dlsym() anyway. Fixes -Wignored-attributes. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavfilter/vsrc_amf.c
Change #277721
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:19 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d3fbc134295b1279d9c0c4a4b45043030c99ba9c Comments
fftools/ffplay: annotate intentional switch fall-throughs Both fall-throughs are deliberate: SDL_MOUSEBUTTONDOWN shares the cursor and seek handling of SDL_MOUSEMOTION, and a resize also needs the refresh done by SDL_WINDOWEVENT_EXPOSED. Silences -Wimplicit-fallthrough. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- fftools/ffplay.c
Change #277722
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd073ba92facc2fafef001f2cf6950d6d0bb1fc9 Comments
tools/seek_print: mark usage() as av_noreturn It always calls exit(). Fixes -Wimplicit-fallthrough. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/seek_print.c
Change #277723
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 483ee7c7fac2f7c09edd1d5048d5f20fc8d63bf6 Comments
avcodec/ac3dec: mark the E-AC-3 prototypes as av_unused Fixes -Wunused-function in checkheaders. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/ac3dec.h
Change #277724
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cb366a4af7a5f0a5333dc517f241ff438db08ca5 Comments
avcodec/lcevcdec: include pixfmt.h for enum AVPixelFormat Fixes -Wvisibility in checkheaders. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/lcevcdec.h
Change #277725
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ea0ebb6e5cda3103d6a9ff2aa7c39e92601155e4 Comments
avcodec/scpr: mark the shared decode_run helpers as av_unused Fixes -Wunused-function in checkheaders. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/scpr.h
Change #277726
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 19:52:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 87014aad6b73ca7f30b9fbff73a670418c810dd8 Comments
avutil/crc_internal: mark xnmodp as av_unused Fixes -Wunused-function in checkheaders. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/crc_internal.h
Change #277727
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 20:22:42 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7432fed62bf0c07a45a82b874197decbb080df66 Comments
avcodec/vaapi_av1: stop setting deprecated VA-API fields chroma_sample_position is a single bit and cannot hold the 2-bit AV1 value, so CSP_COLOCATED was silently truncated to CSP_UNKNOWN. tg_start and tg_end are meaningless because the bitstream is submitted with per tile granularity. libva deprecated all three without a replacement. Fixes -Wdeprecated-declarations. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/vaapi_av1.c
Change #277728
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 20:29:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 76cfcc1692a39a21f2c651ff965bed260b7cac63 Comments
fftools/ffmpeg_mux_init: don't split forced keyframe spec in place The spec string is owned by the option list and re-read for every stream matching the same -force_key_frames, so terminating entries in place truncated it for later streams. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- fftools/ffmpeg_mux_init.c
Change #277729
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 20:34:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9674156cc6d008a05a4c6c06470f0284a892959d Comments
avutil/hwcontext_opencl: don't fall through between mapping types When a mapping type is unavailable the case fell into the next hardware type's mapping function instead of returning ENOSYS. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_opencl.c
Change #277730
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 10 Aug 2026 20:34:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f25dd4e26f64b84cdd586c16dc522c7f023dafa3 Comments
avutil/hwcontext_qsv: fix fall-through in qsv_fixed_pool_map_to() The break only applied to the matching case, so every non-matching surface fell into the next case and reinterpreted the same mfxHDLPair under another API. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_qsv.c
Change #277748
Category ffmpeg Changed by adorn <adorn@hr.de> Changed at Mon 10 Aug 2026 23:59:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7c2853dfc1d328b0dd98b7915e589eb1e8dc15a1 Comments
avformat/demux: restore container color fields individually Fixes issue #23717 The upstream change 9b709532d5 ("avformat/demux: don't overwrite container level color information if set") restores color_primaries, color_trc and color_space from the container as an all-or-nothing group: as soon as one of the three is signaled at container level, all three are taken from the container. MXF files written by some devices only carry the TransferCharacteristic UL (MXF local tag 0x3210) but no ColorPrimaries (0x3219) or CodingEquations (0x321a). For an H.264 essence whose VUI correctly signals bt709 for all three, the grouped logic overwrites color_primaries and color_space with the container's UNSPECIFIED values, so ffprobe reports: color_space=unknown / color_primaries=unknown / color_transfer=bt709 instead of the bitstream's bt709/bt709/bt709. Restore each of the three fields only when it is actually set at the container level. This keeps container priority where a value is signaled and falls back to the bitstream (decoder/parser) value otherwise.Changed files
- libavformat/demux.c
Change #277749
Category ffmpeg Changed by Ayoub Nabil <237098474+ayoubnabil@users.noreply.github.com> Changed at Tue 11 Aug 2026 00:01:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5ba2a2c841259a04742064da5e79e288f50ef9fa Comments
avcodec/ac3dec_fixed: fix dither at exponent 24 the fixed decoder discarded fractional coefficient data before the imdct, causing low-level coefficients to be truncated at large exponents. dithered bap 0 coefficients at exponent 24 were consequently quantized with a negative bias. keep ac-3 coefficients in q2, compensate during windowing, and round the affected dither symmetrically. keep the forced e-ac-3 path in q0. add a synthetic fate test covering the corrected output.
Changed files
- libavcodec/ac3dec.c
- libavcodec/ac3dec_fixed.c
- tests/fate/ac3.mak
- tests/ref/fate/ac3-fixed-dexp24
Change #277750
Category ffmpeg Changed by Aleksander Shveikin <alex.svek@gmail.com> Changed at Tue 11 Aug 2026 00:05:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b9161b93b5c88bd2f6f110bb527336af9a4c0cae Comments
avcodec/x86/vp8dsp: convert mmx to sse2 This patch converts ff_vp8_idct_dc_add4uv_mmx to ff_vp8_idct_dc_add4uv_sse2. Here are the checkasm benchmark results: vp8_idct_dc_add4uv_c: 359.9 vp8_idct_dc_add4uv_mmx: 59.7 ( 6.02x) vp8_idct_dc_add4uv_sse2: 21.1 (17.06x) Signed-off-by: Aleksander Shveikin <alex.svek@gmail.com>
Changed files
- libavcodec/x86/vp8dsp.asm
- libavcodec/x86/vp8dsp_init.c
Change #277752
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 11 Aug 2026 00:44:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b5402d1ecf90343e26679fdfe258de3a490fbb43 Comments
avformat/hls: measure playlist reload interval from load start RFC 8216 6.3.4 measures reload waits from the time the client began loading the playlist, not from when the load finished. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
Change #277753
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Tue 11 Aug 2026 00:44:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ee498f5e82d281851f9468bcbe427ead342894eb Comments
avformat/hls: refresh stale playlist when seeking Seeking used only the loaded segment list. Live and EVENT playlists can gain segments after loading, and sliding-window playlists can also expire them, so a seek target may lie outside the loaded window even when it is within the actual presentation. Refresh the target playlist before resolving the seek when the target may fall outside the window. Rate-limited to one-half the target duration, the minimum reload interval of RFC 8216 6.3.4. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/hls.c
Change #277756
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Tue 11 Aug 2026 03:47:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 06a5418aa53d8596edcecc5b7b68c544f9a36977 Comments
tests/checkasm/h264pred: Remove declare_func_emms This is possible after the last remnants of MMX is gone Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- tests/checkasm/h264pred.c
Change #277758
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 04:35:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 54cab38faba72ac1bc2ccb2defd21fb78d9b5934 Comments
avutil/x86/tx_float: Don't use vextractf128 to write lower lane Just use vmovaps with an xmm register. This is faster on some systems and in any case saves codesize (by 688B). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/tx_float.asm
Change #277759
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 04:35:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 29e47b7d9b9b8c0532bb568582f60dff507320a8 Comments
avcodec/x86/dct32: Don't use v{extract,insert}f128 for lower lane One can just access the lower lane as an ordinary xmm register. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/dct32.asm
Change #277760
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 04:35:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 03dc244a693ce639cebf82f7bae112fb75580919 Comments
avcodec/x86/dct32: Don't use legacy SSE in AVX function Use VEX encoding instead. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/dct32.asm
Change #277851
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 16:12:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 844e10e1a74929c27dfe0aac1c34e92bb6edbf5a Comments
avformat/shared: Use correct printf specifier %zu expects a size_t, yet the argument is of type int64_t; this is UB if size_t unless size_t is the corresponding unsigned type to int64_t (i.e. it is UB on 32bit systems). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/shared.c
Change #277861
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 20:20:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d9ece3f721ffd31bb3c1a24484ff05726d66ae6d Comments
avcodec/cavs: Avoid loads for initializing motion vectors Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/cavs.c
- libavcodec/cavs.h
- libavcodec/cavsdata.c
- libavcodec/cavsdec.c
Change #277866
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 21:16:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e090671b9b521b89940cd5e6706a05b793ec5927 Comments
avcodec/h263dsp: Use ptrdiff_t for stride Reviewed-by: Rémi Denis-Courmont <remi@remlab.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/h263.c
- libavcodec/h263dsp.c
- libavcodec/h263dsp.h
- libavcodec/mips/h263dsp_mips.h
- libavcodec/mips/h263dsp_msa.c
- libavcodec/riscv/h263dsp_init.c
- libavcodec/x86/h263_loopfilter.asm
- libavcodec/x86/h263dsp_init.c
- tests/checkasm/h263dsp.c
Change #277867
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 21:17:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a9c0652193ee4872678cdf88e4f322ba7a5cabf5 Comments
avcodec/x86/h263dsp_loopfilter: Avoid shuffle Also start splatting a bit earlier. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h263_loopfilter.asm
Change #277868
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 11 Aug 2026 21:17:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7b05d16ce71d7525493354f2f725cded9dbc05d2 Comments
avcodec/mpeg4videodsp: Use ptrdiff_t for stride Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/mpeg4videodsp.c
- libavcodec/mpeg4videodsp.h
- libavcodec/ppc/mpeg4videodsp.c
- libavcodec/x86/mpeg4videodsp.c
- tests/checkasm/mpeg4videodsp.c
Change #277869
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Tue 11 Aug 2026 23:12:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1c10bcc2e17255dacb717a25ab3db142ce390602 Comments
avformat/librist: honor the caller buffer size in librist_read librist_read() ignored its size argument and copied the full payload_len, overflowing a smaller destination (e.g. via the async: wrapper). Clamp the copy to the caller-provided buffer size. Fixes: out of array access
Changed files
- libavformat/librist.c
Change #277871
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 11 Aug 2026 23:23:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cf39fd2fa8d6ada4c48c0e9effc6d4ea974c7dfd Comments
avformat/mpegenc: pass buffer size into put_system_header() Fixes: out of array access Fixes: many.mkv Found-by: Joshua Rogers <joshua.rogers@aisle.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/mpegenc.c
Change #277872
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Tue 11 Aug 2026 23:23:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9d786e4b5e9b8482651928574de33772aeee7be1 Comments
avformat/mpegenc: reject stream counts that overflow the system header put_system_header() writes 12 + 3*N bytes after the pack header into a fixed 128-byte stack buffer, but is handed a PutBitContext sized past the real buffer, so its own bounds check never fires; ~35+ streams overflow the stack. Reject at mux init when the system header would not fit. Fixes: out of array access Fixes: many.mkv
Changed files
- libavformat/mpegenc.c
Change #277873
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Tue 11 Aug 2026 23:25:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision acf5d7cdc1f9ae8752c23e1ea8d7f355ed780781 Comments
avformat/hevc: reject hvcC NAL arrays that overflow the 16-bit count numNalus is uint16_t; a crafted hvcC declaring >65535 NAL units of one type wraps it to 0 and then writes nal[-1]. Reject before the count can wrap. Reachable by remuxing a crafted file with -c copy. Fixes: integer overflow Fixes: out of array access
Changed files
- libavformat/hevc.c
Change #277874
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Tue 11 Aug 2026 23:33:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c736c6d10f58c28d1fbb1c7e1b50487015e4dd3e Comments
doc/developer.texi: More precisse wording for Robustness Fairy takes this literally See: #23985 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- doc/developer.texi
Change #277876
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Tue 11 Aug 2026 23:37:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 65b0dab903e5975e036b30ecc58f5935d4f151e0 Comments
avformat/dashdec: reject a negative fragment index A live manifest whose startNumber decreases across a refresh drives cur_seq_no negative in move_segments(); get_current_fragment() only checked the upper bound before indexing fragments[]. Add a lower-bound check and clamp the negative delta at its source. Fixes: out of array read
Changed files
- libavformat/dashdec.c
Change #277879
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Tue 11 Aug 2026 23:50:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1cdeb3c4e7f1f8566d846b9b451e01c376398818 Comments
avformat/rtpenc_vc2hq: reject data units larger than the RTP payload buffer send_packet() copied an input-derived unit/fragment size into the fixed rtp_ctx->buf with no bound, overflowing it for a crafted Dirac unit even at the default packet size. Reject units that do not fit in max_payload_size. Fixes: out of array access
Changed files
- libavformat/rtpenc_vc2hq.c
Change #277883
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 12 Aug 2026 00:09:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 715d7d85d690ebf9ae4d8f9f0e5ed8bf42ae8a43 Comments
swresample/rematrix: Use AVChannel in av_channel_layout_index_from_chan Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswresample/rematrix.c
- tests/ref/fate/swr-rematrix-22.2-7.1.2
Change #277884
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 12 Aug 2026 00:09:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a205ebf3a6a1ea14a7fb1d3fa07ccae5fd297dd Comments
swresample/rematrix: Avoid repeated calls to av_channel_layout* funcs Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswresample/rematrix.c
Change #277885
Category ffmpeg Changed by Anxious Koisi <ddoaoing@gmail.com> Changed at Wed 12 Aug 2026 01:14:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f92584948489dfcc1ec36612455617a7f7700840 Comments
avformat/gopher: Fix CRLF injection Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/gopher.c
Change #277886
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Wed 12 Aug 2026 01:34:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 983dae9c19f46c87d597598c0fd2f2fcee0ad2f8 Comments
avformat/rtpenc_av1: bound OBU size in the keyframe search loop The is_keyframe sequence-header search loop advanced buf_ptr/rem_size by num_lebs + obu_size without bounding obu_size against the remaining data (unlike the main packetization loop). A crafted obu_size (~0x80000010) wraps the signed rem_size back positive, so the next iteration dereferences a pointer past the packet. Consume the LEB bytes first, then reject an OBU larger than the remaining size. Out-of-bounds read reachable from a crafted AV1 packet muxed to RTP. Fixes: out of array read
Changed files
- libavformat/rtpenc_av1.c
Change #277887
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 01:34:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d862937c5a9bd6099e46f551846e91a048ed65a1 Comments
avformat/rtpenc_av1: Check num_lebs Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/rtpenc_av1.c
Change #277888
Category ffmpeg Changed by Joshua Rogers <MegaManSec@users.noreply.github.com> Changed at Wed 12 Aug 2026 01:34:41 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b4c199c5906ff53368926c2a5839881f41957e7f Comments
avformat/rtpenc_av1: do not narrow the OBU size to (long) (long)obu_size sign-flips values in 0x80000000..0xfffffffd on ILP32/LLP64 targets (32-bit long, e.g. 64-bit Windows), bypassing the size check. Compare as uint32_t; frame_size is non-negative at this point. No PoC as the used setup was 64bit specific
Changed files
- libavformat/rtpenc_av1.c
Change #277889
Category ffmpeg Changed by Umar Pathan <hello@umar.ac> Changed at Wed 12 Aug 2026 02:23:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cfaaf0062c085433ccb500689f137849794aeb63 Comments
avformat/webp_anim_dec: use ffio_read_size for ICCP and EXIF chunks Fixes: use of uninitialized memory Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Changed files
- libavformat/webp_anim_dec.c
Change #277891
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 03:05:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a681001244b697e33fb94557dfd3f924250edb8c Comments
avfilter/afir: bound the crossfades by the samples of the input frame Fixes: ffmpeg -i tail.wav -i ir.wav -filter_complex "[0][1]afir=dry=1:wet=1:enable='lte(t,0.5)'" -f null - Fixes: out of array access Fixes: uQcNui1HxUqe Regression since: 1835f884b7ae475d2079d044003966981823502e Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- libavfilter/afir_template.c
Change #277892
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 03:50:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4d896a22dd440dc886fd4c0d89992a55e886390b Comments
avfilter/spectrumsynth: negotiate one pixel format for both inputs Fixes: out of array access Fixes: ndSS0e433gq Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- libavfilter/vaf_spectrumsynth.c
Change #277893
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 04:02:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c42ac5c5668fef93f84960a1d8bf0605bdd812ea Comments
avformat/mpegts: keep the PES payload within max_packet_size Fixes: out of array access Fixes: eYvYXUJZbPJ Regression since: bca30570d28bbaa07badadabf55ec3589201a82f Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- libavformat/mpegts.c
Change #277894
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 04:02:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 37721094ab4bac1215168b5b8a7defa1bc2d6581 Comments
avformat/mpegts: reject a max_packet_size below one TS payload Fixes: ffmpeg -max_packet_size 100 -i fate-suite/mpegts/h264small.ts -f null - Fixes: out of array access Fixes: eYvYXUJZbPJ Regression since: bca30570d28bbaa07badadabf55ec3589201a82f Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- doc/demuxers.texi
- libavformat/mpegts.c
Change #277895
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 04:34:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 73130e77dc2e866386088e8e4edf7a051fd2949a Comments
avformat/mlv: end the LJ92 packet where its data ends Fixes: read of uninitialized memory Fixes: PJaSVrRTt6Kf Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- libavformat/mlvdec.c
Change #277896
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 04:50:23 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 98e45d60746e25fc4a5529bd6ffb8ae7f28f6ce8 Comments
avcodec/lcldec: clear what the multithread chunks leave undecoded Fixes: read of uninitialized memory Fixes: zTrrhikJHTRR Found-by: Eunsoo Kim, Microsoft FORGE Labs
Changed files
- libavcodec/lcldec.c
Change #277976
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Wed 12 Aug 2026 14:39:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e5ecfe8970899efa6ac0447fde4cb7c36ec23b75 Comments
avformat/id3v2: make legacy COMM descriptor-as-key behavior opt-in A COMM frame carries both a language and a short content descriptor, so its only unambiguous metadata key is "comment-<descriptor>-<lang>", while the extra export of the bare descriptor as a key silently overrides a real tag whenever the descriptor matches a known tag name such as "album". Restrict that legacy export to the container-level ID3v2 tag of callers that ask for it through the new AVFMT_FLAG_LEGACY_ID3V2_COMM_KEYS flag (-fflags +legacy_id3v2_comm_keys), which is deprecated along with FF_API_OLD_ID3V2_COMMENT and only exists to give those callers a transition path.
Changed files
- doc/APIchanges
- libavformat/aacdec.c
- libavformat/avformat.h
- libavformat/demux.c
- libavformat/hls.c
- libavformat/id3v2.c
- libavformat/id3v2.h
- libavformat/mpegts.c
- libavformat/options_table.h
- libavformat/version.h
- tests/fate/id3v2.mak
- 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-sort
- tests/ref/fate/id3v2-comm-sort-
- tests/ref/fate/id3v2-comm-sort-eng
- tests/ref/fate/id3v2-reenc-delete-metadata-keep
- tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
- tests/ref/fate/id3v2-reenc-remux-keep
- tests/ref/fate/id3v2-wma-comm
- tests/ref/fate/id3v2-wma-comm-asf_o
- tests/ref/fate/id3v2-wma-comm-legacy-keys
Change #277977
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Wed 12 Aug 2026 14:57:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 82d03c6d8e1a16182b3db873eada6b968996437c Comments
tests/checkasm: Give the ttaencdsp function a separate name Otherwise, if running both ttadsp and ttaencdsp tests in the same checkasm run, we get failures as the two functions don't match. This fixes running the "checkasm" binary without any "--test" parameter.
Changed files
- tests/checkasm/ttadsp.c
Change #277996
Category ffmpeg Changed by Brad Smith <brad@comstyle.com> Changed at Wed 12 Aug 2026 17:19:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9432f85830f2c0a453c6caa9f4353cef208eab8a Comments
avcodec/mips/cabac: Fix building on OpenBSD/mips64 src/libavcodec/mips/cabac.h:160:77: error: instruction requires a CPU feature not currently enabled 160 | PTR_SUBU "%[tmp1], %[c_low], %[tmp1] \n\t" | ^ <inline asm>:13:2: note: instantiated into assembly here 13 | movz $15, $13, $24 | ^ OpenBSD targets MIPS III ISA.Changed files
- libavcodec/mips/cabac.h
Change #277997
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 11536e78d22bfca6051d80d126e755b4bd45987a Comments
checkasm/sw_ops: don't return a value from void functions Fixes: e65dab2b59 Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tests/checkasm/sw_ops.c
Change #277998
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 16ef68f90091f5195efe435aa9037c0a0c0f38c4 Comments
avutil/hwcontext_d3d12va: fix unused label warning with UWP Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_d3d12va.c
Change #277999
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e255b21831f927da0ca4fcfc96b3fb883beb70dd Comments
tools/ismindex: fix const qualifier discard warning Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/ismindex.c
Change #278000
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d832b7ed05f047729d11571d6d9b6c83509920b3 Comments
avutil/timer: fix ignored read() result Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/timer.h
Change #278001
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 51699b70cd75f4c00bffa4b03cd93b1d50787fd5 Comments
checkasm/sbcdsp: rename CONST macro to avoid clash with windows.h Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tests/checkasm/sbcdsp.c
Change #278002
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5656e9e5ab6a58e0a9c30510040b4724e6ff04ab Comments
avcodec/tests/x86/dct: fix ff_prores_idct_put_10 declaration mismatch Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/tests/x86/dct.c
Change #278003
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 40bb61c0d440af15567b65692f1bc28e54c9bb47 Comments
avutil/log: use the ANSI color table in ansi_fputs() on Windows ansi_fputs() is reachable on Windows when stderr is not a console or with forced color. Use real ANSI color table in this cases, otherwise wrong values are used from Windows codes. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/log.c
Change #278004
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f73d12f6ee9d9f72fe21a6842eb3b8961c46d7af Comments
avformat/rtmppkt: add fall-through annotations Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/rtmppkt.c
Change #278005
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3f596e2035786bd407cc50c60edefa33a3fce3c5 Comments
avformat/tls_securetransport: add fall-through annotation Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavformat/tls_securetransport.c
Change #278006
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 40ed144d3adb4a792c7d531c64c77e299dcb3518 Comments
avcodec/riscv/vvc: fix implicit fall-through into no-op default cases Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/riscv/vvc/dsp_init.c
Change #278007
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5583534fc2022fc021e44544b40c2be737dde3b7 Comments
swscale/cms: remove no-op const from return type Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libswscale/cms.c
Change #278008
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9d9b347de7a37153bfb39de05ec4261e1d6d1ada Comments
fftools,tools: drop stray semicolons after macro-defined functions Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- fftools/ffmpeg_filter.c
- fftools/ffmpeg_opt.c
- tools/crypto_bench.c
Change #278009
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e7b9c5fe779ad0497881d466d0c3692c619300e3 Comments
avformat/wvdec: convert flags to defines Don't use values that would extend emum data size. Fixes: warning: enumerator value which exceeds the range of 'int' is a C23 extension (2147483648 is too large) Signed-off-by: Kacper Michajłow <kasper93@gmail.com>Changed files
- libavformat/wvdec.c
Change #278010
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision debd8528afe797d0061ce40df913f30bf2eb7b0b Comments
avcodec/wavpack: keep flags as unsigned value This is bitfield with flags, keep it as unsigned. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/wavpack.c
Change #278011
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d6e5dcbb47198a961bf0dffdbd96b1015b418bb6 Comments
avutil/hwcontext_vulkan: suppress -Wtype-limits warning When the optional instance extensions list is empty the unsigned loop bound folds to 0, making the comparison always false. No functional change. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_vulkan.c
Change #278012
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 12 Aug 2026 17:21:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 799cf2bc1658939432d3cd910c2e763541155e82 Comments
tools/sidxindex: fix const qualifier discard warning Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tools/sidxindex.c
Change #278021
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 20:05:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 645529cbd427b25cbdbe4b33b9a77509ff9399e0 Comments
avcodec/mips/hevcdsp: declare the biweight functions with the offset they take
Changed files
- libavcodec/mips/hevcdsp_mips.h
Change #278022
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 20:05:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0a6145a344c11156f09b67b92654fcafd0b9e42c Comments
avcodec/huffyuv: seed the median predictor endian independently
Changed files
- libavcodec/huffyuv.h
- libavcodec/huffyuvdec.c
- libavcodec/huffyuvenc.c
Change #278023
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 12 Aug 2026 20:05:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4be657ffd84f6dcaf622a8ce04418a6b71bab2b3 Comments
avcodec/ppc/vp8dsp: store the 16 pixel wide rows at any alignment
Changed files
- libavcodec/ppc/vp8dsp_altivec.c
- libavutil/ppc/util_altivec.h
Change #278024
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Wed 12 Aug 2026 20:05:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 445cba7f4c9161a0c237d70cb986d7892abbc58c Comments
forgejo/workflows: add cross fate tests for ppc64/mips64/riscv64 And a full-dependency linux-aarch64 one.
Changed files
- .forgejo/workflows/test.yml
Change #278042
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 13 Aug 2026 00:29:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b397eba2f0d3d86daf1098d0f27daffccc74fea5 Comments
avcodec/h264dsp: Use ptrdiff_t for stride in idct functions Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/aarch64/h264dsp_init_aarch64.c
- libavcodec/aarch64/h264idct_neon.S
- libavcodec/arm/h264dsp_init_arm.c
- libavcodec/h264_mb.c
- libavcodec/h264_mb_template.c
- libavcodec/h264addpx_template.c
- libavcodec/h264dsp.h
- libavcodec/h264idct.h
- libavcodec/h264idct_template.c
- libavcodec/loongarch/h264dsp_lasx.c
- libavcodec/loongarch/h264dsp_loongarch.h
- libavcodec/loongarch/h264idct.S
- libavcodec/loongarch/h264idct_loongarch.c
- libavcodec/mips/h264dsp_mips.h
- libavcodec/mips/h264dsp_mmi.c
- libavcodec/mips/h264idct_msa.c
- libavcodec/ppc/h264dsp.c
- libavcodec/riscv/h264dsp_init.c
- libavcodec/x86/h264_idct.asm
- libavcodec/x86/h264_idct_10bit.asm
- libavcodec/x86/h264dsp_init.c
- tests/checkasm/h264dsp.c
Change #278078
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 13 Aug 2026 13:17:30 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a53f3f861388da37ac5c02397a7eee11b71c3fad Comments
avcodec/svq1enc: Workaround GCC bug 102513 encode_blocks() in svq1enc.c triggers a bug in several versions of GCC: GCC tries to create eight clones of recursive functions to inline some parameters when it deems this worth it. Yet encode_blocks() only has a recursion depth of six and the last two clones contained out-of-bounds array accesses, triggering -Warray-bounds warnings. This has already caused problems in the past, see 894191e7e10520109db983032d1cd8d45c85af6d which disabled the creation of clones for GCC < 12; GCC 12 itself got better at not creating unnecessary clones and therefore was not targetted by this. Yet since GCC 16 (commit 3fd5a1e76bbf1bc031934a9d96f284a22a5f307f), it again fails at discarding unneeded clones and emits warnings again. This patch fixes this by simply telling the compiler the proper range via an av_assume(); this also allows to remove the old workaround for GCC 11. Furthermore, GCC 12-15 still produced insane output: Six clones for encode_block() and a general function without inlined parameters that is not referenced by anything. The av_assume() eliminates this function, too. Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/svq1enc.c
Change #278079
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 13 Aug 2026 13:17:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f49ed6235e13df957787dd062a1b270fbfa6642e Comments
avcodec/svq1enc: Fix shadowing Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/svq1enc.c
Change #278099
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:00:00 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bd68a6130495fe17bf33e0a9ddc053baae18c81f Comments
avutil/opt: allow passing a fake object to av_opt_set() The result will be a dry run of the process, where no value is set but all the checks are made. Useful for, as the AV_OPT_SEARCH_FAKE_OBJ flag states, run the relevant process without having to allocate the corresponding object. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavutil/opt.c
- libavutil/opt.h
Change #278100
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:03:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3776aadf4b12b82703eb01b3f4a1c0a2dd14e46d Comments
avcodec/encode: add a function to gracefully reconfigure an encoder In some cases there are compression and resource usage benefits from changing certain encoder values at runtime over of closing, freeing, allocating and initializing a whole new encoder. The most obvious case is rate control, quality settings, and so on. As such, this commit introduces a new function that attempts to reconfigure an opened encoder with a dictionary of options. Private options that can be changed are flagged with the runtime AVOption flag. Global options that can be changed, knowing that each encoder may support some but not others and as such can't be flagged in the global AVOptions struct, are signaled the same way through a new field in the FFCodecDefault struct. An encoder may provide a callback function that will be called for the reconfiguration process. Simple encoders that can work with only the AVOptions being reset and don't require any extra steps may just let the default function be called instead. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/APIchanges
- libavcodec/avcodec.h
- libavcodec/codec.h
- libavcodec/codec_internal.h
- libavcodec/encode.c
- libavcodec/encode.h
- libavcodec/version.h
Change #278101
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c13bf75fd320e8476a866993587f1b948c680eb3 Comments
avcodec/libx264: refactor encoder configuration functions Will be useful in the next commit. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libx264.c
Change #278102
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 791183015837f7415da03ef564afe5985b9b3c3f Comments
avcodec/libx264: add support for encoder reconfiguration Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libx264.c
Change #278103
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5fd1b8b1f63f34984ef485159473c2be101c046a Comments
avcodec/libaomenc: refactor encoder configuration functions Will be useful in the next commit. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libaomenc.c
Change #278104
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4f3b01a32d544bee608dfffd3693c735f3a2d062 Comments
avcodec/libaomenc: add support for encoder reconfiguration Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libaomenc.c
Change #278105
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a89f799bd8c9b52b5ba727aff5f9d02fd85d113 Comments
fftools/ffmpeg_filter: add AVOptions to OutputFilter Preparation work for the following commits. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_filter.c
Change #278106
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f241d7bbed6cc0d558008515728521867931b899 Comments
fftools/ffmpeg_enc: split off parts of enc_open() into a separate function Preparation work for the following commits. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_enc.c
Change #278107
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b14162c9d43262e35ed9462f8534ec5236300819 Comments
fftools/ffmpeg_enc: split off encoder flushing in encoder_thread() into a separate function Preparation work for the following commits. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg_enc.c
Change #278108
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7d905abec6ab565ac3afbaa7840ed278a330eab2 Comments
fftools/ffmpeg_enc: store a few more AVCodecContext fields in Encoder Preparation work for the following commits. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- fftools/ffmpeg.h
- fftools/ffmpeg_enc.c
- fftools/ffmpeg_mux_init.c
Change #278109
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 13 Aug 2026 16:04:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ca821e458aabe2fa211d9e94eac38cd69fe2ea09 Comments
fftools/ffmpeg: support reinitializing the encoder With this, an encoding process can change certain values that until now were settable during init only. A graceful reconfiguration will be attempted first, which depends on the capabilities of the underlying encoder. If that fails, a full encoder restart is performed instead. The reconfiguration parameters are passed as a list of target timestamp and key=value pairs to be applied at that point during encoding. Future improvements may also include targetting encoded frame number, and extending the command feature to also support passing encoder runtime arguments and not just filter runtime change arguments. Example: ffmpeg -i INPUT -reinit_opts:v:0 "pts=100000|crf=18,pts=200000|video_size=1280x720:crf=20" -crf 30 -c:v:0 libx264 OUTPUT Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/ffmpeg.texi
- fftools/ffmpeg.c
- fftools/ffmpeg.h
- fftools/ffmpeg_enc.c
- fftools/ffmpeg_filter.c
- fftools/ffmpeg_mux_init.c
- fftools/ffmpeg_opt.c
Change #278117
Category ffmpeg Changed by yuanhecai <yuanhecai@loongson.cn> Changed at Thu 13 Aug 2026 21:25:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8b4fad11acfc958dfde29fb0799d3ca1818bbbf7 Comments
swscale/loongarch: fix buffer underflow in yuv2plane1_8_lsx/lasx The old tail paths backed the source and destination pointers up by a full vector and then advanced them by the remainder. When no full vector had been processed, this placed dest before its allocation, followed by a full-vector store. Process tails forward with LSX and byte stores and use equivalent packed arithmetic so exactly dstW bytes are written. Fixes: #23558 Reported-by: sebastinas
Changed files
- libswscale/loongarch/output.S
Change #278119
Category ffmpeg Changed by Haochen Chen <haochenc@google.com> Changed at Thu 13 Aug 2026 22:46:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 87f6fa9d41e4a31faeabd355a9c2365c6bb9465f Comments
avcodec/bmp: fix misaligned read in 16-bit decoding Fixes a misaligned read in bmp_decode_frame when decoding 16-bit BMPs. The code was casting a potentially unaligned uint8_t pointer to uint16_t* and dereferencing it. This triggers a UBSAN trap (SIGILL / UD1) on environments configured to trap on undefined behavior. Replaced with AV_RL16 to perform safe unaligned reads. Signed-off-by: Haochen Chen <haochenc@google.com>
Changed files
- libavcodec/bmp.c
Change #278121
Category ffmpeg Changed by Daniel Verkamp <daniel@drv.nu> Changed at Fri 14 Aug 2026 00:05:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1d7b14f61d66fdf18f15204c613df9d65396c319 Comments
avformat/wavenc: Omit JUNK for non-seekable -rf64 auto The `-rf64 auto` option requires seeking in order to go back and convert the reserved header space into a ds64 chunk when switching from RIFF to RF64. If the output is not seekable, then it isn't possible to make use of the space reserved with the JUNK chunk, so it is more reasonable to just produce a regular RIFF with no JUNK chunk in this case, equivalent to the `-rf64 never` option. Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Changed files
- libavformat/wavenc.c
Change #278137
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 14 Aug 2026 10:41:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dab32dcc2129b80df7190cdfc1063b3940c711af Comments
avutil/slicethread: add return value to slicethread callbacks Several places in the code currently manually roll the return value saving. This small signature change allows slicethread.c to collect return values directly. Unlike the existing solutions which mostly rely on collecting the return values in an array, we can just use an atomic CAS to set the error iff no error has been set already. We need a slight bit of extra complication to avoid breaking the ABI, which requires keeping around the old names as deprecated aliases that just set up the appropriate wrappers. However, fortunately, the way I implemented the deprecated signatures allows callers to freely mix avpriv_slicethread_execute() and avpriv_slicethread_execute2(), even on contexts created with one or the other. It's worth pointing out that this commit just changes the signatures, but doesn't yet update the various to use the return value. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavcodec/pthread_slice.c
- libavfilter/pthread.c
- libavutil/slicethread.c
- libavutil/slicethread.h
- libswscale/cms.c
- libswscale/graph.c
- libswscale/swscale.c
- libswscale/swscale_internal.h
- libswscale/utils.c
Change #278138
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 14 Aug 2026 10:41:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 37083b3105acebcdfbd8b9e2046e971db5d108c2 Comments
swscale/utils: add ff_sws_thread_exec() helper Simplified API that wraps slicethread create/execute/free, with fallback for systems without threading support. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/swscale_internal.h
- libswscale/utils.c
Change #278139
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 14 Aug 2026 10:41:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 183c14e20e8049b34f140bd0f5b4a7e3b24433e8 Comments
swscale: simplify slice_ctx error propagation Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/swscale.c
- libswscale/swscale_internal.h
- libswscale/utils.c
Change #278140
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 14 Aug 2026 10:41:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0c7b5b2b5cdf34ec3805984e44cfc520771873ab Comments
swscale/ops: use slice threading for ff_sws_enum_op_lists() Enabled by the existing SwsContext.threads option. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/op_list_gen_template.c
Change #278141
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Fri 14 Aug 2026 10:41:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2f0848c9bb49dd08b259489d774c0da98558d891 Comments
swscale/uops: use threading to speed up macros generation 26.74s -> 4.18s on my laptop Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/uops_macros_gen.c
Change #278162
Category ffmpeg Changed by Araz Iusubov <Primeadvice@gmail.com> Changed at Fri 14 Aug 2026 13:55:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0d5b77341fa30728bb51b26619a4933e053329b8 Comments
avfilter/vf_vqe_amf: remove unsupported opencl engine type
Changed files
- libavfilter/vf_vqe_amf.c
Change #278166
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Fri 14 Aug 2026 14:02:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a0078c78262f9ad31e2fbaecc4e82b42ce636ac4 Comments
avcodec/h264_direct: move check before loading things
Changed files
- libavcodec/h264_direct.c
Change #278167
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Fri 14 Aug 2026 14:02:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ead437865214972624a047840c8e9b6660a2ec85 Comments
avcodec/h264_direct: await both fields of a colocated field pair When a frame coded picture uses a complementary field pair as its colocated picture, ff_h264_direct_ref_list_init() selects the field whose POC is closest to the current one and stores it in col_parity. The direct mode setup then remaps mb_xy to that parity and reads the colocated mb_type, motion_val and ref_index from it. await_reference_mb_row() waits on the field given by "ref_field_picture && ref_field", which is 1 for any such reference, since the pair is referenced as a frame and ref->reference is 3. Only the bottom field is therefore awaited, while the data is just as likely to be read from the top one. With frame threading the two fields are decoded by different threads, so the colocated data can be read while the field it belongs to is still being decoded, yielding stale motion vectors and a corrupt frame. await_references() already handles the same case correctly for motion compensation. Fixes sporadic failures of fate-h264-conformance-cabac_mot_picaff0_full, where display frame 14. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/h264_direct.c
Change #278173
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Fri 14 Aug 2026 14:44:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c48230eb86ff02246f6a14fa1475a0d9398363b4 Comments
avcodec/pthread_frame: sync decoded side data to all worker threads Previously only the first thread's context and the user-facing one had it, so frames decoded by the remaining worker threads were missing global side data whenever the per-frame state could not provide it, e.g. extradata-derived HDR metadata after avcodec_flush_buffers(). Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/pthread_frame.c
Change #278186
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Fri 14 Aug 2026 15:31:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 763c3356f115b5186e6d5ad102717fc972ff0399 Comments
avcodec/codec: rename encoder reconf codec cap It was commited only a day ago, and the new name is more accurate, so this change should be safe. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/APIchanges
- fftools/ffmpeg_enc.c
- libavcodec/avcodec.h
- libavcodec/codec.h
- libavcodec/encode.c
- libavcodec/libaomenc.c
- libavcodec/libx264.c
- libavcodec/version.h
Change #278188
Category ffmpeg Changed by Nicolas Gaullier <nicolas.gaullier@cji.paris> Changed at Fri 14 Aug 2026 15:39:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6092f060f431f587b3d619a36d9b9d5f963d8b57 Comments
avcodec/h264_parser: align field_order default with the decoder Use case: interlaced AVC Intra is typically missing the required information for proper tff detection. Currently, the decoder defaults to tff, but the parser defaults to progressive. ./ffmpeg -f lavfi -i testsrc=1920x1080 -codec libx264 -pix_fmt yuv422p10le \ -x264-params avcintra-class=100:tff=1 -frames 1 tff.h264 ./ffprobe tff.h264 -of flat -show_entries stream=field_order:frame=interlaced_frame,top_field_first Before: frames.frame.0.interlaced_frame=1 frames.frame.0.top_field_first=1 streams.stream.0.field_order="progressive" After: frames.frame.0.interlaced_frame=1 frames.frame.0.top_field_first=1 streams.stream.0.field_order="tt" Issue since field_order setting in 3f1a7ceb2c604deff. Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>Changed files
- libavcodec/h264_parser.c
Change #278206
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Fri 14 Aug 2026 18:26:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c9a585da5665433a1be14679683d7ff13fc6960d Comments
lavf: Add myself as maintainer for the id3v2 files
Changed files
- .forgejo/CODEOWNERS
- MAINTAINERS
Change #278226
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 18:28:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0f3e1bf4fe189e82d79125e5ce8d5f8746bc2c8e Comments
avcodec/tests/avcodec: Test reconf callback, flags Reviewed-by: James Almer <jamrial@gmail.com> Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/tests/avcodec.c
Change #278227
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 18:28:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision be3757f6e93e07c1d9322438a1d0ce7422427c35 Comments
avcodec/codec_internal: Put bsfs and reconf in a union Reduces sizeof(FFCodec) Reviewed-by: James Almer <jamrial@gmail.com> Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/codec_internal.h
- libavcodec/tests/avcodec.c
Change #278228
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 18:28:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d10125319d6ed26a57006ce8a28c43b9a8b56b23 Comments
avcodec/encode: Remove pointless opt.h inclusion Reviewed-by: James Almer <jamrial@gmail.com> Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/encode.h
Change #278229
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 14 Aug 2026 21:08:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 85d2cfd52e679cb4e0e240456f74e1955cf91d12 Comments
libswresample/tests/rematrix: uninit channel layouts release parsed channel layouts before exiting. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libswresample/tests/rematrix.c
Change #278230
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 14 Aug 2026 21:08:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d02bad0c903baf67891dbe6b87c6577d9a27c79f Comments
swresample/rematrix: accept unused channels custom layouts containing AV_CHAN_UNUSED were rejected by swr_build_matrix2(). accept unused channels in input and output layouts. preserve their physical positions, clear input columns, and leave output rows silent. add fate coverage for both cases. this fixes #24094. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libswresample/rematrix.c
- libswresample/swresample.h
- libswresample/tests/rematrix.c
- tests/fate/libswresample.mak
- tests/ref/fate/swr-rematrix-unused-input
- tests/ref/fate/swr-rematrix-unused-output
Change #278231
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Fri 14 Aug 2026 21:11:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c39bc13fdb492c3fec1bbdaf031bc41e250eedcf Comments
swresample/tests/rematrix: print rows in layout order Otherwise, custom layouts will be printed as if they were in native order. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libswresample/tests/rematrix.c
- tests/ref/fate/swr-rematrix-unused-output
Change #278239
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 07f632c7faa48d63c28e044a7dd1a7646f8fd095 Comments
avcodec/x86/{h264_chromamc,rv40dsp}: Don't use PAVGB macro It always just expands to pavgb as there are no pure mmx functions here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/x86/h264_chromamc.asm
- libavcodec/x86/rv40dsp.asm
Change #278240
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a6b2f0a911d3c4c6544901c41efa737f07c5d863 Comments
avutil/x86/x86util: Remove PAVGB macro It is no longer used anywhere and it would make no sense to ever use it again. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278241
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision df547d9267303101a0232cd8d6f82b9f92ded877 Comments
avutil/x86/x86util: Remove unused PSWAPD Unused since ec735579814b6b73e17da601ff011a918c49e40f. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278242
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 046e2bcc2f9772c738dd60b0aef07e4b8e57b546 Comments
avutil/x86/x86util: Remove ABSB{,2} macros Seem to have always been unused. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavutil/x86/x86util.asm
Change #278243
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 99d378fd0d0d198c1ae8075405a6d5266895a238 Comments
avutil/x86/x86util: Remove ABSD2 macro Always unused, new code can just use SSSE3 pabsd directly. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278244
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7452eccc083a847e9703d03ac0407190d77fb248 Comments
swscale/x86/rgb_2_rgb: Remove useless macro x86inc's VEX emulation can handle this just fine. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswscale/x86/rgb_2_rgb.asm
Change #278245
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision be1c5c065a4b96f5e5ecd009ab895e0cf6d16c3f Comments
av*/x86/yadif,lossless-videodsp: Don't use LSHIFT, RSHIFT macros There is no mmx code in these files. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/lossless_videodsp.asm
- libavfilter/x86/vf_yadif.asm
- libavfilter/x86/yadif-10.asm
- libavfilter/x86/yadif-16.asm
Change #278246
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9a62712427b75ac56dfd9069f13c037b13143d15 Comments
avutil/x86/x86util: Remove unused LSHIFT, RSHIFT macros Useless in the absence of mmx. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278247
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d2495911cce6b2cd0867ceaf617d87f6ab645f4a Comments
avcodec/x86/ac3dsp: Avoid using PMINUB macro Forgotten in fd98594a8831ce037a495b6d7e090bd8f81e83a1. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/ac3dsp.asm
Change #278248
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 145ec527df728bb877e59832b3e2da79e74f868b Comments
avutil/x86/x86util: Remove unused PMINUB macro Useless in the absence of mmx. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278249
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3956f2ffe3f239c24bfe29a0463512d96bca2b3d Comments
av*/x86/resample,h264_intrapred: Avoid using PSHUFLW It is useless in the absence of mmx. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_intrapred.asm
- libswresample/x86/resample.asm
Change #278250
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7c1326b16c5cf4f89d9d64b838f7d9dfd53cafd Comments
avutil/x86/x86util: Remove PSHUFLW macro Useless in the absence of mmx(ext). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavutil/x86/x86util.asm
Change #278251
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 736550dc9bf4abdc13b6a1dfdc5992d7b183ab42 Comments
avutil/x86/x86util: Move broken PSIGNW macro to its only user The non-SSSE3 version does not do what psignw does: If the second operand is zero, the first is unchanged. In any case, the end result is '(%1 and not %2)-(%2 and not %1)'. So it only works in case %2 is -1, which is how vp9itxfm.asm actually uses it. So move it there and rename it to NEGATE. See also f2fd167835b6f039a593e46ab3a84e1b9a453660 for an instance when this macro actually caused problems. (Would pxor %2,%2 psubw %2,%1 SWAP %1,%2 not actually be better?) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9itxfm.asm
- libavutil/x86/x86util.asm
Change #278252
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Fri 14 Aug 2026 21:21:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 950a96bd258b8251a516ed7bffda127fee299945 Comments
avcodec/x86/vp9itxfm: Avoid load Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp9itxfm.asm
Change #278255
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Sat 15 Aug 2026 02:43:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cb98f5c3dfa1ee64c8ede81346b012a5c7562c99 Comments
avcodec/x86/hevc/add_res: Replace MMX with SSE2 Convert hevc_add_residual_4_10 to use SSE2 and remove declare_func_emms in test code. hevc_add_res_4x4_10_c: 21.7 hevc_add_res_4x4_10_mmxext: 9.4 ( 2.31x) hevc_add_res_4x4_10_sse2: 9.2 ( 2.35x) Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/hevc/add_res.asm
- libavcodec/x86/hevc/dsp.h
- libavcodec/x86/hevc/dsp_init.c
- tests/checkasm/hevc_add_res.c
Change #278256
Category ffmpeg Changed by Marcos Ashton Iglesias <marcosashiglesias@gmail.com> Changed at Sat 15 Aug 2026 03:08:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bc4cbbb85f16ff6eadd6548bafa0d6a1da0c0d06 Comments
avutil/hdr_dynamic_metadata: fix from_t35 NULL return and version doc av_dynamic_hdr_plus_from_t35() returned AVERROR(ENOMEM) when passed a NULL AVDynamicHDRPlus. A NULL output struct is invalid API usage by the caller, not an allocation failure, and nothing is allocated on that path. av_dynamic_hdr_smpte2094_app5_from_t35() already returns AVERROR(EINVAL) for the same condition; make the two parsers agree. The documentation for AVDynamicHDRPlus.application_version said the value shall be set to 0, which contradicts both sides of the implementation: av_dynamic_hdr_plus_to_t35() ignores the field and always writes 1, the value CTA-861-H specifies for the HDR10+ payload, and av_dynamic_hdr_plus_from_t35() sets the field from the parsed payload rather than validating it against 0. No FFmpeg code assigns this field, so document the contract the implementation provides. Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>
Changed files
- libavutil/hdr_dynamic_metadata.c
- libavutil/hdr_dynamic_metadata.h
Change #278262
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 10:14:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ef76da316d7a90bac3c8db92389aa59e9c864cfe Comments
avformat/whip: Avoid calling strlen multiple times Also avoid zeroing the buffer unnecessarily, ff_data_to_hex() also initialized it (including the terminating \0). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/whip.c
Change #278263
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 10:14:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 44095007d00f908dbdeaadaccc50d7bdeff36a37 Comments
avformat/whip: Avoid allocation Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/whip.c
Change #278269
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:02:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a072b4961ac36fae1d4a62432d154f6616add68 Comments
vulkan_encode: do not carry source picture access flags into the barrier The source picture is written on other queues, whose access flags are meaningless on the encode queue: ALL_COMMANDS expands to only the stages the queue supports, none of which support e.g. TRANSFER_WRITE, making the barrier invalid (VUID 03915). The semaphore wait already made those writes available; use no source access, as decoding does.
Changed files
- libavcodec/vulkan_encode.c
Change #278270
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:02:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision db481362ed37dd44e85faf464c7f9da884644258 Comments
vulkan_video: map the plain H264 baseline profile to a Vulkan profile The encoder maps the SPS profile_idc, which has the constraint set flags stripped, giving session parameters an invalid profile enum for constrained baseline.
Changed files
- libavcodec/vulkan_video.c
Change #278271
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:02:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 173eb83c152186dabbc136764b7de1d3003b4c77 Comments
vulkan_encode_h264: signal High profile syntax only where the profile permits it The capability flags only mean the implementation supports the syntax: baseline and main profiles prohibit the PPS extension and scaling matrices, and setting them on drivers advertising support made CBS reject the headers, as transform_8x8_mode_flag must match its inferred value. Fixes #21022.
Changed files
- libavcodec/vulkan_encode_h264.c
Change #278272
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:02:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c4b4a9c0ea46adaef2f046e1bbe888e4a5f188d4 Comments
vulkan_encode_h264: disable B-frames for baseline profiles Baseline only permits I and P slices, yet streams declaring constraint_set1_flag contained B-slices.
Changed files
- libavcodec/vulkan_encode_h264.c
Change #278273
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:02:17 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e2c335ab5c81bad21a641979feaaafae8c894d16 Comments
vulkan_encode_h264: fix the high444p profile value It was set to High 10, which no Vulkan profile enum maps to, breaking both the option and >8bpc profile probing.
Changed files
- libavcodec/vulkan_encode_h264.c
Change #278295
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:34:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8fc0de2e5b88dbad1d8ec1be6474729fc0542b26 Comments
vulkan_h264: move the session parameter structures off the stack Nearly 160KiB, which overflows musl's default 128KiB thread stack on its own. Fixes #22342.
Changed files
- libavcodec/vulkan_h264.c
Change #278296
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Sat 15 Aug 2026 11:34:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b16b5f2a01f3c4f8c9a7769d7a35e8b193946d3e Comments
vulkan_hevc: move the inline session parameter structures off the stack 123KiB, dominated by the 1024-entry HRD parameters array in HEVCHeaderVPS; together with anything below it, this overflows musl's default 128KiB thread stack. Reuse the persistent header buffer, which the non-inline path never uses at the same time. This also lifts the artificial vps_num_hrd_parameters limit the fixed-size array imposed. Fixes #22342.
Changed files
- libavcodec/vulkan_hevc.c
Change #278301
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Sat 15 Aug 2026 15:00:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision db632174910e88a08f16ef668c236de9c077a297 Comments
fate/mov: skip cover-art re-encode test without mjpeg decoder and scale filter
Changed files
- tests/fate/mov.mak
Change #278305
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Sat 15 Aug 2026 15:10:36 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6fa1295f4f9b3704847728f4f389ed968cf216c5 Comments
tests/fate/filter-video: add aresample dependency to ebur128-height test Fixes: fc02470c62a71a8fa431f3e424bc8049fec8d90a Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- tests/fate/filter-video.mak
Change #278314
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 18:51:18 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision df86c5ef3a5524b92c4083473bf816f7df8a1df4 Comments
swresample/tests/swresample: Avoid av_assert2, remove ASSERT_LEVEL override Said #define ASSERT_LEVEL 2 was ineffective because it followed the inclusion of avassert.h. It only leads to warnings when ASSERT_LEVEL is defined to something other than 2 (it is not defined by default). Also avoid using av_assert2() in a test tool: These are supposed to be picky, so using always-enabled av_assert0 is appropriate. This was probably the intention of the ASSERT_LEVEL override all along. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libswresample/tests/swresample.c
Change #278329
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 22:40:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a2b7272b4a76089ceb69b5792e2766283e473d36 Comments
avcodec/mips/hevc_mc_biw_msa: Fix offsets parameter Broken in baad19d0b5840f637e95ba4b87d73e58637ec702. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/mips/hevc_mc_biw_msa.c
Change #278330
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 22:40:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 124e8393e5b80ab294170d02e8e559c20a4a8832 Comments
avcodec/mips/mpegvideo_{mmi,msa}: Use correct scantable This only worked because raster_end derived from the WMV1/2 intra scantable (i.e. derived from ff_wmv1_scantable[1]) is <= raster_end derived from the WMV1/2 inter scantable (i.e. derived from ff_wmv1_scantable[0]). But it broke the checkasm test. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>Changed files
- libavcodec/mips/mpegvideo_mmi.c
- libavcodec/mips/mpegvideo_msa.c
Change #278331
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 22:40:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d5b8439bdd968f3bea5f973ecb4d51b4325ee364 Comments
avcodec/mips/hevcpred_msa: Fix compilation Broken in ba56a300a94bdf5520ac1324a8e7fbaeea430904, ba56a300a94bdf5520ac1324a8e7fbaeea430904 and again in 38b8ae4112684c3415ab2f7d717605759d764d27. This means that no has compiled git master on mips since 2024-06-04. And no one complained. Hint: One still needs to pass -flax-vector-conversions here in order to compile this file. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/mips/hevcpred_msa.c
Change #278332
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sat 15 Aug 2026 22:40:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0056dd32fd94e739e14bb3c463c68ebe806dfd1d Comments
avcodec/mips/vc1dsp_msa: Fix mspel functions The VC-1 mc prediction for combined horizontal and vertical offset involves first a vertical 4-tap filter, followed by shifting, followed by a horizontal 4-tap filter, followed by shifting by 7. Both passes involve negative coefficients and therefore the intermediate values for the >> 7 can exceed the range of 0..255*128 a bit in both directions. Therefore one can not simply use either a logical or an arithmetic right shift. But one can use them after having added a certain bias to ensure that one is in the proper range. This is what this commit does. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/mips/vc1dsp_msa.c
Change #278372
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 16 Aug 2026 18:35:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3a8e4fc8062c1065594e7914875da4cea113b295 Comments
avcodec/h264qpel: Deduplicate >8 bit fpel functions Saves 18760B of .text here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/h264qpel.c
- libavcodec/h264qpel_template.c
- libavcodec/snow.c
Change #278378
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 16 Aug 2026 19:20:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 74705b3970cbc277e9366d82ee32d7c3a0a9e3b3 Comments
tests/checkasm/Makefile: Don't build empty files Empty translation units are actually invalid C that compilers happen to accept (but warn about when using -pedantic). In any case, they are unnecessary, so don't build them. Reviewed-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/Makefile
Change #278396
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Mon 17 Aug 2026 01:10:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a48e31e501b950babcf7a47498ecf9e4e16cd7de Comments
avcodec/x86/pngdsp.asm: replace MMX with SSE2 No more use of mm registers and emms. Performance identical. Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/pngdsp.asm
Change #278402
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 888430127108501f6408df14b0d4c4e04fb9afe4 Comments
vulkan: enable maintenance9 when supported Enables VK_KHR_maintenance9 when available. The feature of interest is that queue family ownership transfers become optional for resources created with exclusive sharing mode, with their contents preserved when accessed by another queue family. For optimal-tiling images, this is only guaranteed between queue families flagged in VkQueueFamilyOwnershipTransferPropertiesKHR, so query it for each queue family alongside the other properties.
Changed files
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
- libavutil/vulkan_functions.h
- libavutil/vulkan_loader.h
Change #278403
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d0d7d813178fec964716aa2c48f5896ce5c26284 Comments
vulkan: de-phase queue rotation and pin video pools to a single queue All pools rotated through a family's queues in lockstep from index 0, colliding on the same queue at the same time. Give each pool a phase from a per-family, per-library counter: video pools are pinned to the queue it selects, as sessions order their execution anyway, while all other pools rotate starting from it. On e.g. Intel, a transcode now runs decode and encode on separate engines of the shared video family. The counters are seeded once with a random value, so that separate processes, and separate copies of this code within one process, de-phase statistically on drivers with a fixed queue-to-engine mapping. Also assigns ffv1enc's per-context index once, at init.
Changed files
- libavcodec/ffv1enc_vulkan.c
- libavutil/vulkan.c
Change #278404
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1c83c513f3cd3705f9001edcad57dd1b8fceb6a Comments
vulkan: carry the execution context's busy state in a timeline semaphore An execution abandoned on error between start and submission left the ownership mutex locked forever, deadlocking the context's next reuse. Replace the submission fence with a timeline semaphore: ff_vk_exec_start() claims the context by incrementing the awaited value, the submission signals it, and the mutex only briefly guards the dependency lists. Abandonment becomes ff_vk_exec_discard(), called exactly once on a started, unsubmitted context: it frees the dependencies, drops the recording, and un-claims by signalling from the host - which a fence cannot do. ff_vk_exec_submit() cleans up after its own failures; error paths which leaked the claim now discard, and ff_vk_exec_start() failures are checked everywhere.
Changed files
- libavcodec/apv_encode_vulkan.c
- libavcodec/ffv1enc_vulkan.c
- libavcodec/proresenc_kostya_vulkan.c
- libavcodec/vulkan_apv.c
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_dpx.c
- libavcodec/vulkan_encode.c
- libavcodec/vulkan_ffv1.c
- libavcodec/vulkan_prores.c
- libavcodec/vulkan_prores_raw.c
- libavfilter/vf_blackdetect_vulkan.c
- libavfilter/vf_nlmeans_vulkan.c
- libavfilter/vf_scdet_vulkan.c
- libavfilter/vulkan_filter.c
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
- libavutil/vulkan_functions.h
Change #278405
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 62ad3dd732ac03681dcaaaecce8d4c076d144ec7 Comments
vulkan: add an internal image allocation helper Creates single standalone images for internal use: exclusive sharing with no queue family ownership transfers, and dedicated memory when the driver prefers it.
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #278406
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ccb51e6bf062d7138650209bcce47e789af7a1ed Comments
hw_base_encode: allow allocating reconstruction frames via a callback APIs which do not use a frames context for reconstruction images can provide them through it instead of recon_frames_ref.
Changed files
- libavcodec/hw_base_encode.c
- libavcodec/hw_base_encode.h
Change #278407
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b3ee8c8920b13160faf66a1bccaa2691477e7c6a Comments
vulkan_video: allocate DPB images internally, outside of any frame machinery DISTINCT-mode references and encoder reconstruction images are never user-visible and only ever accessed by a single queue, yet were allocated through a full AVHWFramesContext: CONCURRENT-shared images (disabling compression on several drivers), plus an unused frames context with its own execution pools, per codec instance. Pool them internally as plain {image, memory, view, layout} entries: one video-stage memory barrier per submission orders all prior work, so they need no semaphores or dependencies, views are created once, and freeing a DISTINCT-mode picture no longer waits on the host. COINCIDE-mode outputs remain ordinary frames.Changed files
- libavcodec/vulkan_decode.c
- libavcodec/vulkan_decode.h
- libavcodec/vulkan_encode.c
- libavcodec/vulkan_video.c
- libavcodec/vulkan_video.h
Change #278408
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b7e8611b2a6a035ca79afd2818962518126265da Comments
vulkan: enable unified image layouts when supported Enables VK_KHR_unified_image_layouts when available, and queries its feature bits into FFVulkanContext. The extension guarantees that using the GENERAL image layout comes with no performance penalty, with the unifiedImageLayoutsVideo feature extending this to video usage.
Changed files
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan.c
- libavutil/vulkan.h
- libavutil/vulkan_functions.h
- libavutil/vulkan_loader.h
Change #278409
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d06e3815342882ee88492a734a84d1bd532db221 Comments
vulkan_decode: fix operator precedence in the COINCIDE-only sanity check == binds tighter than &, so the mask expression evaluated to flags & ((A|B) == A), which is always zero, and the check for drivers signalling COINCIDE without separate reference images never fired.
Changed files
- libavcodec/vulkan_decode.c
Change #278410
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 17 Aug 2026 07:57:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b02fa6b7cdbbcf1ca14ad15b25c6fffb55bb1b8d Comments
vulkan_decode: prefer DISTINCT-mode references when a driver offers both When both DPB modes are supported, the choice is up to the application. COINCIDE was picked, but it forces DPB usage onto every user-visible output image, costing compression on several drivers, and keeps references alive as full frames. With references pooled internally as queue-exclusive, single-usage images, DISTINCT is the better default.
Changed files
- libavcodec/vulkan_decode.c
Change #278419
Category ffmpeg Changed by Tymur Boiko <tboiko@nvidia.com> Changed at Mon 17 Aug 2026 08:48:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 426841da9d9167781007e4238583a7c0da5f04c4 Comments
avcodec/vulkan_encode: speed up hevc_vulkan with encode optimizations Without ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS and with min CU forced to 8x8, hevc_vulkan keeps a much heavier encode config at common quality levels than h264_vulkan (16x16 macroblocks, no min-CU SPS field). Set the session flag and use min CU 16x16 when CTB >= 32; also fix max_transform_hierarchy_depth_inter assignment. When applying GetEncoded SPS feedback, sync overridden fields together (extent/conf_win, min/diff CU and TB sizes, transform hierarchy). Copying only log2_diff left CtbLog2SizeY=7 and undecodable HEVC after some implementations rewrote min CU. Reporter cmd (1080p testsrc2, quality 1, 1000 frames): before: hevc ~200–317 fps vs higher h264 after: hevc 289/325/358 fps, h264 288/317/359 fps (parity)
Changed files
- libavcodec/vulkan_encode.c
- libavcodec/vulkan_encode_h265.c
Change #278481
Category ffmpeg Changed by Zhao Zhili <zhilizhao@tencent.com> Changed at Mon 17 Aug 2026 15:52:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8a159afa9855cdd77897c10507fe96c18f3c6485 Comments
avutil/tests/hwcontext_cuda: stop leaking frames contexts av_hwframe_get_buffer() requires an empty frame and attaches the frames context reference itself. The test pre-set frame->hw_frames_ctx, so the plain assignment in av_hwframe_get_buffer() overwrote the field without unref-ing the pre-set reference.
Changed files
- libavutil/tests/hwcontext_cuda.c
Change #278482
Category ffmpeg Changed by Dmitrii Gershenkop <bortengineer@protonmail.com> Changed at Mon 17 Aug 2026 16:09:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 96f93ece11f47eb5b7677618caeb858e275ae3c4 Comments
avutil/hwcontext_amf: Fix double init for derived devices. Right after device_derive, FFmpeg also calls device_init. And in device_init (amf_device_init), the fact that AMF might be already initialized with, for example, Vulkan, is ignored and gets initialized again with DX11.
Changed files
- libavutil/hwcontext_amf.c
- libavutil/hwcontext_amf.h
Change #278489
Category ffmpeg Changed by Hawthorn <rv.help23@gmail.com> Changed at Mon 17 Aug 2026 16:41:27 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 745680c2d2fce7a87b4fe861d2b1fc2534349ae7 Comments
avformat/mov: bound iloc/iinf item counts by the box size mov_read_iloc() and mov_read_iinf() read a 16- or 32-bit item/entry count from the file and pass it straight to av_realloc_array() with no limit, so a small box can drive a multi-gigabyte allocation before the read loop hits EOF. Reject counts larger than the remaining box size, matching the existing sgpd bound. Signed-off-by: Hawthorn <rv.help23@gmail.com>
Changed files
- libavformat/mov.c
Change #278490
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 17 Aug 2026 17:23:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cc50be6d0dd0b1fd518b5f12d44a8f163ddafdf1 Comments
avutil/hwcontext_vulkan: probe host image transfer support before enabling Drivers may expose the host image transfer format feature, yet reject the final image parameter combination, or provide no memory type from which such an image can be allocated. Notably video decode/encode images are often not possible to allocate from host visible memory type. Validate the final image parameters, including DRM format modifiers, and keep the usage flag only when it is actually usable. Fixes: #21704 Co-authored-by: llyyr <llyyr.public@gmail.com> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_vulkan.c
- libavutil/vulkan_functions.h
Change #278491
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 17 Aug 2026 17:23:43 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4ec050211a285e710a2bd3b539d3434ebed3f71a Comments
avutil/hwcontext_vulkan: drop NVIDIA/MoltenVK host transfer blocklist Now that we correctly test if images are valid for host transfer, we can drop the hardcoded blocklist. The MoltenVK issue has been fixed upstream [1]. The NVIDIA issue has no upstream tracking reference, and current drivers show no problems with host image copy in libplacebo, which uses it in the same way. [1] https://github.com/KhronosGroup/MoltenVK/issues/2618 Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/hwcontext_vulkan.c
Change #278501
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 17 Aug 2026 18:43:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 43284b61a39a7d35633ebbc637db50ff4e97c57e Comments
Revert "fftools/ffmpeg_sched: allow throttling decoder outputs" This reverts commit 03dfac563018e6e8b81e331ebae0732d8edfe754. Said commit led to numerous regressions, namely: a) It can lead to wrong output interleavement (issue #23731 and (presumably) #24162). b) It can lead to streams stopping prematurely (issue #24008 and (presumably) #23988 and #24135). c) It can lead to extreme memory usage even when the input files are fine, especially mkvmerge files (see issue #24168). Reviewed-by: Niklas Haas <ffmpeg@haasn.dev> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- fftools/ffmpeg_sched.c
Change #278502
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Mon 17 Aug 2026 19:49:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8b003c660fa5f29789acb85827efd31524ee4fd3 Comments
avcodec/libdav1d: fix leak of frames on failure Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libdav1d.c
Change #278519
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 17 Aug 2026 21:06:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1d860a00de25191666b16cdff0517b2bccb6f6f Comments
avformat/tests/movenc: Convert to API test tool This is possible because it only uses the public API; and beneficial when using shared builds (as not all the internals of lavf are linked statically in the binary). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/Makefile
- libavformat/tests/.gitignore
- libavformat/tests/movenc.c
- tests/api/Makefile
- tests/api/api-movenc-test.c
- tests/fate/api.mak
- tests/fate/libavformat.mak
- tests/ref/fate/api-movenc
- tests/ref/fate/movenc
Change #278521
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Tue 18 Aug 2026 00:21:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e4be207d8293f30b1d97bcd00f7cc68f97658231 Comments
Add missing .gitignore.
Changed files
- libavformat/tests/.gitignore
- libswresample/tests/.gitignore
- libswscale/.gitignore
Change #278528
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Tue 18 Aug 2026 01:41:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3dddcc3282366b340fdf5de7a6cfd6b1ea153272 Comments
avformat/hashenc: extend output of streamhash muxer Add the same features as the framehash muxer. This makes it much more useful as it prints important information that some tests may need where framehash is not an option given it prints too many lines (e.g., samples with tons of frames where timestamps or packet flags are irrelevant, and just a single hash is enough). Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/hashenc.c
- tests/fate/dca.mak
- tests/ref/fate/dca-xll
- tests/ref/fate/dca-xll-coded
- tests/ref/fate/dca-xll_51_24_48_768-dmix_2_matrix
- tests/ref/fate/filter-channelsplit
Change #278532
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 18 Aug 2026 06:22:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aac66834c230c5a6f0f448dcdc7af879ea4b8da5 Comments
ffv1enc_vulkan: use unaligned bitstream writes in the Golomb shader The issue is that golomb code writes start after the slice header, which means they're not guaranteed to be aligned.
Changed files
- libavcodec/vulkan/ffv1_enc.comp.glsl
Change #278533
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 18 Aug 2026 06:22:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 92f292807e9194b32175c416fc2ec8727797c1d1 Comments
vulkan: properly align the GET_BITS_SMEM cache refills The issue is that init_get_bits is not guaranteed to be called with an aligned address, so LOAD64 tried to align the offset for SMEM loading, but only aligned to a 4-byte alignment, whilst FILL_SMEM requires 16 byte alignment. Fix it by just loading with FILL_SMEM from an aligned position, then throwing away the padding data at the start.
Changed files
- libavcodec/vulkan/common.glsl
Change #278534
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 18 Aug 2026 06:58:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 208a950c275d34a1eca1fe5b34e687a52da78787 Comments
vulkan/ffv1: stop decoding the extra RGB bit on 4.8+ streams 4.8 dropped the extra coded bit on the primary and alpha planes of RCT slices, but the integer path of get_slice_bits() hardcoded the old widths, garbling every software-encoded v4 RGB stream. The Vulkan encoder writes 4.3 and was unaffected.
Changed files
- libavcodec/vulkan/ffv1_common.glsl
Change #278535
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 18 Aug 2026 06:58:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7ebeb2bec722c1d6686d2742980c075a72c1db8 Comments
vulkan/ffv1: decode the extra Bayer gm bit on pre-4.8 streams Mirror of the RGB fix: the hardcoded gm width matched 4.8+ only, garbling valid 4.3..4.7 Bayer streams. FFmpeg's encoders always stamp Bayer with 4.10, so only external streams were affected.
Changed files
- libavcodec/vulkan/ffv1_dec.comp.glsl
Change #278539
Category ffmpeg Changed by jiangjie <jiangjie@agora.io> Changed at Tue 18 Aug 2026 09:01:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 89153eb701d372f54a5d7d29de5067abc09e11d3 Comments
avformat/http: free cookie parameters on parse failure Fixes issue #24172
Changed files
- libavformat/http.c
Change #278602
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 18 Aug 2026 11:51:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 515a1a4eb082f7fd5ff8e054158470e5b504fc3d Comments
tests/checkasm/vp8dsp: Don't use declare_func_emms unnecessarily Possible since b9161b93b5c88bd2f6f110bb527336af9a4c0cae. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/checkasm/vp8dsp.c
Change #278603
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 18 Aug 2026 11:51:33 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4ca56d0f90d0a80ff3e1b1dcff78013e63c26287 Comments
avcodec/x86/vp8dsp: Port ff_vp8_luma_dc_wht_sse to xmm regs Some parts of it benefit from wider registers: vp8_luma_dc_wht_c: 22.7 vp8_luma_dc_wht_sse: 14.7 ( 1.55x) vp8_luma_dc_wht_sse2: 13.2 ( 1.73x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vp8dsp.asm
- libavcodec/x86/vp8dsp_init.c
- tests/checkasm/vp8dsp.c
Change #278616
Category ffmpeg Changed by jiangjie <jiangjie@agora.io> Changed at Tue 18 Aug 2026 13:06:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ade01193a1a7f77de0f466067e9961871c8e0e8a Comments
avformat/dashenc: free http options on avio_open_dyn_buf failure Fixes #24171
Changed files
- libavformat/dashenc.c
Change #278633
Category ffmpeg Changed by jiangjie <jiangjie@agora.io> Changed at Tue 18 Aug 2026 15:55:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 21bbd98e7b05542e9be5661a8532d2513af8c22c Comments
avfilter/blend: clip expression output to pixel depth Clip integer expression results in the double domain before storing them. This keeps high-bit-depth samples within their declared range and gives NaN and infinities defined behavior while preserving float formats. Fixes issue #24121.
Changed files
- libavfilter/blend.h
- libavfilter/vf_blend.c
- tests/fate/filter-video.mak
- tests/ref/fate/filter-blend-expr-clipping
Change #278638
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 18 Aug 2026 19:14:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 712a8f9e84038a3e10015de78fb513f650bb7aec Comments
lavu/vulkan: properly set the required subgroup size for loaded shaders This was forgotten/left out somehow.
Changed files
- libavutil/vulkan.c
Change #278650
Category ffmpeg Changed by unfunnyatearug <yalisib2222@gmail.com> Changed at Tue 18 Aug 2026 20:56:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 29f513af7833499ddff3f2443609356eacfdd665 Comments
avformat/fsb: reject truncated thp coefficient extradata the fsb demuxer used `avio_read(..., 32)` for each channel but ignored the return value. `ff_alloc_extradata()` only clears the padding area. if the input file is truncated, the remaining extradata can therefore contain uninitialized memory. `nb_channels` is a 16-bit value and was only limited by the `int_max / 32` calculation. this allows a truncated file to cause a leak of up to ~2 MB of uninitialized memory. the affected extradata is used by the `adpcm_thp` decoder and can also be copied to the output during remuxing. the fix replaces the unchecked reads with `ffio_read_size()`, which reports an error when the requested amount of data cannot be read. both the thp v3 and v4 paths are fixed. Signed-off-by: unfunnyatearug <yalisib2222@gmail.com>
Changed files
- libavformat/fsb.c
Change #278651
Category ffmpeg Changed by unfunnyatearug <yalisib2222@gmail.com> Changed at Tue 18 Aug 2026 20:56:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4b47405e1c251405bfa5196e79aa395c59ad2323 Comments
avformat/genh: check thp extradata read and allocation the genh demuxer had the same short-read issue at one location. the read is now performed with `ffio_read_size()` so truncated input is rejected instead of leaving uninitialized data in the extradata. `ff_alloc_extradata()` also had its return value unchecked. if allocation failed, the code could dereference a null pointer. the return value is now checked. the affected path is capped at two channels, so the potential information leak is relatively small, but it is the same underlying bug class. Signed-off-by: unfunnyatearug <yalisib2222@gmail.com>
Changed files
- libavformat/genh.c
Change #278660
Category ffmpeg Changed by Vignesh Venkat <vigneshv@google.com> Changed at Wed 19 Aug 2026 00:26:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d998016f921cd7a909cd64296c39a981722b1be2 Comments
avformat/mov: Support rndr track reference type This is similar to `cdsc` but intended for rendering metadata. From a demuxer's point of view both of them are essentially the same. Added in the draft spec here: https://www.mpeg.org/standards/MPEG-4/12/ Link to the newly added fate sample: https://drive.google.com/file/d/1qfRALYT6ZCcijKEAkrWWjIDq_E2dm3Ix/view?usp=drive_link Signed-off-by: Vignesh Venkat <vigneshv@google.com>
Changed files
- libavformat/mov.c
- tests/fate/mov.mak
- tests/ref/fate/mov-t35-cdsc-track
- tests/ref/fate/mov-t35-rndr-track
Change #278661
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Wed 19 Aug 2026 03:54:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 564f92cce23ae95399476617b8a1dc357f002a47 Comments
avcodec/ac3dec_fixed: preserve overlap across dependent substreams ac-3 cores and dependent e-ac-3 substreams may use different coefficient scales while owning separate delay slots. the global reset added in 5ba2a2c841 cleared both sets of slots on every substream switch, corrupting the mdct overlap of valid 7.1 streams. track the scale per substream and clear only its own delay slots when it changes. add a fate test using the existing the_great_wall sample. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavcodec/ac3dec.c
- libavcodec/ac3dec.h
- tests/fate/ac3.mak
Change #278680
Category ffmpeg Changed by Dmitrii Gershenkop <bortengineer@protonmail.com> Changed at Wed 19 Aug 2026 10:52:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cb2370e546bb4c51b2a0f914f06d4698ae3ab1aa Comments
avfilter/vf_{vpp,sr,vqe}_amf: Enforce memory typeChanged files
- libavfilter/vf_sr_amf.c
- libavfilter/vf_vpp_amf.c
- libavfilter/vf_vqe_amf.c
- libavutil/hwcontext_amf.c
Change #278704
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 19 Aug 2026 14:25:40 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3bdd895832244780c250713e49135615ac4de003 Comments
avcodec/lcevcdec: use a counter as timestamp instead of frame pts If the source is an elementary stream, PTS may be unset and thus liblcevc-dec will not be able to match nor order input raw pictures and enhancement payloads. Given lcevc_process() is called from the main thread in presentation order, a simple counter will suffice. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/lcevcdec.c
- libavcodec/lcevcdec.h
Change #278721
Category ffmpeg Changed by Ayoub Nabil <237098474+ayoubnabil@users.noreply.github.com> Changed at Wed 19 Aug 2026 17:29:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2312ae4d10e10e315d12797b78155dbc0bc56cea Comments
avcodec/ac3dec: avoid coefficient truncation in float decoder The float decoder dequantized spectral coefficients into an int32_t buffer using mantissa >> exponent. This discarded the fractional part before conversion to float and substantially raised the dither noise floor for low-level coefficients. Store decoded coefficients as INTFLOAT and apply 2^-exponent directly in the floating-point path. Keep the fixed-point decoder unchanged, and perform coupling, rematrixing and final scaling in the native type. This also removes the now-unused fmtconvert dependency. Add a synthetic FATE test that measures the corrected dither level. Existing PCM references remain within one sample except fate-ac3-2.0, whose measured maximum difference is two samples. Fixes #23684.
Changed files
- configure
- libavcodec/ac3dec.c
- libavcodec/ac3dec.h
- tests/fate/ac3.mak
Change #278722
Category ffmpeg Changed by KO Myung-Hun <komh78@gmail.com> Changed at Wed 19 Aug 2026 18:20:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1f26f9d9e1d145e53bdd62dccfa3900c06efb032 Comments
configure: enable os2threads with atomics support
Changed files
- configure
Change #278723
Category ffmpeg Changed by KO Myung-Hun <komh78@gmail.com> Changed at Wed 19 Aug 2026 18:20:15 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e1e325235ee2f9f81b39d47ac2f9fe529257589e Comments
compat/os2threads.h: add pthread_mutex_trylock
Changed files
- compat/os2threads.h
Change #278737
Category ffmpeg Changed by Hao Chen <haochenc@google.com> Changed at Wed 19 Aug 2026 22:06:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d9ed77cb52ccd5b50f5416c4fa43e875433a1deb Comments
avfilter/aarch64/vf_bwdif_init: Fix stride bound check Fix stride condition when bounding w. Signed-off-by: Hao Chen <haochenc@google.com>
Changed files
- libavfilter/aarch64/vf_bwdif_init_aarch64.c
Change #278743
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Wed 19 Aug 2026 22:25:07 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b6e90cc92c6182b07d0ebd6d853b5e39f922fa3c Comments
avcodec/fmtconvert: Remove now unused subsystem Unused since 2312ae4d10e10e315d12797b78155dbc0bc56cea. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- configure
- doc/mips.txt
- libavcodec/Makefile
- libavcodec/aarch64/Makefile
- libavcodec/aarch64/fmtconvert_init.c
- libavcodec/aarch64/fmtconvert_neon.S
- libavcodec/arm/Makefile
- libavcodec/arm/fmtconvert_init_arm.c
- libavcodec/arm/fmtconvert_neon.S
- libavcodec/arm/fmtconvert_vfp.S
- libavcodec/fmtconvert.c
- libavcodec/fmtconvert.h
- libavcodec/mips/Makefile
- libavcodec/mips/fmtconvert_mips.c
- libavcodec/ppc/Makefile
- libavcodec/ppc/fmtconvert_altivec.c
- libavcodec/riscv/Makefile
- libavcodec/riscv/fmtconvert_init.c
- libavcodec/riscv/fmtconvert_rvv.S
- libavcodec/x86/Makefile
- libavcodec/x86/fmtconvert.asm
- libavcodec/x86/fmtconvert_init.c
- tests/checkasm/Makefile
- tests/checkasm/checkasm.c
- tests/checkasm/checkasm.h
- tests/checkasm/fmtconvert.c
- tests/fate/checkasm.mak
Change #278747
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 20 Aug 2026 00:12:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f91beaf9296b902b8d2fff712ba018192ad2e5b3 Comments
fate/tests/ac3: add missing eac3 fixed tests This ensures the fixed decoder has the same coverage as the float one. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/ac3.mak
Change #278749
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Thu 20 Aug 2026 00:35:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 96d82d90c3f5b74afda99fc51acaf7c89f39bdf2 Comments
avcodec/cuviddec: honor application-selected software output The CUARRAY output option made the decoder override a software format selected by get_format() with CUDA. This broke ordinary CUVID decoding to software consumers. Default output_format to auto and only override get_format() when the user explicitly requests cuda/cuarray or enables zero_copy. Keep the internal frames context in the corresponding hardware format and reject opaque/non-opaque transitions during decoder reinitialization. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavcodec/cuviddec.c
Change #278755
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Thu 20 Aug 2026 08:28:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a168907d36e7fbbb782b06d527c20ddefc1fccd Comments
avcodec/x86/vp9mc.asm: Replace MMX with SSE2 Use SSE2 for (put|avg)[48]; identical performance. Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/vp9dsp_init.c
- libavcodec/x86/vp9dsp_init_16bpp.c
- libavcodec/x86/vp9mc.asm
- tests/checkasm/vp9dsp.c
Change #278756
Category ffmpeg Changed by Kostazol <kostazol@users.noreply.github.com> Changed at Thu 20 Aug 2026 09:19:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7d77562d2a18adca969431e5c870870eb8b5edb9 Comments
avformat/hlsenc: provide next packet timing before fMP4 fragment flush Pass the next HLS boundary packet timing to the child MOV muxer before flushing an fMP4 fragment. The MOV helper only shrinks an overlapping accumulated fragment duration; normal boundaries remain unchanged and the boundary packet itself is not modified.
Changed files
- libavformat/hlsenc.c
- libavformat/movenc.c
- libavformat/movenc.h
Change #278777
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Thu 20 Aug 2026 14:09:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 50a9e34e1bc4bcf54331af39d4a53d8cffde3c22 Comments
avfilter/vf_scale_cuda: don't try to execute disabled filter passes
Changed files
- libavfilter/vf_scale_cuda.c
Change #278778
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Thu 20 Aug 2026 14:09:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3d7ea1dac4007b4897ad00991268bbdb51816743 Comments
avfilter/vf_scale_cuda: skip allocating intermediate texture if not needed
Changed files
- libavfilter/vf_scale_cuda.c
Change #278779
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Thu 20 Aug 2026 14:09:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dda8b8253cb020d0a09942e6507505ab608128b3 Comments
avfilter/vf_scale_cuda: extract pass determination into its own function
Changed files
- libavfilter/vf_scale_cuda.c
Change #278780
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Thu 20 Aug 2026 14:09:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4566eee58816d9a927b460f73c773d18e6060274 Comments
avfilter/vf_scale_cuda: always have valid passes setup
Changed files
- libavfilter/vf_scale_cuda.c
Change #278781
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Thu 20 Aug 2026 14:09:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a621ef4291148739e6a301ac5e7aee839c5d0933 Comments
avfilter/vf_scale_cuda: consider chroma subsampling for scaling decisions
Changed files
- libavfilter/vf_scale_cuda.c
Change #278788
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Thu 20 Aug 2026 14:52:04 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f101fce22d64db10f500242e23e43a251fe14414 Comments
configure: fix msvc _WIN32_WINNT check Fixes a regression introduced in a72b9465cda477b34e35d6d1eda670603a0a9f5b. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- configure
Change #278833
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 21 Aug 2026 05:35:19 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 87182e2abc88969ed57998a7c11518199feaa008 Comments
avcodec/audiotoolbox: use 64-bit channel masks the channel mask expressions used an int literal, making shifts for channel ids 31 and above undefined before conversion to uint64_t. use a 64-bit literal in the encoder mapping and decoder layout mask. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavcodec/audiotoolboxdec.c
- libavcodec/audiotoolboxenc.c
Change #278834
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Fri 21 Aug 2026 05:38:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 20b70144a6834dbf2984a26d90a4476068fc1f5c Comments
tests/fate/gapless: complete the mp3 test dependencies The gapless() helper decodes through the wav muxer into the md5 protocol, neither of which FRAMECRC requires, and ffprobe_demux reads the sample through the file protocol, against a reference that covers the sample format the mp3 decoder picked.
Changed files
- tests/fate/gapless.mak
Change #278835
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Fri 21 Aug 2026 05:38:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision bfcf9fcb3735a62648a968caad55d6b37c9998a2 Comments
avformat: factor out iTunSMPB parsing Apple encoders store gapless playback information in this tag, in the metadata of mp4 files and, as an ID3v2 comment, of mp3 files, so move the parsing to a helper both demuxers can share. The sample counts are widened to the 64 bits the tag can write, scanned unsigned as it writes them, and rejected past what can be a sample count, so that callers can add and rescale the three without overflowing.
Changed files
- libavformat/demux.h
- libavformat/demux_utils.c
- libavformat/mov.c
Change #278836
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Fri 21 Aug 2026 05:38:24 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1d17fdd28ba9e53c2257e782fd509fbf4848254 Comments
avformat/mp3dec: parse iTunes gapless info Apple encoders do not write the LAME extension of the Xing tag, so the files they produce get no gapless handling at all and no exact duration either, the sample used here carrying no VBR tag whatsoever. Contrary to the LAME tag, the iTunSMPB priming count already includes the decoder delay, so apply it as is, the way the mov demuxer already does, and validate it against the three counts adding up to what the frames decode to.
Changed files
- libavformat/mp3dec.c
- tests/fate/gapless.mak
- tests/ref/fate/gapless-mp3-itunes
- tests/ref/fate/gapless-mp3-itunes-side-data
- 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/id3v2-reenc-remux-keep
Change #278850
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Fri 21 Aug 2026 10:25:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 806f739fe553678496ac903917f4154803309ea8 Comments
avcodec/d3d12va_encode_av1: add AV1 B-frame (compound prediction) support This commit adds AV1 B-frame support. - Enable B-frame scheduling for the D3D12VA AV1 encoder by setting the ref_l0/ref_l1 capability. - Stash hidden (non-independent) anchor frames coded data and prepend it to the next visible frame packet (show_existing_frame handling). - Add FF_HW_FLAG_TIMESTAMP_NO_DELAY to avoid non-monotonic DTS warnings at higher B-frame reorder depths. - Set 2 B-frames as default(align with D3D12VA H.264 and HEVC encoder) Example usage: - default (2 B-frames will be applied): ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v av1_d3d12va output.mp4 - 3 B-frames: ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v av1_d3d12va -bf 3 output.mp4 Signed-off-by: younengxiao <steven.xiao@amd.com>Changed files
- libavcodec/d3d12va_encode.c
- libavcodec/d3d12va_encode.h
- libavcodec/d3d12va_encode_av1.c
- libavcodec/hw_base_encode.h
Change #278851
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Fri 21 Aug 2026 10:25:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5f69124aaaed9f7e01dad8d849577826e7a5b20c Comments
avcodec/vaapi_encode: remove duplicate FLAG_TIMESTAMP_NO_DELAY Use the shared FF_HW_FLAG_TIMESTAMP_NO_DELAY flag from hw_base_encode.h instead of VAAPI's own private definition with the same value and semantics. Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- libavcodec/vaapi_encode.c
- libavcodec/vaapi_encode.h
- libavcodec/vaapi_encode_av1.c
Change #278857
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Fri 21 Aug 2026 11:45:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ce1fedc039a27e9e330659abb6e3eb2cddbbabb7 Comments
configure: filter -experimental:* from armasm flags This fixes build with `--extra-cflags=-experimental:c11atomics`. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- configure
Change #278862
Category ffmpeg Changed by Shiyou Yin <yinshiyou-hf@loongson.cn> Changed at Fri 21 Aug 2026 12:39:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 16a3484985efd7510592ee9872d1a874e27fe36c Comments
swscale/loongarch: Enable range_convert optimization for LA The base implementation has been updated to runtime coeff and offset. Benchmark results: name ticks (vs ref) chrRangeFromJpeg8_1920_c: 237.9 chrRangeFromJpeg8_1920_lsx: 39.3 ( 5.91x) chrRangeFromJpeg8_1920_lasx: 19.6 (11.95x) chrRangeFromJpeg16_1920_c: 240.3 chrRangeToJpeg8_1920_c: 444.3 chrRangeToJpeg8_1920_lsx: 63.7 ( 6.36x) chrRangeToJpeg8_1920_lasx: 28.9 (15.31x) chrRangeToJpeg16_1920_c: 502.9 lumRangeFromJpeg8_1920_c: 140.3 lumRangeFromJpeg8_1920_lsx: 29.0 ( 4.83x) lumRangeFromJpeg8_1920_lasx: 15.8 ( 8.39x) lumRangeFromJpeg16_1920_c: 71.7 lumRangeToJpeg8_1920_c: 303.4 lumRangeToJpeg8_1920_lsx: 29.2 (10.34x) lumRangeToJpeg8_1920_lasx: 14.8 (20.47x) lumRangeToJpeg16_1920_c: 294.1
Changed files
- libswscale/loongarch/swscale.S
- libswscale/loongarch/swscale_init_loongarch.c
- libswscale/loongarch/swscale_loongarch.h
Change #278863
Category ffmpeg Changed by Shiyou Yin <yinshiyou-hf@loongson.cn> Changed at Fri 21 Aug 2026 12:39:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 40000d0f5bd6f2ddd162db1131f8a832ea04d64f Comments
swscale/loongarch: enable planar GBRP/GBRAP luma input optimization Benchmark results: name ticks (vs ref) planar_gbrp_to_y_512_c: 78.8 planar_gbrp_to_y_512_lsx: 19.9 ( 3.74x) planar_gbrp_to_y_512_lasx: 10.4 ( 7.46x) planar_gbrap_to_y_512_c: 79.4 planar_gbrap_to_y_512_lsx: 20.5 ( 3.61x) planar_gbrap_to_y_512_lasx: 15.5 ( 5.12x)
Changed files
- libswscale/loongarch/input_lasx.c
- libswscale/loongarch/input_lsx.c
Change #278868
Category ffmpeg Changed by Hao Chen <haochenc@google.com> Changed at Fri 21 Aug 2026 14:27:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 88ae625e698d7a1c0b7dcea8d915915acda3f054 Comments
libswresample/aarch64: Fix sign extension in audio conversion The channel count passed as a 32-bit register (w3) is later used as a 64-bit register (x3) for pointer offsets without proper sign extension, resulting in misbehavior. This commit adds an explicit sxtw instruction to ensure the channel count is properly sign-extended. Additionally, standardizes the use of the 32-bit w2 and w12 registers in the core length logic across functions to prevent sign extension issues with lengths without relying on explicit 64-bit casting, matching expected input bounds tracking. Signed-off-by: Hao Chen <haochenc@google.com>
Changed files
- libswresample/aarch64/audio_convert_neon.S
Change #278872
Category ffmpeg Changed by Tymur Boiko <tboiko@nvidia.com> Changed at Fri 21 Aug 2026 16:06:57 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1a6a186b808a5bf65a408c700846d208227d6549 Comments
avcodec/vulkan_decode: set H.264 pictureLayout from SPS frame_mbs_only_flag VkVideoDecodeH264ProfileInfoKHR::pictureLayout must match the sequence. ITU-T H.264 frame_mbs_only_flag==1 means frames only; ==0 allows field pictures and MBAFF. Vulkan PROGRESSIVE sessions are progressive-only; non-PROGRESSIVE enables interlaced field DPB (h264_decode / videocoding). pictureLayout values are mutually exclusive video profiles (vk.xml). Map with !frame_mbs_only_flag, then validate with vkGetPhysicalDeviceVideoCapabilitiesKHR: - frame_mbs_only_flag == 1, or no SPS -> PROGRESSIVE (one query) - frame_mbs_only_flag == 0 -> prefer INTERLACED_INTERLEAVED_LINES only Do not use avctx->field_order: MBAFF may still report progressive. Signed-off-by: Tymur Boiko <tboiko@nvidia.com>
Changed files
- libavcodec/vulkan_decode.c
Change #278880
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Fri 21 Aug 2026 20:11:48 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd4fc473be3ca20704615d8ea110effe7fe11e13 Comments
avfilter/af_afir: clamp initial ir selection the ir option may exceed nbirs because its static range is independent of the configured number of impulse responses. init() only clamps prev_selir, leaving selir able to index ctx->inputs out of range. with the default nbirs=1, afir=ir=1 reads ctx->inputs[2] and crashes. clamp selir like process_command() and add a fate test. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_afir.c
- tests/fate/filter-audio.mak
Change #278888
Category ffmpeg Changed by Leo Izen <leo.izen@gmail.com> Changed at Fri 21 Aug 2026 20:13:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eb0bfa852e7b9c524960300607ba2c4617060a9b Comments
avutil/opt: reformat set_string_binary Fix the code formatting in libavutil/opt.c's static function set_string_binary after bd68a6130495fe17bf33e0a9ddc053baae18c81f. No functional changes. Signed-off-by: Leo Izen <leo.izen@gmail.com>
Changed files
- libavutil/opt.c
Change #278924
Category ffmpeg Changed by WyattBlue <wyattblue@auto-editor.com> Changed at Sat 22 Aug 2026 19:41:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 11b68cce09900f8a4a25ceba42055094af00bf37 Comments
avfilter/af_whisper: Add 'lock', 'eval' lang modes Add 'lock' and 'eval' languages modes. With autodetection, whisper reruns language detection on every queued chunk, an extra encoder pass that can also drift to a different language mid-file. Add two explicit values for the language option: 'eval' keeps the per-chunk reevaluation, 'lock' caches the language detected by the first chunk that produces transcribed text and reuses it for the following chunks. Requiring actual text means a silent, musical or [BLANK_AUDIO]-only opening chunk leaves detection to a later one. 'auto' remains an alias for 'eval' so existing behavior is unchanged.
Changed files
- doc/filters.texi
- libavfilter/af_whisper.c
Change #278925
Category ffmpeg Changed by J. Brandt Buckley <brandt@runlevel1.com> Changed at Sat 22 Aug 2026 19:48:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ec8411e8548de7270f6e799cdc94f45b7a7a92d3 Comments
avcodec/vc1_block: don't drop the last macroblock when 1 bit remains The P- and B-picture per-MB guards added in 2a8785966c bail out of the loop to error concealment when get_bits_left() <= 1, but P- and B-picture MBs can legitimately cost exactly 1 bit in certain cases. This patch relaxes the guards to accommodate those cases. ## Explanation With the SKIPMB bitplane in Raw mode a skipped macroblock is a single SKIPMBBIT (SMPTE ST 421:2013, 7.1.3.7, p.109) and then "may only contain the HYBRIDPRED syntax element" (8.3.4.4, p.140), which is only read when predictors A and C are in-bounds and the predicted vector differs from A or C by more than 32 quarter-pels (8.3.5.3.5, Figure 55, pp.149-150). That condition isn't met in a static region so such a MB costs just 1 bit. A direct+skipped B-picture MB likewise reads nothing beyond its raw flag (Table 30, p.86). In Simple/Main profile a picture is byte-aligned with no stop bit, so if a picture ends with a 1-bit skipped macroblock and its last coded bit lands on a byte boundary, the final MB is reached with exactly one bit left. The guard then conceals a valid macroblock, sets FF_DECODE_ERROR_CONCEALMENT_ACTIVE on an undamaged frame, and the damage propagates to every frame up to the next keyframe. (Advanced Profile BDUs end in a trailing '1' bit per Annex E.2/E.3 p.437, so they always have at least two bit left and are therefore unaffected.) ## Reproducing Reproducible with an existing sample (prior to this patch): $ ffmpeg -i https://samples.ffmpeg.org/V-codecs/WMV9/wmv-samples/sample-wmv9-simple-SP@ML.wmv -map 0:v -f null - 2>&1 | grep -A1 concealing [wmv3 @ 0x122605430] concealing 75 DC, 75 AC, 75 MV errors in P frame [vist#0:0/wmv3 @ 0x122604080] [dec:wmv3 @ 0x122604df0] corrupt decoded frame [wmv3 @ 0x122605430] concealing 50 DC, 50 AC, 50 MV errors in P frame [vist#0:0/wmv3 @ 0x122604080] [dec:wmv3 @ 0x122604df0] corrupt decoded frame [wmv3 @ 0x122605430] concealing 100 DC, 100 AC, 100 MV errors in P frame [vist#0:0/wmv3 @ 0x122604080] [dec:wmv3 @ 0x122604df0] corrupt decoded frame ## References - SMPTE ST 421:2013 spec: https://pub.smpte.org/doc/st421/20131008-pub/ Signed-off-by: J. Brandt Buckley <brandt@runlevel1.com>Changed files
- libavcodec/vc1_block.c
Change #278926
Category ffmpeg Changed by Michael Partridge <michael.partridge@petrosys.com.au> Changed at Sat 22 Aug 2026 20:10:11 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 45bc2518bed20b1bab4e71afb13feba0e4aeb205 Comments
configure: support z.lib and zlib.lib for zlib on MSVC-style linkers Probe the zlib pkg-config link flags to detect whether the Windows import library is named z.lib or zlib.lib, and use that when rewriting -lz for MSVC-style linkers. Also make the non-pkg-config zlib fallback try both names explicitly so configure works with either z.lib or zlib.lib.
Changed files
- configure
Change #278944
Category ffmpeg Changed by Brian Leake <phyd@phyd.org> Changed at Sun 23 Aug 2026 00:58:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f10fdd631026056517edbad79ee0a136ef71c5df Comments
avformat/movenc: fix dec3 chan_loc derivation for E-AC-3 dependent substreams chan_loc was derived from the bitstream's chanmap with a plain shift, but the two fields use different bit orders, so every E-AC-3 stream carrying a dependent substream (7.1 and above) was muxed with the wrong channel layout signalled in the container. chanmap is a 16-bit field read MSB-first, so flag index i sits at bit (15 - i); this matches how ff_eac3_custom_channel_map_locations is indexed in ac3_parser.c. Per ETSI TS 102 366 Annex F, chan_loc bits 0-7 carry flag indices 5-12, i.e. chanmap bit (10 - j). The mapping is not contiguous at the top: index 13 (Lts/Rts) has no chan_loc bit and must be skipped, and chan_loc bit 8 carries LFE2, which is index 14 and so chanmap bit 1. The 0x1f mask was also 5 bits where 9 are needed, so some flags were dropped rather than merely misplaced. Effect on the layouts that use a dependent substream: layout chanmap before after 7.1 0x1A00 0x010 0x002 5.1.2 0x0010 0x000 0x040 5.1.4 0x0210 0x010 0x042 LFE2 0x0002 0x000 0x100 For 7.1 the field claimed Lsd/Rsd (surround direct), a position no 7.1 speaker layout has, instead of Lrs/Rrs. This is invisible to FFmpeg, whose decoder reads the layout from the bitstream, but demuxers that trust the container act on it: Apple's AudioToolbox reported the affected files as "7.1 (L C R Ls Rs LFE Lsd Rsd)" and collapsed them to a stereo downmix, losing the centre channel, all four surrounds and the LFE. Verified with samples.ffmpeg.org/A-codecs/AC3/eac3/7_pt_1.eac3, whose dependent substream declares chanmap 0x1A00. After this change the muxed dec3 carries 0x002, matching GPAC MP4Box for the same input, and AudioToolbox reports "7.1 (L C R Ls Rs LFE Rls Rrs)" with all eight channels intact. Signed-off-by: Brian Leake <phyd@phyd.org>Changed files
- libavformat/movenc.c
Change #278945
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 01:25:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b79d4c4c0a160fc46988e98505af6039a53ad53e Comments
tests/fate/lavf-container: add an EAC3 in MP4 test Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/lavf-container.mak
- tests/ref/lavf-fate/eac3.mp4
Change #278967
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 13:46:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 89f58356b31c63cea8604ac19a2365c6ae02c0b9 Comments
avcodec/tests/encinfo: Convert into API test It doesn't use any internals of lavc. Converting it to an API test tool reduces disk usage for shared builds. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/Makefile
- libavcodec/tests/.gitignore
- libavcodec/tests/encinfo.c
- tests/api/Makefile
- tests/api/api-enc-info-test.c
- tests/fate/wav.mak
Change #278968
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 13:46:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 732a8644b87f1d5a7f9409fcc184702d59239183 Comments
tests/fate/wav: Deduplicate encinfo rules Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/fate/wav.mak
- tests/ref/fate/wav-enc-adpcm-ima-wav-encinfo
- tests/ref/fate/wav-enc-adpcm-ms-encinfo
- tests/ref/fate/wav-enc-adpcm_ima_wav-encinfo
- tests/ref/fate/wav-enc-adpcm_ms-encinfo
Change #278969
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 13:46:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dea13cca4f6ff3c281ba848be5ce0e288245394a Comments
tests/api/Makefile: Don't undef main Should be unnecessary since fde3bb16f90ac456709c7305b9e230e8327d8625. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/api/Makefile
Change #278974
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 17:10:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 68834f79cf07ccba2b1e9b88cebc9ef66a342e9c Comments
avcodec/x86/h264_deblock: Write lines in original order I.e. not lines 9-16, then lines 1-8. No changes in benchmarks here; it is mainly done to reduce differences with the 32bit code. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #278975
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 17:10:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a960e8dba9efefd23411afeca82503edbb75291d Comments
avcodec/x86/h264_deblock: Combine 32,64 code for deblock_h_luma_intra_8 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #278976
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 17:10:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2fd5efa112ee66393cffbe34552ad65f82936732 Comments
avcodec/x86/h264_deblock: Avoid mmx in deblock_h_luma_intra_8 Old benchmarks: h_loop_filter_luma_intra_8bpp_c: 28.0 h_loop_filter_luma_intra_8bpp_sse2: 74.5 ( 0.38x) h_loop_filter_luma_intra_8bpp_avx: 74.6 ( 0.38x) New benchmarks: h_loop_filter_luma_intra_8bpp_c: 26.3 h_loop_filter_luma_intra_8bpp_sse2: 57.4 ( 0.46x) h_loop_filter_luma_intra_8bpp_avx: 57.6 ( 0.46x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #278977
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 17:10:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9f911c1ead41cb68f1e798b1e6322974b911f67e Comments
avcodec/x86/h264_deblock: Remove obsolete macro parameters Forgotten in b1140d3c982e0720d2dd638f2d7ae0ca6552ac13. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #278978
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Sun 23 Aug 2026 17:10:58 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9419d4c3a5a92563720115beb8831a6f906da96b Comments
avcodec/x86/h264_deblock: Don't use mmx in deblock_h_luma_intra_8 Old benchmarks: h_loop_filter_luma_intra_8bpp_c: 26.3 h_loop_filter_luma_intra_8bpp_sse2: 57.4 ( 0.46x) h_loop_filter_luma_intra_8bpp_avx: 57.6 ( 0.46x) New benchmarks: h_loop_filter_luma_intra_8bpp_c: 26.5 h_loop_filter_luma_intra_8bpp_sse2: 52.2 ( 0.51x) h_loop_filter_luma_intra_8bpp_avx: 52.3 ( 0.51x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
- tests/checkasm/h264dsp.c
Change #278979
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:28:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0e45eebe49a88079022d9cabee2b4eced755b003 Comments
avutil/channel_layout: remove back suffix from some layouts The idea was for the suffix to refer to the fact they feature Top Back channels instead of Top Side, but this distinction is unnecessary given there's no confusion between back and side like with base level channels (Ls/Rs, Lss/Rss, Lrs/Rsr), nor known specs where Top Side channels are used without Top Back also being used. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- doc/APIchanges
- libavutil/channel_layout.c
- libavutil/channel_layout.h
- libavutil/version.h
Change #278980
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:28:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 261df1d136c5621d63700d044d40cfb30568966a Comments
avutil/channel_layout: remove AVMatrixEncoding from channel_mask_c doxy group Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavutil/channel_layout.h
Change #278981
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:28:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dd38c57676a25daadc44109555cf1bfb27caab97 Comments
avformat/iamf: use the new channel layout macros Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/iamf.c
Change #278982
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:35:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ed923a7a897763471c65b507cea2ef661e1e1646 Comments
avcodec/aacenc: add support for writing PCE layouts with height channels Fixes ticket #24218 Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/aacenc.c
- libavcodec/aacenc.h
Change #278983
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:35:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f35acb72ac567821d52da6d53a3e06a3c97855f3 Comments
avcodec/aacenc: add support for ambisonic layouts AAC can't signal such layouts, so this is merely a hack to allow such streams to be passed to the encoder instead of having to define layouts using arbitrary speaker positions for the sake of having one with the required amount of channels. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/aacenc.c
Change #278985
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:35:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 10c3380e478cfa36b7d94110f511cb5929900b3c Comments
tests/audiogen: support up to 16 channels Needed by the next commit. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/audiogen.c
Change #278986
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 23 Aug 2026 18:35:29 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1019f8f036602a8464185baa4857654337eeca14 Comments
tests/fate/aac: add tests for PCE layouts with height channels Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/fate/aac.mak
- tests/ref/fate/aac-encode-5_1_2
- tests/ref/fate/aac-encode-5_1_4
- tests/ref/fate/aac-encode-7_1_2
- tests/ref/fate/aac-encode-7_1_4
- tests/ref/fate/aac-encode-7_2_3
- tests/ref/fate/aac-encode-9_1_4
- tests/ref/fate/aac-encode-9_1_6
Change #279166
Category ffmpeg Changed by iSold Leo <s@qwqlog.com> Changed at Mon 24 Aug 2026 22:09:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ca99230f7176c589b8390b34f2d1c130b9e1881d Comments
avformat/mp3enc: buffer ID3v2 for non-seekable outputs ID3v2 writes the tag size by seeking back to its header. This fails after output has been flushed to a non-seekable AVIO context, leaving a zero-sized tag. Attached pictures expose this reliably; sufficiently large metadata is affected too. Build the tag in a dynamic buffer for non-seekable MP3 outputs and copy it after finalization. Keep the direct path for seekable outputs. Fixes: #23917 Signed-off-by: iSold Leo <s@qwqlog.com>
Changed files
- libavformat/aiffenc.c
- libavformat/id3v2.h
- libavformat/id3v2enc.c
- libavformat/mp3enc.c
- tests/fate/cover-art.mak
- tests/fate/id3v2.mak
Change #279181
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Tue 25 Aug 2026 03:02:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 007cd1fd439927b212c44dbd6ca16bf65ea9ddde Comments
avcodec/libfdk-aacenc: replace use of deprecated channel layout Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libfdk-aacenc.c
Change #279334
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Tue 25 Aug 2026 11:25:49 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3d5534d27151cd2d7f0acba080a1eabec7c79a40 Comments
checkasm: Fix building for macos/aarch64 Commit 74705b3970cbc277e9366d82ee32d7c3a0a9e3b3 changed to only compile some of the checkasm source files when they are expected to be non-empty, but the condition for when perf/macos_kperf.c is needed is wrong, breaking building checkasm in default macos aarch64 configurations. Checkasm decides whether to enable the macos kperf codepaths on its own, irrespective of ffmpeg's configure's --enable-macos-kperf (which defaults to disabled) - see the end of checkasm's src/perf_internal.h for the condition: #if defined(__APPLE__) && ARCH_AARCH64 /* This only depends on <dlfcn.h>, and isn't needed on other architectures. */ #define HAVE_MACOS_KPERF 1 #else #define HAVE_MACOS_KPERF 0 #endif To approximate this, build macos_kperf.c for any aarch64 target. For non-macOS cases, perf_internal.h defines inline functions in most aarch64 build configurations, so we don't end up with an empty translation unit in any case.Changed files
- tests/checkasm/Makefile
Change #279351
Category ffmpeg Changed by zhorzhetta1404-ux <zhorzhetta1404@gmail.com> Changed at Tue 25 Aug 2026 16:21:47 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d7d119bbe26c7e5c27a8b50fc8a25da43564c48a Comments
avformat/oggdec: check for integer overflow in buf_realloc In buf_realloc, os->bufsize is unsigned int and the code doubles it: nb = av_realloc(os->buf, 2*os->bufsize + AV_INPUT_BUFFER_PADDING_SIZE); When os->bufsize exceeds UINT_MAX/2, the multiplication overflows to a small value, av_realloc returns a tiny buffer, and the subsequent page write in ogg_read_page goes out of bounds. Reject the reallocation before the overflow can occur. The largest safe value is (UINT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) / 2. Signed-off-by: age5000 <age5000@proton.me>Changed files
- libavformat/oggdec.c
Change #279354
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Tue 25 Aug 2026 18:06:34 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 09219cc6832671211c1963da0e27181d7bea62e5 Comments
swscale: print the effective scaler with SWS_PRINT_INFO use the resolved luma scaler for the log. keep the SWS_BICUBLIN description only when chroma is actually bilinear. add coverage for scaler_sub overrides and the missing FATE dependency. this fixes the incorrect scaler output reported in #23975. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libswscale/utils.c
- tests/fate/filter-video.mak
Change #279355
Category ffmpeg Changed by Zsolt Vadasz <zsolt_vadasz@protonmail.com> Changed at Tue 25 Aug 2026 18:10:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a1050d48b0df3f7c3fa1c631ec8e82528b3f7c85 Comments
avcodec/j2kenc: Compute division only once, preshift bit Pre-shift n to the highest bit in put_bits(), and compute a division outside of a hot loop in encode_tile().
Changed files
- libavcodec/j2kenc.c
Change #279394
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 26 Aug 2026 02:41:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 46f327624835a97a9c838b103b4e75b47a2d34f0 Comments
avcodec/h264_slice: clear the ER picture when starting a second field h264_frame_start() clears h->er.cur_pic, and decode_nal_units() only sets it again for pictures that are not field coded, right before running error concealment. A second field goes through neither, so h->er.cur_pic keeps pointing at whatever frame coded picture the context decoded earlier. With frame threading the two fields of a pair are decoded by different contexts, so whether this triggers depends on what the context that picks up the second field decoded before, which is why the number of bogus warnings varies between runs. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/h264_slice.c
Change #279395
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 26 Aug 2026 02:41:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 27b7fa0c107cf6f8f8d3fac541a96ee14940b202 Comments
avcodec/h264_direct: do not read the other field's rows of colocated mb_type To determine whether the colocated picture is field coded, the temporal and spatial direct setup peek at sl->ref_list[1][0].parent->mb_type[mb_xy] before mb_xy has been remapped to the colocated field's parity. That row belongs to the current field's parity, while await_reference_mb_row() above waited on the parity of the referenced field, so whenever the two differ the load is unsynchronised and with frame threading can observe macroblocks of a field that is still being decoded. Every macroblock of a field picture has MB_TYPE_INTERLACED set, so checking field_picture first gives the same result in all correctly synchronized cases without touching the mb_type array. This also fixes few TSAN reported warnings. Fixes: https://trac.ffmpeg.org/ticket/10891 Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/h264_direct.c
Change #279438
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 255276f780c3deeda1730acf42e4254a68e81833 Comments
avfilter/vf_scale_cuda: select separable passes per plane Plan luma and chroma passes from their sampling geometry. Allocate intermediate storage only for planes needing horizontal scaling and inherit untouched input textures. Use virtual chroma extents to handle odd sizes and subsampling changes. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/vf_scale_cuda.c
Change #279439
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 41045c5c6ab8d37dbb6ff971ad3377ccd5eeeb83 Comments
avfilter/vf_scale_cuda: encapsulate generic filter resources Group filter weights, the pass plan, and intermediate textures in a replaceable filter set. Route generic kernel selection through the active set and load both output directions so it owns all geometry-dependent state. Keep the requested use_filters value separate from the resolved mode. Support a one-tap generic copy when no plane needs scaling. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/vf_scale_cuda.c
Change #279440
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a2b7a8210e3fbffbbb959752f832484b57864325 Comments
avfilter/vf_scale_cuda: regenerate filters for cropped frames Generic filter coefficients depend on visible input dimensions, which can change through per-frame crop metadata. Rebuild the filter set when that geometry changes and synchronize before freeing active CUDA resources. Match av_frame_apply_cropping() for subsampled planes by flooring crop origins while rounding visible extents up. This prevents odd left or top crops from shifting chroma by one sample. Clear applied cropping and size-dependent side data from the output. Use visible dimensions when updating the sample aspect ratio. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/vf_scale_cuda.c
Change #279441
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c4887d9de309d14e6ead84a730a6b7e7e3996434 Comments
avfilter/vf_scale_cuda: quantize generic output to source depth Clamp generic-filter output to the logical source depth before restoring its storage alignment. This prevents filter overshoot from setting padding bits in formats such as P010 and P012. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/vf_scale_cuda.c
- libavfilter/vf_scale_cuda.cu
- libavfilter/vf_scale_cuda.h
Change #279442
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eb4c99d49c455bad5e3747135b3df95fcacaa09f Comments
avfilter/vf_scale_cuda: use floating-point Lanczos intermediates Store horizontal Lanczos results in floating-point textures so two-axis filtering quantizes only after the final pass. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- libavfilter/vf_scale_cuda.c
- libavfilter/vf_scale_cuda.cu
Change #279443
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 50665df43b81dbdc6bc73eb645f8289bebc511c4 Comments
avfilter/vf_scale_cuda: make the Lanczos radius configurable Pass param to libswscale when generating generic Lanczos filters, allowing radii from 1 to 10. The fixed-function path remains unchanged. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- doc/filters.texi
- libavfilter/vf_scale_cuda.c
Change #279444
Category ffmpeg Changed by Diego de Souza <ddesouza@nvidia.com> Changed at Wed 26 Aug 2026 11:52:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a8c7afa7d778cefec08f781ef5bcc09c640161fb Comments
avfilter/vf_scale_cuda: use generic filters for Lanczos by default Use the generic weight-LUT path for Lanczos in automatic mode to provide the full filter window and downscaling anti-aliasing. Keep the legacy four-tap path available with use_filters=0. Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
Changed files
- doc/filters.texi
- libavfilter/vf_scale_cuda.c
Change #279513
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 26 Aug 2026 17:28:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 66a8d8cff4daabf32fc98ceec0c1fcf330fa88ac Comments
avcodec/libfdk-aacdec: add support for top back and top side channels While PCE can signal these, libfdk-aac supports only up to 8 channels, so any sample that could contain these will most likely have more channels than can be decoded anyway. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libfdk-aacdec.c
Change #279514
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Wed 26 Aug 2026 17:28:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3654a14795fb67ef5bdc0702183fedf74fb356ba Comments
avcodec/libfdk-aacdec: add support for bottom front channels Same as the previous commit, actual samples with less than eight channels including these is very unlikely. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavcodec/libfdk-aacdec.c
Change #279515
Category ffmpeg Changed by Reda DRISSI <reda.drissi@yahoo.fr> Changed at Wed 26 Aug 2026 17:34:51 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 56c3d963ec42cb7e02cd3d96ccc1ed1e5cb0e0c7 Comments
avformat/movenc: add Apple APAC codec tag for mp4 muxing The MP4 muxer rejects streams with AV_CODEC_ID_APPLE_APAC because the codec_mp4_tags[] table has no entry for it, while the MOV muxer already accepts the codec. Add the apac sample entry tag so APAC streams can be copied into MP4 with -c:a copy. Signed-off-by: Reda DRISSI <reda.drissi@yahoo.fr>
Changed files
- libavformat/movenc.c
Change #279529
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Wed 26 Aug 2026 22:13:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fccb887903fa799146ecf7500c3339f9c9b27e6e Comments
avutil/mem: check attribute support for allocation attributes Clang reports itself as gcc 4.2, so av_alloc_size was never applied for it, and neither attribute was applied for clang with MSVC target, which does not define __GNUC__ at all. Check for the attributes directly. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavutil/mem.h
Change #279546
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:11:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c40a8a235bb8d4d599916dae98c01b18f73e53a1 Comments
avformat/shared: Don't log incomplete lines Incomplete lines (without \n) may be torn apart by av_log()s from other threads. So log them once. Also use ff_data_to_hex() for the data->hex conversion. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/shared.c
Change #279547
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:11:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e9ec302b3137aec22ecfd45167f371ac99c3a814 Comments
avformat/shared: Use ff_data_to_hex() where appropriate Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/shared.c
Change #279548
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:11:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5279cf09758d32a7944a96f5796cda42cd9a840b Comments
avformat/ape: Don't log incomplete lines Incomplete lines (without \n) may be torn apart by av_log()s from other threads. So log them once. Also use ff_data_to_hex() for the data->hex conversion. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/ape.c
Change #279549
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:11:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0a6f7590274a89895c074779f606acd62b614058 Comments
avformat/utils: Make ff_data_to_hex() usable with sizes > INT_MAX/2 It uses an int size field, so it should support the whole range. Notice that no current caller could ever have been affected by this. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/utils.c
Change #279550
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:11:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5fb7f9c5deee9fb4b580b20efe150be300bed6f8 Comments
avformat/smoothstreamingenc: Use ff_data_to_hex() where advantageous Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/smoothstreamingenc.c
Change #279551
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f7500c6d715c4ce7700b0e17c7d386ceb41b11d4 Comments
avcodec/x86/h264_deblock: Avoid zeroing register unnecessarily Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #279552
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 22b3de0eccf42174ea00ebc30c659bf0c555611b Comments
avcodec/x86/h264_deblock: Avoid unnecessary stores/loads Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #279553
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f6691293a50cbfe4edfaf3eeeb73b79fc6c16ccf Comments
avcodec/x86/h264_deblock: Write lines in original order I.e. not lines 9-16, then lines 1-8. No changes in benchmarks here; it is mainly done to reduce differences with the 32bit code. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #279554
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a51f4456c84c923983873beb81dd88ded7c71226 Comments
avcodec/x86/h264_deblock: Remove redundant rederiving of stride3 It was stored in a nonvolatile register. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #279555
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f8ca7c8f15375cfee460a28484cf518bbce75ed9 Comments
avcodec/x86/h264_deblock: Combine 32,64 code for deblock_h_luma_8 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
Change #279556
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Thu 27 Aug 2026 00:51:10 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a6f573a1dbfc6861a96f3a453805398f86f0e7a9 Comments
avcodec/x86/h264_deblock: Avoid mmx register in deblock_h_luma_8 Old benchmarks: h_loop_filter_luma_8bpp_c: 41.1 h_loop_filter_luma_8bpp_sse2: 60.6 ( 0.68x) h_loop_filter_luma_8bpp_avx: 60.4 ( 0.68x) New benchmarks: h_loop_filter_luma_8bpp_c: 42.0 h_loop_filter_luma_8bpp_sse2: 48.1 ( 0.87x) h_loop_filter_luma_8bpp_avx: 48.3 ( 0.87x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/h264_deblock.asm
- tests/checkasm/h264dsp.c
Change #279595
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 27 Aug 2026 12:54:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2a61dbb99f45fdecd69ddc9ace6f3996cc023cbb Comments
tests/fate/libavutil: add FATE test for pixdesc Test av_get_pix_fmt / av_get_pix_fmt_name round-trip across all pixel formats, av_color_{range,primaries,transfer,space}_name, av_chroma_location_name and av_alpha_mode_name round-trips through their from_name() counterparts using a name-equivalence check (two enum values may legitimately share the same name string), av_chroma_location_enum_to_pos and pos_to_enum round-trip across all valid chroma locations, and iterate every pixel format printing av_get_padded_bits_per_pixel and av_pix_fmt_count_planes. Coverage for libavutil/pixdesc.c: 83.63% -> 90.03% Numbers measured against a full FATE run. Remaining uncovered lines are av_get_pix_fmt_string, the av_get_pix_fmt_loss / av_find_best_pix_fmt_of_2 public wrappers and a few loss branches, the palette branches of av_read_image_line and av_write_image_line, and the *_ext name lookups in av_color_{primaries,transfer}_from_name. Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>Changed files
- .forgejo/CODEOWNERS
- libavutil/tests/pixdesc.c
- tests/fate/libavutil.mak
- tests/ref/fate/pixdesc
Change #279597
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 27 Aug 2026 12:54:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b799c7772b49961cbd3eb1975ffdb636ad69e15c Comments
tests/fate/libavutil: add FATE test for downmix_info Test av_downmix_info_update_side_data() including first-call allocation with zero-initialized defaults, field write/read-back, second-call reuse (same pointer, preserved values), and the OOM path via av_max_alloc. Coverage for libavutil/downmix_info.c: 100.00% -> 100.00% On a full FATE run the file is already covered by the AC-3 decoder tests (fate-ac3-4.0 and friends), which require FATE_SAMPLES. This test exercises the API directly and keeps the file covered on builds that run without samples. Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>
Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/downmix_info.c
- tests/fate/libavutil.mak
- tests/ref/fate/downmix_info
Change #279599
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 27 Aug 2026 12:54:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 58c47ca583f23a5ab1329f5e026f8f2c33775464 Comments
tests/fate/libavutil: add FATE test for hdr_dynamic_metadata Test av_dynamic_hdr_plus_alloc, av_dynamic_hdr_plus_create_side_data, av_dynamic_hdr_plus_to_t35 in all three documented modes (size query, caller-allocated, existing caller-owned buffer) including the AVERROR_BUFFER_TOO_SMALL path, and av_dynamic_hdr_plus_from_t35 as a round-trip inverse. Two HDR10+ fixtures are used. The first is a conforming ST 2094-40:2020 ApplicationVersion 1 payload: one processing window, the nine distribution maxrgb percentiles required by section 8.5.4, and neither actual-peak-luminance item nor ColorSaturationWeight, both excluded for that version by section 9.4. The second is marked in the source as deliberately non-conforming and exists only to reach the optional serializer/parser branches: a second processing window with its geometry, both actual-peak-luminance matrices, per-window tone mapping and color saturation. Every field either fixture populates is decoded and printed, so a serializer or parser that drops or corrupts a value changes the reference rather than passing a flag-only check. Also test that av_dynamic_hdr_plus_to_t35 ignores application_version and always writes the CTA-861-H value, the NULL and oversized error paths, and av_dynamic_hdr_smpte2094_app5_alloc, av_dynamic_hdr_smpte2094_app5_create_side_data and the App5 to_t35 / from_t35 round trip over four fixtures covering both early-out paths (no adaptive tone map, reference-white tone mapping) and both sides of the component mixing and gain curve selectors: per-image parameters with component mixing type 3 and explicit control point slopes, and common parameters shared from alternate 0 with a mixing type other than 3 and the pchip slope. The App5 to_t35 validation failures and the OOM paths via av_max_alloc are covered as well. Coverage for libavutil/hdr_dynamic_metadata.c: 31.02% -> 95.53% The baseline comes from the HDR10+ sample tests on a full FATE run (fate-hevc-hdr10-plus-metadata, fate-png-mdcv and the Matroska/WebM HDR10+ remux tests). Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>
Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/hdr_dynamic_metadata.c
- tests/fate/libavutil.mak
- tests/ref/fate/hdr_dynamic_metadata
Change #279600
Category ffmpeg Changed by marcos ashton <marcosashiglesias@gmail.com> Changed at Thu 27 Aug 2026 12:54:38 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 17c109e8d94d19976dc2f5db9c3577b3f831df43 Comments
tests/fate/libavutil: add FATE test for side_data Test av_frame_side_data_desc and av_frame_side_data_name on valid and invalid types, av_frame_side_data_get and its _c variant for present and absent types, av_frame_side_data_remove (including MULTI types with duplicates), av_frame_side_data_remove_by_props filtering by AV_SIDE_DATA_PROP_*, av_frame_side_data_clone with and without AV_FRAME_SIDE_DATA_FLAG_REPLACE (including the AVERROR(EEXIST) and AVERROR(EINVAL) paths) and with AV_FRAME_SIDE_DATA_FLAG_UNIQUE, av_frame_side_data_add in move mode, with AV_FRAME_SIDE_DATA_FLAG_NEW_REF and with AV_FRAME_SIDE_DATA_FLAG_REPLACE over an existing entry, and av_frame_side_data_free. Coverage for libavutil/side_data.c: 72.14% -> 86.43% Numbers measured against a full FATE run. Remaining uncovered lines are internal allocation-failure error paths requiring injected failures mid-operation. Signed-off-by: marcos ashton <marcosashiglesias@gmail.com>
Changed files
- .forgejo/CODEOWNERS
- libavutil/Makefile
- libavutil/tests/.gitignore
- libavutil/tests/side_data.c
- tests/fate/libavutil.mak
- tests/ref/fate/side_data
Change #279621
Category ffmpeg Changed by Marcos Ashton Iglesias <marcosashiglesias@gmail.com> Changed at Thu 27 Aug 2026 13:45:46 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 278eeeb16e67f24d46851e3355bef5a51322c3bd Comments
avcodec/x86/hevc: add SSSE3 pred_planar Implements planar intra prediction for 8 bit. x86 has no HEVC intra prediction at all; aarch64 NEON already covers planar, DC and angular. Every term except (size-1-x)*left[y] is linear in y, so for a group of eight columns they collapse into one running accumulator whose increment left[size]-top[x] is loop invariant. Running columns outermost keeps that accumulator and its delta in registers, so a row costs one pmullw and two paddw with no reload of top[]. 16x16 and 32x32 run two groups together, sharing the left[y] broadcast and writing a row with one 16 byte store. Words suffice throughout: each coefficient pair sums to size, so the largest value is 2*32*255 + 32 = 16352. SSSE3 rather than SSE2 since pshufb does the broadcasts and the byte to word widening. checkasm --bench on a Core Ultra 7 155H: hevc_pred_planar_4x4_8_c: 18.4 hevc_pred_planar_4x4_8_ssse3: 5.5 ( 3.35x) hevc_pred_planar_8x8_8_c: 83.1 hevc_pred_planar_8x8_8_ssse3: 16.3 ( 5.10x) hevc_pred_planar_16x16_8_c: 224.8 hevc_pred_planar_16x16_8_ssse3: 47.3 ( 4.75x) hevc_pred_planar_32x32_8_c: 629.5 hevc_pred_planar_32x32_8_ssse3: 196.5 ( 3.20x) Part of #23022.
Changed files
- libavcodec/hevc/pred.c
- libavcodec/hevc/pred.h
- libavcodec/x86/hevc/Makefile
- libavcodec/x86/hevc/pred.asm
- libavcodec/x86/hevc/pred_init.c
Change #279623
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Thu 27 Aug 2026 15:43:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d3d2e7f1f691b8ac06062e37b826dc673a7a864e Comments
avformat/http: split the response status line parser out of process_line Makes the parser reachable from a test program. No functional change, beyond checking the allocation of the exported version string.
Changed files
- libavformat/http.c
- libavformat/http.h
Change #279624
Category ffmpeg Changed by Romain Beauxis <romain.beauxis@gmail.com> Changed at Thu 27 Aug 2026 15:43:01 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 72dc02e52ff544c18d09f4da1cccb96883143ae2 Comments
tests/http: test response status line parsing Covers well formed status lines, a missing or non numeric status code, lines that do not start with an HTTP version, and status lines whose version or code does not respect the grammar of RFC 9112. The reference output records the current behavior: every one of those malformed lines is accepted, most of them as a 2xx success.
Changed files
- libavformat/Makefile
- libavformat/tests/.gitignore
- libavformat/tests/http.c
- tests/fate/libavformat.mak
- tests/ref/fate/http-status-line
Change #279625
Category ffmpeg Changed by Théo Valette <315040668+theovalette@users.noreply.github.com> Changed at Thu 27 Aug 2026 16:08:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 78efc17cc5b6cfa62bea5bca39a4c4b5dea731d7 Comments
avformat/movenc: preserve timecode flags when copying tmcd tracks The MOV demuxer retains tmcd timecode flags in codec extradata, but copied tracks never initialize MOVTrack.timecode_flags. mov_write_tmcd_tag() therefore writes zero when reconstructing the sample description, causing unchanged frame counters to be interpreted as non-drop-frame. Initialize the complete flags field from sample-description extradata for copied tmcd tracks. fate-copy-trac236 covers three drop-frame tmcd tracks. Fixes issue #20841. Reported-by: unsword01 <unsword01@noreply.code.ffmpeg.org> Signed-off-by: Théo Valette <315040668+theovalette@users.noreply.github.com>
Changed files
- libavformat/movenc.c
- tests/ref/fate/copy-trac236
Change #279626
Category ffmpeg Changed by Ackanir <git.ackanir@gmail.com> Changed at Thu 27 Aug 2026 16:44:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9f35e220ffbba21c88356eb2bbfa3679ede93793 Comments
avformat/movenc: fix crash when flushing a fragment with no data mov_flush_fragment() calls ffio_reset_dyn_buf() on mov->mdat_buf when writing the initial moov. That buffer is allocated lazily on the first packet, so it is still NULL when the trailer is written before anything was muxed, and ffio_reset_dyn_buf() dereferences it. 627da1111c9d replaced ffio_free_dyn_buf(), which tolerates NULL, with ffio_reset_dyn_buf(), which does not, turning this case into a crash. This affects every fragmented mode that defers the initial moov to the first flush. Skip the block entirely when the buffer was never opened. Nothing references the empty mdat it would otherwise write, as no samples were muxed. Reproduced with: ffmpeg -f lavfi -i color=s=64x64 -frames:v 0 -movflags +frag_keyframe out.mp4 Fixes: 627da1111c9d ("libavformat/movenc: Uses dynamic buffers for fragmented chunks") Signed-off-by: Ackanir <git.ackanir@gmail.com>Changed files
- libavformat/movenc.c
Change #279650
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Thu 27 Aug 2026 23:07:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3a9920690274f032e6e1fe05624e50378e0bc285 Comments
avfoundation: Consolidate the HAVE_IOKIT ifdefs This makes it easier to tweak the condition for when these codepaths are enabled.
Changed files
- libavdevice/avfoundation.m
Change #279651
Category ffmpeg Changed by Martin Storsjö <martin@martin.st> Changed at Thu 27 Aug 2026 23:07:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0bffa4a84dbf0d05a29e580ea7f7a4b84e122f4d Comments
avfoundation: Fix compilation for iOS This fixes building for iOS after commit c2802e520a08dbf0c939ec8b5653b29dfd886427. On iOS, the fallback define kIOMasterPortDefault is never available. The newer define kIOMainPortDefault is available since iOS 15. However, if building with older iOS SDKs (iOS 15 SDK or older) then IOKit is entirely missing. This caused compilation to succeed if building with such older versions of the iOS SDK. If building with a newer iOS SDK/Xcode but targeting an older version of iOS, then IOKit is available, but compilation would fail as kIOMasterPortDefault wasn't available. Thus, this fixes compilation for iOS with iOS 16 SDKs and newer, which was previously broken.
Changed files
- libavdevice/avfoundation.m
Change #279661
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Fri 28 Aug 2026 05:17:50 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3acec0a1af2dda0a0838689b8b8649e7deb080a0 Comments
avformat/iamf_writer: don't discard skip samples signaled through side data for Opus If it's set, then it should be used. Fixes issue #24285. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- libavformat/iamf_writer.c
- tests/ref/fate/iamf-5_1-copy
- tests/ref/fate/iamf-ambisonic_1-projection-copy
Change #279720
Category ffmpeg Changed by Sylvestre Ledru <sylvestre@debian.org> Changed at Fri 28 Aug 2026 15:01:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d29ff884221042af219e53cc339a62356b061816 Comments
vulkan_av1: fix out-of-bounds write of tile_sizes The tile count limit was only checked once on entry, but tileCount is incremented by ff_vk_decode_add_slice() inside the loop, so a stream carrying more than MAX_TILES tiles writes past the end of the MAX_TILES-element tile_sizes array. Check the limit on each iteration, and reject at MAX_TILES rather than above it, since tileCount is used as the write index.
Changed files
- libavcodec/vulkan_av1.c
Change #279721
Category ffmpeg Changed by Sylvestre Ledru <sylvestre@debian.org> Changed at Fri 28 Aug 2026 15:01:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d411d9e752b9100f8d88f6f2b2bd20900148955c Comments
vulkan_decode: use the pointee size when growing slice_off sizeof(slice_off) is the size of the uint32_t pointer, not of an entry. Harmless in practice as it over-allocates on 64-bit, but wrong, and under-allocates on targets where a pointer is smaller than uint32_t.
Changed files
- libavcodec/vulkan_decode.c
Change #279765
Category ffmpeg Changed by Wu Jianhua <toqsxw@outlook.com> Changed at Fri 28 Aug 2026 20:50:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ecd6fcb5ab0e6531f7d0000975bb6542e152f9c8 Comments
avcodec/tiffenc: handle all TIFF types on big-endian Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
Changed files
- libavcodec/tiffenc.c
Change #279768
Category ffmpeg Changed by Wu Jianhua <toqsxw@outlook.com> Changed at Fri 28 Aug 2026 20:50:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 235b81cb9a393e67137cb16d8b55c1bbae0d6514 Comments
avcodec/tiffenc: support writing ICC profiles Write ICC profiles as TIFF UNDEFINED data and align all out-of-line IFD values to a word boundary. Account for non-empty ICC side data while allocating the packet and calculate the image size in checked 64-bit arithmetic. Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
Changed files
- libavcodec/tiffenc.c
- tests/ref/lavf/tiff
Change #279769
Category ffmpeg Changed by Wu Jianhua <toqsxw@outlook.com> Changed at Fri 28 Aug 2026 20:50:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 836ff94338bd078f3c3dfde7dfbe6e5c608ae71f Comments
avcodec/exif: add InterColorProfile tag to tag list Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
Changed files
- libavcodec/exif.c
Change #279770
Category ffmpeg Changed by Wu Jianhua <toqsxw@outlook.com> Changed at Fri 28 Aug 2026 20:50:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision df48dc624e7103ae99c59cb9d744cd17d317ec4d Comments
tests/fate/image: add fate-tiff-icc Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
Changed files
- tests/fate/image.mak
- tests/ref/fate/tiff-icc
Change #279817
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Sat 29 Aug 2026 12:18:28 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1ae40482188283a7f955d001abb08c5d865cdae0 Comments
avfilter/dnn: extend ONNX Runtime backend with dnn_detect and multi-output support This patch extends the existing ONNX Runtime DNN backend with object detection support via dnn_detect and removes the single-output restriction in dnn_processing. Example usage: # SSD detection (single output, DirectML) ffmpeg -i input.mp4 -vf "scale=300:300,format=rgb24,dnn_detect=dnn_backend=onnx:model=ssd.onnx:model_type=ssd:device=dml:device_id=0" -f null - # YOLOv3 detection (two outputs, CPU) ffmpeg -i input.mp4 -vf "scale=416:416,format=rgb24,dnn_detect=dnn_backend=onnx:model=yolov3.onnx:output=yolo_13&yolo_26:model_type=yolov3:nb_classes=80:anchors=116&90&156&198&373&326&30&61&62&45&59&119" -f null - Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- doc/filters.texi
- libavfilter/dnn/dnn_backend_onnx.c
- libavfilter/dnn/dnn_io_proc.c
- libavfilter/dnn_filter_common.c
- libavfilter/vf_dnn_detect.c
Change #279831
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Sat 29 Aug 2026 16:53:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3386acd2f91d4a59be20eddf6d26abad682f4ca0 Comments
avutil/slicethread: fix build without threading support The backwards compatibility wrappers for the deprecated avpriv_slicethread_{create,execute}() dereference AVSliceThread, whose definition only exists in the threaded branch of the file. A build without pthreads/w32threads/os2threads therefore failed with "dereferencing pointer to incomplete type 'AVSliceThread'". Move the wrappers into the threaded branch and give the no-threads branch stubs for the deprecated API matching those of create2/execute2.Changed files
- libavutil/slicethread.c
Change #279870
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dac4bc75862e3f635c674a58249fa066ebb6902c Comments
configure: find an installed nvidia-video-filters package The RTX Video filters that follow are generated code over data this tree does not contain and cannot produce: the *_cuda_gen.h that describes each captured kernel graph, and the cubins and weights it names, are extracted from the proprietary NVIDIA libraries by an out-of-tree tool and installed into a prefix that describes itself with an nvidia-video-filters.pc. Nothing here ships or extracts them. The package existing is only half the answer. Each feature comes from a different NVIDIA library, so an install routinely holds some and not others, and a filter whose data is absent must not be built rather than built to fail at run time. So the umbrella check only picks up the cflags, and each feature is probed separately for both halves -- its generated header has to compile, and the data directory named by the .pc has to exist -- giving one nvfdata_* per feature for the filters to depend on.
Changed files
- configure
Change #279871
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5b8190461c4eefbf63a77ee88ad20469872fa8bc Comments
avfilter: add a shared core for the RTX Video CUDA filters Seven of the filters that follow replay a captured NVIDIA kernel graph, and all seven are 1:1 filters built the same way. A <feature>_cuda_gen.h describes one feature's graph -- which cubins to load, how big each scratch buffer is at a given frame size, where the weights go, and every launch's grid, block and argument block -- and the filter's job is to turn that into CUDA calls. That job is the same every time: gate the GPU architecture, load the modules, lay out one contiguous arena, upload the weights, bind the input and output images, then replay the launch list once per frame. This is that job, written once. What stays in each vf_*.c is what genuinely differs: its AVOptions, which generated config the options select, the shape of its I/O binding, and the named tunable offsets it patches into the argument blocks. The generated headers are per-feature and expose everything as static, so the core never includes them. Each filter instead passes its tables in through layout-compatible views and proves the cast with a static_assert, so a generator change that broke the assumption fails the build rather than corrupting a launch. Two decisions here are load-bearing rather than tidiness, and are commented as such in the source: the arena is one contiguous allocation because several kernels do a tile/halo read a little past the logical end of their input buffer, which is harmless inside an arena and becomes an illegal access once the heap fragments; and cuSurfObjectCreate/Destroy are resolved out of libcuda directly, once per process, because they are the one pair ffnvcodec's loader does not export.
Changed files
- libavfilter/rtx_cuda.c
- libavfilter/rtx_cuda.h
- libavfilter/rtx_dlpp_abi.h
Change #279872
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 404b97e55176a266600d878d661a8ef6ed7c38df Comments
avfilter: add vsr_cuda, NVIDIA RTX Video Super Resolution Upscales packed RGB CUDA frames with the RTX VSR network from the NGX SDK snippet nvngx_vsr.dll, replayed directly on libcuda -- no DLL is loaded at run time. vsr_cuda_gen.h describes the captured graph as a function of the input and output size; the filter evaluates it in config_output() and then hands the result to the rtx_cuda core, which does the loading, allocation and replay. What is specific to VSR and therefore lives here: the quality/scale option pair that picks a generated config, the packed-RGB format selectors patched into the argument blocks, and the input-texture/output-surface binding. Quality 0-4 are the upscaling models (0 is a plain bicubic reference, 2x is fixed for low/medium, and high/ultra upscale natively by 2x/3x/4x), 5 and 6 are native-resolution restoration networks forced to 1x, and 7 is a pass-through. Output sizes other than the network's native factor resample that result with the graph's own bicubic compose. Not every model exists in every extraction: the Windows nvngx_vsr.dll carries 0-4 at 2x, and the native Linux library adds the restoration and lossless models and the 3x/4x heads. The option ranges cover the union, and a model the installed data has no network for is refused at config time by name. The cubins and weights are not shipped; the filter is built only when an installed nvidia-video-filters package provides the VSR data.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_vsr_cuda.c
Change #279873
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5664364466e924a14139df0af662a731856f7acd Comments
avfilter: add isr_cuda, NVIDIA NGX Image Super Resolution Runs the NGX Image Super Resolution network (the NvDLISR snippet nvngx_dlisr.dll), a fidelity-oriented still-image upscaler at a fixed integer 2x, 4x or 8x. It is a different network from vsr_cuda's and is structured differently: it is resolution-independent, running on fixed 256x256 tiles with a 16-pixel overlap, so every per-tile launch carries identical grids, blocks and argument bytes at every input size and only the device pointers differ. Because the scale set is exactly what the snippet validates and there is no resampling path in the graph, the output is always scale x the input -- there is no w/h expression pair as on the VSR filters. Input and output are plain linear device buffers rather than textures and surfaces, so frames are staged through packed scratch; the conversion and tiling kernels are CUDA-runtime functions living in the snippet's fat binaries rather than as loose cubins. Everything else -- module loading, the arena, the weights upload and the output hwframe -- is the shared rtx_cuda core.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_isr_cuda.c
Change #279874
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 47d0aa27ab1029b24e64596773211f1c3e143eb2 Comments
avfilter: add vsr_drv_cuda, the driver RTX VSR network The video super-resolution the NVIDIA driver itself runs (the DXVA/PPE plugin nvaivpx.dll, ppe/features/AIVP), as opposed to the NGX SDK snippet that vsr_cuda drives. It is a newer and heavier network over the same DLPP kernels, with its own quality levels and tunables, and it is worth having both: they do not produce the same picture. The driver numbers its networks 0-4, but they are not ordered by strength and index 0 is a byte-identical duplicate of index 4. Only 1-4 are exposed here: one network reachable under two numbers is a usability trap, not a feature. By fidelity the order runs q1 (most faithful) > q3 > q4 > q2 (most aggressive detail synthesis), so the default is q1. Two things differ from vsr_cuda beyond the tables, and both are visible here: each launch is issued with the kernel's own EIATTR_CBANK_PARAM_SIZE rather than the captured driver argsize, because the driver over-reports by 8 bytes for the two DLPP tex/surf kernels and cuLaunchKernel then fails with CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES; and the graph has only two bindless slots in total -- the input texture at dlpp_preProcess and the output surface at dlpp_postProcess or ResampleAndComposeFP16 -- with no internal surfaces. The graph super-resolves 2x internally: an exact isotropic 2x output stores directly, anything else composes to the requested rectangle.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_vsr_drv_cuda.c
Change #279875
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ee8579987dbe5120e74199a99a883369ece37b44 Comments
avfilter: add dlpp_drv_cuda, the driver DLPP super-resolution network The third super-resolution network in the driver stack: ppe/features/DLPP, driven directly rather than through the AIVP plugin that vsr_drv_cuda uses. It exposes DLPP's own quality levels, which include two high-quality models the AIVP path does not reach. Quality 1 and 2 are the fixed-2x base models and behave like vsr_drv_cuda. Quality 3/4 are the high-quality models, which upscale natively at a chosen integer factor -- the scale option is the driver's own params[0x38] float, which selects the pixel_shuffle2/3/4 super-resolution head. For both, an output at exactly the native factor stores directly and any other size resamples the native result to the requested rectangle. As on vsr_drv_cuda the driver's index 0 is a byte-identical duplicate -- of 1 here rather than of 4 -- and is likewise not exposed, so quality runs 1-4 and defaults to 1. It shares vsr_drv_cuda's two DLPP quirks: launches are issued with the kernel's EIATTR_CBANK_PARAM_SIZE rather than the over-reported driver argsize, and the whole graph has just the two bindless slots.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_dlpp_drv_cuda.c
Change #279876
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7ca18c5f07401a6c967124b3f3533122fa644f10 Comments
avfilter: add truehdr_cuda, NVIDIA RTX TrueHDR inverse tone mapping Expands SDR to HDR with the RTX TrueHDR network from the NGX SDK snippet nvngx_truehdr.dll. Unlike the super-resolution filters it does not rescale: the output resolution equals the input, while the neural core runs at an internal resolution derived from the input aspect ratio (ff_rtx_nn_dims). The two output formats are different colour spaces rather than two bit depths, selected by argument words in the final drtm launch, so the filter tags the output frame to match: rgbaf16le (the default) is scRGB -- linear light, Rec.709 primaries, 1.0 = 80 nits -- and x2bgr10le is display-ready HDR10/BT.2100 with a PQ transfer and Rec.2020 primaries. The four tunables (contrast, saturation, middle grey, peak luminance) are orthogonal overrides in that same block. The input is bound as a PITCH2D texture rather than a CUDA array, which is what the DLL does and what makes 10-bit x2bgr10le input byte-exact against it; the format-agnostic texture read normalizes 8-bit rgb0/rgba and 10-bit alike.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_truehdr_cuda.c
Change #279877
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d8eb6779c3ba0713dc856430b71c816f5191fe22 Comments
avfilter: add truehdr_drv_cuda, the driver RTX TrueHDR network The inverse tone mapping the NVIDIA driver itself runs (the DXVA/PPE plugin nvaihdrx.dll, ppe/features/TrueHDR), as opposed to the NGX SDK snippet that truehdr_cuda drives. Like it, the output resolution equals the input and the neural core runs at ff_rtx_nn_dims' internal resolution; unlike it, the graph carries two internal surfaces -- postprocessing to debanding, and debanding to drtm -- each a float32 array exposed to its producer as a surface and to its consumer as a texture. The tone curve comes entirely out of the final drtm launch's argument block. The captured template runs ToneMapMode 0, a near-linear bypass that reads only MaxLuminance; it is byte-exact against the driver but blows out midtones, so tonemap=1 -- the default -- enables the driver's adaptive inverse tone map, which also consumes the live per-frame calculate_pov scene statistic and is shaped by the tunable floats. This network is considerably brighter than the SDK one, so preset=sdk names a tunable set that pulls its curve onto truehdr_cuda's for a like-for-like comparison.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_truehdr_drv_cuda.c
Change #279878
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 44f50e6eb726319ceff5010f513b35a20a5c51a0 Comments
avfilter: add deepdvc_drv_cuda, NVIDIA RTX Dynamic Vibrance Colour and vibrance enhancement with the driver's DeepDVC network (the DXVA/PPE plugin nvaidvcx.dll, ppe/features/DeepDVC). It is an HDRnet-style learned enhancer: a small CNN predicts a coefficient grid which applyLUTToSurface then applies at full resolution. It is same-resolution and in-place, which shapes the binding: applyLUTToSurface reads and writes one image handle and the downsample kernel reads that same frame, so the whole graph binds a single frame texture. Unified TEXMODE lets one texture handle serve both the sample and the surface store -- a surface handle there fails the TLD. Both tunables, vibrance and gain, are a final blend strength inside applyLUTToSurface, so vibrance=0 is an exact pass-through rather than an approximate one.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_deepdvc_drv_cuda.c
Change #279879
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fe061a2d37ce40ac261ae20947ee446646c4944a Comments
avfilter: add smoothmotion_cuda, NVIDIA Smooth Motion frame interpolation Doubles the frame rate with the frame generator the NVIDIA driver ships as "Smooth Motion" (in libnvidia-present.so). The network is an FP8 conv/attention U-Net; per interpolated frame it runs a fixed 25-launch graph -- downscale, conv/attention backbone, depth_to_space, conv_out for the flow field, then warp_coarse. It emits the t=0.5 midpoint, so it is exact for 2x and the filter offers nothing else. The kernels are fully resolution-parametric: the driver runs the same graph with dimensions, grids, scratch sizes and param-block offsets scaled to the native frame size, without tiling and without resampling to a fixed internal resolution. smoothmotion_cuda_gen.h reproduces that scaling, so arbitrary input sizes work. This one does not use the rtx_cuda core. It is a frame-rate filter rather than a 1:1 one, it drives per-kernel multi-arch fatbins rather than a module list, and it needs YUV input, so it carries its own CUDA kernels (vf_smoothmotion_cuda.cu) to pack the supported 8/10/12/16-bit planar and semi-planar layouts into the packed 4:4:4 the network samples, and to unpack the result. Packed inputs skip that step entirely. The two input frames are bound as bindless textures and the output as a bindless surface; the handles are written into the parameter block by name through sm_fill_params, so the filter never patches the block by byte offset.
Changed files
- configure
- doc/filters.texi
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_smoothmotion_cuda.c
- libavfilter/vf_smoothmotion_cuda.cu
Change #279880
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 11143c0eb094a14f8f3631f352f729e5b3103197 Comments
avfilter/smoothmotion_cuda: build on the shared RTX core This was the last filter standing outside rtx_cuda.c, with its own copy of almost everything the core exists to provide: a libcuda dlopen per filter instance to reach cuSurfObjectCreate, its own module table and loader, its own texture and surface creation, its own device binding and hwframe setup, and a hand-written teardown -- which is where three of the bugs this series fixed came from, all of them things the core had already got right for the other seven. What it adopts: - FFRtxCuda replaces eighteen context members (the device ref, context and stream, the module table and its name-dedup array, the four scratch pointers, the output array and surface, the five pack buffers and their pitch, the four texture handles, and the libcuda handle with its two function pointers). ff_rtx_free_graph() replaces the 56-line teardown; init() disappears entirely, since resolving cuSurfObjectCreate is the core's job and it does it once per process rather than once per filter. - The four scratch buffers become one contiguous ff_rtx_alloc_arena() with the trailing guard the core documents as load-bearing: a tile/halo read past a buffer's end is harmless inside one arena and an ILLEGAL_ADDRESS once separate allocations scatter across a fragmented heap. - The output array and surface, the pack buffers and their input textures become FFRtxImages -- ff_rtx_image_array(FF_RTX_SURF|FF_RTX_LDST) and ff_rtx_image_pitch(FF_RTX_TEX|FF_RTX_CLAMP) build byte-identical descriptors to the ones this filter was writing out by hand. - load_kernels() builds FFRtxModule/FFRtxFunc tables over sm_kernel_names[] and hands them to ff_rtx_load_modules(), which brings the bounds checks and the "no image for this GPU (cc x.y)" diagnostic with it. The conversion PTX is parked one module id past the fatbins so it is unloaded with them. - Weights go through ff_rtx_upload_weights(), so a weights.bin that does not match the graph is the same hard error it is everywhere else rather than a warning and a truncated copy. - config_output() ends in ff_rtx_bind_device / ff_rtx_config_hwframes / ff_rtx_setup. That also settles the output pool size: 4 like its siblings, where this filter alone passed 0. What stays its own, because it genuinely differs: the launch convention (these kernels take a single parameter struct through cuLaunchKernel's kernelParams, not the packed argument buffer the core's replay uses) and the launch list, which sm_fill_params refills every frame; the 25-format pack/unpack model, which FFRtxPixFmt cannot express; and the straight-through RGB path's per-frame textures over the source frames' own memory -- for which the core grew ff_rtx_tex_over_pitch(), so the descriptor is written once rather than twice. Verified bit-exact: framemd5 over fifteen pipelines -- every input family (planar and semi-planar YUV, 4:2:2, packed 4:4:4, 8/10/16-bit, packed RGB, rgba64, x2rgb10/x2bgr10), both `packed` modes and a non-default interpolation window -- is unchanged, as is the output of the other seven filters over the core changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SSFz5UKyF9dSGYVeKioi4n
Changed files
- libavfilter/Makefile
- libavfilter/rtx_cuda.c
- libavfilter/rtx_cuda.h
- libavfilter/vf_smoothmotion_cuda.c
Change #279881
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Fri 07 Aug 2026 17:45:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0db5be95d695cf71ea021fe227703c8ae37c4d0d Comments
avfilter/rtx_cuda: clean up comments
Changed files
- libavfilter/rtx_cuda.c
- libavfilter/rtx_cuda.h
- libavfilter/vf_deepdvc_drv_cuda.c
- libavfilter/vf_dlpp_drv_cuda.c
- libavfilter/vf_isr_cuda.c
- libavfilter/vf_smoothmotion_cuda.c
- libavfilter/vf_truehdr_cuda.c
- libavfilter/vf_truehdr_drv_cuda.c
Change #279882
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Thu 20 Aug 2026 03:25:44 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1f7d511a250ae9f5d0974f2bbd706ac8c67a26f8 Comments
avfilter/smoothmotion_cuda: add field_align, defaulting to exact The generated table can now emit either flow-field geometry. The driver's own is inconsistent at any dimension that is not a multiple of 40: the network built the field at a fixed 10 px per texel, spanning 2.5*L0 pixels, and the warp reads it back as if it spanned the frame, so the flow lands up to 2.5*L0 - dim pixels (worst case 39) from where it was computed -- a ramp, worst at the right/bottom edge. Motion boundaries are what pay for it: measured at 1600x900, 3.2 dB of Y-PSNR frame-wide and 6.9 dB on the leading edge of a moving object. field_align=exact uses the geometry the network actually produced and is the default, since it emits bytes identical to the driver's at every multiple-of-40 size -- which is every display mode Smooth Motion runs at in the driver, and where the whole table was validated. field_align=driver reproduces the driver at the other sizes too, and is what comparing against a capture needs. See docs/smoothmotion/field-alignment.md in the rtx-video-re tree for the measurements and how to repeat them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AGq45TEwHmDoHnSzCYJuP7
Changed files
- libavfilter/vf_smoothmotion_cuda.c
Change #279883
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fd131e79130380a5555679a847ebb38b686f433d Comments
avfilter/vf_nvoffruc: Add filter for nvidia's Optical Flow FRUC library The NvOFFRUC library provides a GPU accelerated interpolation feature based on nvidia's Optical Flow functionality. It's able to provide reasonably high quality realtime interpolation to increase the frame rate of a video stream - as opposed to vf_framerate that just does a linear blend or vf_minterpolate that is anything but realtime. As interesting as that sounds, there are a lot of limitations that mean this filter is mostly just a toy. 1. The licensing is useless. The library and header and distributed as part of the Optical Flow SDK which has a proprietary EULA, so anyone wanting to build the filter must obtain the SDK for both build and runtime and the resulting binaries will be nonfree and unredistributable. 2. The NvOFFRUC.h header doesn't even compile in pure C without modification. 3. The library can only handle NV12 and "ARGB" (which realy means any single plane, four channel, 8 bit format). This means it can't help with our inevitable future dominated by 10+ bit formats. 4. The pitch handling logic in the library is very inflexiable, and it assumes that for NV12, the UV plane is contiguous with the Y plane. This actually ends up making it incompatible with nvdec output for certain frame sizes. To avoid constantly fighting edge cases, I took the brute force approach and copy the input and output frames to/from CUarrays (which the library can accept) to give me a way to ensure the correct layout is used. 5. The library is stateful in an unhelpful way. It is called with one input frame, and one output buffer and always interpolates between the passed input frame and the frame from the previous call. This both requires special handling for the first frame, and also prevents generating more than one intermediate frame. If you want to do 3x or 4x etc interpolation, this approach doesn't work. So, again, I brute forced it by treating every interpolation as a new session - calling it twice with each input frame, even if the first frame happens to be the same as the last frame we called it with. This allows us to generate as many intermediate frames as we want, but it presumably consumes more GPU resources. 6. The library always creates a `NvOFFRUC` directory with an empty log file in it in $PWD. What a niusance. But with all those caveats and limitations, it does actually work. I was able to upsample a 24fps file to 144fps (my monitor limit) with respectable results. In some situations, it starts bogging down, and I'm not entirely sure where those limits are - certainly I can see it consuming a significant percentage of GPU resources for large scaling factors. The implementation here is heavily based on vf_framerate with the blending function ripped out and replaced by NvOFFRUC. That means we have all the nice properties in terms of being able to do non-integer scaling, and downsampling via interpolation as well. Is this mergeable? No - but it was an interesting exercise and maybe folks in narrow circumstances may find some genuine use from it.
Changed files
- configure
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_nvoffruc.c
Change #279884
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 25a955f91a9ce493a521d622238f4b952c258516 Comments
avfilter/vf_nvoffruc: add support for `source_fps` expressions The current code can only accept absolute values for the requested fps, but it's often useful to specify a multiple of the video frame rate. I've borrowed the code from `vf_fps` to implement this. You can read the documentation for that filter to see how to use it, but the TLDR is you can now use `fps=source_fps*2` or a similar expression. It also supports the `ntsc`, `pal`, `film`, and `ntsc_film` aliases from `vf_fps`.
Changed files
- libavfilter/vf_nvoffruc.c
Change #279885
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 43187a7ac5ae56553dfa35ade8adcf1067954ff0 Comments
avfilter/vf_nvoffruc: Drop use of internal.h This was removed in ffmpeg.
Changed files
- libavfilter/vf_nvoffruc.c
Change #279886
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a7a40351bfc6929227ec2defeeb6d3ec32c7ae7d Comments
avfilter/vf_nvoffruc: update to use FFFilter
Changed files
- libavfilter/allfilters.c
- libavfilter/vf_nvoffruc.c
Change #279887
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d3327f9ae9cbba83976735c611c8cd518fbf2cca Comments
avfilter/nvoffruc: add Windows build support This was provided by [Usulyre](https://github.com/Usulyre)
Changed files
- libavfilter/vf_nvoffruc.c
Change #279888
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7a065cfd577634f67941a5eedbd7363d53345b73 Comments
avfilter/nvoffruc: add diff for NvOFFRUC.h Although I cannot distribute the header, I can include the diff that has to be applied to make ffmpeg (or for that matter, anything) compile with it. This diff includes fixes from [Usulyre](https://github.com/Usulyre). Thanks!
Changed files
- libavfilter/nvoffruc-ffmpeg.diff
- libavfilter/vf_nvoffruc.c
Change #279889
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0abbcdbdc4a3d6668bf1fc6022b2e2dffafa7922 Comments
avfilter/nvoffruc: add fallback for new timebase being unexpressible In some situations the derived timebase can be unexpressible using an AVRational, if the denominator is larger than an int. Today this causes the new timebase to collapse to 0/1, which is unusable. In such situations, fall back to using 1/frame_rate as this is significantly better than nothing.
Changed files
- libavfilter/vf_nvoffruc.c
Change #279890
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d42a94ccd889c7caf14479912bd64f5b5fb7dad9 Comments
vf_nvoffruc: update hw_frames_ctx on passthrough frames Fixes frame context mismatch when passthrough or cloned frames don't inherit the output link's hw_frames_ctx, causing hwdownload to fail with 'No frames received' errors.
Changed files
- libavfilter/vf_nvoffruc.c
Change #279891
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ebcbde82969f6bdf57c6b369676500580c41dedc Comments
avfilter/vf_nvoffruc: Add the NvOFFRUC.h header This is not redistributable
Changed files
- libavfilter/NvOFFRUC.h
Change #279892
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a9a90eaa647d4b764244f72d2383e447228c0502 Comments
avfilter/nvoffruc: Add P010 support This assumes the use of my patched library with P010 support, of course.
Changed files
- libavfilter/NvOFFRUC.h
- libavfilter/vf_nvoffruc.c
Change #279893
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b4937a4fbb4f72132b00186055d60818599c7bdc Comments
lavu/hwcontext: reverse order of teardown of frames context and pool This avoids a validation failure saying an image is still in use by a command buffer when the image is destroyed. Reversing the order ensures the command pool and buffers are drained before images are destroyed. It's unclear if this is truly an error - as all the indications are that the buffer in question is properly submitted and completed at the time the image is freed. This change obviously would impact all hwcontexts, but at a glance, no context implementation seems to rely on the pool being freed before the frames context.
Changed files
- libavutil/hwcontext.c
Change #279894
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3d92d5b14421af94c404a17ecef1d8adc83cfb67 Comments
nvdec: Attempt to support h.263 decoding
Changed files
- libavcodec/h263dec.c
- libavcodec/nvdec.c
- libavcodec/nvdec_mpeg4.c
Change #279895
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c9edae942e428419bebb79068037614945cda70c Comments
avformat/hls: Try and mark discontinuous packets
Changed files
- libavformat/hls.c
Change #279896
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:37:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f5b6ea3b65cc9d39556b4a51ca85b4125b6a5569 Comments
avcodec: add bink2 video decoder
Changed files
- configure
- libavcodec/Makefile
- libavcodec/allcodecs.c
- libavcodec/bink2.c
- libavcodec/bink2f.c
- libavcodec/bink2g.c
- libavcodec/codec_desc.c
- libavcodec/codec_id.h
- libavformat/bink.c
Change #279897
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision af0d0cbd57ceb66d219355da30b3678b096a27f5 Comments
avutil/hwcontext_vulkan: fix the GBRAPF16 Vulkan format mapping AV_PIX_FMT_GBRAPF16 is a floating point format, as the name suggests, so it should be mapped to VK_FORMAT_R16_SFLOAT. The comparable GBRPF16 and GBRAPF32 both already use SFLOAT.
Changed files
- libavutil/hwcontext_vulkan.c
Change #279898
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4d8037a8d5adeb327f8836fdb2047aeba56cbcb6 Comments
avutil/hwcontext_vulkan: enable VK_NV_optical_flow Enable VK_NV_optical_flow if it is present, as an optional extension. The extension was added in 1.3.230 which is older than the minimum required header release, so we don't need #ifdef guards.
Changed files
- libavutil/hwcontext_vulkan.c
Change #279899
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision acddf16353d1755052dc49391e906e139a9bf4c0 Comments
avfilter/fruc_vulkan: copy vf_framerate.c verbatim to vf_fruc_vulkan.c The fruc_vulkan filter will re-use the frame timing logic from vf_framerate - it works so we don't need to do something different. To maximise reviewability, this commit simply copies the file into place, so that all the changes in the subsequent commits can be more easily understood.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279900
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b16c028002fca314c41b30e32f16db0462603fa3 Comments
avfilter/fruc_vulkan: wire up filter as a copy of vf_framerate This is the minimal level of renames required to get the new filter to function as a clone of vf_framerate. The context type is inlined from the header, but there are no actual functional changes.
Changed files
- configure
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_fruc_vulkan.c
Change #279901
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b58f426684d5cba48fe39d8b91ef36cdb1fd1f80 Comments
avfilter/fruc_vulkan: evaluate the output frame rate as an expression This change enhances the `fps` parameter to support the `source_fps` expressions from `vf_fps`, which are highly useful if you want to request a multiple of the base frame rate. The NTSC/PAL constants from `vf_fps` are not brought over. These are very unlikely to be useful targets for a filter that is increasing the framerate of a video.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279902
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9f60ec3010a8d93d15f6afd4f436cae82726814b Comments
avfilter/fruc_vulkan: fall back to a plain timebase when reduction degenerates The output timebase is derived, as in vf_fps / vf_framerate, by reducing the source timebase against the requested frame rate. That reduction can collapse to a zero time base - av_reduce() bounds its result, so the numerator can underflow to zero, leaving 0/1 - when the source timebase shares no useful factors with the requested rate, leaving an unusable output timebase that breaks the downstream PTS rescaling. Detect the degenerate result and fall back to the plain 1/fps timebase derived directly from the requested rate, so config_output() always yields a valid timebase.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279903
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0dd13033a18ce7091ac5313c10ccbd0b1a83ed9a Comments
avfilter/fruc_vulkan: turn the filter into a Vulkan filter This change introduces the basic Vulkan filter machinery, while preserving the original vf_framerate timing logic. At this stage, the filter simply picks the temporally closest input frame for the output. Note that while input frames are not modified in anyway, they must be deep-copied for output. This ensures that they match the output context, which may differ from the input context in important way, and avoids extending the lifetime of hardware decoded frames that are part of the decoder's DPB. This requires exposing vkCmdCopyImage in the Vulkan function loader, and a compute queue family and execution pool to record the copy on. The filter depends on vulkan_1_4 for its Vulkan-Headers requirement; while this is not required by any of the code in this commit, the final optical-flow pipeline will need VK_KHR_maintenance9, which first appeared with Vulkan 1.4. To avoid confusion, the requirement is asserted from the beginning.
Changed files
- configure
- libavfilter/Makefile
- libavfilter/vf_fruc_vulkan.c
- libavutil/vulkan_functions.h
Change #279904
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2133f67b2f10262f641d1e9c7e06b8c3f42a9d51 Comments
avutil/vulkan: select nearest mipmap filtering for nearest samplers ff_vk_init_sampler() always used VK_SAMPLER_MIPMAP_MODE_LINEAR for samplers with normalized coordinates. But it is possible to have an image view that uses normalized coordinates while not supporting linear filtering (eg: R16G16_SINT). The simple solution is to always use nearest mipmap filtering if the image filter is nearest.
Changed files
- libavutil/vulkan.c
Change #279905
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d6c932b563599588a67541541ccd0257a86853a5 Comments
avfilter/fruc_vulkan: add the initial optical-flow pipeline Add the Vulkan optical-flow machinery on top of the filter skeleton: * a grayscale-extraction compute shader * the VK_NV_optical_flow session and its persistent input/flow images * the cross-queue (compute -> optical flow -> compute) submission with binary-semaphore ordering * an interpolation compute shader dispatched per output frame which blends each new frame instead of repeating the nearest source frame Notable characteristics: * At this stage we are doing a simple proportional blend that doesn't actually look at the optical flow information. That will happen in the next commit * The optical flow is stored in a weird nvidia specific fixed point image format. Yay? * Optical flow is calculated based purely on Luma. For YUV format, this is trivially obtained, but for RGB input, we should put some effort into getting accurate Luma. But we only need relative Luma differences, so we don't have to use the exactly correct colourspace conversion; I've just hard-coded BT.709 * We're doing host-synchronisation for initial simplicity, but this will get replaced in subsequent changes * The accepted format set is deliberately narrow to begin with: planar and semi-planar YUV, gray, and packed RGB whose sampled channels are already in component order. Subsequent changes will expand the support set. * We rely on VK_KHR_maintenance9 to enable implicit ownership transfers for images between the compute and optical flow queue families.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/Makefile
- libavfilter/vulkan/fruc_grayscale.comp.glsl
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279906
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 70b82911557ea5182f9c082115fedc4a794aeb00 Comments
avfilter/fruc_vulkan: expose optical flow perf level and grid size Add the two options that tune the NV optical flow session: * perf: performance level (slow/medium/fast), previously hard-coded to slow. Trades motion-estimation quality for speed. * grid: output grid size in pixels (auto/1/2/4/8), previously always the finest grid the device supported. A coarser grid computes fewer flow vectors, so it is faster and uses less memory at the cost of detail. These settings are important as you can't handle high resolution input in realtime at the highest quality settings. For example, 2160p24 movie content needs reduced settings (eg: pref=medium,grid=2) for the filter to run comfortably.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
Change #279907
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c3a1b5e0ada46dec6a5257748da15e763f4a4637 Comments
avfilter/fruc_vulkan: warp frames with the computed optical flow Replace the placeholder temporal blend in the interpolation shader with a motion-compensated algorithm. This is finally the point where we are actually using the optical flow information. For each output pixel the source position on the f0 and f1 grids is recovered by fixed-point Picard iteration before the samples are blended. The number of iterations and the relaxation factor are established through empirical testing on a couple of ad-hoc samples, representing highly uniform and non-uniform motion respectively. The approach here is hardly profound, and not meant to be. There are for sure many more advanced algorithms for doing motion interpolation from optical flow, and we can happily replace it with, or add, something more advanced once all the machinery is in place.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279908
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0b8913d087b3157351409d856e42715a07f8f74f Comments
avutil/vulkan: add ff_vk_exec_add_dep_signal_sem Add a helper to register a timeline-semaphore signal with an explicit value on an execution context, mirroring ff_vk_exec_add_dep_wait_sem() on the wait side. The fruc_vulkan filter will use this to chain timeline semaphores across its pipelined cross-queue submissions, where an interpolation must signal a specific (generation-keyed) value rather than the implicit binary signal.
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #279909
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4dc6c1a6288381ea2cc3d8ae7f1936e6697fb3f8 Comments
avfilter/fruc_vulkan: pipeline the cross-queue submissions The grayscale, optical flow and interpolation stages are currently serialised with host fence waits (ff_vk_exec_wait) after each of the the grayscale and optical flow submissions. We can remove these waits and manage everything with timeline semaphores. In particular, we must correctly handle the case where more than one frame is being interpolated per optical flow pair. In these situations, we have multiple interpolations waiting on the optical flow generation, and then we have the next optical flow generation waiting on all the previous interpolations. This requires the ff_vk_exec_add_dep_signal_sem() we added in the previous commit. We also introduce a second context to the optical flow exec pool so that the next command buffer can be recorded without a host-wait for the previous one to retire - but of course, optical flow is serial so the queued one won't actually execute until the previous one completes.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279910
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3f1a8edbb8102f4d9d1d5e36cd5028e526f41a3b Comments
avfilter/fruc_vulkan: double-buffer optical flow resources The grayscale inputs, flow images and optical flow session were a single shared instance, so each source pair's optical flow execution had to wait for the previous pair's interpolations to finish reading the flow images before it could overwrite them, serialising the optical flow engine against the compute queue. Double-buffer the per-pair resources across two slots (the optical flow session bakes in its image bindings, so each slot owns its own session, grayscale and flow images), indexed by the pair generation. One pair's optical flow execution can then run while the previous slot's flow images are still being sampled by the earlier pair's interpolations. The write-after-read fence on slot reuse is tracked per slot (interp_done) instead of against the single shared instance. As the optical flow engine is a single serial unit, more slots can't increase throughput.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279911
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision df77e84cb4f4b3041859692d361af58b5734bcaf Comments
avfilter/fruc_vulkan: suppress spurious flow in featureless regions In textureless regions the optical flow engine has no data to track and its regularizer invents a smooth, often large, and internally self-consistent flow field. Backward warping then traces a background pixel along that invented flow onto a nearby moving object and pulls object pixels into what should be empty background, leaving a ghost outline at a distance from the object where nothing is actually moving. Forward/backward flow consistency does not catch this because the invented flow round-trips cleanly. I have no idea if this is a common limitation in optical flow implementations but it's definitely happening with the nvidia hardware, so this change attempts to introduce a heuristic to work around it. When the luma at a given location is sufficiently identical in both frames, and the optical flow magnitude is sufficiently large, we will now assume that the location is static and the flow is bogus. Genuine motion will usually lead to luma differences, and low magnitude flow will be respected either way. Again, this is all highly empirical, and the constants are justified purely by by fiddling around with specific samples.
Changed files
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279912
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ef7317dc4c3154acd86c1d7c6881fa575f816724 Comments
avfilter/fruc_vulkan: support planar RGB and additional packed formats We have previously only supported some packed RGB and planar YUV, so the logic for extracting the luma was not flexible enough to handle other scenarios. To generalise this for planar RGB, we need to bind every colour plane to the grayscale shader and derive luma from it. Additionally, we add support packed 4:4:4 YUV formats.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_grayscale.comp.glsl
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279913
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:05 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1250049b6f14d06c318f89a6c6d857591649accd Comments
avfilter/fruc_vulkan: don't recalculate warping for every plane The warp calculation is currently done for every plane, but doesn't depend on the plane contents, just the dimensions; so this is wasted work when plane sizes don't vary (eg: RGB, 4:4:4 YUV). This will not have a visible impact on performance at realistic interpolation rates as the optical flow generation is the limiting factor until you are doing something silly like 30->900fps. But wasted work is wasted work, so best to stop doing it.
Changed files
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279914
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:22 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 6dcef57f0c902da2a8e11b839d6af390d981ae96 Comments
Merge branch 'fruc_vulkan_pr'
Changed files
- no files
Change #279915
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 01:38:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 63ee38cd7f181691c5c374f894768e0dff63a7e9 Comments
Merge branch 'nvidia-video-filters'
Changed files
- no files
Change #279916
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aea4deed0c0e61042d64ded8e48df721aaf6aea7 Comments
avutil/hwcontext_vulkan: fix the GBRAPF16 Vulkan format mapping AV_PIX_FMT_GBRAPF16 is a floating point format, as the name suggests, so it should be mapped to VK_FORMAT_R16_SFLOAT. The comparable GBRPF16 and GBRAPF32 both already use SFLOAT.
Changed files
- libavutil/hwcontext_vulkan.c
Change #279917
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e7976dd12f4907c7b020425a193fd88ab5a914f9 Comments
avutil/hwcontext_vulkan: enable VK_NV_optical_flow Enable VK_NV_optical_flow if it is present, as an optional extension. The extension was added in 1.3.230 which is older than the minimum required header release, so we don't need #ifdef guards.
Changed files
- libavutil/hwcontext_vulkan.c
Change #279918
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c6d56731b7ee5e4bc2e069707b3c31af49b8a83d Comments
avfilter/fruc_vulkan: copy vf_framerate.c verbatim to vf_fruc_vulkan.c The fruc_vulkan filter will re-use the frame timing logic from vf_framerate - it works so we don't need to do something different. To maximise reviewability, this commit simply copies the file into place, so that all the changes in the subsequent commits can be more easily understood.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279919
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 91a51a797f78611b177006a2ea68c5250e6ec67d Comments
avfilter/fruc_vulkan: wire up filter as a copy of vf_framerate This is the minimal level of renames required to get the new filter to function as a clone of vf_framerate. The context type is inlined from the header, but there are no actual functional changes.
Changed files
- configure
- libavfilter/Makefile
- libavfilter/allfilters.c
- libavfilter/vf_fruc_vulkan.c
Change #279920
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 642135d007a6f00b408dd3e87c1685727716802f Comments
avfilter/fruc_vulkan: evaluate the output frame rate as an expression This change enhances the `fps` parameter to support the `source_fps` expressions from `vf_fps`, which are highly useful if you want to request a multiple of the base frame rate. The NTSC/PAL constants from `vf_fps` are not brought over. These are very unlikely to be useful targets for a filter that is increasing the framerate of a video.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279921
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0cb9bd6da359465ed0a3af37e4e40b29b34d4b2e Comments
avfilter/fruc_vulkan: fall back to a plain timebase when reduction degenerates The output timebase is derived, as in vf_fps / vf_framerate, by reducing the source timebase against the requested frame rate. That reduction can collapse to a zero time base - av_reduce() bounds its result, so the numerator can underflow to zero, leaving 0/1 - when the source timebase shares no useful factors with the requested rate, leaving an unusable output timebase that breaks the downstream PTS rescaling. Detect the degenerate result and fall back to the plain 1/fps timebase derived directly from the requested rate, so config_output() always yields a valid timebase.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279922
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 67d341f49eba27a8e52404bdce8915ad07a1c12f Comments
avfilter/fruc_vulkan: turn the filter into a Vulkan filter This change introduces the basic Vulkan filter machinery, while preserving the original vf_framerate timing logic. At this stage, the filter simply picks the temporally closest input frame for the output. Note that while input frames are not modified in anyway, they must be deep-copied for output. This ensures that they match the output context, which may differ from the input context in important way, and avoids extending the lifetime of hardware decoded frames that are part of the decoder's DPB. This requires exposing vkCmdCopyImage in the Vulkan function loader, and a compute queue family and execution pool to record the copy on. The filter depends on vulkan_1_4 for its Vulkan-Headers requirement; while this is not required by any of the code in this commit, the final optical-flow pipeline will need VK_KHR_maintenance9, which first appeared with Vulkan 1.4. To avoid confusion, the requirement is asserted from the beginning.
Changed files
- configure
- libavfilter/Makefile
- libavfilter/vf_fruc_vulkan.c
- libavutil/vulkan_functions.h
Change #279923
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 73a353c826633d8414483aab374f5a2c4038b094 Comments
avutil/vulkan: select nearest mipmap filtering for nearest samplers ff_vk_init_sampler() always used VK_SAMPLER_MIPMAP_MODE_LINEAR for samplers with normalized coordinates. But it is possible to have an image view that uses normalized coordinates while not supporting linear filtering (eg: R16G16_SINT). The simple solution is to always use nearest mipmap filtering if the image filter is nearest.
Changed files
- libavutil/vulkan.c
Change #279924
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 2f00078367ee7e297233b042e32ce4221bd84119 Comments
avfilter/fruc_vulkan: add the initial optical-flow pipeline Add the Vulkan optical-flow machinery on top of the filter skeleton: * a grayscale-extraction compute shader * the VK_NV_optical_flow session and its persistent input/flow images * the cross-queue (compute -> optical flow -> compute) submission with binary-semaphore ordering * an interpolation compute shader dispatched per output frame which blends each new frame instead of repeating the nearest source frame Notable characteristics: * At this stage we are doing a simple proportional blend that doesn't actually look at the optical flow information. That will happen in the next commit * The optical flow is stored in a weird nvidia specific fixed point image format. Yay? * Optical flow is calculated based purely on Luma. For YUV format, this is trivially obtained, but for RGB input, we should put some effort into getting accurate Luma. But we only need relative Luma differences, so we don't have to use the exactly correct colourspace conversion; I've just hard-coded BT.709 * We're doing host-synchronisation for initial simplicity, but this will get replaced in subsequent changes * The accepted format set is deliberately narrow to begin with: planar and semi-planar YUV, gray, and packed RGB whose sampled channels are already in component order. Subsequent changes will expand the support set. * We rely on VK_KHR_maintenance9 to enable implicit ownership transfers for images between the compute and optical flow queue families.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/Makefile
- libavfilter/vulkan/fruc_grayscale.comp.glsl
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279925
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 71e5dfbf890e16dcfad53c9d059ee0c32f949a2b Comments
avfilter/fruc_vulkan: expose optical flow perf level and grid size Add the two options that tune the NV optical flow session: * perf: performance level (slow/medium/fast), previously hard-coded to slow. Trades motion-estimation quality for speed. * grid: output grid size in pixels (auto/1/2/4/8), previously always the finest grid the device supported. A coarser grid computes fewer flow vectors, so it is faster and uses less memory at the cost of detail. These settings are important as you can't handle high resolution input in realtime at the highest quality settings. For example, 2160p24 movie content needs reduced settings (eg: pref=medium,grid=2) for the filter to run comfortably.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
Change #279926
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 283565c4c905e3726b8a262e4429a9083c1b2146 Comments
avfilter/fruc_vulkan: warp frames with the computed optical flow Replace the placeholder temporal blend in the interpolation shader with a motion-compensated algorithm. This is finally the point where we are actually using the optical flow information. For each output pixel the source position on the f0 and f1 grids is recovered by fixed-point Picard iteration before the samples are blended. The number of iterations and the relaxation factor are established through empirical testing on a couple of ad-hoc samples, representing highly uniform and non-uniform motion respectively. The approach here is hardly profound, and not meant to be. There are for sure many more advanced algorithms for doing motion interpolation from optical flow, and we can happily replace it with, or add, something more advanced once all the machinery is in place.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279927
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c22044c2502c8aeb8db7814164c2b5d31663fc04 Comments
avutil/vulkan: add ff_vk_exec_add_dep_signal_sem Add a helper to register a timeline-semaphore signal with an explicit value on an execution context, mirroring ff_vk_exec_add_dep_wait_sem() on the wait side. The fruc_vulkan filter will use this to chain timeline semaphores across its pipelined cross-queue submissions, where an interpolation must signal a specific (generation-keyed) value rather than the implicit binary signal.
Changed files
- libavutil/vulkan.c
- libavutil/vulkan.h
Change #279928
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision fa7eebb1c989cc5b5f4f4eabc6c0b3e7e2ad43db Comments
avfilter/fruc_vulkan: pipeline the cross-queue submissions The grayscale, optical flow and interpolation stages are currently serialised with host fence waits (ff_vk_exec_wait) after each of the the grayscale and optical flow submissions. We can remove these waits and manage everything with timeline semaphores. In particular, we must correctly handle the case where more than one frame is being interpolated per optical flow pair. In these situations, we have multiple interpolations waiting on the optical flow generation, and then we have the next optical flow generation waiting on all the previous interpolations. This requires the ff_vk_exec_add_dep_signal_sem() we added in the previous commit. We also introduce a second context to the optical flow exec pool so that the next command buffer can be recorded without a host-wait for the previous one to retire - but of course, optical flow is serial so the queued one won't actually execute until the previous one completes.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279929
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d1f157dcc1609eeecc7c8eba8657072ca1172c2b Comments
avfilter/fruc_vulkan: double-buffer optical flow resources The grayscale inputs, flow images and optical flow session were a single shared instance, so each source pair's optical flow execution had to wait for the previous pair's interpolations to finish reading the flow images before it could overwrite them, serialising the optical flow engine against the compute queue. Double-buffer the per-pair resources across two slots (the optical flow session bakes in its image bindings, so each slot owns its own session, grayscale and flow images), indexed by the pair generation. One pair's optical flow execution can then run while the previous slot's flow images are still being sampled by the earlier pair's interpolations. The write-after-read fence on slot reuse is tracked per slot (interp_done) instead of against the single shared instance. As the optical flow engine is a single serial unit, more slots can't increase throughput.
Changed files
- libavfilter/vf_fruc_vulkan.c
Change #279930
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:53 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a87d92d97523ef43354742c5f9cd12a59c904068 Comments
avfilter/fruc_vulkan: suppress spurious flow in featureless regions In textureless regions the optical flow engine has no data to track and its regularizer invents a smooth, often large, and internally self-consistent flow field. Backward warping then traces a background pixel along that invented flow onto a nearby moving object and pulls object pixels into what should be empty background, leaving a ghost outline at a distance from the object where nothing is actually moving. Forward/backward flow consistency does not catch this because the invented flow round-trips cleanly. I have no idea if this is a common limitation in optical flow implementations but it's definitely happening with the nvidia hardware, so this change attempts to introduce a heuristic to work around it. When the luma at a given location is sufficiently identical in both frames, and the optical flow magnitude is sufficiently large, we will now assume that the location is static and the flow is bogus. Genuine motion will usually lead to luma differences, and low magnitude flow will be respected either way. Again, this is all highly empirical, and the constants are justified purely by by fiddling around with specific samples.
Changed files
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279931
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f6d7c08944f8425b134f3a79b3569b5dadcf42ec Comments
avfilter/fruc_vulkan: support planar RGB and additional packed formats We have previously only supported some packed RGB and planar YUV, so the logic for extracting the luma was not flexible enough to handle other scenarios. To generalise this for planar RGB, we need to bind every colour plane to the grayscale shader and derive luma from it. Additionally, we add support packed 4:4:4 YUV formats.
Changed files
- doc/filters.texi
- libavfilter/vf_fruc_vulkan.c
- libavfilter/vulkan/fruc_grayscale.comp.glsl
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279932
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 964d4786ecea13ddf9354d8c4b0606db33a6067e Comments
avfilter/fruc_vulkan: don't recalculate warping for every plane The warp calculation is currently done for every plane, but doesn't depend on the plane contents, just the dimensions; so this is wasted work when plane sizes don't vary (eg: RGB, 4:4:4 YUV). This will not have a visible impact on performance at realistic interpolation rates as the optical flow generation is the limiting factor until you are doing something silly like 30->900fps. But wasted work is wasted work, so best to stop doing it.
Changed files
- libavfilter/vulkan/fruc_interpolate.comp.glsl
Change #279933
Category ffmpeg Changed by Philip Langdale <philipl@overt.org> Changed at Sun 30 Aug 2026 02:07:54 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d20bae84e0d857d756a7fa8dbe150f7e3da549bd Comments
avfilter: version bump for vf_fruc_vulkan Also update Changelog
Changed files
- Changelog
- libavfilter/version.h
Change #279934
Category ffmpeg Changed by iSold Leo <s@qwqlog.com> Changed at Sun 30 Aug 2026 04:50:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d65fd5581d7e28dc063a35ccb7ef88ee0b7417f5 Comments
avdevice/avfoundation: keep format and frame rate range paired Formats with the same dimensions may expose different frame rates. The selection loop previously updated selected_format for every size match but kept selected_range from an earlier format. This could apply a range to a format that does not support it and make device configuration fail. Only update selected_format together with its matching range. Track a size-only match separately so the muxed-device fallback remains unchanged. Reported-by: MW-de <mw-de@noreply.code.ffmpeg.org> Suggested-by: MW-de <mw-de@noreply.code.ffmpeg.org> Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/22694 Signed-off-by: iSold Leo <s@qwqlog.com>
Changed files
- libavdevice/avfoundation.m
Change #279938
Category ffmpeg Changed by 罗乾林 <luoqianlin@sansi.com> Changed at Sun 30 Aug 2026 05:23:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e5d295b3cd467fc713300e208ba2dacc7ff603a0 Comments
avcodec/mediacodec_wrapper: avoid leaking setBuffer backing storage
Changed files
- libavcodec/mediacodec_wrapper.c
Change #279939
Category ffmpeg Changed by 罗乾林 <luoqianlin@sansi.com> Changed at Sun 30 Aug 2026 05:23:09 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b32f8d1c2377079302d23f82d555d13deda68c57 Comments
avcodec/mediacodecdec: free HEVC SEI parsed from extradata
Changed files
- libavcodec/mediacodecdec.c
Change #279978
Category ffmpeg Changed by Andreas Menze <andreas.menze@hr.de> Changed at Sun 30 Aug 2026 16:27:03 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7bced195dabc09959de95eaa0cd22b2b3df8a7b4 Comments
avformat/wavdec: cache avio_size() before footer seeks Over HTTP, seeking to a trailing chunk can make avio_size() stale, so the PCM duration guard fails and duration is N/A. Cache size before seeking. Fixes #24122
Changed files
- libavformat/wavdec.c
Change #279983
Category ffmpeg Changed by James Almer <jamrial@gmail.com> Changed at Sun 30 Aug 2026 18:03:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 818cecc6e1afab932cf4d40ef0d7b8cd40311a17 Comments
tests/api/movenc: add a test for fragmented output with no samples Covers the fix from 9f35e220ffbba21c88356eb2bbfa3679ede93793. Signed-off-by: James Almer <jamrial@gmail.com>
Changed files
- tests/api/api-movenc-test.c
- tests/ref/fate/api-movenc
Change #280073
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 12:51:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 28ab668edddfa37b09e94b33c19ff4a6ea7fd5a1 Comments
avfilter/vf_scdet: expand format list This filter works by running the SAD function on the first plane, which works for any (native endian) format that starts with an unshifted luma plane. This notably includes formats like nv12, yuva420p, and grayscale formats, as well as luma-alpha formats. The last addition is debatable, but the precedent here is the existing support for RGBA, which also dilutes scene scores by including the alpha component in the SAD calculation). There were also some notable missing packed RGBA formats, such as ARGB, as well as 16-bit variants. This is an exhaustive listing as of the current set of formats. Tested by looping over `format=<pixfmt>,scdet` and verifying that the scene SAD score doesn't (meaningfully) change, except for expected deviations (e.g. larger scores for full range vs limited range, and lowered scores for packed alpha formats). Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/vf_scdet.c
Change #280074
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 12:51:35 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eeca9d9280a92ef1536c154346c126cfb9d0ed6a Comments
avfilter/vf_scdet: add support for MSB-aligned pixel formats This is trivial since the SAD result is already safe to 16 bits, and the result is already normalized by the bit depth. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/vf_scdet.c
Change #280076
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 12:56:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision dec1ffb86d8aa0bad663308fe129253287fba259 Comments
avcodec/j2kenc: fix edge case when packet ends on 0xFF ISO/IEC 15444-1:2002 (E), Annex B.10.1 "Bit-stuffing routine": > The last byte in the packet header shall not be an 0xFF value (thus the > single zero bit stuffed after a byte with 0xFF must be included even if > the 0xFF would otherwise have been the last byte). This matches the behavior seen in the jpeg2000 decoder (jpeg2000_flush), and the behavior of openjpeg. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavcodec/j2kenc.c
Change #280077
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 12:56:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 86416861a717eab0999512075fcb220e06955887 Comments
avcodec/j2kenc: add buffer size check before flushing Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavcodec/j2kenc.c
Change #280078
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 12:56:08 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f88b741dbf242864e0c47b58e59dcbd67207c74b Comments
avcodec/j2kenc: init bitstream after writing SOP Otherwise, *sop remains uninitialized if the sop is written. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavcodec/j2kenc.c
Change #280106
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e768ade128e67a559efe8ae6e4e74acd26209ffc Comments
avfilter/adelay: parse fractional second delays correctly the initial integer scan stores '.' as the suffix for values such as 1.5s, causing them to be interpreted as milliseconds. inspect the actual final suffix instead. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_adelay.c
Change #280107
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 25c2c2338780344df7a8f0c97c81e86513a530f2 Comments
avfilter/adelay: reject delays outside int64 range converting a non-finite or too large sample count to int64_t is undefined. validate the value before conversion. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_adelay.c
Change #280108
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 7f9b5b057cea21f24dc9e0a25e93fd3a07d970cd Comments
avfilter/aderivative: saturate integer differences full-scale transitions overflow or wrap integer sample formats. use saturating subtraction for the integer paths. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_aderivative.c
Change #280109
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4021d0d193932c65cc03a210da7a44c773ce36a5 Comments
avcodec/wavpackenc: handle INT32_MIN samples abs() cannot represent the magnitude of INT32_MIN. labs() has the same issue on platforms where long is 32 bits. use FFABSU for the full signed sample range. Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavcodec/wavpackenc.c
Change #280110
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 71f9ea2d840ee69482c12c79c9987a641331c1f8 Comments
avfilter/aecho: reject non-finite delays and decays Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_aecho.c
Change #280111
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 31e92a56caad583fbe3e868947382f38e8bb6abc Comments
avfilter/firequalizer: reject overflowing delays Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_firequalizer.c
Change #280112
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0ba7514f995eb2d598cc574c7b459cb64e122c86 Comments
avfilter/acrossover: reject non-finite parameters Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_acrossover.c
Change #280113
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 1d49dc80a992b596fbe44d3d90e1d7b10b300091 Comments
avfilter/aiir: reject non-finite parameters Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_aiir.c
Change #280114
Category ffmpeg Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com> Changed at Mon 31 Aug 2026 15:42:52 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 728655e2e7665e9059778953797a98dc6bb9d145 Comments
avfilter/aphaser: clip integer output Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Changed files
- libavfilter/af_aphaser.c
Change #280115
Category ffmpeg Changed by Paulo Cabral Sanz <paulosanz@poli.ufrj.br> Changed at Mon 31 Aug 2026 15:44:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c2394a0ff339484e54f757114dd0e7502fdf2fab Comments
avformat/binka: reject truncated packet reads binka_read_packet() calls avio_read() into a buffer from av_new_packet() and ignores the return value. packet_alloc() only zeroes the 64-byte padding; the payload is left uninitialized. pkt_size is avio_rl16() + 4 (max 65539). On a truncated file the demuxer still returns 0, so av_read_frame delivers up to 64 KiB of uninitialized heap per packet. ffmpeg -c copy writes those bytes into the output. Use ffio_read_size() so a short read fails the packet with AVERROR_INVALIDDATA. Same class as 29f513a (fsb) and 4b47405 (genh). Signed-off-by: Paulo Cabral Sanz <paulosanz@poli.ufrj.br>
Changed files
- libavformat/binka.c
Change #280116
Category ffmpeg Changed by yongdev <yongdev@google.com> Changed at Mon 31 Aug 2026 15:47:25 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c9e36046a338638279782cba4fba3299bf65f46b Comments
libswscale: use unaligned read/write macros in planarCopyWrapper When performing unscaled planar copies or format conversions on 16-bit buffers in planarCopyWrapper, srcPtr2 and dstPtr2 are not guaranteed to be 8-byte aligned (e.g. subsampled chroma planes with non-multiple-of-8 widths/strides or odd slice offsets). AV_RN64A / AV_WN64A and AV_RN32A / AV_WN32A cast pointers to av_alias64 or av_alias32 which have __attribute__((aligned(8))) or aligned(4). Dereferencing unaligned pointers with aligned attribute triggers Undefined Behavior traps (SIGILL / UD1 instruction with Clang -fsanitize=alignment). Replace them with AV_RN64 / AV_WN64 and AV_RN32 / AV_WN32. Signed-off-by: yongdev <yongdev@google.com>
Changed files
- libswscale/swscale_unscaled.c
Change #280137
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 19:22:59 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 486f03997ce4b4ecf61aba0ec14b3aa61f39fc02 Comments
avcodec/aacenc: add option to allow encoding non-PCE 7.1(wide) PCE is not compatible with all downstream sources. Some browsers, for example, will refuse to play an AAC file with a PCE channel layout. So there is a legitimate use case for encoding non-PCE files if required. However, due to the historical work-around where FFmpeg produced out-of-spec files that mislabelled 7.1 as 7.1(wide), we should gate this behind a new option. I considered tying it to -strict 1 (which also disables the equivalent work-around in aacdec), but this may lead to users unknowingly opting into this behavior due to enabling -strict 1 out of habit (or for other reasons). This way, a user who really knows what they're doing can use -af aformat=channel_layouts=7.1(wide) -aac_allow_71wide yes to force producing a spec-compliant non-PCE AAC file. I decided to keep the option undocumented for now, matching the existing `aac_pce` option (also undocumented). The channel IDs were taken by comparing the AAC bitstream channel order: FC, FLC, FRC, FL, FR, BL, BR, LFE Aginst the FFmpeg channel order for 7POINT1_WIDE_BACK: 0=FL 1=FR 2=FC 3=LFE 4=BL 5=BR 6=FLC 7=FRC This gives us {2, 6, 7, 0, 1, 4, 5, 3}. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>Changed files
- libavcodec/aacenc.c
- libavcodec/aacenc.h
- libavcodec/aacenctab.h
Change #280140
Category ffmpeg Changed by Timo Rothenpieler <timo@rothenpieler.org> Changed at Mon 31 Aug 2026 20:09:20 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4efbbd15438413bc2224f15edc4cbb080cd25896 Comments
forgejo/inject-pr-samples: properly flush and close injected sample before hashing
Changed files
- .forgejo/inject-pr-samples.py
Change #280146
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision a28964729781a79e3668f441fde4a9025e537d3e Comments
avcodec/h264dec: add data partitioning fields to H264SliceContext A partitioned slice carries its residual in NAL units of its own, so the decoder needs a bit reader per partition next to the one for partition A. They are values rather than pointers because the slice context is memcpy'd when slices are reordered. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- libavcodec/h264dec.h
Change #280147
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision f017d0eefb27af25d260c34bc96aeaae3bbd8159 Comments
avcodec/h264_slice: parse slice_id from partition A 7.3.2.9.1 appends slice_id to the slice header of a partition A. It is what partitions B and C refer back to, so it has to be read and range checked before they can be matched to their A. 7.4.2.9.1 bounds it by PicSizeInMbs, which is half the frame size for a field picture and for MBAFF. Data partitioning belongs to the Extended profile, which does not allow CABAC, so a PPS asking for it is rejected here. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- libavcodec/h264_slice.c
Change #280148
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0e00e1b3d8c940cba30c084af045859ec8b44ff5 Comments
avcodec/h264: decode slice data partitions B and C Syntax elements of category 2 stay in partition A, category 3 (intra residual) moves to partition B and category 4 (inter residual) to partition C, so CAVLC has to read the residual of each macroblock from the partition that matches its type. A partition that never arrived is reported instead of being read from A. B and C are taken from the NAL units immediately following their A and matched to it by slice_id. Arbitrary slice order may separate them (7.4.1.2.5); that is not supported, and such a stream reports the missing partition instead. Attaching runs while the slice is queued, before any slice is executed, so no partition can arrive too late to be used. ff_h264_queue_decode_slice() reports which context it queued, as a slice opening a second field is moved into slot zero once the pending field has been decoded. Attaching and routing land together on purpose: enabling the partition A path on its own would decode partitioned streams incorrectly instead of reporting them unsupported. hwaccel formats are not offered for a partitioned picture and CODEC_FLAG2_CHUNKS is refused, as both assume one self-contained slice NAL. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- libavcodec/h264_cavlc.c
- libavcodec/h264_slice.c
- libavcodec/h264dec.c
- libavcodec/h264dec.h
Change #280149
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3e59635d1e04bbf29e10e276a027ab9aa1204471 Comments
avcodec/h264_parser: recognise partition A as a picture start parse_nal_units() takes slice_type and the POC fields from the first VCL NAL of a picture, but recognised only plain and IDR slices. A partition A opens with a slice header too, so until now a partitioned stream left the parser reporting no picture type at all. It needs the same leading bytes as any other VCL NAL, so it gets the same source length cap rather than having its whole RBSP extracted. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- libavcodec/h264_parser.c
Change #280150
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 74f1a4a16027331f0e0c95feee6330f29ba18387 Comments
avcodec: add FF_BUG_H264_DP_NNZ 9.2.1 makes an inter neighbour unavailable for the coeff_token nC derivation under constrained intra prediction with slice data partitioning, and step 7 then drops it from the (nA + nB + 1) >> 1 average. JM instead treats it as available with nN = 0, so it still contributes. Every partitioned stream in the wild comes from JM or a derivative, so the decoder has to be able to do both. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- doc/APIchanges
- doc/codecs.texi
- libavcodec/avcodec.h
- libavcodec/options_table.h
- libavcodec/version.h
Change #280151
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e13b8370910351d9601dd9ead7d3ce77fff6869b Comments
avcodec/h264: derive nC for partitioned constrained-intra slices An inter neighbour must not contribute its coefficient count to nC for an intra macroblock when constrained intra prediction and data partitioning are both in use; otherwise decoding partitions A and B alone would depend on data that lives in partition C. The neighbour is kept available with nN = 0, which is what JM does and what the streams it produces expect. FF_BUG_H264_DP_NNZ selects that and is autodetected on the first partition A, while -bug 0 drops the neighbour from the average as 9.2.1 has it. Streams without data partitioning decode identically either way. This replaces a FIXME older than any data partitioning support. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- libavcodec/h264_mvpred.h
- libavcodec/h264dec.c
Change #280152
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5212830ee809d09fec41b220871cb9eeab87716c Comments
Changelog,doc: note H.264 data partitioning support The decoder now handles nal_unit_type 2 to 4. There is no encoder support. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- Changelog
- doc/general_contents.texi
Change #280153
Category ffmpeg Changed by guy-with-a-why <aaron@iterationlab.io> Changed at Mon 31 Aug 2026 20:13:21 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3b5b6298fbf62b4dabf6f8c393ee4deb584246a9 Comments
fate/h264: add slice data partitioning tests Three JM-encoded streams: all three partitions present, partition C legitimately absent, and constrained_intra_pred_flag set, which is the case that exercises the nC derivation of 9.2.1. The last stream is decoded both ways. -bug 0 selects the literal 9.2.1 reading, which desynchronises the residual of a JM-encoded stream; the concealed output then depends on the thread count, so that test pins threads to 1. Signed-off-by: guy-with-a-why <aaron@iterationlab.io>
Changed files
- tests/fate/h264.mak
- tests/ref/fate/h264-data-partitioning
- tests/ref/fate/h264-data-partitioning-ab
- tests/ref/fate/h264-data-partitioning-cip
- tests/ref/fate/h264-data-partitioning-cip-strict
Change #280158
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cf7f75ebf19b52a83003cac5581e2a1e9d40cab3 Comments
avformat/shared: don't acquire more blocks on already errored caches Correctly mirrors the logic used to decide whether to write back to the cache or not. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280159
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3d8488bed763e01e5d833cd253333ee6c0e4b010 Comments
avformat/shared: clean up PENDING state on error/early exit This makes sure threads that fail for reasons other than the underlying I/O failing clean up after their own PENDING state on failure, unless another thread updated the block state in the meantime. Subsumes the existing "is_race" condition, which is inverted to "acquired" that is 1 exactly when we were the thread that set the PENDING state. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280160
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e7965fac92fa5184e1f9ba19fdcf37dff3f68aad Comments
avformat/shared: correctly early-exit on read past last block end Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280161
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 5c07f7d8db791ef9d0f2208be3faf2328aec6ca8 Comments
avformat/shared: early exit on prior spacemap I/O failure The code implicitly assumes that the caller won't re-call read()/seek() after observing a prior AVERROR(EIO). However, this is not necessarily a future-proof guarantee, so it's safer to explicitly re-error in this case. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280162
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 75cf5752574b6f178d12b16cdc82e5d9521affde Comments
avformat/shared: hard-error on -cache_verify data mismatch Makes this debug option way more useful. Also matches the existing behavior on CRC mismatches. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- doc/protocols.texi
- libavformat/shared.c
Change #280163
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4f7a381a0cfdeefb342d37d5640b2349e0da0b22 Comments
avformat/shared: allow interruption during BLOCK_PENDING read loop Also allows nonblocking calls. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280164
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0a83c9660dccf803e260d6e3ca2ab47380457838 Comments
avformat/shared: don't consider EINTR a hard failure Don't trigger `write_err` for this transient failure. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280165
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 83412412a492911609a61c4782e3d9364d9c2b2f Comments
avformat/shared: don't re-read spacemap block size per call This would otherwise trigger OOB/UB if the spacemap header is corrupted. Instead, read it once during init, verify it there, and then cache that file for the remainder of the process. Sponsored-by: nxtedition AB Reported-by: Mateusz Gierblinski <mateusz.gierblinski@curios-it.eu> Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280166
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision aa701bd99f336bfa0e9b1ea94c5824e3ea88441c Comments
avformat/shared: don't re-read spacemap filesize per call See previous commit for justification. This commit also addresses another edge case where we neglected to bounds check the stored filesize against the int64_t limits. Sponsored-by: nxtedition AB Reported-by: Mateusz Gierblinski <mateusz.gierblinski@curios-it.eu> Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280167
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 03a934512d0875d6c7ece802b4c4b9678182332b Comments
avformat/shared: don't try opening spacemap if cache file failed This avoids potentially clobbering `errno` if the s->mapfd fails for a different reason, and is just cleaner in general. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280168
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Mon 31 Aug 2026 21:10:45 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 089a48eb36b2c0d185867522a1fc2613b5bbb96f Comments
avformat/shared: add Spacemap header size assertion Ensures the padding is correctly updated after additions. Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavformat/shared.c
Change #280228
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Mon 31 Aug 2026 23:36:16 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b1f564bda248dbe8ac37cb743966fdd7ee4b490c Comments
hwcontext_vulkan: add support for selecting a device via text-form UUID We had everything we need for years but somehow never did it.
Changed files
- libavutil/hwcontext_vulkan.c
Change #280289
Category ffmpeg Changed by Lynne <dev@lynne.ee> Changed at Tue 01 Sep 2026 12:49:37 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 72e50c4ca1f40d812f202b5608763f0a779b2bf1 Comments
hwcontext_vulkan: use memcmp instead of strncmp when testing the dev UUID Found by Myrsloik, cheers
Changed files
- libavutil/hwcontext_vulkan.c
Change #280290
Category ffmpeg Changed by younengxiao <steven.xiao@amd.com> Changed at Tue 01 Sep 2026 12:59:14 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 44161610904f75b99b3f3ffd6dea4aa096b25516 Comments
avfilter/dnn: fix teardown hang in ONNX backend with nireq >= 2 The ONNX Runtime backend only ever runs one synchronous request, so clamp nireq to 1 at load time (matching the actual allocation) Signed-off-by: younengxiao <steven.xiao@amd.com>
Changed files
- libavfilter/dnn/dnn_backend_onnx.c
Change #280291
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d6820fb8b3b49a7b2cc3fb5d3b379745ebcc97b9 Comments
avfilter/vf_colordetect: add support for full range alpha offset This allows us to add a threshold for alpha comparisons to the full range path as well. The AArch64 changes were LLM-assisted, since I'm not familiar with that architecture. However, the logic checks out to me. Also adjusts the checkasm test to make sure there are no rounding differences between the C and assembly implementations. Tested correct across 100k seeds on x86. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (432788090 cycles) - Random seed: 4076092999 Benchmark results: (old) name cycles (vs ref) detect_alpha_8_full_c: 4670.7 detect_alpha_8_full_avx2: 856.6 ( 5.45x) detect_alpha_8_full_avx512icl: 667.5 ( 7.00x) detect_alpha_16_full_c: 2705.7 detect_alpha_16_full_avx2: 693.1 ( 3.90x) detect_alpha_16_full_avx512icl: 546.4 ( 4.94x) Benchmark results: (new) name cycles (vs ref) detect_alpha_8_full_c: 7988.5 detect_alpha_8_full_avx2: 1078.0 ( 7.41x) detect_alpha_8_full_avx512icl: 876.7 ( 9.11x) detect_alpha_16_full_c: 3734.7 detect_alpha_16_full_avx2: 814.6 ( 4.58x) detect_alpha_16_full_avx512icl: 613.8 ( 6.08x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/aarch64/vf_colordetect_neon.S
- libavfilter/vf_colordetect.c
- libavfilter/vf_colordetectdsp.h
- libavfilter/x86/vf_colordetect.asm
- tests/checkasm/vf_colordetect.c
Change #280292
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8b7e4b74b216cfc86a359e149aee1be7870c98ab Comments
avfilter/vf_colordetect: precompute alpha detection fields In particular, we also store s->mpeg_range explicitly due to the upcoming commit, which will allow these values to deviates between the range detection and alpha mode detection passes. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/vf_colordetect.c
Change #280293
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 0dc120b360b604c3a1505644f0863fb23c35e08c Comments
avfilter/vf_colordetect: add threshold option This is useful to filter false positives due to encoding noise in lossily compressed sources. The reason this is limited to 0.05 (= 5%) is twofold: 1. Higher values would mostly defeat the purpose of this filter, since a deviation of >5% is enough to fully blur the distinction between JPEG and MPEG range, let alone premultiplied and straight alpha. There's no useful signal to extract with such a high tolerance for noise. 2. Higher values would overflow the `offset` value in the 8-bit SIMD. This could also be solved by clamping, but the first point is the salient one anyways. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- doc/filters.texi
- libavfilter/vf_colordetect.c
Change #280294
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9ee7e00bfa9be83d72c572c017030d1b8e5212e4 Comments
avfilter/vf_colordetect: increase threshold default to 0.001 I split this off from the commit adding the option to distinguish between the change in code (which should be a no-op by default) and the change in behavior (which is a deliberate deviation) when bisecting. 0.001 = 0.1% permits just one 10-bit code point of deviation, while requiring tight bounds for 8-bit content. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- doc/filters.texi
- libavfilter/vf_colordetect.c
Change #280295
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4bf82ad8df504cd73373f0c2e1fa1129a792c997 Comments
avfilter/x86/vf_colordetect: split into offset and non-offset variants This partially addresses a a performance regression otherwise introduced by f37b9a3f, which matters especially for 8-bit content where the default threshold value rounds down to an offset of 0. The numbers are still slower than before because the scalar tail handling code is slower by ~200 cycles, since we benchmark across an unaligned width. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (460518890 cycles) - Random seed: 2935750295 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7877.4 detect_alpha_8_full_avx2: 1063.4 ( 7.41x) detect_alpha_8_full_avx512icl: 872.1 ( 9.03x) detect_alpha_8_full_off_c: 7890.3 detect_alpha_8_full_off_avx2: 1085.5 ( 7.27x) detect_alpha_8_full_off_avx512icl: 873.0 ( 9.04x) detect_alpha_16_full_c: 3700.9 detect_alpha_16_full_avx2: 797.7 ( 4.64x) detect_alpha_16_full_avx512icl: 612.1 ( 6.05x) detect_alpha_16_full_off_c: 3701.8 detect_alpha_16_full_off_avx2: 801.2 ( 4.62x) detect_alpha_16_full_off_avx512icl: 684.8 ( 5.41x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/vf_colordetect.c
- libavfilter/vf_colordetectdsp.h
- libavfilter/x86/vf_colordetect.asm
- libavfilter/x86/vf_colordetect_init.c
- tests/checkasm/vf_colordetect.c
Change #280296
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d241c80e59e26eac47d448f54bc3629b75b89f34 Comments
avfilter/x86/vf_colordetect: avoid calling C code for tail handling Instead, we can just call the SIMD function a second time. This will reprocess a few overlapping pixels, but that is safe since this function is read-only and idempotent. We only need to bail to the C function if the overall width is smaller than a single SIMD vector. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (462406519 cycles) - Random seed: 555761032 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7884.5 detect_alpha_8_full_avx2: 439.9 (17.88x) detect_alpha_8_full_avx512icl: 262.8 (30.00x) detect_alpha_8_full_off_c: 7884.0 detect_alpha_8_full_off_avx2: 456.3 (17.27x) detect_alpha_8_full_off_avx512icl: 267.3 (29.49x) detect_alpha_8_limited_c: 13452.5 detect_alpha_8_limited_avx2: 1163.5 (11.56x) detect_alpha_8_limited_avx512icl: 650.9 (20.67x) detect_alpha_16_full_c: 3696.1 detect_alpha_16_full_avx2: 426.4 ( 8.67x) detect_alpha_16_full_avx512icl: 262.6 (14.07x) detect_alpha_16_full_off_c: 3698.7 detect_alpha_16_full_off_avx2: 454.7 ( 8.13x) detect_alpha_16_full_off_avx512icl: 267.1 (13.85x) detect_alpha_16_limited_c: 8215.9 detect_alpha_16_limited_avx2: 1288.4 ( 6.38x) detect_alpha_16_limited_avx512icl: 691.3 (11.88x) detect_range_8_c: 1411.0 detect_range_8_avx2: 281.6 ( 5.01x) detect_range_8_avx512icl: 168.7 ( 8.36x) detect_range_16_c: 1334.4 detect_range_16_avx2: 228.6 ( 5.83x) detect_range_16_avx512icl: 139.7 ( 9.50x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libavfilter/x86/vf_colordetect_init.c
Change #280297
Category ffmpeg Changed by Niklas Haas <git@haasn.dev> Changed at Tue 01 Sep 2026 13:15:06 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision adacc96aa789602d6cc36350f0b9f27f59ece540 Comments
tests/checkasm/vf_colordetect: benchmark on aligned width This gives a more faithful representation of the SIMD speedup, as the unaligned checkasm test case size is not representative of typical inputs. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (432431813 cycles) - Random seed: 2646589325 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7335.9 detect_alpha_8_full_avx2: 396.2 (18.51x) detect_alpha_8_full_avx512icl: 191.0 (38.41x) detect_alpha_8_full_off_c: 7324.1 detect_alpha_8_full_off_avx2: 404.0 (18.13x) detect_alpha_8_full_off_avx512icl: 199.1 (36.74x) detect_alpha_8_limited_c: 12848.8 detect_alpha_8_limited_avx2: 1088.7 (11.80x) detect_alpha_8_limited_avx512icl: 563.7 (22.79x) detect_alpha_16_full_c: 3360.0 detect_alpha_16_full_avx2: 391.8 ( 8.57x) detect_alpha_16_full_avx512icl: 190.5 (17.64x) detect_alpha_16_full_off_c: 3362.8 detect_alpha_16_full_off_avx2: 404.9 ( 8.31x) detect_alpha_16_full_off_avx512icl: 200.3 (16.76x) detect_alpha_16_limited_c: 7771.7 detect_alpha_16_limited_avx2: 1210.8 ( 6.42x) detect_alpha_16_limited_avx512icl: 603.6 (12.88x) detect_range_8_c: 1233.1 detect_range_8_avx2: 254.9 ( 4.84x) detect_range_8_avx512icl: 134.0 ( 9.20x) detect_range_16_c: 1172.2 detect_range_16_avx2: 177.9 ( 6.58x) detect_range_16_avx512icl: 96.0 (12.20x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- tests/checkasm/vf_colordetect.c
Change #280306
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 01 Sep 2026 13:45:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision cd352f0b1d1ad7a74460b6e83132bac8b94cafa0 Comments
tests/fate/filter-video: Detect peaks in ebur128 filter test Reviewed-by: Niklas Haas <ffmpeg@haasn.dev> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- tests/fate/filter-video.mak
- tests/ref/fate/filter-metadata-ebur128
Change #280307
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Tue 01 Sep 2026 13:45:56 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision c27482a18d7e63a2680638929359a82790eb7631 Comments
avfilter/x86/f_ebur128: Avoid unnecessary movq For all supported x86 ABIs, floating point values are returned in xmm0, not in rax. Reviewed-by: Niklas Haas <ffmpeg@haasn.dev> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavfilter/x86/f_ebur128.asm
Change #280380
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Wed 02 Sep 2026 00:49:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 905ef92f022ac658caf3e50244deeb2d9e6f262d Comments
avformat/sierravmd: require a 6bit palette in the probe vmdvideo_decode_init() loads a 768 byte VGA palette from header offset 28 and scales each entry by 4, so every one of these bytes is 6bit in a file that carries a video stream. Rejecting a larger value keeps raw video from being mistaken for VMD: a yuv420p10le file starting with 0x2e 0x03 matches the header size field and then scores the same 50 as the rawvideo demuxer picked by the .yuv extension, which leaves the format undetermined and fails the whole conversion. The 26 files with a video stream on samples.ffmpeg.org/game-formats/ sierra-vmd/ all pass; the 9 audio only ones there hold unrelated data at offset 28 and are exempted by the width and height test. Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/22284
Changed files
- libavformat/sierravmd.c
Change #280389
Category ffmpeg Changed by Zuxy Meng <zuxy.meng@gmail.com> Changed at Wed 02 Sep 2026 04:47:55 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3bec079933ca6d5e50e9e307a597b27cab47e288 Comments
checkasm/h264: add weight tests Also fixed a bug in handling negative weights in x86 10-bit asm implementation found by the newly added tests. Weight isn't enabled for neon as it can fail at certain edge cases. Bi-weight test is only enabled on x86 as other archs cannot pass it yet. Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>
Changed files
- libavcodec/x86/h264_weight_10bit.asm
- tests/checkasm/h264dsp.c
Change #280411
Category ffmpeg Changed by zhanghongyuan <zhanghongyuan@uniontech.com> Changed at Wed 02 Sep 2026 09:22:39 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 3c517709ffcf5633bea8ee4fae4757b667c46e23 Comments
fftools/cmdutils: fix typo in tile_grid usable_only check The second condition duplicated the nb_tiles check instead of verifying that offsets is allocated. Signed-off-by: zhanghongyuan <zhanghongyuan@uniontech.com>
Changed files
- fftools/cmdutils.c
Change #280412
Category ffmpeg Changed by tangsha <tangsha@kylinos.cn> Changed at Wed 02 Sep 2026 09:23:32 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 9fc8c785e2747c87121ec28f8f10ceab0562384b Comments
avutil/encryption_info: reject init info with zero-sized key IDs av_encryption_init_info_alloc() only allocates key_ids when key_id_size is non-zero, but stores num_key_ids regardless. If num_key_ids is non-zero and key_id_size is 0, the returned object has a NULL key_ids array alongside a non-zero num_key_ids. av_encryption_init_info_free(), av_encryption_init_info_get_side_data() and av_encryption_init_info_add_side_data() then loop over num_key_ids and dereference key_ids[i], leading to a null pointer dereference. Reject the num_key_ids > 0 && key_id_size == 0 combination instead of returning an inconsistent object. Signed-off-by: tangsha <tangsha@kylinos.cn>
Changed files
- libavutil/encryption_info.c