bool ofxGstRTPServer::on_message(GstMessage * msg){ // read messages from the pipeline like dropped packages switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ELEMENT:{ GstObject * messageSrc = GST_MESSAGE_SRC(msg); ofLogVerbose(LOG_NAME) << "Got " << GST_MESSAGE_TYPE_NAME(msg) << " message from " << GST_MESSAGE_SRC_NAME(msg); ofLogVerbose(LOG_NAME) << "Message source type: " << G_OBJECT_CLASS_NAME(G_OBJECT_GET_CLASS(messageSrc)); ofLogVerbose(LOG_NAME) << "With structure name: " << gst_structure_get_name(gst_message_get_structure(msg)); ofLogVerbose(LOG_NAME) << gst_structure_to_string(gst_message_get_structure(msg)); return true; } case GST_MESSAGE_QOS:{ GstObject * messageSrc = GST_MESSAGE_SRC(msg); ofLogVerbose(LOG_NAME) << "Got " << GST_MESSAGE_TYPE_NAME(msg) << " message from " << GST_MESSAGE_SRC_NAME(msg); ofLogVerbose(LOG_NAME) << "Message source type: " << G_OBJECT_CLASS_NAME(G_OBJECT_GET_CLASS(messageSrc)); GstFormat format; guint64 processed; guint64 dropped; gst_message_parse_qos_stats(msg,&format,&processed,&dropped); ofLogVerbose(LOG_NAME) << "format " << gst_format_get_name(format) << " processed " << processed << " dropped " << dropped; gint64 jitter; gdouble proportion; gint quality; gst_message_parse_qos_values(msg,&jitter,&proportion,&quality); ofLogVerbose(LOG_NAME) << "jitter " << jitter << " proportion " << proportion << " quality " << quality; gboolean live; guint64 running_time; guint64 stream_time; guint64 timestamp; guint64 duration; gst_message_parse_qos(msg,&live,&running_time,&stream_time,×tamp,&duration); ofLogVerbose(LOG_NAME) << "live stream " << live << " runninng_time " << running_time << " stream_time " << stream_time << " timestamp " << timestamp << " duration " << duration; return true; } default: //ofLogVerbose(LOG_NAME) << "Got " << GST_MESSAGE_TYPE_NAME(msg) << " message from " << GST_MESSAGE_SRC_NAME(msg); return false; } }
int QosMessage::quality() const { gint q; gst_message_parse_qos_values(object<GstMessage>(), NULL, NULL, &q); return q; }
double QosMessage::proportion() const { double d; gst_message_parse_qos_values(object<GstMessage>(), NULL, &d, NULL); return d; }
qint64 QosMessage::jitter() const { gint64 j; gst_message_parse_qos_values(object<GstMessage>(), &j, NULL, NULL); return j; }