Superclass of all handlers of frame events. More...
#include <rtmp.h>
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 IInterface * | get_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 IInterface * | get_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... | |
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.
|
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.
stream
parameter is only valid during the call of the handle() method and cannot be stored (even if proper reference counting is used).stream | The stream on which the frame handler is registered. | |
[out] | out | An empty video frame that should be filled with video encoded frame data. |
outqueue_is_full | Set to true when the sending queue to the client is buffering up. |
true
in case of success, or false
if an error occurred and the stream should be stopped by the RTMP server.