OpalMediaStream Class Reference

#include <mediastrm.h>

Inheritance diagram for OpalMediaStream:

OpalIAX2MediaStream OpalLineMediaStream OpalNullMediaStream OpalRawMediaStream OpalRTPMediaStream OpalVideoMediaStream OpalAudioMediaStream OpalFileMediaStream List of all members.

Construction

 ~OpalMediaStream ()
 OpalMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, BOOL isSource)

Public Member Functions

PMutex & GetDeleteMutex () const
Overrides from PObject
void PrintOn (ostream &strm) const
Operations
virtual OpalMediaFormat GetMediaFormat () const
virtual BOOL UpdateMediaFormat (const OpalMediaFormat &mediaFormat)
virtual BOOL ExecuteCommand (const OpalMediaCommand &command)
virtual void SetCommandNotifier (const PNotifier &notifier)
virtual BOOL Open ()
virtual BOOL Start ()
virtual BOOL Close ()
virtual BOOL WritePackets (RTP_DataFrameList &packets)
virtual BOOL ReadPacket (RTP_DataFrame &packet)
virtual BOOL WritePacket (RTP_DataFrame &packet)
virtual BOOL ReadData (BYTE *data, PINDEX size, PINDEX &length)
virtual BOOL WriteData (const BYTE *data, PINDEX length, PINDEX &written)
virtual BOOL SetDataSize (PINDEX dataSize)
PINDEX GetDataSize () const
virtual BOOL IsSynchronous () const =0
virtual BOOL RequiresPatchThread () const
virtual void EnableJitterBuffer () const
Member variable access
BOOL IsSource () const
BOOL IsSink () const
unsigned GetSessionID () const
unsigned GetTimestamp () const
void SetTimestamp (unsigned ts)
BOOL GetMarker () const
void SetMarker (BOOL m)
BOOL IsPaused () const
void SetPaused (BOOL p)
BOOL IsOpen ()
void SetPatch (OpalMediaPatch *patch)
OpalMediaPatchGetPatch () const

Protected Attributes

OpalMediaFormat mediaFormat
unsigned sessionID
BOOL paused
BOOL isSource
BOOL isOpen
PINDEX defaultDataSize
unsigned timestamp
BOOL marker
unsigned mismatchedPayloadTypes
OpalMediaPatchpatchThread
PMutex patchMutex
PNotifier commandNotifier
PMutex deleteMutex

Detailed Description

This class describes a media stream as used in the OPAL system. A media stream is the channel through which media data is trasferred between OPAL entities. For example, data being sent to an RTP session over a network would be through a media stream.


Constructor & Destructor Documentation

OpalMediaStream::OpalMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
BOOL  isSource 
) [protected]

Construct a new media stream.

Parameters:
mediaFormat  Media format for stream
sessionID  Session number for stream
isSource  Is a source stream

OpalMediaStream::~OpalMediaStream (  ) 

Destroy the media stream. Make sure the patch, if present, has been stopped and deleted.


Member Function Documentation

virtual BOOL OpalMediaStream::Close (  )  [virtual]

Close the media stream.

The default does nothing.

Reimplemented in OpalIAX2MediaStream, OpalLineMediaStream, OpalRTPMediaStream, and OpalRawMediaStream.

virtual void OpalMediaStream::EnableJitterBuffer (  )  const [virtual]

Enable jitter buffer for the media stream.

The default behaviour does nothing.

Reimplemented in OpalRTPMediaStream.

virtual BOOL OpalMediaStream::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 passes the command on to the OpalMediaPatch.

Parameters:
command  Command to execute.

PINDEX OpalMediaStream::GetDataSize (  )  const [inline]

Get the data size in bytes that is expected to be used. Some media streams can make use of this information to perform optimisations.

PMutex& OpalMediaStream::GetDeleteMutex (  )  const [inline]

Get the mutex that prevents the destructor from completing.

BOOL OpalMediaStream::GetMarker (  )  const [inline]

Get the marker bit of last read.

virtual OpalMediaFormat OpalMediaStream::GetMediaFormat (  )  const [virtual]

Get the currently selected media format. The media data format is a string representation of the format being transferred by the media channel. It is typically a value as provided by the RTP_PayloadType class.

The default behaviour simply returns the member variable "mediaFormat".

OpalMediaPatch* OpalMediaStream::GetPatch (  )  const [inline]

Get the patch thread that is using the stream.

unsigned OpalMediaStream::GetSessionID (  )  const [inline]

Get the session number of the stream.

unsigned OpalMediaStream::GetTimestamp (  )  const [inline]

Get the timestamp of last read.

BOOL OpalMediaStream::IsOpen (  )  [inline]

Returns TRUE if the media stream is open.

BOOL OpalMediaStream::IsPaused (  )  const [inline]

Get the paused state for writing.

BOOL OpalMediaStream::IsSink (  )  const [inline]

Determine of media stream is a source or a sink.

BOOL OpalMediaStream::IsSource (  )  const [inline]

Determine of media stream is a source or a sink.

virtual BOOL OpalMediaStream::IsSynchronous (  )  const [pure virtual]

Indicate if the media stream is synchronous. If this returns TRUE then the media stream will block of the amount of time it takes to annunciate the data. For example if the media stream is over a sound card, and 480 bytes of data are to be written it will take 30 milliseconds to complete.

Implemented in OpalIAX2MediaStream, OpalLineMediaStream, OpalNullMediaStream, OpalRTPMediaStream, OpalFileMediaStream, OpalAudioMediaStream, and OpalVideoMediaStream.

virtual BOOL OpalMediaStream::Open (  )  [virtual]

Open the media stream using the media format.

The default behaviour simply sets the isOpen variable to TRUE.

Reimplemented in OpalIAX2MediaStream, OpalLineMediaStream, OpalRTPMediaStream, and OpalVideoMediaStream.

void OpalMediaStream::PrintOn ( ostream &  strm  )  const

Standard stream print function. The PObject class has a << operator defined that calls this function polymorphically.

Parameters:
strm  Stream to output text representation

virtual BOOL OpalMediaStream::ReadData ( BYTE *  data,
PINDEX  size,
PINDEX &  length 
) [virtual]

Read raw media data from the source media stream. The default behaviour simply calls ReadPacket() on the data portion of the RTP_DataFrame and sets the frames timestamp and marker from the internal member variables of the media stream class.

Parameters:
data  Data buffer to read to
size  Size of buffer
length  Length of data actually read

Reimplemented in OpalIAX2MediaStream, OpalLineMediaStream, OpalNullMediaStream, OpalRawMediaStream, and OpalVideoMediaStream.

virtual BOOL OpalMediaStream::ReadPacket ( RTP_DataFrame packet  )  [virtual]

Read an RTP frame of data from the source media stream. The default behaviour simply calls ReadData() on the data portion of the RTP_DataFrame and sets the frames timestamp and marker from the internal member variables of the media stream class.

Reimplemented in OpalRTPMediaStream.

virtual BOOL OpalMediaStream::RequiresPatchThread (  )  const [virtual]

Indicate if the media stream requires a OpalMediaPatch thread. The default behaviour returns TRUE.

Reimplemented in OpalNullMediaStream.

virtual void OpalMediaStream::SetCommandNotifier ( const PNotifier &  notifier  )  [virtual]

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.

The default behaviour passes the command on to the OpalMediaPatch and sets the member variable commandNotifier.

Parameters:
notifier  Command to execute.

virtual BOOL OpalMediaStream::SetDataSize ( PINDEX  dataSize  )  [virtual]

Set the data size in bytes that is expected to be used. Some media streams can make use of this information to perform optimisations.

The default behaviour does nothing.

Parameters:
dataSize  New data size

Reimplemented in OpalAudioMediaStream, and OpalVideoMediaStream.

void OpalMediaStream::SetMarker ( BOOL  m  )  [inline]

Set marker bit for next write.

void OpalMediaStream::SetPatch ( OpalMediaPatch patch  ) 

Set the patch thread that is using this stream.

Parameters:
patch  Media patch thread

void OpalMediaStream::SetPaused ( BOOL  p  )  [inline]

Set the paused state for writing.

void OpalMediaStream::SetTimestamp ( unsigned  ts  )  [inline]

Set timestamp for next write.

virtual BOOL OpalMediaStream::Start (  )  [virtual]

Start the media stream.

The default behaviour calls Resume() on the associated OpalMediaPatch thread if it was suspended.

Reimplemented in OpalIAX2MediaStream.

virtual BOOL OpalMediaStream::UpdateMediaFormat ( const OpalMediaFormat mediaFormat  )  [virtual]

Update the 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 mediaFormat member variable and pases the value on to the OpalMediaPatch.

Parameters:
mediaFormat  New media format

virtual BOOL OpalMediaStream::WriteData ( const BYTE *  data,
PINDEX  length,
PINDEX &  written 
) [virtual]

Write raw media data to the sink media stream. The default behaviour calls WritePacket() on the data portion of the RTP_DataFrame and and sets the internal timestamp and marker from the member variables of the media stream class.

Parameters:
data  Data to write
length  Length of data to read.
written  Length of data actually written

Reimplemented in OpalIAX2MediaStream, OpalLineMediaStream, OpalNullMediaStream, OpalRawMediaStream, and OpalVideoMediaStream.

virtual BOOL OpalMediaStream::WritePacket ( RTP_DataFrame packet  )  [virtual]

Write an RTP frame of data to the sink media stream. The default behaviour simply calls WriteData() on the data portion of the RTP_DataFrame and and sets the internal timestamp and marker from the member variables of the media stream class.

Reimplemented in OpalRTPMediaStream.

virtual BOOL OpalMediaStream::WritePackets ( RTP_DataFrameList &  packets  )  [virtual]

Write a list of RTP frames of data to the sink media stream. The default behaviour simply calls WritePacket() on each of the elements in the list.


Member Data Documentation

PNotifier OpalMediaStream::commandNotifier [protected]

PINDEX OpalMediaStream::defaultDataSize [protected]

PMutex OpalMediaStream::deleteMutex [mutable, protected]

BOOL OpalMediaStream::isOpen [protected]

BOOL OpalMediaStream::isSource [protected]

BOOL OpalMediaStream::marker [protected]

OpalMediaFormat OpalMediaStream::mediaFormat [protected]

unsigned OpalMediaStream::mismatchedPayloadTypes [protected]

PMutex OpalMediaStream::patchMutex [protected]

OpalMediaPatch* OpalMediaStream::patchThread [protected]

BOOL OpalMediaStream::paused [protected]

unsigned OpalMediaStream::sessionID [protected]

unsigned OpalMediaStream::timestamp [protected]


The documentation for this class was generated from the following file:
Generated on Mon Sep 25 16:21:52 2006 for OPAL by  doxygen 1.4.7