Commit Graph

87 Commits

Author SHA1 Message Date
Martin Pulec
aeb1be31a1 bmd_option: decrease log lvl on E_NOTIMPL
Decrease log level for implicit options returning E_NOTIMPL to info -
perhaps not important at all (like passthrough on old devices) and we
do not want to decrease user attention to warning.s
2023-08-02 15:41:09 +02:00
Martin Pulec
2073a173b8 bmd_option: print val in both dec and hex
Usually decadic is better representation but we don't know in general,
so print both.
2023-06-26 12:06:34 +02:00
Martin Pulec
9585480c56 vidcap testcard: remove no nonger used midi_buf
Testcard doesn't longer play a MIDI, this has been moved to audio
capture sdl_mixer.
2023-05-19 08:37:59 +02:00
Martin Pulec
439eab1256 bmd_option: renamed option_write -> device_write
"option" is redundant here, because it is already in type name and using
"device" instead indicates more clearly that it gets written to the
device.
2023-05-17 11:42:05 +02:00
Martin Pulec
72df5c0c79 bmd_option::option_write: mod specific log prefix
When writing option log message, use module specific prefix, eg.
"[DeckLink display] " instead of just "[DeckLink] ".
2023-05-17 11:42:02 +02:00
Martin Pulec
34853fc198 fixed CID 407684 2023-05-10 09:53:02 +02:00
Martin Pulec
aefae0b5b8 bmd_option::parse: allow explicitly typing options
Allowing values like '1234' (FCC) or "strn" (string) that would be
otherwise parsed as int and FourCC in second case.
2023-05-10 09:24:19 +02:00
Martin Pulec
0f37cabf1f DeckLink: allow setting string properties
eg.: bmdDeckLinkConfigDeviceInformationLabel ('dila')
2023-05-10 08:52:03 +02:00
Martin Pulec
834ff43d5e bmd_option: allow setting of floating point props
this may be useful for things like bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 ('aos1')
2023-05-10 08:52:03 +02:00
Martin Pulec
97e35083f2 bmd_option::parse: allow negative integers
bmdDeckLinkConfigBypass ('byps') allows setting -1
2023-05-10 08:52:02 +02:00
Martin Pulec
455c8542cb DeckLink cap.: allow arbitrary option
Allow passing of arbitrary option to DeckLink configuration, eg.:

    uv -t decklink:cptm=pdir

via FourCC option name and value (may be also a flag or an int). The
option is passed directly to BMD API.
2023-05-10 08:52:02 +02:00
Martin Pulec
99374917f2 blackmagic_common: print failed option value 2023-05-10 08:52:02 +02:00
Martin Pulec
183d175d73 fixed some of new Coverity issues 2023-05-10 08:52:02 +02:00
Martin Pulec
65eadce92d restored ostream flags should be set with flags()
Previously, setf() was used but flags() is better because it restores
exactly the previous state.
2023-05-10 08:52:01 +02:00
Martin Pulec
9356dec8ab bmd: small improvements 2023-05-05 09:08:00 +02:00
Martin Pulec
d7485f2eb1 bmd_option: mark 2 fncs as const
member functions is_default() and keep() are marked as const
2023-05-05 08:50:15 +02:00
Martin Pulec
a511c9f24b DeckLink disp.: turn other features into bmd_option 2023-05-05 08:50:15 +02:00
Martin Pulec
9788dcfc98 DeckLink disp.: use bmd_options also for SDI level A/B
Removed unneeded check if device supports 3G-SDI level A option - if it
doesn't, the setting would simply not succeed.
2023-05-05 08:50:15 +02:00
Martin Pulec
4b30869ec5 DeckLink cap.: print human readable connection with bmd_opt 2023-05-05 08:50:15 +02:00
Martin Pulec
215ee42481 DeckLink: use bmd_option for profile_req
+ [disp] the condition `s->profile_req == bmdProfileOneSubDeviceHalfDuplex`
  was probably inverted - there should perhaps be unequality, because if
  not set otherwise, that option is set for quad-link by default
2023-05-05 08:50:15 +02:00
Martin Pulec
6c404e8e50 bmd_option::parse_int: parse keep opt 2023-05-05 08:50:14 +02:00
Martin Pulec
7aaf528c0e DeckLink disp.: set link via options
+ when setting the profile automatically, use detected/actual link
  configuration to check quad-link, not use the value set by us (may be
  set in BMD settings)
