summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorPraveen Chavan <pchavan@codeaurora.org>2015-04-30 20:43:53 -0700
committerRonghua Wu <ronghuawu@google.com>2015-05-05 10:50:29 -0700
commitfafcc219184223ab584eac3b03ee807e2798207a (patch)
tree5d2f0e127fa6721ac093c9d8b3dd936fd8a08267 /media
parentdae24729d0b3ced8c4a7d7f9b631e852f564db4f (diff)
downloadframeworks_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.h2
-rw-r--r--media/libstagefright/omx/OMX.cpp5
-rw-r--r--media/libstagefright/omx/OMXNodeInstance.cpp4
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;
}