diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java index c62bd23..36fc274 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java @@ -359,7 +359,7 @@ public class RecordingActivity extends AppCompatThemeActivity { public void onClick(DialogInterface dialog, int which) { File to = new File(d.getCurrentPath(), Storage.getName(RecordingActivity.this, recording.targetUri)); recording.targetUri = Uri.fromFile(to); - EncodingService.saveAsWAV(RecordingActivity.this, recording.storage.getTempRecording(), to, recording.getInfo()); + EncodingService.saveAsWAV(RecordingActivity.this, recording.storage.getTempRecording(), to, recording.info); } }); d.show(); @@ -558,7 +558,7 @@ public class RecordingActivity extends AppCompatThemeActivity { return; } - RawSamples rs = new RawSamples(f, recording.getInfo()); + RawSamples rs = new RawSamples(f, recording.info); recording.samplesTime = rs.getSamples() / rs.info.channels; DisplayMetrics metrics = new DisplayMetrics(); @@ -566,7 +566,7 @@ public class RecordingActivity extends AppCompatThemeActivity { int count = pitch.getMaxPitchCount(metrics.widthPixels); - AudioTrack.SamplesBuffer buf = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, count * recording.samplesUpdateStereo); + AudioTrack.SamplesBuffer buf = new AudioTrack.SamplesBuffer(rs.info.format, count * recording.samplesUpdateStereo); long cut = recording.samplesTime * Sound.getChannels(this) - buf.count; if (cut < 0) @@ -586,7 +586,7 @@ public class RecordingActivity extends AppCompatThemeActivity { int diff = len - lenUpdate; if (diff > 0) { - recording.dbBuffer = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, recording.samplesUpdateStereo); + recording.dbBuffer = new AudioTrack.SamplesBuffer(rs.info.format, recording.samplesUpdateStereo); recording.dbBuffer.put(buf, lenUpdate, diff); } } @@ -747,7 +747,7 @@ public class RecordingActivity extends AppCompatThemeActivity { int rate = Integer.parseInt(shared.getString(AudioApplication.PREFERENCE_RATE, "")); int m = Sound.getChannels(this); - int c = RawSamples.getBytes(Sound.DEFAULT_AUDIOFORMAT); + int c = RawSamples.getBytes(recording.info.format); long perSec; @@ -782,7 +782,7 @@ public class RecordingActivity extends AppCompatThemeActivity { int playUpdate = PitchView.UPDATE_SPEED * recording.sampleRate / 1000; - RawSamples rs = new RawSamples(recording.storage.getTempRecording(), recording.getInfo()); + RawSamples rs = new RawSamples(recording.storage.getTempRecording(), recording.info); int len = (int) (rs.getSamples() - editSample * rs.info.channels); // in samples final AudioTrack.OnPlaybackPositionUpdateListener listener = new AudioTrack.OnPlaybackPositionUpdateListener() { @@ -801,7 +801,7 @@ public class RecordingActivity extends AppCompatThemeActivity { } }; - AudioTrack.AudioBuffer buf = new AudioTrack.AudioBuffer(recording.sampleRate, Sound.getOutMode(this), Sound.DEFAULT_AUDIOFORMAT, len); + AudioTrack.AudioBuffer buf = new AudioTrack.AudioBuffer(recording.sampleRate, Sound.getOutMode(this), rs.info.format, len); rs.open(editSample * rs.info.channels, buf.len); // len in samples int r = rs.read(buf.buffer); // r in samples if (r != buf.len) @@ -829,7 +829,7 @@ public class RecordingActivity extends AppCompatThemeActivity { if (editSample == -1) return; - RawSamples rs = new RawSamples(recording.storage.getTempRecording(), recording.getInfo()); + RawSamples rs = new RawSamples(recording.storage.getTempRecording(), recording.info); rs.trunk((editSample + recording.samplesUpdate) * rs.info.channels); rs.close(); @@ -1081,7 +1081,7 @@ public class RecordingActivity extends AppCompatThemeActivity { } else { done.run(); } - encoding = EncodingService.startEncoding(this, in, recording.targetUri, recording.getInfo()); + encoding = EncodingService.startEncoding(this, in, recording.targetUri, recording.info); } @Override diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java b/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java index 5e3689b..d918099 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/RecordingStorage.java @@ -60,6 +60,7 @@ public class RecordingStorage { public int samplesUpdateStereo; // samplesUpdate * number of channels public Uri targetUri = null; // output target file 2016-01-01 01.01.01.wav public long samplesTime; // how many samples passed for current recording, stereo = samplesTime * 2 + public RawSamples.Info info; public AudioTrack.SamplesBuffer dbBuffer = null; // PinchView samples buffer @@ -74,6 +75,7 @@ public class RecordingStorage { sampleRate = Sound.getSampleRate(context); samplesUpdate = (int) (pitchTime * sampleRate / 1000f); samplesUpdateStereo = samplesUpdate * Sound.getChannels(context); + info = new RawSamples.Info(sampleRate, Sound.getChannels(context)); } public void startRecording(int source) { @@ -89,7 +91,7 @@ public class RecordingStorage { if (shared.getBoolean(AudioApplication.PREFERENCE_FLY, false)) { if (e == null) { // do not recreate encoder if on-fly mode enabled - final OnFlyEncoding fly = new OnFlyEncoding(storage, targetUri, getInfo()); + final OnFlyEncoding fly = new OnFlyEncoding(storage, targetUri, info); e = new Encoder() { @Override public void encode(AudioTrack.SamplesBuffer buf, int pos, int len) { @@ -103,7 +105,7 @@ public class RecordingStorage { }; } } else { - final RawSamples rs = new RawSamples(storage.getTempRecording(), getInfo()); + final RawSamples rs = new RawSamples(storage.getTempRecording(), info); rs.open(samplesTime * rs.info.channels); e = new Encoder() { @Override @@ -118,7 +120,7 @@ public class RecordingStorage { }; } - final AudioRecord recorder = sound.createAudioRecorder(sampleRate, ss, 0); + final AudioRecord recorder = sound.createAudioRecorder(info.format, sampleRate, ss, 0); final Thread old = thread; final AtomicBoolean oldb = interrupt; @@ -164,7 +166,7 @@ public class RecordingStorage { while (!interrupt.get()) { synchronized (bufferSizeLock) { if (buffer == null || buffer.size() != bufferSize) - buffer = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, bufferSize); + buffer = new AudioTrack.SamplesBuffer(info.format, bufferSize); } int readSize = -1; @@ -202,11 +204,11 @@ public class RecordingStorage { int dbSize; int readSizeUpdate; if (dbBuffer != null) { - AudioTrack.SamplesBuffer bb = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, dbBuffer.position + readSize); + AudioTrack.SamplesBuffer bb = new AudioTrack.SamplesBuffer(info.format, dbBuffer.position + readSize); dbBuffer.flip(); bb.put(dbBuffer); bb.put(buffer, 0, readSize); - dbBuf = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, bb.position); + dbBuf = new AudioTrack.SamplesBuffer(info.format, bb.position); dbSize = dbBuf.count; bb.flip(); bb.get(dbBuf, 0, dbBuf.count); @@ -224,7 +226,7 @@ public class RecordingStorage { } int readSizeLen = dbSize - readSizeUpdate; if (readSizeLen > 0) { - dbBuffer = new AudioTrack.SamplesBuffer(Sound.DEFAULT_AUDIOFORMAT, readSizeLen); + dbBuffer = new AudioTrack.SamplesBuffer(info.format, readSizeLen); dbBuffer.put(dbBuf, readSizeUpdate, readSizeLen); } else { dbBuffer = null; @@ -297,10 +299,6 @@ public class RecordingStorage { sound.unsilent(); } - public RawSamples.Info getInfo() { - return new RawSamples.Info(sampleRate, Sound.getChannels(context)); - } - // calcuale buffer length dynamically, this way we can reduce thread cycles when activity in background // or phone screen is off. public void updateBufferSize(boolean pause) {