a61c04286118b419dcacf3b8f426b2ecb0b9359d
[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  * @parent: the parent of @obj or NULL
48  * @offset: the offset of the range
49  * @length: the length of the range
50  * @buffer: a memory location to hold the result buffer
51  *
52  * This function will be called by gst_type_find_helper_get_range() when
53  * typefinding functions request to peek at the data of a stream at certain
54  * offsets. If this function returns GST_FLOW_OK, the result buffer will be
55  * stored in @buffer. The  contents of @buffer is invalid for any other
56  * return value.
57  *
58  * This function is supposed to behave exactly like a #GstPadGetRangeFunction.
59  *
60  * Returns: GST_FLOW_OK for success
61  */
62 typedef GstFlowReturn (*GstTypeFindHelperGetRangeFunction) (GstObject  *obj,
63                                                             GstObject  *parent,
64                                                             guint64     offset,
65                                                             guint       length,
66                                                             GstBuffer **buffer);
67
68 GstCaps * gst_type_find_helper_get_range (GstObject                         *obj,
69                                           GstObject                         *parent,
70                                           GstTypeFindHelperGetRangeFunction  func,
71                                           guint64                            size,
72                                           const gchar                       *extension,
73                                           GstTypeFindProbability            *prob);
74
75 G_END_DECLS
76
77 #endif /* __GST_TYPEFINDHELPER_H__ */