\r
auto stream_sink = boost::make_shared<stream_sink_type>(stream_backend);\r
\r
-#ifdef NDEBUG\r
- stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= trace);\r
-#else\r
- stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= trace);\r
-#endif\r
+//#ifdef NDEBUG\r
+// stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);\r
+//#else\r
+// stream_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);\r
+//#endif\r
\r
stream_sink->locked_backend()->set_formatter(&my_formatter);\r
\r
\r
file_sink->locked_backend()->set_formatter(&my_formatter);\r
\r
-#ifdef NDEBUG\r
- file_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= info);\r
-#else\r
- file_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);\r
-#endif\r
+//#ifdef NDEBUG\r
+// file_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);\r
+//#else\r
+// file_sink->set_filter(boost::log::filters::attr<severity_level>(boost::log::sources::aux::severity_attribute_name<wchar_t>::get()) >= debug);\r
+//#endif\r
boost::log::wcore::get()->add_sink(file_sink);\r
\r
CASPAR_LOG(info) << L"Logging [info] or higher severity to " << folder << std::endl << std::endl;\r
try\r
{\r
GL(glDeleteTextures(1, &id_));\r
- //CASPAR_LOG(trace) << "[device_buffer] [" << --g_total_count << L"] deallocated size:" << width_*height_*stride_;\r
+ CASPAR_LOG(trace) << "[device_buffer] [" << --g_total_count << L"] deallocated size:" << width_*height_*stride_;\r
}\r
catch(...)\r
{\r
try\r
{\r
GL(glDeleteBuffers(1, &pbo_));\r
- //CASPAR_LOG(trace) << "[host_buffer] [" << --(usage_ == write_only ? g_w_total_count : g_r_total_count) << L"] deallocated size:" << size_ << " usage: " << (usage_ == write_only ? "write_only" : "read_only");\r
+ CASPAR_LOG(trace) << "[host_buffer] [" << --(usage_ == write_only ? g_w_total_count : g_r_total_count) << L"] deallocated size:" << size_ << " usage: " << (usage_ == write_only ? "write_only" : "read_only");\r
}\r
catch(...)\r
{\r
}\r
}\r
graph_->update_value("fence", delay/static_cast<double>(MAX_DELAY));\r
+ \r
+ static tbb::atomic<bool> warned;\r
+ \r
+ if(delay > 2)\r
+ {\r
+ if(!warned.fetch_and_store(true))\r
+ {\r
+ CASPAR_LOG(warning) << L"[fence] Performance warning. GPU was not ready during requested host read-back. Delayed by atleast: " << delay << L" ms. Further warnings are sent to diagnostics."\r
+ << L" You can ignore this warning if you do not notice any problems with output video. This warning is caused by insufficent support or performance of your graphics card for OpenGL based memory transfers. "\r
+ << L" Please try to update your graphics drivers or update your graphics card, see recommendations on (www.casparcg.com)."\r
+ << L" Further help is available at (www.casparcg.com/forum).";\r
+ }\r
+ }\r
}\r
\r
}}\r
\r
if(loop_)\r
{\r
- CASPAR_LOG(trace) << print() << " Looping.";\r
+ CASPAR_LOG(debug) << print() << " Looping.";\r
seek_frame(start_, AVSEEK_FLAG_BACKWARD); \r
return read_next_packet();\r
} \r
else\r
{\r
- CASPAR_LOG(trace) << print() << " Stopping.";\r
+ CASPAR_LOG(debug) << print() << " Stopping.";\r
return nullptr;\r
}\r
}\r
if(ret == AVERROR(EIO))\r
CASPAR_LOG(trace) << print() << " Received EIO, assuming EOF. " << nb_frames_;\r
if(ret == AVERROR_EOF)\r
- CASPAR_LOG(trace) << print() << " Received EOF. " << nb_frames_;\r
+ CASPAR_LOG(debug) << print() << " Received EOF. " << nb_frames_;\r
\r
CASPAR_VERIFY(ret >= 0 || ret == AVERROR_EOF || ret == AVERROR(EIO), ffmpeg_error() << source_info(narrow(print())));\r
\r
\r
if(audio == flush_audio())\r
{\r
- CASPAR_LOG(trace) << L"Truncating: " << audio_data_.size() << L" audio-samples:";\r
+ CASPAR_LOG(info) << L"Truncating: " << audio_data_.size() << L" audio-samples:";\r
audio_data_.clear();\r
++audio_loop_count_;\r
return receive_audio(); \r
\r
// Install structured exception handler.\r
caspar::win32_exception::install_handler();\r
+\r
+ caspar::log::set_log_level(L"debug");\r
\r
// Increase time precision. This will increase accuracy of function like Sleep(1) from 10 ms to 1 ms.\r
struct inc_prec\r