RenderAction::RenderAction(const RenderAction &source) : Inherited (source ), _doCullOnly (false ), _numBuffers (0 ), _currentBuffer (0 ), _uiKeyGen (source._uiKeyGen ), _pPartitionPools ( ), _pNodePools ( ), _pStatePools ( ), _pTreeBuilderPools ( ), _vRenderPartitions ( ), _iActivePartitionIdx (-1 ), _bInPartitionGroup (false ), _bDefaultPartHandled (false ), _pActivePartition (NULL ), _sRenderPartitionStack ( ), _sRenderPartitionIdxStack( ), _sRenderPartitionGrpStack( ), _bvPassMask (source._bvPassMask ), _occlusionCulling (source._occlusionCulling ), _occlusionCullingDebug (source._occlusionCullingDebug ), _occDMTested (source._occDMTested ), _occDMCulled (source._occDMCulled ), _occDMVisible (source._occDMVisible ), _occMinFeatureSize (source._occMinFeatureSize ), _occVisibilityThreshold (source._occVisibilityThreshold ), _occCoveredThreshold (source._occCoveredThreshold ), _occQueryBufferSize (source._occQueryBufferSize ), _occMinimumTriangleCount (source._occMinimumTriangleCount), _scrlodCoverageThreshold (source._scrlodCoverageThreshold), _scrlodNumLODsToUse (source._scrlodNumLODsToUse ), _scrlodDegradationFactor (source._scrlodDegradationFactor), _pGLFinishTask (NULL ) { setNumBuffers(source._numBuffers); }
RenderAction::RenderAction(void) : Inherited ( ), _doCullOnly ( false), _numBuffers ( 0), _currentBuffer ( 0), _uiKeyGen ( 0), _pPartitionPools ( ), _pNodePools ( ), _pStatePools ( ), _pTreeBuilderPools ( ), _vRenderPartitions ( ), _iActivePartitionIdx (-1 ), _bInPartitionGroup (false ), _bDefaultPartHandled (false ), _pActivePartition (NULL ), _sRenderPartitionStack ( ), _sRenderPartitionIdxStack( ), _sRenderPartitionGrpStack( ), _bvPassMask ( ), _occlusionCulling (false ), _occlusionCullingDebug (false ), _occDMTested (0xffffffff), _occDMCulled (0xffffffff), _occDMVisible (0xffffffff), _occMinFeatureSize ( 0), _occVisibilityThreshold ( 0), _occCoveredThreshold ( 0.7f), _occQueryBufferSize ( 1000), _occMinimumTriangleCount ( 500), _scrlodCoverageThreshold ( 0.01f), _scrlodNumLODsToUse ( 0), _scrlodDegradationFactor ( 1.0f), _pGLFinishTask (NULL ) { if(_vDefaultEnterFunctors != NULL) _enterFunctors = *_vDefaultEnterFunctors; if(_vDefaultLeaveFunctors != NULL) _leaveFunctors = *_vDefaultLeaveFunctors; setNumBuffers(1); UInt32 uiTId = TextureBaseChunk ::getStaticClassId() & 0x000003FF; UInt32 uiMId = MaterialChunk ::getStaticClassId() & 0x000003FF; #ifdef OSG_NEW_SHADER UInt32 uiShId = ShaderExecutableChunk ::getStaticClassId() & 0x000003FF; uiMId = ShaderExecutableVarChunk::getStaticClassId() & 0x000003FF; #else UInt32 uiShId = SimpleSHLChunk ::getStaticClassId() & 0x000003FF; #endif _uiKeyGen = ( (uiShId) | (uiTId << 10) | (uiMId << 20) ); /* fprintf(stderr, "CreateKeyGen (RT) (%p) from %d %d %d -> %08x\n", this, SHLChunk ::getStaticClassId(), TextureChunk ::getStaticClassId(), MaterialChunk::getStaticClassId(), _uiKeyGen); */ }
int main(int argc, char** argv) { OMX_PORT_PARAM_TYPE param; OMX_PARAM_PORTDEFINITIONTYPE sPortDef; OMX_AUDIO_PORTDEFINITIONTYPE sAudioPortDef; OMX_AUDIO_PARAM_PORTFORMATTYPE sAudioPortFormat; OMX_AUDIO_PARAM_PCMMODETYPE sPCMMode; OMX_BUFFERHEADERTYPE **inBuffers; OMX_BUFFERHEADERTYPE **outBuffers; OMX_AUDIO_PARAM_MP3TYPE sMP3Mode; unsigned char name[OMX_MAX_STRINGNAME_SIZE]; OMX_UUIDTYPE uid; int startPortNumber; int nPorts; int n; fprintf(stderr, "Thread id is %p\n", pthread_self()); if(argc < 2){ display_help(); exit(1); } inFd = open(argv[1], O_RDONLY); if(inFd < 0){ perror("Error opening input file\n"); exit(1); } filesize = getFileSize(inFd); outFd = open(argv[2], (O_WRONLY | O_CREAT), 0644); if(outFd < 0){ perror("Error opening output file\n"); exit(1); } err = OMX_Init(); if(err != OMX_ErrorNone) { fprintf(stderr, "OMX_Init() failed\n", 0); exit(1); } /** Ask the core for a handle to the audio render component */ err = OMX_GetHandle(&handle, componentName, NULL /*app private data */, &callbacks); if(err != OMX_ErrorNone) { fprintf(stderr, "OMX_GetHandle failed\n", 0); exit(1); } err = OMX_GetComponentVersion(handle, name, &compVersion, &specVersion, &uid); if(err != OMX_ErrorNone) { fprintf(stderr, "OMX_GetComponentVersion failed\n", 0); exit(1); } /** no other ports to disable */ /** Get audio port information */ setHeader(¶m, sizeof(OMX_PORT_PARAM_TYPE)); err = OMX_GetParameter(handle, OMX_IndexParamAudioInit, ¶m); if(err != OMX_ErrorNone){ fprintf(stderr, "Error in getting OMX_PORT_PARAM_TYPE parameter\n", 0); exit(1); } startPortNumber = ((OMX_PORT_PARAM_TYPE)param).nStartPortNumber; nPorts = ((OMX_PORT_PARAM_TYPE)param).nPorts; if (nPorts != 2) { fprintf(stderr, "Decode device has wrong number of ports: %d\n", nPorts); exit(1); } setEncoding(startPortNumber, OMX_AUDIO_CodingVORBIS); setEncoding(startPortNumber+1, OMX_AUDIO_CodingPCM); printState();; numInBuffers = setNumBuffers(startPortNumber); numOutBuffers = setNumBuffers(startPortNumber+1); /* call to put state into idle before allocating buffers */ err = OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateIdle, NULL); if (err != OMX_ErrorNone) { fprintf(stderr, "Error on setting state to idle\n"); exit(1); } err = OMX_SendCommand(handle, OMX_CommandPortEnable, startPortNumber, NULL); if (err != OMX_ErrorNone) { fprintf(stderr, "Error on setting port to enabled\n"); exit(1); } err = OMX_SendCommand(handle, OMX_CommandPortEnable, startPortNumber+1, NULL); if (err != OMX_ErrorNone) { fprintf(stderr, "Error on setting port to enabled\n"); exit(1); } createMinBuffers(startPortNumber, &inBufferSize, &inBuffers); createMinBuffers(startPortNumber+1, &outBufferSize, &outBuffers); /* Make sure we've reached Idle state */ waitFor(OMX_StateIdle); fprintf(stderr, "Reached Idle state\n"); //exit(0); /* Now try to switch to Executing state */ err = OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateExecuting, NULL); if(err != OMX_ErrorNone){ exit(1); } /* no buffers emptied yet */ pEmptyBuffer = NULL; /* fill and empty the input buffers */ for (n = 0; n < numInBuffers; n++) { int data_read = read(inFd, inBuffers[n]->pBuffer, inBufferSize); inBuffers[n]->nFilledLen = data_read; printf("Read %d into buffer\n", data_read); if (data_read <= 0) { printf(stderr, "In the %s no more input data available\n", __func__); inBuffers[n]->nFilledLen = 0; inBuffers[n]->nFlags = OMX_BUFFERFLAG_EOS; bEOS=OMX_TRUE; } } /* empty and fill the output buffers */ for (n = 0; n < numOutBuffers; n++) { outBuffers[n]->nFilledLen = 0; err = OMX_FillThisBuffer(handle, outBuffers[n]); if (err != OMX_ErrorNone) { fprintf(stderr, "Error on filling buffer\n"); exit(1); } } for (n = 0; n < numInBuffers; n++) { err = OMX_EmptyThisBuffer(handle, inBuffers[n]); if (err != OMX_ErrorNone) { fprintf(stderr, "Error on emptying buffer\n"); exit(1); } } pEmptyBuffer = inBuffers[0]; emptyState = 1; waitFor(OMX_StateLoaded); fprintf(stderr, "Buffers emptied\n"); exit(0); }