-
Bug
-
Resolution: Fixed
-
P4
-
1.4.0
-
beta2
-
x86
-
windows_98
-
Verified
Name: bsC130419 Date: 06/13/2001
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)
I ran the following program on my computer:
import javax.sound.sampled.*;
class FrameSizeTest {
public static void main(String[] args) {
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
for (int i = 0; i < mixerInfo.length; i++) {
Mixer mixer = AudioSystem.getMixer(mixerInfo[i]);
System.out.println(mixer);
Line.Info[] lineinfo = mixer.getSourceLineInfo();
for (int j = 0; j < lineinfo.length; j++) {
System.out.println(" " + lineinfo[j]);
try {
AudioFormat[] formats = ((DataLine.Info)lineinfo[j]).getFormats();
for (int k = 0; k < formats.length; k++) {
System.out.println(" " + formats[k] + ", getFrameSize() returns "
+ formats[k].getFrameSize());
}
} catch (ClassCastException e) {
}
}
}
}
}
And the program printed the following:
com.sun.media.sound.HeadspaceMixer@6e1408
interface SourceDataLine supporting 8 audio formats
PCM_SIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_UNSIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_SIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_UNSIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, little-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, big-endian, audio data, getFrameSize()
returns 4
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 4
interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
PCM_SIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_UNSIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_SIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_UNSIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, little-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, big-endian, audio data, getFrameSize()
returns 4
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 4
com.sun.media.sound.SimpleInputDevice@3c5982
com.sun.media.sound.SimpleInputDevice@186fab
com.sun.media.sound.SimpleInputDevice@4b7453
com.sun.media.sound.SimpleInputDevice@421495
com.sun.media.sound.SimpleInputDevice@55550d
com.sun.media.sound.SimpleInputDevice@42ea3f
com.sun.media.sound.SimpleOutputDevice@5f5897
interface SourceDataLine supporting 32 audio formats
PCM_SIGNED, 8000.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 8000.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 8000.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 8000.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 8000.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 8000.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 8000.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 8000.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 11025.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 11025.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 11025.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 11025.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 11025.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 11025.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 11025.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 11025.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 22050.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 22050.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 22050.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 22050.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 22050.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 22050.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 22050.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 22050.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 44100.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 44100.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 44100.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 44100.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
8
PCM_SIGNED, 44100.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 44100.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
All the reported framesizes for SimpleOutputDevice@5f5897 are clearly incorrect.
The program seems to output framesizes in bits instead of bytes for this device.
The returned values for HeadspaceMixer are correct, though.
Yes, 1, 2 and 4 bytes are normal sampleframe sizes for
8/16 bit samplestreams in mono or stereo, and the
return values for the Headspace device are in this
range as should be. But framesizes of 8, 16 or 32
bytes, as returned for the SimpleOutputDevice, are
*definitely* not normal. Remember, the contract of
getFrameSize() is to return the number of *bytes* (not
bits!) required for one sampleframe. Think about it: a
32-byte frame for a 16-bit stereo stream would be a
total waste of space, yet this is what the method
returns for the SimpleOutputDevice! *Please* take
another look at the output values I provided...
My soundcard is a TBS Montego PCI Audio.
(Review ID: 126331)
======================================================================
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)
I ran the following program on my computer:
import javax.sound.sampled.*;
class FrameSizeTest {
public static void main(String[] args) {
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
for (int i = 0; i < mixerInfo.length; i++) {
Mixer mixer = AudioSystem.getMixer(mixerInfo[i]);
System.out.println(mixer);
Line.Info[] lineinfo = mixer.getSourceLineInfo();
for (int j = 0; j < lineinfo.length; j++) {
System.out.println(" " + lineinfo[j]);
try {
AudioFormat[] formats = ((DataLine.Info)lineinfo[j]).getFormats();
for (int k = 0; k < formats.length; k++) {
System.out.println(" " + formats[k] + ", getFrameSize() returns "
+ formats[k].getFrameSize());
}
} catch (ClassCastException e) {
}
}
}
}
}
And the program printed the following:
com.sun.media.sound.HeadspaceMixer@6e1408
interface SourceDataLine supporting 8 audio formats
PCM_SIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_UNSIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_SIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_UNSIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, little-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, big-endian, audio data, getFrameSize()
returns 4
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 4
interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
PCM_SIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_UNSIGNED, -1.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 1
PCM_SIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_UNSIGNED, -1.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, mono, little-endian, audio data, getFrameSize()
returns 2
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, big-endian, audio data, getFrameSize()
returns 4
PCM_SIGNED, -1.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 4
com.sun.media.sound.SimpleInputDevice@3c5982
com.sun.media.sound.SimpleInputDevice@186fab
com.sun.media.sound.SimpleInputDevice@4b7453
com.sun.media.sound.SimpleInputDevice@421495
com.sun.media.sound.SimpleInputDevice@55550d
com.sun.media.sound.SimpleInputDevice@42ea3f
com.sun.media.sound.SimpleOutputDevice@5f5897
interface SourceDataLine supporting 32 audio formats
PCM_SIGNED, 8000.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 8000.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 8000.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 8000.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 8000.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 8000.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 8000.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 8000.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 11025.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 11025.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 11025.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 11025.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 11025.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 11025.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 11025.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 11025.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 22050.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 22050.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 22050.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 16
PCM_UNSIGNED, 22050.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
16
PCM_SIGNED, 22050.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 22050.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 22050.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 22050.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 44100.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 44100.0 Hz, 8 bit, mono, audio data, getFrameSize() returns 8
PCM_SIGNED, 44100.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns 8
PCM_UNSIGNED, 44100.0 Hz, 8 bit, stereo, audio data, getFrameSize() returns
8
PCM_SIGNED, 44100.0 Hz, 16 bit, mono, little-endian, audio data,
getFrameSize() returns 16
PCM_SIGNED, 44100.0 Hz, 16 bit, mono, big-endian, audio data, getFrameSize()
returns 16
PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio data,
getFrameSize() returns 32
PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, big-endian, audio data,
getFrameSize() returns 32
All the reported framesizes for SimpleOutputDevice@5f5897 are clearly incorrect.
The program seems to output framesizes in bits instead of bytes for this device.
The returned values for HeadspaceMixer are correct, though.
Yes, 1, 2 and 4 bytes are normal sampleframe sizes for
8/16 bit samplestreams in mono or stereo, and the
return values for the Headspace device are in this
range as should be. But framesizes of 8, 16 or 32
bytes, as returned for the SimpleOutputDevice, are
*definitely* not normal. Remember, the contract of
getFrameSize() is to return the number of *bytes* (not
bits!) required for one sampleframe. Think about it: a
32-byte frame for a 16-bit stereo stream would be a
total waste of space, yet this is what the method
returns for the SimpleOutputDevice! *Please* take
another look at the output values I provided...
My soundcard is a TBS Montego PCI Audio.
(Review ID: 126331)
======================================================================