| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Signed-off-by: James Almer <[email protected]>
|
|
|
|
| |
Signed-off-by: James Almer <[email protected]>
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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]>
|
| |
|
|
|
|
|
|
| |
It is UB.
Signed-off-by: Andreas Rheinhardt <[email protected]>
|
|
|
|
| |
Signed-off-by: averne <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
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]>
|
| |
|
| |
|
|
|
|
|
| |
Signed-off-by: Maryla Ustarroz-Calonge <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
| |
Signed-off-by: James Almer <[email protected]>
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
It is more user-friendly to print which option caused the parse error.
Signed-off-by: Marton Balint <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'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.
|
| |
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
| |
Switch over to the new API to parse EXIF metadata.
Signed-off-by: Leo Izen <[email protected]>
|
|
|
|
|
|
| |
Switch over to the new API to parse EXIF metadata.
Signed-off-by: Leo Izen <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
| |
Avoids failure of xyz12 fate tests on mingw and linux x86-32
Signed-off-by: Michael Niedermayer <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Purely cosmetic.
Motivated in part because I want to depend on the assumption that P
represents the maximum alpha channel value.
|
|
|
|
| |
Preemptively adding a check for a following commit.
|
|
|
|
| |
Signed-off-by: James Almer <[email protected]>
|
|
|
|
|
|
|
| |
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]>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Signed-off-by: Jacob Lifshay <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
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]>
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Signed-off-by: Wu Jianhua <[email protected]>
|
|
|
|
| |
Signed-off-by: Wu Jianhua <[email protected]>
|