OPAL  Version 3.14.3
H323Capability Class Referenceabstract

#include <h323caps.h>

Inheritance diagram for H323Capability:
Collaboration diagram for H323Capability:

Public Member Functions

Construction
 H323Capability ()
 
 H323Capability (const H323Capability &other)
 
H323Capabilityoperator= (const H323Capability &other)
 
 ~H323Capability ()
 
Overrides from class PObject
Comparison Compare (const PObject &obj) const
 
void PrintOn (ostream &strm) const
 

Protected Member Functions

OpalMediaFormatGetWritableMediaFormat () const
 

Protected Attributes

unsigned assignedCapabilityNumber
 
CapabilityDirection capabilityDirection
 Unique ID assigned to capability. More...
 
OpalMediaFormat m_mediaFormat
 

Friends

class H323Capabilities
 

Identification functions

enum  MainTypes {
  e_Audio, e_Video, e_Data, e_UserInput,
  e_GenericControl, e_H235Security, e_FEC, e_NumMainTypes
}
 
virtual MainTypes GetMainType () const =0
 
virtual unsigned GetSubType () const =0
 
virtual PString GetFormatName () const =0
 

Operations

enum  {
  DefaultAudioSessionID = 1, DefaultVideoSessionID = 2, DefaultDataSessionID = 3, MasterAllocatedBaseSessionID,
  DeferredSessionID = 1000000
}
 
virtual unsigned GetDefaultSessionID () const
 
virtual void SetTxFramesInPacket (unsigned frames)
 
virtual unsigned GetTxFramesInPacket () const
 
virtual unsigned GetRxFramesInPacket () const
 
virtual H323ChannelCreateChannel (H323Connection &connection, H323Channel::Directions dir, unsigned sessionID, const H245_H2250LogicalChannelParameters *param) const
 
static H323CapabilityCreate (const PString &name)
 

Protocol manipulation

enum  CommandType { e_TCS, e_OLC, e_ReqMode }
 
virtual PBoolean OnSendingPDU (H245_Capability &pdu) const =0
 
virtual PBoolean OnSendingPDU (H245_DataType &pdu) const
 
virtual PBoolean OnSendingPDU (H245_ModeElement &pdu) const
 
virtual PBoolean OnReceivedPDU (const H245_Capability &pdu)
 
virtual PBoolean OnReceivedPDU (const H245_DataType &pdu, PBoolean receiver)
 
virtual PBoolean IsMatch (const PASN_Object &subTypePDU, const PString &mediaPacketization) const
 
virtual PBoolean IsUsable (const H323Connection &connection) const
 

Member variable access

enum  CapabilityDirection {
  e_Unknown, e_Receive, e_Transmit, e_ReceiveAndTransmit,
  e_NoDirection, NumCapabilityDirections
}
 
CapabilityDirection GetCapabilityDirection () const
 
void SetCapabilityDirection (CapabilityDirection dir)
 
unsigned GetCapabilityNumber () const
 Get unique capability number. More...
 
void SetCapabilityNumber (unsigned num)
 Set unique capability number. More...
 
OpalMediaFormat GetMediaFormat () const
 
bool UpdateMediaFormat (const OpalMediaFormat &format)
 
RTP_DataFrame::PayloadTypes GetPayloadType () const
 Get the payload type for the capaibility. More...
 
void SetPayloadType (RTP_DataFrame::PayloadTypes pt)
 Set the payload type for the capaibility. More...
 

Detailed Description

This class describes the interface to a capability of the endpoint, usually a codec, used to transfer data via the logical channels opened and managed by the H323 control channel.

Note that this is not an instance of the codec itself. Merely the description of that codec. There is typically only one instance of this class contained in the capability tables of the endpoint. There may be several instances of the actualy codec managing the conversion of an individual stream of data.

An application may create a descendent off this class and override functions as required for describing a codec that it implements.

Member Enumeration Documentation

anonymous enum
Enumerator
DefaultAudioSessionID 
DefaultVideoSessionID 
DefaultDataSessionID 
MasterAllocatedBaseSessionID 
DeferredSessionID 
Enumerator
e_Unknown 
e_Receive 

