Loading include/media/OMXBuffer.h +17 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <media/IOMX.h> #include <system/window.h> #include <utils/StrongPointer.h> #include <hidl/HidlSupport.h> namespace android { Loading @@ -42,6 +43,7 @@ class IMemory; class MediaCodecBuffer; class NativeHandle; struct OMXNodeInstance; using hardware::hidl_memory; // TODO: After complete HIDL transition, this class would be replaced by // CodecBuffer. Loading @@ -54,10 +56,15 @@ public: // Default constructor, constructs a buffer of type kBufferTypeInvalid. OMXBuffer(); // Constructs a buffer of type kBufferTypePreset with mRangeLength set to // |codecBuffer|'s size (or 0 if |codecBuffer| is NULL). // Constructs a buffer of type kBufferTypePreset with mRangeOffset set to // |codecBuffer|'s offset and mRangeLength set to |codecBuffer|'s size (or 0 // if |codecBuffer| is NULL). OMXBuffer(const sp<MediaCodecBuffer> &codecBuffer); // Constructs a buffer of type kBufferTypePreset with specified mRangeOffset // and mRangeLength. OMXBuffer(OMX_U32 rangeOffset, OMX_U32 rangeLength); // Constructs a buffer of type kBufferTypeSharedMem. OMXBuffer(const sp<IMemory> &mem); Loading @@ -67,6 +74,9 @@ public: // Constructs a buffer of type kBufferTypeNativeHandle. OMXBuffer(const sp<NativeHandle> &handle); // Constructs a buffer of type kBufferTypeHidlMemory. OMXBuffer(const hidl_memory &hidlMemory); // Parcelling/Un-parcelling. status_t writeToParcel(Parcel *parcel) const; status_t readFromParcel(const Parcel *parcel); Loading @@ -88,8 +98,9 @@ private: kBufferTypeInvalid = 0, kBufferTypePreset, kBufferTypeSharedMem, kBufferTypeANWBuffer, kBufferTypeANWBuffer, // Use only for non-Treble kBufferTypeNativeHandle, kBufferTypeHidlMemory // Mapped to CodecBuffer::Type::SHARED_MEM. }; BufferType mBufferType; Loading @@ -109,6 +120,9 @@ private: // kBufferTypeNativeHandle sp<NativeHandle> mNativeHandle; // kBufferTypeHidlMemory hidl_memory mHidlMemory; // Move assignment OMXBuffer &operator=(OMXBuffer&&); Loading media/libmedia/Android.mk +4 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,8 @@ LOCAL_SHARED_LIBRARIES := \ libui liblog libcutils libutils libbinder libsonivox libicuuc libicui18n libexpat \ libcamera_client libstagefright_foundation \ libgui libdl libaudioutils libaudioclient \ libmedia_helper libmedia_helper \ libhidlbase \ LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder libsonivox Loading @@ -72,6 +73,7 @@ LOCAL_MODULE:= libmedia LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(TOP)/system/libhidl/base/include \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/frameworks/av/include/media/ \ $(TOP)/frameworks/av/media/libstagefright \ Loading media/libmedia/OMXBuffer.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "OMXBuffer" #include <media/stagefright/foundation/ADebug.h> #include <media/MediaCodecBuffer.h> #include <media/OMXBuffer.h> #include <binder/IMemory.h> Loading @@ -39,6 +40,12 @@ OMXBuffer::OMXBuffer(const sp<MediaCodecBuffer>& codecBuffer) mRangeLength(codecBuffer != NULL ? codecBuffer->size() : 0) { } OMXBuffer::OMXBuffer(OMX_U32 rangeOffset, OMX_U32 rangeLength) : mBufferType(kBufferTypePreset), mRangeOffset(rangeOffset), mRangeLength(rangeLength) { } OMXBuffer::OMXBuffer(const sp<IMemory> &mem) : mBufferType(kBufferTypeSharedMem), mMem(mem) { Loading @@ -54,10 +61,16 @@ OMXBuffer::OMXBuffer(const sp<NativeHandle> &handle) mNativeHandle(handle) { } OMXBuffer::OMXBuffer(const hidl_memory &hidlMemory) : mBufferType(kBufferTypeHidlMemory), mHidlMemory(hidlMemory) { } OMXBuffer::~OMXBuffer() { } status_t OMXBuffer::writeToParcel(Parcel *parcel) const { CHECK(mBufferType != kBufferTypeHidlMemory); parcel->writeInt32(mBufferType); switch(mBufferType) { Loading Loading @@ -93,6 +106,7 @@ status_t OMXBuffer::writeToParcel(Parcel *parcel) const { status_t OMXBuffer::readFromParcel(const Parcel *parcel) { BufferType bufferType = (BufferType) parcel->readInt32(); CHECK(bufferType != kBufferTypeHidlMemory); switch(bufferType) { case kBufferTypePreset: Loading Loading @@ -147,10 +161,12 @@ status_t OMXBuffer::readFromParcel(const Parcel *parcel) { OMXBuffer& OMXBuffer::operator=(OMXBuffer&& source) { mBufferType = std::move(source.mBufferType); mRangeOffset = std::move(source.mRangeOffset); mRangeLength = std::move(source.mRangeLength); mMem = std::move(source.mMem); mGraphicBuffer = std::move(source.mGraphicBuffer); mNativeHandle = std::move(source.mNativeHandle); mHidlMemory = source.mHidlMemory; // TODO(b/34093434): Use move when available return *this; } Loading media/libstagefright/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ LOCAL_SHARED_LIBRARIES += \ libstagefright_foundation \ libdl \ libRScpp \ libhidlbase \ LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libmedia Loading media/libstagefright/include/OMXNodeInstance.h +4 −1 Original line number Diff line number Diff line Loading @@ -27,11 +27,14 @@ #include <utils/SortedVector.h> #include "OmxNodeOwner.h" #include <android/hidl/memory/1.0/IMemory.h> namespace android { class IOMXBufferSource; class IOMXObserver; struct OMXMaster; class OMXBuffer; typedef hidl::memory::V1_0::IMemory IHidlMemory; struct OMXNodeInstance : public BnOMXNode { OMXNodeInstance( Loading Loading @@ -184,7 +187,7 @@ private: status_t useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, IOMX::buffer_id *buffer); const sp<IHidlMemory> &hParams, IOMX::buffer_id *buffer); status_t useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, Loading Loading
include/media/OMXBuffer.h +17 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <media/IOMX.h> #include <system/window.h> #include <utils/StrongPointer.h> #include <hidl/HidlSupport.h> namespace android { Loading @@ -42,6 +43,7 @@ class IMemory; class MediaCodecBuffer; class NativeHandle; struct OMXNodeInstance; using hardware::hidl_memory; // TODO: After complete HIDL transition, this class would be replaced by // CodecBuffer. Loading @@ -54,10 +56,15 @@ public: // Default constructor, constructs a buffer of type kBufferTypeInvalid. OMXBuffer(); // Constructs a buffer of type kBufferTypePreset with mRangeLength set to // |codecBuffer|'s size (or 0 if |codecBuffer| is NULL). // Constructs a buffer of type kBufferTypePreset with mRangeOffset set to // |codecBuffer|'s offset and mRangeLength set to |codecBuffer|'s size (or 0 // if |codecBuffer| is NULL). OMXBuffer(const sp<MediaCodecBuffer> &codecBuffer); // Constructs a buffer of type kBufferTypePreset with specified mRangeOffset // and mRangeLength. OMXBuffer(OMX_U32 rangeOffset, OMX_U32 rangeLength); // Constructs a buffer of type kBufferTypeSharedMem. OMXBuffer(const sp<IMemory> &mem); Loading @@ -67,6 +74,9 @@ public: // Constructs a buffer of type kBufferTypeNativeHandle. OMXBuffer(const sp<NativeHandle> &handle); // Constructs a buffer of type kBufferTypeHidlMemory. OMXBuffer(const hidl_memory &hidlMemory); // Parcelling/Un-parcelling. status_t writeToParcel(Parcel *parcel) const; status_t readFromParcel(const Parcel *parcel); Loading @@ -88,8 +98,9 @@ private: kBufferTypeInvalid = 0, kBufferTypePreset, kBufferTypeSharedMem, kBufferTypeANWBuffer, kBufferTypeANWBuffer, // Use only for non-Treble kBufferTypeNativeHandle, kBufferTypeHidlMemory // Mapped to CodecBuffer::Type::SHARED_MEM. }; BufferType mBufferType; Loading @@ -109,6 +120,9 @@ private: // kBufferTypeNativeHandle sp<NativeHandle> mNativeHandle; // kBufferTypeHidlMemory hidl_memory mHidlMemory; // Move assignment OMXBuffer &operator=(OMXBuffer&&); Loading
media/libmedia/Android.mk +4 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,8 @@ LOCAL_SHARED_LIBRARIES := \ libui liblog libcutils libutils libbinder libsonivox libicuuc libicui18n libexpat \ libcamera_client libstagefright_foundation \ libgui libdl libaudioutils libaudioclient \ libmedia_helper libmedia_helper \ libhidlbase \ LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder libsonivox Loading @@ -72,6 +73,7 @@ LOCAL_MODULE:= libmedia LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(TOP)/system/libhidl/base/include \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/frameworks/av/include/media/ \ $(TOP)/frameworks/av/media/libstagefright \ Loading
media/libmedia/OMXBuffer.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "OMXBuffer" #include <media/stagefright/foundation/ADebug.h> #include <media/MediaCodecBuffer.h> #include <media/OMXBuffer.h> #include <binder/IMemory.h> Loading @@ -39,6 +40,12 @@ OMXBuffer::OMXBuffer(const sp<MediaCodecBuffer>& codecBuffer) mRangeLength(codecBuffer != NULL ? codecBuffer->size() : 0) { } OMXBuffer::OMXBuffer(OMX_U32 rangeOffset, OMX_U32 rangeLength) : mBufferType(kBufferTypePreset), mRangeOffset(rangeOffset), mRangeLength(rangeLength) { } OMXBuffer::OMXBuffer(const sp<IMemory> &mem) : mBufferType(kBufferTypeSharedMem), mMem(mem) { Loading @@ -54,10 +61,16 @@ OMXBuffer::OMXBuffer(const sp<NativeHandle> &handle) mNativeHandle(handle) { } OMXBuffer::OMXBuffer(const hidl_memory &hidlMemory) : mBufferType(kBufferTypeHidlMemory), mHidlMemory(hidlMemory) { } OMXBuffer::~OMXBuffer() { } status_t OMXBuffer::writeToParcel(Parcel *parcel) const { CHECK(mBufferType != kBufferTypeHidlMemory); parcel->writeInt32(mBufferType); switch(mBufferType) { Loading Loading @@ -93,6 +106,7 @@ status_t OMXBuffer::writeToParcel(Parcel *parcel) const { status_t OMXBuffer::readFromParcel(const Parcel *parcel) { BufferType bufferType = (BufferType) parcel->readInt32(); CHECK(bufferType != kBufferTypeHidlMemory); switch(bufferType) { case kBufferTypePreset: Loading Loading @@ -147,10 +161,12 @@ status_t OMXBuffer::readFromParcel(const Parcel *parcel) { OMXBuffer& OMXBuffer::operator=(OMXBuffer&& source) { mBufferType = std::move(source.mBufferType); mRangeOffset = std::move(source.mRangeOffset); mRangeLength = std::move(source.mRangeLength); mMem = std::move(source.mMem); mGraphicBuffer = std::move(source.mGraphicBuffer); mNativeHandle = std::move(source.mNativeHandle); mHidlMemory = source.mHidlMemory; // TODO(b/34093434): Use move when available return *this; } Loading
media/libstagefright/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ LOCAL_SHARED_LIBRARIES += \ libstagefright_foundation \ libdl \ libRScpp \ libhidlbase \ LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libmedia Loading
media/libstagefright/include/OMXNodeInstance.h +4 −1 Original line number Diff line number Diff line Loading @@ -27,11 +27,14 @@ #include <utils/SortedVector.h> #include "OmxNodeOwner.h" #include <android/hidl/memory/1.0/IMemory.h> namespace android { class IOMXBufferSource; class IOMXObserver; struct OMXMaster; class OMXBuffer; typedef hidl::memory::V1_0::IMemory IHidlMemory; struct OMXNodeInstance : public BnOMXNode { OMXNodeInstance( Loading Loading @@ -184,7 +187,7 @@ private: status_t useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, IOMX::buffer_id *buffer); const sp<IHidlMemory> &hParams, IOMX::buffer_id *buffer); status_t useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, Loading