\r
namespace caspar { namespace env {\r
\r
+using namespace boost::filesystem2;\r
+\r
std::wstring media;\r
std::wstring log;\r
std::wstring ftemplate;\r
auto paths = pt.get_child("configuration.paths");\r
media = widen(paths.get("media-path", initialPath + "\\media\\"));\r
log = widen(paths.get("log-path", initialPath + "\\log\\"));\r
- ftemplate = widen(paths.get("template-path", initialPath + "\\template\\"));\r
+ ftemplate = complete(wpath(widen(paths.get("template-path", initialPath + "\\template\\")))).string();\r
+\r
ftemplate_host = widen(paths.get("template-host", "cg.fth"));\r
+\r
data = widen(paths.get("data-path", initialPath + "\\data\\"));\r
}\r
\r
core::image_transform transform;\r
};\r
\r
- video_channel_context& channel_;\r
+ video_channel_context& channel_;\r
\r
std::stack<core::image_transform> transform_stack_;\r
std::queue<std::queue<render_item>> render_queue_;\r
\r
- image_kernel kernel_;\r
+ image_kernel kernel_;\r
\r
- safe_ptr<host_buffer> read_buffer_;\r
- safe_ptr<device_buffer> draw_buffer_;\r
- safe_ptr<device_buffer> write_buffer_;\r
+ safe_ptr<host_buffer> read_buffer_;\r
+ safe_ptr<device_buffer> draw_buffer_;\r
+ safe_ptr<device_buffer> write_buffer_;\r
\r
- safe_ptr<device_buffer> local_key_buffer_;\r
- safe_ptr<device_buffer> layer_key_buffer_;\r
+ safe_ptr<device_buffer> local_key_buffer_;\r
+ safe_ptr<device_buffer> layer_key_buffer_;\r
\r
- bool local_key_;\r
- bool layer_key_;\r
+ bool local_key_;\r
+ bool layer_key_;\r
\r
public:\r
implementation(video_channel_context& video_channel) \r
channel_.ogl().invoke([=]\r
{\r
if(!GLEE_VERSION_3_0)\r
- BOOST_THROW_EXCEPTION(not_supported() << msg_info("Missing OpenGL 3.0 support."));\r
+ CASPAR_LOG(warning) << "Missing OpenGL 3.0 support.";//BOOST_THROW_EXCEPTION(not_supported() << msg_info("Missing OpenGL 3.0 support."));\r
});\r
}\r
\r
executor executor_;\r
public:\r
bluefish_consumer(const core::video_format_desc& format_desc, unsigned int device_index, bool embedded_audio) \r
- : blue_(create_blue())\r
+ : blue_(create_blue(device_index))\r
, device_index_(device_index)\r
, format_desc_(format_desc) \r
, model_name_(get_card_desc(*blue_))\r
, embedded_audio_(embedded_audio)\r
, executor_(print())\r
{\r
- if(BLUE_FAIL(blue_->device_attach(device_index, FALSE))) \r
- BOOST_THROW_EXCEPTION(caspar_exception() << msg_info("Failed to attach device."));\r
-\r
executor_.set_capacity(CONSUMER_BUFFER_DEPTH);\r
\r
graph_ = diagnostics::create_graph(narrow(print()));\r
return safe_ptr<CBlueVelvet4>(BlueVelvetFactory4(), BlueVelvetDestroy);\r
}\r
\r
+safe_ptr<CBlueVelvet4> create_blue(size_t device_index)\r
+{\r
+ auto blue = create_blue();\r
+ \r
+ if(BLUE_FAIL(blue->device_attach(device_index, FALSE))) \r
+ BOOST_THROW_EXCEPTION(caspar_exception() << msg_info("Failed to attach device."));\r
+\r
+ return blue;\r
+}\r
+\r
}
\ No newline at end of file
void blue_initialize();\r
\r
safe_ptr<CBlueVelvet4> create_blue();\r
+safe_ptr<CBlueVelvet4> create_blue(size_t device_index);\r
bool is_epoch_card(CBlueVelvet4& blue);\r
std::wstring get_card_desc(CBlueVelvet4& blue);\r
EVideoMode get_video_mode(CBlueVelvet4& blue, const core::video_format_desc& format_desc);\r
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Thu Jun 09 13:48:27 2011\r
+/* at Fri Jun 10 12:06:51 2011\r
*/\r
/* Compiler settings for interop\DeckLinkAPI.idl:\r
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Thu Jun 09 13:48:27 2011\r
+/* at Fri Jun 10 12:06:51 2011\r
*/\r
/* Compiler settings for interop\DeckLinkAPI.idl:\r
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
{\r
seek_frame(start_, AVSEEK_FLAG_BACKWARD);\r
graph_->add_tag("seek"); \r
- CASPAR_LOG(info) << print() << " Received EOF. Looping."; \r
+ //CASPAR_LOG(info) << print() << " Received EOF. Looping."; \r
} \r
else\r
{\r
stop();\r
- CASPAR_LOG(info) << print() << " Received EOF. Stopping.";\r
+ //CASPAR_LOG(info) << print() << " Received EOF. Stopping.";\r
}\r
}\r
else if(errn < 0)\r
\r
bool is_eof(int errn)\r
{\r
- if(errn == AVERROR(EIO))\r
- CASPAR_LOG(warning) << print() << " Received EIO, assuming EOF";\r
+ //if(errn == AVERROR(EIO))\r
+ // CASPAR_LOG(warning) << print() << " Received EIO, assuming EOF";\r
\r
return errn == AVERROR_EOF || errn == AVERROR(EIO); // av_read_frame doesn't always correctly return AVERROR_EOF;\r
}\r
: flash_producer_(frame_producer)\r
{}\r
\r
- void add(int layer, const std::wstring& filename, bool play_on_load, const std::wstring& label, const std::wstring& data)\r
+ void add(int layer, std::wstring filename, bool play_on_load, const std::wstring& label, const std::wstring& data)\r
{\r
+ if(filename.size() > 0 && filename[0] == L'/')\r
+ filename = filename.substr(1, filename.size()-1);\r
+\r
CASPAR_LOG(info) << flash_producer_->print() << " Invoking add-command";\r
flash_producer_->param((boost::wformat(L"<invoke name=\"Add\" returntype=\"xml\"><arguments><number>%1%</number><string>%2%</string>%3%<string>%4%</string><string><![CDATA[%5%]]></string></arguments></invoke>") % layer % filename % (play_on_load?TEXT("<true/>"):TEXT("<false/>")) % label % data).str());\r
}\r
</diagnostics>\r
<channels>\r
<channel>\r
- <video-mode>1080i5000</video-mode>\r
+ <video-mode>PAL</video-mode>\r
<consumers>\r
- <decklink>\r
- <device>1</device> \r
- <embedded-audio>true</embedded-audio> \r
- <low-latency>true</low-latency> \r
- <external-key>true</external-key> \r
- <key-only>false</key-only> \r
- </decklink>\r
+ <bluefish>\r
+ <device>1</device> \r
+ </bluefish>\r
</consumers>\r
</channel>\r
</channels>\r