1 package org.daisy.pipeline.tts.calabash.impl;
2
3 import java.io.File;
4 import java.util.concurrent.atomic.AtomicReference;
5
6 import javax.sound.sampled.AudioInputStream;
7
8 import org.daisy.pipeline.audio.AudioClip;
9 import org.daisy.pipeline.tts.AudioFootprintMonitor;
10
11
12
13
14
15
16 class ContiguousPCM implements Comparable<ContiguousPCM> {
17
18 static ContiguousPCM EndOfQueue = new ContiguousPCM();
19
20 ContiguousPCM() {
21 mEncodingTimeApprox = -1;
22 mSizeInBytes = minByteSize();
23 }
24
25 boolean isEndOfQueue() {
26 return (mEncodingTimeApprox == -1);
27 }
28
29 ContiguousPCM(AudioInputStream audio, File destdir, String destFilePrefix) {
30 mAudio = audio;
31 mDestDir = destdir;
32 mDestFilePrefix = destFilePrefix;
33 mDestFile = new AtomicReference<>();
34 int size = AudioFootprintMonitor.getFootprint(audio);
35 mSizeInBytes = minByteSize() + size;
36 mEncodingTimeApprox = size / audio.getFormat().getSampleSizeInBits();
37 }
38
39 @Override
40 public int compareTo(ContiguousPCM o) {
41 return (o.mEncodingTimeApprox - mEncodingTimeApprox);
42 }
43
44 String getDestinationFilePrefix() {
45 return mDestFilePrefix;
46 }
47
48 File getDestinationDirectory() {
49 return mDestDir;
50 }
51
52 AudioInputStream getAudio() {
53 return mAudio;
54 }
55
56 AtomicReference<AudioClip> getDestinationFile() {
57 return mDestFile;
58 }
59
60 public int sizeInBytes() {
61 return mSizeInBytes;
62 }
63
64 private int minByteSize() {
65 return 500;
66 }
67
68 private AudioInputStream mAudio;
69 private int mEncodingTimeApprox;
70 private int mSizeInBytes;
71 private File mDestDir;
72 private String mDestFilePrefix;
73 private AtomicReference<AudioClip> mDestFile;
74
75 }