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

📄 avapi.h

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 H
字号:
#ifndef __AVAPI_H
#define __AVAPI_H

#include "avd.h"
#include "global.h"
#include "auctrl.h"
#include "pcm.h"

/*
 **
 **	Audio/Video API control section
 **
 **	Usage : AVAPI_control(rw, func, arg);
 **
 */
/*
 **	video control commands (not completed yet)
 */
#define	AVAPI_REALTIME		(0x00008000 | ( 0 << 0))
#define	AVAPI_PLAY_I		(0x00008000 | ( 1 << 0))
#define	AVAPI_SLIDE		(0x00008000 | ( 2 << 0))
#define	AVAPI_PREVIEW		(0x00008000 | ( 3 << 0))
#define	AVAPI_PAUSE		(0x00008000 | ( 4 << 0))
#define	AVAPI_LEAVE_ID		(0x00008000 | ( 7 << 0))

//	Read only commands
#define	AVAPI_STATUS_CONTROL	(0x00008000 | ( 5 << 0))
#define	AVAPI_STATUS_SYSTEM	(0x00008000 | ( 6 << 0))
#define	STATUS_TIMEOUT		(0x0001)
#define	STATUS_INTERRUPT	(0x0002)
#define	STATUS_ERROR		(0x0004)
#define	STATUS_FRAMERATE	(0x0008)
#define	STATUS_DECODE_NTSC	(0x0010)
#define	STATUS_DECODE_PAL	(0x0020)
#define	STATUS_DISPLAY_NTSC	(0x0040)
#define	STATUS_DISPLAY_PAL	(0x0080)
#define	STATUS_CD_LAYER		(0x0100)
#define	STATUS_CD_PAYLOAD	(0x0200)
#define	STATUS_SYSTEM_LAYER	(0x0400)
#define	STATUS_SYSTEM_PAYLOAD	(0x0800)
#define	STATUS_VIDEO_PARSE	(0x1000)
#define	STATUS_VIDEO_DUMP	(0x2000)
#define	STATUS_DECODE_READY	(0x4000)
#define	STATUS_DECODING		(0x8000)

/*
 **	Audio control commands
 */
#define AVAPI_MUTE		(0x80000000 | ( 0 << 16))
#define	AVAPI_KEYSHIFT		(0x80000000 | ( 1 << 16))
#define	AVAPI_VOLUME		(0x80000000 | ( 2 << 16))
#define	AVAPI_CHANNEL		(0x80000000 | ( 3 << 16))
#define	AVAPI_SOUND_EFFECT	(0x80000000 | ( 4 << 16))
#define	AVAPI_EQ		(0x80000000 | ( 5 << 16))
#define	AVAPI_MIC_VOLUME	(0x80000000 | ( 6 << 16))
#define	AVAPI_EQ_SET_BAND_GAIN	(0x80000000 | ( 7 << 16))
#define	AVAPI_SPECTRUM		(0x80000000 | ( 8 << 16))
#define	AVAPI_MIC_MODE		(0x80000000 | ( 9 << 16))
#define	AVAPI_SET_ECHO		(0x80000000 | (10 << 16))
#define	AVAPI_FDFC_RESET	(0x80000000 | (11 << 16))
#define	AVAPI_FDFC_CODEC	(0x80000000 | (12 << 16))
#define	AVAPI_FDFC_STOP		(0x80000000 | (13 << 16))
#define	AVAPI_FDFC_PLAY_MODE	(0x80000000 | (14 << 16))
#define	AVAPI_SCORE_RESET	(0x80000000 | (15 << 16))
#define	AVAPI_SCORE_STOP	(0x80000000 | (16 << 16))
#define	AVAPI_CDDA_ESP		(0x80000000 | (17 << 16))

