27 #include <core/posix/signal.h> 35 #if defined(MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER) 36 #include <hybris/media/media_codec_layer.h> 42 const char *level = ::getenv(
"MH_LOG_LEVEL");
47 if (strcmp(level,
"trace") == 0)
48 severity = media::Logger::Severity::kTrace;
49 else if (strcmp(level,
"debug") == 0)
50 severity = media::Logger::Severity::kDebug;
51 else if (strcmp(level,
"info") == 0)
52 severity = media::Logger::Severity::kInfo;
53 else if (strcmp(level,
"warning") == 0)
54 severity = media::Logger::Severity::kWarning;
55 else if (strcmp(level,
"error") == 0)
56 severity = media::Logger::Severity::kError;
57 else if (strcmp(level,
"fatal") == 0)
58 severity = media::Logger::Severity::kFatal;
60 std::cerr <<
"Invalid log level \"" << level
61 <<
"\", setting to info. Valid options: [trace, debug, info, warning, error, fatal]." 65 std::cout <<
"Using default log level: info" << std::endl;
68 cout <<
"Log level: " << severity << std::endl;
77 case media::AVBackend::Backend::hybris:
79 decoding_service_init();
81 case media::AVBackend::Backend::none:
82 MH_WARNING(
"No video backend selected. Video functionality won't work.");
85 MH_INFO(
"Invalid or no A/V backend specified, using \"hybris\" as a default.");
86 decoding_service_init();
90 #else // MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER 99 #endif // MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER 103 auto trap = core::posix::trap_signals_for_all_subsequent_threads(
105 core::posix::Signal::sig_int,
106 core::posix::Signal::sig_term
109 trap->signal_raised().connect([trap](core::posix::Signal)
120 bool shutdown_requested{
false};
127 std::thread external_services_worker
132 [&shutdown_requested, &external_services]()
134 while (not shutdown_requested)
142 catch (
const std::exception& e)
144 std::cerr <<
"Error while executing the underlying io_service: " << e.what() << std::endl;
148 std::cerr <<
"Error while executing the underlying io_service." << std::endl;
155 auto player_store = std::make_shared<media::HashedKeyedPlayerStore>();
157 media::ServiceImplementation::Configuration service_config
159 std::make_shared<media::HashedKeyedPlayerStore>(),
163 auto impl = std::make_shared<media::ServiceImplementation>(media::ServiceImplementation::Configuration
169 auto skeleton = std::make_shared<media::ServiceSkeleton>(media::ServiceSkeleton::Configuration
176 std::thread service_worker
178 [&shutdown_requested, skeleton]()
180 while (not shutdown_requested)
186 catch (
const std::exception& e)
188 std::cerr <<
"Recoverable error while executing the service: " << e.what() << std::endl;
192 std::cerr <<
"Recoverable error while executing the service." << std::endl;
204 shutdown_requested =
true;
209 if (service_worker.joinable())
210 service_worker.join();
212 external_services.
stop();
214 if (external_services_worker.joinable())
215 external_services_worker.join();