OpalTranscoder Class Reference

#include <transcoders.h>

Inheritance diagram for OpalTranscoder:
OpalMediaFormatPair OpalFramedTranscoder OpalStreamedTranscoder OpalEmptyFramedAudioTranscoder OpalPluginFramedAudioTranscoder Opal_G711_PCM Opal_Linear16Mono_PCM Opal_PCM_G711_ALaw Opal_PCM_G711_uLaw Opal_PCM_Linear16Mono OpalPluginStreamedAudioTranscoder

List of all members.

Public Member Functions

Construction

 OpalTranscoder (const OpalMediaFormat &inputMediaFormat, const OpalMediaFormat &outputMediaFormat)

Protected Attributes

PINDEX maxOutputSize
PNotifier commandNotifier
PMutex updateMutex
PBoolean outputIsRTP
PBoolean inputIsRTP
bool acceptEmptyPayload
bool acceptOtherPayloads

Operations



virtual bool UpdateMediaFormats (const OpalMediaFormat &inputMediaFormat, const OpalMediaFormat &outputMediaFormat)
virtual PBoolean ExecuteCommand (const OpalMediaCommand &command)
virtual PINDEX GetOptimalDataFrameSize (PBoolean input) const =0
virtual PBoolean ConvertFrames (const RTP_DataFrame &input, RTP_DataFrameList &output)
virtual PBoolean Convert (const RTP_DataFrame &input, RTP_DataFrame &output)=0
PINDEX GetMaxOutputSize () const
void SetMaxOutputSize (PINDEX size)
void SetCommandNotifier (const PNotifier &notifier)
const PNotifier & GetCommandNotifier () const
virtual void SetInstanceID (const BYTE *instance, unsigned instanceLen)
RTP_DataFrame::PayloadTypes GetPayloadType (PBoolean input) const
virtual bool AcceptComfortNoise () const
virtual bool AcceptEmptyPayload () const
virtual bool AcceptOtherPayloads () const
virtual void GetStatistics (OpalMediaStatistics &statistics) const
static OpalTranscoderCreate (const OpalMediaFormat &srcFormat, const OpalMediaFormat &dstFormat, const BYTE *instance=NULL, unsigned instanceLen=0)
static bool SelectFormats (const OpalMediaFormatList &srcFormats, const OpalMediaFormatList &dstFormats, const OpalMediaFormatList &allFormats, OpalMediaFormat &srcFormat, OpalMediaFormat &dstFormat)
static bool FindIntermediateFormat (const OpalMediaFormat &srcFormat, const OpalMediaFormat &dstFormat, OpalMediaFormat &intermediateFormat)
static OpalMediaFormatList GetDestinationFormats (const OpalMediaFormat &srcFormat)
static OpalMediaFormatList GetSourceFormats (const OpalMediaFormat &dstFormat)
static OpalMediaFormatList GetPossibleFormats (const OpalMediaFormatList &formats)

Detailed Description

This class embodies the implementation of a specific transcoder instance used to convert data from one format to another.

An application may create a descendent off this class and override functions as required for implementing a transcoder.


Constructor & Destructor Documentation

OpalTranscoder::OpalTranscoder ( const OpalMediaFormat inputMediaFormat,
const OpalMediaFormat outputMediaFormat 
)

Create a new transcoder implementation.

Parameters:
inputMediaFormat Input media format
outputMediaFormat Output media format

Member Function Documentation

virtual bool OpalTranscoder::AcceptComfortNoise (  )  const [inline, virtual]
virtual bool OpalTranscoder::AcceptEmptyPayload (  )  const [inline, virtual]

References acceptEmptyPayload.

virtual bool OpalTranscoder::AcceptOtherPayloads (  )  const [inline, virtual]

References acceptOtherPayloads.

virtual PBoolean OpalTranscoder::Convert ( const RTP_DataFrame input,
RTP_DataFrame output 
) [pure virtual]

Convert the data from one format to another. This function takes the input data as a RTP_DataFrame and converts it to its output format, placing it into the RTP_DataFrame provided.

Returns PFalse if the conversion fails.

Parameters:
input Input data
output Output data

Implemented in OpalFramedTranscoder, and OpalStreamedTranscoder.

virtual PBoolean OpalTranscoder::ConvertFrames ( const RTP_DataFrame input,
RTP_DataFrameList &  output 
) [virtual]

Convert the data from one format to another. This function takes the input data as a RTP_DataFrame and converts it to its output format, placing it (possibly) into multiple RTP_DataFrame objects.

The default behaviour makes sure the output list has only one element in it and calls the Convert() function.

Returns PFalse if the conversion fails.

Parameters:
input Input data
output Output data
static OpalTranscoder* OpalTranscoder::Create ( const OpalMediaFormat srcFormat,
const OpalMediaFormat dstFormat,
const BYTE *  instance = NULL,
unsigned  instanceLen = 0 
) [static]

Create an instance of a media conversion function. Returns NULL if there is no registered media transcoder between the two named formats.

Parameters:
srcFormat Name of source format
dstFormat Name of destination format
instance Unique instance identifier for transcoder
instanceLen Length of instance identifier
virtual PBoolean OpalTranscoder::ExecuteCommand ( const OpalMediaCommand command  )  [virtual]

Execute the command specified to the transcoder. The commands are highly context sensitive, for example VideoFastUpdate would only apply to a video transcoder.

The default behaviour simply returns PFalse.

