Loading include/media/IOMX.h +16 −24 Original line number Diff line number Diff line Loading @@ -52,6 +52,20 @@ public: kFenceTimeoutMs = 1000 }; enum PortMode { kPortModePresetStart = 0, kPortModePresetByteBuffer, kPortModePresetANWBuffer, kPortModePresetSecureBuffer, kPortModePresetEnd, kPortModeDynamicStart = 100, kPortModeDynamicANWBuffer, // uses metadata mode kMetadataBufferTypeANWBuffer // or kMetadataBufferTypeGrallocSource kPortModeDynamicNativeHandle, // uses metadata mode kMetadataBufferTypeNativeHandleSource kPortModeDynamicEnd, }; struct ComponentInfo { String8 mName; List<String8> mRoles; Loading Loading @@ -90,10 +104,8 @@ public: virtual status_t setConfig( OMX_INDEXTYPE index, const void *params, size_t size) = 0; // This will set *type to previous metadata buffer type on OMX error (not on binder error), and // new metadata buffer type on success. virtual status_t storeMetaDataInBuffers( OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type = NULL) = 0; virtual status_t setPortMode( OMX_U32 port_index, IOMX::PortMode mode) = 0; virtual status_t prepareForAdaptivePlayback( OMX_U32 portIndex, OMX_BOOL enable, Loading @@ -103,9 +115,6 @@ public: OMX_U32 portIndex, OMX_BOOL tunneled, OMX_U32 audioHwSync, native_handle_t **sidebandHandle) = 0; virtual status_t enableNativeBuffers( OMX_U32 port_index, OMX_BOOL graphic, OMX_BOOL enable) = 0; virtual status_t getGraphicBufferUsage( OMX_U32 port_index, OMX_U32* usage) = 0; Loading Loading @@ -241,23 +250,6 @@ public: uint32_t flags = 0); }; struct CodecProfileLevel { OMX_U32 mProfile; OMX_U32 mLevel; }; inline static const char *asString(MetadataBufferType i, const char *def = "??") { using namespace android; switch (i) { case kMetadataBufferTypeCameraSource: return "CameraSource"; case kMetadataBufferTypeGrallocSource: return "GrallocSource"; case kMetadataBufferTypeANWBuffer: return "ANWBuffer"; case kMetadataBufferTypeNativeHandleSource: return "NativeHandleSource"; case kMetadataBufferTypeInvalid: return "Invalid"; default: return def; } } } // namespace android #endif // ANDROID_IOMX_H_ include/media/OMXBuffer.h +1 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ public: OMXBuffer(const sp<MediaCodecBuffer> &codecBuffer); // Constructs a buffer of type kBufferTypeSharedMem. OMXBuffer(const sp<IMemory> &mem, size_t allottedSize = 0); OMXBuffer(const sp<IMemory> &mem); // Constructs a buffer of type kBufferTypeANWBuffer. OMXBuffer(const sp<GraphicBuffer> &gbuf); Loading Loading @@ -78,7 +78,6 @@ private: // kBufferTypeSharedMem sp<IMemory> mMem; OMX_U32 mAllottedSize; // kBufferTypeANWBuffer sp<GraphicBuffer> mGraphicBuffer; Loading include/media/stagefright/ACodec.h +5 −8 Original line number Diff line number Diff line Loading @@ -277,9 +277,7 @@ private: bool mChannelMaskPresent; int32_t mChannelMask; unsigned mDequeueCounter; MetadataBufferType mInputMetadataType; MetadataBufferType mOutputMetadataType; bool mLegacyAdaptiveExperiment; IOMX::PortMode mPortMode[2]; int32_t mMetadataBuffersToSubmit; size_t mNumUndequeuedBuffers; sp<DataConverter> mConverter[2]; Loading @@ -303,6 +301,7 @@ private: status_t freeBuffer(OMX_U32 portIndex, size_t i); status_t handleSetSurface(const sp<Surface> &surface); status_t setPortMode(int32_t portIndex, IOMX::PortMode mode); status_t setupNativeWindowSizeFormatAndUsage( ANativeWindow *nativeWindow /* nonnull */, int *finalUsage /* nonnull */, bool reconnect); Loading @@ -319,11 +318,11 @@ private: BufferInfo *dequeueBufferFromNativeWindow(); inline bool storingMetadataInDecodedBuffers() { return mOutputMetadataType >= 0 && !mIsEncoder; return (mPortMode[kPortIndexOutput] == IOMX::kPortModeDynamicANWBuffer) && !mIsEncoder; } inline bool usingMetadataOnEncoderOutput() { return mOutputMetadataType >= 0 && mIsEncoder; inline bool usingSecureBufferOnEncoderOutput() { return (mPortMode[kPortIndexOutput] == IOMX::kPortModePresetSecureBuffer) && mIsEncoder; } BufferInfo *findBufferByID( Loading Loading @@ -494,8 +493,6 @@ private: status_t setupErrorCorrectionParameters(); status_t initNativeWindow(); // Returns true iff all buffers on the given port have status // OWNED_BY_US or OWNED_BY_NATIVE_WINDOW. bool allYourBuffersAreBelongToUs(OMX_U32 portIndex); Loading media/libmedia/IOMX.cpp +11 −53 Original line number Diff line number Diff line Loading @@ -37,19 +37,18 @@ enum { CONNECT = IBinder::FIRST_CALL_TRANSACTION, LIST_NODES, ALLOCATE_NODE, CREATE_INPUT_SURFACE, FREE_NODE, SEND_COMMAND, GET_PARAMETER, SET_PARAMETER, GET_CONFIG, SET_CONFIG, ENABLE_NATIVE_BUFFERS, USE_BUFFER, CREATE_INPUT_SURFACE, SET_PORT_MODE, SET_INPUT_SURFACE, STORE_META_DATA_IN_BUFFERS, PREPARE_FOR_ADAPTIVE_PLAYBACK, ALLOC_SECURE_BUFFER, USE_BUFFER, FREE_BUFFER, FILL_BUFFER, EMPTY_BUFFER, Loading Loading @@ -225,17 +224,15 @@ public: return reply.readInt32(); } virtual status_t enableNativeBuffers( OMX_U32 port_index, OMX_BOOL graphic, OMX_BOOL enable) { virtual status_t setPortMode( OMX_U32 port_index, IOMX::PortMode mode) { Parcel data, reply; data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor()); data.writeInt32(port_index); data.writeInt32((uint32_t)graphic); data.writeInt32((uint32_t)enable); remote()->transact(ENABLE_NATIVE_BUFFERS, data, &reply); data.writeInt32(mode); remote()->transact(SET_PORT_MODE, data, &reply); status_t err = reply.readInt32(); return err; return reply.readInt32(); } virtual status_t getGraphicBufferUsage( Loading Loading @@ -294,25 +291,6 @@ public: return err; } virtual status_t storeMetaDataInBuffers( OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type) { Parcel data, reply; data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor()); data.writeInt32(port_index); data.writeInt32((int32_t)enable); data.writeInt32(type == NULL ? kMetadataBufferTypeANWBuffer : *type); remote()->transact(STORE_META_DATA_IN_BUFFERS, data, &reply); // read type even storeMetaDataInBuffers failed int negotiatedType = reply.readInt32(); if (type != NULL) { *type = (MetadataBufferType)negotiatedType; } return reply.readInt32(); } virtual status_t prepareForAdaptivePlayback( OMX_U32 port_index, OMX_BOOL enable, OMX_U32 max_width, OMX_U32 max_height) { Loading Loading @@ -670,16 +648,12 @@ status_t BnOMXNode::onTransact( return NO_ERROR; } case ENABLE_NATIVE_BUFFERS: case SET_PORT_MODE: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); OMX_U32 port_index = data.readInt32(); OMX_BOOL graphic = (OMX_BOOL)data.readInt32(); OMX_BOOL enable = (OMX_BOOL)data.readInt32(); status_t err = enableNativeBuffers(port_index, graphic, enable); reply->writeInt32(err); IOMX::PortMode mode = (IOMX::PortMode) data.readInt32(); reply->writeInt32(setPortMode(port_index, mode)); return NO_ERROR; } Loading Loading @@ -734,22 +708,6 @@ status_t BnOMXNode::onTransact( return NO_ERROR; } case STORE_META_DATA_IN_BUFFERS: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); OMX_U32 port_index = data.readInt32(); OMX_BOOL enable = (OMX_BOOL)data.readInt32(); MetadataBufferType type = (MetadataBufferType)data.readInt32(); status_t err = storeMetaDataInBuffers(port_index, enable, &type); reply->writeInt32(type); reply->writeInt32(err); return NO_ERROR; } case PREPARE_FOR_ADAPTIVE_PLAYBACK: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); Loading media/libmedia/OMXBuffer.cpp +4 −12 Original line number Diff line number Diff line Loading @@ -38,10 +38,9 @@ OMXBuffer::OMXBuffer(const sp<MediaCodecBuffer>& codecBuffer) mRangeLength(codecBuffer != NULL ? codecBuffer->size() : 0) { } OMXBuffer::OMXBuffer(const sp<IMemory> &mem, size_t allottedSize) OMXBuffer::OMXBuffer(const sp<IMemory> &mem) : mBufferType(kBufferTypeSharedMem), mMem(mem), mAllottedSize(allottedSize ? : mem->size()) { mMem(mem) { } OMXBuffer::OMXBuffer(const sp<GraphicBuffer> &gbuf) Loading @@ -68,11 +67,7 @@ status_t OMXBuffer::writeToParcel(Parcel *parcel) const { case kBufferTypeSharedMem: { status_t err = parcel->writeStrongBinder(IInterface::asBinder(mMem)); if (err != NO_ERROR) { return err; } return parcel->writeUint32(mAllottedSize); return parcel->writeStrongBinder(IInterface::asBinder(mMem)); } case kBufferTypeANWBuffer: Loading Loading @@ -103,10 +98,7 @@ status_t OMXBuffer::readFromParcel(const Parcel *parcel) { case kBufferTypeSharedMem: { sp<IMemory> params = interface_cast<IMemory>(parcel->readStrongBinder()); mMem = params; mAllottedSize = parcel->readUint32(); mMem = interface_cast<IMemory>(parcel->readStrongBinder()); break; } Loading Loading
include/media/IOMX.h +16 −24 Original line number Diff line number Diff line Loading @@ -52,6 +52,20 @@ public: kFenceTimeoutMs = 1000 }; enum PortMode { kPortModePresetStart = 0, kPortModePresetByteBuffer, kPortModePresetANWBuffer, kPortModePresetSecureBuffer, kPortModePresetEnd, kPortModeDynamicStart = 100, kPortModeDynamicANWBuffer, // uses metadata mode kMetadataBufferTypeANWBuffer // or kMetadataBufferTypeGrallocSource kPortModeDynamicNativeHandle, // uses metadata mode kMetadataBufferTypeNativeHandleSource kPortModeDynamicEnd, }; struct ComponentInfo { String8 mName; List<String8> mRoles; Loading Loading @@ -90,10 +104,8 @@ public: virtual status_t setConfig( OMX_INDEXTYPE index, const void *params, size_t size) = 0; // This will set *type to previous metadata buffer type on OMX error (not on binder error), and // new metadata buffer type on success. virtual status_t storeMetaDataInBuffers( OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type = NULL) = 0; virtual status_t setPortMode( OMX_U32 port_index, IOMX::PortMode mode) = 0; virtual status_t prepareForAdaptivePlayback( OMX_U32 portIndex, OMX_BOOL enable, Loading @@ -103,9 +115,6 @@ public: OMX_U32 portIndex, OMX_BOOL tunneled, OMX_U32 audioHwSync, native_handle_t **sidebandHandle) = 0; virtual status_t enableNativeBuffers( OMX_U32 port_index, OMX_BOOL graphic, OMX_BOOL enable) = 0; virtual status_t getGraphicBufferUsage( OMX_U32 port_index, OMX_U32* usage) = 0; Loading Loading @@ -241,23 +250,6 @@ public: uint32_t flags = 0); }; struct CodecProfileLevel { OMX_U32 mProfile; OMX_U32 mLevel; }; inline static const char *asString(MetadataBufferType i, const char *def = "??") { using namespace android; switch (i) { case kMetadataBufferTypeCameraSource: return "CameraSource"; case kMetadataBufferTypeGrallocSource: return "GrallocSource"; case kMetadataBufferTypeANWBuffer: return "ANWBuffer"; case kMetadataBufferTypeNativeHandleSource: return "NativeHandleSource"; case kMetadataBufferTypeInvalid: return "Invalid"; default: return def; } } } // namespace android #endif // ANDROID_IOMX_H_
include/media/OMXBuffer.h +1 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ public: OMXBuffer(const sp<MediaCodecBuffer> &codecBuffer); // Constructs a buffer of type kBufferTypeSharedMem. OMXBuffer(const sp<IMemory> &mem, size_t allottedSize = 0); OMXBuffer(const sp<IMemory> &mem); // Constructs a buffer of type kBufferTypeANWBuffer. OMXBuffer(const sp<GraphicBuffer> &gbuf); Loading Loading @@ -78,7 +78,6 @@ private: // kBufferTypeSharedMem sp<IMemory> mMem; OMX_U32 mAllottedSize; // kBufferTypeANWBuffer sp<GraphicBuffer> mGraphicBuffer; Loading
include/media/stagefright/ACodec.h +5 −8 Original line number Diff line number Diff line Loading @@ -277,9 +277,7 @@ private: bool mChannelMaskPresent; int32_t mChannelMask; unsigned mDequeueCounter; MetadataBufferType mInputMetadataType; MetadataBufferType mOutputMetadataType; bool mLegacyAdaptiveExperiment; IOMX::PortMode mPortMode[2]; int32_t mMetadataBuffersToSubmit; size_t mNumUndequeuedBuffers; sp<DataConverter> mConverter[2]; Loading @@ -303,6 +301,7 @@ private: status_t freeBuffer(OMX_U32 portIndex, size_t i); status_t handleSetSurface(const sp<Surface> &surface); status_t setPortMode(int32_t portIndex, IOMX::PortMode mode); status_t setupNativeWindowSizeFormatAndUsage( ANativeWindow *nativeWindow /* nonnull */, int *finalUsage /* nonnull */, bool reconnect); Loading @@ -319,11 +318,11 @@ private: BufferInfo *dequeueBufferFromNativeWindow(); inline bool storingMetadataInDecodedBuffers() { return mOutputMetadataType >= 0 && !mIsEncoder; return (mPortMode[kPortIndexOutput] == IOMX::kPortModeDynamicANWBuffer) && !mIsEncoder; } inline bool usingMetadataOnEncoderOutput() { return mOutputMetadataType >= 0 && mIsEncoder; inline bool usingSecureBufferOnEncoderOutput() { return (mPortMode[kPortIndexOutput] == IOMX::kPortModePresetSecureBuffer) && mIsEncoder; } BufferInfo *findBufferByID( Loading Loading @@ -494,8 +493,6 @@ private: status_t setupErrorCorrectionParameters(); status_t initNativeWindow(); // Returns true iff all buffers on the given port have status // OWNED_BY_US or OWNED_BY_NATIVE_WINDOW. bool allYourBuffersAreBelongToUs(OMX_U32 portIndex); Loading
media/libmedia/IOMX.cpp +11 −53 Original line number Diff line number Diff line Loading @@ -37,19 +37,18 @@ enum { CONNECT = IBinder::FIRST_CALL_TRANSACTION, LIST_NODES, ALLOCATE_NODE, CREATE_INPUT_SURFACE, FREE_NODE, SEND_COMMAND, GET_PARAMETER, SET_PARAMETER, GET_CONFIG, SET_CONFIG, ENABLE_NATIVE_BUFFERS, USE_BUFFER, CREATE_INPUT_SURFACE, SET_PORT_MODE, SET_INPUT_SURFACE, STORE_META_DATA_IN_BUFFERS, PREPARE_FOR_ADAPTIVE_PLAYBACK, ALLOC_SECURE_BUFFER, USE_BUFFER, FREE_BUFFER, FILL_BUFFER, EMPTY_BUFFER, Loading Loading @@ -225,17 +224,15 @@ public: return reply.readInt32(); } virtual status_t enableNativeBuffers( OMX_U32 port_index, OMX_BOOL graphic, OMX_BOOL enable) { virtual status_t setPortMode( OMX_U32 port_index, IOMX::PortMode mode) { Parcel data, reply; data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor()); data.writeInt32(port_index); data.writeInt32((uint32_t)graphic); data.writeInt32((uint32_t)enable); remote()->transact(ENABLE_NATIVE_BUFFERS, data, &reply); data.writeInt32(mode); remote()->transact(SET_PORT_MODE, data, &reply); status_t err = reply.readInt32(); return err; return reply.readInt32(); } virtual status_t getGraphicBufferUsage( Loading Loading @@ -294,25 +291,6 @@ public: return err; } virtual status_t storeMetaDataInBuffers( OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type) { Parcel data, reply; data.writeInterfaceToken(IOMXNode::getInterfaceDescriptor()); data.writeInt32(port_index); data.writeInt32((int32_t)enable); data.writeInt32(type == NULL ? kMetadataBufferTypeANWBuffer : *type); remote()->transact(STORE_META_DATA_IN_BUFFERS, data, &reply); // read type even storeMetaDataInBuffers failed int negotiatedType = reply.readInt32(); if (type != NULL) { *type = (MetadataBufferType)negotiatedType; } return reply.readInt32(); } virtual status_t prepareForAdaptivePlayback( OMX_U32 port_index, OMX_BOOL enable, OMX_U32 max_width, OMX_U32 max_height) { Loading Loading @@ -670,16 +648,12 @@ status_t BnOMXNode::onTransact( return NO_ERROR; } case ENABLE_NATIVE_BUFFERS: case SET_PORT_MODE: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); OMX_U32 port_index = data.readInt32(); OMX_BOOL graphic = (OMX_BOOL)data.readInt32(); OMX_BOOL enable = (OMX_BOOL)data.readInt32(); status_t err = enableNativeBuffers(port_index, graphic, enable); reply->writeInt32(err); IOMX::PortMode mode = (IOMX::PortMode) data.readInt32(); reply->writeInt32(setPortMode(port_index, mode)); return NO_ERROR; } Loading Loading @@ -734,22 +708,6 @@ status_t BnOMXNode::onTransact( return NO_ERROR; } case STORE_META_DATA_IN_BUFFERS: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); OMX_U32 port_index = data.readInt32(); OMX_BOOL enable = (OMX_BOOL)data.readInt32(); MetadataBufferType type = (MetadataBufferType)data.readInt32(); status_t err = storeMetaDataInBuffers(port_index, enable, &type); reply->writeInt32(type); reply->writeInt32(err); return NO_ERROR; } case PREPARE_FOR_ADAPTIVE_PLAYBACK: { CHECK_OMX_INTERFACE(IOMXNode, data, reply); Loading
media/libmedia/OMXBuffer.cpp +4 −12 Original line number Diff line number Diff line Loading @@ -38,10 +38,9 @@ OMXBuffer::OMXBuffer(const sp<MediaCodecBuffer>& codecBuffer) mRangeLength(codecBuffer != NULL ? codecBuffer->size() : 0) { } OMXBuffer::OMXBuffer(const sp<IMemory> &mem, size_t allottedSize) OMXBuffer::OMXBuffer(const sp<IMemory> &mem) : mBufferType(kBufferTypeSharedMem), mMem(mem), mAllottedSize(allottedSize ? : mem->size()) { mMem(mem) { } OMXBuffer::OMXBuffer(const sp<GraphicBuffer> &gbuf) Loading @@ -68,11 +67,7 @@ status_t OMXBuffer::writeToParcel(Parcel *parcel) const { case kBufferTypeSharedMem: { status_t err = parcel->writeStrongBinder(IInterface::asBinder(mMem)); if (err != NO_ERROR) { return err; } return parcel->writeUint32(mAllottedSize); return parcel->writeStrongBinder(IInterface::asBinder(mMem)); } case kBufferTypeANWBuffer: Loading Loading @@ -103,10 +98,7 @@ status_t OMXBuffer::readFromParcel(const Parcel *parcel) { case kBufferTypeSharedMem: { sp<IMemory> params = interface_cast<IMemory>(parcel->readStrongBinder()); mMem = params; mAllottedSize = parcel->readUint32(); mMem = interface_cast<IMemory>(parcel->readStrongBinder()); break; } Loading