Loading services/audioparameterparser/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ cc_defaults { "av-audio-types-aidl-ndk", "libbase", "libbinder_ndk", "libmediautils", ], cflags: [ Loading services/audioparameterparser/ParameterParser.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -14,11 +14,11 @@ * limitations under the License. */ #include "ParameterParser.h" #define LOG_TAG "Audio_ParameterParser" #include <android-base/logging.h> #include "ParameterParser.h" namespace vendor::audio::parserservice { using ::aidl::android::hardware::audio::core::VendorParameter; Loading services/audioparameterparser/main.cpp +10 −51 Original line number Diff line number Diff line Loading @@ -16,67 +16,26 @@ #define LOG_TAG "Audio_ParameterParser" #include <android-base/logging.h> #include <android-base/properties.h> #include <android/binder_manager.h> #include <android/binder_process.h> #include <mediautils/Library.h> #include "ParameterParser.h" using vendor::audio::parserservice::ParameterParser; binder_status_t tryRegisteringVendorImpl() { /* * The property "ro.audio.ihaladaptervendorextension_libname" allows vendors * or OEMs to dynamically load a specific library * into this process space using dlopen. * * "createIHalAdapterVendorExtension" symbol needs to be defined in * the dynamically loaded library used to register the * "::aidl::android::hardware::audio::core::IHalAdapterVendorExtension/default" * with the ServiceManager. */ static std::string kLibPropName = ::android::base::GetProperty("ro.audio.ihaladaptervendorextension_libname", ""); if (kLibPropName == "") { LOG(DEBUG) << kLibPropName << "property is not found"; return STATUS_BAD_VALUE; } static std::shared_ptr<void> libHandle = android::mediautils::loadLibrary(kLibPropName.c_str()); if (libHandle == nullptr) { LOG(ERROR) << "Failed to load library:" << kLibPropName; return STATUS_BAD_VALUE; } const std::string kLibSymbol = "createIHalAdapterVendorExtension"; std::shared_ptr<void> untypedObject = android::mediautils::getUntypedObjectFromLibrary( kLibSymbol.c_str(), libHandle); auto createIHalAdapterVendorExtension = reinterpret_cast<int (*)()>(untypedObject.get()); if (createIHalAdapterVendorExtension == nullptr) { LOG(ERROR) << "Failed to find symbol \"" << kLibSymbol << "\""; return STATUS_BAD_VALUE; } return createIHalAdapterVendorExtension(); } int main() { // This is a debug implementation, always enable debug logging. android::base::SetMinimumLogSeverity(::android::base::DEBUG); if (tryRegisteringVendorImpl() != STATUS_OK) { const std::string parserFqn = std::string() .append(::aidl::android::media::audio::IHalAdapterVendorExtension:: descriptor) .append("/default"); auto parser = ndk::SharedRefBase::make<ParameterParser>(); const std::string parserFqn = std::string().append(ParameterParser::descriptor).append("/default"); binder_status_t status = AServiceManager_addService(parser->asBinder().get(), parserFqn.c_str()); if (status != STATUS_OK) { LOG(ERROR) << "failed to register service for \"" << parserFqn << "\""; } } else { LOG(INFO) << "IHalAdapterVendorExtension registered with vendor's implementation"; } ABinderProcess_joinThreadPool(); return EXIT_FAILURE; // should not reach } Loading
services/audioparameterparser/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ cc_defaults { "av-audio-types-aidl-ndk", "libbase", "libbinder_ndk", "libmediautils", ], cflags: [ Loading
services/audioparameterparser/ParameterParser.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -14,11 +14,11 @@ * limitations under the License. */ #include "ParameterParser.h" #define LOG_TAG "Audio_ParameterParser" #include <android-base/logging.h> #include "ParameterParser.h" namespace vendor::audio::parserservice { using ::aidl::android::hardware::audio::core::VendorParameter; Loading
services/audioparameterparser/main.cpp +10 −51 Original line number Diff line number Diff line Loading @@ -16,67 +16,26 @@ #define LOG_TAG "Audio_ParameterParser" #include <android-base/logging.h> #include <android-base/properties.h> #include <android/binder_manager.h> #include <android/binder_process.h> #include <mediautils/Library.h> #include "ParameterParser.h" using vendor::audio::parserservice::ParameterParser; binder_status_t tryRegisteringVendorImpl() { /* * The property "ro.audio.ihaladaptervendorextension_libname" allows vendors * or OEMs to dynamically load a specific library * into this process space using dlopen. * * "createIHalAdapterVendorExtension" symbol needs to be defined in * the dynamically loaded library used to register the * "::aidl::android::hardware::audio::core::IHalAdapterVendorExtension/default" * with the ServiceManager. */ static std::string kLibPropName = ::android::base::GetProperty("ro.audio.ihaladaptervendorextension_libname", ""); if (kLibPropName == "") { LOG(DEBUG) << kLibPropName << "property is not found"; return STATUS_BAD_VALUE; } static std::shared_ptr<void> libHandle = android::mediautils::loadLibrary(kLibPropName.c_str()); if (libHandle == nullptr) { LOG(ERROR) << "Failed to load library:" << kLibPropName; return STATUS_BAD_VALUE; } const std::string kLibSymbol = "createIHalAdapterVendorExtension"; std::shared_ptr<void> untypedObject = android::mediautils::getUntypedObjectFromLibrary( kLibSymbol.c_str(), libHandle); auto createIHalAdapterVendorExtension = reinterpret_cast<int (*)()>(untypedObject.get()); if (createIHalAdapterVendorExtension == nullptr) { LOG(ERROR) << "Failed to find symbol \"" << kLibSymbol << "\""; return STATUS_BAD_VALUE; } return createIHalAdapterVendorExtension(); } int main() { // This is a debug implementation, always enable debug logging. android::base::SetMinimumLogSeverity(::android::base::DEBUG); if (tryRegisteringVendorImpl() != STATUS_OK) { const std::string parserFqn = std::string() .append(::aidl::android::media::audio::IHalAdapterVendorExtension:: descriptor) .append("/default"); auto parser = ndk::SharedRefBase::make<ParameterParser>(); const std::string parserFqn = std::string().append(ParameterParser::descriptor).append("/default"); binder_status_t status = AServiceManager_addService(parser->asBinder().get(), parserFqn.c_str()); if (status != STATUS_OK) { LOG(ERROR) << "failed to register service for \"" << parserFqn << "\""; } } else { LOG(INFO) << "IHalAdapterVendorExtension registered with vendor's implementation"; } ABinderProcess_joinThreadPool(); return EXIT_FAILURE; // should not reach }