misctbl.c

来自「一个两碟控制的VCD的代码,两碟之间的转动及连续播放,已大量生产的CODE.」· C语言 代码 · 共 325 行

C
325
字号
/* Copyright 1996, ESS Technology, Inc.					*/
/* SCCSID @(#)misctbl.c	1.22 11/30/98 */

/*
 * $Log$
 */

#include "common.h"
#include "tdm.h"

#define  IDLEFACTOR     8
/************************************************************************
 * For TDM.								*
 ************************************************************************/
#if 0
/* From tdm.h */

/*
 * Notice that endian settings for video data are just oppposit to the 
 * real data format since transport automaticaly flips the endian.
 * For CDDA, endian settings are the same as data format since we
 * flip it again at the output of the transport.
 */
typedef struct {
    unsigned short slot;	/* tdmslot  value			*/
    unsigned short delay;	/* tdmdelay value			*/
    unsigned short ctl;		/* tdmctl   value			*/
    unsigned short low;		/* Don't turn on TDM if lower than this */
} TDM_settings;

typedef struct {
    TDM_settings cd[2];
} TDM_SETTING;
#endif

TDM_SETTING tdmsettings[] = {
     /* CDROM */	      /* AUDIO CD */
#ifdef P315
    {{{0x2d, 0xf, 0x8060, 16}, {0x2d, 0xf, 0x8060, 40}}}, /* MITSUBISHI	     */
#endif

#ifdef TVM_MODULE
    {{{0x1b, 0xd, 0x8060,  0}, {0x2d, 0xd, 0x8060, 16}}}, /* THOMSON         */
#endif

#if (!P315 && !TVM_MODULE)
    {{{0x0f, 0xd, 0x8060,  8}, {0x0f, 0xd, 0x8060, 24}}}, /* TOSHIBA TC9263F */
    {{{0x2d, 0xd, 0x8120, 16}, {0x1b, 0xd, 0x8060, 16}}}, /* SANYO   	     */
    {{{0x2d, 0xf, 0x8060, 16}, {0x1b, 0xd, 0x8060, 40}}}, /* PHILIPS	     */
    {{{0x1b, 0xd, 0x8060,  0}, {0x1b, 0xd, 0x8060,  0}}}, /* SONY	     */
    {{{0x66, 0xd, 0x8060,  0}, {0x66, 0xd, 0x8060,  0}}}, /* MATSUSHITA	     */
#if 0
    /* Technics MN6626. Outputs 32b SONY format */
    {{{0x33, 0xd, 0x8060,  0}, {0x33, 0xd, 0x8060,  0}}}, /* YAMAHA	     */
#endif
#endif
};


/************************************************************************
 * For IR.								*
 ************************************************************************/
/*
 * When DSC_IRQ is defined, we use internal 3881 counters to keep
 * track of time.
 *
 * The counter increments at .1517ms interval (2048/13.5MHz). It only
 * triggers on one edge (default is falling) as oppose to the old
 * style where we triggers on both edge.
 */

