Commit Graph

4154 Commits

Author SHA1 Message Date
Martin Pulec
213748300c main.cpp: use dynamic ports for UDP loopback
Use dynammic ports if using both send and receive and sending over
loopback.
2022-06-16 14:40:31 +02:00
Martin Pulec
e9c255d0e1 V4L2 cap.: make libv4lconvert soft depenendency
libv4l2 is actually not needed at all (we do not use v4l2_ wrappers
like v4l2_open).

libv4lconvert can be make soft dependency
2022-06-14 11:35:58 +02:00
Martin Pulec
8a07498a3b added V4L2 display 2022-06-10 15:46:43 +02:00
Martin Pulec
667c6cae48 V4L2 cap.: unmap buffers 2022-06-10 15:46:43 +02:00
Martin Pulec
e8624717a7 video decoder: more descriptive msg if unable to decode 2022-06-10 15:46:43 +02:00
Martin Pulec
73e836e1f6 video_display: allow run callback to be NULL
It saves a bit of coding and it may be sometimes in future useful to
know that the display doesn't need a control.
2022-06-10 15:46:40 +02:00
Martin Pulec
86bb25b650 GL: use optionally Rec.2020 or P3 YUV->RGB coefs 2022-06-06 16:07:33 +02:00
Martin Pulec
c74ccf9cc7 color.h: excess semicolon in macro 2022-06-06 11:06:07 +02:00
Martin Pulec
7a8cc7e5cb GL: GLSL shaders - substitute col. spec vals on runtime 2022-06-06 11:06:07 +02:00
Martin Pulec
47d4db6ed9 Revert "GL: added some nasty workaround"
This reverts commit 8d48330f91.

Hopefully this is no longer need.
2022-06-06 11:06:06 +02:00
Martin Pulec
1a31999f1a utils/misc: split to misc and macros.h
Some macros are quite common so it is perhaps more wise to use a
separate header.

Also moved ref_count_init_once and ref_count_terminate last to misc.h.
2022-06-06 11:06:06 +02:00
Martin Pulec
e03c7eb207 use Kr,Kb also for forward conversions
+ changed semantics of {Y,CBCR}_SCALED to inverted value (it is also
  more intuitive meaning)
2022-06-06 11:06:06 +02:00
Martin Pulec
2481326a4a color.h: derive ->YCbCr coefs directly from Kr,Kb
This is more obvious and allows easily switching color space.
2022-06-06 11:06:06 +02:00
Martin Pulec
d7368b1a4a glsl compilation: print compiled shader if debug 2022-06-06 11:06:06 +02:00
Martin Pulec
9d57e57b6b from_lavc_vid_conv.c: fixed 8-bit YUV->RGB convs
Fixed nv12_to_rgb() and yuv8p_to_rgb() luma headroom not being
substracted.
2022-06-06 11:06:06 +02:00
Martin Pulec
89be4a70ef GL,NDI: experimental support for HDR 2022-06-06 11:06:01 +02:00
Martin Pulec
d968581b8f video_codec: best_decoder_cmp: small refactor
If bit depths are the same, continue directly to next feature.
2022-06-01 11:22:03 +02:00
Martin Pulec
975805b087 video_codec: improved comparator best
- check for exact match first
- continue comparing if bit depths are the same - this was perhaps
  incorrect previously, because it reported codec equality if bit
  depth was equal
2022-06-01 11:22:02 +02:00
Martin Pulec
df16e71b89 Cineform enc.: use UG decoder to resolve convs
Dispatch format conversions automatically instead of hard-codec list.
2022-06-01 11:22:02 +02:00
Martin Pulec
3978d67176 Win AJA stub: fixed compilation error + warn 2022-06-01 11:22:02 +02:00
Martin Pulec
d19f6a5329 display cap. f.: use decoder if needed
Use decoder if display doesn't natively support the pixel format.
2022-06-01 11:22:01 +02:00
Martin Pulec
dc02469acf GL: issue performance warning for all >8 bit 2022-06-01 11:22:01 +02:00
Martin Pulec
03c024309f GLFW: allow multiple instantiation
For now, use reference counting without any synchronization -
glfwInit/Terminate should be called only from main thread, anyway.
2022-06-01 11:22:01 +02:00
Martin Pulec
9ecb13dfb4 video_display: small update to doxy documentation 2022-06-01 11:22:01 +02:00
Martin Pulec
6e9e96b63d multiplier: no fail if mainloop display not first
Do not fail when display requiring mainloop is not first. On Linux,
although eg. GL declares the need to be run from mainloop (GLFW-induced
constraint), it runs fine also without it. Thus print only and error
and don't fail.
2022-06-01 11:22:01 +02:00
Martin Pulec
474c4dd7cc added display capture filter 2022-06-01 11:22:00 +02:00
Martin Pulec
7b1837c668 video_codec: removed slow parameter from get_decoder_from_to 2022-05-30 15:38:48 +02:00
Martin Pulec
b81f0fed32 video codec: removed needless protoypes 2022-05-30 15:38:48 +02:00
Martin Pulec
9001fe9ad1 video codec: conversion selection logic
Do not use third parameter of get_decoder_from_to by caller to get fast
decode first, Created function get_fastest_decoder_from instead, that
hides and encapsulates the selection logic.
2022-05-30 15:38:48 +02:00
Martin Pulec
b914f6ee22 video_codec: few improvements
- get_best_decoder_for: added doxy
- "                   : return also vc_memcpy
- "                   : simplified return - there exist only one
  conversion in the end (no matter if slow or not)