Receive capability.

e_Transmit 

Transmit only capability.

e_ReceiveAndTransmit 

Symmetric capability.

e_NoDirection 

Ca;ability type has no direction.

NumCapabilityDirections 
Enumerator
e_TCS 
e_OLC 
e_ReqMode 
Enumerator
e_Audio 

Audio codec capability.

e_Video 

Video codec capability.

e_Data 

Arbitrary data capability.

e_UserInput 

User Input capability.

e_GenericControl 

Generic Control.

e_H235Security 

H.235 security capability.

e_FEC 

Forward Error Correction.

e_NumMainTypes 

Count of main types.

Constructor & Destructor Documentation

H323Capability::H323Capability ( )

Create a new capability specification.

H323Capability::H323Capability ( const H323Capability other)
H323Capability::~H323Capability ( )

Destroy capability.

Member Function Documentation

Comparison H323Capability::Compare ( const PObject &  obj) const

Compare two capability instances. This compares the main and sub-types of the capability.

static H323Capability* H323Capability::Create ( const PString &  name)
static

Create an H323Capability descendant given a string name. This uses the registration system to create the capability.

Parameters
nameName of capability
virtual H323Channel* H323Capability::CreateChannel ( H323Connection connection,
H323Channel::Directions  dir,
unsigned  sessionID,
const H245_H2250LogicalChannelParameters *  param 
) const
virtual

Create the channel instance, allocating resources as required. This creates a logical channel object appropriate for the parameters provided. Not if param is NULL, sessionID must be provided, otherwise this is taken from the fields in param.

Parameters
connectionOwner connection for channel
dirDirection of channel
sessionIDSession ID for RTP channel
paramParameters for channel

Reimplemented in H323RealTimeCapability, and H323_T120Capability.

CapabilityDirection H323Capability::GetCapabilityDirection ( ) const
inline

Get the direction for this capability.

References capabilityDirection.

unsigned H323Capability::GetCapabilityNumber ( ) const
inline

Get unique capability number.

References assignedCapabilityNumber.

virtual unsigned H323Capability::GetDefaultSessionID ( ) const
virtual

Get the default RTP session. This function gets the default RTP session ID for the capability type. For example audio capabilities return the value H323Capability::DefaultAudioSessionID etc.

The default behaviour returns zero, indicating it is not an RTP based capability.

Reimplemented in H323DataCapability, H323VideoCapability, and H323AudioCapability.

virtual MainTypes H323Capability::GetMainType ( ) const
pure virtual

Get the main type of the capability.

This function is overridden by one of the three main sub-classes off which real capabilities would be descendend.

Implemented in H323_UserInputCapability, H323DataCapability, H323GenericControlCapability, H323VideoCapability, and H323AudioCapability.

OpalMediaFormat H323Capability::GetMediaFormat ( ) const

Get media format of the media data this class represents.

Referenced by GetPayloadType().

RTP_DataFrame::PayloadTypes H323Capability::GetPayloadType ( ) const
inline

Get the payload type for the capaibility.

References GetMediaFormat(), and OpalMediaFormat::GetPayloadType().

virtual unsigned H323Capability::GetRxFramesInPacket ( ) const
virtual

Get the maximum size (in frames) of data that can be received in a single PDU.

The default behaviour returns the value 1.

Reimplemented in H323AudioCapability.

virtual unsigned H323Capability::GetTxFramesInPacket ( ) const
virtual

Get the maximum size (in frames) of data that will be transmitted in a single PDU.

The default behaviour returns the value 1.

Reimplemented in H323AudioCapability.

OpalMediaFormat& H323Capability::GetWritableMediaFormat ( ) const
protected

Referenced by SetPayloadType().

virtual PBoolean H323Capability::IsMatch ( const PASN_Object &  subTypePDU,
const PString &  mediaPacketization 
) const
virtual
virtual PBoolean H323Capability::IsUsable ( const H323Connection connection) const
virtual

Validate that the capability is usable given the connection. This checks agains the negotiated protocol version number and remote application to determine if this capability should be used in TCS or OLC pdus.

The default behaviour returns true.

