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

📄 at2041_api.c

📁 这个是Linux下的应用程序
💻 C
📖 第 1 页 / 共 4 页
字号:
{	/* ch_id : channel ID	 * hoffset : horizontal offset(16-pel unit), default is '0'	 * voffset : vertical offset(2-line unit), default is '0'	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_MB_OFF, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &hoffset);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &voffset);}void horizontal_sub_mb_offset(uns16 ch_id, uns16 offset){	/* ch_id : channel ID	 * offset : Offset pixel size = this value x 2	 *          default is '0'	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_H2P_OFF, W_FLAG);        write_parm(rx_id, offset);}void eq_mode(uns16 ch_id, uns16 mode){	/* ch_id : channel ID	 * mode : '0' off, '1' on, default is '0'	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_EQ_ON, W_FLAG);        write_parm(rx_id, mode);}void set_eq_parameter(uns16 ch_id, uns16 eq_strength, uns16 iir_strength){	/* This is valid only if EQ is on	 * ch_id : channel ID	 * eq_strength  : '0'(weak) ~ '3'(strong), default is '3'	 * iir_strength : '0'(weak) ~ '3'(strong), default is '0'	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_EQ_PARM, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &eq_strength);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &iir_strength);        }void enhancement_mode(uns16 ch_id, uns16 mode){	/* ch_id : channel ID	 * mode : '0' off, '1' on, default is '0'	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_ENH_ON, W_FLAG);        write_parm(rx_id, mode);}void brightness(uns16 ch_id, uns16 value){	/* ch_id : channel ID	 * value : DC offset value = (this value - 128)	 *         default is 128	 */        rx_id = RxID(GID_DVC, ch_id, PID_DVC_BRIGHT, W_FLAG);        write_parm(rx_id, value);}/* Decoder audio parameters */void audio_decode_standard(uns16 standard){	/* standard : '1' ADPCM, '2' MPEG-1 layer 2, '3' MPEG-1 layer 3	 *            default is '1'	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_STD, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &standard);}void set_aud_stream_id(uns16 ID){	/* ID    : default is 0	 *        - Stream ID : If the input stream format is PES or PS then 0 ~ 15	 *        - PID       : If the input stream format is not TS then 0x0010 ~ 0x1FFE	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_STR_ID, W_FLAG);        write_parm(rx_id, ID);}void audio_output_format(uns16 format, uns16 bits, uns16 delay_mode){	/* format : audio output format	 *          '0' I2S mode, '1' left justified mode, '2' PCM mode,	 *          '3' stream mode, default is '0'	 * bits : bits per sample x the number of the input channel	 *        '0' 8-bit, '1' 16-bit, '4' 32-bit	 *        default is '0'	 * delay_mode : delay mode, '0' no delay, '1' 1 bit delay, default is 0	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_FMT, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &format);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &bits);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &delay_mode);}void dec_audio_clock_inversion(uns16 type){	/* type : '0' use input clock, '1' use inverted clock, default is '0'	 *        This parameter is the same one that is in the audio encoder	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_CLK_INV, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &type);        }void dec_audio_interface_mode(uns16 mode){	/* mode : '0' master mode, '1' slave mode, default is '0'	 *        This parameter is the same one that is in the audio encoder 	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_IF_MODE, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &mode);}void dec_audio_frame_sync_width(uns16 width){	/* width : '0' ~ '1024', default is '0'	 *         This parameter is the same one that is in the audio encoder 	 */        rx_id = RxID(GID_DA, 0x00, PID_DA_FSYNC_WIDTH, W_FLAG);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);        ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &width);}/* insert OSD parameters */void osd_on_off(uns16 ch_id, uns16 mode){	/* ch_id : channel ID	 * mode : '0' off, '1' on, default is '0'	 */        rx_id = RxID(GID_OSD, ch_id, PID_OSD_ON, W_FLAG);        write_parm(rx_id, mode);	printf ("[OSD ON/OFF]\n"); }void encoding_stream_read(uns16 *pdata){	/* mux_data[0] : encoder system parameters	 * mux_data[1] : output data size (256 bit unit)	 * mux_data[2] : garbage data for future use	 */	int i; 	/* read stream data from MuxFIFO */	read(at2042_fd, pdata);}void decoding_stream_write(uns16 *pdata, uns32 picture_size){	/* write stream data to DemuxFIFO */	write(at2042_fd, pdata, picture_size);	}void read_at2041_register(uns8 global_id, uns8 channel_id, uns8 parameter_id){	rx_id = RxID(global_id, channel_id, parameter_id, R_FLAG);		ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);	printf("[at2041_api]read_at2041_register : rx_id= 0x%x\n", rx_id);}uns16 read_state(uns16 rx_id){	//uns16 state;	ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);	////ioctl(at2042_fd, READ_Tx_FIFO, &state);		return (state);}void write_parm(uns16 rx_id, uns16 rx_data){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};#if 0		ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_id);	ioctl(at2042_fd, AT2041_RX_FIFO_ADDR, &rx_data);#else	set_reg_st.cmd_num=1;	set_reg_st.addr=AT2041_RX_FIFO_ADDR;	set_reg_st.value[0]=rx_id;		set_reg_st.value[1]=rx_data;	ioctl(at2042_fd, SET_REG, &set_reg_st);	return ;#endif}uns16 read_status(void) {	uns16 status;		//ioctl(at2042_fd, READ_STATUS_REG, &status);	ioctl(at2042_fd, AT2041_STATUS_REG_ADDR, &status);		return status;}void set_reg(uns16 arg1, uns16 arg2, uns16 arg3){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.cmd_num=1;	set_reg_st.addr=arg1;	set_reg_st.value[0]=arg2;		set_reg_st.value[1]=arg3;	ioctl(at2042_fd, SET_REG, &set_reg_st);	return ;}void set_cbr(uns16 arg1){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.value[1]=arg1;	ioctl(at2042_fd, SET_CBR, &set_reg_st);		return ;}void set_quality(uns16 arg1){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.value[1]=arg1;	ioctl(at2042_fd, SET_QUALITY, &set_reg_st);		return ;}void set_res(uns16 arg1, uns16 arg2){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.value[1]=arg1;	set_reg_st.value[2]=arg2;	ioctl(at2042_fd, SET_RES, &set_reg_st);	return ;}void set_enc_mode(uns16 arg1){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.value[1]=arg1;	ioctl(at2042_fd, SET_ENC_MODE, &set_reg_st);		return ;}void set_enc_opt(uns16 arg1){	_SET_REG_STR_ set_reg_st={0,0,{0,0,0,0,0,0}};	set_reg_st.value[1]=arg1;	ioctl(at2042_fd, SET_ENC_OPT, &set_reg_st);		return ;}void read_tx_reg(void){	ioctl(at2042_fd, AT2041_TX_FIFO_ADDR_READ, NULL);	return ;}void live_on_off(uns16 ch_id, uns16 mode){	/* Live ON/OFF */	/*0:OFF, 1:ON*/	rx_id = RxID(GID_DV, 0, 0x1e, W_FLAG);		write_parm(rx_id, mode);	printf ("[LIVE ON/OFF]\n"); }void display_string(uns16 x, uns16 y, uns8 *str, uns8 attribute){	/* display string	 * x : x coordinate to display string, max = 720	 * y : y coordinate to display string, max = 576	 * str : string array	 * attribute : attribute of string, '0' : copy, '1' : or, '2' : xor	 */	int ii;	uns16 string;	rx_id = RxID(GID_OSD, 0x00, PID_OSD_DISP_STR, W_FLAG);        ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);        ioctl(at2042_fd, WRITE_Rx_FIFO, &x);        ioctl(at2042_fd, WRITE_Rx_FIFO, &y);	rx_data = attribute;        ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	rx_data = strlen(str);        ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	for (ii = 0; ii < rx_data; ii++) {		string = str[ii];        	ioctl(at2042_fd, WRITE_Rx_FIFO, &string);	}		ioctl(at2042_fd, END_OF_WRITE_Rx_FIFO);	return;}void write_rx_fifo (unsigned short ioctl_dat){	 ioctl(at2042_fd, WRITE_Rx_FIFO, &ioctl_dat);	return ;}/**********************************************       author:slh       function:load_image       说明:往2042中加载图片       时间:2007-11-28***********************************************/void load_image(uns8 *image_data){	uns16 h_size=(image_data[1]<<8)|image_data[2];	uns16 v_size=(image_data[3]<<8) | image_data[4];	uns32 image_size=((h_size+1)>>1) * v_size;	int ii;		rx_id=RxID(GID_OSD,0x000,PID_OSD_LOAD_IMG,W_FLAG);	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);		rx_data=image_data[0];	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);		ioctl(at2042_fd, WRITE_Rx_FIFO, &h_size);	ioctl(at2042_fd, WRITE_Rx_FIFO, &v_size);		for(ii=0; ii<image_size; ii++)	{		rx_data=image_data[ii+5];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	}	ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);}/**********************************************       author:slh       function:load_image       说明:显示图片       时间:2007-11-28***********************************************/void display_image(uns16 x,uns16 y,uns8 image_code,uns8 attribute){	rx_id=RxID(GID_OSD,0x000,PID_OSD_DISP_IMG,W_FLAG);	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);	ioctl(at2042_fd, WRITE_Rx_FIFO, &x);	ioctl(at2042_fd, WRITE_Rx_FIFO, &y);		rx_data=attribute;	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	rx_data=image_code;	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);	}/**********************************************       author:slh       function:load_image       说明:设置调色板       时间:2007-11-28***********************************************/void set_palette(uns8 *palette_data){	int ii;	for(ii=0; ii<16; ii++)	{		rx_id=RxID(GID_OSD,0x00,PID_OSD_PALETTE+ii,W_FLAG);		ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);		rx_data=palette_data[(5*ii)+0];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);		rx_data=palette_data[(5*ii)+1];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);		rx_data=palette_data[(5*ii)+2];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);		rx_data=palette_data[(5*ii)+3];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);		rx_data=palette_data[(5*ii)+4];			ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	}		ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);}/**********************************************       author:slh       function:load_image       说明:填充区域       时间:2007-11-28***********************************************/void fill_rect(uns16 x, uns16 y, uns16 h_size, uns16 v_size, uns8 palette, uns8 attribute){	rx_id=RxID(GID_OSD,0x000,PID_OSD_FILL_RECT,W_FLAG);	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);	ioctl(at2042_fd, WRITE_Rx_FIFO, &x);	ioctl(at2042_fd, WRITE_Rx_FIFO, &y);	ioctl(at2042_fd, WRITE_Rx_FIFO, &h_size);	ioctl(at2042_fd, WRITE_Rx_FIFO, &v_size);	rx_data=palette;	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	rx_data=attribute;	ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_data);	ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);	}/**********************************************       author:slh       function:load_image       说明:打开osd       时间:2007-11-28***********************************************/void osd_on(void){	rx_id=RxID(GID_OSD,0x00,PID_OSD_ON,W_FLAG);	rx_data=0x01;	write_parm(rx_id,rx_data);}/**********************************************       author:slh       function:load_image       说明:关闭osd       时间:2007-11-28***********************************************/void osd_off(void){	rx_id=RxID(GID_OSD,0x00,PID_OSD_ON,W_FLAG);	rx_data=0x01;	write_parm(rx_id,rx_data);}void save_image(uns16 x,uns16 y,uns16 h_size,uns16 v_size,uns16 reserved){        rx_id=RxID(GID_OSD,0x00,PID_OSD_SAVE_IMG,W_FLAG);        ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);        ioctl(at2042_fd, WRITE_Rx_FIFO, &x);        ioctl(at2042_fd, WRITE_Rx_FIFO, &y);        ioctl(at2042_fd, WRITE_Rx_FIFO, &h_size);        ioctl(at2042_fd, WRITE_Rx_FIFO, &v_size);        ioctl(at2042_fd, WRITE_Rx_FIFO, &reserved);        ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);}void restore_image(uns16 reserved){        rx_id=RxID(GID_OSD,0x00,PID_OSD_RESTORE_IMG,W_FLAG);        ioctl(at2042_fd, WRITE_Rx_FIFO, &rx_id);        ioctl(at2042_fd, WRITE_Rx_FIFO, &reserved);        ioctl(at2042_fd,END_OF_WRITE_Rx_FIFO);}

⌨️ 快捷键说明

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