- Added PAD_NEGOTIATING flag, remove PAD_EOS flag
[platform/upstream/gstreamer.git] / gst / gstquery.h
1 /* GStreamer
2  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
3  *                    2000 Wim Taymans <wim.taymans@chello.be>
4  *
5  * gstpad.h: Header for GstPad object
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23
24 #ifndef __GST_QUERY_H__
25 #define __GST_QUERY_H__
26
27 #include <glib.h>
28
29 G_BEGIN_DECLS
30
31 typedef enum {
32   GST_QUERY_NONE = 0,
33   GST_QUERY_TOTAL,
34   GST_QUERY_POSITION,
35   GST_QUERY_LATENCY,
36   GST_QUERY_JITTER,
37   GST_QUERY_START,
38   GST_QUERY_SEGMENT_END,
39   GST_QUERY_RATE
40 } GstQueryType;
41
42 /* rate is relative to 1000000LL  */
43 #define GST_QUERY_TYPE_RATE_DEN          1000000LL
44
45 typedef struct _GstQueryTypeDefinition GstQueryTypeDefinition;
46
47 struct _GstQueryTypeDefinition
48 {
49   GstQueryType   value;
50   gchar         *nick;
51   gchar         *description;
52 };
53
54 #ifdef G_HAVE_ISO_VARARGS
55 #define GST_QUERY_TYPE_FUNCTION(type, functionname, ...)        \
56 static const GstQueryType*                              \
57 functionname (type object)                              \
58 {                                                       \
59   static const GstQueryType types[] = {                 \
60     __VA_ARGS__,                                        \
61     0                                                   \
62   };                                                    \
63   return types;                                         \
64 }
65 #elif defined(G_HAVE_GNUC_VARARGS)
66 #define GST_QUERY_TYPE_FUNCTION(type, functionname, a...)       \
67 static const GstQueryType*                              \
68 functionname (type object)                              \
69 {                                                       \
70   static const GstQueryType types[] = {                 \
71     a,                                                  \
72     0                                                   \
73   };                                                    \
74   return types;                                         \
75 }
76 #endif
77
78 void                    _gst_query_type_initialize     (void);
79
80 /* register a new query */
81 GstQueryType            gst_query_type_register        (const gchar *nick, 
82                                                         const gchar *description);
83 GstQueryType            gst_query_type_get_by_nick     (const gchar *nick);
84
85 /* check if a query is in an array of querys */
86 gboolean                gst_query_types_contains       (const GstQueryType *types, GstQueryType type);
87
88 /* query for query details */
89 const GstQueryTypeDefinition*      
90                         gst_query_type_get_details     (GstQueryType type);
91 const GList*            gst_query_type_get_definitions (void);
92
93 G_END_DECLS
94
95 #endif /* __GST_QUERY_H__ */
96