/** \brief Process MPF frame */ static apt_bool_t uni_recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) { uni_speech_t *uni_speech = stream->obj; if(uni_speech->media_buffer) { mpf_frame_buffer_read(uni_speech->media_buffer,frame); #if 0 ast_log(LOG_DEBUG, "Read audio '%s' type:%d len:%d\n", uni_speech_id_get(uni_speech), frame->type, frame->codec_frame.size); #endif } return TRUE; }
/** MPF callback to read audio frame */ static apt_bool_t asr_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) { asr_session_t *asr_session = stream->obj; if(asr_session && asr_session->streaming == TRUE) { if(asr_session->input_mode == INPUT_MODE_FILE) { if(asr_session->audio_in) { if(fread(frame->codec_frame.buffer,1,frame->codec_frame.size,asr_session->audio_in) == frame->codec_frame.size) { /* normal read */ frame->type |= MEDIA_FRAME_TYPE_AUDIO; } else { /* file is over */ asr_session->streaming = FALSE; } } } if(asr_session->input_mode == INPUT_MODE_STREAM) { if(asr_session->media_buffer) { mpf_frame_buffer_read(asr_session->media_buffer,frame); } } } return TRUE; }