/* Timer values when CPU is running at full speed */
unsigned int IR_powerup_tbl[] = {
#ifdef DSC_IRQ
    /* Use 3881's internal counter to keep track of time		*/
#ifdef IR_PHILIPS
	#ifdef DSC_IRQ_USETIMER2
	    CPUCLK * 50,		/* minimum length of half bit	*/
	    CPUCLK * 130,		/* maximum length of half bit	*/
	    CPUCLK * 140,		/* minimum length of one bit	*/
	    CPUCLK * 240,		/* maximum length of one bit	*/
	#else	/* Use 3881's internal counter to keep track of time	*/
	    3,
	    8,
	    9,
	    16,
	#endif /* else of DSC_IRQ_USETIMER2 */
#else
       #ifdef DSC_IRQ_USETIMER2
            CPUCLK * 1330,		/* Leader minimum		*/
	    CPUCLK * 1370,		/* Leader maximum		*/
	    CPUCLK * 205,		/* Data 1 minimum		*/
	    CPUCLK * 245,		/* Data 1 maximum		*/
	    CPUCLK * 92,		/* Data 0 minimum		*/
	    CPUCLK * 132,            	/* Data 0 maximum       	*/
	    #ifdef IRREP
		CPUCLK * 1100,  	/* Repeat low+high min      	*/
		CPUCLK * 1150,		/* Repeat low+high max		*/
	    #endif
	#else	/* Use 3881's internal counter to keep track of time	*/
	    85,				/* Leader low+high min (12.89ms)*/
	    93,				/* Leader low+high max (14.10ms)*/
	    12,				/* Gap+data 1 minimum (1.82ms)	*/
	    19,				/* Gap+data 1 maximum (2.88ms)	*/
	    4,				/* Gap+data 0 minimum (0.61ms)	*/
	    11,				/* Gap+data 0 maximum (1.67ms)	*/
	    #ifdef IRREP
		70,			/* Rep low+high min (10.62ms)	*/
		78,			/* Rep low+high max (11.83ms)	*/
	    #endif /* IRREP */
#endif /* else of DSC_IRQ_USETIMER2 (for NEC) */
#endif /* else of IR_PHILIPS */

#else
    /* Use CPU's timer2 to keep track of time				*/
#ifdef IR_PHILIPS
    /* For Philips format */
    CPUCLK * 50,			/* minimum length of half bit	*/
    CPUCLK * 130,			/* maximum length of half bit	*/
    CPUCLK * 140,			/* minimum length of one bit	*/
    CPUCLK * 240,			/* maximum length of one bit	*/
#else
    /* For NEC and SANYO formats */
    CPUCLK * 880,			/* Leader low minimum		*/
    CPUCLK * 920,			/* Leader low maximum		*/
    CPUCLK * 430,			/* Leader high minimum		*/
    CPUCLK * 470,			/* Leader high maximum		*/
    CPUCLK * 205,			/* Data 1 minimum		*/
    CPUCLK * 245,			/* Data 1 maximum		*/
    CPUCLK * 92,			/* Data 0 minimum		*/
    CPUCLK * 132,            		/* Data 0 maximum       	*/
#ifdef IRREP
    CPUCLK * 205,           		/* Repeat high minimun      	*/
    CPUCLK * 245,			/* Repeat high mazimun		*/
    CPUCLK * 36,			/* Repeat data minimum		*/
    CPUCLK * 76             		/* Repeat data maxmun       	*/
#endif /* IRREP */
#endif /* else of IR_PHILIPS */
#endif /* else of DSC_IRQ */
};

/* 
 * Timer values when CPU is running at power-down speed. This table is
 * only needed only when we are not using 3881's internal counter.
 */
unsigned int IR_powerdn_tbl[] = {
#ifdef IR_PHILIPS
    /* For Philips format */
    IDLECLK * 50,			/* minimum length of half bit	*/
    IDLECLK * 130,			/* maximum length of half bit	*/
    IDLECLK * 140,			/* minimum length of one bit	*/
    IDLECLK * 240,			/* maximum length of one bit	*/
#else
    #ifdef DSC_IRQ_USETIMER2
	(CPUCLK * 1330) / IDLEFACTOR,	/* Leader minimum		*/
	(CPUCLK * 1370) / IDLEFACTOR,	/* Leader maximum		*/
	(CPUCLK * 205)  / IDLEFACTOR,	/* Data 1 minimum		*/
	(CPUCLK * 245)  / IDLEFACTOR,	/* Data 1 maximum		*/
	(CPUCLK * 92)   / IDLEFACTOR,	/* Data 0 minimum		*/
	(CPUCLK * 132)  / IDLEFACTOR,   /* Data 0 maximum       	*/
	#ifdef IRREP
	    (CPUCLK * 1100) / IDLEFACTOR,/* Rep low+high min		*/
	    (CPUCLK * 1150) / IDLEFACTOR,/* Rep low+high max		*/
	#endif /* IRREP */
    #else
	(CPUCLK * 880) / IDLEFACTOR,	/* Leader low minimum           */
	(CPUCLK * 920) / IDLEFACTOR,	/* Leader low maximum           */
	(CPUCLK * 430) / IDLEFACTOR,	/* Leader high minimum          */
	(CPUCLK * 470) / IDLEFACTOR,	/* Leader high maximum          */
	(CPUCLK * 205) / IDLEFACTOR,	/* Data 1 minimum               */
	(CPUCLK * 245) / IDLEFACTOR,	/* Data 1 maximum               */
	(CPUCLK * 92 ) / IDLEFACTOR,	/* Data 0 minimum               */
	(CPUCLK * 132) / IDLEFACTOR, 	/* Data 0 maximum               */
	#ifdef IRREP
	    (CPUCLK * 205) / IDLEFACTOR,/* Repeat high minimum		*/
	    (CPUCLK * 245) / IDLEFACTOR,/* Repeat high mazimum		*/
	    (CPUCLK * 36 ) / IDLEFACTOR,/* Repeat data minimum		*/
	    (CPUCLK * 76 ) / IDLEFACTOR	/* Repeat data maximum       	*/
	#endif /* IRREP */
#endif /* else of DSC_IRQ_USETIMER2 */
#endif /* else of IR_PHILIPS */
};
/************************************************************************
 * VP entries								*
 ************************************************************************/
