OPAL
Version 3.18.8
|
#include <opalmixer.h>
Public Member Functions | |
OpalVideoStreamMixer (const OpalMixerNodeInfo &info) | |
~OpalVideoStreamMixer () | |
virtual bool | SetFrameRate (unsigned rate) |
virtual bool | OnMixed (RTP_DataFrame *&output) |
![]() | |
OpalVideoMixer (Styles style, unsigned width, unsigned height, unsigned rate=15, bool pushThread=true) | |
~OpalVideoMixer () | |
unsigned | GetFrameWidth () const |
unsigned | GetFrameHeight () const |
unsigned | GetFrameRate () const |
bool | SetFrameSize (unsigned width, unsigned height) |
![]() | |
OpalBaseMixer (bool pushThread, unsigned periodMS, unsigned periodTS) | |
virtual | ~OpalBaseMixer () |
virtual bool | AddStream (const Key_T &key) |
virtual void | RemoveStream (const Key_T &key) |
virtual void | RemoveAllStreams () |
virtual bool | WriteStream (const Key_T &key, const RTP_DataFrame &input) |
virtual RTP_DataFrame * | ReadMixed () |
virtual bool | ReadMixed (RTP_DataFrame &mixed) |
virtual void | StartPushThread () |
virtual bool | OnPush () |
void | StopPushThread (bool lock=true) |
unsigned | GetPeriodMS () const |
unsigned | GetPeriodTS () const |
![]() | |
OpalMediaStreamMixer () | |
void | Append (const PSafePtr< OpalMixerMediaStream > &stream) |
void | Remove (const PSafePtr< OpalMixerMediaStream > &stream) |
void | CloseOne (const PSafePtr< OpalMixerMediaStream > &stream) |
Protected Types | |
typedef PDictionary< PString, OpalTranscoder > | TranscoderMap |
![]() | |
typedef std::map< Key_T, Stream * > | StreamMap_T |
![]() | |
typedef PSafeDictionary < PString, OpalMixerMediaStream > | StreamDict |
Protected Attributes | |
TranscoderMap | m_transcoders |
![]() | |
Styles | m_style |
unsigned | m_width |
unsigned | m_height |
BYTE | m_bgFillRed |
BYTE | m_bgFillGreen |
BYTE | m_bgFillBlue |
PBYTEArray | m_frameStore |
size_t | m_lastStreamCount |
![]() | |
bool | m_pushThread |
unsigned | m_periodMS |
unsigned | m_periodTS |
StreamMap_T | m_inputStreams |
unsigned | m_outputTimestamp |
RTP_DataFrame * | m_pushFrame |
PThread * | m_workerThread |
bool | m_threadRunning |
![]() | |
StreamDict | m_outputStreams |
Additional Inherited Members | |
![]() | |
enum | Styles { eSideBySideLetterbox, eSideBySideScaled, eStackedPillarbox, eStackedScaled, eGrid, eUser } |
![]() | |
typedef PString | Key_T |
![]() | |
virtual Stream * | CreateStream () |
virtual bool | MixStreams (RTP_DataFrame &frame) |
virtual size_t | GetOutputSize () const |
virtual bool | MixVideo () |
virtual bool | StartMix (unsigned &x, unsigned &y, unsigned &w, unsigned &h, unsigned &left) |
virtual bool | NextMix (unsigned &x, unsigned &y, unsigned &w, unsigned &h, unsigned &left) |
void | InsertVideoFrame (const StreamMap_T::iterator &it, unsigned x, unsigned y, unsigned w, unsigned h) |
![]() | |
void | PushThreadMain () |
PDECLARE_MUTEX (m_mutex) | |
Video mixer. This class represents the frame store for the mixed video.
A user would typically create a derived class to override the MixVideo() or the StartMix()/NextMix() virtual functions for new screen patterns/algorithms.
|
protected |
OpalVideoStreamMixer::OpalVideoStreamMixer | ( | const OpalMixerNodeInfo & | info | ) |
OpalVideoStreamMixer::~OpalVideoStreamMixer | ( | ) |
|
virtual |
Mixed data is now available. For a push model system, this is called with mixed data as returned by ReadMixed().
The "mixed" parameter is a reference to a pointer, so if the consumer wishes to take responsibility for deleting the pointer to an RTP data frame, then they can set it to NULL.
If false is returned then the push thread is exited.
Reimplemented from OpalBaseMixer.
|
virtual |
Set output video frame rate. May be dynamically changed at any time.
Reimplemented from OpalVideoMixer.
|
protected |