OMX_ERRORTYPE LibavAudioDec::AudioFilterGetParameter( OMX_INDEXTYPE nParamIndex, OMX_PTR pComponentParameterStructure) { OMX_ERRORTYPE ret = OMX_ErrorNone; switch ((OMX_U32)nParamIndex) { case OMX_IndexParamStandardComponentRole: fsl_osal_strcpy((OMX_STRING)((OMX_PARAM_COMPONENTROLETYPE*) \ pComponentParameterStructure)->cRole,(OMX_STRING)cRole); break; case OMX_IndexParamAudioAdpcm: { OMX_AUDIO_PARAM_ADPCMMODETYPE *pAdpcmMode; pAdpcmMode = (OMX_AUDIO_PARAM_ADPCMMODETYPE*)pComponentParameterStructure; OMX_CHECK_STRUCT(pAdpcmMode, OMX_AUDIO_PARAM_ADPCMMODETYPE, ret); if(ret != OMX_ErrorNone) break; fsl_osal_memcpy(pAdpcmMode, &(InputMode.AdpcmMode), sizeof(OMX_AUDIO_PARAM_ADPCMMODETYPE)); CodingType = OMX_AUDIO_CodingADPCM; fsl_osal_strcpy((fsl_osal_char*)name, LIBAV_COMP_NAME_ADPCMDEC); } break; case OMX_IndexParamAudioOpus: { OMX_AUDIO_PARAM_OPUSTYPE *pOpusMode; pOpusMode = (OMX_AUDIO_PARAM_OPUSTYPE*)pComponentParameterStructure; OMX_CHECK_STRUCT(pOpusMode, OMX_AUDIO_PARAM_OPUSTYPE, ret); if(ret != OMX_ErrorNone) break; fsl_osal_memcpy(pOpusMode, &(InputMode.OpusMode), sizeof(OMX_AUDIO_PARAM_OPUSTYPE)); CodingType = (OMX_AUDIO_CODINGTYPE)OMX_AUDIO_CodingOPUS; fsl_osal_strcpy((fsl_osal_char*)name, LIBAV_COMP_NAME_OPUSDEC); } break; case OMX_IndexParamAudioApe: { OMX_AUDIO_PARAM_APETYPE *pApeMode; pApeMode = (OMX_AUDIO_PARAM_APETYPE*)pComponentParameterStructure; OMX_CHECK_STRUCT(pApeMode, OMX_AUDIO_PARAM_APETYPE, ret); if(ret != OMX_ErrorNone) break; fsl_osal_memcpy(pApeMode, &(InputMode.ApeMode), sizeof(OMX_AUDIO_PARAM_APETYPE)); CodingType = (OMX_AUDIO_CODINGTYPE)OMX_AUDIO_CodingAPE; fsl_osal_strcpy((fsl_osal_char*)name, LIBAV_COMP_NAME_APEDEC); } break; default: ret = OMX_ErrorUnsupportedIndex; break; } return ret; }
OMX_ERRORTYPE LibavAudioDec::SetRoleFormat(OMX_STRING role) { OMX_ERRORTYPE ret = OMX_ErrorNone; if(fsl_osal_strcmp(role, "audio_decoder.adpcm") == 0) { CodingType = OMX_AUDIO_CodingADPCM; fsl_osal_strcpy((fsl_osal_char*)name, LIBAV_COMP_NAME_ADPCMDEC); OMX_INIT_STRUCT(&(InputMode.PcmMode), OMX_AUDIO_PARAM_PCMMODETYPE); } else if(fsl_osal_strcmp(role, "audio_decoder.g711") == 0) { CodingType = OMX_AUDIO_CodingG711; fsl_osal_strcpy((fsl_osal_char*)name, LIBAV_COMP_NAME_G711DEC); OMX_INIT_STRUCT(&(InputMode.AdpcmMode), OMX_AUDIO_PARAM_ADPCMMODETYPE) }
AC3ToIEC937::AC3ToIEC937() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_processor.ac3toiec937.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_processor.ac3toiec937"; bInContext = OMX_FALSE; nInBufferSize = IN_BUFFER_SIZE; nOutBufferSize = OUT_BUFFER_SIZE; eInCodingType = (OMX_AUDIO_CODINGTYPE)OMX_AUDIO_CodingAC3; OMX_INIT_STRUCT(&Ac3Type, OMX_AUDIO_PARAM_AC3TYPE); Ac3Type.nPortIndex = AUDIO_FILTER_INPUT_PORT; Ac3Type.nChannels = 2; Ac3Type.nSampleRate = 48000; Ac3Type.nBitRate = 128*1024; bFirstFrame = OMX_TRUE; bSwitchWord = OMX_FALSE; OMX_INIT_STRUCT(&PcmMode, OMX_AUDIO_PARAM_PCMMODETYPE); PcmMode.nPortIndex = AUDIO_FILTER_OUTPUT_PORT; PcmMode.nChannels = 2; PcmMode.nSamplingRate = 48000; PcmMode.nBitPerSample = 16; PcmMode.bInterleaved = OMX_TRUE; PcmMode.eNumData = OMX_NumericalDataSigned; PcmMode.ePCMMode = OMX_AUDIO_PCMModeLinear; PcmMode.eEndian = OMX_EndianLittle; PcmMode.eChannelMapping[0] = OMX_AUDIO_ChannelNone; }
AacDec::AacDec() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_decoder.aac.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_decoder.aac"; codingType = OMX_AUDIO_CodingAAC; nPushModeInputLen = AAC_PUSH_MODE_LEN; outputPortBufferSize = 6*AACD_FRAME_SIZE*2*4; decoderLibName = "lib_aacd_wrap_arm12_elinux_android.so"; optionaDecoderlLibName = "lib_aacplusd_wrap_arm12_elinux_android.so"; OMX_INIT_STRUCT(&AacType, OMX_AUDIO_PARAM_AACPROFILETYPE); AacType.nPortIndex = AUDIO_FILTER_INPUT_PORT; AacType.nChannels = 2; AacType.nSampleRate = 44100; AacType.nAudioBandWidth = 0; AacType.nAACERtools = OMX_AUDIO_AACERNone; AacType.eAACProfile = OMX_AUDIO_AACObjectLC; AacType.eChannelMode = OMX_AUDIO_ChannelModeStereo; AacType.eAACStreamFormat = OMX_AUDIO_AACStreamFormatMax; LOG_DEBUG("Unia -> AAC"); bFrameCheck = OMX_FALSE; }
WmaDec::WmaDec() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_decoder.wma.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_decoder.wma"; codingType = OMX_AUDIO_CodingWMA; outputPortBufferSize = WMA_OUTPUT_PORT_SIZE; decoderLibName = "lib_wma10d_wrap_arm12_elinux_android.so"; OMX_INIT_STRUCT(&WmaType, OMX_AUDIO_PARAM_WMATYPE); OMX_INIT_STRUCT(&WmaTypeExt, OMX_AUDIO_PARAM_WMATYPE_EXT); WmaType.nPortIndex = AUDIO_FILTER_INPUT_PORT; WmaType.nChannels = 2; WmaType.nSamplingRate = 44100; WmaType.nBitRate = 64000; WmaType.eFormat = OMX_AUDIO_WMAFormat9; WmaTypeExt.nPortIndex = AUDIO_FILTER_INPUT_PORT; WmaTypeExt.nBitsPerSample = 16; LOG_DEBUG("Unia -> WMA"); }
fsl_osal_ptr ShareLibarayMgr::load(fsl_osal_char *lib_name) { LIB_INFO *pLibInfo; if (lib_name == NULL) { LOG_ERROR("Library name is NULL.\n"); return NULL; } /** Check if the library already loaded */ for (fsl_osal_s32 i = 0; ; i ++) { pLibInfo = lib_info.GetNode(i); if(pLibInfo == NULL) { break; } if (!fsl_osal_strcmp(pLibInfo->lib_name, lib_name)) { pLibInfo->refCount ++; LOG_DEBUG("The reference times of the lib: %s is: %d\n", pLibInfo->lib_name, \ pLibInfo->refCount); return pLibInfo->hlib; } } const fsl_osal_char *cError; fsl_osal_ptr pLibHandle = dlopen(lib_name, RTLD_NOW); if (pLibHandle == NULL) { LOG_WARNING("Can't open library: %s\n", lib_name); printf("Can't open library: %s\n", lib_name); cError = dlerror(); LOG_WARNING("%s\n", cError); printf("%s\n", cError); return NULL; } pLibInfo = FSL_NEW(LIB_INFO, ()); if (pLibInfo == NULL) { LOG_ERROR("New LIB_INFO fail.\n"); return NULL; } fsl_osal_strcpy(pLibInfo->lib_name, lib_name); pLibInfo->hlib = pLibHandle; pLibInfo->refCount = 1; lib_info.Add(pLibInfo); return pLibHandle; }
Mp3Parser::Mp3Parser() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.parser.mp3.sw-based"); ComponentVersion.s.nVersionMajor = 0x1; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x2; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"parser.mp3"; bInContext = OMX_FALSE; bNeedSendCodecConfig = OMX_FALSE; }
FileWrite::FileWrite() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.component.file_write.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = "component.file_write"; bInContext = OMX_FALSE; nPorts = 2; pAudioBufferHdr = pVideoBufferHdr = NULL; }
Clock::Clock() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.clocksrc.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"clocksrc"; bInContext = OMX_FALSE; nPorts = PORT_NUM; Scale = 1*Q16_SHIFT; }
WmvDecoder::WmvDecoder() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.video_decoder.wmv.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"video_decoder.wmv"; fsl_osal_memset(&sInFmt, 0, sizeof(OMX_VIDEO_PORTDEFINITIONTYPE)); sInFmt.nFrameWidth = 320; sInFmt.nFrameHeight = 240; sInFmt.xFramerate = 30 * Q16_SHIFT; sInFmt.eColorFormat = OMX_COLOR_FormatUnused; sInFmt.eCompressionFormat = OMX_VIDEO_CodingWMV; nInPortFormatCnt = 0; nOutPortFormatCnt = 1; eOutPortPormat[0] = OMX_COLOR_FormatYUV420Planar; sOutFmt.nFrameWidth = 320; sOutFmt.nFrameHeight = 240; sOutFmt.eColorFormat = OMX_COLOR_FormatYUV420Planar; sOutFmt.eCompressionFormat = OMX_VIDEO_CodingUnused; bFilterSupportPartilInput = OMX_FALSE; nInBufferCnt = 1; nInBufferSize = 128*1024; nOutBufferCnt = 1; nOutBufferSize = sOutFmt.nFrameWidth * sOutFmt.nFrameHeight * pxlfmt2bpp(sOutFmt.eColorFormat) / 8; pInBuffer = pOutBuffer = NULL; nInputSize = nInputOffset = 0; bInEos = OMX_FALSE; nFrameSize = 0;; pFrameBuffer = NULL; OMX_INIT_STRUCT(&sOutCrop, OMX_CONFIG_RECTTYPE); sOutCrop.nPortIndex = OUT_PORT; sOutCrop.nLeft = sOutCrop.nTop = 0; sOutCrop.nWidth = sInFmt.nFrameWidth; sOutCrop.nHeight = sInFmt.nFrameHeight; fsl_osal_memset(&sDecObj, 0, sizeof(sWmv9DecObjectType)); eFormat = E_WMV9D_COMP_FMT_UNSUPPORTED; eWmvDecState = WMVDEC_LOADED; hLib = NULL; libMgr = NULL; nTop = nLeft = 0; }
AacEnc::AacEnc() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_encoder.aac.sw-based"); ComponentVersion.s.nVersionMajor = 0x1; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x2; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_encoder.aac"; bInContext = OMX_FALSE; nPorts = AUDIO_FILTER_PORT_NUMBER; nPushModeInputLen = AACE_INPUT_BUFFER_SIZE * 4; nRingBufferScale = RING_BUFFER_SCALE; }
WmaDec::WmaDec() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_decoder.wma.sw-based"); ComponentVersion.s.nVersionMajor = 0x1; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x2; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_decoder.wma"; bInContext = OMX_FALSE; nPorts = AUDIO_FILTER_PORT_NUMBER; nPushModeInputLen = WMA10D_MAXDATAREQUESTED; nRingBufferScale = RING_BUFFER_SCALE; }
OMX_ERRORTYPE Mp3Parser::SetSource(OMX_PARAM_CONTENTURITYPE *Content, OMX_PARAM_CONTENTPIPETYPE *Pipe) { OMX_ERRORTYPE ret = OMX_ErrorNone; hPipe =(CP_PIPETYPE* ) (((OMX_PARAM_CONTENTPIPETYPE *)Pipe)->hPipe); OMX_PARAM_CONTENTURITYPE * pContentURI = (OMX_PARAM_CONTENTURITYPE *)Content; nMediaNameLen = fsl_osal_strlen((const char *)&(pContentURI->contentURI)) + 1; pMediaName = (OMX_S8 *)FSL_MALLOC(nMediaNameLen); if (!pMediaName) { return OMX_ErrorInsufficientResources; } fsl_osal_strcpy((char *)pMediaName, (const char *)&(pContentURI->contentURI)); if(fsl_osal_strncmp((fsl_osal_char*)pMediaName, "http://", 7) == 0 || fsl_osal_strncmp((fsl_osal_char*)pMediaName, "rtsp://", 7) == 0) isStreamingSource = OMX_TRUE; bGetMetadata = OMX_TRUE; fsl_osal_strcpy((fsl_osal_char*)sCompRole.cRole, role[0]); return ret; }
OMX_ERRORTYPE State::DoGetComponentVersion( OMX_STRING pComponentName, OMX_VERSIONTYPE* pComponentVersion, OMX_VERSIONTYPE* pSpecVersion, OMX_UUIDTYPE* pComponentUUID) { if(pComponentName == NULL || pComponentVersion == NULL || pSpecVersion == NULL || pComponentUUID == NULL) return OMX_ErrorBadParameter; fsl_osal_strcpy(pComponentName, (OMX_STRING)(base->name)); fsl_osal_memcpy(pComponentVersion, &(base->ComponentVersion), sizeof(OMX_VERSIONTYPE)); fsl_osal_memcpy(pSpecVersion, &(base->SpecVersion), sizeof(OMX_VERSIONTYPE)); return OMX_ErrorNone; }
VideoProcessorComponent::VideoProcessorComponent() { fsl_osal_strcpy((fsl_osal_char*)name, VP_NAME); ComponentVersion.s.nVersionMajor = 0x1; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x2; ComponentVersion.s.nStep = 0x0; bInContext = OMX_FALSE; nPorts = 2; bStarted = OMX_FALSE; bReset = OMX_FALSE; bFlush = OMX_FALSE; bUseEGLImage = OMX_FALSE; fsl_osal_memset(&ipu_handle,0,sizeof(ipu_lib_handle_t)); fsl_osal_memset(&sInParam,0,sizeof(ipu_lib_input_param_t)); fsl_osal_memset(&sOutParam,0,sizeof(ipu_lib_output_param_t)); }
IpulibRender::IpulibRender() { OMX_U32 i; fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.video_render.ipulib.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"video_render.ipulib"; nFrameBufferMin = 2; nFrameBufferActual = 2; TunneledSupplierType = OMX_BufferSupplyInput; fsl_osal_memset(&sVideoFmt, 0, sizeof(OMX_VIDEO_PORTDEFINITIONTYPE)); sVideoFmt.nFrameWidth = 320; sVideoFmt.nFrameHeight = 240; sVideoFmt.eColorFormat = OMX_COLOR_FormatYUV420Planar; sVideoFmt.eCompressionFormat = OMX_VIDEO_CodingUnused; eRotation = ROTATE_NONE; OMX_INIT_STRUCT(&sRectIn, OMX_CONFIG_RECTTYPE); sRectIn.nWidth = sVideoFmt.nFrameWidth; sRectIn.nHeight = sVideoFmt.nFrameHeight; sRectIn.nTop = 0; sRectIn.nLeft = 0; OMX_INIT_STRUCT(&sRectOut, OMX_CONFIG_RECTTYPE); sRectOut.nWidth = DISP_WIDTH; sRectOut.nHeight = DISP_HEIGHT; sRectOut.nTop = 0; sRectOut.nLeft = 0; bInitDev = OMX_FALSE; lock = NULL; pShowFrame = NULL; nFrameLen = 0; bSuspend = OMX_FALSE; fsl_osal_memset(&ipu_handle, 0, sizeof(ipu_lib_handle_t)); OMX_INIT_STRUCT(&sCapture, OMX_CONFIG_CAPTUREFRAME); sCapture.eType = CAP_NONE; }
Ac3Dec::Ac3Dec() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_decoder.ac3.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_decoder.ac3"; codingType = OMX_AUDIO_CodingAC3; nPushModeInputLen = AC3_PUSH_MODE_LEN; outputPortBufferSize = 256*6*6*sizeof(int32); decoderLibName = "lib_ac3d_wrap_arm11_elinux_android.so"; OMX_INIT_STRUCT(&Ac3Type, OMX_AUDIO_PARAM_AC3TYPE); Ac3Type.nPortIndex = AUDIO_FILTER_INPUT_PORT; Ac3Type.nChannels = 2; Ac3Type.nSampleRate = 44100; LOG_DEBUG("Unia -> AC3"); }
Mp3Dec::Mp3Dec() { fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.audio_decoder.mp3.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = (OMX_STRING)"audio_decoder.mp3"; codingType = OMX_AUDIO_CodingMP3; nPushModeInputLen = MP3_PUSH_MODE_LEN; outputPortBufferSize = MP3D_FRAME_SIZE* 2*2; decoderLibName = "lib_mp3d_wrap_arm12_elinux_android.so"; OMX_INIT_STRUCT(&Mp3Type, OMX_AUDIO_PARAM_MP3TYPE); Mp3Type.nPortIndex = AUDIO_FILTER_INPUT_PORT; Mp3Type.nChannels = 2; Mp3Type.nSampleRate = 44100; Mp3Type.eChannelMode = OMX_AUDIO_ChannelModeStereo; Mp3Type.eFormat = OMX_AUDIO_MP3StreamFormatMP1Layer3; LOG_DEBUG("Unia -> MP3"); }
V4lRender::V4lRender() { OMX_U32 i; fsl_osal_strcpy((fsl_osal_char*)name, "OMX.Freescale.std.video_render.v4l.sw-based"); ComponentVersion.s.nVersionMajor = 0x0; ComponentVersion.s.nVersionMinor = 0x1; ComponentVersion.s.nRevision = 0x0; ComponentVersion.s.nStep = 0x0; role_cnt = 1; role[0] = "video_render.v4l"; nFrameBufferMin = 1; nFrameBufferActual = 1; nFrameBuffer = nFrameBufferActual; TunneledSupplierType = OMX_BufferSupplyInput; fsl_osal_memset(&sVideoFmt, 0, sizeof(OMX_VIDEO_PORTDEFINITIONTYPE)); sVideoFmt.nFrameWidth = 320; sVideoFmt.nFrameHeight = 240; sVideoFmt.eColorFormat = OMX_COLOR_FormatYUV420Planar; sVideoFmt.eCompressionFormat = OMX_VIDEO_CodingUnused; eRotation = ROTATE_NONE; OMX_INIT_STRUCT(&sRectIn, OMX_CONFIG_RECTTYPE); sRectIn.nWidth = sVideoFmt.nFrameWidth; sRectIn.nHeight = sVideoFmt.nFrameHeight; sRectIn.nTop = 0; sRectIn.nLeft = 0; OMX_INIT_STRUCT(&sRectOut, OMX_CONFIG_RECTTYPE); sRectOut.nWidth = DISP_WIDTH; sRectOut.nHeight = DISP_HEIGHT; sRectOut.nTop = 0; sRectOut.nLeft = 0; for(i=0; i<MAX_PORT_BUFFER; i++) fsl_osal_memset(&fb_data[i], 0, sizeof(FB_DATA)); for(i=0; i<MAX_V4L_BUFFER; i++) { fsl_osal_memset(&v4lbufs[i], 0, sizeof(struct v4l2_buffer)); BufferHdrs[i] = NULL; } device = 0; bStreamOn = OMX_FALSE; bFrameBufferInit = OMX_FALSE; nAllocating = 0; nQueuedBuffer = 0; nRenderFrames = 0; lock = NULL; OMX_INIT_STRUCT(&sCapture, OMX_CONFIG_CAPTUREFRAME); sCapture.eType = CAP_NONE; EnqueueBufferIdx = -1; OMX_INIT_STRUCT(&sOutputMode, OMX_CONFIG_OUTPUTMODE); sOutputMode.bTv = OMX_FALSE; sOutputMode.eFbLayer = LAYER_NONE; sOutputMode.eTvMode = MODE_NONE; bInTransitState = OMX_FALSE; bV4lNewApi =v4l_new_version(); #ifdef USING_DUMMY_WORKAROUND bDummyValid=OMX_FALSE; bFlushState =OMX_FALSE;//OMX_TRUE; #endif }
List<REG_ENTRY> *RegistryAnalyser::GetNextEntry() { fsl_osal_char symbol; efsl_osal_bool bSkip = E_FSL_OSAL_FALSE; fsl_osal_char symbolBuffer[ITEM_VALUE_LEN] = {0}, *pStrSeg; efsl_osal_bool EntryFounded = E_FSL_OSAL_FALSE; fsl_osal_s32 symbolCnt = 0; efsl_osal_return_type_t ret; REG_ENTRY *pRegEntry; if (pfile == NULL) { LOG_ERROR("No file to read.\n"); return &RegList; } /** Remove previous entry */ RemoveEntry(); while (BufferDataLen - UseOffset > 0 || FileReadEnd == E_FSL_OSAL_FALSE) { if (BufferDataLen - UseOffset == 0) { ret = fsl_osal_fread(readBuffer, FILE_READ_SIZE, pfile, &BufferDataLen); if (ret != E_FSL_OSAL_SUCCESS && ret != E_FSL_OSAL_EOF) { LOG_ERROR("file read error."); return &RegList; } if (BufferDataLen < FILE_READ_SIZE) { FileReadEnd = E_FSL_OSAL_TRUE; } UseOffset = 0; } symbol = readBuffer[UseOffset]; UseOffset ++; if (bSkip == E_FSL_OSAL_TRUE) { if (symbol == '\n') { bSkip = E_FSL_OSAL_FALSE; } } else { if (symbol == '#') { bSkip = E_FSL_OSAL_TRUE; } else if (symbol == '\t' || symbol == ' ' || symbol == '\n' || symbol == '\r') { } else if (symbol == '@') { EntryFounded = E_FSL_OSAL_TRUE; } else if (symbol == '$') { break; } else if (symbol == ';') { fsl_osal_char *pLast = NULL; if (symbolCnt != 0 && ((pStrSeg = fsl_osal_strtok_r(symbolBuffer, "=", &pLast)) != NULL)) { pRegEntry = FSL_NEW(REG_ENTRY, ()); fsl_osal_memset(pRegEntry, 0, sizeof(REG_ENTRY)); fsl_osal_strcpy(pRegEntry->name, pStrSeg); pStrSeg = fsl_osal_strtok_r(NULL, "=", &pLast); fsl_osal_strcpy(pRegEntry->value, pStrSeg); fsl_osal_memset(symbolBuffer, 0, ITEM_VALUE_LEN); symbolCnt = 0; RegList.Add(pRegEntry); } } else { if (EntryFounded == E_FSL_OSAL_TRUE)