mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 23:36:38 +00:00
rtsp-media: use element metadata to find payloader
Use the element metadata to find the payloader instead of checking for the base class. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=712396
This commit is contained in:
parent
e5332535a7
commit
7b5763179a
1 changed files with 9 additions and 5 deletions
|
@ -67,8 +67,6 @@
|
|||
#include <gst/app/gstappsrc.h>
|
||||
#include <gst/app/gstappsink.h>
|
||||
|
||||
#include <gst/rtp/gstrtpbasepayload.h>
|
||||
|
||||
#include "rtsp-media.h"
|
||||
|
||||
#define GST_RTSP_MEDIA_GET_PRIVATE(obj) \
|
||||
|
@ -1536,13 +1534,19 @@ find_payload_element (GstElement * payloader)
|
|||
{
|
||||
GValue item = { 0 };
|
||||
GstIterator *iter;
|
||||
GstElement *element;
|
||||
GstElement *pay = NULL;
|
||||
|
||||
iter = gst_bin_iterate_recurse (GST_BIN (payloader));
|
||||
while (gst_iterator_next (iter, &item) == GST_ITERATOR_OK) {
|
||||
element = (GstElement *) g_value_get_object (&item);
|
||||
if (GST_IS_RTP_BASE_PAYLOAD (element)) {
|
||||
GstElement *element = (GstElement *) g_value_get_object (&item);
|
||||
GstElementClass *eclass = GST_ELEMENT_GET_CLASS (element);
|
||||
const gchar *klass;
|
||||
|
||||
klass = gst_element_class_get_metadata (eclass, GST_ELEMENT_METADATA_KLASS);
|
||||
if (klass == NULL)
|
||||
continue;
|
||||
|
||||
if (strstr (klass, "Payloader") && strstr (klass, "RTP")) {
|
||||
pay = gst_object_ref (element);
|
||||
g_value_unset (&item);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue