diff --git a/sflphone-common/src/audio/audiorecord.cpp b/sflphone-common/src/audio/audiorecord.cpp index 588d82e3d409d6c33922c6ed6c1aed5b074996a3..88f9619edda47e702231141ef9289de679c3163f 100644 --- a/sflphone-common/src/audio/audiorecord.cpp +++ b/sflphone-common/src/audio/audiorecord.cpp @@ -301,6 +301,7 @@ bool AudioRecord::setRawFile() bool AudioRecord::setWavFile() { + _debug ("AudioRecord: Create wave file %s", savePath_.c_str()); fp = fopen (savePath_.c_str(), "wb"); diff --git a/sflphone-common/src/audio/audiorecorder.cpp b/sflphone-common/src/audio/audiorecorder.cpp index d5763aaa3c3b32012c678f29783810a7bd8afd90..0adba9caa09b323fb17bfc37cec34ad17baf3552 100644 --- a/sflphone-common/src/audio/audiorecorder.cpp +++ b/sflphone-common/src/audio/audiorecorder.cpp @@ -59,7 +59,9 @@ AudioRecorder::AudioRecorder (AudioRecord *arec, MainBuffer *mb) : Thread() */ void AudioRecorder::run (void) { - SFLDataFormat buffer[10000]; + + int bufferLength = 10000; + SFLDataFormat buffer[bufferLength]; while (true) { @@ -68,6 +70,10 @@ void AudioRecorder::run (void) int availBytes = mbuffer->availForGet (recorderId); + int toGet = (availBytes < bufferLength) ? availBytes : bufferLength; + + mbuffer->getData (buffer, toGet, 100, recorderId); + if (availBytes > 0) { arecord->recData (buffer, availBytes/sizeof (SFLDataFormat)); diff --git a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp index a4638126a4b60a416e8e60da7da0c4d2befb4988..02076436821f8d067037b17ad146bf3d37778aba 100644 --- a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp +++ b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp @@ -76,13 +76,14 @@ static void latency_update_callback (pa_stream *p, void *userdata UNUSED) pa_stream_get_latency (p, &r_usec, NULL); + /* _debug ("Audio: Stream letency update %0.0f ms for device %s", (float) r_usec/1000, pa_stream_get_device_name (p)); _debug ("Audio: maxlength %u", pa_stream_get_buffer_attr (p)->maxlength); _debug ("Audio: tlength %u", pa_stream_get_buffer_attr (p)->tlength); _debug ("Audio: prebuf %u", pa_stream_get_buffer_attr (p)->prebuf); _debug ("Audio: minreq %u", pa_stream_get_buffer_attr (p)->minreq); _debug ("Audio: fragsize %u", pa_stream_get_buffer_attr (p)->fragsize); - + */ } static void sink_input_info_callback (pa_context *c UNUSED, const pa_sink_info *i, int eol, void *userdata) diff --git a/sflphone-common/src/audio/recordable.cpp b/sflphone-common/src/audio/recordable.cpp index 799bb814533b46d24905d101131f55fa0a3490c7..87c3f2b302aac7020335f3d25d5cbfdfa41f2c12 100644 --- a/sflphone-common/src/audio/recordable.cpp +++ b/sflphone-common/src/audio/recordable.cpp @@ -36,7 +36,7 @@ Recordable::Recordable() : recorder (&recAudio, Manager::instance().getMainBuffe FILE_TYPE fileType = FILE_WAV; SOUND_FORMAT soundFormat = INT16; - recAudio.setRecordingOption (fileType, soundFormat, 8000, Manager::instance().getConfigString (AUDIO, RECORD_PATH)); + recAudio.setRecordingOption (fileType, soundFormat, 8000, Manager::instance().audioPreference.getRecordpath()); } diff --git a/sflphone-common/src/call.cpp b/sflphone-common/src/call.cpp index 51a3d4546360ac7e7ac3a970d8d65cddb18a61f4..040d90c74ca1a3a69bb5897cb1c3ef947f7ae3a7 100644 --- a/sflphone-common/src/call.cpp +++ b/sflphone-common/src/call.cpp @@ -189,6 +189,8 @@ Call::isAudioStarted() bool Call::setRecording() { + _debug ("Call: Set recording"); + bool recordStatus = Recordable::recAudio.isRecording(); Recordable::recAudio.setRecording(); @@ -196,16 +198,21 @@ Call::setRecording() // Start recording if (!recordStatus) { + _debug ("Call: Call not recording yet, set ringbuffers"); + MainBuffer *mbuffer = Manager::instance().getMainBuffer(); CallID process_id = Recordable::recorder.getRecorderID(); mbuffer->bindHalfDuplexOut (process_id, _id); mbuffer->bindHalfDuplexOut (process_id); + Recordable::recorder.start(); } // Stop recording else { + _debug ("Call: Stop recording"); + MainBuffer *mbuffer = Manager::instance().getMainBuffer(); CallID process_id = Recordable::recorder.getRecorderID(); @@ -216,7 +223,5 @@ Call::setRecording() Manager::instance().getMainBuffer()->stateInfo(); - Recordable::recorder.start(); - return recordStatus; } diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 47e5f3c385cc7b433ce3cc9f04f4968dbe5370d0..ed2d543c6b31906a4070c4531bd8bd323ed3d88a 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -2557,9 +2557,11 @@ void ManagerImpl::setRecordingCall (const CallID& id) Recordable* rec = NULL; if (!isConference (id)) { + _debug ("Manager: Set recording for call %s", id.c_str()); AccountID accountid = getAccountFromCall (id); rec = (Recordable *) getAccountLink (accountid)->getCall (id); } else { + _debug ("Manager: Ser recording for conference %s", id.c_str()); ConferenceMap::iterator it = _conferencemap.find (id); rec = (Recordable *) it->second; }