CComPtr<IDeckLink> decklink_;
CComQIPtr<IDeckLinkOutput> output_;
+ CComQIPtr<IDeckLinkKeyer> keyer_;
+ CComQIPtr<IDeckLinkAttributes> attributes_;
+ CComQIPtr<IDeckLinkConfiguration> configuration_;
const std::wstring model_name_;
const core::video_format_desc format_desc_;
, config_(config)
, decklink_(get_device(config.device_index))
, output_(decklink_)
+ , keyer_(decklink_)
+ , attributes_(decklink_)
+ , configuration_(decklink_)
, model_name_(get_model_name(decklink_))
, format_desc_(format_desc)
, buffered_audio_samples_(0)
if(config.embedded_audio)
enable_audio();
- set_latency(
- CComQIPtr<IDeckLinkConfiguration>(decklink_),
- configuration::low_latency,
- print());
- set_keyer(
- CComQIPtr<IDeckLinkAttributes>(decklink_),
- CComQIPtr<IDeckLinkKeyer>(decklink_),
- config.keyer,
- print());
+ set_latency(configuration_, configuration::low_latency, print());
+ set_keyer(attributes_, keyer_, config.keyer, print());
}
~blocking_decklink_consumer()
BMDTimeValue time_in_frame;
BMDTimeValue ticks_per_frame;
- output_->GetHardwareReferenceClock(
- time_scale, &hardware_time, &time_in_frame, &ticks_per_frame);
+ if (FAILED(output_->GetHardwareReferenceClock(
+ time_scale, &hardware_time, &time_in_frame, &ticks_per_frame)))
+ CASPAR_LOG(error) << print() << L" Failed to determine time in frame.";
auto reference_clock_value = hardware_time - time_in_frame;
auto frame_duration = static_cast<int>(1000 / format_desc_.fps);
\r
CComPtr<IDeckLink> decklink_;\r
CComQIPtr<IDeckLinkOutput> output_;\r
+ CComQIPtr<IDeckLinkKeyer> keyer_;\r
+ CComQIPtr<IDeckLinkAttributes> attributes_;\r
+ CComQIPtr<IDeckLinkConfiguration> configuration_;\r
\r
tbb::spin_mutex exception_mutex_;\r
std::exception_ptr exception_;\r
, config_(config)\r
, decklink_(get_device(config.device_index))\r
, output_(decklink_)\r
+ , keyer_(decklink_)\r
+ , attributes_(decklink_)\r
+ , configuration_(decklink_)\r
, model_name_(get_model_name(decklink_))\r
, format_desc_(format_desc)\r
, buffer_size_(config.buffer_depth()) // Minimum buffer-size 3.\r
if(config.embedded_audio)\r
enable_audio();\r
\r
- set_latency(\r
- CComQIPtr<IDeckLinkConfiguration>(decklink_),\r
- config.latency,\r
- print());\r
- set_keyer(\r
- CComQIPtr<IDeckLinkAttributes>(decklink_),\r
- CComQIPtr<IDeckLinkKeyer>(decklink_),\r
- config.keyer,\r
- print());\r
+ set_latency(configuration_, config.latency, print());\r
+ set_keyer(attributes_, keyer_, config.keyer, print());\r
\r
if(config.embedded_audio) \r
output_->BeginAudioPreroll(); \r