From fafcc219184223ab584eac3b03ee807e2798207a Mon Sep 17 00:00:00 2001 From: Praveen Chavan Date: Thu, 30 Apr 2015 20:43:53 -0700 Subject: Stagefright: propagate InsufficientResources error Propagate OMX_ErrorInsufficientResources when handling node-allocation failure any other error from the component. bug: 20132289 Change-Id: I1ed9626dab947227e3d5e983bbbeee89ad7b2d2a --- media/libstagefright/include/OMXNodeInstance.h | 2 ++ media/libstagefright/omx/OMX.cpp | 5 +++-- media/libstagefright/omx/OMXNodeInstance.cpp | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'media') diff --git a/media/libstagefright/include/OMXNodeInstance.h b/media/libstagefright/include/OMXNodeInstance.h index d87b408..3dff9d8 100644 --- a/media/libstagefright/include/OMXNodeInstance.h +++ b/media/libstagefright/include/OMXNodeInstance.h @@ -29,6 +29,8 @@ class IOMXObserver; struct OMXMaster; class GraphicBufferSource; +status_t StatusFromOMXError(OMX_ERRORTYPE err); + struct OMXNodeInstance { OMXNodeInstance( OMX *owner, const sp &observer, const char *name); diff --git a/media/libstagefright/omx/OMX.cpp b/media/libstagefright/omx/OMX.cpp index f8d38ff..3cae06f 100644 --- a/media/libstagefright/omx/OMX.cpp +++ b/media/libstagefright/omx/OMX.cpp @@ -32,6 +32,7 @@ #include "OMXMaster.h" +#include #include namespace android { @@ -233,11 +234,11 @@ status_t OMX::allocateNode( instance, &handle); if (err != OMX_ErrorNone) { - ALOGE("FAILED to allocate omx component '%s'", name); + ALOGE("FAILED to allocate omx component '%s' err=%s(%#x)", name, asString(err), err); instance->onGetHandleFailed(); - return UNKNOWN_ERROR; + return StatusFromOMXError(err); } *node = makeNodeID(instance); diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp index 4779d6a..f381d07 100644 --- a/media/libstagefright/omx/OMXNodeInstance.cpp +++ b/media/libstagefright/omx/OMXNodeInstance.cpp @@ -220,13 +220,15 @@ OMX::node_id OMXNodeInstance::nodeID() { return mNodeID; } -static status_t StatusFromOMXError(OMX_ERRORTYPE err) { +status_t StatusFromOMXError(OMX_ERRORTYPE err) { switch (err) { case OMX_ErrorNone: return OK; case OMX_ErrorUnsupportedSetting: case OMX_ErrorUnsupportedIndex: return ERROR_UNSUPPORTED; + case OMX_ErrorInsufficientResources: + return NO_MEMORY; default: return UNKNOWN_ERROR; } -- cgit v1.1