+ sort conf_name_map alphabetically
2023-05-05 08:50:14 +02:00
Martin Pulec
91374fffee DeckLink disp.: handle more opts generically
+ do not set the opts if keep option was selected
2023-05-05 08:50:14 +02:00
Martin Pulec
ba9b71bb64 DeckLink: get rid of BMD_CONFIG_SET macro
using bmd_option instead
2023-05-04 14:39:21 +02:00
Martin Pulec
824efaf6ad DeckLink disp.: use bmd_options 2023-05-04 14:39:21 +02:00
Martin Pulec
5cf2e7d87e DeckLink cap.: removed use the bmd_opt also for PsF setting 2023-05-04 14:39:21 +02:00
Martin Pulec
7409e352e0 DeckLink cap.: use bmd_option to set input connect 2023-05-04 14:39:14 +02:00
Martin Pulec
e47568128c DeckLink: created bmd_option type
Created bmd_option type that is basically a variant (tagged union) to
encapsulate possible configuration values and also special values for
default and keep. Having this previously in int is cumbersome because
the special values as were defined (0, -1) collide with the default
semantics of bool.
2023-04-20 13:19:57 +02:00
Martin Pulec
cf825ecea2 DeckLink cap/disp: added full-duplex parameter
It actually sets `profile=1dfd`. This is a complement to already
existing `half-duplex` option (that has on the other hand more more
complex semantic - it chooses the profile tailored for the device, since
the right one differs for eg. 8K Pro /4dhd/ and Duo/Quad 2 /2dhd/).
2023-04-20 13:19:51 +02:00
Martin Pulec
d2aaef7942 DeckLink cap: pretty print mode
align:
- mode indices
- FPS
- flags (color-space first, because it is always present; 3D after)
2023-04-14 15:30:22 +02:00
Martin Pulec
a1e7c417ec DeckLink profiles: be more verbose about profiles
When profiles switching is required, it may be the important part so it
may be useful to print info which profile is active or being activated
even if there is no fail.
2023-04-14 15:07:06 +02:00
Martin Pulec
598ae7c4bf DeckLink: no warn if setting 3D profile not avail
BMD Extreme 4K doesn't support profiles so do not warn (only in verbose)
if setting failed, provided that the profile was not selected
explicitly and query was E_NOINTERFACE.
2023-04-14 12:50:41 +02:00
Martin Pulec
a8045839dc DeckLink: set device to 1-dev-full-dup for 3D
Set 1-subdevice-full-duplex for 3D mode as it seems to be the only
supported (1 device half-duplex would work as well but it doesn't seem
to support 2 streams while full-duplex supports at least 2 streams in
the opposite direction, at least for 8K Pro).
2023-04-13 14:04:32 +02:00
Martin Pulec
297593889e DeckLink: improved profile help
print also descriptions and affected devices
2023-04-13 14:04:31 +02:00
Martin Pulec
9eeff27085 DeckLink cap,disp: print display mode flags
print all known display mode flags, not only 3D support
2023-04-11 11:52:17 +02:00
Martin Pulec
4fe552f225 use common com_[un]initialize 2023-02-24 16:06:42 +01:00
Martin Pulec
8df499ffac merged utils/hresult to utils/windows
These 2 files are relatively small and coherent.

+ fixed hresult_to_str not returning anything on RPC_E_CHANGED_MODE
2023-02-24 15:00:00 +01:00
Martin Pulec
39af5e01df moved CoInitialize stuff outside bmd_common
this code may be useful in general
2023-02-24 14:48:07 +01:00
Martin Pulec
96778ce782 decklink_initialize: print textual represenation of error 2023-02-24 13:23:25 +01:00
Martin Pulec
50655d4dbc blackmagic_api_version_check: use decklink_[un]initialize 2023-02-24 12:02:32 +01:00
Martin Pulec
c1d6bb84b0 DeckLink: continue if CoInit fails on diff. mode 2023-02-24 12:02:32 +01:00
Martin Pulec
73176ea568 bmd_hresult_to_string: common COM errors handling
Factor out common errors to hresult.h header. If not running on Windows,
use that subset. Vice versa use hresult_to_str directly because it can
catch more Windows-specific errors.
2023-02-24 12:02:31 +01:00
Martin Pulec
48ddd23ae1 blackmagic_common.cpp profiles: fixed notification
CID 401453
2022-10-21 08:18:39 +02:00
Martin Pulec
2e5dc112df blackmagic_common.cpp: missing return 2022-09-26 11:51:18 +02:00
Martin Pulec
19e8d968bf DeckLink cap./disp.: check profile for 3D
Verify if active profile is compatible with 3D mode - if not, suggest profile
change.
2022-09-22 08:19:07 +02:00
Martin Pulec
a4da8b6b5c DeckLink: wait for profile activation
profiles are not applied immediately so wait for completition
2022-09-21 16:30:10 +02:00
Martin Pulec
d9207b97a3 DeckLink cap.: Co[Un]Initialize call changes
Called in constructor/desctructor.

+ create_decklink_iterator: call CoUninitialize if
  CoCreateInstance(CLSID_CDeckLinkIterator...) fail
2022-09-21 15:23:17 +02:00
Martin Pulec
1973687c7d Revert "create_decklink_iterator: removed coinit parameter"
This reverts commit b71e55e3cb544ea8eec77d3f721cd9c82b2fcd65.
2022-09-21 15:23:17 +02:00
Martin Pulec
3960aef0c3 create_decklink_iterator: removed coinit parameter
CoInitializeEx can be called multiple times returning S_FALSE so there
is no point to differentiate whether or not to call.

+ call CoUninitialize if CoCreateInstance(CLSID_CDeckLinkIterator...) fails
2022-09-21 15:23:16 +02:00
Martin Pulec
5aca271708 DeckLink disp.: audio connection name to separate func 2022-08-17 17:27:43 +02:00