📄 avapi.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 + -