亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ivocuse.c

?? brew voice sound brew voice sound
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*===========================================================================

FILE: ivocuse.c

DESCRIPTION

  This app demonstrates BREW's ability to stream audio with the IVocoder interface.  
  In order to simulate streaming, the application takes inputed data from the
  IVocoder interface and then plays that back through the interface.

===========================================================================*/

/*===============================================================================
                                   INCLUDES 
=============================================================================== */

#include "AEEModGen.h"
#include "AEEAppGen.h"
#include "AEEShell.h"
#include "AEEMenu.h"
#include "AEEStdLib.h"
#include "AEEVocoder.h"
#include "AEESound.h"
#include "ivocuse.bid"
#include "ivocuse_res.h"


/*===============================================================================
                            GLOBAL CONSTANT DEFINITIONS
=============================================================================== */

//The buffer must be large enough to support the maximum frame rate for the 
//vocoder, not merely the maximum used by the current rate limits
#define MAXFRAMELEN 256 // Size of input buffer to VocInRead


/*===============================================================================
                                   STRUCTURES
=============================================================================== */

// TODO: add comments
typedef struct _CVocApp {
   AEEApplet            a;                       // Applet Structure
   byte                 frameData[MAXFRAMELEN];  // Buffer for reading and writing frames
   AECHAR               pNameBuffer[256];        // Buffer for display text
   AEEDeviceInfo        deviceInfo;              // Holds Device Info

   IMenuCtl            *pIMenu;                  // Pointer to Main Menu
   IMenuCtl            *pISoft;                  // Pointer to Soft Menu
   IMenuCtl            *pIBack;                  // This menu holds the back button
   IVocoder            *pIVocoder;               // Pointer to the IVocoder interface
   ISound              *pISound;                 // Sound pointer used for setting sound variables 
   IStatic             *pIStatic;                // A Static box used for displaying text

   IVocoderConfigType   vocConfig;               // Holds Vocoder config data
   IVocoderInfoType     vocInfo;                 // Configuration information about the selected vocoder 
   AEESoundInfo         soundInfo;               // Holds info used for ISound_SetDevice

   boolean              bActive;                 // TRUE if active
   boolean              bVocOn;                  // TRUE if on        
}CVocApp;



/*-------------------------------------------------------------------
            Function Prototypes
-------------------------------------------------------------------*/
// App Handle Event function
static boolean VocUseApp_HandleEvent(CVocApp* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam);

// App specific data alloc-init/free functions
static boolean VocUse_InitAppData(CVocApp* pMe);
static void VocUse_FreeAppData(CVocApp* pMe);
static void HaveDataCB(uint16 numFrames, void * usrPtr);
static void NeedDataCB(uint16 numFrames, void * usrPtr);
static void ReadyCB(void * usrPtr);

// Display related helper functions
void DisplayOutput(CVocApp * pMe, uint16 event);
static void DisplayMessageToScreen(CVocApp* pMe, AECHAR* message);

// Menu manipulation
void BuildMainMenu(CVocApp *pMe);
void BuildSoftMenu(CVocApp *pMe);
static void ReplaceMenuItem(IMenuCtl *pIMenu, uint16 remove, uint16 add);


/*===============================================================================
                     FUNCTION DEFINITIONS
=============================================================================== */

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
   *ppObj = NULL;

   // We want to load this App. So, invoke AEEApplet_New().To it, pass the
   // address of the app-specific handle event function.
   if (ClsId == AEECLSID_IVOCUSE)
   {
      if (AEEApplet_New(sizeof(CVocApp), ClsId, pIShell,po,(IApplet**)ppObj,
                        (AEEHANDLER)VocUseApp_HandleEvent,(PFNFREEAPPDATA)VocUse_FreeAppData)
          == TRUE)
      {
         if (VocUse_InitAppData((CVocApp*)*ppObj) == TRUE)
         {
            return(AEE_SUCCESS);
         }
      }
   }
   return(EFAILED);
}

/*===========================================================================

FUNCTION VocUse_SetActive

DESCRIPTION
   This function activates or deactivates the IVocoder.  On activation
   all parameters of the IVocoder as well as settings for sound info.  
   Info is available in the API on correct congigurations for the IVocoder.

PROTOTYPE:
	static void VocUse_SetActive(CVocApp* pMe, boolean active);

PARAMETERS:
   pMe: [in]: Pointer to CVocApp  struct
   active: [in]: TRUE for activation, FALSE for deactivation

DEPENDENCIES
  None

RETURN VALUE
  None

SIDE EFFECTS
  None
===========================================================================*/
static void VocUse_SetActive(CVocApp* pMe, boolean active)
{
   int status;

   // Check to see if activity is already set
   if (active == pMe->bActive)
   {
      return;
   }

   // If we are setting the IVocoder active...
   if (active) {

      // Data Integrity checks
      if (pMe->pIVocoder && pMe->pISound) {

         // Unmute the microphone and earpiece
         pMe->soundInfo.eDevice     = AEE_SOUND_DEVICE_SPEAKER; //AEE_SOUND_DEVICE_CURRENT;
         pMe->soundInfo.eMethod     = AEE_SOUND_METHOD_VOICE;
         pMe->soundInfo.eAPath      = AEE_SOUND_APATH_BOTH;
         pMe->soundInfo.eEarMuteCtl = AEE_SOUND_MUTECTL_UNMUTED;
         pMe->soundInfo.eMicMuteCtl = AEE_SOUND_MUTECTL_UNMUTED;

         // Set configurations via ISOUND interface
         ISOUND_Set(pMe->pISound, &pMe->soundInfo);
         ISOUND_SetDevice(pMe->pISound);

         // Set necessary config data, Description in API
         pMe->vocConfig.needDataCB = NeedDataCB;
         pMe->vocConfig.haveDataCB = HaveDataCB;
         pMe->vocConfig.playedDataCB = NULL;
         pMe->vocConfig.readyCB = ReadyCB;
         pMe->vocConfig.usrPtr = pMe;
         pMe->vocConfig.max = HALF_RATE;
         pMe->vocConfig.min = EIGHTH_RATE;
         pMe->vocConfig.overwrite = TRUE;
         pMe->vocConfig.txReduction = 0;
         pMe->vocConfig.vocoder = VOC_IS127;
         pMe->vocConfig.watermark = 24;

         // Configure IVocoder
         status = IVOCODER_VocConfigure(pMe->pIVocoder, pMe->vocConfig, &pMe->vocInfo);

         // check status
         if(status != SUCCESS) {
               DBGPRINTF("Problem w/ Voc %d",status);
         }

         
         //Set buffer
         DBGPRINTF("buffersize %d", pMe->vocInfo.maxFrameSize);

         // if on and configured
         if(pMe->bVocOn) {
            ReadyCB(pMe);
         }
      }

      // Display status to screen
      DisplayOutput(pMe, IDS_STREAM);
   }

   // If we are deactivating the IVocoder
   else if (!active) {

         // Data Integrity Checks
         if (pMe->pIVocoder && pMe->pISound) {

            // We stop incoming and outgoing data
            IVOCODER_VocInStop(pMe->pIVocoder);
            IVOCODER_VocOutStop(pMe->pIVocoder);

            // Reset data in Vocoder
            IVOCODER_VocOutReset(pMe->pIVocoder); 
            IVOCODER_VocInReset(pMe->pIVocoder); 
         }
   }

   // Set boolean value
   pMe->bActive = active;
}

