NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
mi::rtmp::IFrame_event_handler Class Referenceabstract

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

Inheritance diagram for mi::rtmp::IFrame_event_handler:
Inheritance graph
[legend]

Public Member Functions

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

Additional Inherited Members

- Public Types inherited from mi::base::Interface_declare< 0x0dacca64, 0x41ae, 0x407f, 0xbf, 0x9b, 0x97, 0xaf, 0xe7, 0x92, 0x12, 0xbd >
typedef Interface_declare< id1,
id2, id3, id4, id5, id6, id7,
id8, id9, id10, id11,
IInterface
Self
  Own type. More...
 
typedef Uuid_t< id1, id2, id3,
id4, id5, id6, id7, id8, id9,
id10, id11 > 
IID
  Declares the interface ID (IID) of this interface. More...
 
- Static Public Member Functions inherited from mi::base::Interface_declare< 0x0dacca64, 0x41ae, 0x407f, 0xbf, 0x9b, 0x97, 0xaf, 0xe7, 0x92, 0x12, 0xbd >
static bool  compare_iid (const Uuid &iid)
  Compares the interface ID iid against the interface ID of this interface and of its ancestors. 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 implementors need to think about synchronization. It should also never use more time than 1/framerate for an optimal client side experience.

Member Function Documentation

virtual bool mi::rtmp::IFrame_event_handler::handle ( IStream stream,
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] 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.