Commit Graph

125416 Commits

Author SHA1 Message Date
Lynne 5ffea4c6f1 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.
2026-07-02 17:32:51 +09:00
Lynne 88c6409a0a avcodec/version: bump minor for recent APV Vulkan encoder and AAC encoder
Helps identify what encoder users are using via a log.
2026-07-02 17:05:24 +09:00
Lynne f8389eae87 Changelog: add APV Vulkan encoder to the changelog 2026-07-02 16:48:08 +09:00
Lynne bb4eb89e1d Changelog: add new AAC encoder improvements to the changelog 2026-07-02 16:47:54 +09:00
Lynne ae25ca0b36 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.
2026-07-02 16:45:09 +09:00
Lynne 9872cb8c0e 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.
2026-07-02 16:45:08 +09:00
Lynne 8d433a5b4d 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.
2026-07-02 16:45:08 +09:00
Lynne 5784a775df 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).
2026-07-02 16:45:08 +09:00
Lynne d040f5d985 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.
2026-07-02 16:45:08 +09:00
Lynne adfa2e3255 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.
2026-07-02 16:45:08 +09:00
Lynne 876d10f683 lavc/apv_encode_vulkan: add a Vulkan APV encoder
This commit adds a compliant Vulkan compute APV encoder.
2026-07-02 16:45:08 +09:00
Lynne c5591a91eb cbs_apv: relax minimum tile-sizes
APV currently specifies a very large minimum tile size. Just relax it
until the spec is amended.
2026-07-02 16:45:04 +09:00
wangbin d9caf5e873 lavu: monotonic av_gettime_relative for msvc 2026-07-02 07:34:22 +00:00
Pavel Kohout 0dac41d2e5 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>
2026-07-02 03:16:42 +00:00
James Almer 053b2d18fa 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>
2026-07-02 02:57:29 +00:00
Thomas Guilbert b3fb13e8dd 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.
2026-07-02 02:49:06 +00:00
Thomas Guilbert f956c41d7b Guard against loop underflow
This commits adds an early returns if `len <= pred_order` for RISC-V
architectures, matching the logic on other architectures.
2026-07-02 02:49:06 +00:00
Andreas Rheinhardt 4c6e8fdbf6 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt bafcf7b73f 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt a619524605 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt b0d5914678 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt 4e05d94424 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt 3354cbf1b7 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt fd711adcb6 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>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt f5b8a15b61 avcodec/x86/vc1dsp_mc: Move inverse transform into a file of its own
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt 45c41d1d1b tests/checkasm/vc1dsp: Fix shadowing
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt b122b918eb avcodec/x86/vc1dsp_mc: Remove unnecessary movsxdifnidn
Forgotten in 5a49097b42
merging Libav commit 2ec9fa5ec6
(which changed the stride to ptrdiff_t).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2026-07-01 20:00:46 +02:00
Andreas Rheinhardt 296d86c8bb 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>
2026-07-01 20:00:46 +02:00
James Almer a693a4cd80 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>
2026-07-01 14:35:14 -03:00
James Almer d7d2d9d539 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>
2026-07-01 13:52:48 -03:00
Lynne e2e889d9da aacenc: reduce automatic cutoffs at high rates by 2Khz
We were spending too many bits coding useless junk.
2026-07-02 01:14:55 +09:00
Lynne d936a51b27 libavcodec/Makefile: add aaccoder_nmr.h to SKIPHEADERS 2026-07-01 21:38:43 +09:00
Martin Storsjö a1dd71edca 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".)
2026-07-01 12:24:31 +00:00
Niklas Haas a974a54486 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>
2026-07-01 12:12:15 +00:00
Lynne 38161819e7 fate: update AAC encoder tests 2026-07-01 21:05:27 +09:00
Lynne 0efac66e7e aacenc: use the NMR coder by default
The old coders will soon be removed.
2026-07-01 21:05:27 +09:00
Lynne 06e949e45d 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.
2026-07-01 21:05:27 +09:00
Lynne 2fe4a91669 aacenc: report coding tool stats at uninit
Useful for debugging.
2026-07-01 21:05:27 +09:00
Lynne d1943afbb7 aaccoder: add NMR-based coder 2026-07-01 21:05:27 +09:00
Lynne 1298ce9eda 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.
2026-07-01 21:05:22 +09:00
Andreas Rheinhardt 66d9b8e483 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>
2026-07-01 05:03:34 +02:00
Andreas Rheinhardt fc7a984aae swscale/graph: Remove ff_sws_graph_create()
Unused since 9fe0ff3d56.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2026-07-01 05:03:34 +02:00
Andreas Rheinhardt 0002cf3ba1 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>
2026-07-01 05:03:34 +02:00
Andreas Rheinhardt fad1db043d 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>
2026-07-01 05:03:34 +02:00
Michael Niedermayer 48f30aa08c 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>
2026-07-01 01:48:33 +00:00
Michael Niedermayer ef18ece3f0 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>
2026-07-01 01:48:33 +00:00
Michael Niedermayer d5a2ab9c08 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>
2026-07-01 01:48:33 +00:00
James Almer b1327568b6 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>
2026-06-30 22:19:24 -03:00
Andreas Rheinhardt f0bfebc9ad 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>
2026-06-30 22:50:17 +02:00
Michael Niedermayer b553b810c4 avformat/movenc: free sgpd_entries on the roll-distance error path
Found-by: Ao Xijie
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-06-30 17:29:51 +00:00