From ffee4e62605d635796fd924f00932f6969863ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 19 May 2008 10:46:44 +0000 Subject: [PATCH] API: add gst_type_find_suggest_simple(), #533740. Original commit message from CVS: * docs/gst/gstreamer-sections.txt: * gst/gsttypefind.c: (gst_type_find_suggest_simple): * gst/gsttypefind.h: * win32/common/libgstreamer.def: API: add gst_type_find_suggest_simple(), #533740. --- ChangeLog | 8 ++++++ docs/gst/gstreamer-sections.txt | 1 + gst/gsttypefind.c | 51 +++++++++++++++++++++++++++++++++ gst/gsttypefind.h | 5 ++++ win32/common/libgstreamer.def | 1 + 5 files changed, 66 insertions(+) diff --git a/ChangeLog b/ChangeLog index 834cfa65c2..9a0260c363 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-19 Tim-Philipp Müller + + * docs/gst/gstreamer-sections.txt: + * gst/gsttypefind.c: (gst_type_find_suggest_simple): + * gst/gsttypefind.h: + * win32/common/libgstreamer.def: + API: add gst_type_find_suggest_simple(), #533740. + 2008-05-19 Tim-Philipp Müller * libs/gst/base/gstbasesrc.c: (gst_base_src_start): diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt index 21296c595d..9d81be9705 100644 --- a/docs/gst/gstreamer-sections.txt +++ b/docs/gst/gstreamer-sections.txt @@ -2144,6 +2144,7 @@ GstTypeFindFunction GstTypeFindProbability gst_type_find_peek gst_type_find_suggest +gst_type_find_suggest_simple gst_type_find_get_length gst_type_find_register diff --git a/gst/gsttypefind.c b/gst/gsttypefind.c index 219b03b2c8..683ccc98cb 100644 --- a/gst/gsttypefind.c +++ b/gst/gsttypefind.c @@ -156,6 +156,57 @@ gst_type_find_suggest (GstTypeFind * find, guint probability, find->suggest (find->data, probability, caps); } +/** + * gst_type_find_suggest_simple: + * @find: The #GstTypeFind object the function was called with + * @probability: The probability in percent that the suggestion is right + * @media_type: the media type of the suggested caps + * @fieldname: first field of the suggested caps, or NULL + * @...: additional arguments to the suggested caps in the same format as the + * arguments passed to gst_structure_new() (ie. triplets of field name, + * field GType and field value) + * + * If a #GstTypeFindFunction calls this function it suggests the caps with the + * given probability. A #GstTypeFindFunction may supply different suggestions + * in one call. It is up to the caller of the #GstTypeFindFunction to interpret + * these values. + * + * This function is similar to gst_type_find_suggest(), only that instead of + * passing a #GstCaps argument you can create the caps on the fly in the same + * way as you can with gst_caps_new_simple(). + * + * Make sure you terminate the list of arguments with a NULL argument and that + * the values passed have the correct type (in terms of width in bytes when + * passed to the vararg function - this applies particularly to gdouble and + * guint64 arguments). + * + * Since: 0.10.20 + */ +void +gst_type_find_suggest_simple (GstTypeFind * find, guint probability, + const char *media_type, const char *fieldname, ...) +{ + GstStructure *structure; + va_list var_args; + GstCaps *caps; + + g_return_if_fail (find->suggest != NULL); + g_return_if_fail (probability <= 100); + g_return_if_fail (media_type != NULL); + + caps = gst_caps_new_empty (); + + va_start (var_args, fieldname); + structure = gst_structure_new_valist (media_type, fieldname, var_args); + va_end (var_args); + + gst_caps_append_structure (caps, structure); + g_return_if_fail (gst_caps_is_fixed (caps)); + + find->suggest (find->data, probability, caps); + gst_caps_unref (caps); +} + /** * gst_type_find_get_length: * @find: The #GstTypeFind the function was called with diff --git a/gst/gsttypefind.h b/gst/gsttypefind.h index 5b613d7e74..6e1f049786 100644 --- a/gst/gsttypefind.h +++ b/gst/gsttypefind.h @@ -100,6 +100,11 @@ void gst_type_find_suggest (GstTypeFind * find, guint probability, const GstCaps * caps); +void gst_type_find_suggest_simple (GstTypeFind * find, + guint probability, + const char * media_type, + const char * fieldname, ...); + guint64 gst_type_find_get_length (GstTypeFind * find); /* registration interface */ diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def index d60e562942..9be809b385 100644 --- a/win32/common/libgstreamer.def +++ b/win32/common/libgstreamer.def @@ -907,6 +907,7 @@ EXPORTS gst_type_find_probability_get_type gst_type_find_register gst_type_find_suggest + gst_type_find_suggest_simple gst_type_register_static_full gst_update_registry gst_uri_construct