\r
namespace caspar {\r
\r
-class timer\r
-{\r
-public:\r
- timer() : time_(timeGetTime()){}\r
-\r
- double elapsed()\r
- {\r
- return static_cast<double>(timeGetTime() - time_)/1000.0;\r
- }\r
- \r
- void reset()\r
- {\r
- time_ = timeGetTime();\r
- }\r
- \r
-private: \r
- DWORD time_;\r
-};\r
-\r
class high_prec_timer\r
{\r
public:\r
\r
#include <boost/fusion/container/map.hpp>\r
#include <boost/fusion/include/at_key.hpp>\r
+#include <boost/timer.hpp>\r
\r
#include <unordered_map>\r
\r
const core::video_format_desc format_desc_;\r
\r
safe_ptr<diagnostics::graph> diag_;\r
- timer perf_timer_;\r
- timer wait_perf_timer_;\r
+ boost::timer perf_timer_;\r
+ boost::timer wait_perf_timer_;\r
\r
audio_mixer audio_mixer_;\r
image_mixer image_mixer_;\r
{ \r
executor_.begin_invoke([=]\r
{ \r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
\r
auto image_future = mix_image(frames);\r
auto audio = mix_audio(frames);\r
output_(make_safe<const gpu_read_frame>(std::move(image), std::move(audio)));\r
\r
diag_->update_value("tick-time", static_cast<float>(wait_perf_timer_.elapsed()/format_desc_.interval*0.5));\r
- wait_perf_timer_.reset();\r
+ wait_perf_timer_.restart();\r
\r
diag_->set_value("input-buffer", static_cast<float>(executor_.size())/static_cast<float>(executor_.capacity()));\r
});\r
\r
#include <tbb/concurrent_queue.h>\r
\r
+#include <boost/timer.hpp>\r
+\r
#include <BlueVelvet4.h>\r
#include <BlueHancUtils.h>\r
\r
const unsigned int device_index_;\r
\r
std::shared_ptr<diagnostics::graph> graph_;\r
- timer perf_timer_;\r
+ boost::timer perf_timer_;\r
\r
boost::unique_future<void> active_;\r
\r
\r
std::rotate(reserved_frames_.begin(), reserved_frames_.begin() + 1, reserved_frames_.end());\r
graph_->update_value("tick-time", static_cast<float>(perf_timer_.elapsed()/format_desc_.interval*0.5));\r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
}\r
catch(...)\r
{\r
bluefish_consumer::bluefish_consumer(bluefish_consumer&& other) : impl_(std::move(other.impl_)){}\r
void bluefish_consumer::initialize(const core::video_format_desc& format_desc)\r
{\r
+ // TODO: Ugly\r
impl_.reset(new implementation(impl_->device_index_, impl_->embed_audio_));\r
impl_->initialize(format_desc);\r
}\r
#include <tbb/concurrent_queue.h>\r
\r
#include <boost/circular_buffer.hpp>\r
+#include <boost/timer.hpp>\r
\r
#include <array>\r
\r
tbb::atomic<bool> is_running_;\r
\r
std::shared_ptr<diagnostics::graph> graph_;\r
- timer perf_timer_;\r
+ boost::timer perf_timer_;\r
\r
std::array<std::pair<void*, CComPtr<IDeckLinkMutableVideoFrame>>, 3> reserved_frames_;\r
boost::circular_buffer<std::vector<short>> audio_container_;\r
\r
std::rotate(reserved_frames_.begin(), reserved_frames_.begin() + 1, reserved_frames_.end());\r
graph_->update_value("tick-time", static_cast<float>(perf_timer_.elapsed()/format_desc_.interval*0.5));\r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
}\r
\r
void send(const safe_ptr<const core::read_frame>& frame)\r
size_t ffmpeg_consumer::buffer_depth() const{return impl_->buffer_depth();}\r
void ffmpeg_consumer::initialize(const core::video_format_desc& format_desc)\r
{\r
+ // TODO: Ugly\r
impl_.reset(new implementation(impl_->filename_));\r
impl_->initialize(format_desc);\r
}\r
\r
#include <boost/filesystem.hpp>\r
#include <boost/thread.hpp>\r
+#include <boost/timer.hpp>\r
\r
#include <functional>\r
\r
safe_ptr<core::basic_frame> head_;\r
\r
safe_ptr<diagnostics::graph> graph_;\r
- timer perf_timer_;\r
+ boost::timer perf_timer_;\r
\r
high_prec_timer timer_;\r
\r
else\r
timer_.tick(frame_time);\r
\r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
ax_->Tick();\r
\r
if(ax_->InvalidRect())\r
#include <SFML/Audio.hpp>\r
\r
#include <boost/circular_buffer.hpp>\r
+#include <boost/timer.hpp>\r
\r
#include <tbb/concurrent_queue.h>\r
\r
struct oal_consumer::implementation : public sf::SoundStream, boost::noncopyable\r
{\r
safe_ptr<diagnostics::graph> graph_;\r
- timer perf_timer_;\r
+ boost::timer perf_timer_;\r
\r
tbb::concurrent_bounded_queue<std::vector<short>> input_;\r
boost::circular_buffer<std::vector<short>> container_;\r
data.NbSamples = container_.back().size(); \r
\r
graph_->update_value("tick-time", static_cast<float>(perf_timer_.elapsed()/format_desc_.interval*0.5)); \r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
\r
return is_running_;\r
}\r
#include <common/utility/timer.h>\r
\r
#include <boost/thread.hpp>\r
+#include <boost/timer.hpp>\r
\r
#include <algorithm>\r
#include <array>\r
\r
struct ogl_consumer::implementation : boost::noncopyable\r
{ \r
- timer clock_;\r
+ boost::timer clock_;\r
boost::unique_future<void> active_;\r
\r
float width_;\r
sf::Window window_;\r
\r
safe_ptr<diagnostics::graph> graph_;\r
- timer perf_timer_;\r
+ boost::timer perf_timer_;\r
\r
size_t square_width_;\r
size_t square_height_;\r
active_.get();\r
active_ = executor_.begin_invoke([=]\r
{\r
- perf_timer_.reset();\r
+ perf_timer_.restart();\r
sf::Event e;\r
while(window_.GetEvent(e))\r
{\r
size_t ogl_consumer::buffer_depth() const{return impl_->buffer_depth();}\r
void ogl_consumer::initialize(const core::video_format_desc& format_desc)\r
{\r
+ // TODO: Ugly\r
if(impl_->executor_.is_running())\r
impl_.reset(new implementation(impl_->screen_index_, impl_->stretch_, impl_->windowed_));\r
impl_->initialize(format_desc);\r