migrating to Info.Format

This commit is contained in:
Alexey Kuznetsov 2022-02-27 10:48:25 +03:00
commit e25e7ddecb
2 changed files with 18 additions and 20 deletions

View file

@ -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

View file

@ -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) {