gstreamermm  1.10.0
Public Member Functions | Static Public Member Functions | List of all members
Gst::EventQos Class Reference

A QOS event. More...

#include <gstreamermm/event.h>

Inheritance diagram for Gst::EventQos:
Inheritance graph
[legend]

Public Member Functions

void parse (QOSType& type, double& proportion, Gst::ClockTimeDiff& diff, Gst::ClockTime& timestamp) const
 Gets the type, proportion, diff and timestamp from the qos event. More...
 
QOSType parse_type () const
 Get the QoS type. More...
 
double parse_proportion () const
 Get the proportion in the qos event. More...
 
Gst::ClockTimeDiff parse_diff () const
 Get the diff in the qos event. More...
 
Gst::ClockTime parse_timestamp () const
 Get the timestamp in the qos event. More...
 
- Public Member Functions inherited from Gst::Event
void reference () const
 Increment the reference count for this object. More...
 
void unreference () const
 Decrement the reference count for this object. More...
 
GstEvent* gobj ()
 Provides access to the underlying C instance. More...
 
const GstEvent* gobj () const
 Provides access to the underlying C instance. More...
 
GstEvent* gobj_copy () const
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
 Event ()=delete
 
 Event (const Event&)=delete
 
Eventoperator= (const Event&)=delete
 
Gst::Structure get_structure () const
 Access the structure of the event. More...
 
bool has_name (const Glib::ustring& name) const
 Checks if event has the given name. More...
 
guint32 get_seqnum () const
 Retrieve the sequence number of a event. More...
 
void set_seqnum (guint32 seqnum)
 Set the sequence number of a event. More...
 
gint64 get_running_time_offset () const
 Retrieve the accumulated running time offset of the event. More...
 
void set_running_time_offset (gint64 offset)
 Set the running time offset of a event. More...
 
Glib::RefPtr< Gst::Eventcopy () const
 Copy the event using the event specific copy function. More...
 
Glib::RefPtr< Gst::Eventcreate_writable ()
 Makes a writable event from the given event. More...
 
bool is_downstream () const
 Check if an event can travel downstream. More...
 
bool is_serialized () const
 Check if an event is serialized with the data stream. More...
 
bool is_upstream () const
 Check if an event can travel upstream. More...
 
EventType get_event_type () const
 Get the Gst::EventType of the event. More...
 
Gst::ClockTime get_timestamp () const
 Get the Gst::ClockTime timestamp of the event. More...
 
- Public Member Functions inherited from Gst::MiniObject
void reference () const
 Increment the reference count for this object. More...
 
void unreference () const
 Decrement the reference count for this object. More...
 
GstMiniObject* gobj ()
 Provides access to the underlying C instance. More...
 
const GstMiniObject* gobj () const
 Provides access to the underlying C instance. More...
 
GstMiniObject* gobj_copy () const
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
 MiniObject ()=delete
 
 MiniObject (const MiniObject&)=delete
 
MiniObjectoperator= (const MiniObject&)=delete
 
 ~MiniObject ()
 
guint get_flags () const
 
void set_flags (const guint& value)
 
gint get_refcount () const
 
gint get_lockstate () const
 
bool lock (LockFlags flags)
 Lock the mini-object with the specified access mode in flags. More...
 
void unlock (LockFlags flags)
 Unlock the mini-object with the specified access mode in flags. More...
 
bool is_writable () const
 If mini_object has the LOCKABLE flag set, check if the current EXCLUSIVE lock on object is the only one, this means that changes to the object will not be visible to any other object. More...
 
Glib::RefPtr< MiniObjectcreate_writable ()
 Checks if a mini-object is writable. More...
 
void set_qdata (GQuark quark, QuarkData* data)
 This sets an opaque, named pointer on a miniobject. More...
 
QuarkDataget_qdata (GQuark quark) const
 This function gets back user data pointers stored via set_qdata(). More...
 
QuarkDatasteal_qdata (GQuark quark)
 This function gets back user data pointers stored via set_qdata() and removes the data from object without invoking its destroy() function (if any was set). More...
 
void add_finalize_notifier (const SlotFinalizer& slot)
 Adds notifier when mini object is finalized. More...
 
