Source: advancedaudioencoder.h


Annotated List
Files
Globals
Hierarchy
Index
// ##########################################################################
// ####                                                                  ####
// ####                      RTP Audio Server Project                    ####
// ####                    ============================                  ####
// ####                                                                  ####
// #### Advanced Audio Encoder                                           ####
// ####                                                                  ####
// #### Version 1.00  --  February 04, 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 Sun Feb 4 18:54:51 2001, using kdoc 2.0a22.