Parameters:
command Command to execute.
static bool OpalTranscoder::FindIntermediateFormat ( const OpalMediaFormat srcFormat,
const OpalMediaFormat dstFormat,
OpalMediaFormat intermediateFormat 
) [static]

Find media intermediate format for transcoders. This function attempts to find the intermediate media format that will allow two transcoders to be used to get data from the source format to the destination format.

If there is a transcoder that can go directly from the source format to the destination format then the function returns true but the intermediateFormat parmaeter will be an invlid format.

Returns false if there is no registered media transcoder that can be used between the two named formats.

Parameters:
srcFormat Selected destination format to be used
dstFormat Selected destination format to be used
intermediateFormat Intermediate format that can be used
const PNotifier& OpalTranscoder::GetCommandNotifier (  )  const [inline]

Get the notifier to receive commands generated by the transcoder. The commands are highly context sensitive, for example VideoFastUpdate would only apply to a video transcoder.

References commandNotifier.

static OpalMediaFormatList OpalTranscoder::GetDestinationFormats ( const OpalMediaFormat srcFormat  )  [static]

Get a list of possible destination media formats for the destination.

Parameters:
srcFormat Selected source format
PINDEX OpalTranscoder::GetMaxOutputSize (  )  const [inline]

Get maximum output size.

References maxOutputSize.

virtual PINDEX OpalTranscoder::GetOptimalDataFrameSize ( PBoolean  input  )  const [pure virtual]

Get the optimal size for data frames to be converted. This function returns the size of frames that will be most efficient in conversion. A RTP_DataFrame will attempt to provide or use data in multiples of this size. Note that it may not do so, so the transcoder must be able to handle any sized packets.

Parameters:
input Flag for input or output data size

Implemented in OpalFramedTranscoder, and OpalStreamedTranscoder.

RTP_DataFrame::PayloadTypes OpalTranscoder::GetPayloadType ( PBoolean  input  )  const
Parameters:
input Flag for input or output data size
static OpalMediaFormatList OpalTranscoder::GetPossibleFormats ( const OpalMediaFormatList formats  )  [static]

Get a list of possible media formats that can do bi-directional media.

Parameters:
formats Destination format list
static OpalMediaFormatList OpalTranscoder::GetSourceFormats ( const OpalMediaFormat dstFormat  )  [static]

Get a list of possible source media formats for the destination.

Parameters:
dstFormat Selected destination format
virtual void OpalTranscoder::GetStatistics ( OpalMediaStatistics statistics  )  const [virtual]
static bool OpalTranscoder::SelectFormats ( const OpalMediaFormatList srcFormats,
const OpalMediaFormatList dstFormats,
const OpalMediaFormatList allFormats,
OpalMediaFormat srcFormat,
OpalMediaFormat dstFormat 
) [static]

Find media format(s) for transcoders. This function attempts to find and intermediate media format that will allow two transcoders to be used to get data from the source format to the destination format.

There could be many possible matches between the two lists, so preference is given to the order of the destination formats.

Returns PFalse if there is no registered media transcoder that can be used between the two named formats.

Parameters:
srcFormats Names of possible source formats
dstFormats Names of possible destination formats
allFormats Master list of formats for merging options
srcFormat Selected source format to be used
dstFormat Selected destination format to be used
void OpalTranscoder::SetCommandNotifier ( const PNotifier &  notifier  )  [inline]

Set a notifier to receive commands generated by the transcoder. The commands are highly context sensitive, for example VideoFastUpdate would only apply to a video transcoder.

Parameters:
notifier Command to execute.

References commandNotifier.

virtual void OpalTranscoder::SetInstanceID ( const BYTE *  instance,
unsigned  instanceLen 
) [virtual]

Set the unique instance identifier for transcoder

Parameters:
instance Unique instance identifier for transcoder
instanceLen Length of instance identifier
void OpalTranscoder::SetMaxOutputSize ( PINDEX  size  )  [inline]

Set the maximum output size.

References maxOutputSize.

virtual bool OpalTranscoder::UpdateMediaFormats ( const OpalMediaFormat inputMediaFormat,
const OpalMediaFormat outputMediaFormat 
) [virtual]

Update the input and output media formats. This can be used to adjust the parameters of a codec at run time. Note you cannot change the basic media format, eg change GSM0610 to G.711, only options for that format, eg 6k3 mode to 5k3 mode in G.723.1. If the formats are different then a OpalMediaFormat::Merge() is performed.

If a format is empty (invalid) it is ignored and does not update the internal variable. In this way only the input or output side can be updated.

The default behaviour updates the inputMediaFormat and outputMediaFormat member variables.

Parameters:
inputMediaFormat Input media format
outputMediaFormat Output media format

Reimplemented in OpalPluginFramedAudioTranscoder, OpalPluginStreamedAudioTranscoder, and OpalFramedTranscoder.


Member Data Documentation

Referenced by AcceptEmptyPayload().

Referenced by AcceptOtherPayloads().

PNotifier OpalTranscoder::commandNotifier [protected]
PBoolean OpalTranscoder::inputIsRTP [protected]
PINDEX OpalTranscoder::maxOutputSize [protected]
PBoolean OpalTranscoder::outputIsRTP [protected]
PMutex OpalTranscoder::updateMutex [protected]

The documentation for this class was generated from the following file:
Generated on Tue Jun 15 00:29:18 2010 for OPAL by  doxygen 1.6.3