summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* avutil/channel_layout: print known layout names in custom layoutJames Almer2024-02-181-2/+2
| | | | | | | If a custom layout is equivalent to a native one, check if it matches one of the known layout names and print that instead. Signed-off-by: James Almer <[email protected]>
* {avcodec,tests}: rename the bundled Mesa AV1 vulkan video headersJan Ekström2024-02-181-2/+2
| | | | | | | | | | | | | | | | | | This together with adjusting the inclusion define allows for the build to not fail with latest Vulkan-Headers that contain the stabilized Vulkan AV1 decoding definitions. Compilation fails currently as the AV1 header is getting included via hwcontext_vulkan.h -> <vulkan/vulkan.h> -> vulkan_core.h, which finally includes vk_video/vulkan_video_codec_av1std.h and the decode header, leading to the bundled header to never defining anything due to the inclusion define being the same. This fix is imperfect, as it leads to additional re-definition warnings for things such as VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION. , but it is not clear how to otherwise have the bundled version trump the actually standardized one for a short-term compilation fix.
* avutil/tests/channel_layout: add tests for av_channel_order_retypeMarton Balint2024-02-181-0/+27
| | | | Signed-off-by: Marton Balint <[email protected]>
* checkasm/rv34dsp: add rv34_idct_dc_add testsunyuechi2024-02-171-0/+24
| | | | Signed-off-by: Rémi Denis-Courmont <[email protected]>
* checkasm/rv34dsp: add rv34_inv_transform_dc testsunyuechi2024-02-175-0/+71
| | | | Signed-off-by: Rémi Denis-Courmont <[email protected]>
* avfilter/buffersrc: promote unspecified color metadataNiklas Haas2024-02-131-2/+2
| | | | | | | | | | | | Currently, this only affects untagged RGB/XYZ/Gray, which get forced to their corresponding metadata before entering the filter graph. The main justification for this change, however, is the planned ability to add automatic promotion of unspecified yuv to mpeg range yuv. Notably, this change will never allow accidentally cross-promoting unspecified to jpeg or to a specific YUV matrix, since that is still bound by the constraints of YUV range negotiation as set up by query_formats.
* fate/subtitles: Ignore line endings for sub-scc testAndreas Rheinhardt2024-02-131-0/+1
| | | | | | | | | Since 7bf1b9b35769b37684dd2f18a54f01d852a540c8, the test produces ordinary \n, yet this is not what the reference file used for the most time, leading to test failures. Reviewed-by: Martin Storsjö <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]>
* lavf/assenc: normalize line endings to \nrcombs2024-02-1125-818/+818
| | | | | | | | | | | | Previously, we produced output with either \r\n or mixed line endings. This was undesirable unto itself, but also made working with patches affecting FATE output particularly challenging, especially via the mailing list. Everything that consumes the SSA/ASS format is line-ending-agnostic, so \n is selected to simplify git/ML usage in FATE. Extra \r characters at the end of a packet are dropped. These are always ignored by the renderer anyway.
* tests/fate-run: Sanitize test argumentAndreas Rheinhardt2024-02-101-3/+3
| | | | | | test -z is a binary operator. Signed-off-by: Andreas Rheinhardt <[email protected]>
* lavc/dxv: align to 4x4 blocks instead of 16x16Connor Worley2024-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The previous assumption that DXV needs to be aligned to 16x16 was erroneous. 4x4 works just as well, and FATE decoder tests pass for all texture formats. On the encoder side, we should reject input that isn't 4x4 aligned, like the HAP encoder does, and stop aligning to 16x16. This both solves the uninitialized reads causing current FATE tests to fail and produces smaller encoded outputs. With regard to correctness, I've checked the decoding path by encoding a real-world sample with git master, and decoding it with ffmpeg -i dxt1-master.mov -c:v rawvideo -f framecrc - The results are exactly the same between master and this patch. On the encoding side, I've encoded a real-world sample with both master and this patch, and decoded both versions with ffmpeg -i dxt1-{master,patch}.mov -c:v rawvideo -f framecrc - Under this patch, results for both inputs are exactly the same. In other words, the extra padding gained by 16x16 alignment over 4x4 alignment has no impact on decoded video. Signed-off-by: Connor Worley <[email protected]> Signed-off-by: Martin Storsjö <[email protected]>
* fate/video: add DXV3 HQ testsConnor Worley2024-02-083-0/+18
| | | | Signed-off-by: Connor Worley <[email protected]>
* fate/video: add DXV3 DXT1 encoding testConnor Worley2024-02-082-0/+13
| | | | Signed-off-by: Connor Worley <[email protected]>
* lavc/texturedsp: fix premult2straight inversionConnor Worley2024-02-082-2/+2
| | | | | | This function should convert premultiplied alpha to straight, but does the opposite. Signed-off-by: Connor Worley <[email protected]>
* avfilter: pass link YUV colorspace to ff_draw_init2Niklas Haas2024-02-061-8/+8
| | | | | | | | | | | | | This makes all ff_draw_* based filters aware of YUV colorspaces and ranges. Needed for YUVJ removal. Also fixes a bug where e.g. vf_pad would generate a limited range background even after conversion to full-scale grayscale. The FATE changes were a consequence of the aforementioned bugfix - the gray scale files are output as full range (due to conversion by libswscale, which hard-codes gray = full), and appropriately tagged as such, but before this change the padded version incorrectly used a limited range (16) black background for these formats.
* tests/fate/ffmpeg: add a test for the issue fixed in previous commitAnton Khirnov2024-02-051-0/+8
|
* tests/fate/mov: add a test for reading and writing amve boxCosmin Stejerean2024-02-043-0/+46
|
* fate/checkasm: enable testing vvc_mcJames Almer2024-02-011-0/+1
| | | | Signed-off-by: James Almer <[email protected]>
* tests/checkasm/vvc_mc: add check_avgWu Jianhua2024-02-011-0/+64
| | | | Signed-off-by: Wu Jianhua <[email protected]>
* tests/checkasm: add checkasm_check_vvc_mcWu Jianhua2024-02-014-0/+275
| | | | Signed-off-by: Wu Jianhua <[email protected]>
* fftools/ffmpeg: optimize inter-thread queue sizesAnton Khirnov2024-01-281-5/+0
| | | | | | | Use 8 packets/frames by default rather than 1, which seems to provide better throughput. Allow -thread_queue_size to set the muxer queue size manually again.
* tests/fate/ffmpeg: add a test for the issue fixed in previous commitAnton Khirnov2024-01-272-0/+65
|
* fate/matroska: add missing speex decoder dependency to fate-matroska-ms-modeJames Almer2024-01-241-1/+1
| | | | Signed-off-by: James Almer <[email protected]>
* tests/checkasm/aacencdsp: Use float_near_ulp_array() for abs_pow34() testMichael Niedermayer2024-01-241-1/+1
| | | | | | Fixes: ticket/10818 Approved-by: James Almer <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* fate: remove unused filtergraph filesJames Almer2024-01-232-9/+0
| | | | | | They were added by mistake. Signed-off-by: James Almer <[email protected]>
* fate/iamf: add an ambisonic testJames Almer2024-01-235-0/+83
| | | | Signed-off-by: James Almer <[email protected]>
* fate: add VVC decoder testsJames Almer2024-01-2327-0/+961
| | | | Signed-off-by: James Almer <[email protected]>
* avcodec/speexdec: fix setting frame_size from extradataJames Almer2024-01-221-1/+1
| | | | | | | | | Finishes fixing vp5/potter512-400-partial.avi The fate-matroska-ms-mode test ref is updated to reflect that the Speex decoder can now read the stream. Signed-off-by: James Almer <[email protected]>
* fate: add raw IAMF testsJames Almer2024-01-2215-1/+312
| | | | | | | Covers muxing from raw pcm audio input into FLAC, using several scalable layouts, and demuxing the result. Signed-off-by: James Almer <[email protected]>
* fftools/ffmpeg: deprecate -filter_scriptAnton Khirnov2024-01-202-4/+4
| | | | It is equivalent to -/filter.
* fftools/ffmpeg: deprecate -filter_complex_scriptAnton Khirnov2024-01-204-20/+20
| | | | It is equivalent to -/filter_complex.
* fftools/ffmpeg_demux: implement -bsf for inputAnton Khirnov2024-01-192-0/+23
| | | | | Previously bitstream filters could only be applied right before muxing, this allows to apply them right after demuxing.
* avutil/eval: Use even better PRNGMichael Niedermayer2024-01-162-105/+105
| | | | | | | | | | | | | | | | | | This is the 64bit version of Chris Doty-Humphreys SFC64 Compared to the LCGs these produce much better quality numbers. Compared to LFGs this needs less state. (our LFG has 224 byte state for its 32bit version) this has 32byte state Also the initialization for our LFG is slower. This is also much faster than KISS or PCG. This commit replaces the broken LCG used before. (broken as it had only a period ~200M due to being put in a double) This changes the output from random() which is why libswresample.mak is updated, update was done using the command in libswresample.mak Signed-off-by: Michael Niedermayer <[email protected]>
* checkasm: Test whether the native FFmpeg timers workMartin Storsjö2024-01-151-1/+11
| | | | | | | | | | | | | | | On some platforms (in particular, ARM/AArch64), the implementation of AV_READ_TIME() may use a privileged instruction - in such cases, benchmarking just fails with a SIGILL. Instead of crashing, try executing AV_READ_TIME() once within a region with the signal handler active, to allow gracefully informing the user about the issue. This matches the dav1d checkasm commit 95a192549a448b70d9542e840c4e34b60d09b093. Signed-off-by: Martin Storsjö <[email protected]>
* fate/mov: add dependencies to heif testsJames Almer2024-01-151-4/+8
| | | | Signed-off-by: James Almer <[email protected]>
* fate/subtitles: add missing ref for fate-sub-rcwtJames Almer2024-01-151-0/+2
| | | | Signed-off-by: James Almer <[email protected]>
* avformat/mov: improve HEIF parsingJames Almer2024-01-152-2/+2
| | | | | | | | | | | | Parse iprp and iinf boxes and its child boxes to get the actual codec used (AV1 for avif, HEVC for heic), and properly export extradata and other properties in a generic way. The avif tests reference files are updated as the extradata is now exported. Based on a patch by Swaraj Hota Co-authored-by: Swaraj Hota <[email protected]> Signed-off-by: James Almer <[email protected]>
* checkasm/svqenc: add ssd_int8_vs_int16 testsunyuechi2024-01-155-0/+74
| | | | Signed-off-by: Rémi Denis-Courmont <[email protected]>
* libavformat: add RCWT closed caption muxexMarth642024-01-141-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Marth64 <[email protected]> Raw Captions With Time (RCWT) is a format native to ccextractor, a commonly used open source tool for processing 608/708 closed caption (CC) sources. It can be used to archive the original, raw CC bitstream and to produce a source file file for later CC processing or conversion. As a result, it also allows for interopability with ccextractor for processing CC data extracted via ffmpeg. The format is simple to parse and can be used to retain all lines and variants of CC. A free specification of RCWT can be found here: https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT This muxer implements the specification as of 01/05/2024, which has been stable and unchanged for 10 years as of this writing. This muxer will have some nuances from the way that ccextractor muxes RCWT. No compatibility issues when processing the output with ccextractor have been observed as a result of this so far, but mileage may vary and outputs will not be a bit-exact match. Specifically, the differences are: (1) This muxer will identify as "FF" as the writing program identifier, so as to be honest about the output's origin. (2) ffmpeg's MPEG-1/2, H264, HEVC, etc. decoders extract closed captioning data differently than ccextractor from embedded SEI/user data. For example, DVD captioning bytes will be translated to ATSC A53 format. This allows ffmpeg to handle 608/708 in a consistant way downstream. This is a lossless conversion and the meaningful data is retained. (3) This muxer will not alter the extracted data except to remove invalid packets in between valid CC blocks. On the other hand, ccextractor will by default remove mid-stream padding, and add padding at the end of the stream (in order to convey the end time of the source video).
* checkasm: Generalize crash handlingMartin Storsjö2024-01-113-44/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replaces the riscv specific handling from 7212466e735aa187d82f51dadbce957fe3da77f0 (which essentially is reverted), with a different implementation of the same (plus a bit more), based on the corresponding feature in dav1d's checkasm, supporting both Unix and Windows. See in particular the dav1d commits 0b6ee30eab2400e4f85b735ad29a68a842c34e21, 0421f787ea592fd2cc74c887f20b8dc31393788b, 8501a4b20135f93a4c3b426468e2240e872949c5 and d23e87f7aee26ddcf5f7a2e185112031477599a7, authored by Henrik Gramner. The overall approach compared to the existing implementation for riscv is the same; set up a signal handler, store the state with sigsetjmp, jump out of the crashing function with siglongjmp. The main difference is in what happens when the signal handler is invoked. In the previous implementation, it would resume from right before calling the crashing function, and then skip that call based on the setjmp return value. In the imported implementation from dav1d, we return to right before the check_func() call, which will skip testing the current function (as the pointer is the same as it was before). Other differences are: - Support for other signal handling mechanisms (Windows AddVectoredExceptionHandler) - Using RtlCaptureContext/RtlRestoreContext instead of setjmp/longjmp on Windows with SEH - Only catching signals once per function - if more than one signal is delivered before signal handling is reenabled, any signal is handled as it would without our handler - Not using an arch specific signal handler written in assembly Signed-off-by: Martin Storsjö <[email protected]>
* avcodec/proresenc_anatoliy: do not write into chroma reserved bitfieldsClément Bœsch2024-01-1016-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | The layout for the frame flags is as follow: chroma_format u(2) reserved u(2) interlace_mode u(2) reserved u(2) chroma_format has 2 allowed values: 0: reserved 1: reserved 2: 4:2:2 3: 4:4:4 interlace_mode has 3 allowed values: 0: progressive 1: tff 2: bff 3: reserved 0x80 is what we expect for "422 not interlaced", and the extra 0x2 from 0x82 is actually writing into the reserved bits.
* avcodec/proresenc_anatoliy: do not write into alpha reserved bitfieldsClément Bœsch2024-01-1016-16/+16
| | | | | | | | This byte represents 4 reserved bits followed by 4 alpha_channel_type bits. alpha_channel_type currently has 3 differents defined values: 0 (no alpha), 1 (8b alpha), and 2 (16b alpha), all the other values are reserved. The 4 initial reserved bits are expected to be 0.
* avcodec/proresenc_kostya: do not write into alpha reserved bitfieldsClément Bœsch2024-01-104-4/+4
| | | | | | | | | This byte represents 4 reserved bits followed by 4 alpha_channel_type bits. alpha_channel_type currently has 3 differents defined values: 0 (no alpha), 1 (8b alpha), and 2 (16b alpha), all the other values are reserved. This part is correctly written (alpha_bits>>3 does the correct thing), but the 4 initial bits are reserved.
* avcodec/proresenc_anatoliy: use a compatible bitstream versionClément Bœsch2024-01-108-8/+8
| | | | | | | | | | | | Quoting SMPTE RDD 36:2015: A decoder shall abort if it encounters a bitstream with an unsupported bitstream_version value. If 0, the value of the chroma_format syntax element shall be 2 (4:2:2 sampling) and the value of the alpha_channel_type element shall be 0 (no encoded alpha); if 1, any permissible value may be used for those syntax elements. So if we're not in 4:2:2 or if there is alpha, we are not allowed to use version 0.
* fate/mov: force the native av1 decoder for the avif testsJames Almer2024-01-093-4/+4
| | | | Signed-off-by: James Almer <[email protected]>
* avformat/mov: Add support for demuxing still HEIC imagesVignesh Venkatasubramanian via ffmpeg-devel2024-01-093-0/+28
| | | | | | | | | | | | | | | | | | They are similar to AVIF images (both use the HEIF container). The only additional work needed is to parse the hvcC box and put it in the extradata. With this patch applied, ffmpeg (when built with an HEVC decoder) is able to decode the files in https://github.com/nokiatech/heif/tree/gh-pages/content/images Also add a couple of fate tests with samples from https://github.com/nokiatech/heif_conformance/tree/master/conformance_files Partially fixes trac ticket #6521. Signed-off-by: Vignesh Venkatasubramanian <[email protected]> Signed-off-by: James Almer <[email protected]>
* fate/mov: enable the AVIF testsJames Almer2024-01-091-8/+4
| | | | | | The samples were uploaded long ago, but this was forgotten. Signed-off-by: James Almer <[email protected]>
* fate: Add fsync filter testsThilo Borgmann2024-01-056-1/+149
|
* avcodec/hevc_parser: fix missing zero_byte at frame beginningZhao Zhili2024-01-051-1/+1
| | | | | | | The start code is matched against 0x000001, zero_byte was treated as last byte of last frame rather than the beginning of next frame. Signed-off-by: Zhao Zhili <[email protected]>
* avfilter: add negotiation API for color space/rangeNiklas Haas2023-12-311-2/+2
| | | | | | | | | | | | | | | | | | | Motivated by YUVJ removal. This change will allow full negotiation between color ranges and matrices as needed. By default, all ranges and matrices are marked as supported. Because grayscale formats are currently handled very inconsistently (and in particular, assumed as forced full-range by swscale), we exclude them from negotiation altogether for the time being, to get this API merged. After filter negotiation is available, we can relax the grayscale-is-forced-jpeg restriction again, when it will be more feasible to do so without breaking a million test cases. Note that this commit updates one FATE test as a consequence of the sanity fallback for non-YUV formats. In particular, the test case now writes rgb24(pc, gbr/unspecified/unspecified) to the matroska file, instead of rgb24(unspecified/unspecified/unspecified) as before.
* tests/dca: remove usage of deprecated request_channel_layout optionJames Almer2023-12-281-6/+6
| | | | Signed-off-by: James Almer <[email protected]>