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

Commit 0560d60a authored by Wonsik Kim's avatar Wonsik Kim
Browse files

codec2 hal: use bufferpool2 when necessary

Bug: 251850069
Test: atest VtsHalMediaC2V1_0TargetAudioDecTest
Change-Id: I967313b57b9187735feebfab0b430203b5c48016
parent e585c662
Loading
Loading
Loading
Loading
+24 −21
Original line number Diff line number Diff line
@@ -183,7 +183,8 @@ bool addBaseBlock(
                baseBlocks, baseBlockIndices);
    }
    switch (blockPoolData->getType()) {
    case _C2BlockPoolData::TYPE_BUFFERPOOL: {
    case _C2BlockPoolData::TYPE_BUFFERPOOL:
    case _C2BlockPoolData::TYPE_BUFFERPOOL2: {
            // BufferPoolData
            std::shared_ptr<typename BufferPoolTypes::BufferPoolData> bpData;
            if (!GetBufferPoolData<BufferPoolTypes>(blockPoolData, &bpData) || !bpData) {
@@ -194,7 +195,7 @@ bool addBaseBlock(
                    index, bpData,
                    bufferPoolSender, baseBlocks, baseBlockIndices);
        }
    case _C2BlockPoolData::TYPE_BUFFERQUEUE:
    case _C2BlockPoolData::TYPE_BUFFERQUEUE: {
            uint32_t gen;
            uint64_t bqId;
            int32_t bqSlot;
@@ -207,7 +208,8 @@ bool addBaseBlock(
            return _addBaseBlock(
                    index, handle,
                    baseBlocks, baseBlockIndices);
    case _C2BlockPoolData::TYPE_AHWBUFFER:
        }
    case _C2BlockPoolData::TYPE_AHWBUFFER: {
            AHardwareBuffer *pBuf;
            if (!_C2BlockFactory::GetAHardwareBuffer(blockPoolData, &pBuf)) {
                LOG(ERROR) << "AHardwareBuffer unavailable in a block.";
@@ -216,6 +218,7 @@ bool addBaseBlock(
            return _addBaseBlock(
                    index, pBuf,
                    baseBlocks, baseBlockIndices);
        }
    default:
        LOG(ERROR) << "Unknown C2BlockPoolData type.";
        return false;
+11 −0
Original line number Diff line number Diff line
@@ -52,6 +52,9 @@ cc_library {
        "com.android.media.swcodec",
    ],

    defaults: [
        "libcodec2_hal_selection",
    ],

    srcs: [
        "C2AllocatorBlob.cpp",
@@ -129,6 +132,10 @@ cc_library {
cc_defaults {
    name: "libcodec2-static-defaults",

    defaults: [
        "libcodec2_hal_selection",
    ],

    static_libs: [
        "liblog",
        "libion",
@@ -172,6 +179,10 @@ cc_defaults {
cc_defaults {
    name: "libcodec2-impl-defaults",

    defaults: [
        "libcodec2_hal_selection",
    ],

    shared_libs: [
        "libbase", // for C2_LOG
        "liblog", // for ALOG
+10 −3
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <C2Config.h>
#include <C2PlatformStorePluginLoader.h>
#include <C2PlatformSupport.h>
#include <codec2/common/HalSelection.h>
#include <cutils/properties.h>
#include <util/C2InterfaceHelper.h>

@@ -447,6 +448,12 @@ C2PlatformAllocatorStore::id_t GetPreferredLinearAllocatorId(int poolMask) {

namespace {

static C2PooledBlockPool::BufferPoolVer GetBufferPoolVer() {
    static C2PooledBlockPool::BufferPoolVer sVer =
        IsCodec2AidlHalSelected() ? C2PooledBlockPool::VER_AIDL2 : C2PooledBlockPool::VER_HIDL;
    return sVer;
}

class _C2BlockPoolCache {
public:
    _C2BlockPoolCache() : mBlockPoolSeqId(C2BlockPool::PLATFORM_START + 1) {}
@@ -477,7 +484,7 @@ private:
                        C2PlatformAllocatorStore::ION, &allocator);
                if (res == C2_OK) {
                    std::shared_ptr<C2BlockPool> ptr(
                            new C2PooledBlockPool(allocator, poolId), deleter);
                            new C2PooledBlockPool(allocator, poolId, GetBufferPoolVer()), deleter);
                    *pool = ptr;
                    mBlockPools[poolId] = ptr;
                    mComponents[poolId].insert(
@@ -490,7 +497,7 @@ private:
                        C2PlatformAllocatorStore::BLOB, &allocator);
                if (res == C2_OK) {
                    std::shared_ptr<C2BlockPool> ptr(
                            new C2PooledBlockPool(allocator, poolId), deleter);
                            new C2PooledBlockPool(allocator, poolId, GetBufferPoolVer()), deleter);
                    *pool = ptr;
                    mBlockPools[poolId] = ptr;
                    mComponents[poolId].insert(
@@ -504,7 +511,7 @@ private:
                        C2AllocatorStore::DEFAULT_GRAPHIC, &allocator);
                if (res == C2_OK) {
                    std::shared_ptr<C2BlockPool> ptr(
                        new C2PooledBlockPool(allocator, poolId), deleter);
                            new C2PooledBlockPool(allocator, poolId, GetBufferPoolVer()), deleter);
                    *pool = ptr;
                    mBlockPools[poolId] = ptr;
                    mComponents[poolId].insert(