#include "ffmpeg_consumer.h"\r
\r
#include "../producer/audio/audio_resampler.h"\r
+#include "../producer/tbb_avcodec.h"\r
\r
#include <core/frame/frame.h>\r
#include <core/mixer/audio/audio_util.h>\r
if(output_format_.format->flags & AVFMT_GLOBALHEADER)\r
c->flags |= CODEC_FLAG_GLOBAL_HEADER;\r
\r
- c->thread_count = boost::thread::hardware_concurrency();\r
- if(avcodec_open(c, encoder) < 0)\r
- {\r
- c->thread_count = 1;\r
- THROW_ON_ERROR2(avcodec_open(c, encoder), "[ffmpeg_consumer]");\r
- }\r
+ //c->thread_count = boost::thread::hardware_concurrency();\r
+ THROW_ON_ERROR2(tbb_avcodec_open(c, encoder), "[ffmpeg_consumer]");\r
\r
return std::shared_ptr<AVStream>(st, [](AVStream* st)\r
{\r
- LOG_ON_ERROR2(avcodec_close(st->codec), "[ffmpeg_consumer]");\r
+ LOG_ON_ERROR2(tbb_avcodec_close(st->codec), "[ffmpeg_consumer]");\r
av_freep(&st->codec);\r
av_freep(&st);\r
});\r
consumer_.reset(new ffmpeg_consumer(u8(filename_), format_desc, options_));\r
}\r
\r
- virtual bool send(core::const_frame frame) override\r
+ bool send(core::const_frame frame) override\r
{\r
consumer_->send(frame);\r
return true;\r
}\r
\r
- virtual std::wstring print() const override\r
+ std::wstring print() const override\r
{\r
return consumer_ ? consumer_->print() : L"[ffmpeg_consumer]";\r
}\r
\r
- virtual std::wstring name() const override\r
+ std::wstring name() const override\r
{\r
return L"file";\r
}\r
\r
- virtual boost::property_tree::wptree info() const override\r
+ boost::property_tree::wptree info() const override\r
{\r
boost::property_tree::wptree info;\r
info.add(L"type", L"file");\r
return info;\r
}\r
\r
- virtual bool has_synchronization_clock() const override\r
+ bool has_synchronization_clock() const override\r
{\r
return false;\r
}\r
\r
- virtual int buffer_depth() const override\r
+ int buffer_depth() const override\r
{\r
return 1;\r
}\r
\r
- virtual int index() const override\r
+ int index() const override\r
{\r
return 200;\r
}\r