JDK-4875881 : RegTest-test javax/sound/sampled/Clip/Drain/ClipDrain.java fails
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.sound
  • Affected Version: 1.4.2,5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: linux,windows_2000
  • CPU: x86
  • Submitted: 2003-06-09
  • Updated: 2004-04-14
  • Resolved: 2004-04-02
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b46Fixed
Description
Name: iaR10016			Date: 06/09/2003


Filed By      : J2SE-SQA [###@###.###
JDK           : JDK1.4.2-b24, JDK1.4.2-b25, JDK1.5.0-b08, JDK1.4.1-b21
Testbase      : RegTest-test
Platform[s]   : RedHat linux 7.3, Windows 2000 Pro
switch/Mode   : all
Falling tests : javax/sound/sampled/Clip/Drain/ClipDrain.java

Test source location:
=====================
/java/re/jdk/1.4.2/promoted/latest/ws/j2se/test/javax/sound/sampled/Clip/Drain/ClipDrain.java

jtr file location:
==================
/net/jtgb4u4c.sfbay/export/sail15/results/mantis/b24/regtest/win32/win2000_-server_smp_linux-2/workDir/test/javax/sound/sampled/Clip/Drain/ClipDrain.jtr

How to reproduce:
=================
Run the following script (you may need to change its variables)

--- script start ---
#!/bin/sh
TESTJAVA="/java/re/jdk/1.5.0/promoted/latest/binaries"
TEST_BASE_PATH="/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test"
rm -rf ClipDrain.*
cp $TEST_BASE_PATH/javax/sound/sampled/Clip/Drain/ClipDrain.java .
$TESTJAVA/bin/javac ClipDrain.java
$TESTJAVA/bin/java ClipDrain
--- script end ---

Script output:
==============
Testing mixer: Java Sound Audio Engine, version 1.0
  ---------- start --------
drain ...
close ...
... done
Playback duration: 9015 milliseconds.
Exception in thread "main" java.lang.Exception: Drain did not wait long enough to play entire clip.
     at ClipDrain.doMixerClip(ClipDrain.java:50)
     at ClipDrain.doAll(ClipDrain.java:62)
     at ClipDrain.main(ClipDrain.java:73)

Test output (jtr part):
=======================
----------System.out:(7/170)----------
--------------
Testing mixer: Java Sound Audio Engine, version 1.0
  ---------- start --------
drain ...
close ...
.. done
Playback duration: 8593 milliseconds.
----------System.err:(15/881)----------
java.lang.Exception: Drain did not wait long enough to play entire clip.
     at ClipDrain.doMixerClip(ClipDrain.java:50)
     at ClipDrain.doAll(ClipDrain.java:62)
     at ClipDrain.main(ClipDrain.java:73)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:324)
     at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:82)
     at java.lang.Thread.run(Thread.java:534)

JavaTest Message: Test threw exception: java.lang.Exception: Drain did not wait long enough to play entire clip.
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.lang.Exception: Drain did not wait long enough to play entire clip.
result: Failed. Execution failed: `main' threw exception: java.lang.Exception: Drain did not wait long enough to play entire clip.

test result: Failed. Execution failed: `main' threw exception: java.lang.Exception: Drain did not wait long enough to play entire clip.

Specific machine info:
======================
Hostname: linux-2
OS: Windows 2000 Pro

Hostname: linux-14
OS: RedHat Linux 7.3

======================================================================

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-beta2 FIXED IN: tiger-beta2 INTEGRATED IN: tiger-b46 tiger-beta2 VERIFIED IN: tiger-beta2
14-06-2004

PUBLIC COMMENTS Java Sound plays 10% too fast. Two independent problems were identified: 1) On a specific Windows 2000 machine, it happens with DirectAudio lines. This problem cannot be reproduced on other computers, and we assume it's a faulty soundcard driver. 2) The Java Sound Audio Engine plays audio data at 8000Hz too fast. This is due to a slight drift in its sample rate converter. This is fixed for tiger-beta2. ###@###.### 2004-03-30
30-03-2004

EVALUATION ###@###.### 2003-06-23 I am unable to understand this problem, since I have run all regression tests on all those platforms prior to all integrations. Also, this test exists for a longer time - why hasn't it been detected earlier? Rechecked on Windows 2000 and build 28, and no problem detected. I will contact the submitter to see what is going on. After modifying the test program to print continously the system time and the soundcard position, it became evident that the hardware or drivers (of soundcard or system clock) on the submitter's system are faulty. Either the system clock runs too fast, or the soundcard too slow. It is interesting to note that the same hardware run under linux does not expose this problem. Here is an excerpt of the program's output, not that the drift continously increases: Testing mixer: Primary Sound Driver, version Unknown Version 000:01 DirectAudioDevice$DirectClip time=000:00 drift=11millis framePos=0 ---------- start -------- 000:03 DirectAudioDevice$DirectClip time=000:03 drift=6millis framePos=294 000:08 DirectAudioDevice$DirectClip time=000:09 drift=14millis framePos=760 000:13 DirectAudioDevice$DirectClip time=000:15 drift=22millis framePos=1226 000:18 DirectAudioDevice$DirectClip time=000:21 drift=30millis framePos=1692 000:23 DirectAudioDevice$DirectClip time=000:27 drift=39millis framePos=2160 000:28 DirectAudioDevice$DirectClip time=000:32 drift=47millis framePos=2626 drain ... 000:33 DirectAudioDevice$DirectClip time=000:38 drift=56millis framePos=3096 000:38 DirectAudioDevice$DirectClip time=000:44 drift=64millis framePos=3560 000:43 DirectAudioDevice$DirectClip time=000:50 drift=72millis framePos=4026 000:48 DirectAudioDevice$DirectClip time=000:56 drift=80millis framePos=4494 000:53 DirectAudioDevice$DirectClip time=000:62 drift=89millis framePos=4962 000:58 DirectAudioDevice$DirectClip time=000:67 drift=97millis framePos=5428 000:63 DirectAudioDevice$DirectClip time=000:73 drift=105millis framePos=5894 000:68 DirectAudioDevice$DirectClip time=000:79 drift=114millis framePos=6360 000:73 DirectAudioDevice$DirectClip time=000:85 drift=122millis framePos=6828 000:78 DirectAudioDevice$DirectClip time=000:91 drift=130millis framePos=7294 000:84 DirectAudioDevice$DirectClip time=000:98 drift=140millis framePos=7854 000:89 DirectAudioDevice$DirectClip time=001:04 drift=149millis framePos=8322 000:94 DirectAudioDevice$DirectClip time=001:09 drift=157millis framePos=8788 000:99 DirectAudioDevice$DirectClip time=001:15 drift=165millis framePos=9254 001:04 DirectAudioDevice$DirectClip time=001:21 drift=175millis framePos=9732 001:09 DirectAudioDevice$DirectClip time=001:27 drift=182millis framePos=10188 This is the output on my Windows 2000 system: Testing mixer: Primary Sound Driver, version Unknown Version 000:01 DirectAudioDevice$DirectClip time=000:00 drift=12millis framePos=0 000:07 DirectAudioDevice$DirectClip time=000:00 drift=74millis framePos=0 ---------- start -------- 000:03 DirectAudioDevice$DirectClip time=000:03 drift=0millis framePos=259 000:08 DirectAudioDevice$DirectClip time=000:08 drift=0millis framePos=677 000:13 DirectAudioDevice$DirectClip time=000:13 drift=2millis framePos=1095 000:18 DirectAudioDevice$DirectClip time=000:18 drift=1millis framePos=1490 000:23 DirectAudioDevice$DirectClip time=000:23 drift=0millis framePos=1907 000:29 DirectAudioDevice$DirectClip time=000:29 drift=0millis framePos=2325 drain ... 000:34 DirectAudioDevice$DirectClip time=000:34 drift=2millis framePos=2743 000:39 DirectAudioDevice$DirectClip time=000:39 drift=1millis framePos=3138 000:44 DirectAudioDevice$DirectClip time=000:44 drift=0millis framePos=3533 000:49 DirectAudioDevice$DirectClip time=000:49 drift=1millis framePos=3951 000:54 DirectAudioDevice$DirectClip time=000:54 drift=0millis framePos=4345 000:59 DirectAudioDevice$DirectClip time=000:59 drift=1millis framePos=4763 000:64 DirectAudioDevice$DirectClip time=000:64 drift=0millis framePos=5158 000:69 DirectAudioDevice$DirectClip time=000:69 drift=2millis framePos=5576 000:74 DirectAudioDevice$DirectClip time=000:74 drift=0millis framePos=5971 000:81 DirectAudioDevice$DirectClip time=000:81 drift=3millis framePos=6505 000:86 DirectAudioDevice$DirectClip time=000:86 drift=4millis framePos=6923 000:91 DirectAudioDevice$DirectClip time=000:91 drift=0millis framePos=7317 000:96 DirectAudioDevice$DirectClip time=000:96 drift=1millis framePos=7735 001:01 DirectAudioDevice$DirectClip time=001:01 drift=2millis framePos=8153 ###@###.### 2003-10-23 While working on MMAPI, which uses the same sample rate converter as Java Sound, it was noted that the calculation for the frame position did not use enough significant digits and for non-integer sample rate conversions, quite some noticable drift would occur. The fix in MMAPI was backported to the Java Sound Audio Engine. This is about as much as can be done in Java Sound. The drift that was experienced with the new DirectAudio devices must be due to the soundcard driver. Drift output for Java Sound Audio Engine at 8000Hz: With 1.4.2: 000:40 MixerSourceLine time=000:00 drift=-404millis 000:47 MixerSourceLine time=000:07 drift=-399millis 000:53 MixerSourceLine time=000:14 drift=-389millis 000:58 MixerSourceLine time=000:20 drift=-385millis 000:64 MixerSourceLine time=000:27 drift=-372millis 000:70 MixerSourceLine time=000:34 drift=-358millis 000:76 MixerSourceLine time=000:34 drift=-416millis 000:83 MixerSourceLine time=000:48 drift=-354millis 000:89 MixerSourceLine time=000:48 drift=-411millis 000:94 MixerSourceLine time=000:55 drift=-397millis 001:01 MixerSourceLine time=000:62 drift=-388millis 001:07 MixerSourceLine time=000:69 drift=-378millis 001:13 MixerSourceLine time=000:75 drift=-374millis 001:18 MixerSourceLine time=000:82 drift=-362millis (...) 088:90 MixerSourceLine time=087:76 drift=-1133millis 088:95 MixerSourceLine time=087:83 drift=-1113millis 089:00 MixerSourceLine time=087:91 drift=-1093millis 089:05 MixerSourceLine time=087:97 drift=-1083millis 089:10 MixerSourceLine time=087:97 drift=-1134millis 089:15 MixerSourceLine time=088:04 drift=-1114millis 089:20 MixerSourceLine time=088:11 drift=-1093millis 089:26 MixerSourceLine time=088:18 drift=-1075millis 089:31 MixerSourceLine time=088:18 drift=-1126millis 089:36 MixerSourceLine time=088:25 drift=-1109millis 089:41 MixerSourceLine time=088:31 drift=-1099millis 089:46 MixerSourceLine time=088:38 drift=-1078millis 089:51 MixerSourceLine time=088:38 drift=-1129millis 089:56 MixerSourceLine time=088:45 drift=-1109millis 089:61 MixerSourceLine time=088:53 drift=-1088millis 089:67 MixerSourceLine time=088:59 drift=-1080millis With this fix (tiger-beta2): 000:49 MixerSourceLine time=000:00 drift=-488millis 000:55 MixerSourceLine time=000:07 drift=-477millis 000:60 MixerSourceLine time=000:14 drift=-466millis 000:66 MixerSourceLine time=000:14 drift=-524millis 000:72 MixerSourceLine time=000:21 drift=-513millis 000:78 MixerSourceLine time=000:28 drift=-502millis 000:84 MixerSourceLine time=000:34 drift=-500millis 000:89 MixerSourceLine time=000:41 drift=-487millis 000:96 MixerSourceLine time=000:48 drift=-479millis 001:01 MixerSourceLine time=000:55 drift=-467millis (...) 089:14 MixerSourceLine time=088:60 drift=-549millis 089:20 MixerSourceLine time=088:67 drift=-539millis 089:26 MixerSourceLine time=088:74 drift=-525millis 089:32 MixerSourceLine time=088:81 drift=-511millis 089:37 MixerSourceLine time=088:88 drift=-497millis 089:43 MixerSourceLine time=088:88 drift=-554millis 089:49 MixerSourceLine time=088:95 drift=-545millis 089:55 MixerSourceLine time=089:02 drift=-530millis 089:60 MixerSourceLine time=089:09 drift=-517millis 089:66 MixerSourceLine time=089:16 drift=-504millis ###@###.### 2004-03-30
30-03-2004