/*===========================================================================

FUNCTION VocUseApp_HandleEvent

DESCRIPTION
   This function ahandles events sent to the application.

PROTOTYPE:
	static boolean VocUseApp_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);

PARAMETERS:
	pMe: Pointer to app data

	ecode: Specifies the Event sent to this applet

   wParam, dwParam: Event specific data.

DEPENDENCIES
  None

RETURN VALUE
  None

SIDE EFFECTS
  None
===========================================================================*/
static boolean VocUseApp_HandleEvent(CVocApp* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) {

   switch (eCode) {
      // Start Applet
      case EVT_APP_START:

         // Set Main menu active
         IMENUCTL_SetActive(pMe->pIMenu,TRUE);

         return(TRUE);

      // End Applet
      case EVT_APP_STOP:
         VocUse_SetActive(pMe, FALSE);
         return(TRUE);

      // Handle Key events
      case EVT_KEY:

         // Handle events in the main menu
         if(pMe->pIMenu && IMENUCTL_IsActive(pMe->pIMenu)) {
            return IMENUCTL_HandleEvent (pMe->pIMenu, eCode, wParam, dwParam);
         }
         // Handle events in the soft menu
         if(pMe->pISoft && IMENUCTL_IsActive(pMe->pISoft)) {

            // If AVK_CLR then go to main menu
            if(wParam == AVK_CLR) {
               ISHELL_PostEvent(pMe->a.m_pIShell, AEECLSID_IVOCUSE, EVT_COMMAND, IDSSOFT_EXIT, 0);
               return TRUE;
            }
            IMENUCTL_HandleEvent (pMe->pISoft, eCode, wParam, dwParam);
 
            // Reset Sound configurations to keep sound playing after key tone
            ISOUND_Set(pMe->pISound, &pMe->soundInfo);
            ISOUND_SetDevice(pMe->pISound);

            return TRUE;
         }
         // Handle events in the back menu
         if(pMe->pIBack && IMENUCTL_IsActive(pMe->pIBack)) {
            if(wParam == AVK_CLR) {
               IMENUCTL_SetActive(pMe->pIBack, FALSE);
               IMENUCTL_SetActive(pMe->pIMenu, TRUE);
               return TRUE;
            }
            return IMENUCTL_HandleEvent (pMe->pIBack, eCode, wParam, dwParam);
         }
         break;

      // Events from menus
      case EVT_COMMAND:
          switch(wParam) {

          // Set menu inactive and begin simulating Streaming
          case IDSMAIN_STREAM:
             BuildSoftMenu(pMe);
             IMENUCTL_SetActive(pMe->pIMenu, FALSE);
             VocUse_SetActive(pMe, TRUE);
             IMENUCTL_SetActive(pMe->pISoft, TRUE);
             break;

          // Exits Application
          case IDSMAIN_EXIT:
             ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
             break;

          // Displays basic info about the application 
          case IDSMAIN_INFO:
             IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
             IDISPLAY_UpdateEx(pMe->a.m_pIDisplay, TRUE);
             ISHELL_LoadResString(pMe->a.m_pIShell, IVOCUSE_RES_FILE, IDS_ABOUT, pMe->pNameBuffer, sizeof(pMe->pNameBuffer));
             DisplayMessageToScreen(pMe, pMe->pNameBuffer);
             IMENUCTL_SetActive(pMe->pIMenu, FALSE);
             IMENUCTL_SetActive(pMe->pIBack, TRUE);
             break;

          // Exit back to main menu
          case IDSSOFT_EXIT:
             VocUse_SetActive(pMe, FALSE);
             IVOCODER_VocOutReset(pMe->pIVocoder); 
             IVOCODER_VocInReset(pMe->pIVocoder); 
             IMENUCTL_SetActive(pMe->pISoft, FALSE);
             IMENUCTL_SetActive(pMe->pIMenu, TRUE);
             return TRUE;

          // This will start the streaming 
          case IDSSOFT_ACTIVATE:
             VocUse_SetActive(pMe, TRUE);
             ReplaceMenuItem(pMe->pISoft, IDSSOFT_ACTIVATE, IDSSOFT_DEACTIVATE);
             return TRUE;

          // This will pause the streaming
          case IDSSOFT_DEACTIVATE:
             VocUse_SetActive(pMe, FALSE);
             ReplaceMenuItem(pMe->pISoft, IDSSOFT_DEACTIVATE, IDSSOFT_ACTIVATE);
             return TRUE;

          // This event is received when user is done viewing ivocuse info
          case IDS_BACK:
             ISTATIC_SetActive(pMe->pIStatic, FALSE);
             IMENUCTL_SetActive(pMe->pIBack, FALSE);
             IMENUCTL_SetActive(pMe->pIMenu, TRUE); 
             return TRUE;

          default:
             break;
          }
      default:
         break;
   }

   return FALSE;
}


