expand tabs

Original commit message from CVS:
expand tabs
This commit is contained in:
Thomas Vander Stichele 2005-12-06 19:29:15 +00:00
parent 2d257b4108
commit 288f61d21f
37 changed files with 499 additions and 455 deletions

View file

@ -1,3 +1,43 @@
2005-12-06 Thomas Vander Stichele <thomas at apestaart dot org>
* docs/libs/tmpl/gstdataprotocol.sgml:
* docs/random/omega/testing/gstobject.c:
* gst/gst.c:
* gst/gstclock.c:
* gst/gstelement.c:
* gst/gstelementfactory.c:
* gst/gsterror.c:
* gst/gstevent.c:
* gst/gstghostpad.c:
* gst/gstinfo.c:
* gst/gstpadtemplate.c:
* gst/gstregistryxml.c:
* gst/gsttaglist.c:
* gst/gsttagsetter.c:
* gst/gsttypefind.c:
* gst/gstvalue.c:
* libs/gst/base/gstbasesrc.c:
* libs/gst/net/gstnetclientclock.c:
* libs/gst/net/gstnettimeprovider.c:
* plugins/elements/gstfakesrc.c:
* plugins/elements/gstfdsrc.c:
* plugins/elements/gstfilesrc.c:
* plugins/elements/gstidentity.c:
* plugins/elements/gstqueue.c:
* plugins/elements/gsttypefindelement.c:
* plugins/indexers/gstfileindex.c:
* plugins/indexers/gstmemindex.c:
* tests/check/gst/gsttag.c:
* tests/old/examples/cutter/cutter.c:
* tests/old/examples/mixer/mixer.c:
* tests/old/examples/xml/runxml.c: (main):
* tests/old/testsuite/caps/normalisation.c:
* tests/old/testsuite/debug/global.c:
* tests/old/testsuite/parse/parse1.c:
* tools/gst-xmlinspect.c:
* win32/common/dirent.c:
expand tabs
=== release 0.10.0 === === release 0.10.0 ===
2005-12-05 <thomas (at) apestaart (dot) org> 2005-12-05 <thomas (at) apestaart (dot) org>

View file

@ -27,6 +27,9 @@ network connections also need a protocol to do this.
#GstBuffer, #GstCaps, #GstEvent #GstBuffer, #GstCaps, #GstEvent
</para> </para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### ENUM GstDPHeaderFlag ##### --> <!-- ##### ENUM GstDPHeaderFlag ##### -->
<para> <para>

View file

@ -19,24 +19,24 @@ tabpad (gchar * str, gint width)
#define TEST_CATEGORY(category) fprintf(stderr,"\n\nCategory: %s\n",category) #define TEST_CATEGORY(category) fprintf(stderr,"\n\nCategory: %s\n",category)
#define TEST(test) fprintf(stderr,"Test %d: %s...\n",_testnum,test),_passed = TRUE #define TEST(test) fprintf(stderr,"Test %d: %s...\n",_testnum,test),_passed = TRUE
#define ASSERT(expr) G_STMT_START{ \ #define ASSERT(expr) G_STMT_START{ \
fprintf(stderr,"\t%s:",#expr);tabpad(#expr,50); \ fprintf(stderr,"\t%s:",#expr);tabpad(#expr,50); \
if (!(expr)) { \ if (!(expr)) { \
fprintf(stderr,"FAILED\n"); \ fprintf(stderr,"FAILED\n"); \
_passed = FALSE; \ _passed = FALSE; \
} else { \ } else { \
fprintf(stderr,"passed\n"); \ fprintf(stderr,"passed\n"); \
} \ } \
}G_STMT_END; }G_STMT_END;
#define ENDTEST() G_STMT_START{ \ #define ENDTEST() G_STMT_START{ \
_testnum++; \ _testnum++; \
if (_passed) { \ if (_passed) { \
fprintf(stderr,"\tpassed.\n"); \ fprintf(stderr,"\tpassed.\n"); \
_passed_tests++; \ _passed_tests++; \
} else { \ } else { \
fprintf(stderr,"\tFAILED.\n"); \ fprintf(stderr,"\tFAILED.\n"); \
} \ } \
_total_tests++; \ _total_tests++; \
}G_STMT_END; }G_STMT_END;
void void

View file

@ -112,7 +112,7 @@
#define GST_CAT_DEFAULT GST_CAT_GST_INIT #define GST_CAT_DEFAULT GST_CAT_GST_INIT
#define MAX_PATH_SPLIT 16 #define MAX_PATH_SPLIT 16
#define GST_PLUGIN_SEPARATOR "," #define GST_PLUGIN_SEPARATOR ","
static gboolean gst_initialized = FALSE; static gboolean gst_initialized = FALSE;

View file

@ -109,10 +109,10 @@ static GstAllocTrace *_gst_clock_entry_trace;
/* #define DEBUGGING_ENABLED */ /* #define DEBUGGING_ENABLED */
#define DEFAULT_STATS FALSE #define DEFAULT_STATS FALSE
#define DEFAULT_WINDOW_SIZE 32 #define DEFAULT_WINDOW_SIZE 32
#define DEFAULT_WINDOW_THRESHOLD 4 #define DEFAULT_WINDOW_THRESHOLD 4
#define DEFAULT_TIMEOUT GST_SECOND / 10 #define DEFAULT_TIMEOUT GST_SECOND / 10
enum enum
{ {

View file

@ -1834,25 +1834,25 @@ nothing_aborted:
} }
/** /**
* gst_element_continue_state: * gst_element_continue_state:
* @element: a #GstElement to continue the state change of. * @element: a #GstElement to continue the state change of.
* @ret: The previous state return value * @ret: The previous state return value
* *
* Commit the state change of the element and proceed to the next * Commit the state change of the element and proceed to the next
* pending state if any. This function is used * pending state if any. This function is used
* by elements that do asynchronous state changes. * by elements that do asynchronous state changes.
* The core will normally call this method automatically when an * The core will normally call this method automatically when an
* element returned SUCCESS from the state change function. * element returned SUCCESS from the state change function.
* Elements that return ASYNC from the change_state function should * Elements that return ASYNC from the change_state function should
* eventually call this method from the streaming thread to signal * eventually call this method from the streaming thread to signal
* successfull state change completion. * successfull state change completion.
* *
* If after calling this method the element still has not reached * If after calling this method the element still has not reached
* the pending state, the next state change is performed. * the pending state, the next state change is performed.
* *
* Returns: The result of the commit state change. * Returns: The result of the commit state change.
* *
* MT safe. * MT safe.
*/ */
GstStateChangeReturn GstStateChangeReturn
gst_element_continue_state (GstElement * element, GstStateChangeReturn ret) gst_element_continue_state (GstElement * element, GstStateChangeReturn ret)

View file

@ -178,15 +178,15 @@ __gst_element_details_clear (GstElementDetails * dp)
dp->author = NULL; dp->author = NULL;
} }
#define VALIDATE_SET(__dest, __src, __entry) \ #define VALIDATE_SET(__dest, __src, __entry) \
G_STMT_START { \ G_STMT_START { \
if (g_utf8_validate (__src->__entry, -1, NULL)) { \ if (g_utf8_validate (__src->__entry, -1, NULL)) { \
__dest->__entry = g_strdup (__src->__entry); \ __dest->__entry = g_strdup (__src->__entry); \
} else { \ } else { \
g_warning ("Invalid UTF-8 in " G_STRINGIFY (__entry) ": %s", \ g_warning ("Invalid UTF-8 in " G_STRINGIFY (__entry) ": %s", \
__src->__entry); \ __src->__entry); \
__dest->__entry = g_strdup ("[ERROR: invalid UTF-8]"); \ __dest->__entry = g_strdup ("[ERROR: invalid UTF-8]"); \
} \ } \
} G_STMT_END } G_STMT_END
void void

View file

