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

📄 cclarion.c

📁 这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的参考价值.
💻 C
字号:
/********************************************************************************************//*  cclarion.c : specific code for CLARION board*  REALmagic Quasar Hardware Library*  Created by Aurelia Popa-Radu*  Copyright Sigma Designs Inc*  Sigma Designs Proprietary and confidential*  Created on 8/7/01*  Description:/********************************************************************************************//****h* HwLib/CClarion_Implementation * DESCRIPTION *  CClarion implementation of the IDecoderBoard interface. * CLARION board uses EM840X, Pcm1723 components to implement TV output. * Identified by HwLib reading MD5,MD4,MD3,MD2 pins = 0000 (MDCFG_REFERENCE). * PIO0	- IIC Clock for Eeprom * PIO1	- IIC Data for Eeprom * PIO2 -  * PIO3 -  * PIO4	-  * PIO5	- MC for Pcm1723 * PIO6 - MD for Pcm1723 * PIO7 - ML for Pcm1723 * Implementation based on CVE2000. * Specific implementation: * QRESULT CClarion__VidSetVGATV(IDecoderBoard* pIDecoderBoard, *		DWORD VideoRunning, DWORD TvOut) * QRESULT CClarion__AudioSetSampleRate(IDecoderBoard* pIDecoderBoard, DWORD Rate)/******************************************************************************/#include "pch.h"#if defined CLARION_BRD#include "cqsrbrd.h"QRESULT CClarion__VidSetVGATV(IDecoderBoard* pIDecoderBoard, DWORD VideoRunning, DWORD TvOut){	CQuasarBoard *this = (CQuasarBoard*) pIDecoderBoard;	if (TvOut == SET_TV)	{		this->TvOut = TvOut;		ITvEncoder_SetCurrentYcYuvRgb(this->m_pITvEncoder, this->ReqYcYuvRgb);		CVE2000__VidSetTV(pIDecoderBoard, VideoRunning);		return Q_OK;	}	return E_NOT_SUPPORTED;}QRESULT CClarion__AudioSetSampleRate(IDecoderBoard* pIDecoderBoard, DWORD Rate){	CQuasarBoard *this = (CQuasarBoard*) pIDecoderBoard;	BYTE j;	WORD Pcm1723[4];	if( (!(this->BoardAudioRate & FORCED_HW_UPDATE)) && (this->BoardAudioRate == Rate) )		return Q_OK;	this->BoardAudioRate = Rate & ~FORCED_HW_UPDATE;	// use most significant bit to force programming	QDbgLog((QLOG_TRACE, QDebugLevelTrace, TEXT(" CQB__AudioSetSampleRate= %lu"), this->BoardAudioRate));	IDecoder_SetAudioSampleRate(this->m_pIDecoder, this->BoardAudioRate);//	Pcm1723 is the only DAC that generates by it self the audio clock	Pcm1723[0] = 0x000 | 0x1FF;	// 0x1FF left attenuation//	Pcm1723[1] = 0x200 | 0x1FF;	// 0x3FF right attenuation	Pcm1723[1] = 0x200 | 0x100;	// right attenuation controlled by left register if bit2 in reg3 is set//	Pcm1723[2] = 0x400 | 0x130;	// 0x530 stereo, 24 bits//	Pcm1723[2] = 0x400 | 0x120;	// 0x520 stereo, 16 bits	Pcm1723[2] = 0x400 | 0x0D0;	// L/R channels reversed//	Pcm1723[2] |= 4;	// operational control//	Pcm1723[2] |= 2;	// de-emphasis//	Pcm1723[2] |= 1;	// soft mute	Pcm1723[3] = (this->BoardAudioRate == 32000) ? 0x80 : ((this->BoardAudioRate == 44100) ? 0x00 : 0x40);	Pcm1723[3] |= 0x600 | 0x08;	// 0x649 for 48kHz, 256 divider, normal	Pcm1723[3] |= 1;		// I2S / normal	Pcm1723[3] |= 0x100;	// IZD - zero detection	Pcm1723[3] |= 0x4;		// attenuation control from reg0 to both left and right//	Pcm1723[3] |= 2;		// LRP - left, right polarity	// PIO7 - ML, PIO5 - MC, PIO6 - MD	for (j=0;j<sizeof(Pcm1723)/sizeof(WORD);j++)		WritePcmDacReg(pIDecoderBoard, j, Pcm1723[j], PIO7, PIO5, PIO6);	return Q_OK;}void CClarion__InitVtable(IDecoderBoard* pIDecoderBoard){	CQuasarBoard* this = (CQuasarBoard*) pIDecoderBoard;	this->lpVtbl->UpdateOverlay				= CQuasarBoard__TVVMIUpdateVideoWindow;	this->lpVtbl->HwReset					= CVE2000__HwReset;	this->lpVtbl->SetCustomTvHdtv			= CVE2000__SetCustomTvHdtv;	this->lpVtbl->VidSetVGATV				= CClarion__VidSetVGATV;	this->lpVtbl->AudioSetSampleRate		= CClarion__AudioSetSampleRate;}QRESULT CClarion__SpecificCreateInstance(IDecoderBoard* pIDecoderBoard, DWORD dwInstance){	CQuasarBoard* this = (CQuasarBoard*) pIDecoderBoard;	this->pRegistry->Ccir_656 = CCIR_656;	this->pRegistry->SyncEnable = 0;	// by default disable VS,HS,VVLD for 656	this->pRegistry->TvOut = SET_TV | SET_NTSC | SET_ONETOONE;	this->TvOut = SET_TV;	// overwrite necessary values	CClarion__InitVtable(pIDecoderBoard);	this->DeviceId = VENTURA2000_DEVICEID;	this->BoardVersion = CLARION;	this->SubId = (this->BoardVersion>>8);	if( (IDecoder_ReadReg(this->m_pIDecoder, DRAM_startup) & 0x3C) != MDCFG_CLARION )		QDbgLog((QLOG_TRACE, QDebugLevelWarning, TEXT("\n\nERROR: Create CLARION is FORCED !") ));	{	DWORD Value = I2SInv_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN;	IDecoder_SetProperty(this->m_pIDecoder,		DECODER_SET, edecAudioInOutConfig, 0, &Value, sizeof(DWORD), NULL);	Value = 24;	IDecoder_SetProperty(this->m_pIDecoder,		DECODER_SET, edecAudioDacBitsPerSample, 0, &Value, sizeof(DWORD), NULL);	}	return Q_OK;}#endif	// CLARION_BRD#if defined CLARION_BRD && !defined ANY_BRDQRESULT CreateInstance(DWORD* pInstance, void* pHwLibConf){	QRESULT qr = CommonCreateInstance(pInstance, pHwLibConf);	if( QSUCCEEDED(qr) )		qr = CClarion__SpecificCreateInstance(g_pIDecoderBoard[*pInstance], *pInstance);	if( QFAILED(qr) )	{		CQuasarBoard__DeleteObjects(g_pIDecoderBoard[*pInstance]);		g_pIDecoderBoard[*pInstance] = 0;		return E_CREATE_INSTANCE_FAILED;	}	return Q_OK;}#endif	// CLARION_BRD && !ANY_BRD

⌨️ 快捷键说明

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