- 25 Mar, 2024 9 commits
-
-
Marton Balint authored
av_ts_make_time_string() used "%.6g" format, but this format was losing precision even when the timestamp to be printed was not that large. For example for 3 hours (10800) seconds, only 1 decimal digit was printed, which made this format inaccurate when it was used in e.g. the silencedetect filter. Other detection filters printing timestamps had similar issues. Also time base parameter of the function was *AVRational instead of AVRational. Resolve these problems by introducing a new function, av_ts_make_time_string2(). We change the used format to "%.*f", use a precision of 6, except when printing values near 0, in which case we calculate the precision dynamically to aim for a similar precision in normal form as with %.6g. No longer using scientific representation can make parsing the timestamp easier for the users, we can safely do this because the theoretical maximum of INT64_MAX*INT32_MAX still fits into the string buffer in normal form. We somewhat imitate %g by trimming ending zeroes and the potential decimal point characters. In order not to trim "inf" as well, we assume that the decimal point string does not contain the letter "f". Note that depending on printf %f implementation, we might trim "infinity" to "inf". Thanks for Allan Cady for bringing up this issue. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Henrik Gramner authored
Broken in afa471d0. It just happened to work before due to x86inc.asm previously performing XMM spills in INIT_MMX mode which was more of a bug than an intentional feature.
-
Andreas Rheinhardt authored
Fixes many -Wenum-conversion warnings with Clang caused by e6c2c870. See e.g. https://fate.ffmpeg.org/log.cgi?time=20240325033545&slot=aarch64-linux-clang-10&log=compileReviewed-by:
Henrik Gramner <henrik@gramner.com> Reviewed-by:
James Almer <jamrial@gmail.com> Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
Andreas Rheinhardt authored
Forgotten in ecdc94b9. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
James Almer authored
Otherwise it would not be lossless. Signed-off-by:
James Almer <jamrial@gmail.com>
-
Andreas Rheinhardt authored
Reviewed-by:
Xiang, Haihao <haihao.xiang@intel.com> Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
Lynne authored
Co-Authored-by:
Dave Airlie <airlied@redhat.com>
-
Lynne authored
-
Mark Thompson authored
This is wanted by the Vulkan decoder.
-
- 24 Mar, 2024 14 commits
-
-
Marton Balint authored
Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
- Properly initialize all the mappings to -1 by default. - Make sure every output channel is assigned exactly once - Autodetect a native layout when only native channels are present - Always honor the user specified layout, but make sure the mapping is compatible with it The last item is a regression from 4af412be. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
MAX_CH is 64, therefore the maximum index is 63. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
In this case in_channel_idx was never set and the default 0 was used. Suprisingly no one noticed that the respective fate test output was wrong. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
FL channel ID is 0, so for an unset value we must check for ID < 0. Regression since 1f96db95. Signed-off-by:
Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Previously we always assumed that the channels are in native order, even if they were not. The new channel layout API allows us to signal the proper channel order, so let's do so. Fixes ticket #98.
-
Andreas Rheinhardt authored
C11 provides static assertions via _Static_assert and provides static_assert as a convenience define for this in assert.h. Our codebase uses the latter, as _Static_assert has actually already been deprecated in C23. Not all toolchains that declare support for C11 actually support it; e.g. MSVC 19.27 does not support _Static_assert, but somehow supports static_assert. MSVC 19.27 admits to be a "preview implementation of the ISO C11 standard", so this is not surprising (MSVC 19.28 does not come with this caveat). Furthermore some FATE boxes [1] use old GCC toolchains (with only experimental support for C11) where _Static_assert is supported, but assert.h does not provide the fallback define. They are broken since the first usage of static_assert. This commit therefore checks whether static_assert and _Static_assert work with assert.h included; if not, configure errors out. This intentionally drops support for MSVC 19.27. Users like the old FATE boxes above can still add -Dstatic_assert=_Static_assert to cflags as a workaround if desired. [1]: https://fate.ffmpeg.org/report.cgi?time=20240321123620&slot=sh4-debian-qemu-gcc-4.7Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
Andreas Rheinhardt authored
Otherwise these statements might be torn apart by av_logs from other threads. Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
Andreas Rheinhardt authored
It has been moved after "st = s->streams[pkt->stream_index]" in b140b833. Deduplicate ff_read_packet() and ff_buffer_packet() while fixing this. This also fixes shadowing in ff_read_packet(). Signed-off-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
Leo Izen authored
The continue statement will break out of the do/while loop, not the outer loop as intended. This is one (compound) statement anyway, so we can remove the do/while entirely. Signed-off-by:
Leo Izen <leo.izen@gmail.com>
-
Leo Izen authored
These variables are never read from, so they trigger -Wunused-variables Signed-off-by:
Leo Izen <leo.izen@gmail.com>
-
Henrik Gramner authored
Make things up-to-date with upstream. https://code.videolan.org/videolan/x86inc.asm
-
Henrik Gramner authored
x86inc.asm adds defines for <argument_name>{b,w,d,q} which clashes with the nasm d{b,w,d,q} pseudo-instructions for writing initialized data.
-
- 23 Mar, 2024 17 commits
-
-
Niklas Haas authored
Following the usual logic for H.274 film grain.
-
Niklas Haas authored
I restricted this SEI to HEVC for now, until I see a H.264 sample.
-
Niklas Haas authored
Based on the AOMedia Film Grain Synthesis 1 (AFGS1) spec: https://aomediacodec.github.io/afgs1-spec/ The parsing has been changed substantially relative to the AV1 film grain OBU. In particular: 1. There is the possibility of maintaining multiple independent film grain parameter sets, and decoders/players are recommended to pick the one most appropriate for the intended display resolution. This could also be used to e.g. switch between different grain profiles without having to re-signal the appropriate coefficients. 2. Supporting this, it's possible to *predict* the grain coefficients from previously signalled parameter sets, transmitting only the residual. 3. When not predicting, the parameter sets are now stored as a series of increments, rather than being directly transmitted. 4. There are several new AFGS1-exclusive fields. I placed this parser in its own file, rather than h2645_sei.c, since nothing in the generic AFGS1 film grain payload is specific to T.35, and to compartmentalize the code base.
-
Niklas Haas authored
Implementation copied wholesale from dav1d, sans SIMD, under permissive license. This implementation was extensively verified to be bit-exact, so it serves as a much better starting point than trying to re-engineer this from scratch for no reason. (I also authored the original implementation in dav1d, so any "clean room" implementation would end up looking much the same, anyway) The notable changes I had to make while adapting this from the dav1d code-base to the FFmpeg codebase include: - reordering variable declarations to avoid triggering warnings - replacing several inline helpers by avutil equivalents - changing code that accesses frame metadata - replacing raw plane copying logic by av_image_copy_plane Apart from this, the implementation is basically unmodified.
-
Niklas Haas authored
Common utility function that can be used by all codecs to select the right (any valid) film grain parameter set. In particular, this is useful for AFGS1, which has support for multiple parameters. However, it also performs parameter validation for H274.
-
Niklas Haas authored
To allow for AFGS1 usage, which can expose multiple parameter sets for a single frame.
-
Niklas Haas authored
Not directly signalled by AV1, but we should still set this accordingly so that users will know what the original intended video characteristics and chroma resolution were.
-
Niklas Haas authored
Not directly signalled by AV1, but we should still set this accordingly so that users will know what the original intended video characteristics and chroma resolution were.
-
Niklas Haas authored
H.274 specifies that film grain parameters are signalled as intended for 4:4:4 frames, so we always signal this, regardless of the frame's actual subsampling.
-
Niklas Haas authored
Follow the establish convention of printing the bit depth metadata per-component.
-
Niklas Haas authored
-
Niklas Haas authored
-
Niklas Haas authored
This is needed for AV1 film grain as well, when using AFGS1 streams. Also add extra width/height and subsampling information, which AFGS1 cares about, as part of the same API bump. (And in principle, H274 should also expose this information, since it is needed downstream to correctly adjust the chroma grain frequency to the subsampling ratio) Deprecate the equivalent H274-exclusive fields. To avoid breaking ABI, add the new fields after the union; but with enough of a paper trail to hopefully re-order them on the next bump.
-
Jun Zhao authored
small cleanup for style, redundant semicolons, goto labels, in FFmpeg, we put goto labels at brace level. Signed-off-by:
Jun Zhao <barryjzhao@tencent.com>
-
Michael Niedermayer authored
Fixes: out of array access Fixes: 67021/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-4883576579489792 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpegSigned-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Anton Khirnov authored
Fixes fate-ffmpeg-loopback-decoding with THREADS=random*
-
Leo Izen authored
avpkt->pos needs to be set for generic indexing or features such as the stream_loop option will not work. Co-authored-by:
Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Signed-off-by:
Leo Izen <leo.izen@gmail.com>
-