void remove_finalize_notifier ()
 Remove finalize notifier. More...
 

Static Public Member Functions

static Glib::RefPtr< Gst::EventQoscreate (QOSType type, double proportion, Gst::ClockTimeDiff diff, Gst::ClockTime timestamp)
 Allocate a new qos event with the given values. More...
 

Additional Inherited Members

- Public Types inherited from Gst::MiniObject
typedef sigc::slot< void > SlotFinalizer
 
- Protected Member Functions inherited from Gst::Event
void operator delete (void*, std::size_t)
 
- Protected Member Functions inherited from Gst::MiniObject
void operator delete (void*, std::size_t)
 

Detailed Description

A QOS event.

See create() for more details.

Member Function Documentation

◆ create()

static Glib::RefPtr<Gst::EventQos> Gst::EventQos::create ( QOSType  type,
double  proportion,
Gst::ClockTimeDiff  diff,
Gst::ClockTime  timestamp 
)
static

Allocate a new qos event with the given values.

The QOS event is generated in an element that wants an upstream element to either reduce or increase its rate because of high/low CPU load or other resource usage such as network performance or throttling. Typically sinks generate these events for each buffer they receive.

type indicates the reason for the QoS event. Gst::QOS_TYPE_OVERFLOW is used when a buffer arrived in time or when the sink cannot keep up with the upstream datarate. Gst::QOS_TYPE_UNDERFLOW is when the sink is not receiving buffers fast enough and thus has to drop late buffers. Gst::QOS_TYPE_THROTTLE is used when the datarate is artificially limited by the application, for example to reduce power consumption.

proportion indicates the real-time performance of the streaming in the element that generated the QoS event (usually the sink). The value is generally computed based on more long term statistics about the streams timestamps compared to the clock. A value < 1.0 indicates that the upstream element is producing data faster than real-time. A value > 1.0 indicates that the upstream element is not producing data fast enough. 1.0 is the ideal proportion value. The proportion value can safely be used to lower or increase the quality of the element.

diff is the difference against the clock in running time of the last buffer that caused the element to generate the QOS event. A negative value means that the buffer with timestamp arrived in time. A positive value indicates how late the buffer with timestamp was. When throttling is enabled, diff will be set to the requested throttling interval.

timestamp is the timestamp of the last buffer that cause the element to generate the QOS event. It is expressed in running time and thus an ever increasing value.

The upstream element can use the diff and timestamp values to decide whether to process more buffers. For positive diff, all buffers with timestamp <= timestamp + diff will certainly arrive late in the sink as well. A (negative) diff value so that timestamp + diff would yield a result smaller than 0 is not allowed.

The application can use general event probes to intercept the QoS event and implement custom application specific QoS handling.

Parameters
typeThe QoS type.
proportionThe proportion of the qos message.
diffThe time difference of the last Clock sync.
timestampThe timestamp of the buffer.
Returns
A new QOS event.

◆ parse()

void Gst::EventQos::parse ( QOSType type,
double &  proportion,
Gst::ClockTimeDiff diff,
Gst::ClockTime timestamp 
) const

Gets the type, proportion, diff and timestamp from the qos event.

Parameters
typeA pointer to store the QoS type in.
proportionA pointer to store the proportion in.
diffA pointer to store the diff in.
timestampA pointer to store the timestamp in.

◆ parse_diff()

Gst::ClockTimeDiff Gst::EventQos::parse_diff ( ) const

Get the diff in the qos event.

See create() for more information about the different QoS values.

Returns
The difference.

◆ parse_proportion()

double Gst::EventQos::parse_proportion ( ) const

Get the proportion in the qos event.

See create() for more information about the different QoS values.

Returns
The proportion.

◆ parse_timestamp()

Gst::ClockTime Gst::EventQos::parse_timestamp ( ) const

Get the timestamp in the qos event.

See create() for more information about the different QoS values.

Returns
The timestamp.

◆ parse_type()

QOSType Gst::EventQos::parse_type ( ) const

Get the QoS type.

See create() for more information about the different QoS values.

Returns
The QoS type.