Loading media/libstagefright/omx/OMX.cpp +174 −25 Original line number Diff line number Diff line Loading @@ -292,14 +292,26 @@ status_t OMX::freeNode(node_id node) { status_t OMX::sendCommand( node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) { return findInstance(node)->sendCommand(cmd, param); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->sendCommand(cmd, param); } status_t OMX::getParameter( node_id node, OMX_INDEXTYPE index, void *params, size_t size) { ALOGV("getParameter(%u %#x %p %zd)", node, index, params, size); return findInstance(node)->getParameter( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getParameter( index, params, size); } Loading @@ -307,84 +319,162 @@ status_t OMX::setParameter( node_id node, OMX_INDEXTYPE index, const void *params, size_t size) { ALOGV("setParameter(%u %#x %p %zd)", node, index, params, size); return findInstance(node)->setParameter( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setParameter( index, params, size); } status_t OMX::getConfig( node_id node, OMX_INDEXTYPE index, void *params, size_t size) { return findInstance(node)->getConfig( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getConfig( index, params, size); } status_t OMX::setConfig( node_id node, OMX_INDEXTYPE index, const void *params, size_t size) { return findInstance(node)->setConfig( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setConfig( index, params, size); } status_t OMX::getState( node_id node, OMX_STATETYPE* state) { return findInstance(node)->getState( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getState( state); } status_t OMX::enableGraphicBuffers( node_id node, OMX_U32 port_index, OMX_BOOL enable) { return findInstance(node)->enableGraphicBuffers(port_index, enable); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->enableGraphicBuffers(port_index, enable); } status_t OMX::getGraphicBufferUsage( node_id node, OMX_U32 port_index, OMX_U32* usage) { return findInstance(node)->getGraphicBufferUsage(port_index, usage); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getGraphicBufferUsage(port_index, usage); } status_t OMX::storeMetaDataInBuffers( node_id node, OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type) { return findInstance(node)->storeMetaDataInBuffers(port_index, enable, type); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->storeMetaDataInBuffers(port_index, enable, type); } status_t OMX::prepareForAdaptivePlayback( node_id node, OMX_U32 portIndex, OMX_BOOL enable, OMX_U32 maxFrameWidth, OMX_U32 maxFrameHeight) { return findInstance(node)->prepareForAdaptivePlayback( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->prepareForAdaptivePlayback( portIndex, enable, maxFrameWidth, maxFrameHeight); } status_t OMX::configureVideoTunnelMode( node_id node, OMX_U32 portIndex, OMX_BOOL tunneled, OMX_U32 audioHwSync, native_handle_t **sidebandHandle) { return findInstance(node)->configureVideoTunnelMode( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->configureVideoTunnelMode( portIndex, tunneled, audioHwSync, sidebandHandle); } status_t OMX::useBuffer( node_id node, OMX_U32 port_index, const sp<IMemory> ¶ms, buffer_id *buffer, OMX_U32 allottedSize) { return findInstance(node)->useBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->useBuffer( port_index, params, buffer, allottedSize); } status_t OMX::useGraphicBuffer( node_id node, OMX_U32 port_index, const sp<GraphicBuffer> &graphicBuffer, buffer_id *buffer) { return findInstance(node)->useGraphicBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->useGraphicBuffer( port_index, graphicBuffer, buffer); } status_t OMX::updateGraphicBufferInMeta( node_id node, OMX_U32 port_index, const sp<GraphicBuffer> &graphicBuffer, buffer_id buffer) { return findInstance(node)->updateGraphicBufferInMeta( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->updateGraphicBufferInMeta( port_index, graphicBuffer, buffer); } status_t OMX::createInputSurface( node_id node, OMX_U32 port_index, sp<IGraphicBufferProducer> *bufferProducer, MetadataBufferType *type) { return findInstance(node)->createInputSurface( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->createInputSurface( port_index, bufferProducer, type); } Loading @@ -398,35 +488,71 @@ status_t OMX::createPersistentInputSurface( status_t OMX::setInputSurface( node_id node, OMX_U32 port_index, const sp<IGraphicBufferConsumer> &bufferConsumer, MetadataBufferType *type) { return findInstance(node)->setInputSurface(port_index, bufferConsumer, type); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setInputSurface(port_index, bufferConsumer, type); } status_t OMX::signalEndOfInputStream(node_id node) { return findInstance(node)->signalEndOfInputStream(); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->signalEndOfInputStream(); } status_t OMX::allocateBuffer( node_id node, OMX_U32 port_index, size_t size, buffer_id *buffer, void **buffer_data) { return findInstance(node)->allocateBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->allocateBuffer( port_index, size, buffer, buffer_data); } status_t OMX::allocateBufferWithBackup( node_id node, OMX_U32 port_index, const sp<IMemory> ¶ms, buffer_id *buffer, OMX_U32 allottedSize) { return findInstance(node)->allocateBufferWithBackup( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->allocateBufferWithBackup( port_index, params, buffer, allottedSize); } status_t OMX::freeBuffer(node_id node, OMX_U32 port_index, buffer_id buffer) { return findInstance(node)->freeBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->freeBuffer( port_index, buffer); } status_t OMX::fillBuffer(node_id node, buffer_id buffer, int fenceFd) { return findInstance(node)->fillBuffer(buffer, fenceFd); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->fillBuffer(buffer, fenceFd); } status_t OMX::emptyBuffer( Loading @@ -434,7 +560,13 @@ status_t OMX::emptyBuffer( buffer_id buffer, OMX_U32 range_offset, OMX_U32 range_length, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { return findInstance(node)->emptyBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->emptyBuffer( buffer, range_offset, range_length, flags, timestamp, fenceFd); } Loading @@ -442,7 +574,13 @@ status_t OMX::getExtensionIndex( node_id node, const char *parameter_name, OMX_INDEXTYPE *index) { return findInstance(node)->getExtensionIndex( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getExtensionIndex( parameter_name, index); } Loading @@ -452,7 +590,13 @@ status_t OMX::setInternalOption( InternalOptionType type, const void *data, size_t size) { return findInstance(node)->setInternalOption(port_index, type, data, size); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setInternalOption(port_index, type, data, size); } OMX_ERRORTYPE OMX::OnEvent( Loading @@ -462,9 +606,14 @@ OMX_ERRORTYPE OMX::OnEvent( OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { ALOGV("OnEvent(%d, %" PRIu32", %" PRIu32 ")", eEvent, nData1, nData2); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return OMX_ErrorComponentNotFound; } // Forward to OMXNodeInstance. findInstance(node)->onEvent(eEvent, nData1, nData2); instance->onEvent(eEvent, nData1, nData2); sp<OMX::CallbackDispatcher> dispatcher = findDispatcher(node); Loading Loading
media/libstagefright/omx/OMX.cpp +174 −25 Original line number Diff line number Diff line Loading @@ -292,14 +292,26 @@ status_t OMX::freeNode(node_id node) { status_t OMX::sendCommand( node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) { return findInstance(node)->sendCommand(cmd, param); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->sendCommand(cmd, param); } status_t OMX::getParameter( node_id node, OMX_INDEXTYPE index, void *params, size_t size) { ALOGV("getParameter(%u %#x %p %zd)", node, index, params, size); return findInstance(node)->getParameter( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getParameter( index, params, size); } Loading @@ -307,84 +319,162 @@ status_t OMX::setParameter( node_id node, OMX_INDEXTYPE index, const void *params, size_t size) { ALOGV("setParameter(%u %#x %p %zd)", node, index, params, size); return findInstance(node)->setParameter( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setParameter( index, params, size); } status_t OMX::getConfig( node_id node, OMX_INDEXTYPE index, void *params, size_t size) { return findInstance(node)->getConfig( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getConfig( index, params, size); } status_t OMX::setConfig( node_id node, OMX_INDEXTYPE index, const void *params, size_t size) { return findInstance(node)->setConfig( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setConfig( index, params, size); } status_t OMX::getState( node_id node, OMX_STATETYPE* state) { return findInstance(node)->getState( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getState( state); } status_t OMX::enableGraphicBuffers( node_id node, OMX_U32 port_index, OMX_BOOL enable) { return findInstance(node)->enableGraphicBuffers(port_index, enable); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->enableGraphicBuffers(port_index, enable); } status_t OMX::getGraphicBufferUsage( node_id node, OMX_U32 port_index, OMX_U32* usage) { return findInstance(node)->getGraphicBufferUsage(port_index, usage); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getGraphicBufferUsage(port_index, usage); } status_t OMX::storeMetaDataInBuffers( node_id node, OMX_U32 port_index, OMX_BOOL enable, MetadataBufferType *type) { return findInstance(node)->storeMetaDataInBuffers(port_index, enable, type); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->storeMetaDataInBuffers(port_index, enable, type); } status_t OMX::prepareForAdaptivePlayback( node_id node, OMX_U32 portIndex, OMX_BOOL enable, OMX_U32 maxFrameWidth, OMX_U32 maxFrameHeight) { return findInstance(node)->prepareForAdaptivePlayback( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->prepareForAdaptivePlayback( portIndex, enable, maxFrameWidth, maxFrameHeight); } status_t OMX::configureVideoTunnelMode( node_id node, OMX_U32 portIndex, OMX_BOOL tunneled, OMX_U32 audioHwSync, native_handle_t **sidebandHandle) { return findInstance(node)->configureVideoTunnelMode( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->configureVideoTunnelMode( portIndex, tunneled, audioHwSync, sidebandHandle); } status_t OMX::useBuffer( node_id node, OMX_U32 port_index, const sp<IMemory> ¶ms, buffer_id *buffer, OMX_U32 allottedSize) { return findInstance(node)->useBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->useBuffer( port_index, params, buffer, allottedSize); } status_t OMX::useGraphicBuffer( node_id node, OMX_U32 port_index, const sp<GraphicBuffer> &graphicBuffer, buffer_id *buffer) { return findInstance(node)->useGraphicBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->useGraphicBuffer( port_index, graphicBuffer, buffer); } status_t OMX::updateGraphicBufferInMeta( node_id node, OMX_U32 port_index, const sp<GraphicBuffer> &graphicBuffer, buffer_id buffer) { return findInstance(node)->updateGraphicBufferInMeta( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->updateGraphicBufferInMeta( port_index, graphicBuffer, buffer); } status_t OMX::createInputSurface( node_id node, OMX_U32 port_index, sp<IGraphicBufferProducer> *bufferProducer, MetadataBufferType *type) { return findInstance(node)->createInputSurface( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->createInputSurface( port_index, bufferProducer, type); } Loading @@ -398,35 +488,71 @@ status_t OMX::createPersistentInputSurface( status_t OMX::setInputSurface( node_id node, OMX_U32 port_index, const sp<IGraphicBufferConsumer> &bufferConsumer, MetadataBufferType *type) { return findInstance(node)->setInputSurface(port_index, bufferConsumer, type); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setInputSurface(port_index, bufferConsumer, type); } status_t OMX::signalEndOfInputStream(node_id node) { return findInstance(node)->signalEndOfInputStream(); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->signalEndOfInputStream(); } status_t OMX::allocateBuffer( node_id node, OMX_U32 port_index, size_t size, buffer_id *buffer, void **buffer_data) { return findInstance(node)->allocateBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->allocateBuffer( port_index, size, buffer, buffer_data); } status_t OMX::allocateBufferWithBackup( node_id node, OMX_U32 port_index, const sp<IMemory> ¶ms, buffer_id *buffer, OMX_U32 allottedSize) { return findInstance(node)->allocateBufferWithBackup( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->allocateBufferWithBackup( port_index, params, buffer, allottedSize); } status_t OMX::freeBuffer(node_id node, OMX_U32 port_index, buffer_id buffer) { return findInstance(node)->freeBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->freeBuffer( port_index, buffer); } status_t OMX::fillBuffer(node_id node, buffer_id buffer, int fenceFd) { return findInstance(node)->fillBuffer(buffer, fenceFd); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->fillBuffer(buffer, fenceFd); } status_t OMX::emptyBuffer( Loading @@ -434,7 +560,13 @@ status_t OMX::emptyBuffer( buffer_id buffer, OMX_U32 range_offset, OMX_U32 range_length, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { return findInstance(node)->emptyBuffer( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->emptyBuffer( buffer, range_offset, range_length, flags, timestamp, fenceFd); } Loading @@ -442,7 +574,13 @@ status_t OMX::getExtensionIndex( node_id node, const char *parameter_name, OMX_INDEXTYPE *index) { return findInstance(node)->getExtensionIndex( OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->getExtensionIndex( parameter_name, index); } Loading @@ -452,7 +590,13 @@ status_t OMX::setInternalOption( InternalOptionType type, const void *data, size_t size) { return findInstance(node)->setInternalOption(port_index, type, data, size); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return NAME_NOT_FOUND; } return instance->setInternalOption(port_index, type, data, size); } OMX_ERRORTYPE OMX::OnEvent( Loading @@ -462,9 +606,14 @@ OMX_ERRORTYPE OMX::OnEvent( OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { ALOGV("OnEvent(%d, %" PRIu32", %" PRIu32 ")", eEvent, nData1, nData2); OMXNodeInstance *instance = findInstance(node); if (instance == NULL) { return OMX_ErrorComponentNotFound; } // Forward to OMXNodeInstance. findInstance(node)->onEvent(eEvent, nData1, nData2); instance->onEvent(eEvent, nData1, nData2); sp<OMX::CallbackDispatcher> dispatcher = findDispatcher(node); Loading