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

📄 ir_drv.c

📁 凌阳8202T的红外接收代码及LED屏的驱动代码
💻 C
📖 第 1 页 / 共 5 页
字号:
			case(VOD_LOGO_14): 
				return vod_logo_14(rx);
				break;
			case(VOD_LOGO_15): 
				return vod_logo_15(rx);
				break;
			case(VOD_LOGO_111): 
				return vod_logo_111(rx);
				break;
			case(VOD_LOGO_121): 
				return vod_logo_121(rx);
				break;	
			case(VOD_LOGO_13_NO_MUS): 
				return vod_logo_13_music_not_found(rx);
				break;
			case(VOD_LOGO_141): 
				return vod_logo_141(rx);
				break;	
			case(VOD_LOGO_1411): 
				return vod_logo_1411(rx);
				break;	
			case(VOD_LOGO_151): 
				return vod_logo_151(rx);
				break;
			case(VOD_LOGO_1511): 
				return vod_logo_1511(rx);
				break;	
			case(VOD_LOGO_15_NO_PIC): 
				return vod_logo_15_pic_not_found(rx);
				break;
			case(VOD_LOGO_PASSWORD):
				return vod_logo_password(rx);
				break;
			case(VOD_LOGO_PASSWORD_NO_FONTLIB):
				return vod_logo_password_no_fontlib(rx);
				break;
			case(VOD_LOGO_SETUP): 
				return vod_logo_setup(rx);
				break;	
			case(VOD_LOGO_IP_CLEAR):
				return vod_logo_ip_clear(rx);
				break;
			case(VOD_LOGO_NETWORK_CHECK):
				return vod_logo_network_check(rx);
				break;
			case(VOD_LOGO_COPYRIGHT):
				return vod_logo_copyright(rx);
				break;

#ifdef HOTEL_IPTV_SYSTEM		
			case(VOD_LOGO_RETURN_HOTEL_SYSTEM):
				return vod_logo_return_hotel_system(rx);
				break;
#endif				
			default:
				return 0;
				break;
	}


}


/*******************************************************************

	如果在视频播放的状态下
	
********************************************************************/
#include "framebuf_if.h"

