12 | | // private VideoEngine videoEngine; |
13 | | // private VideoSource videoHandler; |
14 | | // private AudioEngine audioEngine; |
15 | | // private AudioSource audioHandler; |
16 | | // private TimerTask task; |
17 | | // private Timer timer; |
18 | | // |
19 | | // @Override |
20 | | // protected void setUp() throws Exception { |
21 | | // |
22 | | // this.videoEngine = new JMFVideoEngine(); |
23 | | // |
24 | | // this.audioEngine = new JMFAudioEngine(); |
25 | | // |
26 | | // this.timer = new Timer(); |
27 | | // } |
28 | | // |
29 | | // /** |
30 | | // * @throws InterruptedException |
31 | | // * |
32 | | // * This tests playing, stopping, registering, unregistering, |
33 | | // * seeking, getting position and duration and grabbing a frame |
34 | | // * of a VideoHandler |
35 | | // */ |
36 | | // @Test |
37 | | // public void testVideoEngine() throws InterruptedException { |
38 | | // this.videoHandler = new VideoSource() { |
39 | | // |
40 | | // @Override |
41 | | // public InputStream openStream() { |
42 | | // return TestAudioVideo.class.getResourceAsStream("/demo.avi"); |
43 | | // } |
44 | | // |
45 | | // @Override |
46 | | // public String getFileExtension() { |
47 | | // return "demo.avi"; |
48 | | // } |
49 | | // |
50 | | // }; |
51 | | // |
52 | | // assertTrue(this.videoEngine.registerHandler(this.videoHandler)); |
53 | | // this.videoEngine.play(this.videoHandler); |
54 | | // |
55 | | // this.task = new ScheduledVideoTask(this.videoEngine, this.videoHandler); |
56 | | // this.timer.schedule(this.task, 2000); |
57 | | // Thread.sleep(3000); |
58 | | // assertNotNull(((ScheduledVideoTask) this.task).getFrame()); |
59 | | // assertTrue(this.videoEngine.isPlaying(this.videoHandler)); |
60 | | // assertNotSame(this.videoEngine.getPosition(this.videoHandler), 0.0d); |
61 | | // assertNotSame(this.videoEngine.getDuration(this.videoHandler), 0.0d); |
62 | | // |
63 | | // assertTrue(this.videoEngine.seek(this.videoHandler, 1.0d)); |
64 | | // assertNotNull(this.videoEngine.grabFrame(this.videoHandler)); |
65 | | // |
66 | | // this.videoEngine.stop(this.videoHandler); |
67 | | // assertFalse(this.videoEngine.isPlaying(this.videoHandler)); |
68 | | // |
69 | | // assertTrue(this.videoEngine.unregisterHandler(this.videoHandler)); |
70 | | // assertFalse(this.videoEngine.unregisterHandler(this.videoHandler)); |
71 | | // assertFalse(this.videoEngine.isPlaying(this.videoHandler)); |
72 | | // |
73 | | // } |
74 | | // |
75 | | // /** |
76 | | // * @throws InterruptedException |
77 | | // * |
78 | | // * This tests playing, stopping, registering, unregistering, |
79 | | // * seeking, getting position and duration of an AudioHandler |
80 | | // */ |
81 | | // @Test |
82 | | // public void testAudioEngine() throws InterruptedException { |
83 | | // this.audioHandler = new AudioSource() { |
84 | | // |
85 | | // @Override |
86 | | // public InputStream openStream() { |
87 | | // return TestAudioVideo.class |
88 | | // .getResourceAsStream("/11k16bitpcm.wav"); |
89 | | // } |
90 | | // |
91 | | // @Override |
92 | | // public String getFileExtension() { |
93 | | // return ".wav"; |
94 | | // } |
95 | | // }; |
96 | | // |
97 | | // assertTrue(this.audioEngine.registerHandler(this.audioHandler)); |
98 | | // this.audioEngine.play(this.audioHandler); |
99 | | // |
100 | | // this.timer.schedule(new ScheduledAudioTask(this.audioEngine, |
101 | | // this.audioHandler), 2000); |
102 | | // Thread.sleep(3000); |
103 | | // assertFalse(this.audioEngine.isPlaying(this.audioHandler)); |
104 | | // assertNotSame(this.audioEngine.getPosition(this.audioHandler), 0.0d); |
105 | | // assertNotSame(this.audioEngine.getDuration(this.audioHandler), 0.0d); |
106 | | // |
107 | | // assertTrue(this.audioEngine.seek(this.audioHandler, 0.5d)); |
108 | | // assertTrue(this.audioEngine.play(this.audioHandler)); |
109 | | // |
110 | | // assertTrue(this.audioEngine.unregisterHandler(this.audioHandler)); |
111 | | // assertFalse(this.audioEngine.unregisterHandler(this.audioHandler)); |
112 | | // } |
113 | | //} |
114 | | // |
115 | | ///** |
116 | | // * @author Astea |
117 | | // * |
118 | | // * Used for scheduling a task connected to video |
119 | | // */ |
120 | | //class ScheduledVideoTask extends TimerTask { |
121 | | // |
122 | | // private VideoEngine innerEngine; |
123 | | // private VideoSource innerHandler; |
124 | | // private BufferedImage frame; |
125 | | // |
126 | | // /** |
127 | | // * @param aEngine |
128 | | // * VideoEngine on which a scheduled task is performed |
129 | | // * @param aHandler |
130 | | // * VideoHandler on which a scheduled task is performed |
131 | | // */ |
132 | | // public ScheduledVideoTask(final VideoEngine aEngine, |
133 | | // final VideoSource aHandler) { |
134 | | // super(); |
135 | | // |
136 | | // this.innerEngine = aEngine; |
137 | | // this.innerHandler = aHandler; |
138 | | // } |
139 | | // |
140 | | // @Override |
141 | | // public void run() { |
142 | | // this.frame = this.innerEngine.grabFrame(this.innerHandler); |
143 | | // } |
144 | | // |
145 | | // /** |
146 | | // * @return returns a frame of innerHandler |
147 | | // */ |
148 | | // public BufferedImage getFrame() { |
149 | | // return this.frame; |
150 | | // } |
151 | | //} |
152 | | // |
153 | | ///** |
154 | | // * @author Astea |
155 | | // * |
156 | | // * Used for scheduling a task connected to audio |
157 | | // */ |
158 | | //class ScheduledAudioTask extends TimerTask { |
159 | | // |
160 | | // private AudioEngine innerEngine; |
161 | | // private AudioSource innerHandler; |
162 | | // |
163 | | // /** |
164 | | // * @param aEngine |
165 | | // * AudioEngine on which a scheduled task is performed |
166 | | // * @param aHandler |
167 | | // * AudioHandler on which a scheduled task is performed |
168 | | // */ |
169 | | // public ScheduledAudioTask(final AudioEngine aEngine, |
170 | | // final AudioSource aHandler) { |
171 | | // super(); |
172 | | // |
173 | | // this.innerEngine = aEngine; |
174 | | // this.innerHandler = aHandler; |
175 | | // } |
176 | | // |
177 | | // @Override |
178 | | // public void run() { |
179 | | // this.innerEngine.stop(this.innerHandler); |
180 | | // } |
| 21 | private VideoEngine videoEngine; |
| 22 | |
| 23 | @Override |
| 24 | protected void setUp() throws Exception { |
| 25 | this.videoEngine = new JMFVideoEngine(); |
| 26 | } |
| 27 | |
| 28 | /** |
| 29 | * Tests playing, stopping, registering, unregistering and grabbing a frame |
| 30 | * from the VideoEngine |
| 31 | */ |
| 32 | @Test |
| 33 | public void testVideoEngine() { |
| 34 | String fileName = "/demo.avi"; |
| 35 | testMediaEngine(this.videoEngine, fileName); |
| 36 | |
| 37 | assertTrue(this.videoEngine.request(fileName, new MediaState(1, -1, |
| 38 | true))); |
| 39 | try { |
| 40 | Thread.sleep(1000); |
| 41 | } catch (InterruptedException e) { |
| 42 | fail(); |
| 43 | } |
| 44 | assertNotNull(this.videoEngine.getCurrentFrame(fileName)); |
| 45 | |
| 46 | assertTrue(this.videoEngine.unregisterMediaElement(fileName)); |
| 47 | assertFalse(this.videoEngine.unregisterMediaElement(fileName)); |
| 48 | } |
| 49 | |
| 50 | /** |
| 51 | * Tests playing, stopping, registering, unregistering from the AudioEngine |
| 52 | */ |
| 53 | @Test |
| 54 | public void testAudioEngine() { |
| 55 | testMediaEngine(new JMFAudioEngine(), "/11k16bitpcm.wav"); |
| 56 | } |
| 57 | |
| 58 | private void testMediaEngine(MediaEngine engine, String fileName) { |
| 59 | File file = new File(TestAudioVideo.class.getResource(fileName) |
| 60 | .getFile()); |
| 61 | try { |
| 62 | assertTrue(engine.registerMediaElement(fileName, new BinDataSource( |
| 63 | file))); |
| 64 | assertFalse(engine.registerMediaElement(fileName, |
| 65 | new BinDataSource(file))); |
| 66 | } catch (Exception e) { |
| 67 | fail(); |
| 68 | } |
| 69 | |
| 70 | assertTrue(engine.request(fileName, new MediaState(1, -1, false))); |
| 71 | assertFalse(engine.getCurrentState(fileName).isPlaying() == true); |
| 72 | assertTrue(engine.getCurrentState(fileName).isPlaying() == false); |
| 73 | assertTrue(engine.getCurrentState(fileName).getVolume() == 1); |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | /** |
| 78 | * @author nenko |
| 79 | * |
| 80 | * Used for scheduling a task connected to video |
| 81 | */ |
| 82 | class ScheduledVideoTask extends TimerTask { |
| 83 | |
| 84 | private VideoEngine innerEngine; |
| 85 | private String mediaId; |
| 86 | private ImmImage frame; |
| 87 | |
| 88 | /** |
| 89 | * @param aEngine |
| 90 | * VideoEngine on which a scheduled task is performed |
| 91 | * @param mediaId |
| 92 | * VideoHandler on which a scheduled task is performed |
| 93 | */ |
| 94 | public ScheduledVideoTask(final VideoEngine aEngine, final String mediaId) { |
| 95 | super(); |
| 96 | |
| 97 | this.innerEngine = aEngine; |
| 98 | this.mediaId = mediaId; |
| 99 | } |
| 100 | |
| 101 | @Override |
| 102 | public void run() { |
| 103 | this.frame = this.innerEngine.getCurrentFrame(this.mediaId); |
| 104 | } |
| 105 | |
| 106 | /** |
| 107 | * @return returns a frame of innerHandler |
| 108 | */ |
| 109 | public ImmImage getFrame() { |
| 110 | return this.frame; |
| 111 | } |