summaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAge
* avformat/oggenc: ignore empty packetsJames Almer2022-12-27
| | | | | | | | | | Some encoders, like flac, can send side data only packets at the end. Eventually, said extradata update should ideally be used to update the header when writting to seekable output, but for now, ignore them. Should fix the undefined behavior of passing NULL to memcpy(). Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/pnm: avoid mirroring PFM images verticallyLeo Izen2022-12-27
| | | | | | | | | | | | | | | | | | | | PFM (aka Portable FloatMap) encodes its scanlines from bottom-to-top, not from top-to-bottom, unlike other NetPBM formats. Without this patch, FFmpeg ignores this exception and decodes/encodes PFM images mirrored vertically from their proper orientation. For reference, see the NetPBM tool pfmtopam, which encodes a .pam from a .pfm, using the correct orientation (and which FFmpeg reads correctly). Also compare ffplay to magick display, which shows the correct orientation as well. See: http://www.pauldebevec.com/Research/HDR/PFM/ and see: https://netpbm.sourceforge.net/doc/pfm.html for descriptions of this image format. Signed-off-by: Leo Izen <leo.izen@gmail.com> Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: James Almer <jamrial@gmail.com>
* fate/flac: Add test of 32 bps encoding/decodingMartijn van Beurden2022-12-26
|
* checkasm/v210dec: add extra space to the destination arraysJames Darnley2022-12-21
|
* avcodec/x86: add avx512icl function for v210decJames Darnley2022-12-20
| | | | Ice Lake (Xeon Silver 4316): 2.01x faster (1147±36.8 vs. 571±38.2 decicycles) compared with avx2
* avfilter/vf_tinterlace: support full-range YUVNiklas Haas2022-12-20
| | | | | | | | | | | | | | | | | | | | | | This filter, when used in the "pad" mode, currently makes the distinction between limited and full range solely by testing for YUVJ pixel formats at link setup time. This is deprecated and should be improved to perform the detection based on the per-frame metadata. In order to make this distinction based on color range metadata, which is only known at the time of filtering frames, for simplicity, we simply allocate two copies of the "black" frame - one for limited range and the other for full range metadata. This could be done more dynamically (e.g. as-needed or simply by blitting the appropriate pixel value directly), but this change is relatively simple and preserves the structure of the existing code. This commit actually fixes a bug in FATE - the new output is correct for the first time. The previous md5 ref was of a frame that incorrectly combined full-range pixel data with limited-range black fields. The corresponding result has been updated. Signed-off-by: Niklas Haas <git@haasn.dev>
* avfilter/drawutils: rgb48/bgr48 is supportedPaul B Mahol2022-12-10
|
* Revert "avcodec/decode: use a packet list to store packet properties"James Almer2022-12-07
| | | | | | | | | | | | | | The idea behind last_pkt_props was to store the properties of the last packet fed to the decoder. Any sort of queueing required by CODEC_CAP_DELAY decoders that consume several packets before they start outputting frames should be done by the decoders in question. An example of this is libdav1d. This is required for the following commits that will fix last_pkt_props in frame threading scenarios, as well as maintain its contents during flush. This revers commit 022a12b306ab2096e6ac9fc9b149828a849d65b2. Signed-off-by: James Almer <jamrial@gmail.com>
* fate: add QOI/XBM/XWD image2pipe testsPaul B Mahol2022-12-03
|
* avcodec/ass: specify a permissive encodingOneric2022-12-03
| | | | | | | | | | | | | | | The Encoding field (and the \fe tag) allows to limit font selection to only those fonts declaring support for the specified codepage in their OS/2's table "Code Page Character Range" field. Particularly, Encoding=0 means only font's declaring support for "ANSI", or rather "Latin (Western European)", are allowed to be selected. Specifying Encoding=1 allows all fonts to be considered. We do not want to limit font selection, so specify Encoding=1. NB: at the time of writing libass only partially supports this field, thus hiding the issue in any libass-based renderer. A VSFilter-based DirectShow filter or XySubFilter will reveal the issue when a font not declaring support for latin characters is specified in a style.
* avcodec/ass: accurately preserve coloursOneric2022-12-03
| | | | | | | | | | | | | | | | | | Colour values used in ASS files without a "YCbCr Matrix" header set to "None" are subject to colour mangling, due to how ASS was historically conceived. A more in-depth description can be found in the documetation inside libass' public ass_types.h header. The important part is, if this header is not set to "None", the final output colours can deviate from the literal value specified in the file. When converting from non-ASS formats we do not want any colour shift to happen, so let's set the appropiate header. NB: ffmpeg's subtitle filter, does not follow libass' documentation regarding colour mangling, thus hiding the bug. Anything based on VSFilter, XySubFilter or e.g. mpv do and might show the issue. (Of course native ASS subs, which _do_ rely on colour mangling won't work properly with the subtitle filter, but this can be fixed another time)
* checkasm/v210enc: test the entire width of 10-bit planar input arraysJames Darnley2022-12-01
|
* avcodec/h2645_sei: Also support Active Format Descriptor for HEVCAndreas Rheinhardt2022-12-01
| | | | | | | | | | | | | | | It is valid for HEVC; in fact, the ATSC-HEVC spec [1] simply refers to the relevant H.264 spec. It is also trivial to implement now: Just move applying AFD to ff_h2645_sei_to_frame() and stop ignoring AFD when parsing a HEVC SEI containing it. A FATE-test for this has been added. [1]: https://www.atsc.org/atsc-documents/a3412017-video-hevc/ Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fate/aacenc: increase tolerance for ln-128k testLynne2022-11-24
| | | | | | | | | | | The encoder is sensitive to changes in precision, and its test target was a compromise. It was already close to failing on x87 FPUs. ff_mdct_init used double precision entirely from the scale to computing the MDCT exp tables. av_tx_init uses single-precision for the scale, with a small input change which was enough to tip the test into failing on x87 FPUs. Increase the fuzz factor in line with other AAC encoder tests to fix.
* fate: Mark the tiff-zip-* tests as requiring zlibMartin Storsjö2022-11-17
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* avcodec/tiff: add read support for compressed rgb floating point formatsMark Reid2022-11-16
| | | | | | | floating point uses a slightly different predictor technique describe here http://chriscox.org/TIFFTN3d1.pdf Signed-off-by: Anton Khirnov <anton@khirnov.net>
* libavfilter/x86/vf_convolution: add sobel filter optimization and unit test ↵bwang302022-11-14
| | | | | | | | | | | | with intel AVX512 VNNI This commit enabled assembly code with intel AVX512 VNNI and added unit test for sobel filter sobel_c: 4537 sobel_avx512icl 2136 Signed-off-by: bwang30 <bin.wang@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* fate/video: vqc testcasePeter Ross2022-11-07
|
* fate/audio: msnsiren test casePeter Ross2022-11-07
|
* fate/microsoft: add mss2 region test casePeter Ross2022-11-07
|
* imc: convert to lavu/tx, remove NIH iMDCT and replace with a standard oneLynne2022-11-06
|
* dcaenc: convert to lavu/txLynne2022-11-06
| | | | | | The encoder is fixed point, and uses an MDCT only for analysis. Due to the slightly different rounding, the encoder makes a different decision, so the tests have to be adjusted as well.
* dca_core: convert to lavu/txLynne2022-11-06
| | | | | Thanks to Martin Storsjö <martin@martin.st> for fixing and testing the arm32 and aarch64 changes.
* aacdec: convert to lavu/tx and support fixed-point 960-sample decodingLynne2022-11-06
| | | | | | | | | | | This patch replaces the transform used in AAC with lavu/tx and removes the limitation on only being able to decode 960-sample files with the float decoder. This commit also removes a whole bunch of unnecessary and slow lifting steps the decoder did to compensate for the poor accuracy of the old integer transformation code. Overall float decoder speedup on Zen 3 for 64kbps: 32%
* ac3: convert to lavu/txLynne2022-11-06
|
* checkasm: add a verbose check function for uint32_t dataJames Darnley2022-11-04
|
* avutil/channel_layout: add a 7.1(top) channel layoutJames Almer2022-11-03
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/tests/imf: add CPL timecode testPierre-Anthony Lemieux2022-11-03
|
* avcodec/svq1: fix interframe mean VLC symbolsPeter Ross2022-11-01
| | | | | | | | | | | | | | | | | | Fixes ticket #128. The SVQ1 interframe mean VLC symbols -128 and 128 are incorrectly swapped in our SVQ1 implementation, resulting in visible artifacts for some videos. This patch unswaps the order of these two symbols. The most noticable example of the artiacts caused by this error can be observed in https://trac.ffmpeg.org/attachment/ticket/128/svq1_set.7z '352_288_k_50.mov'. The artifacts are not observed when using the reference decoder (QuickTime 7.7.9 x86 binary). As a result of this patch, the reference data for the fate-svq1 test ($SAMPLES/svq1/marymary-shackles.mov) must be modified. For this file, our decoder output is now bitwise identical to the reference decoder. I have tested patch with various other samples and they are all now bitwise identical.
* avcodec/svq1enc: output ident string in extradata fieldPeter Ross2022-11-01
| | | | | This will enable the acurate identification of FFmpeg produced SVQ1 streams, should there be new bugs found in the encoder.
* avcodec/svq1enc: do not use ambiguous interframe mean symbolsPeter Ross2022-11-01
| | | | Don't emit interframe mean symbols -128 and 128.
* avutil/channel_layout: add a cube channel layoutJames Almer2022-10-30
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* ffmpeg: Add display_{rotation, hflip, vflip} optionsJan Ekström2022-10-19
| | | | | | | | | This enables overriding the rotation as well as horizontal/vertical flip state of a specific video stream on the input side. Additionally, switch the singular test that was utilizing the rotation metadata to instead override the input display rotation, thus leading to the same result.
* checkasm/idctdsp: Use declare_func_emms only when neededAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for (add|put|put_signed)_pixels_clamped since commit bfb28b5ce89f3e950214b67ea95b45e3355c2caf, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/llviddspenc: Use declare_func_emms only when neededAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for diff_bytes since commit 230ea38de143368729ee1cce47b3a87fbafad8e4, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/huffyuvdsp: Use declare_func_emms only when neededAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for add_int16 since commit 4b6ffc2880e33d05ed1ab6bbc38e5a795f14b504, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/llviddsp: Be strict about MMXAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for llviddsp after commit fed07efcde72824ac1ada80d4af4e91ac4fcfc14, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/pixblockdsp: Be strict about MMXAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for pixblockdsp after commit 92b58002776edd3a3df03c90e8a3ab24b8f987de, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/audiodsp: Be strict about MMXAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for audiodsp after commit 3d716d38abdae1982e84e30becb57458244656bd, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/blockdsp: Be strict about MMXAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for blockdsp after commit ee551a21ddcbf81afe183d9489c534ee80f263a0, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm/vc1dsp: Use declare_func_emms only when neededAndreas Rheinhardt2022-10-11
| | | | | | | | | There is no MMX code for vc1_inv_trans_8x8 or vc1_unescape_buffer, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* checkasm: RISC-V 64-bit assembler test harnessRémi Denis-Courmont2022-10-10
|
* checkasm/vp8dsp: Use declare_func_emms only when neededAndreas Rheinhardt2022-10-08
| | | | | | | | | | There is no MMX code for loop filters since commit 6a551f14050674fb685920eb1b0640810cacccf9, so use declare_func instead of declare_func_emms() to also test that we are not in MMX mode after return. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fate/vcodec: Add speedhq testsAndreas Rheinhardt2022-10-06
| | | | | | The vsynth3 tests are disabled, because the encoder produces garbage. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/sgidec: Use planar pixel formatsAndreas Rheinhardt2022-10-05
| | | | | | | The data in SGI images is stored planar, so exporting it via planar pixel formats is natural. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavu/riscv: CPU flag for the Zbb extensionRémi Denis-Courmont2022-10-05
| | | | | | | | | | | | Unfortunately, it is common, and will remain so, that the Bit manipulations are not enabled at compilation time. This is an official policy for Debian ports in general (though they do not support RISC-V officially as of yet) to stick to the minimal target baseline, which does not include the B extension or even its Zbb subset. For inline helpers (CPOP, REV8), compiler builtins (CTZ, CLZ) or even plain C code (MIN, MAX, MINU, MAXU), run-time detection seems impractical. But at least it can work for the byte-swap DSP functions.
* tests/fate/truehd: Add test for shortened Ticket1726 testcaseMichael Niedermayer2022-10-04
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* fate/opus: add silk LBRR test (refs #9890)Tristan Matthews2022-10-04
| | | | | | This adds a fate test for a sample with LBRR packets. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avcodec/rl2: Remove wrong checkAndreas Rheinhardt2022-10-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This check is intended to be avoid buffer overflows, yet there are four problems with it: 1. It has an in-built off-by-one error: len == out_end - out is perfectly fine and nothing to worry about. This off-by-one error led to the pixel in the lower-right corner not being set properly for the back frame of the sample from the rl2 FATE-test. This pixel is copied to every frame which is the reason for the update to the reference file of said test. With this patch, the output of the decoder matches the output as captured from the reference decoder* (apart from the fact that said reference somehow lacks the top part of the frame (copied over from the background frame)). 2. Given that the stride of the buffer may be different from the width of the video (despite one pixel taking one byte), there is a second check lateron making the first check redundant (if one returns immediately; a simple break at the second check is not sufficient, because it only exits the inner loop). 3. The check is based around the assumption of the stride being positive (it has this in common with the other check which will be fixed in a future commit). 4. Even after fixing the off-by-one error, the check in question is still triggered by all the non-background frames in the FATE sample as well as by A1100100.RL2. In all these cases, they use len == 255 and val == 128. For videos with background frame this just means "copy from the background frame", which would be done anyway lateron.* Yet for videos without it copying it is necessary to avoid leaving uninitialized parts in the video. *: Available in https://samples.mplayerhq.hu/game-formats/voyeur-rl2/ **: Due to this, the code that copies the rest from the back frame is no longer executed for any of the samples available on the sample server. Given that these are only the files from the demo version of this game, I don't know whether this code is executed for any file in existence or not. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavu/cpu: CPU flags for the RISC-V Vector extensionRémi Denis-Courmont2022-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RVV defines a total of 12 different extensions, including: - 5 different instruction subsets: - Zve32x: 8-, 16- and 32-bit integers, - Zve32f: Zve32x plus single precision floats, - Zve64x: Zve32x plus 64-bit integers, - Zve64f: Zve32f plus Zve64x, - Zve64d: Zve64f plus double precision floats. - 6 different vector lengths: - Zvl32b (embedded only), - Zvl64b (embedded only), - Zvl128b, - Zvl256b, - Zvl512b, - Zvl1024b, - and the V extension proper: equivalent to Zve64f and Zvl128b. In total, there are 6 different possible sets of supported instructions (including the empty set), but for convenience we allocate one bit for each type sets: up-to-32-bit ints (RVV_I32), floats (RVV_F32), 64-bit ints (RVV_I64) and doubles (RVV_F64). Whence the vector size is needed, it can be retrieved by reading the unprivileged read-only vlenb CSR. This should probably be a separate helper macro if needed at a later point.