Commit graph

6536 commits

Author SHA1 Message Date
Niklas Haas
9251af058a tests/checkasm: add scene_sad checkasm test 2025-07-17 12:26:05 +02:00
Kacper Michajłow
ec51162bb6 checkasm/swscale: fix function prototypes
This aligns declared function types in checkasm with real definition.

Fixes FATE: checkasm-{sw_rgb,sw_scale,sw_yuv2rgb,sw_yuv2yuv}

Fixes: runtime error: call to function <func> through pointer to incorrect function type
Fixes: c1a0e65763

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-17 00:28:21 +02:00
Marton Balint
fba1913d5a tests/fate: add fate test for excessive frame buffering when using filters
Based on the command line of ticket #10959.

Signed-off-by: Marton Balint <cus@passwd.hu>
2025-07-14 22:05:11 +02:00
Timo Rothenpieler
02a7c85753 swscale: add support for new 10/12 bit MSB formats 2025-07-11 17:49:58 +02:00
Timo Rothenpieler
e93de9948d avutils/pixfmt: add YUV444/GBRP 10 and 12 bit MSB formats 2025-07-11 17:49:58 +02:00
Nicolas Gaullier
6b028859d9
fate/seek: fix missing mpeg4video parser dependency
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:50 +02:00
Nicolas Gaullier
81b1cd3ce2
fate/all: fix missing some mov demuxer dependencies
In aac/aac-fixed, also remove unnecessary aac demuxer dependency.

Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:49 +02:00
Nicolas Gaullier
57a0412830
fate/all: add missing crc/framecrc/md5/framemd5/pipe dependencies
When CMD is crc/framecrc, always use the macros CRC/FRAMECRC, even if it
includes unnecessary requirements for rawvideo/pcm_s16le encoders (as
actually noticed in a comment of the Makefile).

Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:49 +02:00
Nicolas Gaullier
e2c7f7804d
fate/all: add missing file protocol dependencies
First, always require file protocol when FATE suite is used.
Then, add missing dependencies while removing duplicates.

Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:49 +02:00
Nicolas Gaullier
1ece56ddbb
fate/all: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:48 +02:00
Nicolas Gaullier
7de40387e7
fate/hevc: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:48 +02:00
Nicolas Gaullier
b4c9587589
fate/pcm: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:48 +02:00
Nicolas Gaullier
ae31b66028
fate/mpeg4: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:47 +02:00
Nicolas Gaullier
5fe4434cb9
fate/hlsenc: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:47 +02:00
Nicolas Gaullier
64198e0820
fate/cover-art: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:47 +02:00
Nicolas Gaullier
daea361d88
fate/ac3: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:46 +02:00
Nicolas Gaullier
fbcfa24ec0
fate/audio: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:46 +02:00
Nicolas Gaullier
af40eb2ef7
fate/aac: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:45 +02:00
Nicolas Gaullier
ee29f2f455
fate/vorbis: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:45 +02:00
Nicolas Gaullier
c1fa833d1c
fate/lavf-container: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:45 +02:00
Nicolas Gaullier
9876a515e2
fate/gapless: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:44 +02:00
Nicolas Gaullier
0b7b53a154
fate/mov: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:44 +02:00
Nicolas Gaullier
ee78de046a
fate/all: switch-fix mov muxer dependency to mp4 muxer dependency
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:44 +02:00
Nicolas Gaullier
a0cf4c7d2d
fate/demux: fix multiple dependencies
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:43 +02:00
Nicolas Gaullier
9f7e9d5e7e
fate/all: add missing dependencies for extradata bsf
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:43 +02:00
Nicolas Gaullier
0ab09a6b8f
tests/Makefile: make easier to check for multiple dependencies
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-05 21:10:43 +02:00
Marton Balint
223c2b03da avfilter/buffersink: keep requesting frames if one activation of the graph does not provide one
A frame graph activation might not produce a frame in the requested sink, so
keep on requesting a frame there unless we encounter a filter activation with
buffersrc empty error.

This makes av_buffersink_get_frame(_flags) work according to its documentation
which claims that EAGAIN is only returned if additional frames must be inserted
into the graph.