//	Read only commands
#define	AVAPI_STATUS_DECODER		(0x80000000 | (64 << 16))
#define	AVAPI_STATUS_BITSTREAM		(0x80000000 | (65 << 16))
#define	AVAPI_STATUS_PCM_FIFO		(0x80000000 | (66 << 16))
#define	AVAPI_STATUS_PCM_HIGH		(0x80000000 | (67 << 16))
#define	AVAPI_STATUS_SCORING		(0x80000000 | (68 << 16))
#define	AVAPI_SCORE_LOCAL		(0x80000000 | (69 << 16))
#define	AVAPI_SCORE_GLOBAL		(0x80000000 | (70 << 16))
#define	AVAPI_MP3_BITRATE		(0x80000000 | (71 << 16))
#define	AVAPI_ESP_SAMPLE_COUNT		(0x80000000 | (72 << 16))
#define	AVAPI_ESP_FREE_SAMPLE_COUNT	(0x80000000 | (73 << 17))

#if 0
void			AVAPI_control(BYTE, UINT32, UINT16);
#endif

#define	AVAPI_control(rw, func, arg)					\
	do {								\
	    if (((func) & 0xffff0000) == 0) {				\
		if (rw) {						\
		    if ((func) == AVAPI_LEAVE_ID)			\
			vid_set_leave_id(arg);				\
		    else {						\
			avapi_status = (((AVD_state_flags & AVD_REALTIME) ? AVAPI_REALTIME : 0)	| \
					((AVD_state_flags & AVD_PLAY_I)	  ? AVAPI_PLAY_I   : 0) | \
					((AVD_state_flags & AVD_SLIDE)	  ? AVAPI_SLIDE	   : 0) | \
					((AVD_state_flags & AVD_PREVIEW)  ? AVAPI_PREVIEW  : 0) | \
					((AVD_state_flags & AVD_PAUSE)	  ? AVAPI_PAUSE	   : 0)); \
		    }							\
		}							\
		else {							\
		    if ((func) == AVAPI_STATUS_CONTROL) {			\
			avapi_status = (((AVD_state_flags & AVD_REALTIME) ? AVAPI_REALTIME : 0) | \
					((AVD_state_flags & AVD_PLAY_I)   ? AVAPI_PLAY_I   : 0) | \
					((AVD_state_flags & AVD_SLIDE)    ? AVAPI_SLIDE    : 0) | \
					((AVD_state_flags & AVD_PREVIEW)  ? AVAPI_PREVIEW  : 0) | \
					((AVD_state_flags & AVD_PAUSE )	  ? AVAPI_PAUSE    : 0)); \
		    }							\
		    else if ((func) == AVAPI_STATUS_SYSTEM) {		\
			avapi_status = (((IsAVDMediaTimeout())	? STATUS_TIMEOUT	: 0)  |	\
					((IsAVDMediaInterrupt())? STATUS_INTERRUPT	: 0)  |	\
					((IsAVDMediaError())	? STATUS_ERROR		: 0)  |	\
					((IsAVDFrameRate())	? STATUS_FRAMERATE	: 0)  |	\
					((IsAVDDecodeNTSC())	? STATUS_DECODE_NTSC	: 0)  |	\
					((IsAVDDecodePAL())	? STATUS_DECODE_PAL	: 0)  |	\
					((IsAVDDisplayNTSC())	? STATUS_DISPLAY_NTSC	: 0)  |	\
					((IsAVDDisplayPAL())	? STATUS_DISPLAY_PAL	: 0)) |	\
					(((do_cd == do_cd_layer)		? STATUS_CD_LAYER :		\
					  (do_cd == do_cd_payload)		? STATUS_CD_PAYLOAD : 0) |	\
					 ((do_system == do_system_layer)	? STATUS_SYSTEM_LAYER :		\
					  (do_system == do_system_payload)	? STATUS_SYSTEM_PAYLOAD : 0) |	\
					 ((do_video == do_video_parsing)	? STATUS_VIDEO_PARSE :		\
					 ((do_video == do_video_dumping)	? STATUS_VIDEO_DUMP : 0)) |	\
					 ((do_dec_video == do_decode_ready)	? STATUS_DECODE_READY :		\
					  (do_dec_video == do_decoding)		? STATUS_DECODING : 0));	\
		    }							\
		}							\
	    }								\
	    else {							\
		if (rw) {						\
		    if ((func) == AVAPI_MUTE)			au_mute(arg);		\
		    else if ((func) == AVAPI_KEYSHIFT)		au_keyshift(arg);	\
		    else if ((func) == AVAPI_VOLUME)		au_volume(arg);		\
		    else if ((func) == AVAPI_CHANNEL)		au_select_channel(arg);	\
		    else if ((func) == AVAPI_SOUND_EFFECT)	au_sound_effect(arg);	\
		    else if ((func) == AVAPI_EQ)		au_eq(arg);		\
		    else if ((func) == AVAPI_MIC_VOLUME)	au_mic_volume(arg);	\
		    else if ((func) == AVAPI_EQ_SET_BAND_GAIN)	\
			au_eq_user_gain((arg) & 0xffff, (((int)(arg)) >> 16));	/* band index is in lower half-word and dB is in higher half-word */	\
		    else if ((func) == AVAPI_SPECTRUM)		au_spectrum(arg);	\
		    else if ((func) == AVAPI_MIC_MODE)		au_mic_mode(arg);	\
		    else if ((func) == AVAPI_SET_ECHO)		\
			au_set_echo((arg) >> 16, (arg) & 0xffff);	/* delay in higher half-word and decay in lower half word */	\
		    else if ((func) == AVAPI_FDFC_RESET)	au_reset_fudu(arg);	\
		    else if ((func) == AVAPI_FDFC_CODEC)	au_set_fudu_codec(arg);	\
		    else if ((func) == AVAPI_FDFC_STOP)		au_stop_fudu();		\
		    else if ((func) == AVAPI_FDFC_PLAY_MODE)	au_set_fudu_play_mode(arg);	\
		    else if ((func) == AVAPI_SCORE_RESET)	reset_scoring(arg);	\
		    else if ((func) == AVAPI_SCORE_STOP)	stop_scoring();		\
		    else if ((func) == AVAPI_CDDA_ESP)		cdda_esp_enable(arg);	\
		}						\
		else {						\
		    if ((func) == AVAPI_STATUS_DECODER)		avapi_status = au_get_decoder_status();	\
		    else if ((func) == AVAPI_STATUS_BITSTREAM)	avapi_status = au_get_bitstream_count();\
		    else if ((func) == AVAPI_STATUS_PCM_FIFO)	avapi_status = au_get_pcm_fifo_count();	\
/*		    else if ((func) == AVAPI_SOUND_EFFECT)	avapi_status = au_get_sound_effect();*/	\
		    else if ((func) == AVAPI_KEYSHIFT)		avapi_status = au_get_key();		\
		    else if ((func) == AVAPI_CHANNEL)		avapi_status = au_get_channel_select();	\
		    else if ((func) == AVAPI_MUTE)		avapi_status = au_get_mute_flag();	\
		    else if ((func) == AVAPI_VOLUME)		avapi_status = au_get_volume();		\
		    else if ((func) == AVAPI_MIC_MODE)		avapi_status = au_get_mic_mode();	\
		    else if ((func) == AVAPI_MIC_VOLUME)	avapi_status = au_get_mic_volume();	\
		    else if ((func) == AVAPI_FDFC_STOP)		avapi_status = au_is_fudu_stopped();	\
		    else if ((func) == AVAPI_STATUS_PCM_HIGH)	avapi_status = polling_pcm_energy();	\
		    else if ((func) == AVAPI_STATUS_SCORING)	avapi_status = is_scoring();		\
		    else if ((func) == AVAPI_SCORE_LOCAL)	avapi_status = get_local_score();	\
		    else if ((func) == AVAPI_SCORE_GLOBAL)	avapi_status = get_score();		\
		    else if ((func) == AVAPI_MP3_BITRATE)	avapi_status = mp3_get_bitrate();	\
		    else if ((func) == AVAPI_ESP_SAMPLE_COUNT)	avapi_status = adpcm_buffer_count();	\
		    else if ((func) == AVAPI_ESP_FREE_SAMPLE_COUNT)	\
			avapi_status = adpcm_buffer_free_count();	\
		}							\
	    }								\
	}   while(0)

#endif	__AVAPI_H

⌨️ 快捷键说明

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