@ -99,10 +99,10 @@
#include "gst-i18n-lib.h" #include "gst-i18n-lib.h"
#define TABLE(t, d, a, b) t[GST_ ## d ## _ERROR_ ## a] = g_strdup (b) #define TABLE(t, d, a, b) t[GST_ ## d ## _ERROR_ ## a] = g_strdup (b)
#define QUARK_FUNC(string) \ #define QUARK_FUNC(string) \
GQuark gst_ ## string ## _error_quark (void) { \ GQuark gst_ ## string ## _error_quark (void) { \
static GQuark quark; \ static GQuark quark; \
if (!quark) \ if (!quark) \
quark = g_quark_from_static_string ("gst-" # string "-error-quark"); \ quark = g_quark_from_static_string ("gst-" # string "-error-quark"); \
return quark; } return quark; }

View file

@ -57,9 +57,9 @@
* // the pipeline to decrease latency. * // the pipeline to decrease latency.
* event = gst_event_new_seek (1.0, * event = gst_event_new_seek (1.0,
* GST_FORMAT_TIME, * GST_FORMAT_TIME,
* GST_SEEK_FLAG_FLUSH, * GST_SEEK_FLAG_FLUSH,
* GST_SEEK_TYPE_SET, 2 * GST_SECOND, * GST_SEEK_TYPE_SET, 2 * GST_SECOND,
* GST_SEEK_TYPE_SET, 5 * GST_SECOND); * GST_SEEK_TYPE_SET, 5 * GST_SECOND);
* ... * ...
* result = gst_element_send_event (pipeline, event); * result = gst_element_send_event (pipeline, event);
* if (!result) * if (!result)

View file

