Loading services/mediacodec/registrant/CodecServiceRegistrant.cpp +61 −24 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "CodecServiceRegistrant" #include <android-base/properties.h> #include <android-base/logging.h> #include <android-base/properties.h> #include <C2Component.h> #include <C2PlatformSupport.h> #include <codec2/hidl/1.0/ComponentStore.h> #include <codec2/hidl/1.1/ComponentStore.h> #include <codec2/hidl/1.1/Configurable.h> #include <codec2/hidl/1.1/types.h> Loading @@ -43,6 +45,10 @@ constexpr c2_status_t C2_TRANSACTION_FAILED = C2_CORRUPTED; // Converter from IComponentStore to C2ComponentStore. class H2C2ComponentStore : public C2ComponentStore { protected: using IComponentStore = ::android::hardware::media::c2::V1_0::IComponentStore; using IConfigurable = ::android::hardware::media::c2::V1_0::IConfigurable; sp<IComponentStore> mStore; sp<IConfigurable> mConfigurable; public: Loading Loading @@ -399,16 +405,54 @@ bool ionPropertiesDefined() { } // unnamed namespace extern "C" void RegisterCodecServices() { using namespace ::android::hardware::media::c2::V1_1; LOG(INFO) << "Creating software Codec2 service..."; sp<ComponentStore> store = new ComponentStore(::android::GetCodec2PlatformComponentStore()); if (store == nullptr) { LOG(ERROR) << "Cannot create software Codec2 service."; } else { std::shared_ptr<C2ComponentStore> store = android::GetCodec2PlatformComponentStore(); if (!store) { LOG(ERROR) << "Failed to create Codec2 service."; return; } using namespace ::android::hardware::media::c2; int platformVersion = android::base::GetIntProperty("ro.build.version.sdk", int32_t(29)); // STOPSHIP: Remove code name checking once platform version bumps up to 30. std::string codeName = android::base::GetProperty("ro.build.version.codename", ""); if (codeName == "R") { platformVersion = 30; } switch (platformVersion) { case 30: { android::sp<V1_1::IComponentStore> storeV1_1 = new V1_1::utils::ComponentStore(store); if (storeV1_1->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 v1.1 service."; return; } break; } case 29: { android::sp<V1_0::IComponentStore> storeV1_0 = new V1_0::utils::ComponentStore(store); if (storeV1_0->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 v1.0 service."; return; } break; } default: { LOG(ERROR) << "The platform version " << platformVersion << " is not supported."; return; } } if (!ionPropertiesDefined()) { std::string preferredStoreName = "default"; using IComponentStore = ::android::hardware::media::c2::V1_0::IComponentStore; std::string const preferredStoreName = "default"; sp<IComponentStore> preferredStore = IComponentStore::getService(preferredStoreName.c_str()); if (preferredStore) { Loading @@ -422,13 +466,6 @@ extern "C" void RegisterCodecServices() { "Preferred Codec2 store is defaulted to \"software\"."; } } if (store->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 service."; } else { LOG(INFO) << "Software Codec2 service created."; } } LOG(INFO) << "Software Codec2 service created and registered."; } Loading
services/mediacodec/registrant/CodecServiceRegistrant.cpp +61 −24 Original line number Diff line number Diff line Loading @@ -17,11 +17,13 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "CodecServiceRegistrant" #include <android-base/properties.h> #include <android-base/logging.h> #include <android-base/properties.h> #include <C2Component.h> #include <C2PlatformSupport.h> #include <codec2/hidl/1.0/ComponentStore.h> #include <codec2/hidl/1.1/ComponentStore.h> #include <codec2/hidl/1.1/Configurable.h> #include <codec2/hidl/1.1/types.h> Loading @@ -43,6 +45,10 @@ constexpr c2_status_t C2_TRANSACTION_FAILED = C2_CORRUPTED; // Converter from IComponentStore to C2ComponentStore. class H2C2ComponentStore : public C2ComponentStore { protected: using IComponentStore = ::android::hardware::media::c2::V1_0::IComponentStore; using IConfigurable = ::android::hardware::media::c2::V1_0::IConfigurable; sp<IComponentStore> mStore; sp<IConfigurable> mConfigurable; public: Loading Loading @@ -399,16 +405,54 @@ bool ionPropertiesDefined() { } // unnamed namespace extern "C" void RegisterCodecServices() { using namespace ::android::hardware::media::c2::V1_1; LOG(INFO) << "Creating software Codec2 service..."; sp<ComponentStore> store = new ComponentStore(::android::GetCodec2PlatformComponentStore()); if (store == nullptr) { LOG(ERROR) << "Cannot create software Codec2 service."; } else { std::shared_ptr<C2ComponentStore> store = android::GetCodec2PlatformComponentStore(); if (!store) { LOG(ERROR) << "Failed to create Codec2 service."; return; } using namespace ::android::hardware::media::c2; int platformVersion = android::base::GetIntProperty("ro.build.version.sdk", int32_t(29)); // STOPSHIP: Remove code name checking once platform version bumps up to 30. std::string codeName = android::base::GetProperty("ro.build.version.codename", ""); if (codeName == "R") { platformVersion = 30; } switch (platformVersion) { case 30: { android::sp<V1_1::IComponentStore> storeV1_1 = new V1_1::utils::ComponentStore(store); if (storeV1_1->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 v1.1 service."; return; } break; } case 29: { android::sp<V1_0::IComponentStore> storeV1_0 = new V1_0::utils::ComponentStore(store); if (storeV1_0->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 v1.0 service."; return; } break; } default: { LOG(ERROR) << "The platform version " << platformVersion << " is not supported."; return; } } if (!ionPropertiesDefined()) { std::string preferredStoreName = "default"; using IComponentStore = ::android::hardware::media::c2::V1_0::IComponentStore; std::string const preferredStoreName = "default"; sp<IComponentStore> preferredStore = IComponentStore::getService(preferredStoreName.c_str()); if (preferredStore) { Loading @@ -422,13 +466,6 @@ extern "C" void RegisterCodecServices() { "Preferred Codec2 store is defaulted to \"software\"."; } } if (store->registerAsService("software") != android::OK) { LOG(ERROR) << "Cannot register software Codec2 service."; } else { LOG(INFO) << "Software Codec2 service created."; } } LOG(INFO) << "Software Codec2 service created and registered."; }