コード例 #1
0
SRTParser::~SRTParser()
{
    if(mBuffer)
        FSL_FREE(mBuffer);
    if(mSource)
        FSL_DELETE(mSource);
    if(mTimeTable)
        FSL_DELETE(mTimeTable);
}
コード例 #2
0
RINGBUFFER_ERRORTYPE RingBuffer::BufferCreate(fsl_osal_u32 nPushModeLen, fsl_osal_u32 nRingBufferScale)
{
	RINGBUFFER_ERRORTYPE ret = RINGBUFFER_SUCCESS;

	nPushModeInputLen = nPushModeLen;
	nRingBufferLen = nPushModeInputLen * nRingBufferScale;

	/** Create queue for TS. */
	TS_Queue = FSL_NEW(Queue, ());
	if (TS_Queue == NULL)
	{
		LOG_ERROR("Can't get memory.\n");
		return RINGBUFFER_INSUFFICIENT_RESOURCES;
	}

	if (TS_Queue->Create(TS_QUEUE_SIZE, sizeof(TS_QUEUE), E_FSL_OSAL_FALSE) != QUEUE_SUCCESS)
	{
		FSL_DELETE(TS_Queue);
		LOG_ERROR("Can't create audio ts queue.\n");
		return RINGBUFFER_INSUFFICIENT_RESOURCES;
	}

	/** Create ring buffer for audio decoder input stream. */
	LOG_DEBUG("Ring buffer len: %d\n", nRingBufferLen);
	RingBufferPtr = (fsl_osal_u8 *)FSL_MALLOC(nRingBufferLen+8);
	if (RingBufferPtr == NULL)
	{
		FSL_DELETE(TS_Queue);
		TS_Queue->Free();
		LOG_ERROR("Can't get memory.\n");
		return RINGBUFFER_INSUFFICIENT_RESOURCES;
	}

	Reserved = (fsl_osal_u8 *)FSL_MALLOC(nPushModeInputLen);
	if (Reserved == NULL)
	{
		FSL_DELETE(TS_Queue);
		TS_Queue->Free();
		FSL_FREE(RingBufferPtr);
		LOG_ERROR("Can't get memory.\n");
		return RINGBUFFER_INSUFFICIENT_RESOURCES;
	}

	CurrentTS = 0;
	bHaveTS = E_FSL_OSAL_FALSE;
	TotalConsumeLen = 0;
	RingBufferBeginPre = -1;
	ReservedLen = nPushModeInputLen;
	Begin = RingBufferPtr;
	End = RingBufferPtr;
	Consumered = RingBufferPtr;
	nPrevOffset = 0;

	return ret;
}
コード例 #3
0
OMX_ERRORTYPE WmaDec::DeInitComponent()
{
    if (libMgr) {
        if (hLib)
            libMgr->unload(hLib);
        FSL_DELETE(libMgr);
    }

    return OMX_ErrorNone;
}
コード例 #4
0
ファイル: PlatformResourceMgr.cpp プロジェクト: FreeSrk/omx
OMX_ERRORTYPE PlatformResourceMgr::DeInit()
{
    if(PlatformDataList != NULL)
        FSL_DELETE(PlatformDataList);

    if(lock != NULL)
        fsl_osal_mutex_destroy(lock);

    return OMX_ErrorNone;
}
コード例 #5
0
OMX_STREAMING_PIPE_API CPresult RtpsPipe_Close(CPhandle hContent)
{
    StreamingPipe *hPipe = (StreamingPipe *)hContent;
    LOG_DEBUG("%s\n", __FUNCTION__);

    hPipe->DeInit();

    FSL_DELETE(hPipe);

    return STREAMING_PIPE_SUCESS;
}
コード例 #6
0
ファイル: Queue.cpp プロジェクト: FreeSrk/omx
QUEUE_ERRORTYPE DeleteQueue(
        fsl_osal_ptr hQHandle)
{
    Queue *pQueue = NULL;

    pQueue = (Queue*) hQHandle;
    pQueue->Free();
    FSL_DELETE(pQueue);

    return QUEUE_SUCCESS;
}
コード例 #7
0
	OMX_ERRORTYPE UnloadParserMetadata(OMX_PTR handle)
	{
		OMX_ERRORTYPE ret = OMX_ErrorNone;
		Mp3Parser *obj = (Mp3Parser *)handle;

		obj->InstanceDeInit();
		obj->UnloadParserMetadata();
		FSL_DELETE(obj);

		return ret;
	}
