Release 1.19.2
[platform/upstream/gst-editing-services.git] / ges / ges-pipeline.h
1 /* GStreamer Editing Services
2  * Copyright (C) 2009 Edward Hervey <edward.hervey@collabora.co.uk>
3  *               2009 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 #pragma once
22
23 #include <glib-object.h>
24 #include <ges/ges.h>
25 #include <gst/pbutils/encoding-profile.h>
26
27 G_BEGIN_DECLS
28
29 #define GES_TYPE_PIPELINE ges_pipeline_get_type()
30 GES_DECLARE_TYPE(Pipeline, pipeline, PIPELINE);
31
32 /**
33  * GESPipeline:
34  *
35  */
36
37 struct _GESPipeline {
38   /*< private >*/
39   GstPipeline parent;
40
41   GESPipelinePrivate *priv;
42
43   /* Padding for API extension */
44   gpointer _ges_reserved[GES_PADDING];
45 };
46
47 /**
48  * GESPipelineClass:
49  * @parent_class: parent class
50  *
51  */
52
53 struct _GESPipelineClass {
54   /*< private >*/
55   GstPipelineClass parent_class;
56
57   /* Padding for API extension */
58   gpointer _ges_reserved[GES_PADDING];
59 };
60
61 GES_API
62 GESPipeline* ges_pipeline_new (void);
63
64 GES_API
65 gboolean ges_pipeline_set_timeline (GESPipeline * pipeline,
66                                              GESTimeline * timeline);
67
68 GES_API
69 gboolean ges_pipeline_set_render_settings (GESPipeline *pipeline,
70                                                     const gchar * output_uri,
71                                                     GstEncodingProfile *profile);
72 GES_API
73 gboolean ges_pipeline_set_mode (GESPipeline *pipeline,
74                                          GESPipelineFlags mode);
75
76 GES_API
77 GESPipelineFlags ges_pipeline_get_mode (GESPipeline *pipeline);
78
79 GES_API GstSample *
80 ges_pipeline_get_thumbnail(GESPipeline *self, GstCaps *caps);
81
82 GES_API GstSample *
83 ges_pipeline_get_thumbnail_rgb24(GESPipeline *self,
84     gint width, gint height);
85
86 GES_API gboolean
87 ges_pipeline_save_thumbnail(GESPipeline *self,
88     int width, int height, const gchar *format, const gchar *location,
89     GError **error);
90
91 GES_API GstElement *
92 ges_pipeline_preview_get_video_sink (GESPipeline * self);
93
94 GES_API void
95 ges_pipeline_preview_set_video_sink (GESPipeline * self,
96     GstElement * sink);
97
98 GES_API GstElement *
99 ges_pipeline_preview_get_audio_sink (GESPipeline * self);
100
101 GES_API void
102 ges_pipeline_preview_set_audio_sink (GESPipeline * self,
103     GstElement * sink);
104
105 G_END_DECLS