From 52257b75115135821bba562ac35c0c6325a1e100 Mon Sep 17 00:00:00 2001 From: Pawin Vongmasa Date: Tue, 25 Apr 2017 05:06:20 -0700 Subject: [PATCH] Stub implementation for IOmxStore. Test: Small CtsMediaTestCases Bug: 37657124 Change-Id: I5728a12d000223231600ab3c3ab4eb044dd1847d --- media/libstagefright/omx/1.0/OmxStore.cpp | 68 +++++++++++++++++++++++++++++++ media/libstagefright/omx/1.0/OmxStore.h | 63 ++++++++++++++++++++++++++++ media/libstagefright/omx/Android.mk | 1 + services/mediacodec/main_codecservice.cpp | 23 +++++++---- 4 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 media/libstagefright/omx/1.0/OmxStore.cpp create mode 100644 media/libstagefright/omx/1.0/OmxStore.h diff --git a/media/libstagefright/omx/1.0/OmxStore.cpp b/media/libstagefright/omx/1.0/OmxStore.cpp new file mode 100644 index 0000000000..0e37af9948 --- /dev/null +++ b/media/libstagefright/omx/1.0/OmxStore.cpp @@ -0,0 +1,68 @@ +/* + * Copyright 2017, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include + +#include "Conversion.h" +#include "OmxStore.h" + +namespace android { +namespace hardware { +namespace media { +namespace omx { +namespace V1_0 { +namespace implementation { + +OmxStore::OmxStore() { +} + +OmxStore::~OmxStore() { +} + +Return OmxStore::listServiceAttributes(listServiceAttributes_cb _hidl_cb) { + _hidl_cb(toStatus(NO_ERROR), hidl_vec()); + return Void(); +} + +Return OmxStore::getNodePrefix(getNodePrefix_cb _hidl_cb) { + _hidl_cb(hidl_string()); + return Void(); +} + +Return OmxStore::listRoles(listRoles_cb _hidl_cb) { + _hidl_cb(hidl_vec()); + return Void(); +} + +Return> OmxStore::getOmx(hidl_string const& omxName) { + return IOmx::tryGetService(omxName); +} + +// Methods from ::android::hidl::base::V1_0::IBase follow. + +IOmxStore* HIDL_FETCH_IOmxStore(const char* /* name */) { + return new OmxStore(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace omx +} // namespace media +} // namespace hardware +} // namespace android diff --git a/media/libstagefright/omx/1.0/OmxStore.h b/media/libstagefright/omx/1.0/OmxStore.h new file mode 100644 index 0000000000..f377f5ad69 --- /dev/null +++ b/media/libstagefright/omx/1.0/OmxStore.h @@ -0,0 +1,63 @@ +/* + * Copyright 2017, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_HARDWARE_MEDIA_OMX_V1_0_OMXSTORE_H +#define ANDROID_HARDWARE_MEDIA_OMX_V1_0_OMXSTORE_H + +#include +#include + +#include + +namespace android { +namespace hardware { +namespace media { +namespace omx { +namespace V1_0 { +namespace implementation { + +using ::android::hardware::media::omx::V1_0::IOmxStore; +using ::android::hardware::media::omx::V1_0::IOmx; +using ::android::hardware::media::omx::V1_0::Status; +using ::android::hidl::base::V1_0::IBase; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::sp; +using ::android::wp; + +struct OmxStore : public IOmxStore { + OmxStore(); + virtual ~OmxStore(); + + // Methods from IOmx + Return listServiceAttributes(listServiceAttributes_cb) override; + Return getNodePrefix(getNodePrefix_cb) override; + Return listRoles(listRoles_cb) override; + Return> getOmx(hidl_string const&) override; +}; + +extern "C" IOmxStore* HIDL_FETCH_IOmxStore(const char* name); + +} // namespace implementation +} // namespace V1_0 +} // namespace omx +} // namespace media +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_MEDIA_OMX_V1_0_OMXSTORE_H diff --git a/media/libstagefright/omx/Android.mk b/media/libstagefright/omx/Android.mk index 90333efdbc..29e2ccc83b 100644 --- a/media/libstagefright/omx/Android.mk +++ b/media/libstagefright/omx/Android.mk @@ -15,6 +15,7 @@ LOCAL_SRC_FILES:= \ SoftVideoDecoderOMXComponent.cpp \ SoftVideoEncoderOMXComponent.cpp \ 1.0/Omx.cpp \ + 1.0/OmxStore.cpp \ 1.0/WGraphicBufferProducer.cpp \ 1.0/WProducerListener.cpp \ 1.0/WGraphicBufferSource.cpp \ diff --git a/services/mediacodec/main_codecservice.cpp b/services/mediacodec/main_codecservice.cpp index c4e4cffdf7..03d18f031a 100644 --- a/services/mediacodec/main_codecservice.cpp +++ b/services/mediacodec/main_codecservice.cpp @@ -31,9 +31,9 @@ #include "MediaCodecService.h" #include "minijail.h" -#include #include #include +#include using namespace android; @@ -61,17 +61,24 @@ int main(int argc __unused, char** argv) if (treble) { using namespace ::android::hardware::media::omx::V1_0; - sp omx = new implementation::Omx(); - if (omx == nullptr) { - LOG(ERROR) << "Cannot create a Treble IOmx service."; - } else if (omx->registerAsService() != OK) { - LOG(ERROR) << "Cannot register a Treble IOmx service."; + sp omxStore = new implementation::OmxStore(); + if (omxStore == nullptr) { + LOG(ERROR) << "Cannot create IOmxStore HAL service."; + } else if (omxStore->registerAsService() != OK) { + LOG(ERROR) << "Cannot register IOmxStore HAL service."; } else { - LOG(INFO) << "Treble IOmx service created."; + sp omx = new implementation::Omx(); + if (omx == nullptr) { + LOG(ERROR) << "Cannot create IOmx HAL service."; + } else if (omx->registerAsService() != OK) { + LOG(ERROR) << "Cannot register IOmx HAL service."; + } else { + LOG(INFO) << "Treble OMX service created."; + } } } else { MediaCodecService::instantiate(); - LOG(INFO) << "Non-Treble IOMX service created."; + LOG(INFO) << "Non-Treble OMX service created."; } ProcessState::self()->startThreadPool(); -- 2.11.0