Source: advancedaudioencoder.h
|
|
|
|
// ##########################################################################
// #### ####
// #### RTP Audio Server Project ####
// #### ============================ ####
// #### ####
// #### Advanced Audio Encoder ####
// #### ####
// #### Version 1.00 -- February 23, 2001 ####
// #### ####
// #### Copyright (C) 1999 Thomas Dreibholz ####
// #### 2000 Universität Bonn, Abt. IV ####
// #### 2001 EMail: Dreibholz@bigfoot.com ####
// #### WWW: http://www.bigfoot.com/~dreibholz ####
// #### ####
// ##########################################################################
#ifndef ADVANCEDAUDIOENCODER_H
#define ADVANCEDAUDIOENCDOER_H
#include "system.h"
#include "audioencoderinterface.h"
#include "audioreaderinterface.h"
#include "audioquality.h"
namespace Coral {
/**
* This class is an advanced audio encoder. It does error correction by
* using nearly redundant data of left and right channel to "reconstruct"
* the full data.
*
* @short Advanced Audio Encoder
* @author Thomas Dreibholz (Dreibholz@bigfoot.com)
* @version 1.0
*/
class AdvancedAudioEncoder : public AudioEncoderInterface,
public AudioQuality
{
// ====== Constructor/Destructor =========================================
public:
/**
* Constructor for the audio encoder.
*
* @param audioReader AudioReaderInterface for the audio input.
*/
AdvancedAudioEncoder(AudioReaderInterface* audioReader);
/**
* Destructor.
*/
~AdvancedAudioEncoder();
// ====== EncoderInterface implementation ================================
/**
* getTypeID() implementation of EncoderInterface.
*
* @see EncoderInterface#getTypeID
*/
const card16 getTypeID() const;
/**
* getTypeName implementation of EncoderInterface.
*
* @see EncoderInterface#getTypeName
*/
const char* getTypeName() const;
/**
* activate() implementation of EncoderInterface.
*
* @see EncoderInterface#activate
*/
void activate();
/**
* deactivate() implementation of EncoderInterface.
*
* @see EncoderInterface#deactivate
*/
void deactivate();
/**
* reset() implementation of EncoderInterface.
*
* @see EncoderInterface#reset
*/
void reset();
/**
* prepareNextFrame() implementation of EncoderInterface.
*
* @see EncoderInterface#prepareNextFrame
*/
bool prepareNextFrame(const cardinal headerSize,
const cardinal maxPacketSize,
const cardinal flags);
/**
* getNextPacket() implementation of EncoderInterface.
*
* @see EncoderInterface#getNextPacket
*/
cardinal getNextPacket(EncoderPacket* encoderPacket);
/**
* adaptQuality() implementation of EncoderInterface.
*
* @see EncoderInterface#adaptQuality
*/
void adaptQuality(const double fractionLost,
const cardinal layer);
/**
* getTransportInfo() implementation of EncoderInterface.
*
* @see EncoderInterface#getTransportInfo
*/
void getTransportInfo(TransportInfo& transportInfo,
const cardinal headerSize,
const cardinal maxPacketSize,
const bool calculateLevels) const;
/**
* setTransportInfo() implementation of EncoderInterface.
*
* @see EncoderInterface#setTransportInfo
*/
void setTransportInfo(TransportInfo& transportInfo,
const cardinal headerSize,
const cardinal maxPacketSize,
const bool calculateLevels);
// ====== Private data ===================================================
private:
AudioReaderInterface* Source;
card64 FramePosition; // Current frame
card64 FrameMaxPosition;
AudioQuality FrameQualitySetting;
card8* FrameBufferLL;
card8* FrameBufferRL;
card8* FrameBufferLU;
card8* FrameBufferRU;
cardinal FrameBufferPosLL;
cardinal FrameBufferPosRL;
cardinal FrameBufferPosLU;
cardinal FrameBufferPosRU;
cardinal FrameFragmentLL;
cardinal FrameFragmentRL;
cardinal FrameFragmentLU;
cardinal FrameFragmentRU;
cardinal FrameBufferSizeLL;
cardinal FrameBufferSizeRL;
cardinal FrameBufferSizeLU;
cardinal FrameBufferSizeRU;
cardinal FrameLayerLL;
cardinal FrameLayerRL;
cardinal FrameLayerLU;
cardinal FrameLayerRU;
integer MediaInfoCounter;
card64 TotalByteRateLimit;
card64 ByteRateLimitL1;
card64 ByteRateLimitL2;
card64 ByteRateLimitL3;
cardinal NetworkQualityDecrement;
cardinal SendError;
cardinal SentError;
card8 ErrorCode;
};
}
#endif
Generated by: viper@odin on Fri Feb 23 12:41:26 2001, using kdoc 2.0a36. |