Skip to content

Commit 37e2298

Browse files
committed
decklink: warn if IP addr given but DHCP=no not
1 parent c7bf90f commit 37e2298

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

src/blackmagic_common.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,6 +1896,28 @@ bmd_parse_fourcc_arg(
18961896
.parse(val);
18971897
}
18981898

1899+
/**
1900+
* validates bmd_option parameter combination, only issue warnings
1901+
*
1902+
* currently it just warns if IP address for DeckLink IP is given but no
1903+
* DHCP (disabled) because if not disabled, DHCP overrides the address
1904+
* (link-local IPv4 addr used if DHCP serv not present).
1905+
*/
1906+
void
1907+
bmd_options_validate(
1908+
map<BMDDeckLinkConfigurationID, bmd_option> &device_options)
1909+
{
1910+
if (device_options.find(
1911+
bmdDeckLinkConfigEthernetStaticLocalIPAddress) !=
1912+
device_options.end() &&
1913+
device_options.find(bmdDeckLinkConfigEthernetUseDHCP) ==
1914+
device_options.end()) {
1915+
MSG(WARNING,
1916+
"IP address set but DHCP not disabled via command-line "
1917+
"(but may be disabled in settings), consider adding ':DHCP=no'.\n");
1918+
}
1919+
}
1920+
18991921
ADD_TO_PARAM(R10K_FULL_OPT, "* " R10K_FULL_OPT "\n"
19001922
" Do not do conversion from/to limited range on in/out for R10k on BMD devs.\n");
19011923
ADD_TO_PARAM(BMD_NAT_SORT, "* " BMD_NAT_SORT "\n"

src/blackmagic_common.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ void bmd_unsubscribe_notify(BMDNotificationCallback *notificationCallback);
204204
bool bmd_parse_fourcc_arg(
205205
std::map<BMDDeckLinkConfigurationID, bmd_option> &device_options,
206206
const char *arg);
207+
void bmd_options_validate(
208+
std::map<BMDDeckLinkConfigurationID, bmd_option> &device_options);
207209

208210
#endif // defined BLACKMAGIC_COMMON_HPP
209211

src/video_capture/decklink.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,6 +1206,7 @@ bool device_state::init(struct vidcap_decklink_state *s, struct tile *t, BMDAudi
12061206
IDeckLinkProfileAttributes *deckLinkAttributes;
12071207
BMD_CHECK(deckLinkInput->QueryInterface(IID_IDeckLinkProfileAttributes, (void**)&deckLinkAttributes), "Could not query device attributes", INIT_ERR());
12081208

1209+
bmd_options_validate(s->device_options);
12091210
for (const auto &o : s->device_options) {
12101211
if (s->keep_device_defaults && !o.second.is_user_set()) {
12111212
continue;

src/video_display/decklink.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,6 +1535,7 @@ static void *display_decklink_init(struct module *parent, const char *fmt, unsig
15351535
return nullptr;
15361536
}
15371537

1538+
bmd_options_validate(s->device_options);
15381539
for (const auto &o : s->device_options) {
15391540
if (s->keep_device_defaults && !o.second.is_user_set()) {
15401541
continue;

0 commit comments

Comments
 (0)