Commit graph

52289 commits

Author SHA1 Message Date
Andreas Rheinhardt
5b1e805653 avcodec/mpegvideo_enc: Remove always-true branch
Always-true since 1c40a17922
which made 4863671d88 superfluous.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
00926669f7 avcodec/mpeg_er: Mark ff_mpeg_er_init() as av_cold
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
01d6235fae avcodec/rv10: Avoid indirection when reading VLC codes
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
c2e5f7466d avcodec/mpeg12dec: Don't store block_last_index unnecessarily
Given that the MPEG-1/2 decoders unquantize the blocks
on their own, block_last_index is only used to signal
to ff_mpv_reconstruct_mb() whether a block is skipped
or not; but this is only checked for inter macroblocks,
so it is unnecessary to set block_last_index for intra
macroblocks.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
069329ec02 avcodec/ituh263enc: Fix indentation
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
a2272aff76 avcodec/ituh263enc: Don't use array unnecessarily
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
d95041dffe avcodec/ituh263dec: Remove redundant store
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
5507da21e6 avcodec/ituh263dec: Don't process unnecessarily many coefficients
Overriding the number of coefficients is only necessary if
ac_pred is in used, not for h263_aic alone (for which only
the DC coefficient is predicted) as it is done here.

And since d50635cd24
the H.263 unquantize-intra functions override the number of
coefficients in case of ac_pred, so we don't have to do this here.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
ea4b9a121d avcodec/rv10: Perform RV20 check only for RV20
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
f5fc31acec avcodec/rv10: Perform RV20 initialization during init
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Andreas Rheinhardt
8e0f064a11 avcodec/mpeg4videodec: Don't zero blocks twice
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:51 +02:00
Zhao Zhili
88ac69631e wasm/hevc: Add sao_edge_filter
hevc_sao_edge_8_8_c:                                   124.5 ( 1.00x)
hevc_sao_edge_8_8_simd128:                              18.1 ( 6.89x)
hevc_sao_edge_16_8_c:                                  478.6 ( 1.00x)
hevc_sao_edge_16_8_simd128:                             48.9 ( 9.79x)
hevc_sao_edge_32_8_c:                                 2021.1 ( 1.00x)
hevc_sao_edge_32_8_simd128:                            187.4 (10.79x)
hevc_sao_edge_48_8_c:                                 4295.5 ( 1.00x)
hevc_sao_edge_48_8_simd128:                            397.4 (10.81x)
hevc_sao_edge_64_8_c:                                 7245.5 ( 1.00x)
hevc_sao_edge_64_8_simd128:                            709.5 (10.21x)

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-20 21:09:39 +08:00
Zhao Zhili
fe45f5537b wasm/hevc: Add sao_band_filter
hevc_sao_band_8_8_c:                                    63.0 ( 1.00x)
hevc_sao_band_8_8_simd128:                              10.4 ( 6.06x)
hevc_sao_band_16_8_c:                                  230.4 ( 1.00x)
hevc_sao_band_16_8_simd128:                             22.9 (10.07x)
hevc_sao_band_32_8_c:                                  900.4 ( 1.00x)
hevc_sao_band_32_8_simd128:                             81.5 (11.05x)
hevc_sao_band_48_8_c:                                 2009.1 ( 1.00x)
hevc_sao_band_48_8_simd128:                            170.2 (11.80x)
hevc_sao_band_64_8_c:                                 3535.0 ( 1.00x)
hevc_sao_band_64_8_simd128:                            297.5 (11.88x)

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-20 21:09:17 +08:00
Dawid Kozinski
8087777e66 avcodec/liboapvenc: set the encoder output to OAPV_CFG_VAL_AU_BS_FMT_NONE format
The only AU without bitstream format.

Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-17 10:03:10 -03:00
Peter Ross
38073187bd avcodec/tests/dct: add CONFIG_PRORES_DECODER guard
Only enable the proresdsp check when the prores decoder is enabled.

This fixes fate when configuring with --disable-everything
2025-06-17 16:41:14 +10:00
Peter Ross
2663d97336 configure: add celp_math component
libavcodec/tests/celp_math depends on libavcodec/celp_math.o

This fixes fate when configuring with --disable-everything
2025-06-17 16:39:36 +10:00
Andreas Rheinhardt
ecd7c9244d avcodec/amfdec,rkmppdec: Use correct extradata with BSFs
Otherwise the extradata used would be ISOBMFF if the input is
even though we use the *_mp4toannexb BSFs to convert it to
annex B to feed it to the actual decoder.

