OpalVideoMixer Class Reference

#include <opalmixer.h>

Inheritance diagram for OpalVideoMixer:

OpalBaseMixer OpalMixerNode::VideoMixer

Public Types

 eSideBySideLetterbox
 eSideBySideScaled
 eStackedPillarbox
 eStackedScaled
 eGrid
enum  Styles {
  eSideBySideLetterbox, eSideBySideScaled, eStackedPillarbox, eStackedScaled,
  eGrid
}

Public Member Functions

 OpalVideoMixer (Styles style, unsigned width, unsigned height, unsigned rate=15, bool pushThread=true)
 ~OpalVideoMixer ()
unsigned GetFrameWidth () const
unsigned GetFrameHeight () const
unsigned GetFrameRate () const
bool SetFrameRate (unsigned rate)
bool SetFrameSize (unsigned width, unsigned height)

Protected Member Functions

virtual Stream * CreateStream ()
virtual bool MixStreams (RTP_DataFrame &frame)
virtual size_t GetOutputSize () const

Protected Attributes

Styles m_style
unsigned m_width
unsigned m_height
PBYTEArray m_frameStore

Friends

struct VideoStream

Data Structures

struct  VideoStream

Detailed Description

Video mixer. This takes raw YUV420P frames with a PluginCodec_Video_FrameHeader in the RTP data frames, scales them and places them in particular positions of the output data frame. A number of different patterns for positioning the sub images are available in the Styles enum.


Member Enumeration Documentation

enum OpalVideoMixer::Styles

Enumerator:
eSideBySideLetterbox  Two images side by side with black bars top and bottom. It is expected that the input frames and output are all the same aspect ratio, e.g. 4:3. Works well if inputs are QCIF and output is CIF for example.
eSideBySideScaled  Two images side by side, scaled to fit halves of output frame. It is expected that the output frame be double the width of the input data to maintain aspect ratio. e.g. for CIF inputs, output would be 704x288.
eStackedPillarbox  Two images, one on top of the other with black bars down the sides. It is expected that the input frames and output are all the same aspect ratio, e.g. 4:3. Works well if inputs are QCIF and output is CIF for example.
eStackedScaled  Two images, one on top of the other, scaled to fit halves of output frame. It is expected that the output frame be double the height of the input data to maintain aspect ratio. e.g. for CIF inputs, output would be 352x576.
eGrid  Standard 2x2, 3x3, 4x4 grid pattern. Size of grid is dependent on the number of video streams.


Constructor & Destructor Documentation

OpalVideoMixer::OpalVideoMixer ( Styles  style,
unsigned  width,
unsigned  height,
unsigned  rate = 15,
bool  pushThread = true 
)

Parameters:
style  Style for mixing video
width  Width of output frame
height  Height of output frame
rate  Frames per second for output
pushThread  A push thread is to be created

OpalVideoMixer::~OpalVideoMixer (  )  [inline]


Member Function Documentation

virtual Stream* OpalVideoMixer::CreateStream (  )  [protected, virtual]

Implements OpalBaseMixer.

unsigned OpalVideoMixer::GetFrameHeight (  )  const [inline]

Get output video frame height.

unsigned OpalVideoMixer::GetFrameRate (  )  const [inline]

Get output video frame rate (frames per second)

unsigned OpalVideoMixer::GetFrameWidth (  )  const [inline]

Get output video frame width.

virtual size_t OpalVideoMixer::GetOutputSize (  )  const [protected, virtual]

Implements OpalBaseMixer.

virtual bool OpalVideoMixer::MixStreams ( RTP_DataFrame frame  )  [protected, virtual]

Implements OpalBaseMixer.

bool OpalVideoMixer::SetFrameRate ( unsigned  rate  ) 

Set output video frame rate. May be dynamically changed at any time.

bool OpalVideoMixer::SetFrameSize ( unsigned  width,
unsigned  height 
)

Set the output video frame width and height. May be dynamically changed at any time.

Parameters:
width  New width
height  new height


Friends And Related Function Documentation

friend struct VideoStream [friend]


Field Documentation

PBYTEArray OpalVideoMixer::m_frameStore [protected]

unsigned OpalVideoMixer::m_height [protected]

Styles OpalVideoMixer::m_style [protected]

unsigned OpalVideoMixer::m_width [protected]


The documentation for this class was generated from the following file:
Generated on Mon Feb 21 20:19:24 2011 for OPAL by  doxygen 1.4.7