/*===========================================================================

FUNCTION VocUse_InitAppData

DESCRIPTION
   This function initializes all data necesary for the application.

PROTOTYPE:
	static boolean VocUse_InitAppData(IApplet* pi);

PARAMETERS:
   pMe: [in]: Pointer to CVocApp  struct

DEPENDENCIES
  None

RETURN VALUE
  TRUE: if all data initialized correctly
  FALSE: If function failed to intialize data

SIDE EFFECTS
  None
===========================================================================*/
static boolean VocUse_InitAppData(CVocApp* pMe) {

   // Get Device information
   pMe->deviceInfo.wStructSize = sizeof(pMe->deviceInfo);
   ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->deviceInfo);

   pMe->pIMenu = NULL;
   pMe->bActive = FALSE;
   pMe->pIVocoder = NULL;
   pMe->pISound = NULL;
   pMe->bVocOn = FALSE;

   // Create and build menus
   if (ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_MENUCTL, (void **)&pMe->pIMenu) != SUCCESS)
   {
      return FALSE;
   }
   BuildMainMenu(pMe);

   // This function will create the menu ctl
   BuildSoftMenu(pMe);

   // Create back menu and add back item
   if (ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_SOFTKEYCTL, (void **)&pMe->pIBack) != SUCCESS)
   {
      return FALSE;
   }
   IMENUCTL_AddItem(pMe->pIBack, IVOCUSE_RES_FILE, IDS_BACK, IDS_BACK, NULL, NULL);

   // Create IStatic Text Box
   if (ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_STATIC, (void **)&pMe->pIStatic) != SUCCESS)
   {
      DBGPRINTF("Error Creating IStatic");
      return FALSE;
   }

   // Create IVocoder Interface
   if (ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_VOCODER, (void **)&pMe->pIVocoder) != SUCCESS)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日产国产高清一区二区三区| 久久久午夜精品| 亚洲va欧美va天堂v国产综合| 99在线精品观看| 亚洲国产视频一区| 欧美疯狂性受xxxxx喷水图片| 蜜臀久久99精品久久久久久9| 欧美一区午夜视频在线观看| 国产一区二区在线观看视频| 久久精品男人天堂av| 国产suv一区二区三区88区| 亚洲免费观看高清完整版在线观看熊 | 久久综合五月天婷婷伊人| 国产在线精品一区二区不卡了 | 日韩电影在线看| 日韩欧美国产一区二区三区| 国产乱码字幕精品高清av| 亚洲视频一区二区在线| 制服丝袜亚洲网站| 国产精品911| 亚洲不卡av一区二区三区| 久久综合狠狠综合| 91国产成人在线| 美女视频网站黄色亚洲| 国产精品国产精品国产专区不蜜 | 久久久精品国产免费观看同学| 成人av手机在线观看| 一区二区三区精品在线| 欧美变态tickling挠脚心| 99天天综合性| 国产在线一区观看| 亚洲综合精品久久| 久久久久国色av免费看影院| 在线观看精品一区| 国产不卡在线一区| 香蕉影视欧美成人| 国产精品福利影院| 日韩一区二区精品在线观看| 99热99精品| 老司机精品视频线观看86| 最新欧美精品一区二区三区| 91精品国产一区二区人妖| 成人一区在线看| 蜜臀久久久久久久| 一区二区三区高清不卡| 国产人成一区二区三区影院| 欧美另类videos死尸| 色婷婷亚洲综合| 成人av综合一区| 国产综合色产在线精品| 免费精品99久久国产综合精品| 亚洲人成亚洲人成在线观看图片| 久久精品一区二区三区不卡牛牛 | 在线观看日韩毛片| 不卡区在线中文字幕| 韩国一区二区三区| 青娱乐精品视频在线| 亚洲一二三四区| 中文字幕一区二区三区不卡| 久久久亚洲高清| 精品国产91乱码一区二区三区| 欧美麻豆精品久久久久久| 欧美性受xxxx黑人xyx| 色综合色狠狠天天综合色| 丁香激情综合五月| 国产福利一区二区| 国产成人精品免费一区二区| 国产精品原创巨作av| 久久99国产精品成人| 蜜桃视频免费观看一区| 日本少妇一区二区| 日韩av电影免费观看高清完整版 | 欧美一区二区在线免费观看| 欧美色国产精品| 欧美在线观看一区二区| 在线精品国精品国产尤物884a| 99re热视频精品| k8久久久一区二区三区| 成人精品免费网站| 99这里只有久久精品视频| 91在线观看污| 91影院在线免费观看| 色久综合一二码| 欧美视频在线不卡| 欧美精品自拍偷拍动漫精品| 制服丝袜av成人在线看| 欧美高清你懂得| 日韩视频一区二区| 久久久青草青青国产亚洲免观| 久久久亚洲午夜电影| 国产精品污网站| 亚洲黄色录像片| 亚洲成人av电影在线| 免费观看在线色综合| 精品午夜一区二区三区在线观看| 国内精品国产三级国产a久久| 国内精品写真在线观看| 不卡视频在线观看| 欧美群妇大交群的观看方式| 4438亚洲最大| 国产亚洲短视频| 亚洲精品福利视频网站| 图片区小说区区亚洲影院| 久久不见久久见免费视频7 | 一区二区三区四区不卡在线| 天天做天天摸天天爽国产一区 | 韩国av一区二区三区四区 | 欧美伊人久久大香线蕉综合69| 精品视频免费在线| 久久久99免费| 亚洲一区二区偷拍精品| 麻豆精品精品国产自在97香蕉| 国产福利一区二区三区| 欧美日韩在线综合| 欧美激情中文字幕| 婷婷夜色潮精品综合在线| 国产一区二区三区免费看| 一本一本大道香蕉久在线精品 | 亚洲美女屁股眼交3| 日本vs亚洲vs韩国一区三区二区 | 亚洲欧美日韩国产中文在线| 久久精品av麻豆的观看方式| 色综合中文字幕国产 | 韩国精品主播一区二区在线观看 | 91精彩视频在线观看| 2023国产精品视频| 亚洲二区视频在线| 成人一区二区三区视频 | 国产一区二区三区在线看麻豆| 99精品视频中文字幕| 日韩精品一区二区在线观看| 亚洲日本电影在线| 国产精品一线二线三线| 欧美区视频在线观看| 亚洲欧美日韩精品久久久久| 国产精品中文字幕日韩精品| 在线播放视频一区| 亚洲美女视频在线观看| 国产成人av影院| 亚洲精品在线免费观看视频| 亚洲第一综合色| 一本一本久久a久久精品综合麻豆| 久久毛片高清国产| 久久成人免费电影| 在线不卡中文字幕播放| 亚洲国产精品一区二区www在线| 成人综合在线视频| 26uuu亚洲| 激情综合五月天| 日韩亚洲欧美在线| 日本午夜精品视频在线观看| 欧美日韩国产中文| 亚洲黄一区二区三区| 91视视频在线观看入口直接观看www | www.一区二区| 国产情人综合久久777777| 国内偷窥港台综合视频在线播放| 欧美一区二区三区免费视频| 亚洲国产欧美在线| 欧美色网站导航| 香港成人在线视频| 欧美日韩一区精品| 香蕉久久一区二区不卡无毒影院 | 精品一区二区三区免费播放| 欧美人体做爰大胆视频| 图片区小说区区亚洲影院| 欧美日韩另类一区| 五月天婷婷综合| 欧美高清视频一二三区| 日产国产高清一区二区三区| 欧美精品v国产精品v日韩精品| 视频在线观看国产精品| 欧美一区二区精品在线| 精品一区二区精品| 久久综合九色综合欧美亚洲| 九色综合狠狠综合久久| www国产成人| 福利视频网站一区二区三区| 欧美国产97人人爽人人喊| www.亚洲人| 亚洲国产日日夜夜| 欧美xxxxxxxxx| 成人中文字幕电影| 亚洲一区二区五区| 日韩一区二区三区四区五区六区| 老司机精品视频导航| 欧美激情在线看| 色婷婷国产精品| 午夜成人在线视频| 久久精品夜色噜噜亚洲aⅴ| 9i在线看片成人免费| 亚洲国产美国国产综合一区二区| 日韩欧美亚洲国产另类| 粉嫩在线一区二区三区视频| 亚洲欧美韩国综合色| 欧美日韩国产经典色站一区二区三区| 麻豆成人在线观看| 国产精品超碰97尤物18| 欧美日韩一区中文字幕| 国产经典欧美精品|