1 | /* GStreamer encoding profiles library |
2 | * Copyright (C) 2009-2010 Edward Hervey <edward.hervey@collabora.co.uk> |
3 | * (C) 2009-2010 Nokia Corporation |
4 | * |
5 | * This library is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU Library General Public |
7 | * License as published by the Free Software Foundation; either |
8 | * version 2 of the License, or (at your option) any later version. |
9 | * |
10 | * This library is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | * Library General Public License for more details. |
14 | * |
15 | * You should have received a copy of the GNU Library General Public |
16 | * License along with this library; if not, write to the |
17 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
18 | * Boston, MA 02110-1301, USA. |
19 | */ |
20 | |
21 | #ifndef __GST_PROFILE_H__ |
22 | #define __GST_PROFILE_H__ |
23 | |
24 | #include <gst/gst.h> |
25 | |
26 | #include <gst/pbutils/pbutils-enumtypes.h> |
27 | #include <gst/pbutils/gstdiscoverer.h> |
28 | |
29 | G_BEGIN_DECLS |
30 | |
31 | /** |
32 | * GstEncodingProfile: |
33 | * |
34 | * The opaque base class object for all encoding profiles. This contains generic |
35 | * information like name, description, format and preset. |
36 | */ |
37 | |
38 | #define GST_TYPE_ENCODING_PROFILE \ |
39 | (gst_encoding_profile_get_type ()) |
40 | #define GST_ENCODING_PROFILE(obj) \ |
41 | (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_PROFILE, GstEncodingProfile)) |
42 | #define GST_IS_ENCODING_PROFILE(obj) \ |
43 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_PROFILE)) |
44 | typedef struct _GstEncodingProfile GstEncodingProfile; |
45 | typedef struct _GstEncodingProfileClass GstEncodingProfileClass; |
46 | |
47 | GST_PBUTILS_API |
48 | GType gst_encoding_profile_get_type (void); |
49 | |
50 | |
51 | |
52 | /** |
53 | * GstEncodingContainerProfile: |
54 | * |
55 | * Encoding profiles for containers. Keeps track of a list of #GstEncodingProfile |
56 | */ |
57 | #define GST_TYPE_ENCODING_CONTAINER_PROFILE \ |
58 | (gst_encoding_container_profile_get_type ()) |
59 | #define GST_ENCODING_CONTAINER_PROFILE(obj) \ |
60 | (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_CONTAINER_PROFILE, GstEncodingContainerProfile)) |
61 | #define GST_IS_ENCODING_CONTAINER_PROFILE(obj) \ |
62 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_CONTAINER_PROFILE)) |
63 | typedef struct _GstEncodingContainerProfile GstEncodingContainerProfile; |
64 | typedef struct _GstEncodingContainerProfileClass GstEncodingContainerProfileClass; |
65 | |
66 | GST_PBUTILS_API |
67 | GType gst_encoding_container_profile_get_type (void); |
68 | |
69 | |
70 | |
71 | /** |
72 | * GstEncodingVideoProfile: |
73 | * |
74 | * Variant of #GstEncodingProfile for video streams, allows specifying the @pass. |
75 | */ |
76 | #define GST_TYPE_ENCODING_VIDEO_PROFILE \ |
77 | (gst_encoding_video_profile_get_type ()) |
78 | #define GST_ENCODING_VIDEO_PROFILE(obj) \ |
79 | (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_VIDEO_PROFILE, GstEncodingVideoProfile)) |
80 | #define GST_IS_ENCODING_VIDEO_PROFILE(obj) \ |
81 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_VIDEO_PROFILE)) |
82 | typedef struct _GstEncodingVideoProfile GstEncodingVideoProfile; |
83 | typedef struct _GstEncodingVideoProfileClass GstEncodingVideoProfileClass; |
84 | |
85 | GST_PBUTILS_API |
86 | GType gst_encoding_video_profile_get_type (void); |
87 | |
88 | |
89 | |
90 | /** |
91 | * GstEncodingAudioProfile: |
92 | * |
93 | * Variant of #GstEncodingProfile for audio streams. |
94 | */ |
95 | #define GST_TYPE_ENCODING_AUDIO_PROFILE \ |
96 | (gst_encoding_audio_profile_get_type ()) |
97 | #define GST_ENCODING_AUDIO_PROFILE(obj) \ |
98 | (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_AUDIO_PROFILE, GstEncodingAudioProfile)) |
99 | #define GST_IS_ENCODING_AUDIO_PROFILE(obj) \ |
100 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_AUDIO_PROFILE)) |
101 | typedef struct _GstEncodingAudioProfile GstEncodingAudioProfile; |
102 | typedef struct _GstEncodingAudioProfileClass GstEncodingAudioProfileClass; |
103 | |
104 | GST_PBUTILS_API |
105 | GType gst_encoding_audio_profile_get_type (void); |
106 | |
107 | |
108 | |
109 | /* GstEncodingProfile API */ |
110 | |
111 | /** |
112 | * gst_encoding_profile_unref: |
113 | * @profile: a #GstEncodingProfile |
114 | * |
115 | * Decreases the reference count of the @profile, possibly freeing the @profile. |
116 | */ |
117 | #define gst_encoding_profile_unref(profile) (g_object_unref ((GObject*) profile)) |
118 | |
119 | /** |
120 | * gst_encoding_profile_ref: |
121 | * @profile: a #GstEncodingProfile |
122 | * |
123 | * Increases the reference count of the @profile. |
124 | */ |
125 | #define gst_encoding_profile_ref(profile) (g_object_ref ((GObject*) profile)) |
126 | |
127 | GST_PBUTILS_API |
128 | const gchar * gst_encoding_profile_get_name (GstEncodingProfile *profile); |
129 | |
130 | GST_PBUTILS_API |
131 | void gst_encoding_profile_set_name (GstEncodingProfile *profile, |
132 | const gchar *name); |
133 | |
134 | GST_PBUTILS_API |
135 | const gchar * gst_encoding_profile_get_description (GstEncodingProfile *profile); |
136 | |
137 | GST_PBUTILS_API |
138 | void gst_encoding_profile_set_description (GstEncodingProfile *profile, |
139 | const gchar *description); |
140 | |
141 | GST_PBUTILS_API |
142 | GstCaps * gst_encoding_profile_get_format (GstEncodingProfile *profile); |
143 | |
144 | GST_PBUTILS_API |
145 | void gst_encoding_profile_set_format (GstEncodingProfile *profile, |
146 | GstCaps *format); |
147 | |
148 | GST_PBUTILS_API |
149 | gboolean gst_encoding_profile_get_allow_dynamic_output (GstEncodingProfile *profile); |
150 | |
151 | GST_PBUTILS_API |
152 | void gst_encoding_profile_set_allow_dynamic_output (GstEncodingProfile *profile, |
153 | gboolean allow_dynamic_output); |
154 | |
155 | GST_PBUTILS_API |
156 | gboolean gst_encoding_profile_get_single_segment (GstEncodingProfile *profile); |
157 | |
158 | GST_PBUTILS_API |
159 | void gst_encoding_profile_set_single_segment (GstEncodingProfile *profile, |
160 | gboolean single_segment); |
161 | |
162 | GST_PBUTILS_API |
163 | const gchar * gst_encoding_profile_get_preset (GstEncodingProfile *profile); |
164 | |
165 | GST_PBUTILS_API |
166 | const gchar * gst_encoding_profile_get_preset_name (GstEncodingProfile *profile); |
167 | |
168 | GST_PBUTILS_API |
169 | void gst_encoding_profile_set_preset (GstEncodingProfile *profile, |
170 | const gchar *preset); |
171 | |
172 | GST_PBUTILS_API |
173 | guint gst_encoding_profile_get_presence (GstEncodingProfile *profile); |
174 | |
175 | GST_PBUTILS_API |
176 | void gst_encoding_profile_set_presence (GstEncodingProfile *profile, |
177 | guint presence); |
178 | |
179 | GST_PBUTILS_API |
180 | void gst_encoding_profile_set_preset_name (GstEncodingProfile * profile, |
181 | const gchar * preset_name); |
182 | |
183 | GST_PBUTILS_API |
184 | GstCaps * gst_encoding_profile_get_restriction (GstEncodingProfile *profile); |
185 | |
186 | GST_PBUTILS_API |
187 | void gst_encoding_profile_set_restriction (GstEncodingProfile *profile, |
188 | GstCaps *restriction); |
189 | |
190 | GST_PBUTILS_API |
191 | gboolean gst_encoding_profile_is_equal (GstEncodingProfile *a, |
192 | GstEncodingProfile *b); |
193 | |
194 | GST_PBUTILS_API |
195 | GstCaps * gst_encoding_profile_get_input_caps (GstEncodingProfile *profile); |
196 | |
197 | GST_PBUTILS_API |
198 | const gchar * gst_encoding_profile_get_type_nick (GstEncodingProfile *profile); |
199 | |
200 | GST_PBUTILS_API |
201 | const gchar * gst_encoding_profile_get_file_extension (GstEncodingProfile * profile); |
202 | |
203 | GST_PBUTILS_API |
204 | GstEncodingProfile * gst_encoding_profile_find (const gchar *targetname, |
205 | const gchar *profilename, |
206 | const gchar *category); |
207 | |
208 | GST_PBUTILS_API |
209 | gboolean gst_encoding_profile_is_enabled (GstEncodingProfile *profile); |
210 | |
211 | GST_PBUTILS_API |
212 | void gst_encoding_profile_set_enabled (GstEncodingProfile *profile, |
213 | gboolean enabled); |
214 | /* GstEncodingContainerProfile API */ |
215 | |
216 | GST_PBUTILS_API |
217 | gboolean gst_encoding_container_profile_add_profile (GstEncodingContainerProfile *container, |
218 | GstEncodingProfile *profile); |
219 | |
220 | GST_PBUTILS_API |
221 | gboolean gst_encoding_container_profile_contains_profile (GstEncodingContainerProfile * container, |
222 | GstEncodingProfile *profile); |
223 | |
224 | GST_PBUTILS_API |
225 | const GList * gst_encoding_container_profile_get_profiles (GstEncodingContainerProfile *profile); |
226 | |
227 | |
228 | GST_PBUTILS_API |
229 | GstEncodingContainerProfile * gst_encoding_container_profile_new (const gchar *name, |
230 | const gchar *description, |
231 | GstCaps *format, |
232 | const gchar *preset); |
233 | |
234 | |
235 | /* Individual stream encodingprofile API */ |
236 | |
237 | GST_PBUTILS_API |
238 | GstEncodingVideoProfile * gst_encoding_video_profile_new (GstCaps *format, |
239 | const gchar *preset, |
240 | GstCaps *restriction, |
241 | guint presence); |
242 | |
243 | GST_PBUTILS_API |
244 | GstEncodingAudioProfile * gst_encoding_audio_profile_new (GstCaps *format, |
245 | const gchar *preset, |
246 | GstCaps *restriction, |
247 | guint presence); |
248 | |
249 | GST_PBUTILS_API |
250 | guint gst_encoding_video_profile_get_pass (GstEncodingVideoProfile *prof); |
251 | |
252 | GST_PBUTILS_API |
253 | gboolean gst_encoding_video_profile_get_variableframerate (GstEncodingVideoProfile *prof); |
254 | |
255 | GST_PBUTILS_API |
256 | void gst_encoding_video_profile_set_pass (GstEncodingVideoProfile *prof, |
257 | guint pass); |
258 | |
259 | GST_PBUTILS_API |
260 | void gst_encoding_video_profile_set_variableframerate (GstEncodingVideoProfile *prof, |
261 | gboolean variableframerate); |
262 | |
263 | GST_PBUTILS_API |
264 | GstEncodingProfile * gst_encoding_profile_from_discoverer (GstDiscovererInfo *info); |
265 | |
266 | GST_PBUTILS_API |
267 | GstEncodingProfile * gst_encoding_profile_copy (GstEncodingProfile *self); |
268 | |
269 | GST_PBUTILS_API |
270 | void gst_encoding_profile_set_element_properties (GstEncodingProfile *self, |
271 | GstStructure *element_properties); |
272 | |
273 | GST_PBUTILS_API |
274 | GstStructure *gst_encoding_profile_get_element_properties (GstEncodingProfile *self); |
275 | |
276 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingAudioProfile, gst_object_unref) |
277 | |
278 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingContainerProfile, gst_object_unref) |
279 | |
280 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingProfile, gst_object_unref) |
281 | |
282 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingVideoProfile, gst_object_unref) |
283 | |
284 | G_END_DECLS |
285 | |
286 | #endif /* __GST_PROFILE_H__ */ |
287 | |