le_audio_interface.h
Go to the documentation of this file.
54 * An audio profile can be retrieved with le_audio_GetProfile() and set with le_audio_SetProfile().56 * Then, the following functions let you enable or disable the audio settings on the selected audio62 * - le_audio_EnableIirFilter()/ le_audio_DisableIirFilter(): downlink IIR Filter (Infinite Impulse70 * To configure the encoding format, use le_audio_GetEncodingFormat() and le_audio_SetEncodingFormat().76 * - le_audio_GetPcmSamplingResolution() and le_audio_SetPcmSamplingResolution() for bit/sample settings.78 * - le_audio_GetSamplePcmChannelNumber() and le_audio_SetSamplePcmChannelNumber() for channel numbers.104 * - le_audio_OpenModemVoiceRx(): returns an Audio Stream Reference of the digitized audio signal107 * - le_audio_OpenModemVoiceTx(): returns an Audio Stream Reference of the digitized audio signal132 * On most platforms, it only allocates a context in memory. The audio path becomes active when the138 * Once the users get an Audio Stream reference, they can control it with the following functions:147 * @note Multimedia (playback and recording) must be controlled separately from the main audio path149 * muting/unmuting the multimedia stream, and not the other connected stream. For example, in case159 * - le_audio_SetPlatformSpecificGain(): adjust the value of a platform specific gain in the audio184 * A sample code that implements audio connectors and audio streams during voice call can be found in188 * In particular, a connector using Modem Voice Rx or Tx interfaces has to be created before dialing205 * - AMR_NB (AMR Narrowband) codec that encodes narrowband (200--3400 Hz) signals at variable bit207 * - AMR-WB (AMR Wideband) is an ITU-T standard speech codec which improved speech quality due to a234 * "I2S Rx", "Modem Voice Tx" and "Recorder" must be previously connected before recording a file.265 * - The playback/record stops playing/recording, and the read/write position indicator associated266 * with the file stream is rewound to the beginning of the file. A new file can be played/recorded268 * - le_audio_Pause(): can be called to pause a play/record. The file playing/recording is put on283 * @note The @c LE_AUDIO_MEDIA_NO_MORE_SAMPLES event indicates when all samples put into the pipe286 * A sample code that implements audio playback and capture can be found in \b audioPlaybackRec.c291 * The le_audio_PlayDtmf() function allows the application to play one or several DTMF on a playback292 * stream. The duration and the pause of the DTMFs must also be specified with the input parameters.294 * The le_audio_PlaySignallingDtmf() function allows the application to ask the Mobile Network to296 * le_audio_PlaySignallingDtmf() function may offer a better signal quality, but the the duration299 * The application must register a handler function to detect incoming DTMF characters on a specific300 * input audio stream. The le_audio_AddDtmfDetectorHandler() function installs a handler for DTMF309 * A sample code that implements DTMF playback and decoding can be found in \b audioDtmfTest.c file346 //--------------------------------------------------------------------------------------------------350 //--------------------------------------------------------------------------------------------------353 //--------------------------------------------------------------------------------------------------356 * Connect the current client thread to the service providing this API. Block until the service is359 * For each thread that wants to use this API, either ConnectService or TryConnectService must be360 * called before any other functions in this API. Normally, ConnectService is automatically called365 //--------------------------------------------------------------------------------------------------371 //--------------------------------------------------------------------------------------------------374 * Try to connect the current client thread to the service providing this API. Return with an error377 * For each thread that wants to use this API, either ConnectService or TryConnectService must be378 * called before any other functions in this API. Normally, ConnectService is automatically called387 * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).390 //--------------------------------------------------------------------------------------------------396 //--------------------------------------------------------------------------------------------------400 * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants403 //--------------------------------------------------------------------------------------------------410 //--------------------------------------------------------------------------------------------------416 * longer a connection to the service, and the functions in this API can't be used. For details, see421 //--------------------------------------------------------------------------------------------------428 //--------------------------------------------------------------------------------------------------432 //--------------------------------------------------------------------------------------------------435 //--------------------------------------------------------------------------------------------------440 //--------------------------------------------------------------------------------------------------443 //--------------------------------------------------------------------------------------------------447 //--------------------------------------------------------------------------------------------------450 //--------------------------------------------------------------------------------------------------454 //--------------------------------------------------------------------------------------------------457 //--------------------------------------------------------------------------------------------------462 //--------------------------------------------------------------------------------------------------465 //--------------------------------------------------------------------------------------------------469 //--------------------------------------------------------------------------------------------------484 //--------------------------------------------------------------------------------------------------488 //--------------------------------------------------------------------------------------------------501 //--------------------------------------------------------------------------------------------------505 //--------------------------------------------------------------------------------------------------522 //--------------------------------------------------------------------------------------------------526 //--------------------------------------------------------------------------------------------------539 //--------------------------------------------------------------------------------------------------543 //--------------------------------------------------------------------------------------------------586 //--------------------------------------------------------------------------------------------------590 //--------------------------------------------------------------------------------------------------594 //--------------------------------------------------------------------------------------------------598 //--------------------------------------------------------------------------------------------------602 //--------------------------------------------------------------------------------------------------606 //--------------------------------------------------------------------------------------------------610 //--------------------------------------------------------------------------------------------------614 //--------------------------------------------------------------------------------------------------618 //--------------------------------------------------------------------------------------------------623 //--------------------------------------------------------------------------------------------------625 (634 //--------------------------------------------------------------------------------------------------639 //--------------------------------------------------------------------------------------------------641 (650 //--------------------------------------------------------------------------------------------------656 //--------------------------------------------------------------------------------------------------662 //--------------------------------------------------------------------------------------------------668 //--------------------------------------------------------------------------------------------------674 //--------------------------------------------------------------------------------------------------680 //--------------------------------------------------------------------------------------------------686 //--------------------------------------------------------------------------------------------------692 //--------------------------------------------------------------------------------------------------698 //--------------------------------------------------------------------------------------------------704 //--------------------------------------------------------------------------------------------------711 //--------------------------------------------------------------------------------------------------717 //--------------------------------------------------------------------------------------------------724 //--------------------------------------------------------------------------------------------------730 //--------------------------------------------------------------------------------------------------737 //--------------------------------------------------------------------------------------------------743 //--------------------------------------------------------------------------------------------------750 //--------------------------------------------------------------------------------------------------756 //--------------------------------------------------------------------------------------------------762 //--------------------------------------------------------------------------------------------------768 //--------------------------------------------------------------------------------------------------774 //--------------------------------------------------------------------------------------------------780 //--------------------------------------------------------------------------------------------------786 //--------------------------------------------------------------------------------------------------792 //--------------------------------------------------------------------------------------------------798 //--------------------------------------------------------------------------------------------------805 //--------------------------------------------------------------------------------------------------816 //--------------------------------------------------------------------------------------------------820 //--------------------------------------------------------------------------------------------------827 //--------------------------------------------------------------------------------------------------836 //--------------------------------------------------------------------------------------------------843 //--------------------------------------------------------------------------------------------------856 //--------------------------------------------------------------------------------------------------865 //--------------------------------------------------------------------------------------------------877 //--------------------------------------------------------------------------------------------------886 //--------------------------------------------------------------------------------------------------898 //--------------------------------------------------------------------------------------------------905 //--------------------------------------------------------------------------------------------------917 //--------------------------------------------------------------------------------------------------924 //--------------------------------------------------------------------------------------------------930 //--------------------------------------------------------------------------------------------------936 //--------------------------------------------------------------------------------------------------943 //--------------------------------------------------------------------------------------------------950 //--------------------------------------------------------------------------------------------------963 //--------------------------------------------------------------------------------------------------972 //--------------------------------------------------------------------------------------------------979 //--------------------------------------------------------------------------------------------------988 //--------------------------------------------------------------------------------------------------995 //--------------------------------------------------------------------------------------------------1006 //--------------------------------------------------------------------------------------------------1010 //--------------------------------------------------------------------------------------------------1017 //--------------------------------------------------------------------------------------------------1028 //--------------------------------------------------------------------------------------------------1035 //--------------------------------------------------------------------------------------------------1046 //--------------------------------------------------------------------------------------------------1053 //--------------------------------------------------------------------------------------------------1064 //--------------------------------------------------------------------------------------------------1071 //--------------------------------------------------------------------------------------------------1082 //--------------------------------------------------------------------------------------------------1089 //--------------------------------------------------------------------------------------------------1100 //--------------------------------------------------------------------------------------------------1109 //--------------------------------------------------------------------------------------------------1120 //--------------------------------------------------------------------------------------------------1129 //--------------------------------------------------------------------------------------------------1140 //--------------------------------------------------------------------------------------------------1147 //--------------------------------------------------------------------------------------------------1158 //--------------------------------------------------------------------------------------------------1165 //--------------------------------------------------------------------------------------------------1176 //--------------------------------------------------------------------------------------------------1183 //--------------------------------------------------------------------------------------------------1194 //--------------------------------------------------------------------------------------------------1201 //--------------------------------------------------------------------------------------------------1203 * This function must be called to enable the automatic gain control on the selected audio stream.1212 //--------------------------------------------------------------------------------------------------1219 //--------------------------------------------------------------------------------------------------1221 * This function must be called to disable the automatic gain control on the selected audio stream.1230 //--------------------------------------------------------------------------------------------------1237 //--------------------------------------------------------------------------------------------------1246 //--------------------------------------------------------------------------------------------------1253 //--------------------------------------------------------------------------------------------------1262 //--------------------------------------------------------------------------------------------------1269 //--------------------------------------------------------------------------------------------------1278 //--------------------------------------------------------------------------------------------------1285 //--------------------------------------------------------------------------------------------------1294 //--------------------------------------------------------------------------------------------------1301 //--------------------------------------------------------------------------------------------------1310 //--------------------------------------------------------------------------------------------------1317 //--------------------------------------------------------------------------------------------------1323 //--------------------------------------------------------------------------------------------------1329 //--------------------------------------------------------------------------------------------------1335 //--------------------------------------------------------------------------------------------------1341 //--------------------------------------------------------------------------------------------------1347 //--------------------------------------------------------------------------------------------------1353 //--------------------------------------------------------------------------------------------------1359 //--------------------------------------------------------------------------------------------------1365 //--------------------------------------------------------------------------------------------------1371 //--------------------------------------------------------------------------------------------------1377 //--------------------------------------------------------------------------------------------------1392 * thus share file offset. So, once a playback has reached the end of file, the application must1401 //--------------------------------------------------------------------------------------------------1410 //--------------------------------------------------------------------------------------------------1418 * @note The fd is closed by the IPC API. To use again the same pipe, the fd parameter can be set1420 * If the fd as to be kept on its side, the application should duplicate the fd (e.g., using dup() )1425 //--------------------------------------------------------------------------------------------------1434 //--------------------------------------------------------------------------------------------------1443 * @note the fd is closed by the API. To record again the same file, the fd parameter can be set to1445 * If the fd as to be kept on its side, the application should duplicate the fd (e.g., using dup() )1449 //--------------------------------------------------------------------------------------------------1458 //--------------------------------------------------------------------------------------------------1466 * @note The fd is closed by the API. To use again the same pipe, the fd parameter can be set to1468 * If the fd as to be kept on its side, the application should duplicate the fd (e.g., using dup() )1473 //--------------------------------------------------------------------------------------------------1482 //--------------------------------------------------------------------------------------------------1492 //--------------------------------------------------------------------------------------------------1499 //--------------------------------------------------------------------------------------------------1507 //--------------------------------------------------------------------------------------------------1514 //--------------------------------------------------------------------------------------------------1522 //--------------------------------------------------------------------------------------------------1529 //--------------------------------------------------------------------------------------------------1537 //--------------------------------------------------------------------------------------------------1544 //--------------------------------------------------------------------------------------------------1552 //--------------------------------------------------------------------------------------------------1561 //--------------------------------------------------------------------------------------------------1569 //--------------------------------------------------------------------------------------------------1578 //--------------------------------------------------------------------------------------------------1586 //--------------------------------------------------------------------------------------------------1595 //--------------------------------------------------------------------------------------------------1603 //--------------------------------------------------------------------------------------------------1612 //--------------------------------------------------------------------------------------------------1620 //--------------------------------------------------------------------------------------------------1629 //--------------------------------------------------------------------------------------------------1637 //--------------------------------------------------------------------------------------------------1646 //--------------------------------------------------------------------------------------------------1659 //--------------------------------------------------------------------------------------------------1672 //--------------------------------------------------------------------------------------------------1674 * This function must be called to ask to the Mobile Network to generate on the remote audio party1685 //--------------------------------------------------------------------------------------------------1696 //--------------------------------------------------------------------------------------------------1704 //--------------------------------------------------------------------------------------------------1713 //--------------------------------------------------------------------------------------------------1724 //--------------------------------------------------------------------------------------------------1733 //--------------------------------------------------------------------------------------------------1741 //--------------------------------------------------------------------------------------------------1750 //--------------------------------------------------------------------------------------------------1760 //--------------------------------------------------------------------------------------------------1769 //--------------------------------------------------------------------------------------------------1779 //--------------------------------------------------------------------------------------------------1788 //--------------------------------------------------------------------------------------------------1798 //--------------------------------------------------------------------------------------------------1807 //--------------------------------------------------------------------------------------------------1822 //--------------------------------------------------------------------------------------------------1831 //--------------------------------------------------------------------------------------------------1845 //--------------------------------------------------------------------------------------------------1854 //--------------------------------------------------------------------------------------------------1862 //--------------------------------------------------------------------------------------------------1868 //--------------------------------------------------------------------------------------------------1876 //--------------------------------------------------------------------------------------------------le_result_t le_audio_SetSamplePcmSamplingRate(le_audio_StreamRef_t streamRef, uint32_t rate)le_result_t le_audio_GetSamplePcmSamplingRate(le_audio_StreamRef_t streamRef, uint32_t *ratePtr)le_result_t le_audio_DisableNoiseSuppressor(le_audio_StreamRef_t streamRef)le_result_t le_audio_Pause(le_audio_StreamRef_t streamRef)uint32_t le_audio_GetPcmSamplingResolution(void)le_result_t le_audio_SetSamplePcmChannelNumber(le_audio_StreamRef_t streamRef, uint32_t nbChannel)void le_audio_RemoveMediaHandler(le_audio_MediaHandlerRef_t handlerRef)le_result_t le_audio_GetSamplePcmChannelNumber(le_audio_StreamRef_t streamRef, uint32_t *nbChannelPtr)le_result_t le_audio_DisableEchoCanceller(le_audio_StreamRef_t streamRef)le_result_t le_audio_SetPcmSamplingRate(uint32_t rate)le_result_t le_audio_RecordFile(le_audio_StreamRef_t streamRef, int fd)MU-law PCM (i.e. North America and Japan).Definition: le_audio_interface.h:493le_audio_StreamRef_t le_audio_OpenModemVoiceTx(void)le_result_t le_audio_IsEchoCancellerEnabled(le_audio_StreamRef_t streamRef, bool *statusPtr)le_result_t le_audio_GetSampleAmrDtx(le_audio_StreamRef_t streamRef, bool *dtxPtr)le_audio_StreamRef_t le_audio_OpenI2sTx(le_audio_I2SChannel_t mode)void le_audio_RemoveDtmfDetectorHandler(le_audio_DtmfDetectorHandlerRef_t handlerRef)void(* le_audio_DtmfDetectorHandlerFunc_t)(le_audio_StreamRef_t streamRef, char dtmf, void *contextPtr)Definition: le_audio_interface.h:641le_audio_StreamRef_t le_audio_OpenI2sRx(le_audio_I2SChannel_t mode)le_result_t le_audio_GetSamples(le_audio_StreamRef_t streamRef, int fd)le_result_t le_audio_Flush(le_audio_StreamRef_t streamRef)le_result_t le_audio_DisableIirFilter(le_audio_StreamRef_t streamRef)struct le_audio_Stream * le_audio_StreamRef_tDefinition: le_audio_interface.h:591AMR Narrowband in 7.4kbps (default value)Definition: le_audio_interface.h:556le_result_t le_audio_GetPlatformSpecificGain(const char *LE_NONNULL gainName, int32_t *gainPtr)le_result_t le_audio_GetProfile(uint32_t *profilePtr)le_result_t le_audio_TryConnectService(void)le_audio_StreamRef_t le_audio_OpenUsbTx(void)le_result_t le_audio_Connect(le_audio_ConnectorRef_t connectorRef, le_audio_StreamRef_t streamRef)le_result_t le_audio_Unmute(le_audio_StreamRef_t streamRef)le_audio_StreamRef_t le_audio_OpenSpeaker(void)struct le_audio_Connector * le_audio_ConnectorRef_tDefinition: le_audio_interface.h:599le_result_t le_audio_EnableFirFilter(le_audio_StreamRef_t streamRef)uint32_t le_audio_GetPcmSamplingRate(void)le_result_t le_audio_MuteCallWaitingTone(void)le_result_t le_audio_PlaySamples(le_audio_StreamRef_t streamRef, int fd)le_audio_I2SChannel_t le_audio_GetDefaultI2sMode(void)struct le_audio_DtmfDetectorHandler * le_audio_DtmfDetectorHandlerRef_tDefinition: le_audio_interface.h:615le_result_t le_audio_DisableAutomaticGainControl(le_audio_StreamRef_t streamRef)le_audio_ConnectorRef_t le_audio_CreateConnector(void)le_result_t le_audio_PlayFile(le_audio_StreamRef_t streamRef, int fd)le_audio_StreamRef_t le_audio_OpenPcmTx(uint32_t timeslot)le_result_t le_audio_PlayDtmf(le_audio_StreamRef_t streamRef, const char *LE_NONNULL dtmf, uint32_t duration, uint32_t pause)le_result_t le_audio_SetPcmCompanding(le_audio_Companding_t companding)le_result_t le_audio_GetSamplePcmSamplingResolution(le_audio_StreamRef_t streamRef, uint32_t *samplingResPtr)le_result_t le_audio_IsNoiseSuppressorEnabled(le_audio_StreamRef_t streamRef, bool *statusPtr)le_result_t le_audio_SetProfile(uint32_t profile)void(* le_audio_MediaHandlerFunc_t)(le_audio_StreamRef_t streamRef, le_audio_MediaEvent_t event, void *contextPtr)Definition: le_audio_interface.h:625le_audio_StreamRef_t le_audio_OpenModemVoiceRx(void)le_audio_StreamRef_t le_audio_OpenRecorder(void)le_result_t le_audio_Resume(le_audio_StreamRef_t streamRef)void(* le_audio_DisconnectHandler_t)(void *)Definition: le_audio_interface.h:351void le_audio_Close(le_audio_StreamRef_t streamRef)A-law PCM (i.e. Europe and most of the rest of the world).Definition: le_audio_interface.h:491le_audio_StreamRef_t le_audio_OpenPlayer(void)void le_audio_DisconnectService(void)uint32_t le_audio_GetDefaultPcmTimeSlot(void)le_result_t le_audio_Stop(le_audio_StreamRef_t streamRef)le_result_t le_audio_SetGain(le_audio_StreamRef_t streamRef, int32_t gain)le_audio_StreamRef_t le_audio_OpenPcmRx(uint32_t timeslot)le_result_t le_audio_SetPcmSamplingResolution(uint32_t bitsPerSample)struct le_audio_MediaHandler * le_audio_MediaHandlerRef_tDefinition: le_audio_interface.h:607le_result_t le_audio_SetEncodingFormat(le_audio_StreamRef_t streamRef, le_audio_Format_t format)le_audio_StreamRef_t le_audio_OpenUsbRx(void)le_result_t le_audio_EnableEchoCanceller(le_audio_StreamRef_t streamRef)le_result_t le_audio_SetSampleAmrMode(le_audio_StreamRef_t streamRef, le_audio_AmrMode_t mode)le_result_t le_audio_DisableFirFilter(le_audio_StreamRef_t streamRef)Recording/playback has encountered an error.Definition: le_audio_interface.h:476void le_audio_ConnectService(void)le_result_t le_audio_GetGain(le_audio_StreamRef_t streamRef, int32_t *gainPtr)le_result_t le_audio_SetSampleAmrDtx(le_audio_StreamRef_t streamRef, bool dtx)void le_audio_SetServerDisconnectHandler(le_audio_DisconnectHandler_t disconnectHandler, void *contextPtr)le_result_t le_audio_SetSamplePcmSamplingResolution(le_audio_StreamRef_t streamRef, uint32_t samplingRes)le_audio_MediaHandlerRef_t le_audio_AddMediaHandler(le_audio_StreamRef_t streamRef, le_audio_MediaHandlerFunc_t handlerPtr, void *contextPtr)le_result_t le_audio_GetEncodingFormat(le_audio_StreamRef_t streamRef, le_audio_Format_t *formatPtr)le_audio_Companding_t le_audio_GetPcmCompanding(void)le_audio_DtmfDetectorHandlerRef_t le_audio_AddDtmfDetectorHandler(le_audio_StreamRef_t streamRef, le_audio_DtmfDetectorHandlerFunc_t handlerPtr, void *contextPtr)void le_audio_Disconnect(le_audio_ConnectorRef_t connectorRef, le_audio_StreamRef_t streamRef)void le_audio_DeleteConnector(le_audio_ConnectorRef_t connectorRef)le_result_t le_audio_SetPlatformSpecificGain(const char *LE_NONNULL gainName, int32_t gain)le_result_t le_audio_EnableNoiseSuppressor(le_audio_StreamRef_t streamRef)le_result_t le_audio_UnmuteCallWaitingTone(void)le_result_t le_audio_PlaySignallingDtmf(const char *LE_NONNULL dtmf, uint32_t duration, uint32_t pause)le_result_t le_audio_GetSampleAmrMode(le_audio_StreamRef_t streamRef, le_audio_AmrMode_t *modePtr)le_audio_StreamRef_t le_audio_OpenMic(void)le_result_t le_audio_EnableIirFilter(le_audio_StreamRef_t streamRef)le_result_t le_audio_EnableAutomaticGainControl(le_audio_StreamRef_t streamRef)le_result_t le_audio_Mute(le_audio_StreamRef_t streamRef)