#include "StdAfx.h"
+#include "ffmpeg.h"
+
#include "consumer/ffmpeg_consumer.h"
+#include "consumer/streaming_consumer.h"
#include "producer/ffmpeg_producer.h"
#include "producer/util/util.h"
#include <core/producer/frame_producer.h>
#include <core/producer/media_info/media_info.h>
#include <core/producer/media_info/media_info_repository.h>
+#include <core/system_info_provider.h>
+
+#include <boost/property_tree/ptree.hpp>
#include <tbb/recursive_mutex.h>
//}
//#pragma warning (pop)
-void init(const spl::shared_ptr<core::media_info_repository>& media_info_repo)
+std::wstring make_version(unsigned int ver)
+{
+ std::wstringstream str;
+ str << ((ver >> 16) & 0xFF) << L"." << ((ver >> 8) & 0xFF) << L"." << ((ver >> 0) & 0xFF);
+ return str.str();
+}
+
+std::wstring avcodec_version()
+{
+ return make_version(::avcodec_version());
+}
+
+std::wstring avformat_version()
+{
+ return make_version(::avformat_version());
+}
+
+std::wstring avutil_version()
+{
+ return make_version(::avutil_version());
+}
+
+std::wstring avfilter_version()
+{
+ return make_version(::avfilter_version());
+}
+
+std::wstring swscale_version()
+{
+ return make_version(::swscale_version());
+}
+
+void init(core::module_dependencies dependencies)
{
av_lockmgr_register(ffmpeg_lock_callback);
av_log_set_callback(log_callback);
avformat_network_init();
avcodec_register_all();
- core::register_consumer_factory([](const std::vector<std::wstring>& params){return create_consumer(params);});
- core::register_producer_factory(create_producer);
+ dependencies.consumer_registry->register_consumer_factory(L"FFMpeg Consumer", create_consumer, describe_consumer);
+ dependencies.consumer_registry->register_consumer_factory(L"Streaming Consumer", create_streaming_consumer, describe_streaming_consumer);
+ dependencies.consumer_registry->register_preconfigured_consumer_factory(L"file", create_preconfigured_consumer);
+ dependencies.consumer_registry->register_preconfigured_consumer_factory(L"stream", create_preconfigured_streaming_consumer);
+ dependencies.producer_registry->register_producer_factory(L"FFmpeg Producer", create_producer, describe_producer);
- media_info_repo->register_extractor(
+ dependencies.media_info_repo->register_extractor(
[](const std::wstring& file, const std::wstring& extension, core::media_info& info) -> bool
{
// TODO: merge thumbnail generation from 2.0
return try_get_duration(file, info.duration, info.time_base);
});
-
+ dependencies.system_info_provider_repo->register_system_info_provider([](boost::property_tree::wptree& info)
+ {
+ info.add(L"system.ffmpeg.avcodec", avcodec_version());
+ info.add(L"system.ffmpeg.avformat", avformat_version());
+ info.add(L"system.ffmpeg.avfilter", avfilter_version());
+ info.add(L"system.ffmpeg.avutil", avutil_version());
+ info.add(L"system.ffmpeg.swscale", swscale_version());
+ });
}
void uninit()
av_lockmgr_register(nullptr);
}
-std::wstring make_version(unsigned int ver)
-{
- std::wstringstream str;
- str << ((ver >> 16) & 0xFF) << L"." << ((ver >> 8) & 0xFF) << L"." << ((ver >> 0) & 0xFF);
- return str.str();
-}
-
-std::wstring avcodec_version()
-{
- return make_version(::avcodec_version());
-}
-
-std::wstring avformat_version()
-{
- return make_version(::avformat_version());
-}
-
-std::wstring avutil_version()
-{
- return make_version(::avutil_version());
-}
-
-std::wstring avfilter_version()
-{
- return make_version(::avfilter_version());
-}
-
-std::wstring swscale_version()
-{
- return make_version(::swscale_version());
-}
-
}}
\ No newline at end of file