Fate changes are because audio frames will have different sizes at segment
boundaries, but content is the same.

Signed-off-by: Marton Balint <cus@passwd.hu>
2025-07-03 21:41:54 +02:00
Marton Balint
eea6f0e32e tests/fate/filter-audio: add anullsink test
Tests ticket #11624 with a slight modification.

Signed-off-by: Marton Balint <cus@passwd.hu>
2025-07-03 21:41:54 +02:00
Marton Balint
a85835bfb8 fate/filter-video: add ffprobe test for dual output select filter
Signed-off-by: Marton Balint <cus@passwd.hu>
2025-07-03 21:41:54 +02:00
Andreas Rheinhardt
11d3af0d7f avcodec/dfpwmenc: Correctly pad input
Before this patch, the DFPWM1a encoder was marked as supporting
variable frame sizes. The DFPWM1a format converts eight bytes
of input into one output byte and so it simply padded the number
of data output by
frame->nb_samples * frame->ch_layout.nb_channels / 8 +
(frame->nb_samples % 8 > 0 ? 1 : 0)
This has several bugs:
a) The additional byte leads to eight additional input byte being
read; this can read into the frame's padding, i.e. the data can
be uninitialized.
b) The criterion for whether one should pad is wrong:
nb_samples * nb_channels should be tested for divisibility by eight.
c) The created frames can be undecodable (at least with our decoder):
Our decoder requires the number of bits per frame to divisible by
the number of channels, yet the above approach does not guarantee this.
d) The padding will be added in the middle of the stream (potentially
for every packet).

This commit fixes all of this by removing the variable frame size cap
and using AVCodecInternal.pad_samples to pad the last frame so that
nb_samples * nb_channels is always a multiple of eight.
The lavf-dfpwm FATE-test was affected by a). The frames originated from
lavfi and were part of an audio frame pool, so that the padding
contained data from an earlier (bigger) frame. Now the last frame is
properly filled with silence.

Reported-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-07-03 20:18:55 +02:00
Andreas Rheinhardt
2845013154 tests/fate/screen: Add test for skipping cursor with FIC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-07-03 19:42:28 +02:00
James Almer
cd2461e627 avformat/iamf: fix setting channel layout for Scalable layers
The way streams are coded in an IAMF struct follows a scalable model where the
channel layouts for each layer may not match the channel order our API can
represent in a Native order layout.

For example, an audio element may have six coded streams in the form of two
stereo streams, followed by two mono streams, and then by another two stereo
streams, for a total of 10 channels, and define for them four scalable layers
with loudspeaker_layout values "Stereo", "5.1ch", "5.1.2ch", and "5.1.4ch".
The first layer references the first stream, and each following layer will
reference all previous streams plus extra ones.
In this case, the "5.1ch" layer will reference four streams (the first two
stereo and the two mono) to encompass six channels, which does not match out
native layout 5.1(side) given that FC and LFE come after FL+FR but before
SL+SR, and here, they are at the end.

For this reason, we need to build Custom order layouts that properly represent
what we're exporting.

----
Before:

  Stream group #0:0[0x12c]: IAMF Audio Element:
    Layer 0: stereo
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
    Layer 1: 5.1(side)
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
    Layer 2: 5.1.2
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:4[0x4]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
    Layer 3: 5.1.4
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:4[0x4]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:5[0x5]: Audio: opus, 48000 Hz, stereo, fltp (dependent)

