Source: audioencoderrepository.h
|
|
|
|
// ##########################################################################
// #### ####
// #### RTP Audio Server Project ####
// #### ============================ ####
// #### ####
// #### Audio Encoder Repository ####
// #### ####
// #### 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 AUDIOENCODERREPOSITORY_H
#define AUDIOENCODERREPOSITORY_H
#include "system.h"
#include "synchronizable.h"
#include "encoderrepositoryinterface.h"
#include "audioencoderinterface.h"
#include <multimap.h>
#include <algo.h>
namespace Coral {
/**
* This class is a repository for audio encoders.
*
* @short Audio Encoder Repository
* @author Thomas Dreibholz (Dreibholz@bigfoot.com)
* @version 1.0
*/
class AudioEncoderRepository : virtual public EncoderRepositoryInterface,
virtual public AudioEncoderInterface
{
// ====== Constructor/Destructor =========================================
public:
/**
* Constructor.
*/
AudioEncoderRepository();
/**
* Destructor.
*/
~AudioEncoderRepository();
// ====== Repository functionality =======================================
/**
* Add audio encoder to repository.
*
* @param encoder New audio encoder to be added.
* @return true, if encoder has been added; false, if not.
*/
bool addEncoder(AudioEncoderInterface* encoder);
/**
* Remove audio encoder from repository.
*
* @param encoder Audio encoder to be removed.
*/
void removeEncoder(AudioEncoderInterface* encoder);
/**
* selectEncoderForTypeID() implementation of EncoderRepositoryInterface.
*
* @see EncoderRepositoryInterface#selectEncoderForTypeID
*/
bool selectEncoderForTypeID(const card16 typeID);
/**
* Set AutoDelete mode. If true, all encoders will be deleted with delete
* operator by the destructor.
*/
inline void setAutoDelete(const bool on);
/**
* getCurrentEncoder() implementation of EncoderRepositoryInterface.
*
* @see EncoderRepositoryInterface#getCurrentEncoder
*/
EncoderInterface* getCurrentEncoder() const;
/**
* Get AudioEncoderInterface of the current encoder.
*
* @return Current encoder's AudioEncoderInterface.
*/
AudioEncoderInterface* getCurrentAudioEncoder() const;
// ====== 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);
// ====== AudioEncoderInterface implementation ===========================
/**
* getSamplingRate() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#getSamplingRate
*/
card16 getSamplingRate() const;
/**
* getBits() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#getBits
*/
card8 getBits() const;
/**
* getChannels() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#getChannels
*/
card8 getChannels() const;
/**
* getByteOrder() Implementation of AudioEncoderInterface.
*
* @see AudioEncoderInterface#getByteOrder
*/
card16 getByteOrder() const;
/**
* getBytesPerSecond() implementation of AudioEncoderInterface.
*
* @see AudioEncoderInterface#getBytesPerSecond
*/
cardinal getBytesPerSecond() const;
/**
* getBitsPerSample() implementation of AudioEncoderInterface.
*
* @see AudioEncoderInterface#getBitsPerSample
*/
cardinal getBitsPerSample() const;
/**
* setSamplingRate() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#setSamplingRate
*/
card16 setSamplingRate(const card16 rate);
/**
* setBits() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#setBits
*/
card8 setBits(const card8 bits);
/**
* setChannels() implementation of AudioEncoderInterface
*
* @see AudioEncoderInterface#setChannels
*/
card8 setChannels(const card8 channels);
/**
* setByteOrder() Implementation of AudioEncoderInterface.
*
* @see AudioEncoderInterface#setByteOrder
*/
card16 setByteOrder(const card16 byteOrder);
// ====== Private data ===================================================
private:
multimap<const card16,AudioEncoderInterface*> AudioEncoderRepository;
AudioEncoderInterface* Encoder;
bool AutoDelete;
};
}
#include "audioencoderrepository.icc"
#endif
Generated by: viper@odin on Sun Feb 4 18:54:51 2001, using kdoc 2.0a22. |