|
1 /* GStreamer |
|
2 * Copyright (C) 2007 David Schleef <ds@schleef.org> |
|
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 #ifndef _GST_APP_SINK_H_ |
|
21 #define _GST_APP_SINK_H_ |
|
22 |
|
23 #include <gst/gst.h> |
|
24 #include <gst/base/gstbasesink.h> |
|
25 |
|
26 G_BEGIN_DECLS |
|
27 |
|
28 #define GST_TYPE_APP_SINK \ |
|
29 (gst_app_sink_get_type()) |
|
30 #define GST_APP_SINK(obj) \ |
|
31 (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_APP_SINK,GstAppSink)) |
|
32 #define GST_APP_SINK_CLASS(klass) \ |
|
33 (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_APP_SINK,GstAppSinkClass)) |
|
34 #define GST_IS_APP_SINK(obj) \ |
|
35 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_APP_SINK)) |
|
36 #define GST_IS_APP_SINK_CLASS(klass) \ |
|
37 (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_APP_SINK)) |
|
38 /* Since 0.10.23 */ |
|
39 #define GST_APP_SINK_CAST(obj) \ |
|
40 ((GstAppSink*)(obj)) |
|
41 |
|
42 typedef struct _GstAppSink GstAppSink; |
|
43 typedef struct _GstAppSinkClass GstAppSinkClass; |
|
44 typedef struct _GstAppSinkPrivate GstAppSinkPrivate; |
|
45 |
|
46 /** |
|
47 * GstAppSinkCallbacks: |
|
48 * @eos: Called when the end-of-stream has been reached. This callback |
|
49 * is called from the steaming thread. |
|
50 * @new_preroll: Called when a new preroll buffer is available. |
|
51 * This callback is called from the steaming thread. |
|
52 * The new preroll buffer can be retrieved with |
|
53 * gst_app_sink_pull_preroll() either from this callback |
|
54 * or from any other thread. |
|
55 * @new_buffer: Called when a new buffer is available. |
|
56 * This callback is called from the steaming thread. |
|
57 * The new buffer can be retrieved with |
|
58 * gst_app_sink_pull_buffer() either from this callback |
|
59 * or from any other thread. |
|
60 * |
|
61 * A set of callbacks that can be installed on the appsink with |
|
62 * gst_app_sink_set_callbacks(). |
|
63 * |
|
64 * Since: 0.10.23 |
|
65 */ |
|
66 typedef struct { |
|
67 void (*eos) (GstAppSink *sink, gpointer user_data); |
|
68 GstFlowReturn (*new_preroll) (GstAppSink *sink, gpointer user_data); |
|
69 GstFlowReturn (*new_buffer) (GstAppSink *sink, gpointer user_data); |
|
70 |
|
71 /*< private >*/ |
|
72 gpointer _gst_reserved[GST_PADDING]; |
|
73 } GstAppSinkCallbacks; |
|
74 |
|
75 struct _GstAppSink |
|
76 { |
|
77 GstBaseSink basesink; |
|
78 |
|
79 /*< private >*/ |
|
80 GstAppSinkPrivate *priv; |
|
81 |
|
82 /*< private >*/ |
|
83 gpointer _gst_reserved[GST_PADDING]; |
|
84 }; |
|
85 |
|
86 struct _GstAppSinkClass |
|
87 { |
|
88 GstBaseSinkClass basesink_class; |
|
89 |
|
90 /* signals */ |
|
91 void (*eos) (GstAppSink *sink); |
|
92 void (*new_preroll) (GstAppSink *sink); |
|
93 void (*new_buffer) (GstAppSink *sink); |
|
94 |
|
95 /* actions */ |
|
96 GstBuffer * (*pull_preroll) (GstAppSink *sink); |
|
97 GstBuffer * (*pull_buffer) (GstAppSink *sink); |
|
98 |
|
99 /*< private >*/ |
|
100 gpointer _gst_reserved[GST_PADDING]; |
|
101 }; |
|
102 |
|
103 IMPORT_C GType gst_app_sink_get_type(void); |
|
104 |
|
105 IMPORT_C void gst_app_sink_set_caps (GstAppSink *appsink, const GstCaps *caps); |
|
106 IMPORT_C GstCaps * gst_app_sink_get_caps (GstAppSink *appsink); |
|
107 |
|
108 IMPORT_C gboolean gst_app_sink_is_eos (GstAppSink *appsink); |
|
109 |
|
110 IMPORT_C void gst_app_sink_set_emit_signals (GstAppSink *appsink, gboolean emit); |
|
111 IMPORT_C gboolean gst_app_sink_get_emit_signals (GstAppSink *appsink); |
|
112 |
|
113 IMPORT_C void gst_app_sink_set_max_buffers (GstAppSink *appsink, guint max); |
|
114 IMPORT_C guint gst_app_sink_get_max_buffers (GstAppSink *appsink); |
|
115 |
|
116 IMPORT_C void gst_app_sink_set_drop (GstAppSink *appsink, gboolean drop); |
|
117 IMPORT_C gboolean gst_app_sink_get_drop (GstAppSink *appsink); |
|
118 |
|
119 IMPORT_C GstBuffer * gst_app_sink_pull_preroll (GstAppSink *appsink); |
|
120 IMPORT_C GstBuffer * gst_app_sink_pull_buffer (GstAppSink *appsink); |
|
121 |
|
122 IMPORT_C void gst_app_sink_set_callbacks (GstAppSink * appsink, |
|
123 GstAppSinkCallbacks *callbacks, |
|
124 gpointer user_data, |
|
125 GDestroyNotify notify); |
|
126 |
|
127 G_END_DECLS |
|
128 |
|
129 #endif |
|
130 |