@ -45,20 +45,20 @@
#include "gstghostpad.h" #include "gstghostpad.h"
#define GST_TYPE_PROXY_PAD (gst_proxy_pad_get_type ()) #define GST_TYPE_PROXY_PAD (gst_proxy_pad_get_type ())
#define GST_IS_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PROXY_PAD)) #define GST_IS_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PROXY_PAD))
#define GST_IS_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PROXY_PAD)) #define GST_IS_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PROXY_PAD))
#define GST_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PROXY_PAD, GstProxyPad)) #define GST_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PROXY_PAD, GstProxyPad))
#define GST_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PROXY_PAD, GstProxyPadClass)) #define GST_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PROXY_PAD, GstProxyPadClass))
#define GST_PROXY_PAD_TARGET(pad) (GST_PROXY_PAD (pad)->target) #define GST_PROXY_PAD_TARGET(pad) (GST_PROXY_PAD (pad)->target)
typedef struct _GstProxyPad GstProxyPad; typedef struct _GstProxyPad GstProxyPad;
typedef struct _GstProxyPadClass GstProxyPadClass; typedef struct _GstProxyPadClass GstProxyPadClass;
#define GST_PROXY_GET_LOCK(pad) (GST_PROXY_PAD (pad)->proxy_lock) #define GST_PROXY_GET_LOCK(pad) (GST_PROXY_PAD (pad)->proxy_lock)
#define GST_PROXY_LOCK(pad) (g_mutex_lock (GST_PROXY_GET_LOCK (pad))) #define GST_PROXY_LOCK(pad) (g_mutex_lock (GST_PROXY_GET_LOCK (pad)))
#define GST_PROXY_UNLOCK(pad) (g_mutex_unlock (GST_PROXY_GET_LOCK (pad))) #define GST_PROXY_UNLOCK(pad) (g_mutex_unlock (GST_PROXY_GET_LOCK (pad)))
struct _GstProxyPad struct _GstProxyPad
{ {

View file

@ -51,7 +51,7 @@
* the variables and set the default category. * the variables and set the default category.
* <informalexample> * <informalexample>
* <programlisting> * <programlisting>
* GST_DEBUG_CATEGORY (my_category); // define category * GST_DEBUG_CATEGORY (my_category); // define category
* &hash;define GST_CAT_DEFAULT my_category // set as default * &hash;define GST_CAT_DEFAULT my_category // set as default
* </programlisting> * </programlisting>
* </informalexample> * </informalexample>

View file

@ -43,10 +43,10 @@
* <programlisting> * <programlisting>
* GstStaticPadTemplate my_template = * GstStaticPadTemplate my_template =
* GST_STATIC_PAD_TEMPLATE ( * GST_STATIC_PAD_TEMPLATE (
* "sink", // the name of the pad * "sink", // the name of the pad
* GST_PAD_SINK, // the direction of the pad * GST_PAD_SINK, // the direction of the pad
* GST_PAD_ALWAYS, // when this pad will be present * GST_PAD_ALWAYS, // when this pad will be present
* GST_STATIC_CAPS ( // the capabilities of the padtemplate * GST_STATIC_CAPS ( // the capabilities of the padtemplate
* "audio/x-raw-int, " * "audio/x-raw-int, "
* "channels = (int) [ 1, 6 ]" * "channels = (int) [ 1, 6 ]"
* ) * )

View file

@ -519,13 +519,13 @@ gst_registry_xml_read_cache (GstRegistry * registry, const char *location)
/* /*
* Save * Save
*/ */
#define PUT_ESCAPED(prefix,tag,value) \ #define PUT_ESCAPED(prefix,tag,value) \
G_STMT_START{ \ G_STMT_START{ \
const gchar *toconv = value; \ const gchar *toconv = value; \
if (toconv) { \ if (toconv) { \
gchar *v = g_markup_escape_text (toconv, strlen (toconv)); \ gchar *v = g_markup_escape_text (toconv, strlen (toconv)); \
gst_registry_xml_save (registry, prefix "<%s>%s</%s>\n", tag, v, tag); \ gst_registry_xml_save (registry, prefix "<%s>%s</%s>\n", tag, v, tag); \
g_free (v); \ g_free (v); \
} \ } \
}G_STMT_END }G_STMT_END

View file

@ -41,7 +41,7 @@
#include <gobject/gvaluecollector.h> #include <gobject/gvaluecollector.h>
#include <string.h> #include <string.h>
#define GST_TAG_IS_VALID(tag) (gst_tag_get_info (tag) != NULL) #define GST_TAG_IS_VALID(tag) (gst_tag_get_info (tag) != NULL)
typedef struct typedef struct
{ {
@ -867,7 +867,7 @@ gst_tag_list_get_value_index (const GstTagList * list, const gchar * tag,
* You must g_value_unset() the value after use. * You must g_value_unset() the value after use.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
gboolean gboolean
gst_tag_list_copy_value (GValue * dest, const GstTagList * list, gst_tag_list_copy_value (GValue * dest, const GstTagList * list,
@ -899,39 +899,39 @@ gst_tag_list_copy_value (GValue * dest, const GstTagList * list,
/***** evil macros to get all the gst_tag_list_get_*() functions right *****/ /***** evil macros to get all the gst_tag_list_get_*() functions right *****/
#define TAG_MERGE_FUNCS(name,type) \ #define TAG_MERGE_FUNCS(name,type) \
gboolean \ gboolean \
gst_tag_list_get_ ## name (const GstTagList *list, const gchar *tag, \ gst_tag_list_get_ ## name (const GstTagList *list, const gchar *tag, \
type *value) \ type *value) \
{ \ { \
GValue v = { 0, }; \ GValue v = { 0, }; \
\ \
g_return_val_if_fail (GST_IS_TAG_LIST (list), FALSE); \ g_return_val_if_fail (GST_IS_TAG_LIST (list), FALSE); \
g_return_val_if_fail (tag != NULL, FALSE); \ g_return_val_if_fail (tag != NULL, FALSE); \
g_return_val_if_fail (value != NULL, FALSE); \ g_return_val_if_fail (value != NULL, FALSE); \
\ \
if (!gst_tag_list_copy_value (&v, list, tag)) \ if (!gst_tag_list_copy_value (&v, list, tag)) \
return FALSE; \ return FALSE; \
*value = COPY_FUNC (g_value_get_ ## name (&v)); \ *value = COPY_FUNC (g_value_get_ ## name (&v)); \
g_value_unset (&v); \ g_value_unset (&v); \
return TRUE; \ return TRUE; \
} \ } \
\ \
gboolean \ gboolean \
gst_tag_list_get_ ## name ## _index (const GstTagList *list, \ gst_tag_list_get_ ## name ## _index (const GstTagList *list, \
const gchar *tag, \ const gchar *tag, \
guint index, type *value) \ guint index, type *value) \
{ \ { \
const GValue *v; \ const GValue *v; \
\ \
g_return_val_if_fail (GST_IS_TAG_LIST (list), FALSE); \ g_return_val_if_fail (GST_IS_TAG_LIST (list), FALSE); \
g_return_val_if_fail (tag != NULL, FALSE); \ g_return_val_if_fail (tag != NULL, FALSE); \
g_return_val_if_fail (value != NULL, FALSE); \ g_return_val_if_fail (value != NULL, FALSE); \
\ \
if ((v = gst_tag_list_get_value_index (list, tag, index)) == NULL) \ if ((v = gst_tag_list_get_value_index (list, tag, index)) == NULL) \
return FALSE; \ return FALSE; \
*value = COPY_FUNC (g_value_get_ ## name (v)); \ *value = COPY_FUNC (g_value_get_ ## name (v)); \
return TRUE; \ return TRUE; \
} }
#define COPY_FUNC /**/ #define COPY_FUNC /**/
@ -945,7 +945,7 @@ gst_tag_list_get_ ## name ## _index (const GstTagList *list, \
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_char_index: * gst_tag_list_get_char_index:
@ -958,7 +958,7 @@ gst_tag_list_get_ ## name ## _index (const GstTagList *list, \
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (char, gchar) TAG_MERGE_FUNCS (char, gchar)
/** /**
@ -971,7 +971,7 @@ TAG_MERGE_FUNCS (char, gchar)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_uchar_index: * gst_tag_list_get_uchar_index:
@ -984,7 +984,7 @@ TAG_MERGE_FUNCS (char, gchar)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (uchar, guchar) TAG_MERGE_FUNCS (uchar, guchar)
/** /**
@ -997,7 +997,7 @@ TAG_MERGE_FUNCS (uchar, guchar)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_boolean_index: * gst_tag_list_get_boolean_index:
@ -1010,7 +1010,7 @@ TAG_MERGE_FUNCS (uchar, guchar)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (boolean, gboolean) TAG_MERGE_FUNCS (boolean, gboolean)
/** /**
@ -1023,7 +1023,7 @@ TAG_MERGE_FUNCS (boolean, gboolean)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_int_index: * gst_tag_list_get_int_index:
@ -1036,7 +1036,7 @@ TAG_MERGE_FUNCS (boolean, gboolean)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (int, gint) TAG_MERGE_FUNCS (int, gint)
/** /**
@ -1049,7 +1049,7 @@ TAG_MERGE_FUNCS (int, gint)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_uint_index: * gst_tag_list_get_uint_index:
@ -1062,7 +1062,7 @@ TAG_MERGE_FUNCS (int, gint)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (uint, guint) TAG_MERGE_FUNCS (uint, guint)
/** /**
@ -1075,7 +1075,7 @@ TAG_MERGE_FUNCS (uint, guint)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_long_index: * gst_tag_list_get_long_index:
@ -1088,7 +1088,7 @@ TAG_MERGE_FUNCS (uint, guint)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (long, glong) TAG_MERGE_FUNCS (long, glong)
/** /**
@ -1101,7 +1101,7 @@ TAG_MERGE_FUNCS (long, glong)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_ulong_index: * gst_tag_list_get_ulong_index:
@ -1114,7 +1114,7 @@ TAG_MERGE_FUNCS (long, glong)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (ulong, gulong) TAG_MERGE_FUNCS (ulong, gulong)
/** /**
@ -1127,7 +1127,7 @@ TAG_MERGE_FUNCS (ulong, gulong)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_int64_index: * gst_tag_list_get_int64_index:
@ -1140,7 +1140,7 @@ TAG_MERGE_FUNCS (ulong, gulong)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (int64, gint64) TAG_MERGE_FUNCS (int64, gint64)
/** /**
@ -1153,7 +1153,7 @@ TAG_MERGE_FUNCS (int64, gint64)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_uint64_index: * gst_tag_list_get_uint64_index:
@ -1166,7 +1166,7 @@ TAG_MERGE_FUNCS (int64, gint64)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (uint64, guint64) TAG_MERGE_FUNCS (uint64, guint64)
/** /**
@ -1179,7 +1179,7 @@ TAG_MERGE_FUNCS (uint64, guint64)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_float_index: * gst_tag_list_get_float_index:
@ -1192,7 +1192,7 @@ TAG_MERGE_FUNCS (uint64, guint64)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (float, gfloat) TAG_MERGE_FUNCS (float, gfloat)
/** /**
@ -1205,7 +1205,7 @@ TAG_MERGE_FUNCS (float, gfloat)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_double_index: * gst_tag_list_get_double_index:
@ -1218,7 +1218,7 @@ TAG_MERGE_FUNCS (float, gfloat)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (double, gdouble) TAG_MERGE_FUNCS (double, gdouble)
/** /**
@ -1231,7 +1231,7 @@ TAG_MERGE_FUNCS (double, gdouble)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_pointer_index: * gst_tag_list_get_pointer_index:
@ -1244,7 +1244,7 @@ TAG_MERGE_FUNCS (double, gdouble)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (pointer, gpointer) TAG_MERGE_FUNCS (pointer, gpointer)
#undef COPY_FUNC #undef COPY_FUNC
@ -1259,7 +1259,7 @@ TAG_MERGE_FUNCS (pointer, gpointer)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
/** /**
* gst_tag_list_get_string_index: * gst_tag_list_get_string_index:
@ -1272,7 +1272,7 @@ TAG_MERGE_FUNCS (pointer, gpointer)
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list. * given list.
*/ */
TAG_MERGE_FUNCS (string, gchar *) TAG_MERGE_FUNCS (string, gchar *)
@ -1286,7 +1286,7 @@ TAG_MERGE_FUNCS (string, gchar *)
* into one if multiple values are associated with the tag. * into one if multiple values are associated with the tag.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list or if it was #NULL. * given list or if it was #NULL.
*/ */
gboolean gboolean
gst_tag_list_get_date (const GstTagList * list, const gchar * tag, gst_tag_list_get_date (const GstTagList * list, const gchar * tag,
@ -1316,7 +1316,7 @@ gst_tag_list_get_date (const GstTagList * list, const gchar * tag,
* list. * list.
* *
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list or if it was #NULL. * given list or if it was #NULL.
*/ */
gboolean gboolean
gst_tag_list_get_date_index (const GstTagList * list, gst_tag_list_get_date_index (const GstTagList * list,

View file

@ -241,7 +241,7 @@ gst_tag_setter_add_tag_valist_values (GstTagSetter * setter,
* modified or freed. * modified or freed.
* *
* Returns: a current snapshot of the taglist used in the setter * Returns: a current snapshot of the taglist used in the setter
* or NULL if none is used. * or NULL if none is used.
*/ */
G_CONST_RETURN GstTagList * G_CONST_RETURN GstTagList *
gst_tag_setter_get_tag_list (GstTagSetter * setter) gst_tag_setter_get_tag_list (GstTagSetter * setter)

View file

@ -47,9 +47,9 @@ GST_DEBUG_CATEGORY_EXTERN (gst_type_find_debug);
* @extensions: Optional extensions that could belong to this type * @extensions: Optional extensions that could belong to this type
* @possible_caps: Optionally the caps that could be returned when typefinding succeeds * @possible_caps: Optionally the caps that could be returned when typefinding succeeds
* @data: Optional user data. This user data must be available until the plugin * @data: Optional user data. This user data must be available until the plugin
* is unloaded. * is unloaded.
* @data_notify: a #GDestroyNotify that will be called on @data when the plugin * @data_notify: a #GDestroyNotify that will be called on @data when the plugin
* is unloaded. * is unloaded.
* *
* Registers a new typefind function to be used for typefinding. After * Registers a new typefind function to be used for typefinding. After
* registering this function will be available for typefinding. * registering this function will be available for typefinding.

View file

@ -1349,29 +1349,29 @@ gst_value_deserialize_boolean (GValue * dest, const gchar * s)
return ret; return ret;
} }
#define CREATE_SERIALIZATION_START(_type,_macro) \ #define CREATE_SERIALIZATION_START(_type,_macro) \
static gint \ static gint \
gst_value_compare_ ## _type \ gst_value_compare_ ## _type \
(const GValue * value1, const GValue * value2) \ (const GValue * value1, const GValue * value2) \
{ \ { \
g ## _type val1 = g_value_get_ ## _type (value1); \ g ## _type val1 = g_value_get_ ## _type (value1); \
g ## _type val2 = g_value_get_ ## _type (value2); \ g ## _type val2 = g_value_get_ ## _type (value2); \
if (val1 > val2) \ if (val1 > val2) \
return GST_VALUE_GREATER_THAN; \ return GST_VALUE_GREATER_THAN; \
if (val1 < val2) \ if (val1 < val2) \
return GST_VALUE_LESS_THAN; \ return GST_VALUE_LESS_THAN; \
return GST_VALUE_EQUAL; \ return GST_VALUE_EQUAL; \
} \ } \
\ \
static char * \ static char * \
gst_value_serialize_ ## _type (const GValue * value) \ gst_value_serialize_ ## _type (const GValue * value) \
{ \ { \
GValue val = { 0, }; \ GValue val = { 0, }; \
g_value_init (&val, G_TYPE_STRING); \ g_value_init (&val, G_TYPE_STRING); \
if (!g_value_transform (value, &val)) \ if (!g_value_transform (value, &val)) \
g_assert_not_reached (); \ g_assert_not_reached (); \
/* NO_COPY_MADNESS!!! */ \ /* NO_COPY_MADNESS!!! */ \
return (char *) g_value_get_string (&val); \ return (char *) g_value_get_string (&val); \
} }
/* deserialize the given s into to as a gint64. /* deserialize the given s into to as a gint64.
@ -1436,81 +1436,81 @@ gst_value_deserialize_int_helper (gint64 * to, const gchar * s,
return ret; return ret;
} }
#define CREATE_SERIALIZATION(_type,_macro) \ #define CREATE_SERIALIZATION(_type,_macro) \
CREATE_SERIALIZATION_START(_type,_macro) \ CREATE_SERIALIZATION_START(_type,_macro) \
\ \
static gboolean \ static gboolean \
gst_value_deserialize_ ## _type (GValue * dest, const gchar *s) \ gst_value_deserialize_ ## _type (GValue * dest, const gchar *s) \
{ \ { \
gint64 x; \ gint64 x; \
\ \
if (gst_value_deserialize_int_helper (&x, s, G_MIN ## _macro, \ if (gst_value_deserialize_int_helper (&x, s, G_MIN ## _macro, \
G_MAX ## _macro, sizeof (g ## _type))) { \ G_MAX ## _macro, sizeof (g ## _type))) { \
g_value_set_ ## _type (dest, /*(g ## _type)*/ x); \ g_value_set_ ## _type (dest, /*(g ## _type)*/ x); \
return TRUE; \ return TRUE; \
} else { \ } else { \
return FALSE; \ return FALSE; \
} \ } \
} }
#define CREATE_USERIALIZATION(_type,_macro) \ #define CREATE_USERIALIZATION(_type,_macro) \
CREATE_SERIALIZATION_START(_type,_macro) \ CREATE_SERIALIZATION_START(_type,_macro) \
\ \
static gboolean \ static gboolean \
gst_value_deserialize_ ## _type (GValue * dest, const gchar *s) \ gst_value_deserialize_ ## _type (GValue * dest, const gchar *s) \
{ \ { \
gint64 x; \ gint64 x; \
char *end; \ char *end; \
gboolean ret = FALSE; \ gboolean ret = FALSE; \
\ \
errno = 0; \ errno = 0; \
x = g_ascii_strtoull (s, &end, 0); \ x = g_ascii_strtoull (s, &end, 0); \
/* a range error is a definitive no-no */ \ /* a range error is a definitive no-no */ \
if (errno == ERANGE) { \ if (errno == ERANGE) { \
return FALSE; \ return FALSE; \
} \ } \
/* the cast ensures the range check later on makes sense */ \ /* the cast ensures the range check later on makes sense */ \
x = (g ## _type) x; \ x = (g ## _type) x; \
if (*end == 0) { \ if (*end == 0) { \
ret = TRUE; \ ret = TRUE; \
} else { \ } else { \
if (g_ascii_strcasecmp (s, "little_endian") == 0) { \ if (g_ascii_strcasecmp (s, "little_endian") == 0) { \
x = G_LITTLE_ENDIAN; \ x = G_LITTLE_ENDIAN; \
ret = TRUE; \ ret = TRUE; \
} else if (g_ascii_strcasecmp (s, "big_endian") == 0) { \ } else if (g_ascii_strcasecmp (s, "big_endian") == 0) { \
x = G_BIG_ENDIAN; \ x = G_BIG_ENDIAN; \
ret = TRUE; \ ret = TRUE; \
} else if (g_ascii_strcasecmp (s, "byte_order") == 0) { \ } else if (g_ascii_strcasecmp (s, "byte_order") == 0) { \
x = G_BYTE_ORDER; \ x = G_BYTE_ORDER; \
ret = TRUE; \ ret = TRUE; \
} else if (g_ascii_strcasecmp (s, "min") == 0) { \ } else if (g_ascii_strcasecmp (s, "min") == 0) { \
x = 0; \ x = 0; \
ret = TRUE; \ ret = TRUE; \
} else if (g_ascii_strcasecmp (s, "max") == 0) { \ } else if (g_ascii_strcasecmp (s, "max") == 0) { \
x = G_MAX ## _macro; \ x = G_MAX ## _macro; \
ret = TRUE; \ ret = TRUE; \
} \ } \
} \ } \
if (ret) { \ if (ret) { \
if (x > G_MAX ## _macro) { \ if (x > G_MAX ## _macro) { \
ret = FALSE; \ ret = FALSE; \
} else { \ } else { \
g_value_set_ ## _type (dest, x); \ g_value_set_ ## _type (dest, x); \
} \ } \
} \ } \
return ret; \ return ret; \
} }
#define REGISTER_SERIALIZATION(_gtype, _type) \ #define REGISTER_SERIALIZATION(_gtype, _type) \
G_STMT_START { \ G_STMT_START { \
static const GstValueTable gst_value = { \ static const GstValueTable gst_value = { \
_gtype, \ _gtype, \
gst_value_compare_ ## _type, \ gst_value_compare_ ## _type, \
gst_value_serialize_ ## _type, \ gst_value_serialize_ ## _type, \
gst_value_deserialize_ ## _type, \ gst_value_deserialize_ ## _type, \
}; \ }; \
\ \
gst_value_register (&gst_value); \ gst_value_register (&gst_value); \
} G_STMT_END } G_STMT_END
CREATE_SERIALIZATION (int, INT); CREATE_SERIALIZATION (int, INT);
@ -3650,19 +3650,19 @@ static GTypeFundamentalInfo _finfo = {
0 0
}; };
#define FUNC_VALUE_GET_TYPE(type, name) \ #define FUNC_VALUE_GET_TYPE(type, name) \
GType gst_ ## type ## _get_type (void) \ GType gst_ ## type ## _get_type (void) \
{ \ { \
static GType gst_ ## type ## _type = 0; \ static GType gst_ ## type ## _type = 0; \
\ \
if (!gst_ ## type ## _type) { \ if (!gst_ ## type ## _type) { \
_info.value_table = & _gst_ ## type ## _value_table; \ _info.value_table = & _gst_ ## type ## _value_table; \
gst_ ## type ## _type = g_type_register_fundamental ( \ gst_ ## type ## _type = g_type_register_fundamental ( \
g_type_fundamental_next (), \ g_type_fundamental_next (), \
name, &_info, &_finfo, 0); \ name, &_info, &_finfo, 0); \
} \ } \
\ \
return gst_ ## type ## _type; \ return gst_ ## type ## _type; \
} }
static const GTypeValueTable _gst_fourcc_value_table = { static const GTypeValueTable _gst_fourcc_value_table = {

View file

@ -52,8 +52,8 @@
#include <gst/gstmarshal.h> #include <gst/gstmarshal.h>
#include <gst/gst-i18n-lib.h> #include <gst/gst-i18n-lib.h>
#define DEFAULT_BLOCKSIZE 4096 #define DEFAULT_BLOCKSIZE 4096
#define DEFAULT_NUM_BUFFERS -1 #define DEFAULT_NUM_BUFFERS -1
GST_DEBUG_CATEGORY_STATIC (gst_base_src_debug); GST_DEBUG_CATEGORY_STATIC (gst_base_src_debug);
#define GST_CAT_DEFAULT gst_base_src_debug #define GST_CAT_DEFAULT gst_base_src_debug
@ -65,7 +65,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_base_src_debug);
#define GST_LIVE_GET_COND(elem) (GST_BASE_SRC_CAST(elem)->live_cond) #define GST_LIVE_GET_COND(elem) (GST_BASE_SRC_CAST(elem)->live_cond)
#define GST_LIVE_WAIT(elem) g_cond_wait (GST_LIVE_GET_COND (elem), GST_LIVE_GET_LOCK (elem)) #define GST_LIVE_WAIT(elem) g_cond_wait (GST_LIVE_GET_COND (elem), GST_LIVE_GET_LOCK (elem))
#define GST_LIVE_TIMED_WAIT(elem, timeval) g_cond_timed_wait (GST_LIVE_GET_COND (elem), GST_LIVE_GET_LOCK (elem),\ #define GST_LIVE_TIMED_WAIT(elem, timeval) g_cond_timed_wait (GST_LIVE_GET_COND (elem), GST_LIVE_GET_LOCK (elem),\
timeval) timeval)
#define GST_LIVE_SIGNAL(elem) g_cond_signal (GST_LIVE_GET_COND (elem)); #define GST_LIVE_SIGNAL(elem) g_cond_signal (GST_LIVE_GET_COND (elem));
#define GST_LIVE_BROADCAST(elem) g_cond_broadcast (GST_LIVE_GET_COND (elem)); #define GST_LIVE_BROADCAST(elem) g_cond_broadcast (GST_LIVE_GET_COND (elem));

View file

@ -74,20 +74,20 @@ GST_DEBUG_CATEGORY (ncc_debug);
#define WRITE_SOCKET(self) self->control_sock[1] #define WRITE_SOCKET(self) self->control_sock[1]
#define READ_SOCKET(self) self->control_sock[0] #define READ_SOCKET(self) self->control_sock[0]
#define SEND_COMMAND(self, command) \ #define SEND_COMMAND(self, command) \
G_STMT_START { \ G_STMT_START { \
unsigned char c; c = command; \ unsigned char c; c = command; \
write (WRITE_SOCKET(self), &c, 1); \ write (WRITE_SOCKET(self), &c, 1); \
} G_STMT_END } G_STMT_END
#define READ_COMMAND(self, command, res) \ #define READ_COMMAND(self, command, res) \
G_STMT_START { \ G_STMT_START { \
res = read(READ_SOCKET(self), &command, 1); \ res = read(READ_SOCKET(self), &command, 1); \
} G_STMT_END } G_STMT_END
#define DEFAULT_ADDRESS "127.0.0.1" #define DEFAULT_ADDRESS "127.0.0.1"
#define DEFAULT_PORT 5637 #define DEFAULT_PORT 5637
#define DEFAULT_TIMEOUT GST_SECOND #define DEFAULT_TIMEOUT GST_SECOND
enum enum
{ {

View file

@ -60,19 +60,19 @@ GST_DEBUG_CATEGORY (ntp_debug);
#define WRITE_SOCKET(self) self->control_sock[1] #define WRITE_SOCKET(self) self->control_sock[1]
#define READ_SOCKET(self) self->control_sock[0] #define READ_SOCKET(self) self->control_sock[0]
#define SEND_COMMAND(self, command) \ #define SEND_COMMAND(self, command) \
G_STMT_START { \ G_STMT_START { \
unsigned char c; c = command; \ unsigned char c; c = command; \
write (WRITE_SOCKET(self), &c, 1); \ write (WRITE_SOCKET(self), &c, 1); \
} G_STMT_END } G_STMT_END
#define READ_COMMAND(self, command, res) \ #define READ_COMMAND(self, command, res) \
G_STMT_START { \ G_STMT_START { \
res = read(READ_SOCKET(self), &command, 1); \ res = read(READ_SOCKET(self), &command, 1); \
} G_STMT_END } G_STMT_END
#define DEFAULT_ADDRESS "0.0.0.0" #define DEFAULT_ADDRESS "0.0.0.0"
#define DEFAULT_PORT 5637 #define DEFAULT_PORT 5637
enum enum
{ {

View file

@ -81,20 +81,20 @@ enum
LAST_SIGNAL LAST_SIGNAL
}; };
#define DEFAULT_OUTPUT FAKE_SRC_FIRST_LAST_LOOP #define DEFAULT_OUTPUT FAKE_SRC_FIRST_LAST_LOOP
#define DEFAULT_DATA FAKE_SRC_DATA_ALLOCATE #define DEFAULT_DATA FAKE_SRC_DATA_ALLOCATE
#define DEFAULT_SIZETYPE FAKE_SRC_SIZETYPE_EMPTY #define DEFAULT_SIZETYPE FAKE_SRC_SIZETYPE_EMPTY
#define DEFAULT_SIZEMIN 0 #define DEFAULT_SIZEMIN 0
#define DEFAULT_SIZEMAX 4096 #define DEFAULT_SIZEMAX 4096
#define DEFAULT_FILLTYPE FAKE_SRC_FILLTYPE_ZERO #define DEFAULT_FILLTYPE FAKE_SRC_FILLTYPE_ZERO
#define DEFAULT_DATARATE 0 #define DEFAULT_DATARATE 0
#define DEFAULT_SYNC FALSE #define DEFAULT_SYNC FALSE
#define DEFAULT_PATTERN NULL #define DEFAULT_PATTERN NULL
#define DEFAULT_EOS FALSE #define DEFAULT_EOS FALSE
#define DEFAULT_SIGNAL_HANDOFFS FALSE #define DEFAULT_SIGNAL_HANDOFFS FALSE
#define DEFAULT_SILENT FALSE #define DEFAULT_SILENT FALSE
#define DEFAULT_DUMP FALSE #define DEFAULT_DUMP FALSE
#define DEFAULT_PARENTSIZE 4096*10 #define DEFAULT_PARENTSIZE 4096*10
#define DEFAULT_CAN_ACTIVATE_PULL TRUE #define DEFAULT_CAN_ACTIVATE_PULL TRUE
#define DEFAULT_CAN_ACTIVATE_PUSH TRUE #define DEFAULT_CAN_ACTIVATE_PUSH TRUE

View file

@ -60,7 +60,7 @@ G_STMT_START { \
res = read(READ_SOCKET(src), &command, 1); \ res = read(READ_SOCKET(src), &command, 1); \
} G_STMT_END } G_STMT_END
#define DEFAULT_BLOCKSIZE 4096 #define DEFAULT_BLOCKSIZE 4096
static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,

View file

@ -129,9 +129,9 @@ enum
LAST_SIGNAL LAST_SIGNAL
}; };
#define DEFAULT_BLOCKSIZE 4*1024 #define DEFAULT_BLOCKSIZE 4*1024
#define DEFAULT_MMAPSIZE 4*1024*1024 #define DEFAULT_MMAPSIZE 4*1024*1024
#define DEFAULT_TOUCH FALSE #define DEFAULT_TOUCH FALSE
enum enum
{ {

View file

@ -59,16 +59,16 @@ enum
LAST_SIGNAL LAST_SIGNAL
}; };
#define DEFAULT_SLEEP_TIME 0 #define DEFAULT_SLEEP_TIME 0
#define DEFAULT_DUPLICATE 1 #define DEFAULT_DUPLICATE 1
#define DEFAULT_ERROR_AFTER -1 #define DEFAULT_ERROR_AFTER -1
#define DEFAULT_DROP_PROBABILITY 0.0 #define DEFAULT_DROP_PROBABILITY 0.0
#define DEFAULT_DATARATE 0 #define DEFAULT_DATARATE 0
#define DEFAULT_SILENT FALSE #define DEFAULT_SILENT FALSE
#define DEFAULT_SINGLE_SEGMENT FALSE #define DEFAULT_SINGLE_SEGMENT FALSE
#define DEFAULT_DUMP FALSE #define DEFAULT_DUMP FALSE
#define DEFAULT_SYNC FALSE #define DEFAULT_SYNC FALSE
#define DEFAULT_CHECK_PERFECT FALSE #define DEFAULT_CHECK_PERFECT FALSE
enum enum
{ {

View file

@ -60,20 +60,20 @@ GST_DEBUG_CATEGORY_STATIC (queue_dataflow);
#define STATUS(queue, msg) \ #define STATUS(queue, msg) \
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \ GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \ "(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \ "bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
"-%" G_GUINT64_FORMAT " ns, %u elements", \ "-%" G_GUINT64_FORMAT " ns, %u elements", \
GST_DEBUG_PAD_NAME (pad), \ GST_DEBUG_PAD_NAME (pad), \
queue->cur_level.buffers, \ queue->cur_level.buffers, \
queue->min_threshold.buffers, \ queue->min_threshold.buffers, \
queue->max_size.buffers, \ queue->max_size.buffers, \
queue->cur_level.bytes, \ queue->cur_level.bytes, \
queue->min_threshold.bytes, \ queue->min_threshold.bytes, \
queue->max_size.bytes, \ queue->max_size.bytes, \
queue->cur_level.time, \ queue->cur_level.time, \
queue->min_threshold.time, \ queue->min_threshold.time, \
queue->max_size.time, \ queue->max_size.time, \
queue->queue->length) queue->queue->length)
static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue", static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
"Generic", "Generic",
@ -108,27 +108,27 @@ enum
/* FILL ME */ /* FILL ME */
}; };
#define GST_QUEUE_MUTEX_LOCK(q) G_STMT_START { \ #define GST_QUEUE_MUTEX_LOCK(q) G_STMT_START { \
GST_CAT_LOG_OBJECT (queue_dataflow, q, \ GST_CAT_LOG_OBJECT (queue_dataflow, q, \
"locking qlock from thread %p", \ "locking qlock from thread %p", \
g_thread_self ()); \ g_thread_self ()); \
g_mutex_lock (q->qlock); \ g_mutex_lock (q->qlock); \
GST_CAT_LOG_OBJECT (queue_dataflow, q, \ GST_CAT_LOG_OBJECT (queue_dataflow, q, \
"locked qlock from thread %p", \ "locked qlock from thread %p", \
g_thread_self ()); \ g_thread_self ()); \
} G_STMT_END } G_STMT_END
#define GST_QUEUE_MUTEX_LOCK_CHECK(q,label) G_STMT_START { \ #define GST_QUEUE_MUTEX_LOCK_CHECK(q,label) G_STMT_START { \
GST_QUEUE_MUTEX_LOCK (q); \ GST_QUEUE_MUTEX_LOCK (q); \
if (q->srcresult != GST_FLOW_OK) \ if (q->srcresult != GST_FLOW_OK) \
goto label; \ goto label; \
} G_STMT_END } G_STMT_END
#define GST_QUEUE_MUTEX_UNLOCK(q) G_STMT_START { \ #define GST_QUEUE_MUTEX_UNLOCK(q) G_STMT_START { \
GST_CAT_LOG_OBJECT (queue_dataflow, q, \ GST_CAT_LOG_OBJECT (queue_dataflow, q, \
"unlocking qlock from thread %p", \ "unlocking qlock from thread %p", \
g_thread_self ()); \ g_thread_self ()); \
g_mutex_unlock (q->qlock); \ g_mutex_unlock (q->qlock); \
} G_STMT_END } G_STMT_END
@ -497,20 +497,20 @@ gst_queue_locked_flush (GstQueue * queue)
#define STATUS(queue, msg) \ #define STATUS(queue, msg) \
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \ GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \ "(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \ "bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
"-%" G_GUINT64_FORMAT " ns, %u elements", \ "-%" G_GUINT64_FORMAT " ns, %u elements", \
GST_DEBUG_PAD_NAME (pad), \ GST_DEBUG_PAD_NAME (pad), \
queue->cur_level.buffers, \ queue->cur_level.buffers, \
queue->min_threshold.buffers, \ queue->min_threshold.buffers, \
queue->max_size.buffers, \ queue->max_size.buffers, \
queue->cur_level.bytes, \ queue->cur_level.bytes, \
queue->min_threshold.bytes, \ queue->min_threshold.bytes, \
queue->max_size.bytes, \ queue->max_size.bytes, \
queue->cur_level.time, \ queue->cur_level.time, \
queue->min_threshold.time, \ queue->min_threshold.time, \
queue->max_size.time, \ queue->max_size.time, \
queue->queue->length) queue->queue->length)
static gboolean static gboolean
gst_queue_handle_sink_event (GstPad * pad, GstEvent * event) gst_queue_handle_sink_event (GstPad * pad, GstEvent * event)

View file

@ -103,8 +103,8 @@ enum
#define _do_init(bla) \ #define _do_init(bla) \
GST_DEBUG_CATEGORY_INIT (gst_type_find_element_debug, "typefind", \ GST_DEBUG_CATEGORY_INIT (gst_type_find_element_debug, "typefind", \
GST_DEBUG_BG_YELLOW | GST_DEBUG_FG_GREEN, "type finding element"); GST_DEBUG_BG_YELLOW | GST_DEBUG_FG_GREEN, "type finding element");
GST_BOILERPLATE_FULL (GstTypeFindElement, gst_type_find_element, GstElement, GST_BOILERPLATE_FULL (GstTypeFindElement, gst_type_find_element, GstElement,
GST_TYPE_ELEMENT, _do_init); GST_TYPE_ELEMENT, _do_init);

View file

@ -27,15 +27,15 @@
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
#define GST_TYPE_FILE_INDEX \ #define GST_TYPE_FILE_INDEX \
(gst_file_index_get_type ()) (gst_file_index_get_type ())
#define GST_FILE_INDEX(obj) \ #define GST_FILE_INDEX(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_FILE_INDEX, GstFileIndex)) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_FILE_INDEX, GstFileIndex))
#define GST_FILE_INDEX_CLASS(klass) \ #define GST_FILE_INDEX_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_FILE_INDEX, GstFileIndexClass)) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_FILE_INDEX, GstFileIndexClass))
#define GST_IS_FILE_INDEX(obj) \ #define GST_IS_FILE_INDEX(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_FILE_INDEX)) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_FILE_INDEX))
#define GST_IS_FILE_INDEX_CLASS(obj) \ #define GST_IS_FILE_INDEX_CLASS(obj) \
(GST_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_FILE_INDEX)) (GST_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_FILE_INDEX))
/* /*
@ -830,12 +830,12 @@ show_entry (GstIndexEntry *entry)
switch (entry->type) { switch (entry->type) {
case GST_INDEX_ENTRY_ID: case GST_INDEX_ENTRY_ID:
g_print ("id %d describes writer %s\n", entry->id, g_print ("id %d describes writer %s\n", entry->id,
GST_INDEX_ID_DESCRIPTION (entry)); GST_INDEX_ID_DESCRIPTION (entry));
break; break;
case GST_INDEX_ENTRY_FORMAT: case GST_INDEX_ENTRY_FORMAT:
g_print ("%d: registered format %d for %s\n", entry->id, g_print ("%d: registered format %d for %s\n", entry->id,
GST_INDEX_FORMAT_FORMAT (entry), GST_INDEX_FORMAT_FORMAT (entry),
GST_INDEX_FORMAT_KEY (entry)); GST_INDEX_FORMAT_KEY (entry));
break; break;
case GST_INDEX_ENTRY_ASSOCIATION: case GST_INDEX_ENTRY_ASSOCIATION:
{ {
@ -843,8 +843,8 @@ show_entry (GstIndexEntry *entry)
g_print ("%d: %08x ", entry->id, GST_INDEX_ASSOC_FLAGS (entry)); g_print ("%d: %08x ", entry->id, GST_INDEX_ASSOC_FLAGS (entry));
for (i = 0; i < GST_INDEX_NASSOCS (entry); i++) { for (i = 0; i < GST_INDEX_NASSOCS (entry); i++) {
g_print ("%d %lld ", GST_INDEX_ASSOC_FORMAT (entry, i), g_print ("%d %lld ", GST_INDEX_ASSOC_FORMAT (entry, i),
GST_INDEX_ASSOC_VALUE (entry, i)); GST_INDEX_ASSOC_VALUE (entry, i));
} }
g_print ("\n"); g_print ("\n");
break; break;

View file

@ -19,15 +19,15 @@
#include <gst/gst.h> #include <gst/gst.h>
#define GST_TYPE_MEM_INDEX \ #define GST_TYPE_MEM_INDEX \
(gst_index_get_type ()) (gst_index_get_type ())
#define GST_MEM_INDEX(obj) \ #define GST_MEM_INDEX(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MEM_INDEX, GstMemIndex)) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MEM_INDEX, GstMemIndex))
#define GST_MEM_INDEX_CLASS(klass) \ #define GST_MEM_INDEX_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MEM_INDEX, GstMemIndexClass)) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MEM_INDEX, GstMemIndexClass))
#define GST_IS_MEM_INDEX(obj) \ #define GST_IS_MEM_INDEX(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MEM_INDEX)) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MEM_INDEX))
#define GST_IS_MEM_INDEX_CLASS(obj) \ #define GST_IS_MEM_INDEX_CLASS(obj) \
(GST_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MEM_INDEX)) (GST_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MEM_INDEX))
/* /*

View file

@ -57,48 +57,48 @@ check_tags (const GstTagList * list, const gchar * tag, gchar * value, ...)
va_end (args); va_end (args);
} }
#define NEW_LIST_FIXED(mode) \ #define NEW_LIST_FIXED(mode) \
G_STMT_START { \ G_STMT_START { \
if (list) gst_tag_list_free (list); \ if (list) gst_tag_list_free (list); \
list = gst_tag_list_new (); \ list = gst_tag_list_new (); \
gst_tag_list_add (list, mode, FTAG, FIXED1, FTAG, FIXED2, \ gst_tag_list_add (list, mode, FTAG, FIXED1, FTAG, FIXED2, \
FTAG, FIXED3, FTAG, FIXED4, NULL); \ FTAG, FIXED3, FTAG, FIXED4, NULL); \
} G_STMT_END; } G_STMT_END;
#define NEW_LIST_UNFIXED(mode) \ #define NEW_LIST_UNFIXED(mode) \
G_STMT_START { \ G_STMT_START { \
if (list) gst_tag_list_free (list); \ if (list) gst_tag_list_free (list); \
list = gst_tag_list_new (); \ list = gst_tag_list_new (); \
gst_tag_list_add (list, mode, UTAG, UNFIXED1, UTAG, UNFIXED2, \ gst_tag_list_add (list, mode, UTAG, UNFIXED1, UTAG, UNFIXED2, \
UTAG, UNFIXED3, UTAG, UNFIXED4, NULL); \ UTAG, UNFIXED3, UTAG, UNFIXED4, NULL); \
} G_STMT_END; } G_STMT_END;
#define NEW_LISTS_FIXED(mode) \ #define NEW_LISTS_FIXED(mode) \
G_STMT_START { \ G_STMT_START { \
if (list) gst_tag_list_free (list); \ if (list) gst_tag_list_free (list); \
list = gst_tag_list_new (); \ list = gst_tag_list_new (); \
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, FTAG, FIXED1, \ gst_tag_list_add (list, GST_TAG_MERGE_APPEND, FTAG, FIXED1, \
FTAG, FIXED2, NULL); \ FTAG, FIXED2, NULL); \
if (list2) gst_tag_list_free (list2); \ if (list2) gst_tag_list_free (list2); \
list2 = gst_tag_list_new (); \ list2 = gst_tag_list_new (); \
gst_tag_list_add (list2, GST_TAG_MERGE_APPEND, FTAG, FIXED3, \ gst_tag_list_add (list2, GST_TAG_MERGE_APPEND, FTAG, FIXED3, \
FTAG, FIXED4, NULL); \ FTAG, FIXED4, NULL); \
if (merge) gst_tag_list_free (merge); \ if (merge) gst_tag_list_free (merge); \
merge = gst_tag_list_merge (list, list2, mode); \ merge = gst_tag_list_merge (list, list2, mode); \
} G_STMT_END; } G_STMT_END;
#define NEW_LISTS_UNFIXED(mode) \ #define NEW_LISTS_UNFIXED(mode) \
G_STMT_START { \ G_STMT_START { \
if (list) gst_tag_list_free (list); \ if (list) gst_tag_list_free (list); \
list = gst_tag_list_new (); \ list = gst_tag_list_new (); \
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, UTAG, UNFIXED1, \ gst_tag_list_add (list, GST_TAG_MERGE_APPEND, UTAG, UNFIXED1, \
UTAG, UNFIXED2, NULL); \ UTAG, UNFIXED2, NULL); \
if (list2) gst_tag_list_free (list2); \ if (list2) gst_tag_list_free (list2); \
list2 = gst_tag_list_new (); \ list2 = gst_tag_list_new (); \
gst_tag_list_add (list2, GST_TAG_MERGE_APPEND, UTAG, UNFIXED3,\ gst_tag_list_add (list2, GST_TAG_MERGE_APPEND, UTAG, UNFIXED3,\
UTAG, UNFIXED4, NULL); \ UTAG, UNFIXED4, NULL); \
if (merge) gst_tag_list_free (merge); \ if (merge) gst_tag_list_free (merge); \
merge = gst_tag_list_merge (list, list2, mode); \ merge = gst_tag_list_merge (list, list2, mode); \
} G_STMT_END; } G_STMT_END;
@ -214,7 +214,8 @@ GST_START_TEST (test_date_tags)
gst_tag_list_free (tag_list); gst_tag_list_free (tag_list);
g_date_free (date); g_date_free (date);
} }
GST_END_TEST Suite * gst_tag_suite (void) GST_END_TEST Suite *
gst_tag_suite (void)
{ {
Suite *s = suite_create ("GstTag"); Suite *s = suite_create ("GstTag");
TCase *tc_chain = tcase_create ("general"); TCase *tc_chain = tcase_create ("general");

View file

@ -4,9 +4,9 @@
* construct a simple pipeline osssrc ! cutter ! filesink * construct a simple pipeline osssrc ! cutter ! filesink
* pause when necessary, change output * pause when necessary, change output
* *
* Latest change : 03/06/2001 * Latest change : 03/06/2001
* *
* Version : 0.3 * Version : 0.3
*/ */
#include <stdlib.h> #include <stdlib.h>

View file

@ -4,13 +4,13 @@
* demonstrates the adder plugin and the volume envelope plugin * demonstrates the adder plugin and the volume envelope plugin
* work in progress but do try it out * work in progress but do try it out
* *
* Latest change : 28/08/2001 * Latest change : 28/08/2001
* trying to adapt to incsched * trying to adapt to incsched
* delayed start for channels > 1 * delayed start for channels > 1
* now works by quickhacking the * now works by quickhacking the
* adder plugin to set * adder plugin to set
* GST_ELEMENT_COTHREAD_STOPPING * GST_ELEMENT_COTHREAD_STOPPING
* Version : 0.5.1 * Version : 0.5.1
*/ */
#include <stdlib.h> #include <stdlib.h>
@ -21,7 +21,7 @@
/*#define WITH_BUG */ /*#define WITH_BUG */
/*#define WITH_BUG2 */ /*#define WITH_BUG2 */
/*#define DEBUG */ /*#define DEBUG */
/*#define AUTOPLUG * define if you want autoplugging of input channels * */ /*#define AUTOPLUG * define if you want autoplugging of input channels * */
/* function prototypes */ /* function prototypes */
input_channel_t *create_input_channel (int id, char *location); input_channel_t *create_input_channel (int id, char *location);

View file

@ -39,7 +39,7 @@ main (int argc, char *argv[])
xml = gst_xml_new (); xml = gst_xml_new ();
/* g_signal_connect (G_OBJECT (xml), "object_loaded", */ /* g_signal_connect (G_OBJECT (xml), "object_loaded", */
/* G_CALLBACK (xml_loaded), xml); */ /* G_CALLBACK (xml_loaded), xml); */
if (argc == 2) if (argc == 2)
ret = gst_xml_parse_file (xml, argv[1], NULL); ret = gst_xml_parse_file (xml, argv[1], NULL);

View file

@ -37,8 +37,8 @@ GST_CAPS_FACTORY (rawcaps4,
GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")), GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")), GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")) GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
), ),
"height", GST_PROPS_INT_RANGE (16, 4096) "height", GST_PROPS_INT_RANGE (16, 4096)
) )
); );
@ -49,7 +49,7 @@ GST_CAPS_FACTORY (rawcaps5,
"fourcc", GST_PROPS_LIST ( "fourcc", GST_PROPS_LIST (
GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")), GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")) GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
), ),
"height", GST_PROPS_INT_RANGE (16, 4096) "height", GST_PROPS_INT_RANGE (16, 4096)
) )
); );

View file

@ -24,8 +24,8 @@
#include <gst/gst.h> #include <gst/gst.h>
#define THREAD_COUNT 5 #define THREAD_COUNT 5
#define ITERATIONS 20 #define ITERATIONS 20
/* stupid logging functions */ /* stupid logging functions */
static void static void

View file

@ -34,56 +34,56 @@ static gint i;
static gboolean b; static gboolean b;
static gchar *s; static gchar *s;
#define TEST_CHECK_FAIL(condition) G_STMT_START{ \ #define TEST_CHECK_FAIL(condition) G_STMT_START{ \
if (condition) { \ if (condition) { \
g_print ("TEST %2d line %3d OK\n", test, __LINE__); \ g_print ("TEST %2d line %3d OK\n", test, __LINE__); \
} else { \ } else { \
g_print ("TEST %2d line %3d FAILED : %s\n", test, __LINE__, \ g_print ("TEST %2d line %3d FAILED : %s\n", test, __LINE__, \
#condition); \ #condition); \
return -test; \ return -test; \
} \ } \
}G_STMT_END }G_STMT_END
#define TEST_START(pipeline) G_STMT_START{ \ #define TEST_START(pipeline) G_STMT_START{ \
g_print ("TEST %2d line %3d START : %s\n", ++test, __LINE__, \ g_print ("TEST %2d line %3d START : %s\n", ++test, __LINE__, \
pipeline); \ pipeline); \
cur = gst_parse_launch (pipeline, &error); \ cur = gst_parse_launch (pipeline, &error); \
if (error == NULL) { \ if (error == NULL) { \
g_print ("TEST %2d line %3d CREATED\n", test, __LINE__); \ g_print ("TEST %2d line %3d CREATED\n", test, __LINE__); \
} else { \ } else { \
g_print ("TEST %2d line %3d FAILED : %s\n", test, __LINE__, \ g_print ("TEST %2d line %3d FAILED : %s\n", test, __LINE__, \
error->message); \ error->message); \
g_error_free (error); \ g_error_free (error); \
return -test; \ return -test; \
} \ } \
}G_STMT_END }G_STMT_END
#define TEST_OK G_STMT_START{ \ #define TEST_OK G_STMT_START{ \
gst_object_unref (cur); \ gst_object_unref (cur); \
cur = NULL; \ cur = NULL; \
g_print ("TEST %2d line %3d COMPLETE\n", test, __LINE__); \ g_print ("TEST %2d line %3d COMPLETE\n", test, __LINE__); \
}G_STMT_END }G_STMT_END
#define TEST_RUN G_STMT_START{ \ #define TEST_RUN G_STMT_START{ \
alarm(10); \ alarm(10); \
g_print ("TEST %2d line %3d RUN\n", test, __LINE__); \ g_print ("TEST %2d line %3d RUN\n", test, __LINE__); \
if (gst_element_set_state (cur, GST_STATE_PLAYING) \ if (gst_element_set_state (cur, GST_STATE_PLAYING) \
== GST_STATE_CHANGE_FAILURE) { \ == GST_STATE_CHANGE_FAILURE) { \
g_print ("TEST %2d line %3d FAILED : " \ g_print ("TEST %2d line %3d FAILED : " \
"pipeline could not be set to PLAYING\n", test, __LINE__); \ "pipeline could not be set to PLAYING\n", test, __LINE__); \
return -test; \ return -test; \
} \ } \
iterations = 0; \ iterations = 0; \
while (gst_bin_iterate (GST_BIN (cur))) iterations++; \ while (gst_bin_iterate (GST_BIN (cur))) iterations++; \
if (gst_element_set_state (cur, GST_STATE_NULL) \ if (gst_element_set_state (cur, GST_STATE_NULL) \
== GST_STATE_CHANGE_FAILURE) { \ == GST_STATE_CHANGE_FAILURE) { \
g_print ("TEST %2d line %3d FAILED : " \ g_print ("TEST %2d line %3d FAILED : " \
"pipeline could not be reset to state NULL\n", test, __LINE__); \ "pipeline could not be reset to state NULL\n", test, __LINE__); \
return -test; \ return -test; \
} \ } \
g_print ("TEST %2d line %3d STOPPED : %u iterations\n", \ g_print ("TEST %2d line %3d STOPPED : %u iterations\n", \
test, __LINE__, iterations); \ test, __LINE__, iterations); \
alarm(0); \ alarm(0); \
}G_STMT_END }G_STMT_END
#define PIPELINE1 "fakesrc" #define PIPELINE1 "fakesrc"

View file

@ -41,7 +41,7 @@ G_STMT_START{ \
#define PUT_STRING(pfx, str, a...) \ #define PUT_STRING(pfx, str, a...) \
G_STMT_START{ \ G_STMT_START{ \
g_print ("%*.*s"str"\n", pfx, pfx, "" , ##a); \ g_print ("%*.*s"str"\n", pfx, pfx, "" , ##a); \
}G_STMT_END }G_STMT_END
#else #else

View file

@ -11,7 +11,7 @@
* *
* Resource leaks fixed by <steve.lhomme@free.fr> * Resource leaks fixed by <steve.lhomme@free.fr>
* *
* *
* $Revision$ * $Revision$
* $Author$ * $Author$
* $Date$ * $Date$
@ -25,8 +25,8 @@
#include <direct.h> #include <direct.h>
#include <dirent.h> #include <dirent.h>
#include <gtchar.h> #include <gtchar.h>
#define SUFFIX _T("*") #define SUFFIX _T("*")
#define SLASH _T("\\") #define SLASH _T("\\")
#include <stdio.h> #include <stdio.h>