Merge branch 'master' into 0.11
[platform/upstream/gstreamer.git] / libs / gst / base / gsttypefindhelper.h
1 /* GStreamer
2  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
3  * Copyright (C) 2000,2005 Wim Taymans <wim@fluendo.com>
4  * Copyright (C) 2006      Tim-Philipp Müller <tim centricular net>
5  *
6  * gsttypefindhelper.h:
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 #ifndef __GST_TYPEFINDHELPER_H__
25 #define __GST_TYPEFINDHELPER_H__
26
27 #include <gst/gst.h>
28
29 G_BEGIN_DECLS
30
31 GstCaps * gst_type_find_helper (GstPad *src, guint64 size);
32
33 GstCaps * gst_type_find_helper_for_data   (GstObject              *obj,
34                                            const guint8           *data,
35                                            gsize                   size,
36                                            GstTypeFindProbability *prob);
37 GstCaps * gst_type_find_helper_for_buffer (GstObject              *obj,
38                                            GstBuffer              *buf,
39                                            GstTypeFindProbability *prob);
40
41 GstCaps * gst_type_find_helper_for_extension (GstObject * obj,
42                                               const gchar * extension);
43
44 /**
45  * GstTypeFindHelperGetRangeFunction:
46  * @obj: a #GstObject that will handle the getrange request
47  * @offset: the offset of the range
48  * @length: the length of the range
49  * @buffer: a memory location to hold the result buffer
50  *
51  * This function will be called by gst_type_find_helper_get_range() when
52  * typefinding functions request to peek at the data of a stream at certain
53  * offsets. If this function returns GST_FLOW_OK, the result buffer will be
54  * stored in @buffer. The  contents of @buffer is invalid for any other
55  * return value.
56  *
57  * This function is supposed to behave exactly like a #GstPadGetRangeFunction.
58  *
59  * Returns: GST_FLOW_OK for success
60  */
61 typedef GstFlowReturn (*GstTypeFindHelperGetRangeFunction) (GstObject  *obj,
62                                                             guint64     offset,
63                                                             guint       length,
64                                                             GstBuffer **buffer);
65
66 GstCaps * gst_type_find_helper_get_range (GstObject                        * obj,
67                                           GstTypeFindHelperGetRangeFunction  func,
68                                           guint64                            size,
69                                           GstTypeFindProbability            *prob);
70
71 GstCaps * gst_type_find_helper_get_range_ext (GstObject                        * obj,
72                                               GstTypeFindHelperGetRangeFunction  func,
73                                               guint64                            size,
74                                               const gchar                       *extension,
75                                               GstTypeFindProbability            *prob);
76
77 G_END_DECLS
78
79 #endif /* __GST_TYPEFINDHELPER_H__ */