コード例 #8
0
ファイル: AacEnc.cpp プロジェクト: FreeSrk/omx
OMX_ERRORTYPE AacEnc::AudioFilterInstanceDeInit()
{
    OMX_ERRORTYPE ret = OMX_ErrorNone;

    if (mEncoderHandle) {
        mApiHandle->Uninit(mEncoderHandle);
        mEncoderHandle = NULL;
    }
    FSL_DELETE(mApiHandle);
	FSL_DELETE(mMemOperator);

	if (libMgr) {
		if (hLibStagefright)
			libMgr->unload(hLibStagefright);
		hLibStagefright = NULL;
        FSL_DELETE(libMgr);
	}

    return ret;
}
コード例 #9
0
OMX_ERRORTYPE UniaDecoder::DeInitComponent()
{
    if (libMgr) {

        if (hLib)
            libMgr->unload(hLib);
        hLib = NULL;
        FSL_FREE(IDecoder);
        FSL_DELETE(libMgr);
    }
    LOG_DEBUG("UniaDec::DeInitComponent inputFrameCount=%d,consumeFrameCount=%d",inputFrameCount,consumeFrameCount);
    return OMX_ErrorNone;
}
コード例 #10
0
OMX_STREAMING_PIPE_API CPresult RtpsPipe_Open(CPhandle* hContent, CPstring url, CP_ACCESSTYPE eAccess)
{
    OMX_ERRORTYPE err;
    StreamingPipe *hPipe;
    const CPuint CACHE_SIZE=10*1024*1024;

    LOG_DEBUG("%s hContent %p, url: %s\n", __FUNCTION__, hContent, url);
    
    if(hContent == NULL || url == NULL)
        return KD_EINVAL;

    if(eAccess != CP_AccessRead)
        return KD_EINVAL;

    RtpsProtocol *pProtocol = FSL_NEW(RtpsProtocol, (url));
    if(pProtocol == NULL){
        LOG_ERROR("[HttpsPipe] Failed to create RtpsProtocol for %s\n", url);
        return KD_EINVAL;
    }

	hPipe = FSL_NEW(StreamingPipe, (pProtocol));
    if(hPipe == NULL){
        LOG_ERROR("[HttpsPipe] Failed to create StreamingPipe for %s\n", url);
        FSL_DELETE(pProtocol);
        return KD_EINVAL;
    }
    
    err = hPipe->Init(CACHE_SIZE);
    if(err != OMX_ErrorNone){
        FSL_DELETE(hPipe);
        FSL_DELETE(pProtocol);
        return KD_EINVAL;
    }
    
	*hContent = hPipe;

    return STREAMING_PIPE_SUCESS;
}
コード例 #11
0
RINGBUFFER_ERRORTYPE RingBuffer::BufferFree()
{
	RINGBUFFER_ERRORTYPE ret = RINGBUFFER_SUCCESS;

	LOG_DEBUG("TS queue free\n");
	if(TS_Queue != NULL)
		TS_Queue->Free();
	LOG_DEBUG("TS queue delete\n");
	FSL_DELETE(TS_Queue);
	LOG_DEBUG("Free ring buffer\n");
	FSL_FREE(RingBufferPtr);
	LOG_DEBUG("Free reserved buffer\n");
	FSL_FREE(Reserved);
	LOG_DEBUG("Ring buffer free finished.\n");

	return ret;
}
コード例 #12
0
fsl_osal_s32 ShareLibarayMgr::unload(fsl_osal_ptr hlib) 
{
	LIB_INFO *pLibInfo;

	if (hlib == NULL)
	{
		LOG_ERROR("Library handle is NULL.\n");
		return 0;
	}

	/** Check if the library already loaded */
	for (fsl_osal_s32 i = 0; ; i ++)
	{
		pLibInfo = lib_info.GetNode(i);
		if(pLibInfo == NULL)
		{
			break;
		}

		if (pLibInfo->hlib == hlib)
		{
			pLibInfo->refCount --;
			LOG_DEBUG("The reference times of the library: %s is: %d\n", pLibInfo->lib_name, \
					pLibInfo->refCount);
			if (pLibInfo->refCount == 0)
			{
				LOG_DEBUG("Unload the librayr: %s\n", pLibInfo->lib_name);
				dlclose(pLibInfo->hlib);
				lib_info.Remove(pLibInfo);
				FSL_DELETE(pLibInfo);
				return 0;
			}
			return pLibInfo->refCount;
		}
	}
	
	return 0;
}
コード例 #13
0
OMX_ERRORTYPE WmaDec::InitComponent()
{
    OMX_ERRORTYPE ret = OMX_ErrorNone;
    OMX_PARAM_PORTDEFINITIONTYPE sPortDef;
    hLib = NULL;
    pWmaDecConfig = NULL;
    libMgr = NULL;

    OMX_INIT_STRUCT(&sPortDef, OMX_PARAM_PORTDEFINITIONTYPE);
    sPortDef.nPortIndex = AUDIO_FILTER_INPUT_PORT;
    sPortDef.eDir = OMX_DirInput;
    sPortDef.eDomain = OMX_PortDomainAudio;
    sPortDef.format.audio.eEncoding = OMX_AUDIO_CodingWMA;
    sPortDef.bPopulated = OMX_FALSE;
    sPortDef.bEnabled = OMX_TRUE;
    sPortDef.nBufferCountMin = 1;
    sPortDef.nBufferCountActual = 3;
    sPortDef.nBufferSize = 1024;
    ret = ports[AUDIO_FILTER_INPUT_PORT]->SetPortDefinition(&sPortDef);
    if(ret != OMX_ErrorNone) {
        LOG_ERROR("Set port definition for port[%d] failed.\n", AUDIO_FILTER_INPUT_PORT);
        return ret;
    }

    sPortDef.nPortIndex = AUDIO_FILTER_OUTPUT_PORT;
    sPortDef.eDir = OMX_DirOutput;
    sPortDef.eDomain = OMX_PortDomainAudio;
    sPortDef.format.audio.eEncoding = OMX_AUDIO_CodingPCM;
    sPortDef.bPopulated = OMX_FALSE;
    sPortDef.bEnabled = OMX_TRUE;
    sPortDef.nBufferCountMin = 1;
    sPortDef.nBufferCountActual = 3;
    sPortDef.nBufferSize = WMA10D_OUTBUFF_SIZE;
	ret = ports[AUDIO_FILTER_OUTPUT_PORT]->SetPortDefinition(&sPortDef);
	if(ret != OMX_ErrorNone) {
		LOG_ERROR("Set port definition for port[%d] failed.\n", 0);
		return ret;
	}

	OMX_INIT_STRUCT(&WmaType, OMX_AUDIO_PARAM_WMATYPE);
	OMX_INIT_STRUCT(&WmaTypeExt, OMX_AUDIO_PARAM_WMATYPE_EXT);
	OMX_INIT_STRUCT(&PcmMode, OMX_AUDIO_PARAM_PCMMODETYPE);

	WmaTypeExt.nPortIndex = AUDIO_FILTER_INPUT_PORT;
	WmaTypeExt.nBitsPerSample = 16;

	WmaType.nPortIndex = AUDIO_FILTER_INPUT_PORT;
	WmaType.nChannels = 2;
	WmaType.nSamplingRate = 44100;
	WmaType.nBitRate = 64000;
	WmaType.eFormat = OMX_AUDIO_WMAFormat9;

	PcmMode.nPortIndex = AUDIO_FILTER_OUTPUT_PORT;
	PcmMode.nChannels = 2;
	PcmMode.nSamplingRate = 44100;
	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;

	dwChannelMask = 0;    
	nAdvancedEncodeOpt = 0;
	nAdvancedEncodeOpt2 = 0;

	libMgr = FSL_NEW(ShareLibarayMgr, ());
	if(libMgr == NULL)
		return OMX_ErrorInsufficientResources;

	hLib = libMgr->load((OMX_STRING)"lib_wma10_dec_v2_arm12_elinux.so");
	if(hLib == NULL) {
		LOG_WARNING("Can't load library lib_wma10_dec_v2_arm12_elinux.\n");
		FSL_DELETE(libMgr);
		return OMX_ErrorComponentNotFound;
	}

	pWMADQueryMem = (tWMAFileStatus (*)( WMADDecoderConfig *))libMgr->getSymbol(hLib, (OMX_STRING)"eWMADQueryMem");
	pInitWMADecoder = (tWMAFileStatus (*)(WMADDecoderConfig *, WMADDecoderParams *, WMAD_UINT8 *, WMAD_INT32 ))libMgr->getSymbol(hLib, (OMX_STRING)"eInitWMADecoder");
	pWMADecodeFrame = (tWMAFileStatus (*)(WMADDecoderConfig *,
						WMADDecoderParams *,
						WMAD_INT16 *,
						WMAD_INT32))libMgr->getSymbol(hLib,(OMX_STRING)"eWMADecodeFrame");

	if(pWMADQueryMem == NULL || pInitWMADecoder == NULL || pWMADecodeFrame == NULL) {
		libMgr->unload(hLib);
		FSL_DELETE(libMgr);
		return OMX_ErrorComponentNotFound;
	}

	return ret;
}
コード例 #14
0
GMOutbandSubtitleSource::~GMOutbandSubtitleSource()
{
    if(mSubtitleParser)
        FSL_DELETE(mSubtitleParser);
}
コード例 #15
0
OMX_ERRORTYPE UniaDecoder::CreateDecoderInterface()
{
    OMX_S32 ret = OMX_ErrorNone;

    do{

        tUniACodecQueryInterface  myQueryInterface;

        if(NULL == role || decoderLibName == NULL){
            ret = OMX_ErrorInsufficientResources;
            break;
        }
        if(optionaDecoderlLibName){
            hLib = libMgr->load((fsl_osal_char *)optionaDecoderlLibName);
            LOG_DEBUG("Audio Decoder library name 1: %s\n", optionaDecoderlLibName);
        }

        if(hLib == NULL){
            hLib = libMgr->load((fsl_osal_char *)decoderLibName);
            LOG_DEBUG("Audio Decoder library name 2: %s\n", decoderLibName);
        }

        if(NULL == hLib){
            LOG_ERROR("Fail to open Decoder library for %s\n", role);
            ret = OMX_ErrorComponentNotFound;
            break;
        }

        IDecoder = (UniaDecInterface *)FSL_MALLOC(sizeof(UniaDecInterface));
        if(IDecoder == NULL){
            ret = OMX_ErrorUndefined;
        }
        fsl_osal_memset(IDecoder,0 ,sizeof(UniaDecInterface));

        myQueryInterface = (tUniACodecQueryInterface)libMgr->getSymbol(hLib, (fsl_osal_char *)"UniACodecQueryInterface");
        if(NULL == myQueryInterface)
        {
            LOG_ERROR("Fail to query decoder interface\n");
            ret = OMX_ErrorNotImplemented;
            break;
        }

        ret = myQueryInterface(ACODEC_API_GET_VERSION_INFO, (void **)&IDecoder->GetVersionInfo);

        ret |= myQueryInterface(ACODEC_API_CREATE_CODEC, (void **)&IDecoder->CreateDecoder);
        ret |= myQueryInterface(ACODEC_API_DELETE_CODEC, (void **)&IDecoder->DeleteDecoder);
        ret |= myQueryInterface(ACODEC_API_RESET_CODEC, (void **)&IDecoder->ResetDecoder);
        ret |= myQueryInterface(ACODEC_API_SET_PARAMETER, (void **)&IDecoder->SetParameter);
        ret |= myQueryInterface(ACODEC_API_GET_PARAMETER, (void **)&IDecoder->GetParameter);
        ret |= myQueryInterface(ACODEC_API_DEC_FRAME, (void **)&IDecoder->DecodeFrame);
        ret |= myQueryInterface(ACODEC_API_GET_LAST_ERROR, (void **)&IDecoder->GetLastError);

        if(ret != OMX_ErrorNone){
            LOG_ERROR("Fail to query decoder API\n");
            ret = OMX_ErrorNotImplemented;
            break;
        }

    }while(0);

    if(ret != OMX_ErrorNone){
        LOG_ERROR("UniaDecoder::CreateDecoderInterface ret=%d",ret);
        if (hLib)
            libMgr->unload(hLib);
        hLib = NULL;
        FSL_FREE(IDecoder);
        FSL_DELETE(libMgr);
    }

    return (OMX_ERRORTYPE)ret;
}