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

Commit 25070a91 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "MediaCas: use HidlMemory to avoid handle leaks"

parents 8562a00e 58ddee30
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ cc_library_shared {
        "libbinder",
        "libcrypto",
        "libcutils",
        "libhidlallocatorutils",
        "libhidlbase",
        "liblog",
        "libmediaextractor",
+5 −6
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

#include <android/hardware/cas/native/1.0/IDescrambler.h>
#include <binder/MemoryDealer.h>
#include <hidlmemory/FrameworkUtils.h>
#include <media/openmax/OMX_Core.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/AUtils.h>
@@ -34,6 +35,7 @@
#include "include/SharedMemoryBuffer.h"

namespace android {
using hardware::fromHeap;
using hardware::hidl_handle;
using hardware::hidl_string;
using hardware::hidl_vec;
@@ -162,7 +164,7 @@ status_t ACodecBufferChannel::queueSecureInputBuffer(
        size_t size;
        it->mSharedEncryptedBuffer->getMemory(&offset, &size);
        hardware::cas::native::V1_0::SharedBuffer srcBuffer = {
                .heapBase = mHidlMemory,
                .heapBase = *mHidlMemory,
                .offset = (uint64_t) offset,
                .size = size
        };
@@ -308,11 +310,8 @@ sp<MemoryDealer> ACodecBufferChannel::makeMemoryDealer(size_t heapSize) {
        }
    } else if (mDescrambler != nullptr) {
        sp<IMemoryHeap> heap = dealer->getMemoryHeap();
        native_handle_t* nativeHandle = native_handle_create(1, 0);
        if (nativeHandle != nullptr) {
            int fd = heap->getHeapID();
            nativeHandle->data[0] = fd;
            mHidlMemory = hidl_memory("ashmem", hidl_handle(nativeHandle), heap->getSize());
        mHidlMemory = fromHeap(heap);
        if (mHidlMemory != NULL) {
            ALOGV("created hidl_memory for descrambler");
        } else {
            ALOGE("failed to create hidl_memory for descrambler");
+1 −0
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ cc_library_shared {
        "libstagefright_xmlparser",
        "libdl",
        "libRScpp",
        "libhidlallocatorutils",
        "libhidlbase",
        "libhidlmemory",
        // TODO: Remove libv4l2_c2_componentstore.
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ cc_library {
        "libstagefright",
        "libstagefright_foundation",
        "libutils",
        "libhidlallocatorutils",
        "libhidlbase",
        "android.hardware.cas@1.0",
        "android.hardware.cas.native@1.0",
+5 −3
Original line number Diff line number Diff line
@@ -29,8 +29,10 @@
#include <media/IOMX.h>

namespace android {

using hardware::hidl_memory;
namespace hardware {
class HidlMemory;
};
using hardware::HidlMemory;

/**
 * BufferChannelBase implementation for ACodec.
@@ -119,7 +121,7 @@ private:
    sp<MemoryDealer> mDealer;
    sp<IMemory> mDecryptDestination;
    int32_t mHeapSeqNum;
    hidl_memory mHidlMemory;
    sp<HidlMemory> mHidlMemory;

    // These should only be accessed via std::atomic_* functions.
    //
Loading