diff options
author | Praveen Chavan <pchavan@codeaurora.org> | 2015-04-30 20:43:53 -0700 |
---|---|---|
committer | Ronghua Wu <ronghuawu@google.com> | 2015-05-05 10:50:29 -0700 |
commit | fafcc219184223ab584eac3b03ee807e2798207a (patch) | |
tree | 5d2f0e127fa6721ac093c9d8b3dd936fd8a08267 /media | |
parent | dae24729d0b3ced8c4a7d7f9b631e852f564db4f (diff) | |
download | frameworks_av-fafcc219184223ab584eac3b03ee807e2798207a.zip frameworks_av-fafcc219184223ab584eac3b03ee807e2798207a.tar.gz frameworks_av-fafcc219184223ab584eac3b03ee807e2798207a.tar.bz2 |
Stagefright: propagate InsufficientResources error
Propagate OMX_ErrorInsufficientResources when handling
node-allocation failure any other error from the component.
bug: 20132289
Change-Id: I1ed9626dab947227e3d5e983bbbeee89ad7b2d2a
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/include/OMXNodeInstance.h | 2 | ||||
-rw-r--r-- | media/libstagefright/omx/OMX.cpp | 5 | ||||
-rw-r--r-- | media/libstagefright/omx/OMXNodeInstance.cpp | 4 |
3 files changed, 8 insertions, 3 deletions
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<IOMXObserver> &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 <OMX_AsString.h> #include <OMX_Component.h> 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; } |