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

📄 mcrvsn.c

📁 这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的参考价值.
💻 C
📖 第 1 页 / 共 2 页
字号:
/********************************************************************************************//*  mcrvsn.c : TvEncoder macrovision code*  REALmagic Quasar Hardware Library*  Created by Aurelia Popa-Radu*  Copyright Sigma Designs Inc*  Sigma Designs Proprietary and confidential*  Created on 6/28/01*  Description:/********************************************************************************************/#include "pch.h"#include "ci2c.h"#include "ctvenc.h"#include "regs840x.h"void CSigmaTv__StartAccessReg(ITvEncoder* pITvEncoder);void CSigmaTv__EndAccessReg(ITvEncoder* pITvEncoder);//////////////////////////////////////////////////////////////////////////////#include "tvtable.h"// macrovision related tables for EM84xx// N22 is one bit coefficient. It is 1 for macrovision tests// N22 enables the RGB macrovision. It should be 0 for any DVD macrovision.WORD SigmaTvPalMacrovisionOn[] = {		0x0036, // N22N0	0x1F33		0x221A, // N2N1		0x1F34	    0x222A, // N4N3		0x1F35		0x0205, // N6N5		0x1F36		0x1C00, // N8N7		0x1F37		0x143D, // N10N9	0x1F38		0x03FE, // N11		0x1F39		0x0154, // N12		0x1F3A		0x7EFE, // N14N13	0x1F3B		0x0060, // N16N15	0x1F3C		0x0008, // N18N17	0x1F3D		0x0704, // N20N19	0x1F3E		0x0155  // N21		0x1F3F};WORD SigmaTvNtscMacrovision3[] = {		0x003E, // N22N0	0x1F33		0x1517, // N2N1		0x1F34	    0x1521, // N4N3		0x1F35		0x0505, // N6N5		0x1F36		0x1B02, // N8N7		0x1F37		0x241B, // N10N9	0x1F38		0x07F8, // N11		0x1F39		0x0000, // N12		0x1F3A		0x0F0F, // N14N13	0x1F3B		0x0160, // N16N15	0x1F3C		0x000A, // N18N17	0x1F3D		0x0405, // N20N19	0x1F3E		0x03FF  // N21		0x1F3F};WORD SigmaTvNtscMacrovision2[] = {		0x003E, // N22N0	0x1F33		0x111D, // N2N1		0x1F34	    0x1125, // N4N3		0x1F35		0x0701, // N6N5		0x1F36		0x1B00, // N8N7		0x1F37		0x241B, // N10N9	0x1F38		0x07F8, // N11		0x1F39		0x0000, // N12		0x1F3A		0x0F0F, // N14N13	0x1F3B		0x0160, // N16N15	0x1F3C		0x000A, // N18N17	0x1F3D		0x0405, // N20N19	0x1F3E		0x03FF  // N21		0x1F3F};WORD SigmaTvNtscMacrovision1[] = {		0x0036, // N22N0	0x1F33		0x0000, // N2N1		0x1F34	    0x0000, // N4N3		0x1F35		0x0000, // N6N5		0x1F36		0x1B00, // N8N7		0x1F37		0x241B, // N10N9	0x1F38		0x07F8, // N11		0x1F39		0x0000, // N12		0x1F3A		0x0F0F, // N14N13	0x1F3B		0x0060, // N16N15	0x1F3C		0x0000, // N18N17	0x1F3D		0x0000, // N20N19	0x1F3E		0x0000  // N21		0x1F3F};WORD SigmaTvMacrovisionOff[] = {		0x0000, // N22N0	0x1F33		0x0000, // N2N1		0x1F34	    0x0000, // N4N3		0x1F35		0x0000, // N6N5		0x1F36		0x0000, // N8N7		0x1F37		0x0000, // N10N9	0x1F38		0x0000, // N11		0x1F39		0x0000, // N12		0x1F3A		0x0000, // N14N13	0x1F3B		0x0000, // N16N15	0x1F3C		0x0000, // N18N17	0x1F3D		0x0000, // N20N19	0x1F3E		0x0000  // N21		0x1F3F};WORD SigmaTv480PMacrovisionOn[] = {		0x0024, // N22N0	0x1F33		0x0000, // N2N1		0x1F34	    0x0000, // N4N3		0x1F35		0x0000, // N6N5		0x1F36		0x0300, // N8N7		0x1F37		0x0003, // N10N9	0x1F38		0x07F8, // N11		0x1F39		0x07F8, // N12		0x1F3A		0x0F00, // N14N13	0x1F3B		0x0000, // N16N15	0x1F3C		0x0000, // N18N17	0x1F3D		0x0000, // N20N19	0x1F3E		0x0000  // N21		0x1F3F};// line 6 cannot have the pulses with our design. We only // get them on lines 7-13.WORD SigmaTv576PMacrovisionOn[] = {		0x0024, // N22N0	0x1F33		0x0000, // N2N1		0x1F34	    0x0000, // N4N3		0x1F35		0x0000, // N6N5		0x1F36		0x0700, // N8N7		0x1F37		0x0403, // N10N9	0x1F38		0x007F, // N11		0x1F39		0x007F, // N12		0x1F3A		0x0F00, // N14N13	0x1F3B		0x0000, // N16N15	0x1F3C		0x0000, // N18N17	0x1F3D		0x0000, // N20N19	0x1F3E		0x0000  // N21		0x1F3F};////////////////////////////////////////////////////////////////////////////// macrovision related tables for AD717xBYTE MacroVision11[] = {	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0xfe,	// 0x13= 19		0x1E= 30 macrovision register	0x45,	// 0x14= 20		0x1F= 31 macrovision register	0x85,	// 0x15= 21		0x20= 32 macrovision register 	0x54,	// 0x16= 22		0x21= 33 macrovision register	0xeb,	// 0x17= 23		0x22= 35 macrovision register	0xb6,	// 0x18= 24		0x23= 36 macrovision register	0x91,	// 0x19= 25		0x24= 37 macrovision register	0xf8,	// 0x1a= 26		0x25= 38 macrovision register	0x07,	// 0x1b= 27		0x26= 39 macrovision register	0x00,	// 0x1c= 28		0x27= 40 macrovision register	0xc0,	// 0x1d= 29		0x28= 41 macrovision register	0xc3,	// 0x1e= 30		0x29= 42 macrovision register	0x03,	// 0x1f= 31		0x2a= 43 macrovision register	0x58,	// 0x20= 32		0x2b= 44 macrovision register	0x85,	// 0x21= 33		0x2c= 45 macrovision register	0xca,	// 0x22= 34		0x2d= 46 macrovision register	0xff,	// 0x23= 35		0x2e= 47 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE MacroVision10[] = {	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0x7e,	// 0x13= 19		0x1E= 30 macrovision register	0x07,	// 0x14= 20				 macrovision register	0x95,	// 0x15= 21				 macrovision register 	0x50,	// 0x16= 22				 macrovision register	0xce,	// 0x17= 23				 macrovision register	0xb6,	// 0x18= 24				 macrovision register	0x91,	// 0x19= 25				 macrovision register	0xf8,	// 0x1a= 26				 macrovision register	0x07,	// 0x1b= 27				 macrovision register	0x00,	// 0x1c= 28				 macrovision register	0xc0,	// 0x1d= 29				 macrovision register	0xc3,	// 0x1e= 30				 macrovision register	0x03,	// 0x1f= 31				 macrovision register	0x58,	// 0x20= 32				 macrovision register	0x85,	// 0x21= 33				 macrovision register	0xca,	// 0x22= 34				 macrovision register	0xff,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE MacroVision01[] = {	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0x76,	// 0x13= 19		0x1E= 30 macrovision register	0x07,	// 0x14= 20				 macrovision register	0x95,	// 0x15= 21				 macrovision register 	0x50,	// 0x16= 22				 macrovision register	0xce,	// 0x17= 23				 macrovision register	0xb6,	// 0x18= 24				 macrovision register	0x91,	// 0x19= 25				 macrovision register	0xf8,	// 0x1a= 26				 macrovision register	0x07,	// 0x1b= 27				 macrovision register	0x00,	// 0x1c= 28				 macrovision register	0xc0,	// 0x1d= 29				 macrovision register	0xc3,	// 0x1e= 30				 macrovision register	0x03,	// 0x1f= 31				 macrovision register	0x58,	// 0x20= 32				 macrovision register	0x85,	// 0x21= 33				 macrovision register	0xca,	// 0x22= 34				 macrovision register	0xff,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE PalMacrovisionOff[] ={	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0x80,	// 0x13= 19		0x1E= 30 macrovision register	0x16,   // 0x14= 20				 macrovision register	0xaa,   // 0x15= 21				 macrovision register	0x61,   // 0x16= 22				 macrovision register	0x05,   // 0x17= 23				 macrovision register	0xd7,   // 0x18= 24				 macrovision register	0x53,   // 0x19= 25				 macrovision register	0xfe,   // 0x1a= 26				 macrovision register	0x03,   // 0x1b= 27				 macrovision register	0xaa,   // 0x1c= 28				 macrovision register	0x80,   // 0x1d= 29				 macrovision register	0xbf,   // 0x1e= 30				 macrovision register	0x1f,   // 0x1f= 31				 macrovision register	0x18,   // 0x20= 32				 macrovision register	0x04,   // 0x21= 33				 macrovision register	0x7a,   // 0x22= 34				 macrovision register	0x55,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE PalMacrovisionOn[] ={	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0xb6,	// 0x13= 19		0x1E= 30 macrovision register	0x16,   // 0x14= 20				 macrovision register	0xaa,   // 0x15= 21				 macrovision register	0x61,   // 0x16= 22				 macrovision register	0x05,   // 0x17= 23				 macrovision register	0xd7,   // 0x18= 24				 macrovision register	0x53,   // 0x19= 25				 macrovision register	0xfe,   // 0x1a= 26				 macrovision register	0x03,   // 0x1b= 27				 macrovision register	0xaa,   // 0x1c= 28				 macrovision register	0x80,   // 0x1d= 29				 macrovision register	0xbf,   // 0x1e= 30				 macrovision register	0x1f,   // 0x1f= 31				 macrovision register	0x18,   // 0x20= 32				 macrovision register	0x04,   // 0x21= 33				 macrovision register	0x7a,   // 0x22= 34				 macrovision register	0x55,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE DisMacroVision[18]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};BYTE Pal60MacroVision11[] = {// Ntsc:  N0=0x3F N13=0x0F N14=0x0F// Pal60: N0=0x36 N13=0x1E N14=0x1E	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0xf6,//0xfe,	// 0x13= 19		0x1E= 30 macrovision register	0x45,	// 0x14= 20		0x1F= 31 macrovision register	0x85,	// 0x15= 21		0x20= 32 macrovision register 	0x54,	// 0x16= 22		0x21= 33 macrovision register	0xeb,	// 0x17= 23		0x22= 35 macrovision register	0xb6,	// 0x18= 24		0x23= 36 macrovision register	0x91,	// 0x19= 25		0x24= 37 macrovision register	0xf8,	// 0x1a= 26		0x25= 38 macrovision register	0x07,	// 0x1b= 27		0x26= 39 macrovision register	0x00,	// 0x1c= 28		0x27= 40 macrovision register	0x80,//0xc0,	// 0x1d= 29		0x28= 41 macrovision register	0x87,//0xc3,	// 0x1e= 30		0x29= 42 macrovision register	0x07,//0x03,	// 0x1f= 31		0x2a= 43 macrovision register	0x58,	// 0x20= 32		0x2b= 44 macrovision register	0x85,	// 0x21= 33		0x2c= 45 macrovision register	0xca,	// 0x22= 34		0x2d= 46 macrovision register	0xff,	// 0x23= 35		0x2e= 47 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE Pal60MacroVision10[] = {// Ntsc:  N0=0x3F N13=0x0F N14=0x0F// Pal60: N0=0x36 N13=0x1E N14=0x1E	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0x76,//0x7e,	// 0x13= 19		0x1E= 30 macrovision register	0x07,	// 0x14= 20				 macrovision register	0x95,	// 0x15= 21				 macrovision register 	0x50,	// 0x16= 22				 macrovision register	0xce,	// 0x17= 23				 macrovision register	0xb6,	// 0x18= 24				 macrovision register	0x91,	// 0x19= 25				 macrovision register	0xf8,	// 0x1a= 26				 macrovision register	0x07,	// 0x1b= 27				 macrovision register	0x00,	// 0x1c= 28				 macrovision register	0x80,//0xc0,	// 0x1d= 29		0x28= 41 macrovision register	0x87,//0xc3,	// 0x1e= 30		0x29= 42 macrovision register	0x07,//0x03,	// 0x1f= 31		0x2a= 43 macrovision register	0x58,	// 0x20= 32				 macrovision register	0x85,	// 0x21= 33				 macrovision register	0xca,	// 0x22= 34				 macrovision register	0xff,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};BYTE Pal60MacroVision01[] = {// Ntsc:  N0=0x3F N13=0x0F N14=0x0F// Pal60: N0=0x36 N13=0x1E N14=0x1E	//			AD7175A		AD7170	0x40,	// 0x12= 18		   -	0x76,	// 0x13= 19		0x1E= 30 macrovision register	0x07,	// 0x14= 20				 macrovision register	0x95,	// 0x15= 21				 macrovision register 	0x50,	// 0x16= 22				 macrovision register	0xce,	// 0x17= 23				 macrovision register	0xb6,	// 0x18= 24				 macrovision register	0x91,	// 0x19= 25				 macrovision register	0xf8,	// 0x1a= 26				 macrovision register	0x07,	// 0x1b= 27				 macrovision register	0x00,	// 0x1c= 28				 macrovision register	0x80,//0xc0,	// 0x1d= 29		0x28= 41 macrovision register	0x87,//0xc3,	// 0x1e= 30		0x29= 42 macrovision register	0x07,//0x03,	// 0x1f= 31		0x2a= 43 macrovision register	0x58,	// 0x20= 32				 macrovision register	0x85,	// 0x21= 33				 macrovision register	0xca,	// 0x22= 34				 macrovision register	0xff,	// 0x23= 35				 macrovision register	0x00	//	  -			0x2f= 48 macrovision register};// end of tvtable.h////////////////////////////////////////////////////////////////////////////#define SIGMATV_MACROVISION 0x8000void CSigmaTv__StartAccessMacrovision(ITvEncoder* pITvEncoder){	CTvEncoder *this = (CTvEncoder*) pITvEncoder;	CommonSymbolTable* pQ = (CommonSymbolTable*)this->pQ;	IDecoder_WriteDM(this->m_pIDecoder, pQ->TVEncReg_Access.addr, SIGMATV_MACROVISION | 2);	OSTimeDelay(5);	if(IDecoder_ReadDM(this->m_pIDecoder, pQ->TVEncReg_Access.addr) != (SIGMATV_MACROVISION | 2) )	{		QDbgLog((QLOG_TRACE, QDebugLevelError, TEXT("TVEncReg_Access TIMEOUT %x!"),		   IDecoder_ReadDM(this->m_pIDecoder, pQ->TVEncReg_Access.addr) ));	}	ITvEncoder_Write( pITvEncoder, SIGMATV_CONFIG, SIGMATV_MACROVISION );}void CSigmaTv__EndAccessMacrovision(ITvEncoder* pITvEncoder){	CTvEncoder *this = (CTvEncoder*) pITvEncoder;	CommonSymbolTable* pQ = (CommonSymbolTable*)this->pQ;	ITvEncoder_Write( pITvEncoder, SIGMATV_CONFIG, this->SigmaTvRegs[0] );	IDecoder_WriteDM(this->m_pIDecoder, pQ->TVEncReg_Access.addr, 0);}void CSigmaTv__ReadMacrovision( ITvEncoder* pITvEncoder, WORD* pN ){	//	CTvEncoder *this = (CTvEncoder*) pITvEncoder;	CSigmaTv__StartAccessMacrovision(pITvEncoder);	*(pN + 0) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F33));	*(pN + 1) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F34));	*(pN + 2) = HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F34));	*(pN + 3) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F35));	*(pN + 4) = HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F35));	*(pN + 5) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F36));	*(pN + 6) = HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F36));	*(pN + 7) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F37));	*(pN + 8) = (HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F37))>>3) & 7;	*(pN + 8+1) = HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F37)) & 7;	*(pN + 9+1) = (LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F38))>>3) & 7;	*(pN + 9+2) = LOBYTE(ITvEncoder_Read(pITvEncoder, 0x1F38)) & 7;	*(pN + 10+2) = (HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F38))>>3) & 7;	*(pN + 10+3) = HIBYTE(ITvEncoder_Read(pITvEncoder, 0x1F38)) & 7;

⌨️ 快捷键说明

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