14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  audioin.h  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __AUDIOIN_H__
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __AUDIOIN_H__
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project |                               ScanSoft Inc.                              |
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project + -------------------------------------------------------------------------*/
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | Project       : ScanSoft AudioIn component
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | Module        : AUDIOIN
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | File name     : audioin.h
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | Description   : Interface definition for AUDIOIN
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | Reference(s)  : wavein, audioin.chm, audioin.doc, audioin.hlp
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project |                 SltGl00001_audioin_gl1.doc
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project | Status        : Version 1.2
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project + -------------------------------------------------------------------------*/
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*     Oct/8/2002: Fixes for Windows 2000, and memory leaks. Version 1.1    */
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*  PVP   Jan/8/2004: Default audio format changed to 16kHz. Version 2.0       */
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*--------------------------------------------------------------------------*/
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* @doc AUDIOININTERFACE */
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "audioinerr.h"
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined( __cplusplus )
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectextern "C"
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project |   MACROS                                                                 |
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project + -------------------------------------------------------------------------*/
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* none */
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project |   TYPE DEFINITIONS                                                       |
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project + -------------------------------------------------------------------------*/
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef short audioinSample;
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Type Definitions for SCANSOFT-TYPES (re-definition)*/
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* @type AUDIOIN_H | Handle to an audio-in component.
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @comm Type is declared as a void *. The actual implementation is
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *       done by the implementation engineer. */
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef void *  AUDIOIN_H;
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define WAVE_MAPPER 0
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* @enum AUDIOIN_STATUSINFO | Enumerator for the Status Information of the AudioIn component.
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @comm The information contained in this definition concerns not only to the status of
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *       the FIFO but also the general status of the audio component.
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @xref <f lh_audioinGetSamples>(), AudioIn Diagram State */
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum _AUDIOIN_STATUSINFO {
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_NORMAL,       /* @emem Normal state of the audio buffer. No problems detected while retrieving
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 samples.*/
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_TIMEOUT,      /* @emem The audio-in component timed out after no audio was received from the
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 audio device. The MMSystem is not providing any more samples, or the
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 lh_audioinGetSamples function may be called much faster than the actual
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 thread filling the buffer (Probable issue with the audio device). This could
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 be fixed by decreasing the number of samples that you want to retrieve or by
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 waiting till samples are available. A time out period is set internally on
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 the audioin implementation. Default of:
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 <nlpar>const DWORD GETSAMPLESTIMEOUT_PERIOD = 10000; (time in milliseconds)*/
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_HIGHWATERMARK,/* @emem The buffer has been filled out with 75% or more. A high watermark on
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 the audio buffer has been detected and the buffer could be close to an OVERRUN
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 state.*/
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_FIFOOVERRUN,  /* @emem The buffer has been overfilled with audio samples. You can still retrieve
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 samples from the FIFO with the lhs_audioinGetSamples function, but the audio-in
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 component will not buffer any new audio into the FIFO. AudioinStop must be
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 called to reset the audio-in component.*/
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_FLUSHED,      /* @emem The buffer has been overfilled with audio samples. You can no longer retrieve
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 samples from the FIFO, since you already emptied it with lhs_audioinGetSamples.
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 The audio-in component will not buffer any new audio into the FIFO.
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 lhs_audioinStop must be called in the audio-in component since
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 lhs_audioinGetSamples will not longer work.*/
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_HWOVERRUN,    /* @emem The buffer has been overfilled with audio samples inside the device component
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 (audio device). lhs_audioinStop should be called to reset the contents of the
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 FIFO and the codec. This state is caused by an error in the MMSystem. It is
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 recommended to initialize the audio-in component before retrieving samples
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                 again.*/
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} AUDIOIN_STATUSINFO;
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* @struct AUDIOIN_INFO | Structure for the AudioIn Information
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @comm The AUDIOIN_INFO contains information about several parts of the audio-in component.
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *       It gives information about the FIFO buffering audio and at the same time about the audio
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *       component.
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @xref <f lh_audioinGetSamples>(), AudioIn Diagram State */
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct _AUDIOIN_INFO{
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_STATUSINFO eStatusInfo;    /* @field The state in which the audio Buffer of the audio-in component
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                               is. This is detailed in AUDIOIN_STATUSINFO. */
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32SamplesAvailable; /* @field The number of Samples still available in the audio Buffer after
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                               lhs_audioinGetSamples is called. This value can help you to
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                               detect over-runs in the audio buffer.*/
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} AUDIOIN_INFO;
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef AUDIOIN_SUPPORT_CALLBACK
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum _AUDIOIN_MSG {
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_OPEN,           // audio device was opened
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_START,          // start audio acquisition
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_DATA,           // audio samples are available
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_STOP,           // stop audio acquisition
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_CLOSE,          // audio device was closed
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_MSG_INVALID,        // bogus
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} AUDIOIN_MSG;
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* callback function for "samples ready" notification */
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef void (*pCallbackFunc)(AUDIOIN_H hAudioIn, AUDIOIN_MSG uMsg, void* dwInstance, void* dwParam1, void* dwParam2);
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* data structure passed to callback function; loosely based on Windows' WAVEHDR */
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct {
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    void               *pData;
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned long       nBufferLength;
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned long       nBytesRecorded;
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    AUDIOIN_STATUSINFO  status;
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} AUDIOIN_WAVEHDR;
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project|   EXTERNAL DATA (+ meaning)                                              |
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project+ -------------------------------------------------------------------------*/
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* none */
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project|   GLOBAL FUNCTION PROTOTYPES                                             |
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project+ -------------------------------------------------------------------------*/
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if 0
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LHS_AUDIOIN_ERROR  lhs_audioinOpenEx (
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32AudioInID,         /*@parm [in]  Audio-in device ID (ranges from 0 to a number of available
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    devices on the system). You can also use the following flag
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    instead of a device identifier.
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    <nl><nl><bold WAVE_MAPPER> = The function selects a
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    waveform-audio input device capable of recording in the
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    specified format. <bold Header:> Declared in Mmsystem.h from
1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    the Windows Multimedia: Platform SDK.*/
1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32Frequency,         /*@parm [in]  Frequency of the recognition engine in Hz. */
1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32NbrOfFrames,       /*@parm [in]  (not used) Number of frames buffered internally */
1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32SamplesPerFrame,   /*@parm [in]  Size, in samples, of each individual frame. */
1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H * phAudioIn               /*@parm [out] Handle to the audio-in device */
1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project );
1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR  lhs_audioinOpen(
1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32AudioInID, /* [in] audio-in device ID (ranges from 0 to a number of available devices on the
1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      system). You can also use the following flag instead of a device identifier.
1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      <nl><nl><bold WAVE_MAPPER> = The function selects a waveform-audio input
1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      device capable of recording in the specified format. <bold Header:>
1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      Declared in Mmsystem.h from the Windows Multimedia: Platform SDK.*/
1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32Frequency, /* [in] Frequency of the recognition engine in Hz. */
1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H * phAudioIn       /* [out] Handle to the audio-in device */
1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef AUDIOIN_SUPPORT_CALLBACK
1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR  lhs_audioinOpenCallback(
1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32AudioInID,      /* [in] audio-in device ID (ranges from 0 to a number of available devices on the
1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      system). You can also use the following flag instead of a device identifier.
1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      <nl><nl><bold WAVE_MAPPER> = The function selects a waveform-audio input
1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      device capable of recording in the specified format. <bold Header:>
1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      Declared in Mmsystem.h from the Windows Multimedia: Platform SDK.*/
1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32Frequency,      /* [in] Frequency of the recognition engine in Hz. */
1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32NbrOfSamples,   /*[in] <nl><bold Input:> Number of samples requested per callback */
1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  pCallbackFunc pCallback,         /* [in] callback function */
1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void         *pCallbackInstance, /* [in] callback instance */
1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H * phAudioIn            /* [out] Handle to the audio-in device */
1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinClose(
1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H * phAudioIn /*[in] Pointer to the handle of the audio-in device to be closed.*/
1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinStart(
1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H hAudioIn    /*[in] Handle of the audio-in device */
2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinStop(
2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H hAudioIn    /*[in] Handle of the audio-in device*/
2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinGetSamples (
2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H hAudioIn,              /*[in] Handle of the audio-in device */
2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long * u32NbrOfSamples, /*[in/out] <nl><bold Input:> The requested number of samples to be filled in
2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              the pAudioBuffer. Note that the memory used for pBuffer should be large enough
2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              to contain the requested number of samples, also note how the u32NbrOfSamples
2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              is different than the Buffer size, since each frame has an specific size depending
2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              on the audio format.
2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              <nl><bold Output:> The actual number of recorded audio samples written in pBuffer.
2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              If you pass 0 to this parameter then you may still retrieve the AUDIOIN_STATUSINFO
2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                              on the audio component. */
2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void * pAudioBuffer,              /*[out] Buffer that contains the recorded samples. The memory used for this
2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                            buffer is allocated by the client. So, it is the responsibility of the client to
2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                            make sure that this memory can contain the requested number of samples. The memory
2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                            for this buffer needs also to be freed by the client. */
2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_INFO * pAudioInInfo       /*[out] Information about the audio internal buffer described in
2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                            AUDIOIN_INFO.*/
2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinGetVersion(
2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long * pu32Version       /*[out] The version number of the API implementation. */
2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinGetVolume(
2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H hAudioIn,             /*[in] Handle of the audio-in device.*/
2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long * pu32Volume      /*[out] Pointer to a variable that will be filled with the current volume
2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                          (normally range of  0 - 65535). Depending on the platform the volume
2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                          value may be set to in sizes of 16, 32 or other size, the range also
2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                          depends on the platform (Implementations of this interface may
2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                          change because of the compatibility of the internal function).*/
2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLHS_AUDIOIN_ERROR lhs_audioinSetVolume(
2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  AUDIOIN_H hAudioIn,         /*[in] Handle of the audio-in device.*/
2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  unsigned long u32Volume     /*[in] The volume to be set (normal range 0-65535). Depending on the
2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                     platform the volume value may be set to in sizes of 16, 32 or other size,
2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                     the range also depends on the platform. (Implementations of this interface
2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                     may change because of the compatibility of the internal function)*/
2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectconst TCHAR * lhs_audioinErrorGetString(
2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  const LHS_AUDIOIN_ERROR Error    /*[in] The Error code.*/
2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project);
2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* -------------------------------------------------------------------------+
2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project |   END                                                                    |
2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project + -------------------------------------------------------------------------*/
2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined( __cplusplus )
2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* #ifndef __AUDIOIN_H__ */
263