📄 cdg.h
字号:
/* Copyright 2001, ESS Technology, Inc. *//* SCCSID @(#)cdg.h 4.6 03/18/04 */#ifdef CDG#ifndef _CDG_H_#define _CDG_H_#include "common.h"#ifdef GDTSERVOGBLDEF(int is_ess3727, 1);#elseGBLDEF(int is_ess3727, 0);#endif/*=============LOCAL DEFININATION IN CDG.C ===================*//*If you want to use CDG in full screen, define it */#define FRESH_BCKGRND/*I just use the BACK mem to do right and left scrolling, if *//*don't have enough memory, undefine it, one block of memory *//*about 16416kDW(304*216/4), */#define NOUSE_BACK_MEM/*If the block of screec to be displayed is > 2 lines, please *//*define MORE_2_LINES, now is use 48*4(w*h), current code is *//* 5 blks to do it */#define MORE_2_LINES /*If it is VCD plat_form, define it */#define VCD_CDG/*If use Reed-Solomon error correction,define it */#define RS_DECODE/*================CONST FOR CODE CONTROL =============*/#define ON 1#define OFF 0#define NULL_POINTER -1#define DATA_ERROR -2#define SUCCESS 0#define READY 1#define NO_READY 0 /*=================CONST FOR SYMBOLS ==================*/#define CDG_PACKET_SIZE (96)#define CDG_PACK_SIZE (24)#define CDG_PACK_NUM (96)#define CDG_FIFO_SIZE (CDG_PACK_SIZE*CDG_PACK_NUM)/*=================CONST FOR CDG_MODE ==================*/#define CDG_ZERO_MODE 0x00#define CDG_LINE_MODE 0x08#define CDG_TV_MODE 0x09#define CDG_EXTTV_MODE 0x0A#define CDG_MIDI_MODE 0x18#define CDG_USER_MODE 0x38/*=================CONST FOR DISPLAY===================*/#define CDG_NTSC_HEIGHT 240#define CDG_PAL_HEIGHT 288#define TOTAL_MEM_BLKS 1 #define BACK_SHFT_BLKS 0 #define TOTAL_SCRL_CNT (BACK_SHFT_BLKS*48)#define CDG_SCRN_WIDTH 352#define CDG_SCRN_DWIDTH 88#define CDG_SCRN_UVDWIDTH 44#define TV_MEM_WIDTH (304)#define TV_MEM_DWIDTH (TV_MEM_WIDTH>>2)#define TV_DISPMEM_WIDTH (TV_MEM_WIDTH*TOTAL_MEM_BLKS)#define TV_DISPMEM_DWIDTH (TV_DISPMEM_WIDTH>>2) #define ROW_BYTES (TV_DISPMEM_WIDTH*FONT_HEIGHT)#define ROW_DWORDS (ROW_BYTES>>2) #define WIDTH_IN_BLKS (TV_MEM_WIDTH*BACK_SHFT_BLKS)#define DWIDTH_IN_BLKS (WIDTH_IN_BLKS>>2)#define TV_DISP2MEM_OFF (2)#define TV_SCRN_OFF (12*TV_DISPMEM_WIDTH)#define TV_SCRN_DWOFF (12*TV_DISPMEM_DWIDTH)#define TV_SCRN_X (TV_DISP2MEM_OFF + FONT_WIDTH) #define TV_SCRN_DX ((TV_SCRN_X)>>2) #define FONT_WIDTH_BYTES 6 #define DISP_WIDTH_BYTES 300#define DISP_WIDTH_DWORDS 75 #define TV_DISP_MEM_SIZE 64800 /*bytes*/#define FONT_WIDTH 6#define FONT_HEIGHT 12#define LINE_DISP_HEIGHT 48#define LINE_SCRN_HEIGHT 24#define LINE_DISP_COLUMN 50#define LINE_DSIP_ROW 4#define LINE_SCRN_COLUMN 48#define LINE_SCRN_ROW 2#define LINE_DISP_MEM_SIZE 600#define TV_DISP_HEIGHT 216#define TV_SCRN_HEIGHT 192#define TV_SCRN_WIDTH 288#define TV_DISP_COLUMN 50#define TV_DISP_ROW 18#define TV_SCRN_COLUMN 48#define TV_SCRN_ROW 16/*=================CONST FOR SCROLL=====================*/#define SCROLL_RIGHT 1#define SCROLL_LEFT 2 #define SCROLL_DOWN 3 #define SCROLL_UP 4#define SCRLL_COPY 0x01#define SCRLL_PRESET 0x02 /*======MEMORY CONTROL VALUE IN TV AND EXT_TV GRAPHICS===*/#ifdef CDG_EXTTV_USED#define DISP_8BIT 0x00#define NO_OPERATION1 0x01#define NO_OPERATION2 0x02#define DISP_8BIT_WRK_BTH 0x03#define DISP_PRM 0x04#define DISP_PRM_WRK_PRM 0x05#define DISP_PRM_WRK_SCND 0x06#define DISP_PRM_WRK_BTH 0x07#define DISP_SCND 0x08#define DISP_SCND_WRK_PRM 0x09#define DISP_SCND_WRK_SCND 0x0A#define DISP_SCND_WRK_BTH 0x0B#define DISP_2MIX 0x0C#define DISP_2MIX_WRK_PRM 0x0D#define DISP_2MIX_WRK_SCND 0x0E#define DISP_2MIX_WRK_BTH 0x0F#endif/*=============== TV MODE INSTRUCTIONS ==================*/#define TV_PRESET_MEM 0x01#define TV_PRESET_BORDER 0x02#define TV_WR_FONT 0x06#define TV_SCRLL_IN_PRESET 0x14#define TV_SCRLL_IN_COPY 0x18#define TV_DF_CLR_TRNSPRNC 0x1C#define TV_LD_FRST_CLUT 0x1E#define TV_LD_SCND_CLUT 0x1F#define TV_EXOR_FONT 0x26/*================== TV MODE FONT ======================*/#define FILL_FONT 0#define XOR_FONT 1#define PRIMARY_SECTION 0#define ADDITIONAL_SECTION 1#define TV_CLUT0 0#define TV_CLUT1 1/*==================CONST FOR CDG SHOW ==================*/#define CDG_RGB1_START ((30 * 32) / 2)#define CDG_RGB2_START ((32 * 32) / 2)#define CDG_RGB3_START ((34 * 32) / 2)#define CDG_RGB4_START ((32 * 32) / 2)#define CDG_RGB5_START ((34 * 32) / 2)#define CDG_Y1_START 0#define CDG_Y2_START (( 2 * 32) / 2)#define CDG_U420_START ((34 * 32) / 2)#define CDG_V420_START ((35 * 32) / 2)#define CDG_BLKW 48 #define CDG_BLKDW (CDG_BLKW >> 2) #define CDG_BLKH 32 #define CDG_BLKW_CNT (TV_SCRN_WIDTH/CDG_BLKW)#define CDG_BLKH_CNT (TV_SCRN_HEIGHT/CDG_BLKH)#define TV_DISP1BLKH_MEM (CDG_BLKH*TV_DISPMEM_WIDTH)/*============MACRO FUNCTION ============================*/#define CDG_SWITCH_BYTE(A,B,TEMP) {\ (TEMP) = (B);\ (B) = (A); \ (A) = (TEMP);\ } #define CDG_SWAP_BYTES {\ CDG_SWITCH_BYTE(cdg->pack[1], cdg->pack[18], temp);\ CDG_SWITCH_BYTE(cdg->pack[2], cdg->pack[5], temp);\ CDG_SWITCH_BYTE(cdg->pack[3], cdg->pack[23], temp);\ }#define CDG_MEMSET(dest_p, value, size) {\ int st_i; \ for(st_i=0;st_i<size;st_i++) *(dest_p+st_i) = value;\ }#define CDG_MEMMOVE_R(d_p, s_p, size) {\ int r_i; \ for(r_i=(size-1); r_i>=0; r_i--) *(d_p+r_i) = *(s_p+r_i);\ }#define CDG_MEMMOVE_L(d_p, s_p, size) {\ int l_i; \ for(l_i=0; l_i<size; l_i++) *(d_p+l_i) = *(s_p+l_i);\ }#define CDG_MEMCOPY(d_p, s_p, size) {\ int cp_i; \ for(cp_i=0; cp_i<size; cp_i++)*(d_p+cp_i) = *(s_p+cp_i); \ } /*This size of CDGP should be less than 16K bytes*/typedef struct { unsigned char fifo[CDG_FIFO_SIZE]; unsigned char pack[CDG_PACK_SIZE+8]; int flag[CDG_BLKW_CNT][CDG_BLKH_CNT]; int mode; int error; int channel; int ph; int pv; int tv_clut[256]; unsigned char tv_transparency[16]; unsigned char *fifo_p; /* Indicate symbols fifo start address*/ unsigned char *disp_mem_p; /* Indicate disp buffer start address */ unsigned char *scrn_mem_p; unsigned char *show_p; int *startY; int *startU; int *startV; int *disp_dwp; int dispmem_start; int bckgrnd_color; int scrl_cnt; int clut_num; /*Don't insert any below this*/ int show_h; int show_w; int Y_w; int UV_w; int Y_h; int UV_h; int mem_w; int mem_h; /*Don't insert any UP this*/ int cur_time; } *CDGP;GBLDEF0(int *cdg_yuv_pal);GBLDEF0(int CDG_rdptr);GBLDEF0(CDGP cdg);GBLDEF0(int cdg_data_is_ready);GBLDEF0(int cdg_pause);GBLDEF0(int cdg_fresh_scrn);GBLDEF0(int cdg_tv_type);GBLDEF0(int cdg_show_cnt);GBLDEF0(int cdg_dispmem_start);GBLDEF0(int cdg_stack_start);GBLDEF0(int cdg_yuv_start);GBLDEF0(int cdg_blk_start);GBLDEF0(int cdg_goto_key);GBLDEF0(int cdg_fast_mode);GBLDEF0(int cdg_time);#ifdef MP3CDGGBLDEF(int mp3cdg_abv_size, MP3CDG_ABV_size);GBLDEF0(int mcg_need_data);GBLDEF0(int mp3_cdg_frame);GBLDEF0(int mp3cdg_samples);void MP3CDG_fast_restore();void MP3CDG_pause();void MCG_get_data();void MP3CDG_set(int, int, int);int MP3CDG_file_detect(int mp3_item, int *start_time, int *end_time);#endif/*=====================================================*//* it is to start to process CDDA/CDG data *//* 1. Called in Initialization() to colse WFCK intrrpt *//* 2. Called in av_play_cdda_audio() to start CDG *//* 3. Called in av_reset() to close CDG *//* on = 0; close CDG *//* on = 1; start CDG *//*=====================================================*/void CDG_init(int on);int CDG_main();int CDG_show();#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -