That fuck shit the fascists are using
1package org.tm.archive.audio;
2
3import androidx.annotation.NonNull;
4
5import org.tm.archive.database.model.databaseprotos.AudioWaveFormData;
6
7import java.util.concurrent.TimeUnit;
8
9import okio.ByteString;
10
11public class AudioFileInfo {
12 private final long durationUs;
13 private final byte[] waveFormBytes;
14 private final float[] waveForm;
15
16 public static @NonNull AudioFileInfo fromDatabaseProtobuf(@NonNull AudioWaveFormData audioWaveForm) {
17 return new AudioFileInfo(audioWaveForm.durationUs, audioWaveForm.waveForm.toByteArray());
18 }
19
20 AudioFileInfo(long durationUs, byte[] waveFormBytes) {
21 this.durationUs = durationUs;
22 this.waveFormBytes = waveFormBytes;
23 this.waveForm = new float[waveFormBytes.length];
24
25 for (int i = 0; i < waveFormBytes.length; i++) {
26 int unsigned = waveFormBytes[i] & 0xff;
27 this.waveForm[i] = unsigned / 255f;
28 }
29 }
30
31 public long getDuration(@NonNull TimeUnit timeUnit) {
32 return timeUnit.convert(durationUs, TimeUnit.MICROSECONDS);
33 }
34
35 public float[] getWaveForm() {
36 return waveForm;
37 }
38
39 public @NonNull AudioWaveFormData toDatabaseProtobuf() {
40 return new AudioWaveFormData.Builder()
41 .durationUs(durationUs)
42 .waveForm(ByteString.of(waveFormBytes))
43 .build();
44 }
45}