📄 at2041_api.c
字号:
{ /* 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 + -