#include <common/utf.h>
#include <core/consumer/frame_consumer.h>
+#include <core/system_info_provider.h>
#include <boost/lexical_cast.hpp>
+#include <boost/property_tree/ptree.hpp>
namespace caspar { namespace bluefish {
-void init()
-{
- try
- {
- blue_initialize();
- core::register_consumer_factory([](const std::vector<std::wstring>& params)
- {
- return create_consumer(params);
- });
- }
- catch(...){}
-}
-
std::wstring version()
{
try
{
- blue_initialize();
+ bvc_wrapper blue;
+ return u16(blue.get_version());
}
catch(...)
{
return L"Not found";
}
-
- if(!BlueVelvetVersion)
- return L"Unknown";
-
- return u16(BlueVelvetVersion());
}
std::vector<std::wstring> device_list()
try
{
- blue_initialize();
-
- auto blue = create_blue();
+ bvc_wrapper blue;
+ int numCards = 0;
+ blue.enumerate(numCards);
- for(int n = 1; BLUE_PASS(blue->device_attach(n, FALSE)); ++n)
+ for(int n = 1; n < (numCards+1); n++)
{
- devices.push_back(std::wstring(get_card_desc(*blue)) + L" [" + boost::lexical_cast<std::wstring>(n) + L"]");
- blue->device_detach();
+ blue.attach(n);
+ devices.push_back(std::wstring(get_card_desc(blue, n)) + L" [" + boost::lexical_cast<std::wstring>(n) + L"]");
+ blue.detach();
}
}
catch(...){}
return devices;
}
-}}
\ No newline at end of file
+void init(core::module_dependencies dependencies)
+{
+ try
+ {
+ bvc_wrapper blue;
+ int num_cards = 0;
+ blue.enumerate(num_cards);
+ }
+ catch(...){}
+
+ dependencies.consumer_registry->register_consumer_factory(L"Bluefish Consumer", create_consumer, describe_consumer);
+ dependencies.consumer_registry->register_preconfigured_consumer_factory(L"bluefish", create_preconfigured_consumer);
+ dependencies.system_info_provider_repo->register_system_info_provider([](boost::property_tree::wptree& info)
+ {
+ info.add(L"system.bluefish.version", version());
+
+ for (auto device : device_list())
+ info.add(L"system.bluefish.device", device);
+ });
+
+}
+
+}}
+