On Thu, May 26, 2011 at 11:59 AM, neha <[email protected]> wrote: > Thanx alot 4 rply > but if i use large buffer size ,it produce delay between record and > play.
Neha, All I suggested was to use the larger of values returned by both getMinBufferSize() calls for all 3 aspects: recording, playing and transfer of the data instead of arbitrary 400. > > On May 26, 11:46 am, Daniel Drozdzewski <[email protected]> > wrote: >> Neha, >> >> Your echo comes from the fact that you are using 400 bytes buffer to >> transfer the recording to the playback. >> It will physically take time to fill that buffer and then process. >> >> Making the buffer much smaller might not necessarily work either, as >> it will mean more overhead of the recording + playing management in a >> unit of time. However adjusting the buffer size would be a first step. >> >> You are using getMinBufferSize() method, but you ignore the returned >> values, when it comes to the buffer used to transfer the recording to >> the playback track. >> >> You should use Math.max(recordingMinBufferSize, playbackMinBufferSize) >> as a buffer size in all 3 cases. >> You should also write only bytesRead bytes, rather than writing full >> buffer every time. >> >> Daniel >> >> >> >> >> >> >> >> On Thu, May 26, 2011 at 10:28 AM, neha <[email protected]> wrote: >> > Is there any way to synchronize the capturing and playback of audio >> > data in Android? >> >> > I am using audioRecord/track to achieve this.But its producing echo. >> > Is there any way to cancel echo. >> > My code is- >> > { >> > isRecording=true; >> >> > bufferSize = >> > AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT); >> > audioRecord = new >> > AudioRecord(MediaRecorder.AudioSource.MIC, >> > 8000, >> > AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT, >> > bufferSize); >> >> > audioRecord.startRecording(); >> >> > int BUFFER_SIZE_IN_BYTES >> > =AudioTrack.getMinBufferSize(RECORDER_SAMPLERATE,AudioFormat.CHANNEL_CONFIGURATION_MONO,RECORDER_AUDIO_ENCODING); >> > AudioTrack audioTrack = new >> > AudioTrack(AudioManager.STREAM_SYSTEM, >> > >> > 8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, >> > >> > AudioFormat.ENCODING_PCM_16BIT, BUFFER_SIZE_IN_BYTES, >> > >> > AudioTrack.MODE_STREAM); >> > byte[] buffer=new byte[400]; >> > audioTrack.play(); >> > while (isRecording) { int bytesRead = >> > audioRecord.read(buffer, >> > 0, >> > 400); >> > int bytesWritten = audioTrack.write(buffer, >> > 0, 400); >> >> > } >> >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Android Developers" group. >> > To post to this group, send email to [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > For more options, visit this group at >> >http://groups.google.com/group/android-developers?hl=en >> >> -- >> Daniel Drozdzewski > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- Daniel Drozdzewski -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

