added interface for variable bitrate encoding
This commit is contained in:
parent
f96c7969eb
commit
c326ebfac1
|
@ -80,10 +80,15 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
bool inBigEndian;
|
bool inBigEndian;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bit rate of the output. (bits/sec)
|
* Bit rate of the output in kbits/sec, for fixed bitrate encodings.
|
||||||
*/
|
*/
|
||||||
unsigned int outBitrate;
|
unsigned int outBitrate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quality of the output, for variable bitrate encodings.
|
||||||
|
*/
|
||||||
|
double outQuality;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sample rate of the output.
|
* Sample rate of the output.
|
||||||
*/
|
*/
|
||||||
|
@ -112,6 +117,7 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
unsigned int inChannel,
|
unsigned int inChannel,
|
||||||
bool inBigEndian,
|
bool inBigEndian,
|
||||||
unsigned int outBitrate,
|
unsigned int outBitrate,
|
||||||
|
float outQuality,
|
||||||
unsigned int outSampleRate,
|
unsigned int outSampleRate,
|
||||||
unsigned int outChannel ) throw ( Exception )
|
unsigned int outChannel ) throw ( Exception )
|
||||||
{
|
{
|
||||||
|
@ -120,6 +126,7 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
this->inChannel = inChannel;
|
this->inChannel = inChannel;
|
||||||
this->inBigEndian = inBigEndian;
|
this->inBigEndian = inBigEndian;
|
||||||
this->outBitrate = outBitrate;
|
this->outBitrate = outBitrate;
|
||||||
|
this->outQuality = outQuality;
|
||||||
this->outSampleRate = outSampleRate;
|
this->outSampleRate = outSampleRate;
|
||||||
this->outChannel = outChannel;
|
this->outChannel = outChannel;
|
||||||
}
|
}
|
||||||
|
@ -149,13 +156,13 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor for fixed bitrate encoding.
|
||||||
*
|
*
|
||||||
* @param inSampleRate sample rate of the input.
|
* @param inSampleRate sample rate of the input.
|
||||||
* @param inBitsPerSample number of bits per sample of the input.
|
* @param inBitsPerSample number of bits per sample of the input.
|
||||||
* @param inChannel number of channels of the input.
|
* @param inChannel number of channels of the input.
|
||||||
* @param inBigEndian shows if the input is big or little endian
|
* @param inBigEndian shows if the input is big or little endian
|
||||||
* @param outBitrate bit rate of the output (bits/sec).
|
* @param outBitrate bit rate of the output (kbits/sec).
|
||||||
* @param outSampleRate sample rate of the output.
|
* @param outSampleRate sample rate of the output.
|
||||||
* If 0, inSampleRate is used.
|
* If 0, inSampleRate is used.
|
||||||
* @param outChannel number of channels of the output.
|
* @param outChannel number of channels of the output.
|
||||||
|
@ -166,7 +173,7 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
AudioEncoder ( unsigned int inSampleRate,
|
AudioEncoder ( unsigned int inSampleRate,
|
||||||
unsigned int inBitsPerSample,
|
unsigned int inBitsPerSample,
|
||||||
unsigned int inChannel,
|
unsigned int inChannel,
|
||||||
bool inBigEndian,
|
bool inBigEndian,
|
||||||
unsigned int outBitrate,
|
unsigned int outBitrate,
|
||||||
unsigned int outSampleRate = 0,
|
unsigned int outSampleRate = 0,
|
||||||
unsigned int outChannel = 0 )
|
unsigned int outChannel = 0 )
|
||||||
|
@ -177,16 +184,51 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
inChannel,
|
inChannel,
|
||||||
inBigEndian,
|
inBigEndian,
|
||||||
outBitrate,
|
outBitrate,
|
||||||
|
0.0,
|
||||||
outSampleRate ? outSampleRate : inSampleRate,
|
outSampleRate ? outSampleRate : inSampleRate,
|
||||||
outChannel ? outChannel : inChannel );
|
outChannel ? outChannel : inChannel );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor for variable bitrate encoding.
|
||||||
|
*
|
||||||
|
* @param inSampleRate sample rate of the input.
|
||||||
|
* @param inBitsPerSample number of bits per sample of the input.
|
||||||
|
* @param inChannel number of channels of the input.
|
||||||
|
* @param inBigEndian shows if the input is big or little endian
|
||||||
|
* @param outQuality the quality of the stream.
|
||||||
|
* @param outSampleRate sample rate of the output.
|
||||||
|
* If 0, inSampleRate is used.
|
||||||
|
* @param outChannel number of channels of the output.
|
||||||
|
* If 0, inChannel is used.
|
||||||
|
* @exception Exception
|
||||||
|
*/
|
||||||
|
inline
|
||||||
|
AudioEncoder ( unsigned int inSampleRate,
|
||||||
|
unsigned int inBitsPerSample,
|
||||||
|
unsigned int inChannel,
|
||||||
|
bool inBigEndian,
|
||||||
|
double outQuality,
|
||||||
|
unsigned int outSampleRate = 0,
|
||||||
|
unsigned int outChannel = 0 )
|
||||||
|
throw ( Exception )
|
||||||
|
{
|
||||||
|
init ( inSampleRate,
|
||||||
|
inBitsPerSample,
|
||||||
|
inChannel,
|
||||||
|
inBigEndian,
|
||||||
|
0,
|
||||||
|
outQuality,
|
||||||
|
outSampleRate ? outSampleRate : inSampleRate,
|
||||||
|
outChannel ? outChannel : inChannel );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for fixed bitrate encoding.
|
||||||
*
|
*
|
||||||
* @param as get input sample rate, bits per sample and channels
|
* @param as get input sample rate, bits per sample and channels
|
||||||
* from this AudioSource.
|
* from this AudioSource.
|
||||||
* @param outBitrate bit rate of the output (bits/sec).
|
* @param outBitrate bit rate of the output (kbits/sec).
|
||||||
* @param outSampleRate sample rate of the output.
|
* @param outSampleRate sample rate of the output.
|
||||||
* If 0, input sample rate is used.
|
* If 0, input sample rate is used.
|
||||||
* @param outChannel number of channels of the output.
|
* @param outChannel number of channels of the output.
|
||||||
|
@ -205,6 +247,36 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
as->getChannel(),
|
as->getChannel(),
|
||||||
as->isBigEndian(),
|
as->isBigEndian(),
|
||||||
outBitrate,
|
outBitrate,
|
||||||
|
0.0,
|
||||||
|
outSampleRate ? outSampleRate : as->getSampleRate(),
|
||||||
|
outChannel ? outChannel : as->getChannel() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for variable bitrate encoding.
|
||||||
|
*
|
||||||
|
* @param as get input sample rate, bits per sample and channels
|
||||||
|
* from this AudioSource.
|
||||||
|
* @param outQuality the quality of the stream.
|
||||||
|
* @param outSampleRate sample rate of the output.
|
||||||
|
* If 0, input sample rate is used.
|
||||||
|
* @param outChannel number of channels of the output.
|
||||||
|
* If 0, input channel is used.
|
||||||
|
* @exception Exception
|
||||||
|
*/
|
||||||
|
inline
|
||||||
|
AudioEncoder ( const AudioSource * as,
|
||||||
|
double outQuality,
|
||||||
|
unsigned int outSampleRate = 0,
|
||||||
|
unsigned int outChannel = 0 )
|
||||||
|
throw ( Exception)
|
||||||
|
{
|
||||||
|
init( as->getSampleRate(),
|
||||||
|
as->getBitsPerSample(),
|
||||||
|
as->getChannel(),
|
||||||
|
as->isBigEndian(),
|
||||||
|
0,
|
||||||
|
outQuality,
|
||||||
outSampleRate ? outSampleRate : as->getSampleRate(),
|
outSampleRate ? outSampleRate : as->getSampleRate(),
|
||||||
outChannel ? outChannel : as->getChannel() );
|
outChannel ? outChannel : as->getChannel() );
|
||||||
}
|
}
|
||||||
|
@ -222,6 +294,7 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
encoder.inChannel,
|
encoder.inChannel,
|
||||||
encoder.inBigEndian,
|
encoder.inBigEndian,
|
||||||
encoder.outBitrate,
|
encoder.outBitrate,
|
||||||
|
encoder.outQuality,
|
||||||
encoder.outSampleRate,
|
encoder.outSampleRate,
|
||||||
encoder.outChannel );
|
encoder.outChannel );
|
||||||
}
|
}
|
||||||
|
@ -244,6 +317,7 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
encoder.inChannel,
|
encoder.inChannel,
|
||||||
encoder.inBigEndian,
|
encoder.inBigEndian,
|
||||||
encoder.outBitrate,
|
encoder.outBitrate,
|
||||||
|
encoder.outQuality,
|
||||||
encoder.outSampleRate,
|
encoder.outSampleRate,
|
||||||
encoder.outChannel );
|
encoder.outChannel );
|
||||||
}
|
}
|
||||||
|
@ -332,7 +406,8 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the bit rate of the output. (bits/sec)
|
* Get the bit rate of the output in kbits/sec, for fixed bitrate
|
||||||
|
* encodings.
|
||||||
*
|
*
|
||||||
* @return the bit rate of the output.
|
* @return the bit rate of the output.
|
||||||
*/
|
*/
|
||||||
|
@ -342,6 +417,30 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
return outBitrate;
|
return outBitrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the encoding quality of the output, for variable bitrate
|
||||||
|
* encodings.
|
||||||
|
*
|
||||||
|
* @return the encoding quality of the output.
|
||||||
|
*/
|
||||||
|
inline double
|
||||||
|
getOutQuality ( void ) const throw ()
|
||||||
|
{
|
||||||
|
return outQuality;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell if this encoding is fixed bitrate or variable bitrate.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if this encoding is variable bitrate,
|
||||||
|
* <code>false</code> if fixed bitrate.
|
||||||
|
*/
|
||||||
|
inline bool
|
||||||
|
isVBR ( void ) const throw ()
|
||||||
|
{
|
||||||
|
return outBitrate == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check wether encoding is in progress.
|
* Check wether encoding is in progress.
|
||||||
*
|
*
|
||||||
|
@ -385,6 +484,9 @@ class AudioEncoder : public Sink, public virtual Referable
|
||||||
$Source$
|
$Source$
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.6 2002/03/28 16:39:32 darkeye
|
||||||
|
added interface for variable bitrate encoding
|
||||||
|
|
||||||
Revision 1.5 2002/02/19 15:23:59 darkeye
|
Revision 1.5 2002/02/19 15:23:59 darkeye
|
||||||
fixed typo
|
fixed typo
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue