Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

H323Capability Class Reference

#include <h323caps.h>

Inheritance diagram for H323Capability:

H323_UserInputCapability H323DataCapability H323RealTimeCapability H323_T120Capability H323_T38Capability H323NonStandardDataCapability H323AudioCapability H323VideoCapability H323_T38NonStandardCapability G7231_File_Capability H323_G711Capability H323_LIDCapability H323NonStandardAudioCapability OpalDynaCodecStandardAudioCapability H323_H261Capability H323NonStandardVideoCapability OpalDynaCodecStandardVideoCapability List of all members.

Identification functions

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

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.
void SetCapabilityNumber (unsigned num)
 Set unique capability number.
RTP_DataFrame::PayloadTypes GetPayloadType () const
 Get the payload type for the capaibility.
virtual void AttachQoS (RTP_QOS *)
 Attach a QoS specification to this channel.

Operations

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 =0
virtual H323CodecCreateCodec (H323Codec::Direction direction) const =0
static H323CapabilityCreate (const PString &name)
static H323CapabilityCreate (H323EndPoint &, const PString &name)

Public Member Functions

Construction
 H323Capability ()
Overrides from class PObject
Comparison Compare (const PObject &obj) const
void PrintOn (ostream &strm) const
Protocol manipulation
virtual BOOL OnSendingPDU (H245_Capability &pdu) const =0
virtual BOOL OnSendingPDU (H245_DataType &pdu) const =0
virtual BOOL OnSendingPDU (H245_ModeElement &pdu) const =0
virtual BOOL OnReceivedPDU (const H245_Capability &pdu)
virtual BOOL OnReceivedPDU (const H245_DataType &pdu, BOOL receiver)=0
virtual BOOL IsNonStandardMatch (const H245_NonStandardParameter &param) const
virtual BOOL IsUsable (const H323Connection &connection) const

Protected Attributes

unsigned assignedCapabilityNumber
CapabilityDirection capabilityDirection
 Unique ID assigned to capability.
RTP_DataFrame::PayloadTypes rtpPayloadType

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

enum H323Capability::CapabilityDirection
 

Enumerator:
e_Unknown 
e_Receive 
e_Transmit 
e_ReceiveAndTransmit 
e_NoDirection 
NumCapabilityDirections 

enum H323Capability::MainTypes
 

Enumerator:
e_Audio  Audio codec capability.
e_Video  Video codec capability.
e_Data  Arbitrary data capability.
e_UserInput  User Input capability.
e_NumMainTypes  Count of main types.


Constructor & Destructor Documentation

H323Capability::H323Capability  ) 
 

Create a new capability specification.


Member Function Documentation

virtual void H323Capability::AttachQoS RTP_QOS *   )  [inline, virtual]
 

Attach a QoS specification to this channel.

Reimplemented in H323RealTimeCapability.

Comparison H323Capability::Compare const PObject &  obj  )  const
 

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

Reimplemented in H323_H261Capability, H323NonStandardAudioCapability, H323NonStandardVideoCapability, H323NonStandardDataCapability, H323_T38Capability, and H323_LIDCapability.

static H323Capability* H323Capability::Create H323EndPoint ,
const PString &  name
[inline, static]
 

provided for backwards compatibility

Parameters:
name  endpoint (not used) Name of 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:
name  Name of capability

virtual H323Channel* H323Capability::CreateChannel H323Connection connection,
H323Channel::Directions  dir,
unsigned  sessionID,
const H245_H2250LogicalChannelParameters param
const [pure 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:
dir  Owner connection for channel
sessionID  Direction of channel
param  Session ID for RTP channel Parameters for channel

Implemented in H323RealTimeCapability, H323_UserInputCapability, H323_T120Capability, H323_T38Capability, and H323_T38NonStandardCapability.

virtual H323Codec* H323Capability::CreateCodec H323Codec::Direction  direction  )  const [pure virtual]
 

