Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Builder ffmpeg64-solaris10-i386 Build #14066

Results:

Failed shell_2 shell_3 shell_4 shell_5

SourceStamp:

Projectffmpeg
Repositoryhttps://git.ffmpeg.org/ffmpeg.git
Branchmaster
Revision9fc8c785e2747c87121ec28f8f10ceab0562384b
Got Revision9fc8c785e2747c87121ec28f8f10ceab0562384b
Changes1072 changes

BuildSlave:

unstable10x

Reason:

The SingleBranchScheduler scheduler named 'schedule-ffmpeg64-solaris10-i386' triggered this build

Steps and Logfiles:

  1. git update ( 35 secs )
    1. stdio
  2. shell 'gsed -i ...' ( 0 secs )
    1. stdio
  3. shell_1 'gsed -i ...' ( 0 secs )
    1. stdio
  4. shell_2 'gsed -i ...' failed ( 0 secs )
    1. stdio
  5. shell_3 './configure --samples="../../../ffmpeg/fate-suite" ...' failed ( 7 secs )
    1. stdio
    2. config.log
  6. shell_4 'gmake fate-rsync' failed ( 0 secs )
    1. stdio
  7. shell_5 '../../../ffmpeg/fate.sh ../../../ffmpeg/fate_config_64.sh' failed ( 0 secs )
    1. stdio
    2. configure.log
    3. compile.log
    4. test.log

Build Properties:

NameValueSource
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:

NameLabelValue

Responsible Users:

  1. Abdessamie
  2. Ackanir
  3. Aleksander Shveikin
  4. Andreas Menze
  5. Andreas Rheinhardt
  6. Anxious Koisi
  7. Araz Iusubov
  8. Ayoub Nabil
  9. Ayoub Nabil Boubagrat
  10. Brad Smith
  11. Brian Leake
  12. Charly Morgand-Poyac
  13. Christopher Decker
  14. Cloud-LHY
  15. Dan Dennedy
  16. Daniel Verkamp
  17. David Rosca
  18. Diego de Souza
  19. Dmitrii Gershenkop
  20. Frank Plowman
  21. Gabriel Balaich
  22. Guo Yejun
  23. Hans-Kristian Arntzen
  24. Hao Chen
  25. Haochen Chen
  26. Hawthorn
  27. Hunter Kvalevog
  28. J. Brandt Buckley
  29. Jack Lau
  30. Jamaika1
  31. James Almer
  32. Jeongkeun Kim
  33. Jiale Yao
  34. Joshua Rogers
  35. Julius Bairaktaris
  36. Jun Zhao
  37. KO Myung-Hun
  38. Kacper Michajłow
  39. KawaiiEngine (Sashimiso)
  40. Kenan Alghythee
  41. Kirill A. Korinsky
  42. Kostazol
  43. Leo Izen
  44. Lynne
  45. Marcos Ashton Iglesias
  46. Martin Storsjö
  47. Marvin Scholz
  48. Michael Niedermayer
  49. Michael Partridge
  50. Mirkó Visontai
  51. Nathan Lucas
  52. Nicolas Gaullier
  53. Nicolas George
  54. Niklas Haas
  55. Nil Fons Miret
  56. Omkhar Arasaratnam
  57. Paulo Cabral Sanz
  58. Pavel Kohout
  59. Philip Langdale
  60. Raja-89
  61. Ramiro Polla
  62. Reda DRISSI
  63. Romain Beauxis
  64. Scott Kidder
  65. Shiyou Yin
  66. Shreesh Adiga
  67. StachowiakDawid
  68. Steve Lhomme
  69. Steven Liu
  70. Sylvestre Ledru
  71. Thomas Guilbert
  72. Théo Valette
  73. Timo Rothenpieler
  74. Tobias Rapp
  75. Tristan Matthews
  76. Tymur Boiko
  77. Umar Pathan
  78. Vignesh Venkat
  79. Vladimir Panteleev
  80. Vladimir Panteleev
  81. Wu Jianhua
  82. WyattBlue
  83. Zhao Zhili
  84. Zhao Zhili
  85. Zsolt Vadasz
  86. Zuxy Meng
  87. adorn
  88. almogyalin
  89. deng.zewen
  90. guy-with-a-why
  91. iSold Leo
  92. jiangjie
  93. lck
  94. marcos ashton
  95. ninbura
  96. panboxiaosa
  97. qaq03101
  98. sfan5
  99. shadowcaster3
  100. softworkz
  101. tangsha
  102. tknaveen
  103. unfunnyatearug
  104. wang-bin
  105. wangbin
  106. wangnov
  107. yongdev
  108. younengxiao
  109. yuanhecai
  110. zhanghongyuan
  111. zhorzhetta1404-ux
  112. 张永鹏
  113. 罗乾林

Timing:

StartThu Sep 3 14:50:27 2026
EndThu Sep 3 14:51:14 2026
Elapsed47 secs

All Changes:

