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

📄 avapi.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 H
字号:
/*
** FILE
** avapi.h
**
** DESCRIPTION
** Audio/Video Application Programming Interface
**
** HISTORY
** v.0.0.1        2001.10.24
**
**
**/

#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))


#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 + -