neuray API Programmer's Manual

mi::rtmp::IFrame_event_handler Class Reference

[RTMP server]

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.

Public Member Functions

virtual bool  handle( IStream* stream, neuraylib::​IVideo_data** out, bool outqueue_is_full) =0
Called on a frame event. More...

Member Functions

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

stream
The stream on which the frame handler is registered.
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.

Returns

true in case of success, or false if an error occurred and the stream should be stopped by the RTMP server.