Commit graph

3321 commits

Author SHA1 Message Date
Michael Niedermayer
175cd4ced0
avcodec/ffv1enc: avoid slices larger than 360x288 if no value is specified
This improves speed by providing more independent things for more CPUs

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-04-07 01:02:43 +02:00
rcombs
172e7ca668
lavf/metadata: support duplicate keys in ff_metadata_conv
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-04-07 01:02:41 +02:00
James Almer
d1f2f8eee0 tests/filter-video: add rgbtestsrc tests for gbrap
Signed-off-by: James Almer <jamrial@gmail.com>
2025-04-02 09:32:08 -03:00
James Almer
67c4891311 tests/filter-video: add yuvtestsrc tests for yuva444p
Signed-off-by: James Almer <jamrial@gmail.com>
2025-04-02 09:32:08 -03:00
James Almer
cd1ec359c4 avfilter/vsrc_testsrc: also fill alpha planes with a test pattern in {rgb,yuv}testsrc
And add support for more formats.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-04-02 09:32:08 -03:00
Andreas Rheinhardt
f47c8bca2c fftools/ffprobe: Make pix_fmt output bitexact
It is currently not due to endianness. This forced to add
workarounds with sed in fate/mxf.mak (which are removed
in this commit).
This is supposed to fix the enhanced-flv-hevc-hdr10 test
on big endian systems.

Reviewed-by: Zhao Zhili <quinkblack-at-foxmail.com@ffmpeg.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-30 08:24:39 +02:00
Andreas Rheinhardt
526c401490 fate/vcodec: Test non-default b_strategy
With this modification the test would have caught the regression
introduced in 72bf3d3c12.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-29 01:39:55 +01:00
Michael Niedermayer
bddb9c232d
avcodec/raw: Add GBR(A)PF16/32LE/BE
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-03-28 15:23:28 +01:00
James Almer
08e334e462 avformat/movenccenc: add support for CENC AV1 encryption
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-25 20:59:18 -03:00
James Almer
f7e6070c51 avutil/tests/pixfmt_best: add more semi planar format tests
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-19 09:34:10 -03:00
James Almer
b8dc875249 swscale/output: add support for NV20
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-19 09:34:05 -03:00
Lynne
49af9746e8
pixfmt: add AV_PIX_FMT_GBRAP32
This commit adds a 32-bit *integer* planar RGBA format.
Vulkan FFv1 decoding is best performed on separate planes, rather than
packed RGBA (i.e. RGBA128), hence this is useful as an intermediate format.
2025-03-17 08:49:04 +01:00
James Almer
819dec697a swscale/swscale_unscaled: account for semi planar formats with data in the msb
Fixes fate failures introduced by recent tests that exercise the faulty code.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-15 18:43:18 -03:00
James Almer
c3b60e0df7 tests/fate/pixfmt: add conversion tests with semi planar YUV formats
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-13 15:00:10 -03:00
Zhao Zhili
7b81676be4 tests: Add enhanced-flv-hevc-hdr10 for demux and mux HDR color info
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Reviewed-by: Steven Liu <lingjiujianke@gmail.com>
2025-03-12 16:01:20 +08:00
James Almer
04d7a6d3db avcodec/exr: use luma+alpha float pixel formats
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-10 10:15:42 -03:00
James Almer
61fc9b6fee avutil/pixfmt: add YAF16 and YAF32 pixel formats
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-10 10:15:42 -03:00
James Almer
5f5ab22639 avfilter/vsrc_testsrc: add support for semi planar formats to yuvtestsrc
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-10 10:15:33 -03:00
James Almer
5560a20d77 avcodec/exr: use the correct step value for plane pointers
Fixes a regression since 0e917389fe.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-05 12:59:34 -03:00
Michael Niedermayer
0e917389fe
avcodec/exr: do not output 32bit floats when a file stores 16bit floats
exr should not do a internal pixel format convert

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-03-05 03:29:25 +01:00
Andreas Rheinhardt
a5d590963c tests/fate/vcodec: Test H.261 loop-filter
Increases coverage.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-04 12:51:54 +01:00
Andreas Rheinhardt
57ade06ffe tests/fate/vcodec: Test using mpeg2-quantizers for MPEG-4
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-04 12:51:54 +01:00
Andreas Rheinhardt
c960b42efc tests/fate/vcodec: Test alternate_scan
Encoding was untested before this.
Notice that the filesize degradation is partially due to
mpegvideo no longer using progressive_sequence and
progressive_frame.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-04 12:51:54 +01:00
Andreas Rheinhardt
ab768b88e0 avcodec/mpegvideo_enc: Don't set qscale_table value prematurely
When there are multiple candidates for macroblock type, the encoder
tries them all. In order to do so, it keeps several sets of states
containing the variables that get modified when encoding
the macroblock and in the end uses the best of these.

Yet one variable was set, but not included in this state:
The current macroblock's qscale value in the current picture's
qscale_table. This may currently be set multiple times in
mpv_reconstruct_mb(), yet it is read when adaptive_quant is true.
Currently, the value read can be the value set by the last attempt
to write the current macroblock and not the initial value.

Fix this by only setting the qscale_table value in one place
outside of mpv_reconstruct_mb() (where it does not belong at all).

Reviewed-by: Ramiro Polla <ramiro.polla@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-04 12:44:18 +01:00
Lynne
ded6772359
fate-sws-pixdesc-query: update ref for new pixfmts 2025-03-01 20:15:59 +01:00
Lynne
e41b45509b
fate-imgutils: update reference for new pixel formats 2025-03-01 20:15:55 +01:00
Ulrik Mikaelsson
5a526fdad0 avformat/mp3dec: Subtract known padding from duration
When an Info-tag is present, marking initial and trailing samples as
padding, those samples should not be included in the calculation of track
duration.

This solves a surprising user experience where converting a WAV->MP3->WAV,
ffprobe will show the duration of the mp3 as slightly longer than both the
input and the output.

As a result, the estimated duration and imprecise seek-results of some
FATE-tests have been updated.
2025-02-26 14:52:34 +01:00
Zhao Zhili
d161604625 tests: Add fate-hevc-alpha
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-02-25 11:40:33 +08:00
James Almer
87d7b8ff4b fate/demux: add a test for Theora in OGG
Signed-off-by: James Almer <jamrial@gmail.com>
2025-02-23 00:13:35 -03:00
James Almer
a8f2374507 avformat/mov: add an offset to IAMF streams
Using audio_substream_id for AVStream ids is not ideal give that in containers
like mp4, the IAMF structure is opaque to the outside and other streams may
share such id values.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-02-07 19:44:13 -03:00
Michael Niedermayer
c0769e9213
libavutil/pixfmt: 16bit float support
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-01-21 21:06:12 +01:00
Lingyi Kong
504df09c34 avcodec/h264: fix stride calculation in slice_table for multi-slice field video deblocking
fix for https://trac.ffmpeg.org/ticket/11360
A new fate test case is added to validate the fix, the smaple file is located at https://trac.ffmpeg.org/attachment/ticket/11360/slice2_field_aurora4.264.

Signed-off-by: Lingyi Kong <konglingyi@visionular.com>
2025-01-20 08:50:01 +00:00
Andreas Rheinhardt
4cf445c75d tests/ref/fate/png-icc-parse: Add lossless flag to ref file
Forgotten in 8a29b4e38d
(this test depends on lcms2 and is therefore disabled by default).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-01-12 15:41:39 +01:00
James Almer
df50370e1b avformat/matroska: add support for VVC streams
As defined in https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_specs.md#v_mpegiisovvc

Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-12 11:13:31 -03:00
Frank Plowman
cb60b29ac5 fate/vvc: Add vvc-frames-with-ltr.vvc
This sample is rather difficult, containing a lot of subtle edge cases
which revealed errors in the VVC decoder.  It covers 88.4% of lines in
libavcodec/vvc and brings the line coverage of the entire VVC fate suite
from 96.3% to 97.2%.

Signed-off-by: Frank Plowman <post@frankplowman.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-08 10:10:06 -03:00
Marton Balint
8a29b4e38d fftools/ffprobe: print lossless frame flag
Signed-off-by: Marton Balint <cus@passwd.hu>
2025-01-05 22:23:16 +01:00
Leo Izen
07e54f9b5c
avformat/jpegxl_anim_dec: use new animated JPEG XL codec ID
A new codec ID has been added to avcodec for animated JPEG XL, so
we should use that in the animated JPEG XL demuxer.

Reviewed-by: Marth64 <marth64@proxyid.net>
Signed-off-by: Leo Izen <leo.izen@gmail.com>
2025-01-03 19:37:36 -05:00
James Almer
547408ce1d avformat/iamfdec: swap back and side streams if both are present
Layouts with both pairs (7.1, 7.1.2, etc) in IAMF that follow the definition in
ITU-R BS.2051-3 for Systems I and J also follow its ordering. This means side
comes before back, which is the inverse of how it's defined in AVChannel.

To workaround this without having to use custom order channel layouts, swap the
stream ids in the input IAMF structure, so packets for one are mapped to the
other.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-03 10:27:13 -03:00
James Almer
8f6a1a06a6 avformat/iamf: use the correct layouts for Sound Systems B and C
They have the side channels, not back, as defined in ITU-R - BS.2051-3

Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-03 10:27:13 -03:00
James Almer
aba9fafee7 avutil/channel_layout: fix definition of 5.1.4 layout
It's meant to have the side channels, as defined in Sound System D from
ITU-R - BS.2051-3

Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-03 10:27:12 -03:00
James Almer
da9dcaba69 avutil/channel_layout: add a 5.1.2 layout using side channels
And rename the existing 5.1.2 to explicitly state it contains back channels.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-01-03 10:27:12 -03:00
James Almer
376bb8481a avcodec/ac3dec_float: define the downmix related options as exported and read-only
They are not user settable options.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-31 11:30:09 -03:00
Timo Rothenpieler
64043d7b18 fate/flvenc: add test for multitrack flv 2024-12-27 20:24:23 +01:00
Niklas Haas
af6d52eec6 swscale: use 16-bit intermediate precision for RGB/XYZ conversion
The current logic uses 12-bit linear light math, which is woefully insufficient
and leads to nasty postarization artifacts. This patch simply switches the
internal logic to 16-bit precision.

This raises the memory requirement of these tables from 32 kB to 272 kB.

All relevant FATE tests updated for improved accuracy.

Fixes: #4829
Signed-off-by: Niklas Haas <git@haasn.dev>
Sponsored-by: Sovereign Tech Fund
2024-12-26 20:31:36 +01:00
Niklas Haas
c6bf7f6645 swscale/unscaled: correctly round yuv2yuv when not dithering
We should at least bias towards the nearest integer, instead of always
rounding down, when not dithering. This is a bit more correct.

The FATE changes are only in the cases where sws_dither was explicitly set
to "none", which is exactly as expected.

Signed-off-by: Niklas Haas <git@haasn.dev>
Sponsored-by: Sovereign Tech Fund
2024-12-23 11:29:22 +01:00
Peter Ross
b2cba76d4f avformat/riff: map 0069 twocc to ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11:00
Marth64
90af8e07b0 fftools/ffprobe: add analyze_frames option for CC and grain detection
Currently, ffprobe has two stream-level fields that do not work,
closed_captions and film_grain).

Their value is always 0 because ffprobe cannot access the internal
codec properties when it is setting up its stream contexts.

In this commit, add the new option -analyze_frames to ffprobe,
allowing the user to read frames up to the interval they have defined
and fill these fields based on what is exposed in AVPacketSideData.

Additionally, in the same commit, don't write these fields to
the output unless analyze_frames is enabled. Finally, fix the
FATE test refs accordingly and update the docs.

Signed-off-by: Marth64 <marth64@proxyid.net>
2024-12-13 22:41:31 -06:00
James Almer
b164dea68c fate/iamf: add a test for expanded layouts
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-13 16:36:10 -03:00
James Almer
6eb4bf04e9 avutil/channel_layout: add a 9.1.6 layout
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-13 16:35:47 -03:00
Leo Izen
c1e3d55f99
avcodec/png{dec,enc}: update mDCV and cLLI chunk capitalization
The PNGv3 Specification Draft [1] has changed the capitalization
of mDCV and cLLI chunks (formerly mDCv and cLLi). This patch updates
FFmpeg to work with the new chunk names while retaining decode-side
compatibility with files created using the old names.

[1]: https://w3c.github.io/png/

Signed-off-by: Leo Izen <leo.izen@gmail.com>
2024-12-09 15:16:59 -05:00