Seems no longer being needed and it is unclear why it was actually needed.
Run download_build_aja() in subshell (not added when the fn split to
download/install in 2024 with the commit 0ed7d449) to avoid leaking
exactly such variables that can influence further workflow.
We are using `set -x` so the output is a bit disturbing when using just -h.
But we can move it past the help (the beginning should not cause problems,
ideally).
Allow installing individual items in case that someone wants to use it
outsice of CI interactively. Also add help for this case.
This is already done so eg. in .github/scripts/macOS/install_others.sh.
The change to unsigned is rather new and it may be safer actually to
use int (to_planar already uses that) - eg. in the constructiosn where
iterating over multiple lines and then computing the rest, if there is
less than so that we do not wraparound to `UINT_MAX - something`.
- uyvy_to_nv12: move width before the loop (clang is complaining)
- r12l_to_gbrpXXle: drop ALWAYS_INLINE+OPTIMIZED_FOR - for GCC/Intel we
get the same performance but for Clang/M1 it is something like 15 % faster
(eg. keeping OPTIMIZED_FOR without ALWAYS_INLINE worsens the performance
on other hand)
except r12l_to_gbrpXXle and derived, we don't have now a benchmark for
The initial use was incorrect - it assumed that on big endian, the bytes
b0,b1,b2,b3 need to be swapped so value b[0] would be what was b[3]
on little-endian which is not true (writting bytes)
This mistake has then spread across UltraGrid.
Dispatch the decompressed frames directy in _pop callback - this is more
convenient, the separate thread doesn't make much sense.
To video_compress API, added a pseudo frame vcomp_pop_retry (maybe not
nicest solution so far) that allows the _pop callbacks return the an
"error" frame that is not processes without the need to handle this
internally (shared_ptr<video_frame{} cannot be returned because it is
the poison pill).
eg. `uv -c jpegxs` (only)
broken since 942a76725 (2026-02-24)
The `stop` var was actually needed this so revert this occurence but
improve to push to the encoder just if configured.
Do not bypass the queue by passing empty frame (poison pill) directly to
output queue but leave it passing normally through the pipeline ending
what is needed.
The output queue now can be 1 frame long.
This prevents accumulating frames when not being able to send the frame
at given pace (eg. `-l 10M` and bitrate=20M - this is just an approxmation,
clearly user won't set this but can occur eg. when coonected to 100M
link while the default bittrate is higher for FHD).
if unknown parameter is passed, use more accurate err emssage
- also use ERROR in gpujpeg
- while IS_KEY_PREFIX is used, it can be also missing value to a known
parameter (eg. jpegxs:bitrate) so mention this as well
fix 697d4bdb (2026-02-23), CID 900814
If parameter without value is passed, atoi(1) is called causing
crash. Currently, all of the parameters (except "help", which is already
handled) should have a value. But user may enter incorrectly a parameter
without value, eg. "blabla" causing the crash.
to be able to compile normally without setting std in CFLAGS
+ remove it from macos-14 CI
clang 15 as in macOS 14 doesn't support c23 [[attributes]] such as
[[gnu::always_inline]]
that seem to make a difference as for tool/benchmark_ff_convs (tested
again on x64 with gcc and arm64 with clang)
+ allow setting CFLAGS/CXXFLAGS from cmdline
most of the optimizations is applied just for clang (OPTIMIZED_FOR)
It is not necessary to apply the flags to all - some conversions seem
to be faster without, eg. gbrap->RGB(A).
-Ofast is basically -O3 + -ffast-math
But from my measurements (x64 gcc and arm64 clang), it doesn't make
any difference as tested with `tools/convert benchmark`. Actually,
currently almost no conversion uses floating point math except of
vc_copylineUYVYtoRGBA, for which the -ffast-math didn't have any
performance impact.