- fixed protoypes for both get_best_decoder_for and codec_is_in_set:
  the first should not be neither const nor pure, 2nd may be pure
- codec_is_in_set: argument can be pointer to const
2022-05-30 15:38:48 +02:00
Martin Pulec
d66f336e1d video_codec: removed some more ext link
+ 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
2022-05-30 15:38:47 +02:00
Martin Pulec
9c72e92c36 video_codec: removed some external linkage for convs 2022-05-30 15:38:44 +02:00
Martin Pulec
fb4be4945d file cap.: deduce input pixel format from source
Removed implicit UYVY capture - UYVY is leaved only as a fallback.
2022-05-26 15:26:30 +02:00
Martin Pulec
e50f4b3b57 lavd: refactor a bit
Factor out some code from get_format_callback. It was too complex and it
may be tricky to comprehend (probe vs non-probe).

Moved to from_lavc_vid_conv because it will be also used by file capture
to establish UG pixel format to capture to.
2022-05-26 15:26:30 +02:00
Martin Pulec
dc033b5361 added vc_copylineV210toY216
Can be used by NDI display that doesn't support v210 natively but does
Y216.
2022-05-26 15:26:29 +02:00
Martin Pulec
7b54034426 video_codec.c: removed function casts
Those were required previously when some conversions had incompatible
prototype (missing r,g,b shifts for pixfmts not using it - that is
almost all except RGBA).
2022-05-26 15:26:29 +02:00
Martin Pulec
817d767e5d NDI disp.: convert Y416 to PA16, not P216
PA16 is the same as P216 except it has an alpha plane in addition. Since
Y416 has also alpha, we simply keep it.
2022-05-26 15:26:27 +02:00
Martin Pulec
5d68388c16 host.cpp: use VIDEO_CODEC_FIRST inst. of magic 1 2022-05-26 10:53:12 +02:00
Martin Pulec
e861ed5fcd testcard_common: custom handle v210 custom for 8b
Returned custom handling of v210 when source is 8 bit.

Unfortunately this is a special case if the common conversion is used by
testcard2, which is able to generate 8-bit pattern only but we may want
to convert to v210, anyways.
2022-05-26 10:53:12 +02:00
Martin Pulec
cc5a309dd6 testcard2: use testcard_show_codec_help 2022-05-26 10:53:12 +02:00
Martin Pulec
d0afddb108 testcard: simplified 2022-05-26 10:53:12 +02:00
Martin Pulec
bd8d70195b video pattern generator: rem. hard-coded 16-b list
Use 16-bit source if there is a conversion.
2022-05-26 10:53:11 +02:00
Martin Pulec
ffb2f714b9 testcard: do not hardcode list of pixfmts
Created specializtion of mostly obsolete show_codec_help() for testcard
taking into account convertibility of codecs.
2022-05-26 10:53:02 +02:00
Martin Pulec
9743625c80 codec, pixfmt listing: added legend 2022-05-26 09:07:28 +02:00
Martin Pulec
b5072a936e ProRes: fixed metadata (not inter-frame) 2022-05-26 09:06:58 +02:00
Martin Pulec
6729a8a1ad audio: use const audio_frame 2022-05-25 17:09:42 +02:00
Martin Pulec
330b0918c9 ALSA play: do not override input frame
If audio was 8 bit, conversion to unsigned was performed on input frame.

+ use the side-buffer also for interleaved->non-interleaved conversion
2022-05-25 15:31:10 +02:00
Martin Pulec
5b0c8ca268 video pattern generator: add full-depth Y216/Y416 2022-05-25 14:47:18 +02:00
Martin Pulec
fe8d353e0c video_codec.c: make some functions explicitly bool 2022-05-25 14:47:18 +02:00
Martin Pulec
3a1efd97b0 RTDXT decompress: check init errors 2022-05-25 14:47:18 +02:00