BYTE vod_video_ir(UINT16 rx){

	//如果是GOTO
	if(vod_isVideo & VOD_VIDEO_Y_GOTO){
		return vod_video_ir_goto(rx);
	}

	//如果是收费视频
	if(vod_isVideo & VOD_VIDEO_Y_CHARGE){
		return vod_video_ir_ischarge(rx);
	}
	
	//如果是询问是否要退出视频
	if(vod_isVideo & VOD_VIDEO_Y_ISEXIT){
		return vod_video_ir_isexit(rx);
	}
	

	//在进入视频播放主函数前,则不执行以下代码
	if(vod_video_play_state == VOD_VIDEO_STOP)
		return 0;
	
		
	//返回
	if(rx == VOD_IRC_RETURN){
	
		//画询问框,询问客户,是否要退出视频
		vod_osd_video_isexit();
		vod_isVideo |= VOD_VIDEO_Y_ISEXIT;
		
		return 1;			
	}	

	//放大,按键'电视/VOD'
	if(rx == VOD_IRC_ZOOM){	

		//放大
		ircmd_zoom();
		vod_osd_video_display(VOD_VIDEO_ZOOM);
		printf_w("###vpp_zoom = %d\n",vpp_zoom);
		return 0;
	}	


	
	//暂停
	if(rx == VOD_IRC_PAUSE_PLAY){

		/*		
		//	如果还没付款,则不进行以下动作
		if(vod_video_isCharges == VOD_VIDEO_CHARGES_WAIT_FOR_PAID)
			return 0;
		*/
	
		//暂停播放
		if(play_state == VCD_STATE_NORMAL){
			//run_pause(1);
			//avd_pause_on();
			Pause();
			play_state=VCD_STATE_PAUSE;

		}
		//继续播放
		else{
			//avd_pause_off();
			//Continue();
			chg2normal_play(FAST2NORM|PAUSE2NORM|SLOW2NORM,REALPLAY);
			play_state=VCD_STATE_NORMAL;
		}
		vod_osd_video_display(VOD_VIDEO_PAUSE);
		
		return 0;
	}

	//停止


	//音量-
	if(rx == VOD_IRC_VOLUME_DN){	
		if(vod_video_time_display_state){
			//清除静音
			user_mute = 0;	
			if(audio_volume<=0)
				audio_volume = 0;
			else
				audio_volume --;	
			AUDIF_Set_Volume(audio_volume);
		}
		vod_osd_video_display(VOD_VIDEO_VOLUME);
		return 0;
	}
	//音量+
	if(rx == VOD_IRC_VOLUME_UP){	
		if(vod_video_time_display_state){
			//清除静音
			user_mute = 0;	
			if(audio_volume>=15)
				audio_volume = 15;
			else
				audio_volume ++;			
			AUDIF_Set_Volume(audio_volume);
		}
		vod_osd_video_display(VOD_VIDEO_VOLUME);
		return 0;
	}	
	//静音
	if(rx == VOD_IRC_MUTE){	
		//ircmd_mute();	
		if(user_mute){
			//清除静音
			user_mute = 0;
			AUDIF_Set_Volume(audio_volume);
		}
		else{
			//设置静音
			user_mute = 1;	
			AUDIF_Set_Volume(0);		
		}	
		vod_osd_video_display(VOD_VIDEO_MUTE);
		return 0;
	}	
	//声道
	if(rx == VOD_IRC_CHANNEL){	
		if(vod_video_time_display_state){
			ircmd_channel1();
		}
		vod_osd_video_display(VOD_VIDEO_CHANNEL);
		return 0;
	}	
	//语言
	if(rx == VOD_IRC_LANGUAGE){		
		if(vod_video_time_display_state){
			
			//如果是AVI视频	
			if(iptv_file_type == IPTV_FILE_TYPE_AVI){

				//如果存在idx1
				if(idx1_position ){
					
					if (NP_ASTN==0xf){
						NP_ASTN = 0;
					}
					else{
						NP_ASTN++;
						if (NP_ASTN >= pDSV->dAv_AST_Ns){
							NP_ASTN = 0x0;
						}
					}

					if (audio_chan_num != NP_ASTN){
						mp4_aud_channel_flg = 1; 
						audio_chan_num = NP_ASTN;	
					}
				}

			}
			//不是AVI视频
			else	{
				if(audio_chan_num==1)
					audio_chan_num = 0;
				else
					audio_chan_num = 1;
				AUDIF_AutoDownload_Codec(audio_chan_num); //自动判断音轨切换
			}
		}
		vod_osd_video_display(VOD_VIDEO_LANGUAGE);
		//printf_w("####audio_chan_num = %d\n",audio_chan_num);
		return 0;
	}	

	//快进
	if(rx == VOD_IRC_FASTFORWARD){	
		if(adv_search_time == 5){
			adv_search_time = 0;
			ircmd_play_resume();
		}
		else{
			play_state=VCD_STATE_FASTFORWARD;
			ircmd_forward();
		}		
		vod_osd_video_display(VOD_VIDEO_FASTFORWARD);
		printf_w("###adv_search_time = %d\n",adv_search_time);
		return 0;
	}
	//后退
	if(rx == VOD_IRC_FASTBACKWARD){
		
		//如果是在快进状态,不执行
		if(play_state == VCD_STATE_FASTFORWARD){
			return 0;	
		}

		//如果长度太小,不执行
		if(iptv_file_parser_length < VOD_VIDEO_GOTO_TOTAL_LENGTH)
			return 0;	

		//如果是AVI视频,不执行
		if(iptv_file_type == IPTV_FILE_TYPE_AVI){
			//如果不存在idx1
			if(idx1_position == 0)
				return 0;

			vod_video_goto_curPos = GET_MP4_TIME()/(vod_avi_total_time/VOD_VIDEO_GOTO_TOTAL_LENGTH);
			
		}
		else{
			vod_video_goto_curPos = iptv_file_media_control /(iptv_file_parser_length/VOD_VIDEO_GOTO_TOTAL_LENGTH);
		}
		
		if(vod_video_goto_curPos)
			vod_video_goto_curPos --;
		//显示当前位置
		vod_osd_video_display(VOD_VIDEO_GOTO);
		vod_osd_video_display(VOD_VIDEO_FASTBACKWARD);
		//按下OK键
		vod_video_ir_goto(VOD_IRC_CONFIRM);
		return 0;
	}
	
	//GOTO,按键'章节'
	if(rx == VOD_IRC_NOVEL_CHANGE_PIC){
		//如果是等待收费状态
		if(vod_video_isCharges ==VOD_VIDEO_CHARGES_NOTICE ||vod_video_isCharges ==VOD_VIDEO_CHARGES_WAIT_FOR_PAID){
			return 0;		
		}

		
		//如果是在快进状态,不执行
		if(play_state == VCD_STATE_FASTFORWARD){
			return 0;	
		}

		//如果长度太小,不执行
		if(iptv_file_parser_length < VOD_VIDEO_GOTO_TOTAL_LENGTH)
			return 0;	

		

		//如果是AVI视频	
		if(iptv_file_type == IPTV_FILE_TYPE_AVI){
			//如果不存在idx1
			if(idx1_position == 0)
				return 0;

			
			vod_video_goto_curPos = GET_MP4_TIME()/(vod_avi_total_time/VOD_VIDEO_GOTO_TOTAL_LENGTH);
			//printf_w("####current_time = %d\n",current_time);
					
		}
		else{
			vod_video_goto_curPos = iptv_file_media_control /(iptv_file_parser_length/VOD_VIDEO_GOTO_TOTAL_LENGTH);
		}
		
		vod_video_goto_playingPos = vod_video_goto_curPos;
		vod_osd_video_display(VOD_VIDEO_GOTO);
		vod_isVideo |= VOD_VIDEO_Y_GOTO;
		return 0;
	}
	
	//字幕
	if(rx == VOD_IRC_SUBTITLES){
		if(vod_video_time_display_state){
			vod_video_subtitle_id = Subp_stream_Chg_VOB(1);		
		}
		vod_osd_video_display(VOD_VIDEO_SUBTITLE);
		printf_w("#####sub_id = %x\n",vod_video_subtitle_id);
		return 0;
	}

	//放大时候移动
	//按键‘上’
	if(rx == VOD_IRC_UP){	
		if(vpp_zoom> 0 && vpp_zoom <= 4)
			ircmd_up();
		return 0;
	}
	//按键‘下’
	if(rx == VOD_IRC_DOWN){	
		if(vpp_zoom> 0 && vpp_zoom <= 4)
			ircmd_down();
		return 0;
	}
	//按键‘左’
	if(rx == VOD_IRC_LEFT){
		if(vpp_zoom> 0 && vpp_zoom <= 4){
			ircmd_left();
		}
		return 0;
	}
	//按键‘右’
	if(rx == VOD_IRC_RIGHT){
		if(vpp_zoom> 0 && vpp_zoom <= 4){
			ircmd_right();
		}
		return 0;
	}

	//上一页,连续剧上一集
	if(rx == VOD_IRC_PAGE_UP){
		if(vod_current_logo == VOD_LOGO_12){
	
			if(vod_series_episode ){
				// 停止播放,播放上一集
				AVD_SetMediaInterrupt();
				vod_video_play_state = VOD_VIDEO_PLAY_PRE;
			}		
		}

	}

	//下一页,连续剧下一集
	if(rx == VOD_IRC_PAGE_DOWN){
		if(vod_current_logo == VOD_LOGO_12){
			vod_program_t * program_header = (vod_program_t *)(vod_series_bufstart+ VOD_SERVER_HEADER);
			UINT16 shEpisodes = (program_header+vod_program_search_result[vod_current_page*6+vod_current_button_right+1])->shEpisodes;
		
			if(vod_series_episode + 1 < shEpisodes)
			{
				// 停止播放,播放下一集
				AVD_SetMediaInterrupt();
			}
		}
	}	
	return 0;
}

