[Speex-dev] Programming questions
rhino64 at freesurf.ch
rhino64 at freesurf.ch
Mon Jan 17 00:44:44 PST 2005
I am quite new to voice encoding and to Speex library. I have some
programming questions that I am not able to answer even after having read
the documentation (from the start to the end an from the end to the start)
and by reading the sample code (provided in the documentation) and the
speexdec.c and speexenc.c programs.
I am currently working on an interface between Java code and C code for
using the C version of Speex library inside Java programs.
I have to encode a stream with 44100 Khz 16 bits Stereo and I would encode
it by using packets containing a duration of about 1/10 sec of unencoded
speech (this value is not fixed and will be an integer multiple of the
Speex encoder frame size to have a duration of about 1/10 of a second).
The duration imposed by the Speex encoder frame size is a little too short
for the application.
My problems are the following:
0) Is it possible to manipulate voice data representing more than
the frame size of encoder (this seems possible in Speex Java code
used until now).
1) How can I specify to the encoder that I use 16 bits stereo data ?
The ctl function allows only to set the sampling rate. I have
found nowhere some details. In speexenc.c I have seen the use
of some related to stereo functions but without understanding
well how to use them.
2) What is exactly the frame size ? It is an integer representing
a number of sample or a number of bytes or even a number of
shorts (in sampleenc.c this seems to be a number of shorts)
3) How (if this is possible) to decode a certain amount (known) of
coded data if these coded data represent more than the frame size
of encoder. This situation arise when the coded data for a
duration greater than the frame size of decoder are used. Should
I call some integer number of times the decoding procedure (like
it is done in the java code of Speex).
4) What is the difference "SPEEX_GET_FRAME_SIZE" and
"SPEEX_MODE_FRAME_SIZE" operations. This should not be identical
since these operations are provided by two different functions
but I don't see any explanation of a difference in the
Iwould greatly appreciate If somebody has some answer to these questions.
Thanks and best regards,
More information about the Speex-dev