safe_ptr<frame_consumer> consumer_;\r
std::vector<size_t> audio_cadence_;\r
boost::circular_buffer<size_t> sync_buffer_;\r
- bool synced_;\r
public:\r
cadence_guard(const safe_ptr<frame_consumer>& consumer)\r
: consumer_(consumer)\r
- , synced_(false)\r
{\r
}\r
\r
virtual bool send(const safe_ptr<read_frame>& frame) override\r
{ \r
sync_buffer_.push_back(static_cast<size_t>(frame->audio_data().size()));\r
- \r
if(!boost::range::equal(sync_buffer_, audio_cadence_))\r
{\r
- synced_ = false;\r
CASPAR_LOG(trace) << L"[cadence_guard] Audio cadence unsynced. Skipping frame.";\r
return true;\r
}\r
- else if(!synced_)\r
- {\r
- synced_ = true;\r
- boost::range::rotate(audio_cadence_, std::begin(audio_cadence_)+1);\r
- return true;\r
- }\r
\r
boost::range::rotate(audio_cadence_, std::begin(audio_cadence_)+1);\r
\r
else \r
audio_buffer = std::make_shared<core::audio_buffer>(audio_cadence_.front(), 0);\r
\r
- sync_buffer_.push_back(audio_buffer->size());\r
- \r
+ sync_buffer_.push_back(audio_buffer->size()); \r
if(!boost::range::equal(sync_buffer_, audio_cadence_))\r
{\r
CASPAR_LOG(trace) << print() << L" Syncing audio.";\r
\r
muxer_.push(audio_buffer);\r
muxer_.push(av_frame, hints_); \r
- \r
- // Note: We don't fully sync with cadence, we send last and first (1602, 1602) to have as many samples as possible when inserting into mixer\r
- if(!boost::range::equal(sync_buffer_, audio_cadence_)) \r
- {\r
- CASPAR_LOG(trace) << L"[cadence_guard] Audio cadence unsynced. Skipping frame.";\r
- return S_OK;\r
- }\r
- \r
+ \r
boost::range::rotate(audio_cadence_, std::begin(audio_cadence_)+1);\r
\r
// POLL\r
\r
void print_info()\r
{\r
+ CASPAR_LOG(info) << L"################################################################################";\r
CASPAR_LOG(info) << L"Copyright (c) 2010 Sveriges Television AB, www.casparcg.com, <info@casparcg.com>";\r
+ CASPAR_LOG(info) << L"################################################################################";\r
CASPAR_LOG(info) << L"Starting CasparCG Video and Graphics Playout Server " << caspar::env::version();\r
CASPAR_LOG(info) << L"on " << caspar::get_win_product_name() << L" " << caspar::get_win_sp_version();\r
CASPAR_LOG(info) << caspar::get_cpu_info();\r