mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
qa-element-monitor: check if the element is a decoder
This can be used on checks for timestamps being inside segment
This commit is contained in:
parent
6f2dbf1486
commit
d314df2040
2 changed files with 21 additions and 4 deletions
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "gst-qa-element-monitor.h"
|
#include "gst-qa-element-monitor.h"
|
||||||
#include "gst-qa-pad-monitor.h"
|
#include "gst-qa-pad-monitor.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SECTION:gst-qa-element-monitor
|
* SECTION:gst-qa-element-monitor
|
||||||
|
@ -102,6 +103,18 @@ gst_qa_element_monitor_new (GstElement * element, GstQaRunner * runner)
|
||||||
return monitor;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_qa_element_monitor_inspect (GstQaElementMonitor * monitor)
|
||||||
|
{
|
||||||
|
GstElement *element;
|
||||||
|
GstElementClass *klass;
|
||||||
|
|
||||||
|
element = GST_QA_ELEMENT_MONITOR_GET_ELEMENT (monitor);
|
||||||
|
klass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element));
|
||||||
|
|
||||||
|
monitor->is_decoder = strstr (klass->details.klass, "Decoder") != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_qa_element_monitor_do_setup (GstQaMonitor * monitor)
|
gst_qa_element_monitor_do_setup (GstQaMonitor * monitor)
|
||||||
{
|
{
|
||||||
|
@ -109,6 +122,7 @@ gst_qa_element_monitor_do_setup (GstQaMonitor * monitor)
|
||||||
gboolean done;
|
gboolean done;
|
||||||
GstPad *pad;
|
GstPad *pad;
|
||||||
GstQaElementMonitor *elem_monitor;
|
GstQaElementMonitor *elem_monitor;
|
||||||
|
GstElement *element;
|
||||||
|
|
||||||
if (!GST_IS_ELEMENT (GST_QA_MONITOR_GET_OBJECT (monitor))) {
|
if (!GST_IS_ELEMENT (GST_QA_MONITOR_GET_OBJECT (monitor))) {
|
||||||
GST_WARNING_OBJECT (monitor, "Trying to create element monitor with other "
|
GST_WARNING_OBJECT (monitor, "Trying to create element monitor with other "
|
||||||
|
@ -120,13 +134,14 @@ gst_qa_element_monitor_do_setup (GstQaMonitor * monitor)
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (monitor, "Setting up monitor for element %" GST_PTR_FORMAT,
|
GST_DEBUG_OBJECT (monitor, "Setting up monitor for element %" GST_PTR_FORMAT,
|
||||||
GST_QA_MONITOR_GET_OBJECT (monitor));
|
GST_QA_MONITOR_GET_OBJECT (monitor));
|
||||||
|
element = GST_QA_ELEMENT_MONITOR_GET_ELEMENT (monitor);
|
||||||
|
|
||||||
elem_monitor->pad_added_id =
|
gst_qa_element_monitor_inspect (elem_monitor);
|
||||||
g_signal_connect (GST_QA_MONITOR_GET_OBJECT (monitor), "pad-added",
|
|
||||||
|
elem_monitor->pad_added_id = g_signal_connect (element, "pad-added",
|
||||||
G_CALLBACK (_qa_element_pad_added), monitor);
|
G_CALLBACK (_qa_element_pad_added), monitor);
|
||||||
|
|
||||||
iterator =
|
iterator = gst_element_iterate_pads (element);
|
||||||
gst_element_iterate_pads (GST_QA_ELEMENT_MONITOR_GET_ELEMENT (monitor));
|
|
||||||
done = FALSE;
|
done = FALSE;
|
||||||
while (!done) {
|
while (!done) {
|
||||||
switch (gst_iterator_next (iterator, (gpointer *) & pad)) {
|
switch (gst_iterator_next (iterator, (gpointer *) & pad)) {
|
||||||
|
|
|
@ -56,6 +56,8 @@ struct _GstQaElementMonitor {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
gulong pad_added_id;
|
gulong pad_added_id;
|
||||||
GList *pad_monitors;
|
GList *pad_monitors;
|
||||||
|
|
||||||
|
gboolean is_decoder;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue