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

Commit 94b608f2 authored by David Stevens's avatar David Stevens
Browse files

CCodec: add missing use of input stream usage

Add the component's input stream usage flags to two input buffer
allocation sites where it was missing.

Bug: 194634369, Bug: 194634017
Test: MediaDrmClearkeyTest#testClearKeyPlaybackCenc on ARCVM w/5.10
Test: DashTest#testWidevine23FpsH264Fixed on ARCVM w/5.10
Change-Id: Idc1817789d472b75f2872c5c269efc1264d05b1b
parent 0b27f196
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ namespace android {

namespace {

sp<GraphicBlockBuffer> AllocateGraphicBuffer(
sp<GraphicBlockBuffer> AllocateInputGraphicBuffer(
        const std::shared_ptr<C2BlockPool> &pool,
        const sp<AMessage> &format,
        uint32_t pixelFormat,
@@ -45,9 +45,13 @@ sp<GraphicBlockBuffer> AllocateGraphicBuffer(
        return nullptr;
    }

    int64_t usageValue = 0;
    (void)format->findInt64("android._C2MemoryUsage", &usageValue);
    C2MemoryUsage fullUsage{usageValue | usage.expected};

    std::shared_ptr<C2GraphicBlock> block;
    c2_status_t err = pool->fetchGraphicBlock(
            width, height, pixelFormat, usage, &block);
            width, height, pixelFormat, fullUsage, &block);
    if (err != C2_OK) {
        ALOGD("fetch graphic block failed: %d", err);
        return nullptr;
@@ -884,6 +888,10 @@ sp<Codec2Buffer> EncryptedLinearInputBuffers::Alloc(
        return nullptr;
    }

    int64_t usageValue = 0;
    (void)format->findInt64("android._C2MemoryUsage", &usageValue);
    usage = C2MemoryUsage(usage.expected | usageValue);

    std::shared_ptr<C2LinearBlock> block;
    c2_status_t err = pool->fetchLinearBlock(capacity, usage, &block);
    if (err != C2_OK || block == nullptr) {
@@ -1028,7 +1036,7 @@ std::unique_ptr<InputBuffers> GraphicInputBuffers::toArrayMode(size_t size) {
            [pool = mPool, format = mFormat, lbp = mLocalBufferPool, pixelFormat]()
                    -> sp<Codec2Buffer> {
                C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
                return AllocateGraphicBuffer(
                return AllocateInputGraphicBuffer(
                        pool, format, pixelFormat, usage, lbp);
            });
    return std::move(array);
@@ -1039,10 +1047,8 @@ size_t GraphicInputBuffers::numActiveSlots() const {
}

sp<Codec2Buffer> GraphicInputBuffers::createNewBuffer() {
    int64_t usageValue = 0;
    (void)mFormat->findInt64("android._C2MemoryUsage", &usageValue);
    C2MemoryUsage usage{usageValue | C2MemoryUsage::CPU_READ | C2MemoryUsage::CPU_WRITE};
    return AllocateGraphicBuffer(
    C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
    return AllocateInputGraphicBuffer(
            mPool, mFormat, extractPixelFormat(mFormat), usage, mLocalBufferPool);
}