//-------------------------------------------------------------------------------------------------- static void PlayFile ( const char* audioFilePathPtr, bool isInLoop ) { char filePathPtr[100]={0}; IsInLoop = isInLoop; if (AudioFileFormat == LE_AUDIO_AMR) { snprintf(filePathPtr, 100, "%s.amr", audioFilePathPtr); } else { snprintf(filePathPtr, 100, "%s.wav", audioFilePathPtr); } if ((AudioFileFd=open(filePathPtr, O_RDONLY)) == -1) { LE_ERROR("Open file %s failure: errno.%d (%s)", filePathPtr, errno, strerror(errno)); exit(0); } else { LE_INFO("Play file %s %s with AudioFileFd.%d", ((IsInLoop) ? "IN LOOP" : "ONCE"), filePathPtr, AudioFileFd); } LE_ERROR_IF((le_audio_PlayFile(PlayerRef, AudioFileFd) != LE_OK), "Cannot play file"); }
//-------------------------------------------------------------------------------------------------- static void MyMediaEventHandler ( le_audio_StreamRef_t streamRef, le_audio_MediaEvent_t event, void* contextPtr ) { switch(event) { case LE_AUDIO_MEDIA_NO_MORE_SAMPLES: LE_INFO("Media event is LE_AUDIO_MEDIA_NO_MORE_SAMPLES."); break; case LE_AUDIO_MEDIA_ENDED: LE_INFO("Media event is LE_AUDIO_MEDIA_ENDED."); if (IsInLoop) { // Start playing audio file in loop LE_INFO("Play in loop..."); LE_ERROR_IF((le_audio_PlayFile(streamRef, LE_AUDIO_NO_FD) != LE_OK), "Cannot play file"); } if(IsVoicePromptStart) { PlayFile(DIALING, true); IsVoicePromptStart = false; IsDialing = true; } else if(IsDialing) { // Initiate the call LE_INFO("Start call"); le_mcc_Start(TestCallRef); IsDialing = false; } break; case LE_AUDIO_MEDIA_ERROR: LE_INFO("Media event is LE_AUDIO_MEDIA_ERROR."); break; default: LE_INFO("Media event is %d.", event); break; } }
//-------------------------------------------------------------------------------------------------- static void ConnectAudioToFileLocalPlay ( void ) { le_result_t res; if ((AudioFileFd=open(AudioFileRecPath, O_RDWR)) == -1) { LE_ERROR("Open file %s failure: errno.%d (%s)", AudioFileRecPath, errno, strerror(errno)); } else { LE_INFO("Open file %s with AudioFileFd.%d", AudioFileRecPath, AudioFileFd); } // Play local on output connector. FileAudioRef = le_audio_OpenPlayer(); LE_ERROR_IF((FileAudioRef==NULL), "OpenFilePlayback returns NULL!"); MediaHandlerRef = le_audio_AddMediaHandler(FileAudioRef, MyMediaEventHandler, NULL); LE_ERROR_IF((MediaHandlerRef==NULL), "AddMediaHandler returns NULL!"); if (FileAudioRef && AudioOutputConnectorRef) { res = le_audio_Connect(AudioOutputConnectorRef, FileAudioRef); if(res!=LE_OK) { LE_ERROR("Failed to connect FilePlayback on output connector!"); return; } LE_INFO("FilePlayback is now connected."); res = le_audio_PlayFile(FileAudioRef, AudioFileFd); if(res != LE_OK) { LE_ERROR("Failed to play the file!"); } else { LE_INFO("File is now playing"); } } }