/*******************************************************************

	如果在视频播放的状态下,goto
	
********************************************************************/
BYTE vod_video_ir_goto(UINT16 rx){
	//按键‘左’
	if(rx == VOD_IRC_LEFT){
		if(vod_video_goto_curPos > 0){
			vod_video_goto_curPos --;
			vod_osd_video_display(VOD_VIDEO_GOTO);			
		}
		return 0;
	}
	//按键‘右’
	if(rx == VOD_IRC_RIGHT){
		if( vod_video_goto_curPos < VOD_VIDEO_GOTO_TOTAL_LENGTH){
			vod_video_goto_curPos ++;
			vod_osd_video_display(VOD_VIDEO_GOTO);
		}
		return 0;
	}
	//按键'OK'
	if(rx == VOD_IRC_CONFIRM){	

		//如果跳转到最后,则退出视频
		if(vod_video_goto_curPos >=  VOD_VIDEO_GOTO_TOTAL_LENGTH){
			// 停止播放
			AVD_SetMediaInterrupt();
			vod_isVideo = VOD_VIDEO_Y;
			vod_osd_video_display_clear();
			return 1;
		}

		//如果跳转的位置是当前位置,则不跳转
		if(vod_video_goto_curPos == vod_video_goto_playingPos){
			vod_isVideo = VOD_VIDEO_Y;
			vod_osd_video_display_clear();
			return 0;
		}
		
		
		//断开连接,暂停
		vod_Socket_Disonnect(0);
		vod_Socket_Connect(0);
		Pause();
		//同步音视频
		vod_video_audio_synchn = 1;


		
									
		//如果是avi 
		if(iptv_file_type == IPTV_FILE_TYPE_AVI){
			//disp_time  = GET_MP4_TIME();
			//UINT32 total_time =( iptv_file_parser_length / iptv_file_media_control) * disp_time;
			nGotoPck  = vod_video_goto_curPos*(vod_avi_total_time/VOD_VIDEO_GOTO_TOTAL_LENGTH);

			//nGotoPck = 500*vod_video_goto_curPos; //GOTO 的时间 秒为单位。
			//iptv_file_media_control =  avi_set_goto(nGotoPck);
			UINT64 file_length = iptv_file_parser_length;
			//解码长度
			iptv_file_media_control = (file_length*nGotoPck)/vod_avi_total_time;
			
			//如果是播放电影
			if(vod_current_logo == VOD_LOGO_11){
				if(vod_video_file_current ){
					file_length = vod_video_files_size[vod_video_file_current] - vod_video_files_size[vod_video_file_current -1] ;
					iptv_file_media_control = (file_length*nGotoPck)/vod_avi_total_time;
					iptv_file_media_control += vod_video_files_size[vod_video_file_current -1] ;
				}
				else{
					file_length = vod_video_files_size[0];
					iptv_file_media_control = (file_length*nGotoPck)/vod_avi_total_time;
				}
			}

			iptv_file_media_control = 512*(iptv_file_media_control/512);

		}
		else{
			//接收、解码长度的设置
			iptv_file_media_control = vod_video_goto_curPos * (iptv_file_parser_length/VOD_VIDEO_GOTO_TOTAL_LENGTH);	
		}
		
		
		//已接收的长度
		vod_video_rx_len = iptv_file_media_control;
		//上次接收的长度
		vod_video_rx_len_last_time = vod_video_rx_len ;
		iptv_buf_rdp = 0;
		iptv_buf_wrp = 0;
		//如果是播放电影(有多个文件)
		if(vod_current_logo == VOD_LOGO_11){
			vod_video_file_current = 0;
			while(vod_video_rx_len >= vod_video_files_size[vod_video_file_current]){
				//下一个视频文件
				vod_video_file_current ++;							
			}	
			vod_tx_s0_command.request_file.dwNumber = vod_video_file_current+1;
		}		

		printf_w("###vod_video_files_size[vod_video_file_current] = %llu\n",vod_video_files_size[vod_video_file_current]);
		printf_w("###iptv_file_parser_length = %llu\n",iptv_file_parser_length);
		printf_w("###vod_video_rx_len = %llu\n",vod_video_rx_len);
		
		vod_isVideo = VOD_VIDEO_Y;
		vod_osd_video_display_clear();
		return 1;
	}
	//返回键,或GOTO键
	if(rx == VOD_IRC_RETURN){
		vod_isVideo = VOD_VIDEO_Y;
		vod_osd_video_display_clear();

⌨️ 快捷键说明

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