:

  1. Change #273322

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  2. Change #273348

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  3. Change #273349

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  4. Change #273391

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  5. Change #273407

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  6. Change #273433

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  7. Change #273434

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  8. Change #273435

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  9. Change #273436

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  10. Change #273438

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  11. Change #273439

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  12. Change #273440

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  13. Change #273441

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  14. Change #273494

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  15. Change #273495

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  16. Change #273496

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  17. Change #273497

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  18. Change #273498

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  19. Change #273499

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  20. Change #273500

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  21. Change #273502

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  22. Change #273512

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  23. Change #273542

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  24. Change #273545

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  25. Change #273563

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  26. Change #273589

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  27. Change #273590

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  28. Change #273591

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  29. Change #273592

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  30. Change #273593

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  31. Change #273594

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  32. Change #273595

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  33. Change #273596

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  34. Change #273597

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  35. Change #273598

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  36. Change #273599

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  37. Change #273628

    Category ffmpeg
    Changed by Thomas Guilbert <tguilbertohnoyoudont@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
  38. Change #273629

    Category ffmpeg
    Changed by Thomas Guilbert <tguilbertohnoyoudont@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
  39. Change #273630

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  40. Change #273631

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  41. Change #273643

    Category ffmpeg
    Changed by wangbin <wbsecg1ohnoyoudont@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
  42. Change #273648

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  43. Change #273649

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  44. Change #273650

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  45. Change #273651

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  46. Change #273652

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  47. Change #273653

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  48. Change #273654

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  49. Change #273655

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  50. Change #273656

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  51. Change #273657

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  52. Change #273658

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  53. Change #273659

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  54. Change #273665

    Category ffmpeg
    Changed by Shreesh Adiga <16567adigashreeshohnoyoudont@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
  55. Change #273667

    Category ffmpeg
    Changed by Shreesh Adiga <16567adigashreeshohnoyoudont@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
  56. Change #273677

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  57. Change #273713

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  58. Change #273714

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  59. Change #273719

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  60. Change #273720

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  61. Change #273721

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  62. Change #273722

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  63. Change #273723

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  64. Change #273724

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  65. Change #273725

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  66. Change #273726

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  67. Change #273731

    Category ffmpeg
    Changed by Marvin Scholz <epirat07ohnoyoudont@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
  68. Change #273732

    Category ffmpeg
    Changed by Marvin Scholz <epirat07ohnoyoudont@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
  69. Change #273733

    Category ffmpeg
    Changed by Marvin Scholz <epirat07ohnoyoudont@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
  70. Change #273734

    Category ffmpeg
    Changed by Marvin Scholz <epirat07ohnoyoudont@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
  71. Change #273735

    Category ffmpeg
    Changed by Marvin Scholz <epirat07ohnoyoudont@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
  72. Change #273742

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  73. Change #273743

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  74. Change #273744

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  75. Change #273746

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  76. Change #273770

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  77. Change #273771

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  78. Change #273772

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  79. Change #273811

    Category ffmpeg
    Changed by Anxious Koisi <ddoaoingohnoyoudont@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
  80. Change #273812

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  81. Change #273846

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  82. Change #273848

    Category ffmpeg
    Changed by Hunter Kvalevog <hunterohnoyoudont@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
  83. Change #273851

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  84. Change #273858

    Category ffmpeg
    Changed by tknaveen <unbornboron69ohnoyoudont@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
  85. Change #273871

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  86. Change #273872

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  87. Change #273873

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  88. Change #273874

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  89. Change #273922

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  90. Change #273936

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  91. Change #273947

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  92. Change #273950

    Category ffmpeg
    Changed by Jack Lau <jacklau1222gmohnoyoudont@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
  93. Change #273984

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  94. Change #274029

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  95. Change #274030

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  96. Change #274031

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  97. Change #274032

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  98. Change #274033

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  99. Change #274034

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  100. Change #274035

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  101. Change #274036

    Category ffmpeg
    Changed by Vladimir Panteleev <gitohnoyoudont@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
  102. Change #274037

    Category ffmpeg
    Changed by Vladimir Panteleev <gitohnoyoudont@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
  103. Change #274038

    Category ffmpeg
    Changed by Vladimir Panteleev <gitohnoyoudont@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
  104. Change #274039

    Category ffmpeg
    Changed by Vladimir Panteleev <gitohnoyoudont@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
  105. Change #274040

    Category ffmpeg
    Changed by Omkhar Arasaratnam <omkharohnoyoudont@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
  106. Change #274041

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  107. Change #274042

    Category ffmpeg
    Changed by Zhao Zhili <quinkblackohnoyoudont@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
  108. Change #274043

    Category ffmpeg
    Changed by Zhao Zhili <quinkblackohnoyoudont@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
  109. Change #274044

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  110. Change #274054

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  111. Change #274081

    Category ffmpeg
    Changed by Pavel Kohout <disclosureohnoyoudont@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
  112. Change #274089

    Category ffmpeg
    Changed by Tristan Matthews <tmatthohnoyoudont@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
  113. Change #274122

    Category ffmpeg
    Changed by Jamaika1 <lukaszcz18ohnoyoudont@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
  114. Change #274123

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  115. Change #274126

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  116. Change #274127

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  117. Change #274211

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  118. Change #274212

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  119. Change #274213

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  120. Change #274233

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  121. Change #274234

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  122. Change #274264

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  123. Change #274265

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  124. Change #274277

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  125. Change #274278

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  126. Change #274279

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  127. Change #274280

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  128. Change #274281

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  129. Change #274284

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  130. Change #274285

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  131. Change #274287

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  132. Change #274289

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  133. Change #274290

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  134. Change #274291

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  135. Change #274292

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  136. Change #274293

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  137. Change #274297

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  138. Change #274298

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  139. Change #274299

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  140. Change #274300

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  141. Change #274301

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  142. Change #274302

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  143. Change #274346

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  144. Change #274352

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  145. Change #274356

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  146. Change #274357

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  147. Change #274394

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  148. Change #274415

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  149. Change #274430

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  150. Change #274446

    Category ffmpeg
    Changed by Vignesh Venkat <vigneshvohnoyoudont@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
  151. Change #274447

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  152. Change #274449

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  153. Change #274474

    Category ffmpeg
    Changed by Tobias Rapp <t.rappohnoyoudont@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
  154. Change #274504

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  155. Change #274509

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  156. Change #274510

    Category ffmpeg
    Changed by Nil Fons Miret <nilfohnoyoudont@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
  157. Change #274514

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  158. Change #274520

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  159. Change #274521

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  160. Change #274522

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  161. Change #274523

    Category ffmpeg
    Changed by Charly Morgand-Poyac <charly.morgand-poyacohnoyoudont@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
  162. Change #274524

    Category ffmpeg
    Changed by Charly Morgand-Poyac <charly.morgand-poyacohnoyoudont@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
  163. Change #274525

    Category ffmpeg
    Changed by Charly Morgand-Poyac <charly.morgand-poyacohnoyoudont@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
  164. Change #274526

    Category ffmpeg
    Changed by Charly Morgand-Poyac <charly.morgand-poyacohnoyoudont@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
  165. Change #274527

    Category ffmpeg
    Changed by Charly Morgand-Poyac <charly.morgand-poyacohnoyoudont@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
  166. Change #274531

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  167. Change #274534

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  168. Change #274537

    Category ffmpeg
    Changed by KawaiiEngine (Sashimiso) <209421934+KawaiiEngineohnoyoudont@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
  169. Change #274539

    Category ffmpeg
    Changed by Frank Plowman <postohnoyoudont@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
  170. Change #274542

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  171. Change #274543

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  172. Change #274544

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  173. Change #274545

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  174. Change #274546

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  175. Change #274547

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  176. Change #274548

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  177. Change #274549

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  178. Change #274550

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  179. Change #274551

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  180. Change #274552

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  181. Change #274553

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  182. Change #274554

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  183. Change #274555

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  184. Change #274557

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  185. Change #274561

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  186. Change #274562

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  187. Change #274563

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  188. Change #274564

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  189. Change #274565

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  190. Change #274616

    Category ffmpeg
    Changed by Shreesh Adiga <16567adigashreeshohnoyoudont@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
  191. Change #274639

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  192. Change #274641

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  193. Change #274642

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  194. Change #274643

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  195. Change #274644

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  196. Change #274645

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  197. Change #274646

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  198. Change #274647

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  199. Change #274648

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  200. Change #274649

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  201. Change #274650

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  202. Change #274651

    Category ffmpeg
    Changed by Jiale Yao <yaojiale02ohnoyoudont@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
  203. Change #274652

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  204. Change #274717

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  205. Change #274718

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  206. Change #274719

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  207. Change #274720

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  208. Change #274721

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  209. Change #274722

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  210. Change #274723

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  211. Change #274724

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  212. Change #274795

    Category ffmpeg
    Changed by Cloud-LHY <securityohnoyoudont@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
  213. Change #274800

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  214. Change #274803

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  215. Change #274806

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  216. Change #274809

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  217. Change #274810

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  218. Change #274811

    Category ffmpeg
    Changed by Araz Iusubov <Primeadviceohnoyoudont@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
  219. Change #274812

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  220. Change #274813

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  221. Change #274814

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  222. Change #274815

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  223. Change #274816

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  224. Change #274817

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  225. Change #274818

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  226. Change #274819

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  227. Change #274820

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  228. Change #274821

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  229. Change #274822

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  230. Change #274823

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  231. Change #274824

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  232. Change #274825

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  233. Change #274826

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  234. Change #274831

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  235. Change #274844

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  236. Change #274845

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  237. Change #274859

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  238. Change #274861

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  239. Change #274862

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  240. Change #274863

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  241. Change #274864

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  242. Change #274865

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  243. Change #274866

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  244. Change #274867

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  245. Change #274868

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  246. Change #274869

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  247. Change #274876

    Category ffmpeg
    Changed by lck <luckyskohnoyoudont@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
  248. Change #274877

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  249. Change #274893

    Category ffmpeg
    Changed by Vignesh Venkat <vigneshvohnoyoudont@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
  250. Change #274894

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  251. Change #274895

    Category ffmpeg
    Changed by Vignesh Venkat <vigneshvohnoyoudont@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
  252. Change #274896

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  253. Change #274897

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  254. Change #274898

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  255. Change #274899

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  256. Change #274900

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  257. Change #274901

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  258. Change #274902

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  259. Change #274903

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  260. Change #274917

    Category ffmpeg
    Changed by zhanghongyuan <zhanghongyuanohnoyoudont@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
  261. Change #274925

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  262. Change #274933

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  263. Change #274934

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  264. Change #274935

    Category ffmpeg
    Changed by Thomas Guilbert <tguilbertohnoyoudont@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
  265. Change #274936

    Category ffmpeg
    Changed by Mirkó Visontai <mirkovohnoyoudont@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
  266. Change #274955

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  267. Change #275023

    Category ffmpeg
    Changed by Hans-Kristian Arntzen <postohnoyoudont@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
  268. Change #275024

    Category ffmpeg
    Changed by Hans-Kristian Arntzen <postohnoyoudont@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
  269. Change #275025

    Category ffmpeg
    Changed by Hans-Kristian Arntzen <postohnoyoudont@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
  270. Change #275026

    Category ffmpeg
    Changed by Hans-Kristian Arntzen <postohnoyoudont@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
  271. Change #275029

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  272. Change #275030

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  273. Change #275031

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  274. Change #275032

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  275. Change #275033

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  276. Change #275034

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  277. Change #275035

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  278. Change #275036

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  279. Change #275037

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  280. Change #275040

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  281. Change #275041

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  282. Change #275043

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  283. Change #275068

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  284. Change #275073

    Category ffmpeg
    Changed by Vignesh Venkat <vigneshvohnoyoudont@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
  285. Change #275074

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  286. Change #275077

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  287. Change #275081

    Category ffmpeg
    Changed by deng.zewen <deng.zewenohnoyoudont@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
  288. Change #275110

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  289. Change #275111

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  290. Change #275112

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  291. Change #275113

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  292. Change #275114

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  293. Change #275115

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  294. Change #275116

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  295. Change #275117

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  296. Change #275118

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  297. Change #275148

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  298. Change #275151

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  299. Change #275152

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  300. Change #275153

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  301. Change #275154

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  302. Change #275155

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  303. Change #275156

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  304. Change #275157

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  305. Change #275158

    Category ffmpeg
    Changed by 张永鹏 <roc63ohnoyoudont@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
  306. Change #275159

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  307. Change #275165

    Category ffmpeg
    Changed by Kirill A. Korinsky <kirillohnoyoudont@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
  308. Change #275166

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  309. Change #275168

    Category ffmpeg
    Changed by Omkhar Arasaratnam <omkharohnoyoudont@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
  310. Change #275169

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  311. Change #275170

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  312. Change #275171

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  313. Change #275172

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  314. Change #275173

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  315. Change #275174

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  316. Change #275175

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  317. Change #275176

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  318. Change #275177

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  319. Change #275178

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  320. Change #275179

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  321. Change #275180

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  322. Change #275181

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  323. Change #275182

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  324. Change #275183

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  325. Change #275184

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  326. Change #275185

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  327. Change #275186

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  328. Change #275187

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  329. Change #275188

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  330. Change #275189

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  331. Change #275190

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  332. Change #275191

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  333. Change #275192

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  334. Change #275193

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  335. Change #275194

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  336. Change #275195

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  337. Change #275196

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  338. Change #275200

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  339. Change #275201

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  340. Change #275202

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  341. Change #275227

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  342. Change #275249

    Category ffmpeg
    Changed by sfan5 <sfan5ohnoyoudont@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
  343. Change #275250

    Category ffmpeg
    Changed by sfan5 <sfan5ohnoyoudont@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
  344. Change #275322

    Category ffmpeg
    Changed by StachowiakDawid <dawidos234ohnoyoudont@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
  345. Change #275326

    Category ffmpeg
    Changed by David Rosca <david.roscaohnoyoudont@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
  346. Change #275327

    Category ffmpeg
    Changed by David Rosca <david.roscaohnoyoudont@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
  347. Change #275378

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  348. Change #275379

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  349. Change #275380

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  350. Change #275403

    Category ffmpeg
    Changed by Leo Izen <leo.izenohnoyoudont@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
  351. Change #275408

    Category ffmpeg
    Changed by KawaiiEngine (Sashimiso) <209421934+KawaiiEngineohnoyoudont@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
  352. Change #275409

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  353. Change #275410

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  354. Change #275411

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  355. Change #275473

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  356. Change #275474

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  357. Change #275475

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  358. Change #275477

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  359. Change #275479

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  360. Change #275481

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  361. Change #275483

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  362. Change #275485

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  363. Change #275487

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  364. Change #275488

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  365. Change #275489

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  366. Change #275490

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  367. Change #275491

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  368. Change #275492

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  369. Change #275493

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  370. Change #275494

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  371. Change #275495

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  372. Change #275496

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  373. Change #275497

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  374. Change #275498

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  375. Change #275499

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  376. Change #275500

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  377. Change #275501

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  378. Change #275502

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  379. Change #275503

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  380. Change #275504

    Category ffmpeg
    Changed by Ramiro Polla <ramiro.pollaohnoyoudont@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
  381. Change #275511

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  382. Change #275543

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  383. Change #275558

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  384. Change #275559

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  385. Change #275561

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  386. Change #275572

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  387. Change #275634

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  388. Change #275647

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  389. Change #275648

    Category ffmpeg
    Changed by Marcos Ashton Iglesias <marcosashiglesiasohnoyoudont@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
  390. Change #275667

    Category ffmpeg
    Changed by Jun Zhao <barryjzhaoohnoyoudont@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
  391. Change #275709

    Category ffmpeg
    Changed by Guo Yejun <yejun.guoohnoyoudont@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
  392. Change #275718

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  393. Change #275789

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  394. Change #275790

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  395. Change #275791

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  396. Change #275792

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  397. Change #275793

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  398. Change #275794

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  399. Change #275795

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  400. Change #275796

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  401. Change #275797

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  402. Change #275798

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  403. Change #275799

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  404. Change #275800

    Category ffmpeg
    Changed by wang-bin <wbsecg1ohnoyoudont@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
  405. Change #275822

    Category ffmpeg
    Changed by Guo Yejun <yejun.guoohnoyoudont@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
  406. Change #275945

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  407. Change #275946

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  408. Change #275947

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  409. Change #275948

    Category ffmpeg
    Changed by Steven Liu <lqohnoyoudont@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
  410. Change #275972

    Category ffmpeg
    Changed by Nathan Lucas <nlucasgitohnoyoudont@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
  411. Change #275973

    Category ffmpeg
    Changed by Nathan Lucas <nlucasgitohnoyoudont@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
  412. Change #276042

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  413. Change #276073

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  414. Change #276074

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  415. Change #276075

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  416. Change #276098

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  417. Change #276099

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  418. Change #276100

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  419. Change #276116

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  420. Change #276146

    Category ffmpeg
    Changed by Nicolas George <georgeohnoyoudont@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
  421. Change #276149

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  422. Change #276150

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  423. Change #276151

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  424. Change #276152

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  425. Change #276153

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  426. Change #276154

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  427. Change #276155

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  428. Change #276157

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  429. Change #276158

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  430. Change #276159

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  431. Change #276160

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  432. Change #276161

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  433. Change #276162

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  434. Change #276163

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  435. Change #276164

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  436. Change #276165

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  437. Change #276166

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  438. Change #276167

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  439. Change #276168

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  440. Change #276169

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  441. Change #276170

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  442. Change #276171

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  443. Change #276172

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  444. Change #276173

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  445. Change #276174

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  446. Change #276175

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  447. Change #276176

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  448. Change #276177

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  449. Change #276178

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  450. Change #276179

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  451. Change #276180

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  452. Change #276181

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  453. Change #276182

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  454. Change #276183

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  455. Change #276184

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  456. Change #276185

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  457. Change #276186

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  458. Change #276212

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  459. Change #276213

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  460. Change #276214

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  461. Change #276215

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  462. Change #276216

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  463. Change #276235

    Category ffmpeg
    Changed by Christopher Decker <chris.decker08ohnoyoudont@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
  464. Change #276245

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  465. Change #276247

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  466. Change #276248

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  467. Change #276249

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  468. Change #276299

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  469. Change #276300

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  470. Change #276316

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  471. Change #276317

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  472. Change #276318

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  473. Change #276319

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  474. Change #276320

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  475. Change #276321

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  476. Change #276322

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  477. Change #276323

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  478. Change #276324

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  479. Change #276330

    Category ffmpeg
    Changed by Kenan Alghythee <kalghy2ohnoyoudont@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
  480. Change #276373

    Category ffmpeg
    Changed by Kenan Alghythee <kalghy2ohnoyoudont@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
  481. Change #276375

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  482. Change #276376

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  483. Change #276377

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  484. Change #276381

    Category ffmpeg
    Changed by Julius Bairaktaris <juliusohnoyoudont@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
  485. Change #276439

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  486. Change #276475

    Category ffmpeg
    Changed by Omkhar Arasaratnam <omkharohnoyoudont@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
  487. Change #276479

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  488. Change #276480

    Category ffmpeg
    Changed by almogyalin <almog.yalinohnoyoudont@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
  489. Change #276481

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  490. Change #276501

    Category ffmpeg
    Changed by panboxiaosa <panboxiaosaohnoyoudont@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
  491. Change #276502

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  492. Change #276503

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  493. Change #276519

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  494. Change #276537

    Category ffmpeg
    Changed by wangnov <wangnov6ohnoyoudont@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
  495. Change #276592

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  496. Change #276593

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  497. Change #276604

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  498. Change #276605

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  499. Change #276606

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  500. Change #276609

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  501. Change #276610

    Category ffmpeg
    Changed by Kenan Alghythee <kalghy2ohnoyoudont@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
  502. Change #276611

    Category ffmpeg
    Changed by Kenan Alghythee <kalghy2ohnoyoudont@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
  503. Change #276612

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  504. Change #276613

    Category ffmpeg
    Changed by Kenan Alghythee <kalghy2ohnoyoudont@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
  505. Change #276614

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  506. Change #276615

    Category ffmpeg
    Changed by Abdessamie <try70457ohnoyoudont@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
  507. Change #276616

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  508. Change #276617

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  509. Change #276618

    Category ffmpeg
    Changed by shadowcaster3 <vasyl.samoilovohnoyoudont@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
  510. Change #276648

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  511. Change #276649

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  512. Change #276650

    Category ffmpeg
    Changed by Dan Dennedy <danohnoyoudont@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
  513. Change #276651

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  514. Change #276664

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  515. Change #276665

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  516. Change #276666

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  517. Change #276667

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  518. Change #276668

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  519. Change #276669

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  520. Change #276701

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  521. Change #276706

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  522. Change #276707

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  523. Change #276708

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  524. Change #276709

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  525. Change #276710

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  526. Change #276711

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  527. Change #276712

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  528. Change #276713

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  529. Change #276714

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  530. Change #276715

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  531. Change #276721

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  532. Change #276722

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  533. Change #276723

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  534. Change #276726

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  535. Change #276727

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  536. Change #276728

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  537. Change #276729

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  538. Change #276730

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  539. Change #276731

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  540. Change #276732

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  541. Change #276733

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  542. Change #276734

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  543. Change #276735

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  544. Change #276736

    Category ffmpeg
    Changed by Guo Yejun <yejun.guoohnoyoudont@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
  545. Change #276737

    Category ffmpeg
    Changed by Guo Yejun <yejun.guoohnoyoudont@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
  546. Change #276755

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  547. Change #276756

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  548. Change #276757

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  549. Change #276758

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  550. Change #276759

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  551. Change #276760

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  552. Change #276761

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  553. Change #276766

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  554. Change #276767

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  555. Change #276768

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  556. Change #276769

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  557. Change #276770

    Category ffmpeg
    Changed by 张永鹏 <roc63ohnoyoudont@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
  558. Change #276772

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  559. Change #276773

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  560. Change #276774

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  561. Change #276775

    Category ffmpeg
    Changed by ninbura <gabrielohnoyoudont@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
  562. Change #276786

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  563. Change #276787

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  564. Change #276788

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  565. Change #276789

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  566. Change #276798

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  567. Change #276799

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  568. Change #276800

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  569. Change #276801

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  570. Change #276802

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  571. Change #276803

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  572. Change #276812

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  573. Change #276813

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  574. Change #276814

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  575. Change #276815

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  576. Change #276816

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  577. Change #276817

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  578. Change #276818

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  579. Change #276819

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  580. Change #276820

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  581. Change #276821

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  582. Change #276822

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  583. Change #276823

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  584. Change #276824

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  585. Change #276825

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  586. Change #276826

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  587. Change #276827

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  588. Change #276828

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  589. Change #276829

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  590. Change #276848

    Category ffmpeg
    Changed by Scott Kidder <scottohnoyoudont@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
  591. Change #276882

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  592. Change #276923

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  593. Change #277006

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  594. Change #277007

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  595. Change #277008

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  596. Change #277009

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  597. Change #277010

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  598. Change #277011

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  599. Change #277012

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  600. Change #277013

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  601. Change #277014

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  602. Change #277015

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  603. Change #277016

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  604. Change #277017

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  605. Change #277018

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  606. Change #277019

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  607. Change #277058

    Category ffmpeg
    Changed by Steve Lhomme <robux4ohnoyoudont@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
  608. Change #277070

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  609. Change #277086

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  610. Change #277117

    Category ffmpeg
    Changed by Guo Yejun <yejun.guoohnoyoudont@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
  611. Change #277138

    Category ffmpeg
    Changed by iSold Leo <sohnoyoudont@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
  612. Change #277139

    Category ffmpeg
    Changed by iSold Leo <sohnoyoudont@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
  613. Change #277140

    Category ffmpeg
    Changed by iSold Leo <sohnoyoudont@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
  614. Change #277160

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  615. Change #277167

    Category ffmpeg
    Changed by Ayoub Nabil <237098474+ayoubnabilohnoyoudont@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
  616. Change #277235

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  617. Change #277297

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  618. Change #277309

    Category ffmpeg
    Changed by Nicolas Gaullier <nicolas.gaullierohnoyoudont@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
  619. Change #277315

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  620. Change #277316

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  621. Change #277317

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  622. Change #277318

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  623. Change #277319

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  624. Change #277320

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  625. Change #277321

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  626. Change #277340

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  627. Change #277341

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  628. Change #277342

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  629. Change #277419

    Category ffmpeg
    Changed by Gabriel Balaich <ffmpegohnoyoudont@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
  630. Change #277433

    Category ffmpeg
    Changed by softworkz <softworkzohnoyoudont@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
  631. Change #277446

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  632. Change #277447

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  633. Change #277512

    Category ffmpeg
    Changed by Jeongkeun Kim <variety0724ohnoyoudont@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
  634. Change #277514

    Category ffmpeg
    Changed by Jeongkeun Kim <variety0724ohnoyoudont@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
  635. Change #277522

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  636. Change #277523

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  637. Change #277539

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  638. Change #277540

    Category ffmpeg
    Changed by Raja-89 <imraja729ohnoyoudont@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
  639. Change #277547

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  640. Change #277548

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  641. Change #277549

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  642. Change #277550

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  643. Change #277551

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  644. Change #277552

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  645. Change #277557

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  646. Change #277558

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  647. Change #277559

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  648. Change #277560

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  649. Change #277561

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  650. Change #277562

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  651. Change #277563

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  652. Change #277564

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  653. Change #277565

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  654. Change #277592

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  655. Change #277593

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  656. Change #277594

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  657. Change #277595

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  658. Change #277596

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  659. Change #277597

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  660. Change #277598

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  661. Change #277599

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  662. Change #277600

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  663. Change #277601

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  664. Change #277602

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  665. Change #277603

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  666. Change #277604

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  667. Change #277605

    Category ffmpeg
    Changed by qaq03101 <1440810736ohnoyoudont@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
  668. Change #277606

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  669. Change #277624

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  670. Change #277625

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  671. Change #277626

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  672. Change #277627

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  673. Change #277628

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  674. Change #277629

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  675. Change #277630

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  676. Change #277631

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  677. Change #277632

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  678. Change #277708

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  679. Change #277720

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  680. Change #277721

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  681. Change #277722

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  682. Change #277723

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  683. Change #277724

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  684. Change #277725

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  685. Change #277726

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  686. Change #277727

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  687. Change #277728

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  688. Change #277729

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  689. Change #277730

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  690. Change #277748

    Category ffmpeg
    Changed by adorn <adornohnoyoudont@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
  691. Change #277749

    Category ffmpeg
    Changed by Ayoub Nabil <237098474+ayoubnabilohnoyoudont@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
  692. Change #277750

    Category ffmpeg
    Changed by Aleksander Shveikin <alex.svekohnoyoudont@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
  693. Change #277752

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  694. Change #277753

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  695. Change #277756

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  696. Change #277758

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  697. Change #277759

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  698. Change #277760

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  699. Change #277851

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  700. Change #277861

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  701. Change #277866

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  702. Change #277867

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  703. Change #277868

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  704. Change #277869

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  705. Change #277871

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  706. Change #277872

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  707. Change #277873

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  708. Change #277874

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  709. Change #277876

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  710. Change #277879

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  711. Change #277883

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  712. Change #277884

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  713. Change #277885

    Category ffmpeg
    Changed by Anxious Koisi <ddoaoingohnoyoudont@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
  714. Change #277886

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  715. Change #277887

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  716. Change #277888

    Category ffmpeg
    Changed by Joshua Rogers <MegaManSecohnoyoudont@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
  717. Change #277889

    Category ffmpeg
    Changed by Umar Pathan <helloohnoyoudont@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
  718. Change #277891

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  719. Change #277892

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  720. Change #277893

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  721. Change #277894

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  722. Change #277895

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  723. Change #277896

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  724. Change #277976

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  725. Change #277977

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  726. Change #277996

    Category ffmpeg
    Changed by Brad Smith <bradohnoyoudont@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
  727. Change #277997

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  728. Change #277998

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  729. Change #277999

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  730. Change #278000

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  731. Change #278001

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  732. Change #278002

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  733. Change #278003

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  734. Change #278004

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  735. Change #278005

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  736. Change #278006

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  737. Change #278007

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  738. Change #278008

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  739. Change #278009

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  740. Change #278010

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  741. Change #278011

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  742. Change #278012

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  743. Change #278021

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  744. Change #278022

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  745. Change #278023

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  746. Change #278024

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  747. Change #278042

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  748. Change #278078

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  749. Change #278079

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  750. Change #278099

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  751. Change #278100

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  752. Change #278101

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  753. Change #278102

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  754. Change #278103

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  755. Change #278104

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  756. Change #278105

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  757. Change #278106

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  758. Change #278107

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  759. Change #278108

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  760. Change #278109

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  761. Change #278117

    Category ffmpeg
    Changed by yuanhecai <yuanhecaiohnoyoudont@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
  762. Change #278119

    Category ffmpeg
    Changed by Haochen Chen <haochencohnoyoudont@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
  763. Change #278121

    Category ffmpeg
    Changed by Daniel Verkamp <danielohnoyoudont@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
  764. Change #278137

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  765. Change #278138

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  766. Change #278139

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  767. Change #278140

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  768. Change #278141

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  769. Change #278162

    Category ffmpeg
    Changed by Araz Iusubov <Primeadviceohnoyoudont@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
  770. Change #278166

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  771. Change #278167

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  772. Change #278173

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  773. Change #278186

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  774. Change #278188

    Category ffmpeg
    Changed by Nicolas Gaullier <nicolas.gaullierohnoyoudont@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
  775. Change #278206

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  776. Change #278226

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  777. Change #278227

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  778. Change #278228

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  779. Change #278229

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  780. Change #278230

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  781. Change #278231

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  782. Change #278239

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  783. Change #278240

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  784. Change #278241

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  785. Change #278242

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  786. Change #278243

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  787. Change #278244

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  788. Change #278245

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  789. Change #278246

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  790. Change #278247

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  791. Change #278248

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  792. Change #278249

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  793. Change #278250

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  794. Change #278251

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  795. Change #278252

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  796. Change #278255

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  797. Change #278256

    Category ffmpeg
    Changed by Marcos Ashton Iglesias <marcosashiglesiasohnoyoudont@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
  798. Change #278262

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  799. Change #278263

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  800. Change #278269

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  801. Change #278270

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  802. Change #278271

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  803. Change #278272

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  804. Change #278273

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  805. Change #278295

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  806. Change #278296

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  807. Change #278301

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  808. Change #278305

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  809. Change #278314

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  810. Change #278329

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  811. Change #278330

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  812. Change #278331

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  813. Change #278332

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  814. Change #278372

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  815. Change #278378

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  816. Change #278396

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  817. Change #278402

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  818. Change #278403

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  819. Change #278404

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  820. Change #278405

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  821. Change #278406

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  822. Change #278407

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  823. Change #278408

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  824. Change #278409

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  825. Change #278410

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  826. Change #278419

    Category ffmpeg
    Changed by Tymur Boiko <tboikoohnoyoudont@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
  827. Change #278481

    Category ffmpeg
    Changed by Zhao Zhili <zhilizhaoohnoyoudont@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
  828. Change #278482

    Category ffmpeg
    Changed by Dmitrii Gershenkop <bortengineerohnoyoudont@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
  829. Change #278489

    Category ffmpeg
    Changed by Hawthorn <rv.help23ohnoyoudont@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
  830. Change #278490

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  831. Change #278491

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  832. Change #278501

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  833. Change #278502

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  834. Change #278519

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  835. Change #278521

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  836. Change #278528

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  837. Change #278532

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  838. Change #278533

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  839. Change #278534

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  840. Change #278535

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  841. Change #278539

    Category ffmpeg
    Changed by jiangjie <jiangjieohnoyoudont@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
  842. Change #278602

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  843. Change #278603

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  844. Change #278616

    Category ffmpeg
    Changed by jiangjie <jiangjieohnoyoudont@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
  845. Change #278633

    Category ffmpeg
    Changed by jiangjie <jiangjieohnoyoudont@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
  846. Change #278638

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  847. Change #278650

    Category ffmpeg
    Changed by unfunnyatearug <yalisib2222ohnoyoudont@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
  848. Change #278651

    Category ffmpeg
    Changed by unfunnyatearug <yalisib2222ohnoyoudont@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
  849. Change #278660

    Category ffmpeg
    Changed by Vignesh Venkat <vigneshvohnoyoudont@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
  850. Change #278661

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  851. Change #278680

    Category ffmpeg
    Changed by Dmitrii Gershenkop <bortengineerohnoyoudont@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 type

    Changed files

    • libavfilter/vf_sr_amf.c
    • libavfilter/vf_vpp_amf.c
    • libavfilter/vf_vqe_amf.c
    • libavutil/hwcontext_amf.c
  852. Change #278704

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  853. Change #278721

    Category ffmpeg
    Changed by Ayoub Nabil <237098474+ayoubnabilohnoyoudont@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
  854. Change #278722

    Category ffmpeg
    Changed by KO Myung-Hun <komh78ohnoyoudont@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
  855. Change #278723

    Category ffmpeg
    Changed by KO Myung-Hun <komh78ohnoyoudont@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
  856. Change #278737

    Category ffmpeg
    Changed by Hao Chen <haochencohnoyoudont@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
  857. Change #278743

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  858. Change #278747

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  859. Change #278749

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  860. Change #278755

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  861. Change #278756

    Category ffmpeg
    Changed by Kostazol <kostazolohnoyoudont@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
  862. Change #278777

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  863. Change #278778

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  864. Change #278779

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  865. Change #278780

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  866. Change #278781

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  867. Change #278788

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  868. Change #278833

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  869. Change #278834

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  870. Change #278835

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  871. Change #278836

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  872. Change #278850

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  873. Change #278851

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  874. Change #278857

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  875. Change #278862

    Category ffmpeg
    Changed by Shiyou Yin <yinshiyou-hfohnoyoudont@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
  876. Change #278863

    Category ffmpeg
    Changed by Shiyou Yin <yinshiyou-hfohnoyoudont@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
  877. Change #278868

    Category ffmpeg
    Changed by Hao Chen <haochencohnoyoudont@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
  878. Change #278872

    Category ffmpeg
    Changed by Tymur Boiko <tboikoohnoyoudont@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
  879. Change #278880

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  880. Change #278888

    Category ffmpeg
    Changed by Leo Izen <leo.izenohnoyoudont@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
  881. Change #278924

    Category ffmpeg
    Changed by WyattBlue <wyattblueohnoyoudont@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
  882. Change #278925

    Category ffmpeg
    Changed by J. Brandt Buckley <brandtohnoyoudont@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
  883. Change #278926

    Category ffmpeg
    Changed by Michael Partridge <michael.partridgeohnoyoudont@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
  884. Change #278944

    Category ffmpeg
    Changed by Brian Leake <phydohnoyoudont@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
  885. Change #278945

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  886. Change #278967

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  887. Change #278968

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  888. Change #278969

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  889. Change #278974

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  890. Change #278975

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  891. Change #278976

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  892. Change #278977

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  893. Change #278978

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  894. Change #278979

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  895. Change #278980

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  896. Change #278981

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  897. Change #278982

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  898. Change #278983

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  899. Change #278985

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  900. Change #278986

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  901. Change #279166

    Category ffmpeg
    Changed by iSold Leo <sohnoyoudont@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
  902. Change #279181

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  903. Change #279334

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  904. Change #279351

    Category ffmpeg
    Changed by zhorzhetta1404-ux <zhorzhetta1404ohnoyoudont@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
  905. Change #279354

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  906. Change #279355

    Category ffmpeg
    Changed by Zsolt Vadasz <zsolt_vadaszohnoyoudont@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
  907. Change #279394

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  908. Change #279395

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  909. Change #279438

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  910. Change #279439

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  911. Change #279440

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  912. Change #279441

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  913. Change #279442

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  914. Change #279443

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  915. Change #279444

    Category ffmpeg
    Changed by Diego de Souza <ddesouzaohnoyoudont@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
  916. Change #279513

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  917. Change #279514

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  918. Change #279515

    Category ffmpeg
    Changed by Reda DRISSI <reda.drissiohnoyoudont@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
  919. Change #279529

    Category ffmpeg
    Changed by Kacper Michajłow <kasper93ohnoyoudont@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
  920. Change #279546

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  921. Change #279547

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  922. Change #279548

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  923. Change #279549

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  924. Change #279550

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  925. Change #279551

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  926. Change #279552

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  927. Change #279553

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  928. Change #279554

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  929. Change #279555

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  930. Change #279556

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  931. Change #279595

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  932. Change #279597

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  933. Change #279599

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  934. Change #279600

    Category ffmpeg
    Changed by marcos ashton <marcosashiglesiasohnoyoudont@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
  935. Change #279621

    Category ffmpeg
    Changed by Marcos Ashton Iglesias <marcosashiglesiasohnoyoudont@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
  936. Change #279623

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  937. Change #279624

    Category ffmpeg
    Changed by Romain Beauxis <romain.beauxisohnoyoudont@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
  938. Change #279625

    Category ffmpeg
    Changed by Théo Valette <315040668+theovaletteohnoyoudont@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
  939. Change #279626

    Category ffmpeg
    Changed by Ackanir <git.ackanirohnoyoudont@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
  940. Change #279650

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  941. Change #279651

    Category ffmpeg
    Changed by Martin Storsjö <martinohnoyoudont@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
  942. Change #279661

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  943. Change #279720

    Category ffmpeg
    Changed by Sylvestre Ledru <sylvestreohnoyoudont@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
  944. Change #279721

    Category ffmpeg
    Changed by Sylvestre Ledru <sylvestreohnoyoudont@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
  945. Change #279765

    Category ffmpeg
    Changed by Wu Jianhua <toqsxwohnoyoudont@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
  946. Change #279768

    Category ffmpeg
    Changed by Wu Jianhua <toqsxwohnoyoudont@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
  947. Change #279769

    Category ffmpeg
    Changed by Wu Jianhua <toqsxwohnoyoudont@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
  948. Change #279770

    Category ffmpeg
    Changed by Wu Jianhua <toqsxwohnoyoudont@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
  949. Change #279817

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  950. Change #279831

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  951. Change #279870

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  952. Change #279871

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  953. Change #279872

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  954. Change #279873

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  955. Change #279874

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  956. Change #279875

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  957. Change #279876

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  958. Change #279877

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  959. Change #279878

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  960. Change #279879

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  961. Change #279880

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  962. Change #279881

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  963. Change #279882

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  964. Change #279883

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  965. Change #279884

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  966. Change #279885

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  967. Change #279886

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  968. Change #279887

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  969. Change #279888

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  970. Change #279889

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  971. Change #279890

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  972. Change #279891

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  973. Change #279892

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  974. Change #279893

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  975. Change #279894

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  976. Change #279895

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  977. Change #279896

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  978. Change #279897

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  979. Change #279898

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  980. Change #279899

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  981. Change #279900

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  982. Change #279901

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  983. Change #279902

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  984. Change #279903

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  985. Change #279904

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  986. Change #279905

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  987. Change #279906

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  988. Change #279907

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  989. Change #279908

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  990. Change #279909

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  991. Change #279910

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  992. Change #279911

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  993. Change #279912

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  994. Change #279913

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  995. Change #279914

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  996. Change #279915

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  997. Change #279916

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  998. Change #279917

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  999. Change #279918

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1000. Change #279919

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1001. Change #279920

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1002. Change #279921

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1003. Change #279922

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1004. Change #279923

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1005. Change #279924

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1006. Change #279925

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1007. Change #279926

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1008. Change #279927

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1009. Change #279928

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1010. Change #279929

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1011. Change #279930

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1012. Change #279931

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1013. Change #279932

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1014. Change #279933

    Category ffmpeg
    Changed by Philip Langdale <philiplohnoyoudont@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
  1015. Change #279934

    Category ffmpeg
    Changed by iSold Leo <sohnoyoudont@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
  1016. Change #279938

    Category ffmpeg
    Changed by 罗乾林 <luoqianlinohnoyoudont@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
  1017. Change #279939

    Category ffmpeg
    Changed by 罗乾林 <luoqianlinohnoyoudont@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
  1018. Change #279978

    Category ffmpeg
    Changed by Andreas Menze <andreas.menzeohnoyoudont@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
  1019. Change #279983

    Category ffmpeg
    Changed by James Almer <jamrialohnoyoudont@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
  1020. Change #280073

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1021. Change #280074

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1022. Change #280076

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1023. Change #280077

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1024. Change #280078

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1025. Change #280106

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1026. Change #280107

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1027. Change #280108

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1028. Change #280109

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1029. Change #280110

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1030. Change #280111

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1031. Change #280112

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1032. Change #280113

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1033. Change #280114

    Category ffmpeg
    Changed by Ayoub Nabil Boubagrat <237098474+ayoubnabilohnoyoudont@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
  1034. Change #280115

    Category ffmpeg
    Changed by Paulo Cabral Sanz <paulosanzohnoyoudont@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
  1035. Change #280116

    Category ffmpeg
    Changed by yongdev <yongdevohnoyoudont@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
  1036. Change #280137

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1037. Change #280140

    Category ffmpeg
    Changed by Timo Rothenpieler <timoohnoyoudont@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
  1038. Change #280146

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1039. Change #280147

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1040. Change #280148

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1041. Change #280149

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1042. Change #280150

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1043. Change #280151

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1044. Change #280152

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1045. Change #280153

    Category ffmpeg
    Changed by guy-with-a-why <aaronohnoyoudont@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
  1046. Change #280158

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1047. Change #280159

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1048. Change #280160

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1049. Change #280161

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1050. Change #280162

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1051. Change #280163

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1052. Change #280164

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1053. Change #280165

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1054. Change #280166

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1055. Change #280167

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1056. Change #280168

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1057. Change #280228

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  1058. Change #280289

    Category ffmpeg
    Changed by Lynne <devohnoyoudont@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
  1059. Change #280290

    Category ffmpeg
    Changed by younengxiao <steven.xiaoohnoyoudont@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
  1060. Change #280291

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1061. Change #280292

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1062. Change #280293

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1063. Change #280294

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1064. Change #280295

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1065. Change #280296

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1066. Change #280297

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@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
  1067. Change #280306

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  1068. Change #280307

    Category ffmpeg
    Changed by Andreas Rheinhardt <andreas.rheinhardtohnoyoudont@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
  1069. Change #280380

    Category ffmpeg
    Changed by Michael Niedermayer <michaelohnoyoudont@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
  1070. Change #280389

    Category ffmpeg
    Changed by Zuxy Meng <zuxy.mengohnoyoudont@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
  1071. Change #280411

    Category ffmpeg
    Changed by zhanghongyuan <zhanghongyuanohnoyoudont@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
  1072. Change #280412

    Category ffmpeg
    Changed by tangsha <tangshaohnoyoudont@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