Following the commit 388e87e8 (2026-03-13), not everything was fixed,
namely initialize_video_capture() should take pointer to const
vidcap_params.
Also changed the vidcap_param functions:
- added vidcap_params_copy_all to copy whole chain
- vidcap_params_free_struct - drop struct from name and free the whole
chain with it if passed as parameter
- in addition to that, in main, just vidcap_params_free can be used
The test was still using module_done to destroy compress - this was
incorrect the commit 0557730 (2024-03-08) but didn't crash because struct
compress_state still has struct module as first member (the test is also
not run by CI).
Corrected various spelling mistakes in comments, documentation, and
variable names across the project. Changes include:
- Documentation files (CONTRIBUTING.md, README.md, etc.)
- Source code comments in C/C++ files
- Function parameter names and descriptions
No functional changes were made.
- suppress the output for unit_evaluate
- improve debug printout codec_conversion_test_testcard_uyvy_to_i420
- improve C variant of ASSERT_EQUAL_MESSAGE macro (prints num values
also in hex)
- remove VLA from codec_conversions_test.cpp (not valid in C++)
Really pass rgb_shift as last parameter to av_to_uv_convert() - nullptr
was passed but this was never intended to work, even if the RGB shift
is not relevant for the compression (dst not RGBA).
Mainly depth is included in Y_ and CBCR_LIMIT - the used denominator
255.0 matched only 8 bits.
Add (substract) epsilon 0.5 when converting the to integer to round the
value correctly.
Return just a pointer (that needs to be detroyed after that).
This is perhaps more convenient way and also it will allow eg. utlizing
GPU for the conversions.
The management of should_exit events should be also be shared with the
transcoding reflector that uses some parts that may depend upon this
functionality.
This is not purely a refactorization but slightly changes behavior,
namely the shared state cleanup is done in a destructor, not by
`uv.stop()` as it used to be.
see GH-307
With standard log level, the tests produce unnecessary warnings intended
mainly to main user, not a developer. So silence this by default to be
nicer (but allow '-V' option).
return int -1 if test failed; 0 if succeeded; 1 if not applicable (but
not failed)
As the old and new tests are mostly compatible now, do not take
different approach handling both groups.
Use pixfmt_desc instead of codec_t for internal compression
representation. This better alignes eg. YUV 10-bit 4:4:4 which has been
deduced as Y416 and eg. for DeckLink, R12L was chosen because it was
thought to be 16 bit, not 10.
This fixes:
uv -t testcard:codec=R10k -c libavcodec:encoder=libx265:yuv -d dummy:codec=decklink
being detected internally as Y416 and configured as R12L. Now it is
internally Y444_10 and output DeckLink would be configured to R10k.
Removed also params "lavd-use-10bit", "lavd-use-codec", which were
deprecated already some time and if can be replaced by
"decoder-use-codec" if needed.
changed prototype of some functions:
- to_lavc_vid_conv - accept (char *) instead of (struct video_frame)
- get_av_pixfmt_details - (enum AVPixelFormat) instead of int
+ make to_lavc_vid_conv.c partially C++ compatible (I attempted first to
include it as was it libavcodec.cpp), so leave it (just in case)
HAVE_YX macros are either defined or not to signalize feature XY
availability. The _PRESENT macro here has either value 1 or 0 but are
always defined.
+ mark parameters of apply_blacklist() as [[maybe_unused]]
+ return vc_copylineRGB[A] for RGB->RGB and RGBA->RGBA instead of
vc_memcpy - we cannot know if caller wants or doesn't want to use
rgb-shifts other than default. Both implementations call vc_memcpy
if s/he does