]> git.sesse.net Git - casparcg/blobdiff - modules/bluefish/bluefish.cpp
more refinements to code due to move to RAII
[casparcg] / modules / bluefish / bluefish.cpp
index b01e51f46f015f5e307d74bf4df999856d34bb1c..cf50a7b2407e96c608c6ab9dc285328d283dd0b4 100644 (file)
 #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()
@@ -72,14 +57,15 @@ 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(...){}
@@ -87,4 +73,27 @@ std::vector<std::wstring> device_list()
        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);
+       });
+
+}
+
+}}
+