[jvr-general] dx.playiottdata() problem

Kevin O'Donnell kevino at jerboa.ca
Sat Mar 5 08:55:14 EST 2005


Hi David,

That's a great bug report - thanks for all of the detail.

I haven't run the code but having looked at your Test.java I see one
possible cause.  You are using DX_XPB.waveFormat() to get the "parameter
block".  If you look at the source code for that method you'll see that
it specifies 11Khz/8bit files.

DX_XPB.waveFormat() is just a convenience function - here's the source
code from dx.java.  Ha ha, I even have a TODO reminder for myself that
this function probably won't work for 8 or 6 KHz files.

public static DX_XPB waveFormat() throws JVRException {
    // TODO: 8bit mono mu-law
    return new DX_XPB(
        dx.FILE_FORMAT_WAVE,
        dx.DRT_11KHZ,                   <------- this line breaks 6KHz
and 8KHz files
        8,
        dx.DATA_FORMAT_PCM
    );
}

As of JVR 0.5 there is a new function in DX_XPB:

    public static DX_XPB getWavFormat (File file)

It uses the Java Audio Framework to determine the Khz and bits of the
WAV file and return a proper DX_XPB object.  It will also throw an
exception if the WAV file is not supported (22Khz, etc).  (Thanks to
Shawn for the how-to on this one).

dx.playwav() works because the underlying Dialogic C function does the
same thing internally - it reads the WAV file to determine the format.

Let me know if that fixes your problem - If not I'll run the code here
and debug JVR at the JNI layer.

Cheers!
Kev.




More information about the jvr-general mailing list