That fuck shit the fascists are using
at master 45 lines 1.4 kB view raw
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}