The metadata array was actually positionally indexed, which was error prone.
Use rather switch - the advantage is that also a warning is issued if
some enum member not handled and also solves the above.
- s/Captured/Transmitted/ video format (has compressed codec)
- print the input codec in brackets
- do not parse the format from istringstream and print directly
moved from RTP - allows processing for all video_rxtx now
Note that (as just like previously), on the console if 'i' is pressed, the
compressed format is print, not Captured (as indicated by the message).
4K Extreme supports 12 bit on output but not in input. Those devices
correctly detect 12-bit input but the captured buffer is scrambled.
So enforce 10-bit capture if 12 bit input is detected but not supported.
Since the commit 443fe59d (2023-04-11), the sole CS change was not
handled.
There can be 2 cases:
1. bit-depth change (without color-space), which was not handled
2. CS changed was even more harmful because no signal was detected then
The above cases should be handled. The bit-depth handle should be
ignored just if codec= is explicitly specified, in which case the depth
is taken from the argument (specified codec CS is not honored - YUV must
be captured as YUV, RGB similarly).
More dense lines (reduce spaces) - when terminal is narrow, less likely
wraps to next line. For display it even has <= 80 rows, for capture it
may be more (mode FourCC is print so there is less spare space).
When no video is arriving, the resized window doesn't have defined
content.
Moreover, if using Wayland, the window change of fullscreen is not
applied at until next refresh (new frame in this case).
Fix the benchmark tool build when src/config.h present and CUDA
conversions enabled there. The appropriate CUDA files will be required
if HAVE_LAVC_CUDA_CONV is defined.
The [file] (URL few commits below) has actually set r_frame_rate as
1/1200k, which causes the libavcodec JPEG decoder crash (received is
something like 1792i due to overflow). avg_frame_rate contains 1/25.
Prior to the commit 9891f19a (HEAD~3) avio_seek was called prior to
avformat_seek_file. This worked fine for normal containers (eg. MP4). But
after this was swapped, avio_seek after that broke that.
In order to work properly, run avio_seek() just if avformat_seek_file
fails (fixes temporarily broken .mp4 loop). Only case remaining is
JPEG/MJPEG file loop, which returns 0 for the avformat_seek_file() call.
This is handled ad hoc (I don't have any better solution now).
Rewinding the file (:loop option) doesn't work using raw HEVC like with
the [file].
avformat_seek_file retrurns EPERM, which was handled as an error, so
stopped the worker.
avio_seek seems to do the job but must be performed _after_ (unsuccessful)
avformat_seek_file.
[file]:
https://ultravideo.fi/video/ReadySetGo_3840x2160_120fps_420_8bit_HEVC_RAW.hevc
Use fixed width second precision - looks better when the stat lines are
below each other (if the order of magnitude matches, the same alignment).
Use B instead of bytes (shorter, also likely won't exceed 80 rows).
steps to reproduce the fixed behavior:
1) run `hd-rum-transcode 8M 7000 100::`
2) press Ctrl-C
There is compress_done() called once - once by the now commented out
line and then also with compress_state_deleter::operator().
This problem technically occurs since 2ca38e7c (16th Jun 2025) when
module_done() was replaced with compress_done(), which doesn't allow double
call (in cotrary to module_done(), which does). The root of the problem
is perhaps the commit 7460563 (2022-01-18).
- in short (default) help, offer the most often used options only
- print the available codecs/connections inline
- print opts "one-line" (or multiple line but with description starting
on the line); this makes it compatible with vdisp/decklink
- hide old positional syntax (shown in full-help), :help not red
The original noisiness 30 seem to be too much to be default - with default
compression JPEG or H.264 it produces high-bitrate stream. The new value
200 may better approximate real-life complexity video.