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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ivocuse.c

?? brew voice sound brew voice sound
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*===========================================================================

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)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费在线| 成人福利视频在线| 中文字幕中文字幕在线一区| 91麻豆精品视频| 久久精品国产**网站演员| 亚洲人成亚洲人成在线观看图片 | 三级一区在线视频先锋 | 午夜精品久久久久久久久久久| 精品久久一区二区| 欧美三级日韩三级国产三级| 成人午夜视频在线观看| 久久成人av少妇免费| 亚洲午夜成aⅴ人片| 国产精品卡一卡二卡三| 精品剧情v国产在线观看在线| 欧美亚洲日本国产| 91啪亚洲精品| 成人激情av网| 国产一区二区三区蝌蚪| 蜜乳av一区二区三区| 午夜久久久久久电影| 亚洲男帅同性gay1069| 国产午夜亚洲精品午夜鲁丝片| 欧美二区乱c少妇| 欧美色偷偷大香| 91麻豆精品视频| 99精品欧美一区| 99久久久久久| youjizz久久| 成人听书哪个软件好| 另类欧美日韩国产在线| 麻豆久久久久久| 蜜桃视频一区二区| 亚洲v中文字幕| 亚洲一区二区在线免费观看视频| 18欧美亚洲精品| 亚洲女子a中天字幕| 亚洲欧美日韩小说| 亚洲免费观看在线观看| 亚洲欧美视频在线观看视频| 亚洲免费资源在线播放| 亚洲美女偷拍久久| 亚洲伦理在线精品| 亚洲乱码中文字幕综合| 一区二区三区在线不卡| 一区二区三区在线观看欧美| 一区二区三区日韩在线观看| 一区二区三区资源| 一区二区在线观看视频| 亚洲国产成人va在线观看天堂| 一区二区成人在线视频| 亚洲综合精品久久| 午夜伊人狠狠久久| 奇米亚洲午夜久久精品| 久久精品国产网站| 韩国一区二区视频| 成人一区二区三区在线观看| 99久久婷婷国产综合精品| 欧美午夜在线观看| 日韩欧美成人一区二区| 久久理论电影网| 国产精品日产欧美久久久久| 亚洲视频1区2区| 日韩国产在线观看| 国产在线播放一区| av资源网一区| 欧美日韩成人综合天天影院 | 午夜精品久久久久久| 日韩高清国产一区在线| 久久国产福利国产秒拍| 国产suv一区二区三区88区| 色婷婷综合激情| 日韩一本二本av| 国产午夜亚洲精品理论片色戒 | 韩国女主播一区| 成人午夜av电影| 欧美综合天天夜夜久久| 日韩三级视频在线看| 国产精品美女视频| 日本特黄久久久高潮| 国产·精品毛片| 51精品久久久久久久蜜臀| 久久久不卡网国产精品二区| 亚洲精品国产视频| 麻豆成人免费电影| av一区二区久久| 91精品国产综合久久久久| 国产精品久久久久影院老司| 午夜精品福利一区二区蜜股av | 日韩限制级电影在线观看| www国产精品av| 亚洲激情男女视频| 激情五月激情综合网| 欧美性色黄大片| 欧美国产日韩亚洲一区| 日韩电影在线一区二区三区| 成人黄色综合网站| 日韩欧美www| 亚洲一二三四在线观看| 国产精品亚洲一区二区三区在线| 欧美在线免费观看亚洲| 久久精品一区二区三区不卡| 亚洲高清中文字幕| 99精品国产91久久久久久| 欧美电影免费观看高清完整版在线| 亚洲色欲色欲www| 国产激情偷乱视频一区二区三区| 91精品福利在线一区二区三区 | 亚洲bt欧美bt精品777| 成人久久久精品乱码一区二区三区| 欧美精品九九99久久| 亚洲人成精品久久久久久| 国产成人激情av| 欧美精品一区二区三区一线天视频| 亚洲综合免费观看高清完整版 | 精品一区二区三区免费| 欧美日韩国产综合视频在线观看| 国产精品二区一区二区aⅴ污介绍| 国产中文字幕一区| 日韩欧美在线影院| 亚洲成人www| 在线中文字幕不卡| 亚洲色图清纯唯美| 99精品视频在线观看| 国产精品丝袜一区| 国产精品正在播放| 国产人成亚洲第一网站在线播放| 国产一区二区不卡在线| 精品国产91洋老外米糕| 蜜桃一区二区三区四区| 日韩美女在线视频| 全国精品久久少妇| 欧美一区2区视频在线观看| 亚洲成人自拍一区| 欧美日韩卡一卡二| 亚洲午夜精品17c| 欧美高清视频不卡网| 天使萌一区二区三区免费观看| 欧美无砖砖区免费| 亚洲一区二区三区中文字幕| 在线亚洲+欧美+日本专区| 亚洲一区二区三区精品在线| 欧美午夜理伦三级在线观看| 亚洲综合在线视频| 在线播放亚洲一区| 蜜桃在线一区二区三区| 久久亚洲一区二区三区明星换脸| 国产伦精品一区二区三区免费迷 | 欧洲亚洲精品在线| 婷婷久久综合九色国产成人| 欧美日韩1区2区| 六月丁香综合在线视频| 国产日韩av一区| jvid福利写真一区二区三区| 亚洲久草在线视频| 欧美亚洲综合一区| 美女脱光内衣内裤视频久久网站| 精品久久人人做人人爽| 国产成人精品亚洲日本在线桃色| 亚洲视频每日更新| 在线播放91灌醉迷j高跟美女| 久久精品免费观看| 国产精品理论在线观看| 在线视频欧美区| 99精品国产91久久久久久| 亚洲人成小说网站色在线 | 日韩一区二区三区视频在线观看 | 黑人巨大精品欧美一区| 国产精品色哟哟网站| 91行情网站电视在线观看高清版| 亚洲v精品v日韩v欧美v专区| 26uuu成人网一区二区三区| 成人免费毛片aaaaa**| 亚洲在线成人精品| 精品免费日韩av| 99精品黄色片免费大全| 免费国产亚洲视频| 国产精品卡一卡二卡三| 欧美一区二区三区视频在线观看| 国产福利精品导航| 亚洲图片欧美色图| 久久久精品2019中文字幕之3| 在线观看亚洲成人| 国产美女一区二区三区| 亚洲免费观看高清在线观看| 欧美va亚洲va在线观看蝴蝶网| 91一区一区三区| 久久 天天综合| 一区二区三区色| 久久久久国产精品麻豆| 欧美日韩精品欧美日韩精品一| 黄色日韩网站视频| 亚洲一区日韩精品中文字幕| 国产欧美一区视频| 91精品国产色综合久久ai换脸 | 94色蜜桃网一区二区三区| 免费高清视频精品| 亚洲欧美色一区| 国产人成亚洲第一网站在线播放| 欧美精品成人一区二区三区四区|