Reimplemented in H323_UserInputCapability.

virtual PBoolean H323Capability::OnReceivedPDU ( const H245_Capability &  pdu)
virtual

This function is called whenever and incoming TerminalCapabilitySet PDU is received on the control channel, and a new H323Capability descendent was created. This completes reading fields from the PDU into the classes members.

If the function returns false then the received PDU codec description is not supported, so will be ignored.

The default behaviour sets the capabilityDirection member variable from the PDU and then returns true. Note that this means it is very important to call the ancestor function when overriding.

Parameters
pduPDU to get information from

Reimplemented in H323_UserInputCapability, H323DataCapability, H323GenericControlCapability, H323VideoCapability, and H323AudioCapability.

virtual PBoolean H323Capability::OnReceivedPDU ( const H245_DataType &  pdu,
PBoolean  receiver 
)
virtual

This function is called whenever and incoming OpenLogicalChannel PDU has been used to construct the control channel. It allows the capability to set from the PDU fields, information in members specific to the class.

The default behaviour is pure.

Parameters
pduPDU to get information from
receiverIs receiver OLC

Reimplemented in H323_UserInputCapability, H323DataCapability, H323VideoCapability, and H323AudioCapability.

virtual PBoolean H323Capability::OnSendingPDU ( H245_Capability &  pdu) const
pure virtual

This function is called whenever and outgoing TerminalCapabilitySet PDU is being constructed for the control channel. It allows the capability to set the PDU fields from information in members specific to the class.

The default behaviour is pure.

Parameters
pduPDU to set information on

Implemented in H323_UserInputCapability, H323DataCapability, H323GenericControlCapability, H323VideoCapability, and H323AudioCapability.

virtual PBoolean H323Capability::OnSendingPDU ( H245_DataType &  pdu) const
virtual

This function is called whenever and outgoing OpenLogicalChannel PDU is being constructed for the control channel. It allows the capability to set the PDU fields from information in members specific to the class.

The default behaviour is pure.

Parameters
pduPDU to set information on

Reimplemented in H323_UserInputCapability, H323DataCapability, H323VideoCapability, and H323AudioCapability.

virtual PBoolean H323Capability::OnSendingPDU ( H245_ModeElement &  pdu) const
virtual

This function is called whenever and outgoing RequestMode PDU is being constructed for the control channel. It allows the capability to set the PDU fields from information in members specific to the class.

The default behaviour is pure.

Parameters
pduPDU to set information on

Reimplemented in H323DataCapability, H323VideoCapability, and H323AudioCapability.

H323Capability& H323Capability::operator= ( const H323Capability other)
void H323Capability::PrintOn ( ostream &  strm) const

Print out the object to the stream, virtual version of << operator.

void H323Capability::SetCapabilityDirection ( CapabilityDirection  dir)
inline

Set the direction for this capability.

Parameters
dirNew direction code

References capabilityDirection.

void H323Capability::SetCapabilityNumber ( unsigned  num)
inline

Set unique capability number.

References assignedCapabilityNumber.

void H323Capability::SetPayloadType ( RTP_DataFrame::PayloadTypes  pt)
inline

Set the payload type for the capaibility.

References GetWritableMediaFormat(), and OpalMediaFormat::SetPayloadType().

virtual void H323Capability::SetTxFramesInPacket ( unsigned  frames)
virtual

Set the maximum size (in frames) of data that will be transmitted in a single PDU.

This will also be the desired number that will be sent by most codec implemetations.

The default behaviour does nothing.

Parameters
framesNumber of frames per packet

Reimplemented in H323AudioCapability.

bool H323Capability::UpdateMediaFormat ( const OpalMediaFormat format)

Set media format option for the media data this class represents.

Friends And Related Function Documentation

friend class H323Capabilities
friend

Field Documentation

unsigned H323Capability::assignedCapabilityNumber
protected
CapabilityDirection H323Capability::capabilityDirection
protected

Unique ID assigned to capability.

Referenced by GetCapabilityDirection(), and SetCapabilityDirection().

OpalMediaFormat H323Capability::m_mediaFormat
mutableprotected

The documentation for this class was generated from the following file: