summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* tests/checkasm: add vf_idet checkasmNiklas Haas7 hours4-0/+70
|
* tests/fate/demux: add hxvs test caseZhao Zhili9 hours2-0/+200
|
* tests/fate/image: add Exif rotation metadata testsJames Almer5 days4-0/+207
| | | | Signed-off-by: James Almer <[email protected]>
* tests/fate/prores: add a probe testJames Almer5 days2-0/+78
| | | | Signed-off-by: James Almer <[email protected]>
* tests/fate-run: pass threads argument to ffprobeJames Almer5 days1-18/+18
| | | | | | | Ensures it honors the THREADS variable if set to anything other than 1, which will be useful to detect bugs. Signed-off-by: James Almer <[email protected]>
* avfilter/vf_colordetect: Rename header to vf_colordetectdsp.hAndreas Rheinhardt5 days1-1/+1
| | | | | | | | It is more in line with our naming conventions. Reviewed-by: Martin Storsjö <[email protected]> Reviewed-by: Niklas Haas <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]>
* avformat/movenc: add support for fragmented TTML muxingJan Ekström5 days3-0/+881
| | | | | | | | | | | | Attempts to base the fragmentation timing on other streams as most receivers expect media fragments to be more or less aligned. Currently does not support fragmentation on subtitle track only, as the subtitle packet queue timings would have to be checked in addition to the current fragmentation timing logic. Signed-off-by: Jan Ekström <[email protected]>
* tests/fate-run: add support for specifying the final encode muxer in `transcode`Jan Ekström5 days1-1/+3
| | | | | | | | | | | | This allows for direct dumping of the packets' contents (useful for text based formats), while getting the timestamps/sizes etc from ffprobe. If used via TRANSCODE, the actually utilized muxer should be added within the last argument as an additional dependency, as that is not done automatically. Signed-off-by: Jan Ekström <[email protected]>
* build: link with CXX when -lstdc++ on linker commandlineTimo Rothenpieler7 days2-2/+2
|
* tests/checkasm/sw_ops: Avoid 1 << 32Andreas Rheinhardt8 days1-1/+1
| | | | | | It is UB. Signed-off-by: Andreas Rheinhardt <[email protected]>
* fate/prores: Fix missing dependencyaverne12 days1-1/+1
| | | | Signed-off-by: averne <[email protected]>
* avcodec/decode: treat orientation 1 as valid displaymatrixLeo Izen2025-09-063-6/+30
| | | | | | | | | | Since 9dc79241d9680fc050376bb0cc37875a41d00cc9 we now always pop the orientation off of the IFD and use a display matrix instead. This means we should not produce a warning and refuse if the orientation field indicates a default orientation (i.e. 1). Signed-off-by: Leo Izen <[email protected]> Reported-by: Ramiro Polla <[email protected]>
* fate/filter-audio: update acrossfade to test multiple inputsNiklas Haas2025-09-042-24/+6
|
* fftools/ffprobe: add AVFrame.alpha_mode supportNiklas Haas2025-09-0216-81/+119
|
* avcodec/libaom: Add test for HDR10+ metadata supportMaryla Ustarroz-Calonge2025-09-023-0/+52
| | | | | Signed-off-by: Maryla Ustarroz-Calonge <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* checkasm: sw_ops: Avoid division by zeroMartin Storsjö2025-09-021-1/+1
| | | | | | | | | If we're invoked with range == UINT_MAX, we end up doing "rnd() % (UINT_MAX + 1)", which is equal to "rnd() % 0". On arm (on all platforms) and on MSVC i386, this ends up crashing at runtime. This fixes the crash.
* tests/checkasm: add checkasm tests for swscale opsNiklas Haas2025-09-015-1/+786
| | | | | | | | | | | | | | | | Because of the lack of an external ABI on low-level kernels, we cannot directly test internal functions. Instead, we construct a minimal op chain consisting of a read, the op to be tested, and a write. The bigger complication arises from the fact that the backend may generate arbitrary internal state that needs to be passed back to the implementation, which means we cannot directly call `func_ref` on the generated chain. To get around this, always compile the op chain twice - once using the backend to be tested, and once using the reference C backend. The actual entry point may also just be a shared wrapper, so we need to be very careful to run checkasm_check_func() on a pseudo-pointer that will actually be unique for each combination of backend and active CPU flags.
* tests/checkasm: generalize DEF_CHECKASM_CHECK_FUNC to floatsNiklas Haas2025-09-012-17/+42
| | | | | | | We split the standard macro into its body (implementation) and declaration, and use a macro argument in place of the raw `memcmp` call, with the major difference that we now take the number of pixels to compare instead of the number of bytes (to match the signature of float_near_ulp_array).
* tests/checkasm: increase number of runs in between measurementsNiklas Haas2025-09-012-6/+20
| | | | | | | | | | Sometimes, when measuring very small functions, rdtsc is not accurate enough to get a reliable measurement. This increases the number of runs inside the inner loop from 4 to 32, which should help a lot. Less important when using the more precise linux-perf API, but still useful. There should be no user-visible change since the number of runs is adjusted to keep the total time spent measuring the same.
* checkasm/vf_colordetect: test non-aligned widthZhao Zhili2025-09-011-2/+2
|
* avcodec/decode: parse Exif packet side data before passing it to framesJames Almer2025-09-012-1/+1887
| | | | | | | Extract Orientation and export it as a display matrix if present, and set the frame's metadata with the remaining Exif entries. Signed-off-by: James Almer <[email protected]>
* avformat/mov: export Exif metadata from HEIF streamsJames Almer2025-09-012-1/+5
| | | | Signed-off-by: James Almer <[email protected]>
* avformat/movenc: remove mvex from final mp4 in hybrid_fragmented modeZhao Zhili2025-09-012-3/+3
| | | | | | In hybrid_fragmented mode, the first moov at start should contain mvex tag, since it's fmp4. When writing the moov at the second time, it's not fmp4 any more, so mvex should be skipped.
* libavcodec/dpxenc: map AVCodecContext color transfer and color primaries fieldsPeter Ross2025-08-316-6/+6
|
* avutil/opt: also print option names on parse errorMarton Balint2025-08-301-14/+14
| | | | | | It is more user-friendly to print which option caused the parse error. Signed-off-by: Marton Balint <[email protected]>
* avcodec/atrac3: fix inconsistent band num calculationDaniil Cherednik2025-08-291-2/+2
| | | | | | | | | | | | | | | | 'decode_spectrum' reads 5 bits from bitstream to get number of encoded subbands – so 31 means all 32 subbands are encoded. This value also is used to determinate the number of used band in the hybrid filterbank. 'subband_tab' array contains 33 values of MDCT spec line positions started from 0 line and used to map subband number in to the range of mdct lines. Since the subband_num returned by decode_spectrum actually is number – 1 and subband_tab started from 0 we need to add 1 to make num_bands calculation correct.
* vp9: Add AVX-512ICL asm for 8bpc subpel mcHenrik Gramner2025-08-281-3/+3
|
* fftools/ffprobe: print EXIF side data sizeLeo Izen2025-08-194-0/+4
| | | | | | | | We don't need to print the tags here because they're added as dict elements to AVFrame->metadata and are printed elsewhere with ffprobe -show_frames. Signed-off-by: Leo Izen <[email protected]>
* avcodec/tiff: decode TIFF non-image-data tags into EXIF metadata structLeo Izen2025-08-191-1/+23
| | | | | | | | This commit will cause TIFF files to store their tags in the EXIF struct so tags such as orientation can be transfered to other formats (such as PNG) in a way that doesn't corrupt the IFD. Signed-off-by: Leo Izen <[email protected]>
* avcodec/pngenc: support writing EXIF profilesLeo Izen2025-08-192-6/+6
| | | | | | | Add support to write EXIF profiles using the new EXIF framework, namely ff_exif_get_buffer, and writing them into eXIf chunks. Signed-off-by: Leo Izen <[email protected]>
* avcodec/webp: use new EXIF parse APILeo Izen2025-08-191-0/+3
| | | | | | Switch over to the new API to parse EXIF metadata. Signed-off-by: Leo Izen <[email protected]>
* avcodec/mjpegdec: use new EXIF parse APILeo Izen2025-08-192-0/+6
| | | | | | Switch over to the new API to parse EXIF metadata. Signed-off-by: Leo Izen <[email protected]>
* avcodec/exif: add EXIF parser and struct APILeo Izen2025-08-193-361/+291
| | | | | | | | | | | | | This commit adds a structure to contain parsed EXIF metadata, as well as code to read and write that struct from/to binary EXIF buffers. Some internal functions have been moved to exif_internal.h. Code to read from this new struct and write to an AVDictionary **dict has been added as well in order to preserve interoperability with existing callers. The only codec changes so far as of this commit are to call these interop functions, but in future commits there will be codec changes to use the new parsing routines instead. Signed-off-by: Leo Izen <[email protected]>
* swscale/swscale_internal: Use more precisse gammaMichael Niedermayer2025-08-1813-23/+23
| | | | | | Avoids failure of xyz12 fate tests on mingw and linux x86-32 Signed-off-by: Michael Niedermayer <[email protected]>
* avfilter/vf_colordetect: detect fully opaque alpha planesNiklas Haas2025-08-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | It can be useful to know if the alpha plane consists of fully opaque pixels or not, in which case it can e.g. safely be stripped. This only requires a very minor modification to the AVX2 routines, adding an extra AND on the read alpha value with the reference alpha value, and a single extra cheap test per line. detect_alpha_8_full_c: 2849.1 ( 1.00x) detect_alpha_8_full_avx2: 260.3 (10.95x) detect_alpha_8_full_avx512icl: 130.2 (21.87x) detect_alpha_8_limited_c: 8349.2 ( 1.00x) detect_alpha_8_limited_avx2: 756.6 (11.04x) detect_alpha_8_limited_avx512icl: 364.2 (22.93x) detect_alpha_16_full_c: 1652.8 ( 1.00x) detect_alpha_16_full_avx2: 236.5 ( 6.99x) detect_alpha_16_full_avx512icl: 134.6 (12.28x) detect_alpha_16_limited_c: 5263.1 ( 1.00x) detect_alpha_16_limited_avx2: 797.4 ( 6.60x) detect_alpha_16_limited_avx512icl: 400.3 (13.15x)
* avfilter/vf_colordetect: remove extra safety margin on premul checkNiklas Haas2025-08-181-1/+1
| | | | | | | | | | This safety margin was motivated by the fact that vf_premultiply sometimes produces such illegally high values, but this has since been fixed by 603334a04362e7, so there's no more reason to have this safety margin, at least for our own code. (Of course, other sources may also produce such broken files, but we shouldn't work around that - garbage in, garbage out.) See-Also: 603334a04362e7a466cbdf9a25892ded167e3ce0
* avfilter/vf_colordetect: rename p, q, k variables for clarityNiklas Haas2025-08-181-8/+8
| | | | | | | Purely cosmetic. Motivated in part because I want to depend on the assumption that P represents the maximum alpha channel value.
* tests/checkasm/vf_colordetect: also test opaque alpha base caseNiklas Haas2025-08-181-3/+9
| | | | Preemptively adding a check for a following commit.
* tests/fate/cbs: add a test for gray apvJames Almer2025-08-132-0/+2
| | | | Signed-off-by: James Almer <[email protected]>
* tests/fate/cbs: move redundant_pps tests to the proper locationJames Almer2025-08-136-46/+27
| | | | | | | cbs.mak is meant to contain tests strictly for the CBS framework, not for any bsf that happens to use it under the hood. Signed-off-by: James Almer <[email protected]>
* checkasm/swscale: fix whitespace issuesDash Santosh2025-08-121-2/+2
|
* swscale/aarch64/output: Implement neon assembly for yuv2planeX_10_c_template()Logaprakash Ramajayam2025-08-121-61/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | yuv2yuvX_8_2_0_512_accurate_c: 2213.4 ( 1.00x) yuv2yuvX_8_2_0_512_accurate_neon: 147.5 (15.01x) yuv2yuvX_8_2_0_512_approximate_c: 2203.9 ( 1.00x) yuv2yuvX_8_2_0_512_approximate_neon: 154.1 (14.30x) yuv2yuvX_8_2_16_512_accurate_c: 2147.2 ( 1.00x) yuv2yuvX_8_2_16_512_accurate_neon: 150.8 (14.24x) yuv2yuvX_8_2_16_512_approximate_c: 2149.7 ( 1.00x) yuv2yuvX_8_2_16_512_approximate_neon: 146.8 (14.64x) yuv2yuvX_8_2_32_512_accurate_c: 2078.9 ( 1.00x) yuv2yuvX_8_2_32_512_accurate_neon: 139.0 (14.95x) yuv2yuvX_8_2_32_512_approximate_c: 2083.7 ( 1.00x) yuv2yuvX_8_2_32_512_approximate_neon: 140.5 (14.84x) yuv2yuvX_8_2_48_512_accurate_c: 2010.7 ( 1.00x) yuv2yuvX_8_2_48_512_accurate_neon: 138.2 (14.55x) yuv2yuvX_8_2_48_512_approximate_c: 2012.6 ( 1.00x) yuv2yuvX_8_2_48_512_approximate_neon: 141.2 (14.26x) yuv2yuvX_10LE_16_0_512_accurate_c: 7874.1 ( 1.00x) yuv2yuvX_10LE_16_0_512_accurate_neon: 831.6 ( 9.47x) yuv2yuvX_10LE_16_0_512_approximate_c: 7918.1 ( 1.00x) yuv2yuvX_10LE_16_0_512_approximate_neon: 836.1 ( 9.47x) yuv2yuvX_10LE_16_16_512_accurate_c: 7630.9 ( 1.00x) yuv2yuvX_10LE_16_16_512_accurate_neon: 804.5 ( 9.49x) yuv2yuvX_10LE_16_16_512_approximate_c: 7724.7 ( 1.00x) yuv2yuvX_10LE_16_16_512_approximate_neon: 808.6 ( 9.55x) yuv2yuvX_10LE_16_32_512_accurate_c: 7436.4 ( 1.00x) yuv2yuvX_10LE_16_32_512_accurate_neon: 780.4 ( 9.53x) yuv2yuvX_10LE_16_32_512_approximate_c: 7366.7 ( 1.00x) yuv2yuvX_10LE_16_32_512_approximate_neon: 780.5 ( 9.44x) yuv2yuvX_10LE_16_48_512_accurate_c: 7099.9 ( 1.00x) yuv2yuvX_10LE_16_48_512_accurate_neon: 761.0 ( 9.33x) yuv2yuvX_10LE_16_48_512_approximate_c: 7097.6 ( 1.00x) yuv2yuvX_10LE_16_48_512_approximate_neon: 754.6 ( 9.41x) Benchmarked on: Snapdragon(R) X Elite - X1E80100 - Qualcomm(R) Oryon(TM) CPU 3417 Mhz, 12 Core(s), 12 Logical Processor(s)
* fate: Fix the sub-mcc tests on Windows in eastern time zonesMartin Storsjö2025-08-115-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, these tests failed when running on Windows, if the system is configured with a time zone east of Greenwich, i.e. with a positive GMT offset. The muxer converts the creation_date given by the user using av_parse_time to unix time, as a time_t. The creation_date is interpreted as a local time, i.e. according to the current time zone. (This time_t value is then converted back to a broken out local time form with localtime_r.) The given reference date/time, "1970-01-01T00:00:00", is the origin point for unix time, corresponding to time_t zero. However when interpreted as local time, this doesn't map to exactly zero. Time zones east of Greenwich reached this time a number of hours before the point of zero time_t - so the corresponding time_t value essentially is minus the GMT offset, in seconds. Windows mktime returns an error, returning (time_t)-1, when given such a "struct tm", while e.g. glibc mktime happily returns a negative time_t. av_parse_time doesn't check the return value of mktime for potential errors. This is observable with the following test snippet: struct tm tm = { 0 }; tm.tm_year = 70; tm.tm_isdst = -1; tm.tm_mday = 1; tm.tm_hour = 0; time_t t = mktime(&tm); printf("%d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); printf("t %d\n", (int)t); By varying the value of tm_hour and the system time zone, one can observe that Windows mktime returns -1 for all time_t values that would have been negative. This range limit is also documented by Microsoft in detail at https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/mktime-mktime32-mktime64. To avoid the issue, pick a different, arbitrary reference time, which should have a nonnegative time_t for all time zones.
* checkasm: ac3dsp: Increase the float tolerance for sum_square_butterfly_floatMartin Storsjö2025-08-101-1/+1
| | | | | | | | | | | | | Accept up to 13 ULP difference. This fixes running "checkasm --test=ac3dsp 3044836819" on ARM. Depending on how the SIMD implementations aggregate numbers, larger/smaller values might not end up accumulated in exactly the same way; the current NEON implementation for ARM aggregates into vectors of 2 elements. If it would aggregate into vectors of 4 elements instead, like the AArch64 version does, this particular case would end up with a smaller difference.
* checkasm: ac3dsp: Fix function name typos for sum_square_butterflyMartin Storsjö2025-08-101-2/+2
|
* tests/fate/subtitles: add test for smpte436m_to_eia608 bsfJacob Lifshay2025-08-102-0/+80
| | | | Signed-off-by: Jacob Lifshay <[email protected]>
* tests/fate/subtitles: fix mcc test input file pathsJacob Lifshay2025-08-101-3/+3
| | | | | | | | | | they use tests/ref/fate/sub-mcc-remux as input, so prefix them with $(SRC_PATH) so building works when not in the source directory. Fixes: #20183 Reported-by: Sean McGovern <[email protected]> Signed-off-by: Jacob Lifshay <[email protected]>
* cbs_vp9: Fix VP9 passthroughMark Thompson2025-08-0914-14/+14
| | | | | | | | | Don't overwrite the bitstream values when updating the top-level loop filter and segmentation state, instead do the update separately at the end of the frame parsing. This also reverts the change to the passthrough tests which made them have output not matching the input.
* fate/vvc: add vvc-conformance-FIELD_A_4Wu Jianhua2025-08-082-0/+26
| | | | Signed-off-by: Wu Jianhua <[email protected]>
* fate/vvc: add vvc-conformance-ACT_A_3Wu Jianhua2025-08-082-0/+71
| | | | Signed-off-by: Wu Jianhua <[email protected]>