Docs updates.
[platform/upstream/gstreamer.git] / gst / gstmeta.c
1 /* Gnome-Streamer
2  * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20
21 #include <gst/gstmeta.h>
22 #include <gst/gsttrace.h>
23
24
25 /**
26  * gst_meta_new_size:
27  * @size: the size of the new meta data
28  *
29  * Create a new metadata object with a given size
30  *
31  * Returns: new meta object
32  */
33 GstMeta*
34 gst_meta_new_size (gint size) 
35 {
36   GstMeta *meta;
37
38   meta = g_malloc0 (size);
39   gst_meta_ref (meta);
40
41   return meta;
42 }
43
44 /**
45  * gst_meta_ref:
46  * @meta: the meta object to ref
47  *
48  * increases the refcount of a meta object
49  */
50 void 
51 gst_meta_ref (GstMeta *meta) 
52 {
53   g_return_if_fail (meta != NULL);
54
55   gst_trace_add_entry (NULL, 0, meta, "ref meta");
56   
57   meta->refcount++;
58 }
59
60 /**
61  * gst_meta_unref:
62  * @meta: the meta object to unref
63  *
64  * decreases the refcount of a meta object. if the refcount is zero, the
65  * meta object is freed.
66  */
67 void 
68 gst_meta_unref (GstMeta *meta) 
69 {
70   g_return_if_fail (meta != NULL);
71
72   gst_trace_add_entry (NULL, 0, meta, "unref meta");
73   meta->refcount--;
74
75   if (meta->refcount == 0) {
76 //    gst_trace_add_entry(NULL,0,meta,"destroy meta");
77     g_free (meta);
78 //    g_print("freeing metadata\n");
79   }
80 }
81
82
83 /**
84  * gst_meta_cow:
85  * @meta: the meta object prepare for write
86  *
87  * prepares a meta object for writing. A copy of the meta
88  * object is returned if needed.
89  *
90  * Returns: the meta object or a copy.
91  */
92 GstMeta*
93 gst_meta_cow (GstMeta *meta) 
94 {
95   g_return_val_if_fail (meta != NULL, NULL);
96
97   return NULL;
98 }