1bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber/* 2bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * Copyright (C) 2011 The Android Open Source Project 3bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * 4bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * you may not use this file except in compliance with the License. 6bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * You may obtain a copy of the License at 7bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * 8bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * 10bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * Unless required by applicable law or agreed to in writing, software 11bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * See the License for the specific language governing permissions and 14bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber * limitations under the License. 15bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber */ 16bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 17bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber//#define LOG_NDEBUG 0 18bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber#define LOG_TAG "SoftOMXComponent" 19bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber#include <utils/Log.h> 20bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 21bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber#include "include/SoftOMXComponent.h" 22bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 23bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber#include <media/stagefright/foundation/ADebug.h> 24bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 25bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubernamespace android { 26bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 27bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberSoftOMXComponent::SoftOMXComponent( 28bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber const char *name, 29bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber const OMX_CALLBACKTYPE *callbacks, 30bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR appData, 31bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_COMPONENTTYPE **component) 32bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber : mName(name), 33bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mCallbacks(callbacks), 34bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent(new OMX_COMPONENTTYPE), 35bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mLibHandle(NULL) { 36bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->nSize = sizeof(*mComponent); 37bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->nVersion.s.nVersionMajor = 1; 38bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->nVersion.s.nVersionMinor = 0; 39bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->nVersion.s.nRevision = 0; 40bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->nVersion.s.nStep = 0; 41bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->pComponentPrivate = this; 42bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->pApplicationPrivate = appData; 43bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 44bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->GetComponentVersion = NULL; 45bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->SendCommand = SendCommandWrapper; 46bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->GetParameter = GetParameterWrapper; 47bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->SetParameter = SetParameterWrapper; 48bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->GetConfig = GetConfigWrapper; 49bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->SetConfig = SetConfigWrapper; 50bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->GetExtensionIndex = GetExtensionIndexWrapper; 51bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->GetState = GetStateWrapper; 52bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->ComponentTunnelRequest = NULL; 53bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->UseBuffer = UseBufferWrapper; 54bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->AllocateBuffer = AllocateBufferWrapper; 55bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->FreeBuffer = FreeBufferWrapper; 56bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->EmptyThisBuffer = EmptyThisBufferWrapper; 57bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->FillThisBuffer = FillThisBufferWrapper; 58bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->SetCallbacks = NULL; 59bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->ComponentDeInit = NULL; 60bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->UseEGLImage = NULL; 61bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->ComponentRoleEnum = NULL; 62bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 63bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber *component = mComponent; 64bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 65bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 66bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberSoftOMXComponent::~SoftOMXComponent() { 67bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber delete mComponent; 68bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent = NULL; 69bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 70bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 71bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubervoid SoftOMXComponent::setLibHandle(void *libHandle) { 72bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber CHECK(libHandle != NULL); 73bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mLibHandle = libHandle; 74bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 75bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 76bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubervoid *SoftOMXComponent::libHandle() const { 77bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return mLibHandle; 78bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 79bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 80bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::initCheck() const { 81bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorNone; 82bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 83bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 84bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huberconst char *SoftOMXComponent::name() const { 85bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return mName.c_str(); 86bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 87bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 88bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubervoid SoftOMXComponent::notify( 89bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_EVENTTYPE event, 90bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 data1, OMX_U32 data2, OMX_PTR data) { 91bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (*mCallbacks->EventHandler)( 92bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent, 93bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent->pApplicationPrivate, 94bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber event, 95bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber data1, 96bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber data2, 97bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber data); 98bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 99bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 100bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubervoid SoftOMXComponent::notifyEmptyBufferDone(OMX_BUFFERHEADERTYPE *header) { 101bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (*mCallbacks->EmptyBufferDone)( 102bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent, mComponent->pApplicationPrivate, header); 103bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 104bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 105bbba88cb1bdc34705d1477208990a06904c022e7Andreas Hubervoid SoftOMXComponent::notifyFillBufferDone(OMX_BUFFERHEADERTYPE *header) { 106bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (*mCallbacks->FillBufferDone)( 107bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber mComponent, mComponent->pApplicationPrivate, header); 108bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 109bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 110bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 111bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::SendCommandWrapper( 112bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 113bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_COMMANDTYPE cmd, 114bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 param, 115bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR data) { 116bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 117bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 118bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 119bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 120bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->sendCommand(cmd, param, data); 121bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 122bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 123bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 124bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::GetParameterWrapper( 125bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 126bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, 127bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR params) { 128bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 129bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 130bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 131bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 132bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->getParameter(index, params); 133bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 134bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 135bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 136bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::SetParameterWrapper( 137bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 138bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, 139bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR params) { 140bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 141bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 142bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 143bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 144bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->setParameter(index, params); 145bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 146bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 147bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 148bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::GetConfigWrapper( 149bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 150bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, 151bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR params) { 152bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 153bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 154bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 155bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 156bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->getConfig(index, params); 157bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 158bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 159bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 160bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::SetConfigWrapper( 161bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 162bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, 163bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR params) { 164bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 165bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 166bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 167bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 168bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->setConfig(index, params); 169bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 170bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 171bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 172bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::GetExtensionIndexWrapper( 173bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 174bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_STRING name, 175bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE *index) { 176bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 177bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 178bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 179bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 180bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->getExtensionIndex(name, index); 181bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 182bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 183bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 184bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::UseBufferWrapper( 185bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 186bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE **buffer, 187bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 188bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR appPrivate, 189bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 size, 190bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U8 *ptr) { 191bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 192bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 193bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 194bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 195bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->useBuffer(buffer, portIndex, appPrivate, size, ptr); 196bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 197bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 198bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 199bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::AllocateBufferWrapper( 200bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 201bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE **buffer, 202bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 203bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR appPrivate, 204bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 size) { 205bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 206bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 207bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 208bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 209bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->allocateBuffer(buffer, portIndex, appPrivate, size); 210bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 211bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 212bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 213bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::FreeBufferWrapper( 214bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 215bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 216bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 217bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 218bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 219bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 220bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 221bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->freeBuffer(portIndex, buffer); 222bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 223bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 224bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 225bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::EmptyThisBufferWrapper( 226bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 227bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 228bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 229bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 230bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 231bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 232bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->emptyThisBuffer(buffer); 233bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 234bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 235bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 236bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::FillThisBufferWrapper( 237bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 238bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 239bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 240bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 241bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 242bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 243bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->fillThisBuffer(buffer); 244bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 245bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 246bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber// static 247bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::GetStateWrapper( 248bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_HANDLETYPE component, 249bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_STATETYPE *state) { 250bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber SoftOMXComponent *me = 251bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber (SoftOMXComponent *) 252bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber ((OMX_COMPONENTTYPE *)component)->pComponentPrivate; 253bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 254bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return me->getState(state); 255bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 256bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 257bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber//////////////////////////////////////////////////////////////////////////////// 258bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 259bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::sendCommand( 260bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_COMMANDTYPE cmd, OMX_U32 param, OMX_PTR data) { 261bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 262bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 263bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 264bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::getParameter( 265bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, OMX_PTR params) { 266bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 267bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 268bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 269bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::setParameter( 270bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, const OMX_PTR params) { 271bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 272bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 273bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 274bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::getConfig( 275bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, OMX_PTR params) { 276bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 277bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 278bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 279bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::setConfig( 280bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_INDEXTYPE index, const OMX_PTR params) { 281bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 282bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 283bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 284bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::getExtensionIndex( 285bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber const char *name, OMX_INDEXTYPE *index) { 286bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 287bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 288bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 289bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::useBuffer( 290bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE **buffer, 291bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 292bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR appPrivate, 293bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 size, 294bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U8 *ptr) { 295bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 296bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 297bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 298bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::allocateBuffer( 299bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE **buffer, 300bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 301bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_PTR appPrivate, 302bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 size) { 303bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 304bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 305bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 306bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::freeBuffer( 307bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_U32 portIndex, 308bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 309bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 310bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 311bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 312bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::emptyThisBuffer( 313bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 314bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 315bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 316bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 317bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::fillThisBuffer( 318bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber OMX_BUFFERHEADERTYPE *buffer) { 319bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 320bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 321bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 322bbba88cb1bdc34705d1477208990a06904c022e7Andreas HuberOMX_ERRORTYPE SoftOMXComponent::getState(OMX_STATETYPE *state) { 323bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber return OMX_ErrorUndefined; 324bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} 325bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber 326bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber} // namespace android 327