unsigned short VP_ucode_offset1[] = {
    /* 3210 before 3210T */
    0x1891,	/* Frame_int			*/ 
    0x18d3,	/* Restore_UV_from_fifth	*/
    0x18d0,	/* Save_UV_in_fifth		*/
    0x19e2,	/* dpcm				*/
    0x19e9,	/* mpeg1_intra			*/
    0x18d9,	/* kcross_fade			*/
    0x18fb,	/* karaoke			*/
    0x1888,	/* clearing_DC			*/
    0x132d,	/* mpg_audio_synth32		*/
    0x16bf,	/* mpg_audio_synwindow18	*/
    0x179b,	/* mpg_volume_stereoint		*/
    0x1769,	/* mpg_audio_average		*/
    0x17b1	/* interleave			*/
};

unsigned short VP_ucode_offset2[] = {
    /* 3210T and later */
    0x113d,	/* Frame_int			*/ 
    0x117f,	/* Restore_UV_from_fifth	*/
    0x117c,	/* Save_UV_in_fifth		*/
    0x11d5,	/* dpcm				*/
    0x11dc,	/* mpeg1_intra			*/
    0x12bb,	/* kcross_fade			*/
    0x12dd,	/* karaoke			*/
    0x1888,	/* clearing_DC			*/
    0x1334,	/* mpg_audio_synth32		*/
    0x16a3,	/* mpg_audio_synwindow18	*/
    0x175c,	/* mpg_volume_stereoint		*/
    0x1744,	/* mpg_audio_average		*/
    0x1770	/* interleave			*/
};

/************************************************************************
 * Display palette (fancy start-up screen).				*
 ************************************************************************/
struct {
    unsigned char component[3];
} palette_std[] = {
    {0x6b, 0x00, 0x00},	/*white*/
    {0x27, 0x0d, 0xb2},	/*yellow*/
    {0x0b, 0xb2, 0x1a},	/*cyan*/
    {0xfa, 0xbf, 0xcd},	/*green*/
    {0xdf, 0x41, 0x33},	/*magenta*/
    {0xce, 0x4e, 0xe6},	/*red*/
    {0xb2, 0xf3, 0x4e},	/*blue*/
    {0x80, 0x00, 0x00},	/*black*/
    {0xe4, 0xf3, 0x4e},	/*custom*/
    {0xa0, 0x00, 0x00},	/*custom*/
    {0xa0, 0x00, 0x00},	/*custom*/
    {0xa0, 0x00, 0x00}	/*custom*/
};
 
/************************************************************************
 * For spatializer.							*
 ************************************************************************/