Create the codec instance, allocating resources as required.

Parameters:
direction  Direction in which this instance runs

Implemented in H323_Cu30Capability, OpalDynaCodecNonStandardAudioCapability, OpalDynaCodecStandardAudioCapability, OpalDynaCodecStandardVideoCapability, H323_H261Capability, H323DataCapability, H323_G711Capability, H323_UserInputCapability, H323_LIDCapability, H323_CiscoG7231aLIDCapability, and G7231_File_Capability.

CapabilityDirection H323Capability::GetCapabilityDirection  )  const [inline]
 

Get the direction for this capability.

unsigned H323Capability::GetCapabilityNumber  )  const [inline]
 

Get unique capability number.

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 RTP_Session::DefaultAudioSessionID etc.

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

Reimplemented in H323AudioCapability, H323VideoCapability, and H323DataCapability.

virtual PString H323Capability::GetFormatName  )  const [pure virtual]
 

Get the name of the media data format this class represents.

Implemented in H323_Cu30Capability, OpalDynaCodecNonStandardAudioCapability, OpalDynaCodecStandardAudioCapability, OpalDynaCodecStandardVideoCapability, H323_H261Capability, H323_G711Capability, H323_UserInputCapability, H323_T120Capability, H323_T38Capability, H323_T38NonStandardCapability, H323_LIDCapability, H323_CiscoG7231aLIDCapability, and G7231_File_Capability.

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 H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

RTP_DataFrame::PayloadTypes H323Capability::GetPayloadType  )  const [inline]
 

Get the payload type for the capaibility.

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::GetSubType  )  const [pure virtual]
 

Get the sub-type of the capability. This is a code dependent on the main type of the capability.

Implemented in OpalDynaCodecStandardAudioCapability, OpalDynaCodecStandardVideoCapability, H323_H261Capability, H323NonStandardAudioCapability, H323NonStandardVideoCapability, H323NonStandardDataCapability, H323_G711Capability, H323_UserInputCapability, H323_T120Capability, H323_T38Capability, H323_LIDCapability, and G7231_File_Capability.

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.

virtual BOOL H323Capability::IsNonStandardMatch const H245_NonStandardParameter param  )  const [virtual]
 

Compare the nonStandardData part of the capability, if applicable.

Parameters:
param  Non standard field in PDU received

Reimplemented in H323NonStandardAudioCapability, H323NonStandardVideoCapability, and H323NonStandardDataCapability.

virtual BOOL 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 BOOL H323Capability::OnReceivedPDU const H245_DataType pdu,
BOOL  receiver
[pure 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:
receiver  PDU to get information from Is receiver OLC

Implemented in H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

virtual BOOL 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:
pdu  PDU to get information from

Reimplemented in H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

virtual BOOL H323Capability::OnSendingPDU H245_ModeElement pdu  )  const [pure 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:
pdu  PDU to set information on

Implemented in H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

virtual BOOL H323Capability::OnSendingPDU H245_DataType pdu  )  const [pure 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:
pdu  PDU to set information on

Implemented in H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

virtual BOOL 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:
pdu  PDU to set information on

Implemented in H323AudioCapability, H323VideoCapability, H323DataCapability, and H323_UserInputCapability.

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:
dir  New direction code

void H323Capability::SetCapabilityNumber unsigned  num  )  [inline]
 

Set unique capability number.

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:
frames  Number of frames per packet

Reimplemented in H323AudioCapability.


Member Data Documentation

unsigned H323Capability::assignedCapabilityNumber [protected]
 

CapabilityDirection H323Capability::capabilityDirection [protected]
 

Unique ID assigned to capability.

RTP_DataFrame::PayloadTypes H323Capability::rtpPayloadType [protected]
 


The documentation for this class was generated from the following file:
Generated on Mon Sep 26 15:45:21 2005 for OpenH323 by  doxygen 1.4.4