mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
propertyprobe: remove propertyprobe
Remove the propertyprobe interface Improve docs
This commit is contained in:
parent
2760dd2068
commit
ddc05e0ed1
12 changed files with 29 additions and 548 deletions
|
@ -408,7 +408,6 @@ gst_audio_ring_buffer_delay
|
||||||
gst_audio_ring_buffer_samples_done
|
gst_audio_ring_buffer_samples_done
|
||||||
gst_audio_ring_buffer_set_sample
|
gst_audio_ring_buffer_set_sample
|
||||||
gst_audio_ring_buffer_commit
|
gst_audio_ring_buffer_commit
|
||||||
gst_audio_ring_buffer_commit_full
|
|
||||||
gst_audio_ring_buffer_convert
|
gst_audio_ring_buffer_convert
|
||||||
|
|
||||||
gst_audio_ring_buffer_prepare_read
|
gst_audio_ring_buffer_prepare_read
|
||||||
|
@ -745,30 +744,6 @@ gst_navigation_query_type_get_type
|
||||||
gst_navigation_command_get_type
|
gst_navigation_command_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gstpropertyprobe</FILE>
|
|
||||||
<INCLUDE>gst/interfaces/propertyprobe.h</INCLUDE>
|
|
||||||
GstPropertyProbe
|
|
||||||
GstPropertyProbeInterface
|
|
||||||
|
|
||||||
gst_property_probe_get_properties
|
|
||||||
gst_property_probe_get_property
|
|
||||||
gst_property_probe_get_values
|
|
||||||
gst_property_probe_get_values_name
|
|
||||||
gst_property_probe_needs_probe
|
|
||||||
gst_property_probe_needs_probe_name
|
|
||||||
gst_property_probe_probe_and_get_values
|
|
||||||
gst_property_probe_probe_and_get_values_name
|
|
||||||
gst_property_probe_probe_property
|
|
||||||
gst_property_probe_probe_property_name
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
GST_TYPE_PROPERTY_PROBE
|
|
||||||
GST_PROPERTY_PROBE
|
|
||||||
GST_PROPERTY_PROBE_GET_INTEFACE
|
|
||||||
GST_IS_PROPERTY_PROBE
|
|
||||||
gst_property_probe_get_type
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gststreamvolume</FILE>
|
<FILE>gststreamvolume</FILE>
|
||||||
<INCLUDE>gst/audio/streamvolume.h</INCLUDE>
|
<INCLUDE>gst/audio/streamvolume.h</INCLUDE>
|
||||||
|
@ -883,8 +858,8 @@ gst_video_orientation_get_type
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gstvideooverlay</FILE>
|
<FILE>gstvideooverlay</FILE>
|
||||||
<INCLUDE>gst/video/videooverlay.h</INCLUDE>
|
<INCLUDE>gst/video/videooverlay.h</INCLUDE>
|
||||||
GstXOverlay
|
GstVideoOverlay
|
||||||
GstXOverlayIface
|
GstVideoOverlayInterface
|
||||||
gst_video_overlay_got_window_handle
|
gst_video_overlay_got_window_handle
|
||||||
gst_video_overlay_set_window_handle
|
gst_video_overlay_set_window_handle
|
||||||
gst_video_overlay_prepare_window_handle
|
gst_video_overlay_prepare_window_handle
|
||||||
|
@ -1730,7 +1705,6 @@ GST_TAG_MUSICBRAINZ_ARTISTID
|
||||||
GST_TAG_MUSICBRAINZ_ALBUMID
|
GST_TAG_MUSICBRAINZ_ALBUMID
|
||||||
GST_TAG_MUSICBRAINZ_ALBUMARTISTID
|
GST_TAG_MUSICBRAINZ_ALBUMARTISTID
|
||||||
GST_TAG_MUSICBRAINZ_TRMID
|
GST_TAG_MUSICBRAINZ_TRMID
|
||||||
GST_TAG_MUSICBRAINZ_SORTNAME
|
|
||||||
GST_TAG_CDDA_CDDB_DISCID
|
GST_TAG_CDDA_CDDB_DISCID
|
||||||
GST_TAG_CDDA_CDDB_DISCID_FULL
|
GST_TAG_CDDA_CDDB_DISCID_FULL
|
||||||
GST_TAG_CDDA_MUSICBRAINZ_DISCID
|
GST_TAG_CDDA_MUSICBRAINZ_DISCID
|
||||||
|
@ -1763,7 +1737,6 @@ GST_TAG_ID3V2_HEADER_SIZE
|
||||||
gst_tag_register_musicbrainz_tags
|
gst_tag_register_musicbrainz_tags
|
||||||
gst_tag_freeform_string_to_utf8
|
gst_tag_freeform_string_to_utf8
|
||||||
gst_tag_parse_extended_comment
|
gst_tag_parse_extended_comment
|
||||||
gst_tag_image_data_to_image_buffer
|
|
||||||
GstTagImageType
|
GstTagImageType
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GST_TYPE_TAG_IMAGE_TYPE
|
GST_TYPE_TAG_IMAGE_TYPE
|
||||||
|
|
|
@ -28,8 +28,6 @@ gst_mixer_options_get_type
|
||||||
gst_mixer_track_get_type
|
gst_mixer_track_get_type
|
||||||
#include <gst/interfaces/navigation.h>
|
#include <gst/interfaces/navigation.h>
|
||||||
gst_navigation_get_type
|
gst_navigation_get_type
|
||||||
#include <gst/interfaces/propertyprobe.h>
|
|
||||||
gst_property_probe_get_type
|
|
||||||
#include <gst/interfaces/tuner.h>
|
#include <gst/interfaces/tuner.h>
|
||||||
gst_tuner_get_type
|
gst_tuner_get_type
|
||||||
gst_tuner_channel_get_type
|
gst_tuner_channel_get_type
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "gstalsadeviceprobe.h"
|
#include "gstalsadeviceprobe.h"
|
||||||
#include "gst/interfaces/propertyprobe.h"
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
G_LOCK_DEFINE_STATIC (probe_lock);
|
G_LOCK_DEFINE_STATIC (probe_lock);
|
||||||
|
|
||||||
static const GList *
|
static const GList *
|
||||||
|
@ -208,3 +208,4 @@ gst_alsa_type_add_device_property_probe_interface (GType type)
|
||||||
g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE,
|
g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE,
|
||||||
&probe_iface_info);
|
&probe_iface_info);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -37,8 +37,6 @@
|
||||||
|
|
||||||
#include "mixerutils.h"
|
#include "mixerutils.h"
|
||||||
|
|
||||||
#include <gst/interfaces/propertyprobe.h>
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -117,6 +115,7 @@ gst_audio_mixer_filter_probe_feature (GstAudioMixerFilterFunc filter_func,
|
||||||
|
|
||||||
GST_DEBUG ("created element %s (%p)", GST_ELEMENT_NAME (element), element);
|
GST_DEBUG ("created element %s (%p)", GST_ELEMENT_NAME (element), element);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (GST_IS_PROPERTY_PROBE (element)) {
|
if (GST_IS_PROPERTY_PROBE (element)) {
|
||||||
GstPropertyProbe *probe;
|
GstPropertyProbe *probe;
|
||||||
const GParamSpec *devspec;
|
const GParamSpec *devspec;
|
||||||
|
@ -155,7 +154,9 @@ gst_audio_mixer_filter_probe_feature (GstAudioMixerFilterFunc filter_func,
|
||||||
g_value_array_free (array);
|
g_value_array_free (array);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
GST_DEBUG ("element does not support the property probe interface");
|
GST_DEBUG ("element does not support the property probe interface");
|
||||||
|
|
||||||
if (gst_audio_mixer_filter_check_element (element)) {
|
if (gst_audio_mixer_filter_check_element (element)) {
|
||||||
|
|
|
@ -4,7 +4,6 @@ libgstinterfacesincludedir = \
|
||||||
|
|
||||||
headers_interfaces = \
|
headers_interfaces = \
|
||||||
navigation.h \
|
navigation.h \
|
||||||
propertyprobe.h \
|
|
||||||
tuner.h \
|
tuner.h \
|
||||||
tunernorm.h \
|
tunernorm.h \
|
||||||
tunerchannel.h
|
tunerchannel.h
|
||||||
|
@ -31,7 +30,6 @@ nodist_libgstinterfacesinclude_HEADERS = \
|
||||||
|
|
||||||
libgstinterfaces_@GST_MAJORMINOR@_la_SOURCES = \
|
libgstinterfaces_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
navigation.c \
|
navigation.c \
|
||||||
propertyprobe.c \
|
|
||||||
tuner.c \
|
tuner.c \
|
||||||
tunernorm.c \
|
tunernorm.c \
|
||||||
tunerchannel.c
|
tunerchannel.c
|
||||||
|
|
|
@ -1,378 +0,0 @@
|
||||||
/* GStreamer PropertyProbe
|
|
||||||
* Copyright (C) 2003 David Schleef <ds@schleef.org>
|
|
||||||
*
|
|
||||||
* property_probe.c: property_probe design virtual class function wrappers
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* SECTION:gstpropertyprobe
|
|
||||||
* @short_description: Interface for probing possible property values
|
|
||||||
*
|
|
||||||
* The property probe is a way to autodetect allowed values for a GObject
|
|
||||||
* property. It's primary use is to autodetect device-names in several elements.
|
|
||||||
*
|
|
||||||
* The interface is implemented by many hardware sources and sinks.
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "propertyprobe.h"
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
SIGNAL_PROBE_NEEDED,
|
|
||||||
LAST_SIGNAL
|
|
||||||
};
|
|
||||||
|
|
||||||
static void gst_property_probe_iface_init (GstPropertyProbeInterface * iface);
|
|
||||||
|
|
||||||
static guint gst_property_probe_signals[LAST_SIGNAL] = { 0 };
|
|
||||||
|
|
||||||
GType
|
|
||||||
gst_property_probe_get_type (void)
|
|
||||||
{
|
|
||||||
static GType gst_property_probe_type = 0;
|
|
||||||
|
|
||||||
if (!gst_property_probe_type) {
|
|
||||||
static const GTypeInfo gst_property_probe_info = {
|
|
||||||
sizeof (GstPropertyProbeInterface),
|
|
||||||
(GBaseInitFunc) gst_property_probe_iface_init,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
gst_property_probe_type =
|
|
||||||
g_type_register_static (G_TYPE_INTERFACE,
|
|
||||||
"GstPropertyProbe", &gst_property_probe_info, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return gst_property_probe_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gst_property_probe_iface_init (GstPropertyProbeInterface * iface)
|
|
||||||
{
|
|
||||||
static gboolean initialized = FALSE;
|
|
||||||
|
|
||||||
if (!initialized) {
|
|
||||||
/**
|
|
||||||
* GstPropertyProbe::probe-needed
|
|
||||||
* @pspec: #GParamSpec that needs a probe
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/* FIXME:
|
|
||||||
* what is the purpose of this signal, I can't find any usage of it
|
|
||||||
* according to proto n *.h, it should be g_cclosure_marshal_VOID__PARAM
|
|
||||||
*/
|
|
||||||
gst_property_probe_signals[SIGNAL_PROBE_NEEDED] =
|
|
||||||
g_signal_new ("probe-needed", G_TYPE_FROM_CLASS (iface),
|
|
||||||
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstPropertyProbeInterface,
|
|
||||||
probe_needed), NULL, NULL, g_cclosure_marshal_VOID__POINTER,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_POINTER);
|
|
||||||
initialized = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* default virtual functions */
|
|
||||||
iface->get_properties = NULL;
|
|
||||||
iface->get_values = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_get_properties:
|
|
||||||
* @probe: the #GstPropertyProbe to get the properties for.
|
|
||||||
*
|
|
||||||
* Get a list of properties for which probing is supported.
|
|
||||||
*
|
|
||||||
* Returns: the list of properties for which probing is supported
|
|
||||||
* by this element.
|
|
||||||
*/
|
|
||||||
const GList *
|
|
||||||
gst_property_probe_get_properties (GstPropertyProbe * probe)
|
|
||||||
{
|
|
||||||
GstPropertyProbeInterface *iface;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
|
|
||||||
iface = GST_PROPERTY_PROBE_GET_INTERFACE (probe);
|
|
||||||
|
|
||||||
if (iface->get_properties)
|
|
||||||
return iface->get_properties (probe);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_get_property:
|
|
||||||
* @probe: the #GstPropertyProbe to get the properties for.
|
|
||||||
* @name: name of the property.
|
|
||||||
*
|
|
||||||
* Get #GParamSpec for a property for which probing is supported.
|
|
||||||
*
|
|
||||||
* Returns: the #GParamSpec of %NULL.
|
|
||||||
*/
|
|
||||||
const GParamSpec *
|
|
||||||
gst_property_probe_get_property (GstPropertyProbe * probe, const gchar * name)
|
|
||||||
{
|
|
||||||
const GList *pspecs;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
|
|
||||||
pspecs = gst_property_probe_get_properties (probe);
|
|
||||||
|
|
||||||
while (pspecs) {
|
|
||||||
const GParamSpec *pspec = pspecs->data;
|
|
||||||
|
|
||||||
if (pspec) {
|
|
||||||
if (!strcmp (pspec->name, name))
|
|
||||||
return pspec;
|
|
||||||
} else {
|
|
||||||
GST_WARNING_OBJECT (probe, "NULL paramspec in property probe list");
|
|
||||||
}
|
|
||||||
|
|
||||||
pspecs = pspecs->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_probe_property:
|
|
||||||
* @probe: the #GstPropertyProbe to check.
|
|
||||||
* @pspec: #GParamSpec of the property.
|
|
||||||
*
|
|
||||||
* Runs a probe on the property specified by @pspec
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_property_probe_probe_property (GstPropertyProbe * probe,
|
|
||||||
const GParamSpec * pspec)
|
|
||||||
{
|
|
||||||
GstPropertyProbeInterface *iface;
|
|
||||||
|
|
||||||
g_return_if_fail (probe != NULL);
|
|
||||||
g_return_if_fail (GST_IS_PROPERTY_PROBE (probe));
|
|
||||||
g_return_if_fail (pspec != NULL);
|
|
||||||
|
|
||||||
iface = GST_PROPERTY_PROBE_GET_INTERFACE (probe);
|
|
||||||
|
|
||||||
if (iface->probe_property)
|
|
||||||
iface->probe_property (probe, pspec->param_id, pspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_probe_property_name:
|
|
||||||
* @probe: the #GstPropertyProbe to check.
|
|
||||||
* @name: name of the property.
|
|
||||||
*
|
|
||||||
* Runs a probe on the property specified by @name.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_property_probe_probe_property_name (GstPropertyProbe * probe,
|
|
||||||
const gchar * name)
|
|
||||||
{
|
|
||||||
const GParamSpec *pspec;
|
|
||||||
|
|
||||||
g_return_if_fail (probe != NULL);
|
|
||||||
g_return_if_fail (GST_IS_PROPERTY_PROBE (probe));
|
|
||||||
g_return_if_fail (name != NULL);
|
|
||||||
|
|
||||||
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (probe), name);
|
|
||||||
if (!pspec) {
|
|
||||||
g_warning ("No such property %s", name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gst_property_probe_probe_property (probe, pspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_needs_probe:
|
|
||||||
* @probe: the #GstPropertyProbe object to which the given property belongs.
|
|
||||||
* @pspec: a #GParamSpec that identifies the property to check.
|
|
||||||
*
|
|
||||||
* Checks whether a property needs a probe. This might be because
|
|
||||||
* the property wasn't initialized before, or because host setup
|
|
||||||
* changed. This might be, for example, because a new device was
|
|
||||||
* added, and thus device probing needs to be refreshed to display
|
|
||||||
* the new device.
|
|
||||||
*
|
|
||||||
* Returns: TRUE if the property needs a new probe, FALSE if not.
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
gst_property_probe_needs_probe (GstPropertyProbe * probe,
|
|
||||||
const GParamSpec * pspec)
|
|
||||||
{
|
|
||||||
GstPropertyProbeInterface *iface;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, FALSE);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), FALSE);
|
|
||||||
g_return_val_if_fail (pspec != NULL, FALSE);
|
|
||||||
|
|
||||||
iface = GST_PROPERTY_PROBE_GET_INTERFACE (probe);
|
|
||||||
|
|
||||||
if (iface->needs_probe)
|
|
||||||
return iface->needs_probe (probe, pspec->param_id, pspec);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_needs_probe_name:
|
|
||||||
* @probe: the #GstPropertyProbe object to which the given property belongs.
|
|
||||||
* @name: the name of the property to check.
|
|
||||||
*
|
|
||||||
* Same as gst_property_probe_needs_probe ().
|
|
||||||
*
|
|
||||||
* Returns: TRUE if the property needs a new probe, FALSE if not.
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
gst_property_probe_needs_probe_name (GstPropertyProbe * probe,
|
|
||||||
const gchar * name)
|
|
||||||
{
|
|
||||||
const GParamSpec *pspec;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, FALSE);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), FALSE);
|
|
||||||
g_return_val_if_fail (name != NULL, FALSE);
|
|
||||||
|
|
||||||
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (probe), name);
|
|
||||||
if (!pspec) {
|
|
||||||
g_warning ("No such property %s", name);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return gst_property_probe_needs_probe (probe, pspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_get_values:
|
|
||||||
* @probe: the #GstPropertyProbe object.
|
|
||||||
* @pspec: the #GParamSpec property identifier.
|
|
||||||
*
|
|
||||||
* Gets the possible (probed) values for the given property,
|
|
||||||
* requires the property to have been probed before.
|
|
||||||
*
|
|
||||||
* Returns: A list of valid values for the given property.
|
|
||||||
*/
|
|
||||||
GValueArray *
|
|
||||||
gst_property_probe_get_values (GstPropertyProbe * probe,
|
|
||||||
const GParamSpec * pspec)
|
|
||||||
{
|
|
||||||
GstPropertyProbeInterface *iface;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
g_return_val_if_fail (pspec != NULL, NULL);
|
|
||||||
|
|
||||||
iface = GST_PROPERTY_PROBE_GET_INTERFACE (probe);
|
|
||||||
|
|
||||||
if (iface->get_values)
|
|
||||||
return iface->get_values (probe, pspec->param_id, pspec);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_get_values_name:
|
|
||||||
* @probe: the #GstPropertyProbe object.
|
|
||||||
* @name: the name of the property to get values for.
|
|
||||||
*
|
|
||||||
* Same as gst_property_probe_get_values ().
|
|
||||||
*
|
|
||||||
* Returns: A list of valid values for the given property.
|
|
||||||
*/
|
|
||||||
GValueArray *
|
|
||||||
gst_property_probe_get_values_name (GstPropertyProbe * probe,
|
|
||||||
const gchar * name)
|
|
||||||
{
|
|
||||||
const GParamSpec *pspec;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
|
|
||||||
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (probe), name);
|
|
||||||
if (!pspec) {
|
|
||||||
g_warning ("No such property %s", name);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return gst_property_probe_get_values (probe, pspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_probe_and_get_values:
|
|
||||||
* @probe: the #GstPropertyProbe object.
|
|
||||||
* @pspec: The #GParamSpec property identifier.
|
|
||||||
*
|
|
||||||
* Check whether the given property requires a new probe. If so,
|
|
||||||
* fo the probe. After that, retrieve a value list. Meant as a
|
|
||||||
* utility function that wraps the above functions.
|
|
||||||
*
|
|
||||||
* Returns: the list of valid values for this property.
|
|
||||||
*/
|
|
||||||
GValueArray *
|
|
||||||
gst_property_probe_probe_and_get_values (GstPropertyProbe * probe,
|
|
||||||
const GParamSpec * pspec)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
g_return_val_if_fail (pspec != NULL, NULL);
|
|
||||||
|
|
||||||
if (gst_property_probe_needs_probe (probe, pspec))
|
|
||||||
gst_property_probe_probe_property (probe, pspec);
|
|
||||||
|
|
||||||
return gst_property_probe_get_values (probe, pspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_property_probe_probe_and_get_values_name:
|
|
||||||
* @probe: the #GstPropertyProbe object.
|
|
||||||
* @name: the name of the property to get values for.
|
|
||||||
*
|
|
||||||
* Same as gst_property_probe_probe_and_get_values ().
|
|
||||||
*
|
|
||||||
* Returns: the list of valid values for this property.
|
|
||||||
*/
|
|
||||||
GValueArray *
|
|
||||||
gst_property_probe_probe_and_get_values_name (GstPropertyProbe * probe,
|
|
||||||
const gchar * name)
|
|
||||||
{
|
|
||||||
const GParamSpec *pspec;
|
|
||||||
|
|
||||||
g_return_val_if_fail (probe != NULL, NULL);
|
|
||||||
g_return_val_if_fail (GST_IS_PROPERTY_PROBE (probe), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
|
|
||||||
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (probe), name);
|
|
||||||
if (!pspec) {
|
|
||||||
g_warning ("No such property %s", name);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return gst_property_probe_probe_and_get_values (probe, pspec);
|
|
||||||
}
|
|
|
@ -1,112 +0,0 @@
|
||||||
/* GStreamer PropertyProbe
|
|
||||||
* Copyright (C) 2003 David A. Schleef <ds@schleef.org>
|
|
||||||
*
|
|
||||||
* property_probe.h: property_probe interface design
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GST_PROPERTY_PROBE_H__
|
|
||||||
#define __GST_PROPERTY_PROBE_H__
|
|
||||||
|
|
||||||
#include <gst/gst.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
#define GST_TYPE_PROPERTY_PROBE \
|
|
||||||
(gst_property_probe_get_type ())
|
|
||||||
#define GST_PROPERTY_PROBE(obj) \
|
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PROPERTY_PROBE, GstPropertyProbe))
|
|
||||||
#define GST_IS_PROPERTY_PROBE(obj) \
|
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PROPERTY_PROBE))
|
|
||||||
#define GST_PROPERTY_PROBE_GET_INTERFACE(obj) \
|
|
||||||
(G_TYPE_INSTANCE_GET_INTERFACE ((obj), GST_TYPE_PROPERTY_PROBE, GstPropertyProbeInterface))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GstPropertyProbe:
|
|
||||||
*
|
|
||||||
* Opaque #GstPropertyProbe data structure.
|
|
||||||
*/
|
|
||||||
typedef struct _GstPropertyProbe GstPropertyProbe; /* dummy typedef */
|
|
||||||
typedef struct _GstPropertyProbeInterface GstPropertyProbeInterface;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GstPropertyProbeInterface:
|
|
||||||
* @iface: parent interface type.
|
|
||||||
* @probe_needed: default signal handler
|
|
||||||
* @get_properties: virtual method to get list of probable properties
|
|
||||||
* @needs_probe: virtual method to tell if probe need update
|
|
||||||
* @probe_property: virtual method to probe a property
|
|
||||||
* @get_values: virtual method to get probe results for a property
|
|
||||||
*
|
|
||||||
* #GstPropertyProbe interface.
|
|
||||||
*/
|
|
||||||
struct _GstPropertyProbeInterface {
|
|
||||||
GTypeInterface iface;
|
|
||||||
|
|
||||||
/* signals */
|
|
||||||
void (*probe_needed) (GstPropertyProbe *probe,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
|
|
||||||
/* virtual functions */
|
|
||||||
const GList * (*get_properties) (GstPropertyProbe *probe);
|
|
||||||
gboolean (*needs_probe) (GstPropertyProbe *probe,
|
|
||||||
guint prop_id,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
void (*probe_property) (GstPropertyProbe *probe,
|
|
||||||
guint prop_id,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
GValueArray * (*get_values) (GstPropertyProbe *probe,
|
|
||||||
guint prop_id,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
};
|
|
||||||
|
|
||||||
GType gst_property_probe_get_type (void);
|
|
||||||
|
|
||||||
/* virtual class function wrappers */
|
|
||||||
|
|
||||||
/* returns list of GParamSpecs */
|
|
||||||
const GList * gst_property_probe_get_properties (GstPropertyProbe *probe);
|
|
||||||
const GParamSpec *gst_property_probe_get_property (GstPropertyProbe *probe,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
/* probe one property */
|
|
||||||
void gst_property_probe_probe_property (GstPropertyProbe *probe,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
void gst_property_probe_probe_property_name (GstPropertyProbe *probe,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
/* do we need a probe? */
|
|
||||||
gboolean gst_property_probe_needs_probe (GstPropertyProbe *probe,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
gboolean gst_property_probe_needs_probe_name (GstPropertyProbe *probe,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
/* returns list of GValues */
|
|
||||||
GValueArray * gst_property_probe_get_values (GstPropertyProbe *probe,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
GValueArray * gst_property_probe_get_values_name (GstPropertyProbe *probe,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
/* sugar */
|
|
||||||
GValueArray * gst_property_probe_probe_and_get_values (GstPropertyProbe *probe,
|
|
||||||
const GParamSpec *pspec);
|
|
||||||
GValueArray * gst_property_probe_probe_and_get_values_name (GstPropertyProbe *probe,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __GST_PROPERTY_PROBE_H__ */
|
|
|
@ -490,10 +490,12 @@ gst_encoding_video_profile_class_init (GObjectClass * klass)
|
||||||
* gst_encoding_video_profile_get_pass:
|
* gst_encoding_video_profile_get_pass:
|
||||||
* @prof: a #GstEncodingVideoProfile
|
* @prof: a #GstEncodingVideoProfile
|
||||||
*
|
*
|
||||||
* Since: 0.10.32
|
* Get the pass number if this is part of a multi-pass profile.
|
||||||
*
|
*
|
||||||
* Returns: The pass number if this is part of a multi-pass profile. Starts at
|
* Returns: The pass number. Starts at 1 for multi-pass. 0 if this is
|
||||||
* 1 for multi-pass. 0 if this is not a multi-pass profile
|
* not a multi-pass profile
|
||||||
|
*
|
||||||
|
* Since: 0.10.32
|
||||||
*/
|
*/
|
||||||
guint
|
guint
|
||||||
gst_encoding_video_profile_get_pass (GstEncodingVideoProfile * prof)
|
gst_encoding_video_profile_get_pass (GstEncodingVideoProfile * prof)
|
||||||
|
|
|
@ -712,9 +712,9 @@ gst_video_overlay_rectangle_instance_init (GstMiniObject * mini_obj)
|
||||||
* @width: the width of the rectangle in @pixels
|
* @width: the width of the rectangle in @pixels
|
||||||
* @height: the height of the rectangle in @pixels
|
* @height: the height of the rectangle in @pixels
|
||||||
* @stride: the stride of the rectangle in @pixels in bytes (>= 4*width)
|
* @stride: the stride of the rectangle in @pixels in bytes (>= 4*width)
|
||||||
* @x: the X co-ordinate on the video where the top-left corner of this
|
* @render_x: the X co-ordinate on the video where the top-left corner of this
|
||||||
* overlay rectangle should be rendered to
|
* overlay rectangle should be rendered to
|
||||||
* @y: the Y co-ordinate on the video where the top-left corner of this
|
* @render_y: the Y co-ordinate on the video where the top-left corner of this
|
||||||
* overlay rectangle should be rendered to
|
* overlay rectangle should be rendered to
|
||||||
* @render_width: the render width of this rectangle on the video
|
* @render_width: the render width of this rectangle on the video
|
||||||
* @render_height: the render height of this rectangle on the video
|
* @render_height: the render height of this rectangle on the video
|
||||||
|
@ -933,7 +933,7 @@ done:
|
||||||
* @rectangle: a #GstVideoOverlayRectangle
|
* @rectangle: a #GstVideoOverlayRectangle
|
||||||
* @width: (out): address where to store the width of the unscaled
|
* @width: (out): address where to store the width of the unscaled
|
||||||
* rectangle in pixels
|
* rectangle in pixels
|
||||||
* @width: (out): address where to store the height of the unscaled
|
* @height: (out): address where to store the height of the unscaled
|
||||||
* rectangle in pixels
|
* rectangle in pixels
|
||||||
* @stride: (out): address of guint variable where to store the row
|
* @stride: (out): address of guint variable where to store the row
|
||||||
* stride of the ARGB pixel data in the buffer
|
* stride of the ARGB pixel data in the buffer
|
||||||
|
|
|
@ -305,8 +305,8 @@ typedef struct _GstVideoFrame GstVideoFrame;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstVideoInterlaceMode:
|
* GstVideoInterlaceMode:
|
||||||
* GST_VIDEO_INTERLACE_MODE_PROGRESSIVE: all frames are progressive
|
* @GST_VIDEO_INTERLACE_MODE_PROGRESSIVE: all frames are progressive
|
||||||
* GST_VIDEO_INTERLACE_MODE_INTERLEAVED: video is interlaced and all fields
|
* @GST_VIDEO_INTERLACE_MODE_INTERLEAVED: video is interlaced and all fields
|
||||||
* are interlaced in one frame.
|
* are interlaced in one frame.
|
||||||
* @GST_VIDEO_INTERLACE_MODE_MIXED: video contains both interlaced and
|
* @GST_VIDEO_INTERLACE_MODE_MIXED: video contains both interlaced and
|
||||||
* progressive frames, the buffer flags describe the frame and fields.
|
* progressive frames, the buffer flags describe the frame and fields.
|
||||||
|
@ -725,15 +725,15 @@ gboolean gst_video_event_parse_still_frame (GstEvent * event, gboolean * i
|
||||||
/* video force key unit event creation and parsing */
|
/* video force key unit event creation and parsing */
|
||||||
|
|
||||||
GstEvent * gst_video_event_new_downstream_force_key_unit (GstClockTime timestamp,
|
GstEvent * gst_video_event_new_downstream_force_key_unit (GstClockTime timestamp,
|
||||||
GstClockTime streamtime,
|
GstClockTime stream_time,
|
||||||
GstClockTime runningtime,
|
GstClockTime running_time,
|
||||||
gboolean all_headers,
|
gboolean all_headers,
|
||||||
guint count);
|
guint count);
|
||||||
|
|
||||||
gboolean gst_video_event_parse_downstream_force_key_unit (GstEvent * event,
|
gboolean gst_video_event_parse_downstream_force_key_unit (GstEvent * event,
|
||||||
GstClockTime * timestamp,
|
GstClockTime * timestamp,
|
||||||
GstClockTime * streamtime,
|
GstClockTime * stream_time,
|
||||||
GstClockTime * runningtime,
|
GstClockTime * running_time,
|
||||||
gboolean * all_headers,
|
gboolean * all_headers,
|
||||||
guint * count);
|
guint * count);
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,6 @@
|
||||||
|
|
||||||
/* Our interfaces */
|
/* Our interfaces */
|
||||||
#include <gst/interfaces/navigation.h>
|
#include <gst/interfaces/navigation.h>
|
||||||
#include <gst/interfaces/propertyprobe.h>
|
|
||||||
#include <gst/video/videooverlay.h>
|
#include <gst/video/videooverlay.h>
|
||||||
#include <gst/video/colorbalance.h>
|
#include <gst/video/colorbalance.h>
|
||||||
/* Helper functions */
|
/* Helper functions */
|
||||||
|
@ -200,9 +199,6 @@ static void gst_xvimagesink_video_overlay_init (GstVideoOverlayInterface *
|
||||||
iface);
|
iface);
|
||||||
static void gst_xvimagesink_colorbalance_init (GstColorBalanceInterface *
|
static void gst_xvimagesink_colorbalance_init (GstColorBalanceInterface *
|
||||||
iface);
|
iface);
|
||||||
static void
|
|
||||||
gst_xvimagesink_property_probe_interface_init (GstPropertyProbeInterface *
|
|
||||||
iface);
|
|
||||||
#define gst_xvimagesink_parent_class parent_class
|
#define gst_xvimagesink_parent_class parent_class
|
||||||
G_DEFINE_TYPE_WITH_CODE (GstXvImageSink, gst_xvimagesink, GST_TYPE_VIDEO_SINK,
|
G_DEFINE_TYPE_WITH_CODE (GstXvImageSink, gst_xvimagesink, GST_TYPE_VIDEO_SINK,
|
||||||
G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
|
G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
|
||||||
|
@ -210,9 +206,7 @@ G_DEFINE_TYPE_WITH_CODE (GstXvImageSink, gst_xvimagesink, GST_TYPE_VIDEO_SINK,
|
||||||
G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_OVERLAY,
|
G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_OVERLAY,
|
||||||
gst_xvimagesink_video_overlay_init);
|
gst_xvimagesink_video_overlay_init);
|
||||||
G_IMPLEMENT_INTERFACE (GST_TYPE_COLOR_BALANCE,
|
G_IMPLEMENT_INTERFACE (GST_TYPE_COLOR_BALANCE,
|
||||||
gst_xvimagesink_colorbalance_init);
|
gst_xvimagesink_colorbalance_init));
|
||||||
G_IMPLEMENT_INTERFACE (GST_TYPE_PROPERTY_PROBE,
|
|
||||||
gst_xvimagesink_property_probe_interface_init));
|
|
||||||
|
|
||||||
|
|
||||||
/* ============================================================= */
|
/* ============================================================= */
|
||||||
|
@ -2336,6 +2330,7 @@ gst_xvimagesink_colorbalance_init (GstColorBalanceInterface * iface)
|
||||||
iface->get_value = gst_xvimagesink_colorbalance_get_value;
|
iface->get_value = gst_xvimagesink_colorbalance_get_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static const GList *
|
static const GList *
|
||||||
gst_xvimagesink_probe_get_properties (GstPropertyProbe * probe)
|
gst_xvimagesink_probe_get_properties (GstPropertyProbe * probe)
|
||||||
{
|
{
|
||||||
|
@ -2494,6 +2489,7 @@ gst_xvimagesink_property_probe_interface_init (GstPropertyProbeInterface *
|
||||||
iface->needs_probe = gst_xvimagesink_probe_needs_probe;
|
iface->needs_probe = gst_xvimagesink_probe_needs_probe;
|
||||||
iface->get_values = gst_xvimagesink_probe_get_values;
|
iface->get_values = gst_xvimagesink_probe_get_values;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* =========================================== */
|
/* =========================================== */
|
||||||
/* */
|
/* */
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <gst/video/videooverlay.h>
|
#include <gst/video/videooverlay.h>
|
||||||
#include <gst/interfaces/propertyprobe.h>
|
|
||||||
|
|
||||||
static GtkWidget *video_window = NULL;
|
static GtkWidget *video_window = NULL;
|
||||||
static GstElement *sink = NULL;
|
static GstElement *sink = NULL;
|
||||||
|
@ -169,8 +168,10 @@ main (int argc, char **argv)
|
||||||
GstElement *pipeline, *src;
|
GstElement *pipeline, *src;
|
||||||
GstBus *bus;
|
GstBus *bus;
|
||||||
GstStateChangeReturn sret;
|
GstStateChangeReturn sret;
|
||||||
|
#if 0
|
||||||
GstPropertyProbe *probe;
|
GstPropertyProbe *probe;
|
||||||
GValueArray *arr;
|
GValueArray *arr;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !GLIB_CHECK_VERSION (2, 31, 0)
|
#if !GLIB_CHECK_VERSION (2, 31, 0)
|
||||||
if (!g_thread_supported ())
|
if (!g_thread_supported ())
|
||||||
|
@ -201,7 +202,7 @@ main (int argc, char **argv)
|
||||||
gst_object_unref (pipeline);
|
gst_object_unref (pipeline);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
probe = GST_PROPERTY_PROBE (sink);
|
probe = GST_PROPERTY_PROBE (sink);
|
||||||
if (!probe) {
|
if (!probe) {
|
||||||
g_printerr ("Can't probe sink\n");
|
g_printerr ("Can't probe sink\n");
|
||||||
|
@ -220,6 +221,7 @@ main (int argc, char **argv)
|
||||||
}
|
}
|
||||||
if (arr)
|
if (arr)
|
||||||
g_value_array_free (arr);
|
g_value_array_free (arr);
|
||||||
|
#endif
|
||||||
|
|
||||||
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
||||||
gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
|
gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
|
||||||
|
|
Loading…
Reference in a new issue