----
AFter:

  Stream group #0:0[0x12c]: IAMF Audio Element:
    Layer 0: stereo
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
    Layer 1: 6 channels (FL+FR+SL+SR+FC+LFE)
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
    Layer 2: 8 channels (FL+FR+SL+SR+FC+LFE+TFL+TFR)
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:4[0x4]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
    Layer 3: 10 channels (FL+FR+SL+SR+FC+LFE+TFL+TFR+TBL+TBR)
      Stream #0:0[0x0]: Audio: opus, 48000 Hz, stereo, fltp (default)
      Stream #0:1[0x1]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:2[0x2]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:3[0x3]: Audio: opus, 48000 Hz, mono, fltp (dependent)
      Stream #0:4[0x4]: Audio: opus, 48000 Hz, stereo, fltp (dependent)
      Stream #0:5[0x5]: Audio: opus, 48000 Hz, stereo, fltp (dependent)

Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-24 14:41:43 -03:00
James Almer
e5f23a3c5e tests/iamf: rename BACK to SIDE filterchain labels in the 5.1.4 iamf tests
Cosmetic change to reflect the actual channels used in the layouts.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-24 14:41:43 -03:00
James Almer
534eb7260a tests/iamf: reorder muxed streams
Follows the proper order defined by the spec, even if mostly cosmetic, and is
also preparation for a following change.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-24 14:41:43 -03:00
Andreas Rheinhardt
9b409ea1e6 configure: Factor mpegvideoencdsp out of mpegvideoenc
This will allow to relax the dependency on mpegvideoenc
for several codecs.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:52 +02: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
d71c863132 fate/video: Add media100 test
Tests both the Media 100 decoder (using the media100_to_mjpegb BSF
implicitly) as well as using said BSF, followed by the MJPEGB decoder.

(We currently hit a bug when remuxing: The demuxer treats compressorname
as encoded in a Mac character encoding (Mac OS Roman?) and converts
it to UTF-8, yet the muxer just writes it.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:35:13 +02:00
Tristan Matthews
0d9f680b69
checkasm: h264dsp: test luma_dc_dequant
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-06-16 01:31:45 +02:00
Tristan Matthews
5ea3adfcf9
checkasm: add checkasm_check_dctcoef
This is useful for tests that compare dctcoefs which will be either 2 bytes or
4 bytes, depending on bitdepth.

Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-06-16 01:31:44 +02:00
Marvin Scholz
93255f1c48 avformat/sdp: add framerate entry
This also updates fate-lavf-mov_rtphint as there the SDP
is included in the muxed file.
2025-06-11 19:19:50 +02:00
Michael Niedermayer
869e288b3a
avformat/framecrcenc: List types and checksums for for side data
This allows detecting changes and regressions in side data related code, same as what
framecrc does for before already for packet data itself.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-06-07 20:00:12 +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
3cb37c0e71 tests/fate-run: Remove intermediate files from enc-external tests
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 16:21:47 +02:00
Michael Niedermayer
453ae55d63
tests/fate/mov: Add bitexact for fate-mov-mp4-frag-flush
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-06-06 15:15:08 +02:00
James Almer
17729aa80c avformat/movenc: fix writing reserved bits in EC3SpecificBox
As described in section F.6.1 from ETSI TS 102 366.

Found-by: nyanmisaka
Reviewed-by: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-05 21:49:11 -03:00
Andreas Rheinhardt
140fc655f7 tests/fate/libavcodec: Run hashtable test
Reviewed-by: Emma Worley <emma@emma.gg>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-04 15:12:19 +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
Andreas Rheinhardt
fa45e20029 tests/fate/mov: Fix fate-mov-mp4-frag-flush requirements
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-02 13:35:23 +02:00
Zhao Zhili
56cf1c084d avformat/movenc: Fix flush fragment
The follow cmd output corrupted file before the patch:

ffmpeg -f lavfi -i color=blue,trim=duration=0.04 \
	-f lavfi -i anullsrc,atrim=duration=2 \
	-movflags +empty_moov+hybrid_fragmented \
	-frag_duration 1000000 \
	-frag_interleave 1 \
	output.mp4

1. first_track is the first track with track->entry != 0. As in the
command above, video track (track index 0) has a single frame. When
flush the second fragment, first_track is 1, the audio track.

2. write_moof = i == first_track, so write_moof is false for i = 0.

3. When mov->frag_interleave != 0, mov->mdat_buf != NULL, because
it contains audio data. So avio_write is called before write_moof,
that is, the data write before moof, and mov_finish_fragment
executed with wrong mdat_start.

4. With normal fmp4 output, the error isn't obvious. With
hybrid_fragmented, ffplay output.mp4 shows a lot of error messages.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-01 16:36:54 +08:00
Zhao Zhili
3d9b284ad1 tests: Add fate-hevc-color-reserved
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-01 16:35:23 +08:00