source: trunk/third/gstreamer/gst/gstformat.h @ 21005

Revision 21005, 3.2 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21004, which included commits to RCS files with non-trunk default branches.
Line 
1/* GStreamer
2 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
3 *                    2000 Wim Taymans <wim.taymans@chello.be>
4 *
5 * gstformat.h: Header for GstFormat types used in queries and
6 *              seeking.
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 * Library General Public License for more details.
17 *
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
22 */
23
24
25#ifndef __GST_FORMAT_H__
26#define __GST_FORMAT_H__
27
28#include <glib.h>
29
30G_BEGIN_DECLS
31
32typedef enum {
33  GST_FORMAT_UNDEFINED  =  0, /* must be first in list */
34  GST_FORMAT_DEFAULT    =  1, /* samples for audio, frames/fields for video */
35  GST_FORMAT_BYTES      =  2,
36  GST_FORMAT_TIME       =  3,
37  GST_FORMAT_BUFFERS    =  4,
38  GST_FORMAT_PERCENT    =  5
39} GstFormat;
40
41/* a percentage is always relative to 1000000 */
42#define GST_FORMAT_PERCENT_MAX          G_GINT64_CONSTANT (1000000)
43#define GST_FORMAT_PERCENT_SCALE        G_GINT64_CONSTANT (10000)
44
45typedef struct _GstFormatDefinition GstFormatDefinition;
46
47struct _GstFormatDefinition
48{
49  GstFormat  value;
50  gchar     *nick;
51  gchar     *description;
52};
53
54#ifdef G_HAVE_ISO_VARARGS
55#define GST_FORMATS_FUNCTION(type, functionname, ...)   \
56static const GstFormat*                                 \
57functionname (type object)                              \
58{                                                       \
59  static const GstFormat formats[] = {                  \
60    __VA_ARGS__,                                        \
61    0                                                   \
62  };                                                    \
63  return formats;                                       \
64}
65#elif defined(G_HAVE_GNUC_VARARGS)
66#define GST_FORMATS_FUNCTION(type, functionname, a...)  \
67static const GstFormat*                                 \
68functionname (type object)                              \
69{                                                       \
70  static const GstFormat formats[] = {                  \
71    a,                                                  \
72    0                                                   \
73  };                                                    \
74  return formats;                                       \
75}
76#endif
77
78void            _gst_format_initialize          (void);
79
80/* register a new format */
81GstFormat       gst_format_register             (const gchar *nick,
82                                                 const gchar *description);
83GstFormat       gst_format_get_by_nick          (const gchar *nick);
84
85/* check if a format is in an array of formats */
86gboolean        gst_formats_contains            (const GstFormat *formats, GstFormat format);
87
88/* query for format details */
89G_CONST_RETURN GstFormatDefinition*     
90                gst_format_get_details          (GstFormat format);
91G_CONST_RETURN GList*
92                gst_format_get_definitions      (void);
93
94G_END_DECLS
95
96#endif /* __GST_FORMAT_H__ */
Note: See TracBrowser for help on using the repository browser.