⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 em86xx.cpp

📁 sigmadesign smp8623 gui source code ,bingo
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			m_MpegParams.OutputDualMode = m_dualMode;			m_MpegParams.OutputSpdif = m_SPDIFMode;			m_MpegParams.OutputLfe = (m_AudioChannels == 6 ? TRUE : FALSE);			m_MpegParams.OutputChannels = (m_AudioChannels == 6 ? Audio_Out_Ch_LCRLsRs : Audio_Out_Ch_LR);			err = DCCSetAudioMpegFormat((struct DCCAudioSource *)m_pAudioSource, &m_MpegParams);		}		else if (parameters.audioType == CURACAO_AUDIO_AC3){			RMDBGLOG((QBDBG, "Codec : AC3\n"));			m_Ac3Params.CompMode = CompMode_line_out;			m_Ac3Params.DynScaleHi = 0x10000000;			m_Ac3Params.DynScaleLo = 0x10000000;			m_Ac3Params.PcmScale = 0x10000000;			m_Ac3Params.OutputSurround20 = SurroundAsStream;			m_Ac3Params.OutputLfe = (m_AudioChannels == 6 ? TRUE : FALSE);			m_Ac3Params.OutputChannels = (m_AudioChannels == 6 ? Ac3_LCRLsRs : Ac3_LR);			m_Ac3Params.OutputDualMode = m_dualMode;			m_Ac3Params.OutputSpdif = OutputSpdif_Compressed;			m_Ac3Params.OutputSpdif = m_SPDIFMode;			err = DCCSetAudioAc3Format(m_pAudioSource, &m_Ac3Params);		}		else if (parameters.audioType == CURACAO_AUDIO_DTS){			RMDBGLOG((QBDBG, "Codec : DTS\n"));#ifdef GUI_REFID_3			m_DtsParams.OutputSpdif = OutputSpdif_NoDecodeCompressed;#else			m_DtsParams.OutputSpdif = m_SPDIFMode;#endif			m_DtsParams.OutputDualMode = m_dualMode;			m_DtsParams.OutputChannels = (m_AudioChannels == 6 ? Dts_LCRLsRs : Dts_LR);			err = DCCSetAudioDtsFormat(m_pAudioSource, &m_DtsParams);		}		else {			enum AudioDecoder_Codec_type codec;			DCCAudioDecoderFormat DCCformat;			switch (parameters.audioType){			case CURACAO_AUDIO_MLP:				RMDBGLOG((QBDBG, "Codec : DVD AUDIO\n"));				codec = AudioDecoder_Codec_DVDA;				break;			case CURACAO_AUDIO_AAC:				RMDBGLOG((QBDBG, "Codec : AAC\n"));				codec = AudioDecoder_Codec_AAC;				break;			case CURACAO_AUDIO_UNKNOWN:			default:				RMDBGLOG((QBDBG, "Cannot set audio format : Unknown audio type\n"));				return RM_ERROR;			}			DCCformat.Codec = codec;			err = DCCSetAudioDecoderSourceFormat(m_pAudioSource, &DCCformat);		}		if (RMFAILED(err)) {			RMDBGLOG((ENABLE, "!!!!!! Cannot set audio decoder format %s !!!!!!\n", RMstatusToString(err)));			return err;		}	}	err = DCCPlayAudioSource(m_pAudioSource);	if(err != RM_OK){		RMDBGLOG((ENABLE, "!!!!!! Error DCCPlayAudioSource - %s !!!!!!\n", RMstatusToString(err)));		CleanallAndExit();	}#ifndef NO_STC#else	// set video STC to audio STC	struct DisplayBlock_STBInfo_in_type stb_in;	struct DisplayBlock_STBInfo_out_type stb_out;	stb_in.STBNumber = m_video_timer;	RUAExchangeProperty(m_pInstance, DisplayBlock, RMDisplayBlockPropertyID_STBInfo,		&stb_in, sizeof(stb_in), &stb_out, sizeof(stb_out));	struct DisplayBlock_STBValue_type stb_value;	stb_value.STBNumber = m_audio_timer;	stb_value.Value = stb_out.Value;	RUASetProperty(m_pInstance, DisplayBlock, RMDisplayBlockPropertyID_STBValue,		&stb_value, sizeof(stb_value), 0);	DCCSetSystemTimeScale(m_pDCC, m_audio_timer, MPEG2_TIR);#endif	if(m_pDemuxSource != NULL){ // restore audio		RUASetProperty(m_pInstance, m_hw_demux_program0, RMDemuxProgramPropertyID_OutputControl,			&m_demuxOutCtrl, sizeof(m_demuxOutCtrl), 0);		DCCPlayDemuxSource(m_pDemuxSource);	}	RMMemcpy((void*)&m_audioFormat, (void*)&parameters, sizeof(typeCuracaoAudioParameters));	m_isFirstSystemTimeStamp  = TRUE;	if (m_bHDMItv) {		UpdateHDMIAudioFormat();	}	return RM_OK;}RMstatus RMem86xxDecoder::SetSubpicturePalette(RMuint8 sppal[16*4]){	RMstatus status;	struct SpuDecoder_Palette_type spu_lut;	RMuint32 i;	RMDBGLOG((QBDBG, "Set spu palette ...\n"));	for (i=0; i<16*4; i++) {		spu_lut.LUT[i] = *(sppal+i);// DVD format: 0, Y,Cr,Cb	}	status = RUASetProperty(m_pInstance, m_spu_decoder, RMSpuDecoderPropertyID_Palette,				&spu_lut, sizeof(spu_lut), 0);	if(status != RM_OK){		RMDBGLOG((ENABLE, "!!!!!! Error SpuDecoder set palette - %s !!!!!!\n", RMstatusToString(status)));		CleanallAndExit();	}	RMDBGLOG((QBDBG, "done with palette ...\n"));	return status;}RMstatus RMem86xxDecoder::SubPictureHilight (RMuint16 leftb, RMuint16 topb,					    RMuint16 rightb, RMuint16 bottomb,					    RMuint32 wColor, RMuint32 wContrast){	RMstatus status;	RMDBGLOG((QBDBG, "Set highlight :\n\tleft : %d,\n\tright : %d,\n\ttop : %d,\n\tbottom : %d,\n\tcolor : 0x%lx,\n\tcontrast : %lu ...\n",	       leftb, rightb, topb, bottomb, wColor, wContrast));	// Fix for DVD-Audio test disc ATD_001 Version 1.0//	m_hiLight.leftb = leftb+9;	m_hiLight.leftb = leftb;	m_hiLight.topb = topb;	m_hiLight.rightb = rightb;	m_hiLight.bottomb = bottomb;	m_hiLight.color = wColor;	m_hiLight.contrast = wContrast;	m_hiLight.pts = 0x1FFFFffffULL;	m_hiLight.on = m_HighlightOn;	if (!m_HighlightOn)	{		// work-around for bug 3951 (spu cmd fifo is full when HilightOn() is called)		// Since the highlight is currently off right now, we'll just save the data.		// The data is sent again when highlight is enabled with HilightOn() anyway.		// This saves us one entry for the spu cmd fifo		status = RM_OK;	}	else		status = RUASetProperty(m_pInstance, m_spu_decoder, RMSpuDecoderPropertyID_Hilight,				&m_hiLight, sizeof(m_hiLight), 0);	RMDBGLOG((QBDBG, "... done with hilights, res = %s\n", RMstatusToString(status)));	return status;}RMstatus RMem86xxDecoder::SubPictureOn (RMbool On){	RMstatus status;	if(m_SubpictureOn != On){		RMDBGLOG((QBDBG, "spu: %s -> %s ...\n", m_SubpictureOn ? "ON" : "OFF", On ? "ON" : "OFF"));		status = RUASetProperty(m_pInstance, m_spu_decoder,					RMSpuDecoderPropertyID_SubpictureOn,					&On, sizeof(On), 0);		if(status == RM_OK){			m_SubpictureOn = On;			RMDBGLOG((QBDBG, "... suceeded\n"));		}		else			RMDBGLOG((QBDBG, "... failed\n"));	}	else		status = RM_OK;	return status;}RMstatus RMem86xxDecoder::HilightOn (RMbool On){	RMstatus status;	if(m_HighlightOn != On){		RMDBGLOG((QBDBG, "hilight : %s -> %s ...\n", m_HighlightOn ? "ON" : "OFF", On ? "ON" : "OFF"));		m_hiLight.on = On;		status = RUASetProperty(m_pInstance, m_spu_decoder, RMSpuDecoderPropertyID_Hilight,					&m_hiLight, sizeof(m_hiLight), 0);		if(status == RM_OK){			m_HighlightOn = On;			RMDBGLOG((QBDBG, "... succeeded\n"));		}		else			RMDBGLOG((QBDBG, "... failed\n"));	}	else		status = RM_OK;	return status;}RMstatus RMem86xxDecoder::VideoMode (RMuint32 PTS,				     RMdvdVideoMode videoMode,				     RMbool bForce/* = FALSE*/){	RMstatus err;	RMuint8 ar_x, ar_y;	if (m_videoMode == videoMode && !bForce)		return RM_OK;	m_videoMode = videoMode;	enum SpuDecoder_StreamType_type SpuStreamType;	struct SurfaceAspectRatio_type SurfaceAspectRatio;	SurfaceAspectRatio.type = EMhwlibAspectRatio_Display;	RMDBGLOG((QBDBG, "********* SET VIDEO MODE ******************\n"));	switch (m_videoMode) {	case RM_DVD_VIDEO_4_3__16_9_ZOOM_ON:		// crop top and bottom		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_4_3__16_9_ZOOM_ON\r\n"));		SurfaceAspectRatio.ar.X = 4;		SurfaceAspectRatio.ar.Y = 3;		ar_x = 16;		ar_y = 9;		SpuStreamType = SpuDecoder_StreamType_4by3;		break;	case RM_DVD_VIDEO_4_3__16_9_ZOOM_OFF:		// black band on sides		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_4_3__16_9_ZOOM_OFF\r\n"));		SurfaceAspectRatio.ar.X = 4;		SurfaceAspectRatio.ar.Y = 3;		ar_x = 16;		ar_y = 9;		SpuStreamType = SpuDecoder_StreamType_4by3;		break;	case RM_DVD_VIDEO_16_9__16_9_RECT:		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_16_9__16_9_RECT\r\n"));		SurfaceAspectRatio.ar.X = 16;		SurfaceAspectRatio.ar.Y = 9;		ar_x = 16;		ar_y = 9;		SpuStreamType = SpuDecoder_StreamType_Wide;		break;	case RM_DVD_VIDEO_16_9__4_3_PANSCAN:		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_16_9__4_3_PANSCAN\r\n"));		SurfaceAspectRatio.ar.X = 16;		SurfaceAspectRatio.ar.Y = 9;		ar_x = 4;		ar_y = 3;		m_scalingMode = EMhwlibScalingMode_PanScan;		SpuStreamType = SpuDecoder_StreamType_PanScan;		m_blackstrip.Horizontal = 0;		m_blackstrip.Vertical = 0;		break;	case RM_DVD_VIDEO_16_9__4_3_LETTERBOX:		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_16_9__4_3_LETTERBOX\r\n"));		SurfaceAspectRatio.ar.X = 16;		SurfaceAspectRatio.ar.Y = 9;		ar_x = 4;		ar_y = 3;		m_scalingMode = EMhwlibScalingMode_LetterBox;		SpuStreamType = SpuDecoder_StreamType_Letterbox;		m_blackstrip.Horizontal = 4096;		m_blackstrip.Vertical = 4096;		break;	default:	case RM_DVD_VIDEO_4_3__4_3_RECT:		RMDBGLOG((QBDBG, "SetAspectRatioAndZoom RM_DVD_VIDEO_4_3__4_3_RECT\r\n"));		SurfaceAspectRatio.ar.X = 4;		SurfaceAspectRatio.ar.Y = 3;		ar_x = 4;		ar_y = 3;		m_scalingMode = EMhwlibScalingMode_LetterBox;		SpuStreamType = SpuDecoder_StreamType_4by3;		m_blackstrip.Horizontal = 0;		m_blackstrip.Vertical = 0;		break;	}#if 0	Stop(TRUE);	if (m_speed == 256)		Play();	else if (m_speed > 0)		Forward(m_speed, FALSE);	else // if (m_speed < 0)		Backward(-m_speed, FALSE);#endif	RUASetProperty(m_pInstance, m_surfaceID, RMGenericPropertyID_ScalingMode, &m_scalingMode, sizeof(m_scalingMode), 0);	RUASetProperty(m_pInstance, m_surfaceID, RMGenericPropertyID_BlackStripMode, &m_blackstrip, sizeof(m_blackstrip), 0);	RUASetProperty(m_pInstance, m_surfaceID, RMGenericPropertyID_Validate, NULL, 0, 0);	DCCSetRouteDisplayAspectRatio(m_pDCC, DCCRoute_Main, ar_x, ar_y);	RUASetProperty(m_pInstance, m_spu_decoder, RMSpuDecoderPropertyID_StreamType, &SpuStreamType, sizeof(SpuStreamType), 0);	if ( m_hw_demux_program0 ) {		err = RUASetProperty(m_pInstance, m_hw_demux_program0, RMDemuxProgramPropertyID_VideoInbandSurfaceAspectRatio, &SurfaceAspectRatio, sizeof(SurfaceAspectRatio), 0);		if (RMFAILED(err))			RMDBGLOG((QBDBG, "VideoInbandSurfaceAspectRatio failed\r\n"));		err = RUASetProperty(m_pInstance, m_hw_demux_program0, RMDemuxProgramPropertyID_VideoInbandScalingMode, &m_scalingMode, sizeof(m_scalingMode), 0);		if (RMFAILED(err))			RMDBGLOG((QBDBG, "VideoInbandScalingMode failed\r\n"));	}	else {		err = RUASetProperty(m_pInstance, m_video_decoder, RMVideoDecoderPropertyID_InbandSurfaceAspectRatio, &SurfaceAspectRatio, sizeof(SurfaceAspectRatio), 0);		if (RMFAILED(err))			RMDBGLOG((QBDBG, "InbandSurfaceAspectRatio failed\r\n"));		err = RUASetProperty(m_pInstance, m_video_decoder, RMVideoDecoderPropertyID_InbandScalingMode, &m_scalingMode, sizeof(m_scalingMode), 0);		if (RMFAILED(err))			RMDBGLOG((QBDBG, "InbandScalingMode failed\r\n"));	}#ifdef GUI_REFID_3	if (m_connector == DCCVideoConnector_SVIDEO || m_connector == DCCVideoConnector_COMPONENT)	{		if (m_videoMode == RM_DVD_VIDEO_16_9__4_3_PANSCAN)			ScaleDisplay(DispMainVideoScaler, 0, 0, 4096, 4096);		else if (m_standard == EMhwlibTVStandard_NTSC_M)			ScaleDisplay(DispMainVideoScaler, 3, 0, (4096 * 714) / 720, 4096);		else if (m_standard == EMhwlibTVStandard_PAL_BG)			ScaleDisplay(DispMainVideoScaler, 9, 0, (4096 * 702) / 720, 4096);	}#endif	return RM_OK;}RMstatus RMem86xxDecoder::WaitForEOS(RMbool audio, RMbool video, RMuint32 timeout){	static struct RUAEvent e[4];	struct RUAEvent* pEvents = e;	RMuint32 nEvents = 0;	struct InbandCommand_type InbandCmd, InbandCmd_seq;	InbandCmd.Tag = EMhwlibInbandCommand_EOS | INBAND_COMMAND_TYPE_BYTECOUNT | INBAND_COMMAND_ACTION_CONTINUE | INBAND_COMMAND_NO_COORDINATE;	InbandCmd.Coordinate = 0;	InbandCmd_seq.Tag = 0;	InbandCmd_seq.Coordinate = 0;	if(video) {		// display		e[nEvents].ModuleID = EMHWLIB_MODULE(DisplayBlock, 0);		e[nEvents].Mask = EMHWLIB_DISPLAY_EVENT_ID(m_surfaceID);		RUAResetEvent(m_pInstance, &e[nEvents]);		RUASetProperty(m_pInstance, e[nEvents].ModuleID, RMGenericPropertyID_EnableEvent, &e[nEvents].Mask, sizeof(e[nEvents].Mask), 0);		nEvents++;		e[nEvents].ModuleID = m_video_decoder;		e[nEvents].Mask = RUAEVENT_INBAND_COMMAND;		RUAResetEvent(m_pInstance, &e[nEvents]);		if (m_pDemuxSource == NULL) {			InbandCmd.Tag = INBAND_COMMAND_TAG_END_SEQUENCE | INBAND

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -