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

Builder ffmpeg-solaris10-sparc Build #14004

Results:

Failed shell_2 shell_3 shell_4 shell_5

SourceStamp:

Projectffmpeg
Repositoryhttps://git.ffmpeg.org/ffmpeg.git
Branchmaster
Revisiond43b1efd2e948f44cfac91f7a4325a3d927d6718
Got Revisiond43b1efd2e948f44cfac91f7a4325a3d927d6718
Changes484 changes

BuildSlave:

unstable10s

Reason:

The SingleBranchScheduler scheduler named 'schedule-ffmpeg-solaris10-sparc' triggered this build

Steps and Logfiles:

  1. git update ( 1 mins, 0 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 ( 18 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.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-unstable10s/slave/ffmpeg-solaris10-sparc slave
buildername ffmpeg-solaris10-sparc Builder
buildnumber 14004 Build
codebase Build
got_revision d43b1efd2e948f44cfac91f7a4325a3d927d6718 Git
project ffmpeg Build
repository https://git.ffmpeg.org/ffmpeg.git Build
revision d43b1efd2e948f44cfac91f7a4325a3d927d6718 Build
scheduler schedule-ffmpeg-solaris10-sparc Scheduler
slavename unstable10s BuildSlave
workdir /export/home/buildbot-unstable10s/slave/ffmpeg-solaris10-sparc slave (deprecated)

Forced Build Properties:

NameLabelValue

Responsible Users:

  1. Andreas Rheinhardt
  2. Anxious Koisi
  3. Araz Iusubov
  4. Charly Morgand-Poyac
  5. Christopher Decker
  6. Cloud-LHY
  7. David Rosca
  8. Diego de Souza
  9. Frank Plowman
  10. Guo Yejun
  11. Hans-Kristian Arntzen
  12. Hunter Kvalevog
  13. Jack Lau
  14. Jamaika1
  15. James Almer
  16. Jiale Yao
  17. Julius Bairaktaris
  18. Jun Zhao
  19. Kacper Michajłow
  20. KawaiiEngine (Sashimiso)
  21. Kenan Alghythee
  22. Kirill A. Korinsky
  23. Leo Izen
  24. Lynne
  25. Marcos Ashton Iglesias
  26. Martin Storsjö
  27. Marvin Scholz
  28. Michael Niedermayer
  29. Mirkó Visontai
  30. Nathan Lucas
  31. Nicolas George
  32. Niklas Haas
  33. Nil Fons Miret
  34. Omkhar Arasaratnam
  35. Pavel Kohout
  36. Philip Langdale
  37. Raja-89
  38. Ramiro Polla
  39. Romain Beauxis
  40. Shreesh Adiga
  41. StachowiakDawid
  42. Steven Liu
  43. Thomas Guilbert
  44. Timo Rothenpieler
  45. Tobias Rapp
  46. Tristan Matthews
  47. Vignesh Venkat
  48. Vladimir Panteleev
  49. Vladimir Panteleev
  50. Zhao Zhili
  51. Zhao Zhili
  52. Zuxy Meng
  53. deng.zewen
  54. lck
  55. marcos ashton
  56. sfan5
  57. tknaveen
  58. wang-bin
  59. wangbin
  60. younengxiao
  61. zhanghongyuan
  62. 张永鹏

Timing:

StartWed Jul 29 11:30:08 2026
EndWed Jul 29 11:31:30 2026
Elapsed1 mins, 21 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