Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52257b75 authored by Pawin Vongmasa's avatar Pawin Vongmasa
Browse files

Stub implementation for IOmxStore.

Test: Small CtsMediaTestCases

Bug: 37657124
Change-Id: I5728a12d000223231600ab3c3ab4eb044dd1847d
parent 087f3af6
Loading
Loading
Loading
Loading
+68 −0
Original line number Original line Diff line number Diff line
/*
 * 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 <ios>
#include <list>

#include <android-base/logging.h>

#include "Conversion.h"
#include "OmxStore.h"

namespace android {
namespace hardware {
namespace media {
namespace omx {
namespace V1_0 {
namespace implementation {

OmxStore::OmxStore() {
}

OmxStore::~OmxStore() {
}

Return<void> OmxStore::listServiceAttributes(listServiceAttributes_cb _hidl_cb) {
    _hidl_cb(toStatus(NO_ERROR), hidl_vec<ServiceAttribute>());
    return Void();
}

Return<void> OmxStore::getNodePrefix(getNodePrefix_cb _hidl_cb) {
    _hidl_cb(hidl_string());
    return Void();
}

Return<void> OmxStore::listRoles(listRoles_cb _hidl_cb) {
    _hidl_cb(hidl_vec<RoleInfo>());
    return Void();
}

Return<sp<IOmx>> 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
+63 −0
Original line number Original line Diff line number Diff line
/*
 * 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 <hidl/MQDescriptor.h>
#include <hidl/Status.h>

#include <android/hardware/media/omx/1.0/IOmxStore.h>

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<void> listServiceAttributes(listServiceAttributes_cb) override;
    Return<void> getNodePrefix(getNodePrefix_cb) override;
    Return<void> listRoles(listRoles_cb) override;
    Return<sp<IOmx>> 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
+1 −0
Original line number Original line Diff line number Diff line
@@ -15,6 +15,7 @@ LOCAL_SRC_FILES:= \
        SoftVideoDecoderOMXComponent.cpp   \
        SoftVideoDecoderOMXComponent.cpp   \
        SoftVideoEncoderOMXComponent.cpp   \
        SoftVideoEncoderOMXComponent.cpp   \
        1.0/Omx.cpp                        \
        1.0/Omx.cpp                        \
        1.0/OmxStore.cpp                   \
        1.0/WGraphicBufferProducer.cpp     \
        1.0/WGraphicBufferProducer.cpp     \
        1.0/WProducerListener.cpp          \
        1.0/WProducerListener.cpp          \
        1.0/WGraphicBufferSource.cpp       \
        1.0/WGraphicBufferSource.cpp       \
+15 −8
Original line number Original line Diff line number Diff line
@@ -31,9 +31,9 @@
#include "MediaCodecService.h"
#include "MediaCodecService.h"
#include "minijail.h"
#include "minijail.h"


#include <android/hardware/media/omx/1.0/IOmx.h>
#include <hidl/HidlTransportSupport.h>
#include <hidl/HidlTransportSupport.h>
#include <omx/1.0/Omx.h>
#include <omx/1.0/Omx.h>
#include <omx/1.0/OmxStore.h>


using namespace android;
using namespace android;


@@ -61,17 +61,24 @@ int main(int argc __unused, char** argv)


    if (treble) {
    if (treble) {
        using namespace ::android::hardware::media::omx::V1_0;
        using namespace ::android::hardware::media::omx::V1_0;
        sp<IOmxStore> 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 {
            sp<IOmx> omx = new implementation::Omx();
            sp<IOmx> omx = new implementation::Omx();
            if (omx == nullptr) {
            if (omx == nullptr) {
            LOG(ERROR) << "Cannot create a Treble IOmx service.";
                LOG(ERROR) << "Cannot create IOmx HAL service.";
            } else if (omx->registerAsService() != OK) {
            } else if (omx->registerAsService() != OK) {
            LOG(ERROR) << "Cannot register a Treble IOmx service.";
                LOG(ERROR) << "Cannot register IOmx HAL service.";
            } else {
            } else {
            LOG(INFO) << "Treble IOmx service created.";
                LOG(INFO) << "Treble OMX service created.";
            }
        }
        }
    } else {
    } else {
        MediaCodecService::instantiate();
        MediaCodecService::instantiate();
        LOG(INFO) << "Non-Treble IOMX service created.";
        LOG(INFO) << "Non-Treble OMX service created.";
    }
    }


    ProcessState::self()->startThreadPool();
    ProcessState::self()->startThreadPool();