device_index = lexical_cast_or_default<int>(params[1], 1);\r
\r
bool embedded_audio = std::find(params.begin(), params.end(), L"EMBEDDED_AUDIO") != params.end();\r
- bool key_only = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end();\r
+ bool key_only = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end();\r
\r
return make_safe<bluefish_consumer_proxy>(device_index, embedded_audio, key_only);\r
}\r
\r
safe_ptr<core::frame_consumer> create_bluefish_consumer(const boost::property_tree::ptree& ptree) \r
{ \r
- auto device_index = ptree.get("device", 0);\r
+ auto device_index = ptree.get("device", 0);\r
auto embedded_audio = ptree.get("embedded-audio", false);\r
- bool key_only = (ptree.get("output", "fill_and_key") == "key_only");\r
+ bool key_only = ptree.get("key-only", false);\r
\r
return make_safe<bluefish_consumer_proxy>(device_index, embedded_audio, key_only);\r
}\r
\r
namespace caspar { \r
\r
-enum key\r
-{\r
- external_key,\r
- internal_key,\r
- default_key\r
-};\r
-\r
-enum latency\r
-{\r
- low_latency,\r
- normal_latency,\r
- default_latency\r
-};\r
-\r
-enum output_pixels\r
-{\r
- fill_and_key,\r
- key_only\r
-};\r
-\r
struct configuration\r
{\r
size_t device_index;\r
bool embedded_audio;\r
- key keyer;\r
- latency latency;\r
- output_pixels output;\r
+ bool external_key;\r
+ bool low_latency;\r
+ bool key_only;\r
\r
configuration()\r
: device_index(1)\r
, embedded_audio(false)\r
- , keyer(default_key)\r
- , latency(default_latency)\r
- , output(fill_and_key){}\r
+ , external_key(false)\r
+ , low_latency(false)\r
+ , key_only(false){}\r
};\r
\r
class decklink_frame_adapter : public IDeckLinkVideoFrame\r
if(config.embedded_audio)\r
enable_audio();\r
\r
- set_latency(config.latency); \r
- set_keyer(config.keyer);\r
+ set_latency(config.low_latency); \r
+ set_keyer(config.external_key);\r
\r
for(size_t n = 0; n < buffer_size_; ++n)\r
schedule_next_video(core::read_frame::empty());\r
}\r
}\r
\r
- void set_latency(latency latency)\r
+ void set_latency(bool low_latency)\r
{ \r
- if(latency == normal_latency)\r
+ if(!low_latency)\r
{\r
configuration_->SetFlag(bmdDeckLinkConfigLowLatencyVideoOutput, false);\r
CASPAR_LOG(info) << print() << L" Enabled normal-latency mode";\r
}\r
- else if(latency == low_latency)\r
+ else\r
{ \r
configuration_->SetFlag(bmdDeckLinkConfigLowLatencyVideoOutput, true);\r
CASPAR_LOG(info) << print() << L" Enabled low-latency mode";\r
}\r
- else\r
- CASPAR_LOG(info) << print() << L" Uses driver latency settings."; \r
}\r
\r
- void set_keyer(key keyer)\r
+ void set_keyer(bool external_key)\r
{\r
- if(keyer == internal_key) \r
+ if(!external_key) \r
{\r
if(FAILED(keyer_->Enable(FALSE))) \r
CASPAR_LOG(error) << print() << L" Failed to enable internal keyer."; \r
else\r
CASPAR_LOG(info) << print() << L" Enabled internal keyer."; \r
}\r
- else if(keyer == external_key)\r
+ else\r
{\r
if(FAILED(keyer_->Enable(TRUE))) \r
CASPAR_LOG(error) << print() << L" Failed to enable external keyer."; \r
else\r
CASPAR_LOG(info) << print() << L" Enabled external keyer."; \r
}\r
- else\r
- CASPAR_LOG(info) << print() << L" Uses driver keyer settings."; \r
}\r
\r
void enable_audio()\r
\r
virtual bool key_only() const\r
{\r
- return (config_.output == caspar::key_only);\r
+ return config_.key_only;\r
}\r
}; \r
\r
\r
if(params.size() > 1)\r
config.device_index = lexical_cast_or_default<int>(params[1], config.device_index);\r
- \r
- if(std::find(params.begin(), params.end(), L"INTERNAL_KEY") != params.end())\r
- config.keyer = internal_key;\r
- else if(std::find(params.begin(), params.end(), L"EXTERNAL_KEY") != params.end())\r
- config.keyer = external_key;\r
\r
- if(std::find(params.begin(), params.end(), L"LOW_LATENCY") != params.end())\r
- config.latency = low_latency;\r
- else if(std::find(params.begin(), params.end(), L"NORMAL_LATENCY") != params.end())\r
- config.latency = normal_latency;\r
- \r
- config.embedded_audio = std::find(params.begin(), params.end(), L"EMBEDDED_AUDIO") != params.end();\r
- config.output = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end() ? key_only : fill_and_key;\r
+ config.external_key = std::find(params.begin(), params.end(), L"EXTERNAL_KEY") != params.end();\r
+ config.low_latency = std::find(params.begin(), params.end(), L"LOW_LATENCY") != params.end();\r
+ config.embedded_audio = std::find(params.begin(), params.end(), L"EMBEDDED_AUDIO") != params.end();\r
+ config.key_only = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end();\r
\r
return make_safe<decklink_consumer_proxy>(config);\r
}\r
{\r
configuration config;\r
\r
- auto key_str = ptree.get("key", "default");\r
- if(key_str == "internal")\r
- config.keyer = internal_key;\r
- else if(key_str == "external")\r
- config.keyer = external_key;\r
-\r
- auto latency_str = ptree.get("latency", "default");\r
- if(latency_str == "normal")\r
- config.latency = normal_latency;\r
- else if(latency_str == "low")\r
- config.latency = low_latency;\r
-\r
- auto output_str = ptree.get("output", "fill_and_key");\r
- if(output_str == "key_only")\r
- config.output = key_only;\r
-\r
- config.device_index = ptree.get("device", 0);\r
- config.embedded_audio = ptree.get("embedded-audio", false);\r
+ config.external_key = ptree.get("external-key", false);\r
+ config.low_latency = ptree.get("low-latency", false);\r
+ config.key_only = ptree.get("key-only", false);\r
+ config.device_index = ptree.get("device", 0);\r
+ config.embedded_audio = ptree.get("embedded-audio", false);\r
\r
return make_safe<decklink_consumer_proxy>(config);\r
}\r