#include <transcoders.h>
Inheritance diagram for OpalTranscoder:
Operations | |
virtual BOOL | UpdateOutputMediaFormat (const OpalMediaFormat &mediaFormat) |
virtual BOOL | ExecuteCommand (const OpalMediaCommand &command) |
virtual PINDEX | GetOptimalDataFrameSize (BOOL input) const=0 |
virtual BOOL | ConvertFrames (const RTP_DataFrame &input, RTP_DataFrameList &output) |
virtual BOOL | Convert (const RTP_DataFrame &input, RTP_DataFrame &output)=0 |
static OpalTranscoder * | Create (const OpalMediaFormat &srcFormat, const OpalMediaFormat &dstFormat, const BYTE *instance=NULL, unsigned instanceLen=0) |
static BOOL | SelectFormats (unsigned sessionID, const OpalMediaFormatList &srcFormats, const OpalMediaFormatList &dstFormats, OpalMediaFormat &srcFormat, OpalMediaFormat &dstFormat) |
static BOOL | FindIntermediateFormat (OpalMediaFormat &srcFormat, OpalMediaFormat &dstFormat, OpalMediaFormat &intermediateFormat) |
static OpalMediaFormatList | GetDestinationFormats (const OpalMediaFormat &srcFormat) |
static OpalMediaFormatList | GetSourceFormats (const OpalMediaFormat &dstFormat) |
static OpalMediaFormatList | GetPossibleFormats (const OpalMediaFormatList &formats) |
Public Member Functions | |
Operations | |
PINDEX | GetMaxOutputSize () const |
void | SetMaxOutputSize (PINDEX size) |
void | SetCommandNotifier (const PNotifier ¬ifier) |
const PNotifier & | GetCommandNotifier () const |
virtual void | SetInstanceID (const BYTE *instance, unsigned instanceLen) |
void | SetRTPPayloadMap (const RTP_DataFrame::PayloadMapType &v) |
void | AddRTPPayloadMapping (RTP_DataFrame::PayloadTypes from, RTP_DataFrame::PayloadTypes to) |
RTP_DataFrame::PayloadTypes | GetPayloadType (BOOL input) const |
Protected Attributes | |
PINDEX | maxOutputSize |
bool | outputMediaFormatUpdated |
PNotifier | commandNotifier |
PMutex | updateMutex |
RTP_DataFrame::PayloadMapType | payloadTypeMap |
BOOL | outputIsRTP |
BOOL | inputIsRTP |
An application may create a descendent off this class and override functions as required for implementing a transcoder.
OpalTranscoder::OpalTranscoder | ( | const OpalMediaFormat & | inputMediaFormat, | |
const OpalMediaFormat & | outputMediaFormat | |||
) |
Create a new transcoder implementation.
inputMediaFormat | Input media format |
outputMediaFormat | Output media format |
OpalTranscoder::OpalTranscoder | ( | const OpalMediaFormat & | inputMediaFormat, | |
const OpalMediaFormat & | outputMediaFormat | |||
) |
Create a new transcoder implementation.
inputMediaFormat | Input media format |
outputMediaFormat | Output media format |
virtual BOOL OpalTranscoder::UpdateOutputMediaFormat | ( | const OpalMediaFormat & | mediaFormat | ) | [virtual] |
Update the output media format. 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.
The default behaviour updates the outputMediaFormat member variable and sets the outputMediaFormatUpdated flag.
mediaFormat | New media format |
Reimplemented in OpalVideoTranscoder.
virtual BOOL 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 FALSE.
command | Command to execute. |
Reimplemented in OpalVideoTranscoder.
virtual PINDEX OpalTranscoder::GetOptimalDataFrameSize | ( | BOOL | 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.
input | Flag for input or output data size |
Implemented in OpalUncompVideoTranscoder, OpalFramedTranscoder, and OpalStreamedTranscoder.
virtual BOOL 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 FALSE if the conversion fails.
input | Input data |
output | Output data |
Reimplemented in OpalRFC4175Encoder, OpalRFC4175Decoder, and OpalUncompVideoTranscoder.
virtual BOOL 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 FALSE if the conversion fails.
input | Input data |
output | Output data |
Implemented in OpalVideoTranscoder, OpalFramedTranscoder, and OpalStreamedTranscoder.
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.
srcFormat | Name of source format |
dstFormat | Name of destination format |
instance | Unique instance identifier for transcoder |
instanceLen | Length of instance identifier |
static BOOL OpalTranscoder::SelectFormats | ( | unsigned | sessionID, | |
const OpalMediaFormatList & | srcFormats, | |||
const OpalMediaFormatList & | dstFormats, | |||
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 FALSE if there is no registered media transcoder that can be used between the two named formats.
sessionID | Session ID for media formats |
srcFormats | Names of possible source formats |
dstFormats | Names of possible destination formats |
srcFormat | Selected source format to be used |
dstFormat | Selected destination format to be used |
static BOOL OpalTranscoder::FindIntermediateFormat | ( | OpalMediaFormat & | srcFormat, | |
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.
Returns FALSE if there is no registered media transcoder that can be used between the two named formats.
srcFormat | Selected destination format to be used |
dstFormat | Selected destination format to be used |
intermediateFormat | Intermediate format that can be used |
static OpalMediaFormatList OpalTranscoder::GetDestinationFormats | ( | const OpalMediaFormat & | srcFormat | ) | [static] |
Get a list of possible destination media formats for the destination.
srcFormat | Selected source format |
static OpalMediaFormatList OpalTranscoder::GetSourceFormats | ( | const OpalMediaFormat & | dstFormat | ) | [static] |
Get a list of possible source media formats for the destination.
dstFormat | Selected destination format |
static OpalMediaFormatList OpalTranscoder::GetPossibleFormats | ( | const OpalMediaFormatList & | formats | ) | [static] |
Get a list of possible media formats that can do bi-directional media.
formats | Destination format list |
PINDEX OpalTranscoder::GetMaxOutputSize | ( | ) | const [inline] |
Get maximum output size.
void OpalTranscoder::SetMaxOutputSize | ( | PINDEX | size | ) | [inline] |
Set the maximum output size.
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.
notifier | Command to execute. |
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.
virtual void OpalTranscoder::SetInstanceID | ( | const BYTE * | instance, | |
unsigned | instanceLen | |||
) | [virtual] |
Set the unique instance identifier for transcoder
instance | Unique instance identifier for transcoder |
instanceLen | Length of instance identifier |
void OpalTranscoder::SetRTPPayloadMap | ( | const RTP_DataFrame::PayloadMapType & | v | ) | [inline] |
void OpalTranscoder::AddRTPPayloadMapping | ( | RTP_DataFrame::PayloadTypes | from, | |
RTP_DataFrame::PayloadTypes | to | |||
) | [inline] |
RTP_DataFrame::PayloadTypes OpalTranscoder::GetPayloadType | ( | BOOL | input | ) | const |
input | Flag for input or output data size |
PINDEX OpalTranscoder::maxOutputSize [protected] |
bool OpalTranscoder::outputMediaFormatUpdated [protected] |
PNotifier OpalTranscoder::commandNotifier [protected] |
PMutex OpalTranscoder::updateMutex [protected] |
BOOL OpalTranscoder::outputIsRTP [protected] |
BOOL OpalTranscoder::inputIsRTP [protected] |