2017-07-10 23 views
0

audio i/o tutorialに従って、リアルタイムの音声録音アプリケーションを構築しています。しかし、コールバックは非常にまれに呼び出され、サウンド全体を記録します。たとえば、録音を5秒間開始すると、コールバックは実際には5秒ではなく2秒のクリップしか表示しません。ここTizenはリアルタイムで音声を録音することができません

のみ記録されているバイト数ダンプダミーテストコードである:

int _audio_read_total; 
static void _audio_io_stream_read_cb(audio_in_h handle, size_t nbytes, void *userdata) 
{ 
    const void *buffer = NULL; 
    if (nbytes > 0) { 
     int error_code = audio_in_peek(handle, &buffer, &nbytes); 
     _audio_read_total += nbytes; 
     dlog_print(DLOG_DEBUG, LOG_TAG, "nbytes = %d,_audio_read_total = %d", nbytes, _audio_read_total); 
     error_code = audio_in_drop(handle); // remove audio data from internal buffer 
    } 
} 
static void start_audio_recording(appdata_s *ad) 
{ 
    int error_code = audio_in_create(48000, AUDIO_CHANNEL_MONO, AUDIO_SAMPLE_TYPE_S16_LE, &ad->input);  
    error_code = audio_in_set_stream_cb(ad->input, _audio_io_stream_read_cb, ad); 
    error_code = audio_in_prepare(ad->input); 
} 

start end (5 seconds later)添付画像ギャラクシーギアS3でこのコードを実行した結果を含みます。イメージでわかるように、記録コールバックは32.3から37.7(5秒間)の間に呼び出されますが、(37.7-32.3)* 48000 * sizeof(short)= 518400でなければなりません。 。これは、オーディオの40%未満しか記録されないことを意味します。

誰でも私にこの問題を解決するための提案をしてもらえますか?

ゆう志

+0

このリンクの解決策を調べることができます(https://developer.izen.org/forums/native-application-development/recording-audio-io-callback-very-slow-only-pickup-less -45-オーディオ)。 –

答えて

0

あなたは

int audio_in_set_interrupted_cb ( audio_in_h input, 
audio_io_interrupted_cb  callback, 
void * user_data 
) 

は、オーディオ入力ハンドルが中断されたり、割り込みが完了したときに呼び出されるコールバック関数を登録し使用することを試みることができます。私はさらに探求し、これを再現しようとします。

関連する問題