DiCE API nvidia_logo_transpbg.gif Up
mi::rtmp::IFrame_event_handler Class Referenceabstract

Superclass of all handlers of frame events. More...

#include <rtmp.h>

Inheritance diagram for mi::rtmp::IFrame_event_handler:

Public Member Functions

virtual bool handle (IStream *stream, neuraylib::IVideo_data **out, bool outqueue_is_full)=0
 Called on a frame event. More...
 
- Public Member Functions inherited from mi::base::IInterface
virtual Uint32 retain () const =0
 Increments the reference count. More...
 
virtual Uint32 release () const =0
 Decrements the reference count. More...
 
virtual const IInterfaceget_interface (const Uuid &interface_id) const =0
 Acquires a const interface from another. More...
 
template<class T>
const T * get_interface () const
 Acquires a const interface from another. More...
 
virtual IInterfaceget_interface (const Uuid &interface_id)=0
 Acquires a mutable interface from another. More...
 
template<class T>
T * get_interface ()
 Acquires a mutable interface from another. More...
 
virtual Uuid get_iid () const =0
 Returns the interface ID of the most derived interface. More...
 

Additional Inherited Members

- Public Types inherited from mi::base::Interface_declare< 0x0dacca64, ... >
typedef Interface_declare< id1, ... > Self
 Own type. More...
 
typedef Uuid_t< id1, ... > IID
 Declares the interface ID (IID) of this interface. More...
 
- Public Types inherited from mi::base::IInterface
typedef Uuid_t<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> IID
 Declares the interface ID (IID) of this interface. More...
 
- Static Public Member Functions inherited from mi::base::Interface_declare< 0x0dacca64, ... >
static bool compare_iid (const Uuid &iid)
 Compares the interface ID iid against the interface ID of this interface and of its ancestors. More...
 
- Static Public Member Functions inherited from mi::base::IInterface
static bool compare_iid (const Uuid &iid)
 Compares the interface ID iid against the interface ID of this interface. More...
 

Detailed Description

Superclass of all handlers of frame events.

This is a synthetic handler that does not appear in the RTMP Command Messages section of the Adobe RTMP specification [RTMPSPEC10] but is required to allow the RTMP server to maintain the correct frame rate of video streams. It is running in another thread than the render thread which means implementers need to think about synchronization. It should also never use more time than 1/framerate for an optimal client-side experience.

Member Function Documentation

 handle()

virtual bool mi::rtmp::IFrame_event_handler::handle ( IStream stream,
neuraylib::IVideo_data **  out,
bool  outqueue_is_full 
)
pure virtual

Called on a frame event.

When the outqueue_is_full parameter is set the bandwidth is either not enough or the client is not consuming the frames fast enough. Encoding a new large frame will then queue up data which will degrade interactivity. Perhaps encoding the old canvas would then be preferable as most codecs in that case produce very small P-frames.

Note
The stream parameter is only valid during the call of the handle() method and cannot be stored (even if proper reference counting is used).
Parameters
streamThe stream on which the frame handler is registered.
[out]outAn empty video frame that should be filled with video encoded frame data.
outqueue_is_fullSet to true when the sending queue to the client is buffering up.
Returns
true in case of success, or false if an error occurred and the stream should be stopped by the RTMP server.