(The mediacodec decoders also use said BSFs, yet they process
the extradata in a way that works even when using the ISOBMFF
extradata; in fact, using the converted extradata would break
their check for whether to warn for missing extradata for
the ISOBMFF without-in-band-header profiles.

Furthermore, there are several users of the *_mp4toannexb BSFs
that don't ever touch extradata. They have not been touched.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:35:13 +02:00
Andreas Rheinhardt
9102a90a95 Revert "avcodec/decode: Fix avcodec parameters when bsfs are enable by decoder"
This reverts commit 1c17061397.

The commit intended to provide certain codecs using *_mp4toannexb
bitstream filters with updated (annex B) extradata (even when
the user-supplied one was ISOBMFF), yet BSFs are allowed to change
way more. The media100_to_mjpegb BSF used by the media100 decoder
changes the codec id; the commit being reverted therefore changed
AVCodecContext.codec_id which is an API violation and broke
media100 decoding with the FFmpeg cli tool.

This commit also made changes from the internal BSF externally
visible. extradata is documented to be "owned by the codec and
freed in avcodec_free_context()" which does not include replacing
it with something else in avcodec_open2() and may surprise users
who think that AVCodecContext.extradata is immutable before
avcodec_free_context(). It also incurred a memdup which is completely
unnecessary for most decoders.

Therefore this commit is reverted. The problem it tried to solve
will be solved differently in the next commit.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:35:13 +02:00
Zhao Zhili
808c6853e1 avcodec/mediacodecenc: Fix typo in VP9 option description
Reviewed-by: Marth64 <marth64@proxyid.net>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-16 10:55:59 +08:00
Zhao Zhili
98c281152c avcodec/mediacodecdec: replace memset with direct zero init
Reviewed-by: Matthieu Bouron <matthieu.bouron@gmail.com>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-16 10:53:09 +08:00
Zhao Zhili
f3bf535696 avcodec/libx264: Remove unnecessary include
eval is for av_strtod, which wasn't been used by libx264 now.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-12 23:07:13 +08:00
Marvin Scholz
9ad6dca28c avcodec/vvc: parse all SEI messages
While the current code iterated over the messages, it always returned
in the first iteration. Instead keep iterating and warn for failure to
parse. At time of writing, none of the parsing functions seems to
actually return an error, ever.

Fix CID 1648348
2025-06-12 21:17:07 +08:00
Marvin Scholz
3d7668dae1 avcodec/vvc/dec: fix possible null-pointer dereference
When checking for filmgrain here, needs_fg can be true even when
film_grain_characteristics is NULL (when aom_film_grain.enable is true),
therefore this check could end up dereferencing film_grain_characteristics
even though it is NULL.

Fix CID 1648347
2025-06-12 21:16:46 +08:00
averne
9e93163268 vulkan/ffv1dec: fix FFVkSPIRVCompiler leak 2025-06-11 13:30:07 +09:00
averne
f604d1093f vulkan/ffv1dec: fix leak in FFVulkanDecodeShared 2025-06-11 13:30:07 +09:00
James Almer
117343c0ba avcodec/ac3_parser: handle more header bits in ff_ac3_parse_header()
Based on a patch by nyanmisaka.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-08 18:39:17 -03:00
James Almer
efbcd31206 avcodec/ac3_parser: use a padded buffer in av_ac3_parse_header()
The GetBitContext API requires the buffer to be padded, and the documentation for
av_ac3_parse_header() does not specify it, so use a temporary local buffer.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-08 18:36:09 -03:00
Araz Iusubov
49e52ca24f avcodec/d3d12va_encode: fix l0 reference count limit
Prevents potential null pointer dereference when querying
MaxL1ReferencesForB from codec-specific support structures
during GOP structure initialization.

Signed-off-by: Tong Wu <wutong1208@outlook.com>
2025-06-08 21:24:25 +08:00
Frank Plowman
81370fd796 lavc/vvc: Fix unchecked return code and shadowing
Signed-off-by: Frank Plowman <post@frankplowman.com>
2025-06-07 19:26:11 +08:00
Manuel Lauss
d9797544b4
avcodec/sanm: codec31/32 support
codec31/32 are similar to codec1/3 (RLE coding) but with two 4-bit pixels
per byte; they are only used in the Sega-CD release of Rebel Assault 1.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
2025-06-06 22:07:15 +02:00
Manuel Lauss
b7662ddd15
avcodec/sanm: fix codec33/34 tile generator
Some of the calculated values were wrong and/or assigned
to the wrong pixel of the 4x4 block.
Found during testing with Rebel Assault Sega-CD release.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
2025-06-06 22:07:11 +02:00
Manuel Lauss
c064390736
avcodec/sanm: remove codec4 block smoothing
it has a bug and its effects aren't that noticeable, esp. with
the smoothing applied to the whole picture by modern video display
engines.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
2025-06-06 22:07:04 +02:00
Andreas Rheinhardt
81adbd2d3d avcodec/huffman: Combine allocations
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 17:21:37 +02:00
Andreas Rheinhardt
d0a27e01a6 avcodec/aacpsy: Remove always-true checks
Possible since 03cf101645.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 17:21:37 +02:00
Andreas Rheinhardt
f0e1a315a1 avcodec/iirfilter: Remove iirfilter, psy-preprocessing
The iirfilter is only used in its test tool since
01ecb7172b which
stopped using it in AAC, its only user.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 17:21:31 +02:00
Andreas Rheinhardt
28c0a189b6 avcodec/psymodel: Use av_memdup() where appropriate
Also "fixes" the inverted order of arguments in the av_malloc_array()
calls and therefore part of ticket #11620.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 16:27:12 +02:00
Andreas Rheinhardt
4bd1ce31fc avcodec/libaomenc: Avoid code duplication when setting options
(Some more options could be set via this method
if the order in which the options are applied doesn't matter.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 16:26:35 +02:00
Emma Worley
a4c1a5b084
lavc/dxvenc: fix big-endian issues in dxv_compress_dxt1
We were using a mix of pointers to local variables read via AV_RL32/64 and
pointers directly to the texture buffer as keys to interact with the lookback
hashtables. On big-endian systems, these produced different values. This change
makes all hashtable interactions use direct pointers to the texture buffer and
only invokves AV_RL32 in the event of a lookback hashtable miss.

Signed-off-by: Emma Worley <emma@emma.gg>
2025-06-04 09:53:37 -07:00
Andreas Rheinhardt
3be9b3f156 avcodec/hashtable: Remove null statement
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:32:29 +02:00
Andreas Rheinhardt
a2c3d99478 avcodec/hashtable: Only free buffer if there is buffer to free
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:32:11 +02:00
Andreas Rheinhardt
06958c731e avcodec/hashtable: Mark alloc,free functions as av_cold
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:31:51 +02:00
Andreas Rheinhardt
12a43975d1 avcodec/hashtable: Combine allocations
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:17:37 +02:00
Andreas Rheinhardt
2e45d2f7d3 avcodec/hashtable: Check for overflow
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:13:55 +02:00
Andreas Rheinhardt
1e6fdafce0 avcodec/hashtable: Only align complete entries
It is unnecessary to align both key and val, as they are only accessed
via memcpy()/memcmp(), which has no alignment requirements.
We only need to ensure that that the entries as a whole
are suitable aligned for the probe sequence length.

Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:12:48 +02:00
Andreas Rheinhardt
2fc310b2f2 avcodec/hashtable: Zero-initialize hashtable
Otherwise ff_hashtable_freep() would try to free uninitialized
pointers upon allocation error (which happens in the corresponding
test tool).

Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:11:48 +02:00
Andreas Rheinhardt
7927ac63ef avcodec/Makefile: Only compile hashtable.o when needed
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 14:56:54 +02:00
Emma Worley
d4556c98f0
lavc/dxvenc: improve compatibility with Resolume products
Improves compatibility with Resolume products by adding an additional
hashtable for DXT color+LUT combinations, and padding the DXT texture
dimensions to the next largest multiple of 16. Produces identical
packets to Resolume Alley in manual tests.

Signed-off-by: Emma Worley <emma@emma.gg>
2025-06-02 20:51:34 -07:00
Emma Worley
2de0d095b8
lavc/dxvenc: migrate DXT1 encoder to lavc hashtable
Offers a modest performance gain due to the switch from naive linear
probling to robin hood.

Signed-off-by: Emma Worley <emma@emma.gg>
2025-06-02 20:51:31 -07:00
Emma Worley
6fdb54ddee
lavc/hashtable: create generic robin hood hash table
Adds a generic hash table with the DXV encoder as an initial use case.

Signed-off-by: Emma Worley <emma@emma.gg>
2025-06-02 20:51:27 -07:00
Andreas Rheinhardt
93e53e253a avcodec/vc1dsp: Fix vc1op_pixels_func semantics
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-02 13:43:10 +02:00