\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Mon Jun 20 10:23:35 2011\r
+/* at Mon Jun 20 15:48:22 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 Mon Jun 20 10:23:35 2011\r
+/* at Mon Jun 20 15:48:22 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
return frame;\r
}\r
+\r
+ void skip()\r
+ {\r
+ int errn = avfilter_poll_frame(video_out_filter_->inputs[0]);\r
+ if(errn < 0)\r
+ {\r
+ BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(av_error_str(errn)) <<\r
+ boost::errinfo_api_function("avfilter_poll_frame") << boost::errinfo_errno(AVUNERROR(errn)));\r
+ }\r
+ }\r
};\r
\r
filter::filter(const std::string& filters) : impl_(new implementation(filters)){}\r
void filter::push(const safe_ptr<AVFrame>& frame) {impl_->push(frame);}\r
std::vector<safe_ptr<AVFrame>> filter::poll() {return impl_->poll();}\r
+void filter::skip() {impl_->skip();}\r
\r
}
\ No newline at end of file
\r
void push(const safe_ptr<AVFrame>& frame);\r
std::vector<safe_ptr<AVFrame>> poll();\r
+ void skip();\r
\r
private:\r
struct implementation;\r
\r
std::shared_ptr<filter> filter_;\r
size_t filter_delay_;\r
+ size_t filter_skip_;\r
\r
std::shared_ptr<AVFrame> last_frame_;\r
std::shared_ptr<AVFrame> decoded_frame_;\r
, frame_number_(0)\r
, filter_(filter_str.empty() ? nullptr : new filter(filter_str))\r
, filter_delay_(0)\r
+ , filter_skip_(0)\r
, last_frame_(avcodec_alloc_frame(), av_free)\r
, filter_str_(filter_str)\r
{\r
{\r
// Get all buffered frames\r
if(decoded_frame_)\r
+ { \r
push_filter_frames(make_safe(decoded_frame_)); \r
- boost::range::push_back(result, poll_filter_frames());\r
+ boost::range::push_back(result, poll_filter_frames());\r
+ }\r
\r
for(size_t n = 0; n < filter_delay_; ++n)\r
{ \r
}\r
\r
// FIXME: Unnecessary reinitialization\r
- filter_.reset(filter_str_.empty() ? nullptr : new filter(filter_str_));\r
- filter_delay_ = 0;\r
+ filter_skip_ = filter_delay_;\r
decoded_frame_ = nullptr;\r
}\r
\r
std::deque<std::pair<int, safe_ptr<core::write_frame>>> poll_filter_frames()\r
{\r
std::deque<std::pair<int, safe_ptr<core::write_frame>>> result;\r
+ \r
+ if(filter_skip_ > 0)\r
+ {\r
+ --filter_skip_;\r
+ filter_->skip();\r
+ return result;\r
+ }\r
\r
auto frames = filter_->poll(); \r
\r
{\r
return std::make_pair(frame_number_, make_write_frame(frame));\r
});\r
-\r
+ \r
if(!frames.empty())\r
++frame_number_;\r
else \r
- ++filter_delay_;\r
- \r
+ ++filter_delay_; \r
+\r
return result;\r
}\r
\r
{ \r
static_assert(sizeof(void*) == 4, "64-bit code generation is not supported.");\r
\r
+ CASPAR_LOG(info) << L"Type \"q\" to close application";\r
+\r
CASPAR_LOG(info) << L"THIS IS AN ALPHA BUILD";\r
\r
// Set debug mode.\r