📄 decoder.cpp
字号:
/*---------------------------------------------------------------------------
-----General Notice-----
Copyright (C) 1997-2000, Tvia, Inc. (Formerly IGS Technologies, Inc.)
PERMISSION IS HEREBY GRANTED TO USE, COPY AND MODIFY THIS SOFTWARE
ONLY FOR THE PURPOSE OF DEVELOPING TVIA RELATED PRODUCTS.
THIS SOFTWARE MAY NOT BE DISTRIBUTED TO ANY PARTY WHICH IS NOT COVERED
BY TVIA NON-DISCLOSURE AGREEMENT (NDA). UNAUTHORIZED DISCLOSURE
IS AGAINST LAW AND STRICTLY PROHIBITED.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
-----About This File-----
IniDecod.c
The file is a sample code to show how to call IGST I2C libraries and how
to initialize Philips 7111/7114/7113 video decoder through I2C access.
NOTE: This sample assumes you are using Tvia Philips 7114/7113 video
decoder card, and it should run under real mode.
--Modification History--
1. 02-25-1998 Rev 2.00
2. 02-24-2000 Add Philips 7114(1) video decoder initialization setting
3. 09-19-2000 Add Philips 7114(2) video decoder initialization setting
4. 10-24-2000 Support Tuner and Tvia Cyber53xx VBI.
---------------------------------------------------------------------------*/
#include "stdafx.h"
#include "decoder.h"
#include "AudioMix.h"
#include "TVAVControl.h"
#include "DBF.h"
#include "TviaCompatable.h"
///////////////////////////////////////////////////////////////////////////////
// BYTE_ I2CPort[4] = {0x48, 0x42, 0x4A, 0x40};
// On CLE Board, change I2C Address of 7113 chip to 48
// Don't care the result of I2C write
BYTE_ I2CPort[4] = {0x48, 0x42, 0x48, 0x40};
/*register:value table used to initialize philips 7111 decoder*/
BYTE_ Phil7111_NTSC[P7111_Count * 2] =
{
0x02, 0xc0,
0x03, 0x23,
0x04, 0x00,
0x05, 0x00,
0x06, 0xeb,
0x07, 0xe0,
0x08, 0x48,
0x09, 0x10,
0x0a, 0x80,
0x0b, 0x47,
0x0c, 0x40,
0x0d, 0x00,
0x0e, 0x02,
0x0f, 0x00,
0x10, 0xc0,
0x11, 0x0c,
0x12, 0x80
}; /*reg_02 to reg_12*/
BYTE_ Phil7111_PAL[P7111_Count * 2]=
{
0x02, 0xc0,
0x03, 0x23,
0x04, 0x00,
0x05, 0x00,
0x06, 0xeb,
0x07, 0xe0,
0x08, 0x08,
0x09, 0x40,
0x0a, 0x80,
0x0b, 0x47,
0x0c, 0x40,
0x0d, 0x00,
0x0e, 0x02,
0x0f, 0x00,
0x10, 0xc0,
0x11, 0x0c,
0x12, 0x80
}; /*reg_02 to reg_12*/
/*register:value table used to initialize philips 7111 decoder*/
BYTE_ Phil7114_NTSC[2][P7114_Count*2]=
{
/*Task A is VBI ( if we want to capture raw data )*/
/*Task B is video*/
{
0x01, 0x08,
0x02, 0xc3,
0x03, 0x10,
0x04, 0x90,
0x05, 0x90,
0x06, 0xd0,
0x07, 0xf6,
0x08, 0x68,
0x09, 0x40,
0x0a, 0x80,
0x0b, 0x44,
0x0c, 0x40,
0x0d, 0x00,
0x0e, 0x02, /*ntsc = 89, pal=81*/
0x0f, 0x2a,
0x10, 0x0e,
0x11, 0x10,
0x12, 0x00,
0x13, 0x40,
0x14, 0x00,
0x15, 0x11,
0x16, 0xfe,
0x17, 0xc0,
0x18, 0x40,
0x19, 0x80,
0x1a, 0x00,
0x1b, 0x00,
0x1c, 0x00,
0x1d, 0x00,
0x1e, 0x00,
0x30, 0xbc,
0x31, 0xdf,
0x32, 0x02,
0x34, 0xcd,
0x35, 0xcc,
0x36, 0x3a,
0x38, 0x03,
0x39, 0x20,
0x3a, 0x00,
0x40, 0x00,
0x41, 0xff,
0x42, 0xff,
0x43, 0xff,
0x44, 0xff,
0x45, 0xff,
0x46, 0xff,
0x47, 0xff,
0x48, 0xff,
0x49, 0xff,
0x4a, 0xff,
0x4b, 0xff,
0x4c, 0xff,
0x4d, 0xff,
0x4e, 0xff,
0x4f, 0xff,
0x50, 0xff,
0x51, 0xff,
0x52, 0xff,
0x53, 0xff,
0x54, 0xff,
0x55, 0xff,
0x56, 0xff,
0x57, 0xff,
0x58, 0x00,
0x59, 0x47,
0x5a, 0x06,
0x5b, 0x03,
0x5c, 0x00,
0x5d, 0x00,
0x5e, 0x00,
0x5f, 0x00,
0x63, 0x00,
0x64, 0x00,
0x65, 0x00,
0x66, 0x00,
0x67, 0x00,
0x68, 0x00,
0x80, 0x10, /*10 for task A, 21 for task B*/
0x83, 0x01, /*00 xport disabled, 01 enabled*/
0x84, 0xa5,
0x85, 0x14,
0x86, 0xc5, /*c5 = text and video, 45 = video*/
0x87, 0x00, /*00 iport disabled, 01 enabled, for old board, set 01*/
0x88, 0xd0,
0x8f, 0x4b,
/*Task A*/
0x90, 0x00,
0x91, 0x08,
0x92, 0x10,
0x93, 0x80,
0x94, 0x08,
0x95, 0x00,
0x96, 0xd0,
0x97, 0x02,
0x98, 0x10,
0x99, 0x00,
0x9a, 0xf4,
0x9b, 0x00,
0x9c, 0xd0,
0x9d, 0x02,
0x9e, 0xf2,
0x9f, 0x00,
0xa0, 0x01,
0xa1, 0x00,
0xa2, 0x00,
0xa4, 0x80,
0xa5, 0x40,
0xa6, 0x40,
0xa8, 0x00,
0xa9, 0x04,
0xaa, 0x00,
0xac, 0x00,
0xad, 0x02,
0xae, 0x00,
0xb0, 0x00,
0xb1, 0x04,
0xb2, 0x00,
0xb3, 0x04,
0xb4, 0x01,
0xb8, 0x00,
0xb9, 0x00,
0xba, 0x00,
0xbb, 0x00,
0xbc, 0x00,
0xbd, 0x00,
0xbe, 0x00,
0xbf, 0x00,
/*Task B*/
0xc0, 0x00,
0xc1, 0x18, /*18 for xport, 08 for decoder*/
0xc2, 0x59,
0xc3, 0x80,
0xc4, 0x00,
0xc5, 0x00,
0xc6, 0xd0,
0xc7, 0x02,
0xc8, 0x01,
0xc9, 0x00,
0xca, 0xf2, /*ntsc = f2, pal = 38*/
0xcb, 0x00, /*ntsc = 00, pal = 01*/
0xcc, 0xd0,
0xcd, 0x02,
0xce, 0xf0, /*ntsc = f0, pal = 35*/
0xcf, 0x00, /*ntsc = 00, pal = 01*/
0xd0, 0x01,
0xd1, 0x00,
0xd2, 0x00,
0xd4, 0x80,
0xd5, 0x3f,
0xd6, 0x3f,
0xd8, 0x00,
0xd9, 0x04,
0xda, 0x00,
0xdc, 0x00,
0xdd, 0x02,
0xde, 0x00,
0xe0, 0x00,
0xe1, 0x04,
0xe2, 0x00,
0xe3, 0x04,
0xe4, 0x01,
0xe8, 0x00,
0xe9, 0x00,
0xea, 0x00,
0xeb, 0x00,
0xec, 0x00,
0xed, 0x00,
0xee, 0x00,
0xef, 0x00,
0x88, 0xf0
},
/*Sliced data - NCI setting*/
/*Task A is VBI ( sliced data )*/
/*Task B is video*/
{
0x01, 0x08,
0x02, 0xc3, /*0x82,85*/
0x03, 0x10,
0x04, 0x90,
0x05, 0xa0,
0x06, 0xd0,
0x07, 0xf6,
0x08, 0xC8,
0x09, 0x40,
0x0a, 0x78,
0x0b, 0x40,
0x0c, 0x48,
0x0d, 0x00,
0x0e, 0x00,
0x0f, 0x00,
0x10, 0x06,
0x11, 0x17,
0x12, 0x00,
0x13, 0x40,
0x14, 0x00,
0x15, 0x11,
0x16, 0xfe,
0x17, 0xc0,
0x18, 0x40,
0x19, 0x80,
0x1a, 0x00,
0x1b, 0x00,
0x1c, 0x00,
0x1d, 0x00,
0x1e, 0x00,
0x30, 0xbc,
0x31, 0xdf,
0x32, 0x02,
0x34, 0xcd,
0x35, 0xcc,
0x36, 0x3a,
0x38, 0x03,
0x39, 0x20,
0x3a, 0x00,
0x40, 0x40,
0x41, 0xff, /*2*/
0x42, 0xff, /*3*/
0x43, 0xff, /*4*/
0x44, 0xff, /*5*/
0x45, 0xff, /*6*/
0x46, 0xff, /*7*/
0x47, 0xcc, /*8*/
0x48, 0xcc, /*9*/
0x49, 0xcc, /*10*/
0x4a, 0xcc, /*11*/
0x4b, 0xcc, /*12*/
0x4c, 0xcc, /*13*/
0x4d, 0xcc, /*14*/
0x4e, 0xcc, /*15*/
0x4f, 0xcc, /*16*/
0x50, 0xcc, /*17*/
0x51, 0xcc, /*18*/
0x52, 0xcc, /*19*/
0x53, 0xcc, /*20*/
0x54, 0x55, /*21*/
0x55, 0x55, /*22*/
0x56, 0xff, /*23*/
0x57, 0xff, /*24*/
0x58, 0xe7,
0x59, 0x47,
0x5a, 0x06,
0x5b, 0x83,
0x5c, 0x00,
0x5d, 0x3e,
0x5e, 0x00,
0x5f, 0x00,
0x63, 0x00,
0x64, 0x00,
0x65, 0x00,
0x66, 0x00,
0x67, 0x00,
0x68, 0x00,
0x83, 0x00,
0x84, 0xa0,
0x85, 0x10,
0x86, 0xc5,
0x87, 0x01,
0x8f, 0x0b,
/*Task A*/
0x90, 0x01,
0x91, 0x48,
0x92, 0x40, /*invert field, 0x40 not invert*/
0x93, 0x84,
0x94, 0x02,
0x95, 0x00,
0x96, 0xd0,
0x97, 0x02,
0x98, 0x05,
0x99, 0x00,
0x9a, 0x0c,
0x9b, 0x00,
0x9c, 0xf7,
0x9d, 0x05,
0x9e, 0x0c,
0x9f, 0x00,
0xa0, 0x01,
0xa1, 0x00,
0xa2, 0x00,
0xa4, 0x70,
0xa5, 0x38,
0xa6, 0x48,
0xa8, 0xe2,
0xa9, 0x01,
0xaa, 0x00,
0xac, 0xf1,
0xad, 0x00,
0xae, 0x00,
0xb0, 0x00,
0xb1, 0x04,
0xb2, 0x00,
0xb3, 0x04,
0xb4, 0x00,
0xb8, 0x00,
0xb9, 0x00,
0xba, 0x00,
0xbb, 0x00,
0xbc, 0x00,
0xbd, 0x00,
0xbe, 0x00,
0xbf, 0x00,
/*Task B*/
0xc0, 0x00,
0xc1, 0x08,
0xc2, 0x40,
0xc3, 0x80,
0xc4, 0x00,
0xc5, 0x00,
0xc6, 0xD0,
0xc7, 0x02,
0xc8, 0x0f,
0xc9, 0x00,
0xca, 0xf8,
0xcb, 0x00,
0xcc, 0xD0,
0xcd, 0x02,
0xce, 0xf6,
0xcf, 0x00,
0xd0, 0x01,
0xd1, 0x00,
0xd2, 0x00,
0xd4, 0x70,
0xd5, 0x40,
0xd6, 0x48,
0xd8, 0x00,
0xd9, 0x04,
0xda, 0x00,
0xdc, 0x00,
0xdd, 0x02,
0xde, 0x00,
0xe0, 0x00,
0xe1, 0x04,
0xe2, 0x00,
0xe3, 0x04,
0xe4, 0x01,
0xe8, 0x00,
0xe9, 0x00,
0xea, 0x00,
0xeb, 0x00,
0xec, 0x00,
0xed, 0x00,
0xee, 0x00,
0xef, 0x00,
0x88, 0xf0,
0x80, 0x60,
0xff, 0xff
}
};
BYTE_ Phil7114_PAL[P7114_Count * 2]=
{
0x88, 0xd0,
0x01, 0x00,
0x02, 0xc2,
0x03, 0x10,
0x04, 0x90,
0x05, 0x90,
0x06, 0xeb,
0x07, 0xe0,
0x08, 0xB8, /*0x68*/
0x09, 0x40,
0x0a, 0x7b,
0x0b, 0x40,
0x0c, 0x40,
0x0d, 0x00,
0x0e, 0x81,
0x0f, 0x2a,
0x10, 0x06,
0x11, 0x00,
0x12, 0x00,
0x13, 0x00,
0x14, 0x00,
0x15, 0x11,
0x16, 0xfe,
0x17, 0x40,
0x18, 0x40,
0x19, 0x80,
0x1a, 0x00,
0x1b, 0x00,
0x1c, 0x00,
0x1d, 0x00,
0x1e, 0x00,
0x30, 0xbc,
0x31, 0xdf,
0x32, 0x02,
0x34, 0xcd,
0x35, 0xcc,
0x36, 0x3a,
0x38, 0x03,
0x39, 0x20,
0x3a, 0x00,
0x40, 0x00,
0x41, 0xff,
0x42, 0xff,
0x43, 0xff,
0x44, 0xff,
0x45, 0xff,
0x46, 0xff,
0x47, 0xff,
0x48, 0xff,
0x49, 0x77,
0x4a, 0x77,
0x4b, 0x77,
0x4c, 0x77,
0x4d, 0x77,
0x4e, 0x77,
0x4f, 0x77,
0x50, 0x77,
0x51, 0x77,
0x52, 0x77,
0x53, 0x77,
0x54, 0x77,
0x55, 0xff,
0x56, 0xff,
0x57, 0xff,
0x58, 0x00,
0x59, 0x47,
0x5a, 0x06,
0x5b, 0x03,
0x5c, 0x00,
0x5d, 0x00,
0x5e, 0x00,
0x5f, 0x00,
0x63, 0x00,
0x64, 0x00,
0x65, 0x00,
0x66, 0x00,
0x67, 0x00,
0x68, 0x00,
0x80, 0x30,
0x83, 0x01,
0x84, 0xa0,
0x85, 0x10,
0x86, 0xc5,
0x87, 0x00, /*For BOARD5300*/
0x8f, 0x0b,
0x90, 0x01, /*No noticeable difference between 0 and 1. Made it 0 to
match address c0 -- csp*/
0x91, 0x48,
0x92, 0x40,
0x93, 0x84,
0x94, 0x01,
0x95, 0x00,
0x96, 0x00,
0x97, 0x03,
0x98, 0x01,
0x99, 0x00,
#if 1 /*NTSC*/
0x9a, 0x0e,
0x9b, 0x00,
0x9c, 0x00,
0x9d, 0x06,
0x9e, 0x0c,
0x9f, 0x00,
#else /*PAL*/
0x9a, 0x38,
0x9b, 0x01,
0x9c, 0xd0,
0x9d, 0x02,
0x9e, 0x36,
0x9f, 0x01,
#endif
0xa0, 0x01,
0xa1, 0x00,
0xa2, 0x00,
0xa4, 0x80,
0xa5, 0x40,
0xa6, 0x40,
0xa8, 0xe2,
0xa9, 0x01,
0xaa, 0x00,
0xac, 0xf1,
0xad, 0x00,
0xae, 0x00,
0xb0, 0x00,
0xb1, 0x04,
0xb2, 0x00,
0xb3, 0x04,
0xb4, 0x00,
0xb8, 0x00,
0xb9, 0x00,
0xba, 0x00,
0xbb, 0x00,
0xbc, 0x00,
0xbd, 0x00,
0xbe, 0x00,
0xbf, 0x00,
0xc0, 0x00,
0xc1, 0x08,
0xc2, 0x40,
0xc3, 0x80,
0xc4, 0x00,
0xc5, 0x00,
0xc6, 0x00,
0xc7, 0x03,
0xc8, 0x11,
0xc9, 0x00,
#if 1 /*NTSC*/
0xca, 0x22,
0xcb, 0x01,
0xcc, 0x00,
0xcd, 0x03,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -