diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-06-01 21:23:20 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-01 21:23:21 +0000 |
commit | 14b1d41f778fe86cacdb91a929f658cecae83d49 (patch) | |
tree | fc51f08b98224031083aad783fe5ddf4faebf1c4 /videocodec/OMXVideoDecoderVP8.cpp | |
parent | 315fcbb35ef1f355db2f761408c0a22e47ca8222 (diff) | |
parent | f832fbe64172f3dcde2bf8d7f960375efd8a30d9 (diff) | |
download | android_hardware_intel_common_omx-components-14b1d41f778fe86cacdb91a929f658cecae83d49.tar.gz android_hardware_intel_common_omx-components-14b1d41f778fe86cacdb91a929f658cecae83d49.tar.bz2 android_hardware_intel_common_omx-components-14b1d41f778fe86cacdb91a929f658cecae83d49.zip |
Merge "omx-component: Adding media resource management support for each codec." into mnc-dev
Diffstat (limited to 'videocodec/OMXVideoDecoderVP8.cpp')
-rw-r--r-- | videocodec/OMXVideoDecoderVP8.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/videocodec/OMXVideoDecoderVP8.cpp b/videocodec/OMXVideoDecoderVP8.cpp index 013bf8b..1dad3ae 100644 --- a/videocodec/OMXVideoDecoderVP8.cpp +++ b/videocodec/OMXVideoDecoderVP8.cpp @@ -22,6 +22,10 @@ // Be sure to have an equal string in VideoDecoderHost.cpp (libmix) static const char* VP8_MIME_TYPE = "video/x-vnd.on2.vp8"; +// codec number limitation +#define INSTANCE_LIMITATION 4 +static int gInstanceNumber = 0; + OMXVideoDecoderVP8::OMXVideoDecoderVP8() { LOGV("OMXVideoDecoderVP8 is constructed."); mVideoDecoder = createVideoDecoder(VP8_MIME_TYPE); @@ -34,6 +38,7 @@ OMXVideoDecoderVP8::OMXVideoDecoderVP8() { } OMXVideoDecoderVP8::~OMXVideoDecoderVP8() { + gInstanceNumber --; LOGV("OMXVideoDecoderVP8 is destructed."); } @@ -128,6 +133,26 @@ OMX_ERRORTYPE OMXVideoDecoderVP8::SetMaxOutputBufferCount(OMX_PARAM_PORTDEFINITI p->nBufferCountActual = OUTPORT_NATIVE_BUFFER_COUNT; return OMXVideoDecoderBase::SetMaxOutputBufferCount(p); } -DECLARE_OMX_COMPONENT("OMX.Intel.VideoDecoder.VP8", "video_decoder.vp8", OMXVideoDecoderVP8); +#define DECLARE_OMX_COMPONENT_VP8(NAME, ROLE, CLASS) \ + static const char *gName = (const char *)(NAME);\ + static const char *gRole = (const char *)(ROLE);\ + OMX_ERRORTYPE CreateInstance(OMX_PTR *instance) {\ + *instance = NULL;\ + if (gInstanceNumber + 1 > INSTANCE_LIMITATION) {\ + return OMX_ErrorInsufficientResources;\ + } else {\ + gInstanceNumber ++;\ + }\ + ComponentBase *inst = new CLASS;\ + if (!inst) {\ + return OMX_ErrorInsufficientResources;\ + }\ + *instance = inst;\ + return OMX_ErrorNone;\ + }\ + struct wrs_omxil_cmodule_ops_s gOps = {CreateInstance};\ + struct wrs_omxil_cmodule_s WRS_OMXIL_CMODULE_SYMBOL = {gName, &gRole, 1, &gOps}; + +DECLARE_OMX_COMPONENT_VP8("OMX.Intel.VideoDecoder.VP8", "video_decoder.vp8", OMXVideoDecoderVP8); |