unsigned int bp_ham[] = {
#if 0
    /* Surround */
    0x1d07249e, 0x01dbf3c1, 0xfe05fda7, 0xffcdff10, 0xffebff6b, 0xfff0ff93,
    0xfff3ffa7, 0xfff4ffb1, 0x0000004f, 0x000c0059, 0x000d006d, 0x00100095, 
    0x001500f0, 0x00330259, 0x01fb0c3f, 0xfe25db62, 0xe2f90000, 0x00000000,

    /* 3D surround (wider) */
    0x3d0f478d, 0xe8e6e927, 0xf333f86c, 0x0273fa3c, 0xfbcdfd14, 0x026ffcc2,
    0xfd24fdf9, 0x0201fe14, 0x000001ec, 0xfdff0207, 0x02dc033e, 0xfd9102ec, 
    0x043305c4, 0xfd8d0794, 0x0ccd16d9, 0x171ab873, 0xc2f10000, 0x00000000,
#endif

    /* first */
    0x18c320f7, 0xf6a4eb88, 0xfd81fff8, 0x00190049, 0x00060037, 0xffff0027,
    0xffff0018, 0x00010009, 0x0000fff7, 0xffffffe8, 0x0001ffd9, 0x0001ffc9,
    0xfffaffb7, 0xffe70008, 0x027f1478, 0x095cdf09, 0xe73d0000, 0x00000000,
 
    /* second */
    0x1ddb1616, 0xdad90072, 0x0116fdce, 0x00e8fe69, 0x00b8fea4, 0x009ffecd,
    0x0087fef4, 0x006aff1e, 0x000000e2, 0xff96010c, 0xff790133, 0xff61015c,
    0xff480197, 0xff180232, 0xfeeaff8e, 0x2527e9ea, 0xe2250000, 0x00000000,
 
    /* Hall (widest) */
    0x1d07249e, 0x01dbf3c1, 0xfe05fda7, 0xffcdff10, 0xffebff6b, 0xfff0ff93,
    0xfff3ffa7, 0xfff4ffb1, 0x0000004f, 0x000c0059, 0x000d006d, 0x00100095, 
    0x001500f0, 0x00330259, 0x01fb0c3f, 0xfe25db62, 0xe2f90000, 0x00000000,

    /* Vocal cut */
    0xfccc0799, 0x0733f833, 0x02000e33, 0x0b33fbcc, 0xff000100, 0xf3ccfd99,
    0x05cc0233, 0x0b990933, 0x0b990933, 0x0b990233, 0x05ccfd99, 0xf3cc0100,
    0xff00fbcc, 0x0b330e33, 0x0200f833, 0x07330799, 0xfccc0000, 0x00000000

};

/************************************************************************
 * Key shift related.							*
 ************************************************************************/
#define Quarter_Tone
#ifdef Quarter_Tone
int    vp_key_port[] = {
    0x004c0c43, 0x004e0483, 0x00510cc4, 0x005410c6,
    0x00560cc8, 0x0058094a, 0x005a05ce, 0x00000000,
    0x006685ef, 0x0068896b, 0x006c90e7, 0x006f8ce5,
    0x007284a4, 0x00759424, 0x0078a863};
#else
int    vp_key_port[] = {
    0x00403821, 0x00441481, 0x00482842, 0x004c0c43,
    0x00510cc4, 0x00560cc8, 0x005a05ce, 0x00000000,
    0x006685ef, 0x006c90e7, 0x007284a4, 0x0078a863,
    0x0080b842, 0x00888c61, 0x0090d821
};
#endif

#ifdef SERVO2545
unsigned short abs2trk[] = {
         0,    452,    891,   1319,   1737,
      2145,   2543,   2933,   3315,   3690,
      4057,   4418,   4772,   5120,   5462,
      5799,   6131,   6458,   6780,   7097,
      7410,   7719,   8024,   8325,   8622,
      8916,   9206,   9492,   9776,  10056,
     10334,  10608,  10880,  11149,  11415,
     11678,  11940,  12198,  12454,  12708,
     12960,  13209,  13457,  13702,  13945,
     14186,  14426,  14663,  14899,  15132,
     15364,  15595,  15823,  16050,  16275,
     16499,  16721,  16942,  17161,  17379, 
     17595,  17810,  18024,  18236,  18447,
     18656,  18864,  19071,  19277,  19482,
     19685,  19888,  20089,  20289,  20487,
     20685,  20882,  21078,  21272,  21466,
     21658
};

unsigned int filtertbl[] = {
    0x340080, 0x340504, 0x341120, 0x34400b,
    0x34436a, 0x344447, 0x34457d, 0x341038
};  

#endif

⌨️ 快捷键说明

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