2 * This file is a part of MAFW
4 * Copyright (C) 2007, 2008, 2009 Nokia Corporation, all rights reserved.
6 * Contact: Visa Smolander <visa.smolander@nokia.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; version 2.1 of
11 * the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25 #ifndef MAFW_GST_RENDERER_STATE_H
26 #define MAFW_GST_RENDERER_STATE_H
29 #include <glib-object.h>
30 #include "mafw-gst-renderer-worker.h"
32 /* Solving the cyclic dependencies */
33 typedef struct _MafwGstRendererState MafwGstRendererState;
34 typedef struct _MafwGstRendererStateClass MafwGstRendererStateClass;
35 #include "mafw-gst-renderer.h"
39 /*----------------------------------------------------------------------------
40 GObject type conversion macros
41 ----------------------------------------------------------------------------*/
43 #define MAFW_TYPE_GST_RENDERER_STATE \
44 (mafw_gst_renderer_state_get_type())
45 #define MAFW_GST_RENDERER_STATE(obj) \
46 (G_TYPE_CHECK_INSTANCE_CAST((obj), MAFW_TYPE_GST_RENDERER_STATE, \
47 MafwGstRendererState))
48 #define MAFW_IS_GST_RENDERER_STATE(obj) \
49 (G_TYPE_CHECK_INSTANCE_TYPE((obj), MAFW_TYPE_GST_RENDERER_STATE))
50 #define MAFW_GST_RENDERER_STATE_CLASS(klass) \
51 (G_TYPE_CHECK_CLASS_CAST((klass), MAFW_TYPE_GST_RENDERER_STATE, \
52 MafwGstRendererStateClass))
53 #define MAFW_GST_RENDERER_STATE_GET_CLASS(obj) \
54 (G_TYPE_INSTANCE_GET_CLASS((obj), MAFW_TYPE_GST_RENDERER_STATE, \
55 MafwGstRendererStateClass))
56 #define MAFW_IS_GST_RENDERER_STATE_CLASS(klass) \
57 (G_TYPE_CHECK_CLASS_TYPE((klass), MAFW_TYPE_GST_RENDERER_STATE))
59 /*----------------------------------------------------------------------------
61 ----------------------------------------------------------------------------*/
64 struct _MafwGstRendererStateClass {
65 GObjectClass parent_class;
70 void (*play)(MafwGstRendererState *self, GError **error);
71 void (*play_object)(MafwGstRendererState *self, const gchar *object_id,
73 void (*stop)(MafwGstRendererState *self, GError **error);
74 void (*pause)(MafwGstRendererState *self, GError **error);
75 void (*resume)(MafwGstRendererState *self, GError **error);
76 void (*set_position) (MafwGstRendererState *self,
77 MafwRendererSeekMode mode, gint seconds,
79 void (*get_position) (MafwGstRendererState *self,
85 void (*next)(MafwGstRendererState *self, GError **error);
86 void (*previous)(MafwGstRendererState *self, GError **error);
87 void (*goto_index)(MafwGstRendererState *self, guint index,
90 /* Notification metadata */
92 void (*notify_metadata)(MafwGstRendererState *self,
93 const gchar *object_id,
100 void (*notify_play)(MafwGstRendererState *self, GError **error);
101 void (*notify_pause)(MafwGstRendererState *self, GError **error);
102 void (*notify_seek)(MafwGstRendererState *self, GError **error);
103 void (*notify_buffer_status)(MafwGstRendererState *self, gdouble percent,
105 void (*notify_eos) (MafwGstRendererState *self, GError **error);
107 /* Playlist editing signals */
109 void (*playlist_contents_changed)(MafwGstRendererState *self,
110 gboolean clip_changed,
112 /* Property methods */
114 GValue* (*get_property_value)(MafwGstRendererState *self,
117 /* Memory card event handlers */
119 void (*handle_pre_unmount)(MafwGstRendererState *self,
120 const gchar *mount_point);
123 struct _MafwGstRendererState {
126 MafwGstRenderer *renderer;
129 GType mafw_gst_renderer_state_get_type(void);
132 /*----------------------------------------------------------------------------
134 ----------------------------------------------------------------------------*/
136 void mafw_gst_renderer_state_play(MafwGstRendererState *self, GError **error);
137 void mafw_gst_renderer_state_play_object(MafwGstRendererState *self,
138 const gchar *object_id,
140 void mafw_gst_renderer_state_stop(MafwGstRendererState *self, GError **error);
141 void mafw_gst_renderer_state_pause(MafwGstRendererState *self, GError **error);
142 void mafw_gst_renderer_state_resume(MafwGstRendererState *self, GError **error);
143 void mafw_gst_renderer_state_set_position(MafwGstRendererState *self,
144 MafwRendererSeekMode mode, gint seconds,
146 void mafw_gst_renderer_state_get_position(MafwGstRendererState *self,
150 /*----------------------------------------------------------------------------
152 ----------------------------------------------------------------------------*/
154 void mafw_gst_renderer_state_next(MafwGstRendererState *self, GError **error);
155 void mafw_gst_renderer_state_previous(MafwGstRendererState *self, GError **error);
156 void mafw_gst_renderer_state_goto_index(MafwGstRendererState *self, guint index,
160 /*----------------------------------------------------------------------------
161 Notification metatada
162 ----------------------------------------------------------------------------*/
164 void mafw_gst_renderer_state_notify_metadata(MafwGstRendererState *self,
165 const gchar *object_id,
166 GHashTable *metadata,
169 /*----------------------------------------------------------------------------
171 ----------------------------------------------------------------------------*/
173 void mafw_gst_renderer_state_notify_play(MafwGstRendererState *self,
175 void mafw_gst_renderer_state_notify_pause(MafwGstRendererState *self,
177 void mafw_gst_renderer_state_notify_seek(MafwGstRendererState *self,
179 void mafw_gst_renderer_state_notify_buffer_status(MafwGstRendererState *self,
182 void mafw_gst_renderer_state_notify_eos(MafwGstRendererState *self,
185 /*----------------------------------------------------------------------------
186 Playlist editing handlers
187 ----------------------------------------------------------------------------*/
189 void mafw_gst_renderer_state_playlist_contents_changed_handler(
190 MafwGstRendererState *self,
191 gboolean clip_changed,
194 /*----------------------------------------------------------------------------
196 ----------------------------------------------------------------------------*/
198 GValue* mafw_gst_renderer_state_get_property_value(MafwGstRendererState *self,
201 /*----------------------------------------------------------------------------
202 Memory card event handlers
203 ----------------------------------------------------------------------------*/
205 void mafw_gst_renderer_state_handle_pre_unmount(MafwGstRendererState *self,
206 const gchar *mount_point);
208 /*----------------------------------------------------------------------------
210 ----------------------------------------------------------------------------*/
212 void mafw_gst_renderer_state_do_play(MafwGstRendererState *self, GError **error);
213 void mafw_gst_renderer_state_do_play_object(MafwGstRendererState *self,
214 const gchar *object_id,
216 void mafw_gst_renderer_state_do_stop(MafwGstRendererState *self,
218 void mafw_gst_renderer_state_do_next(MafwGstRendererState *self,
220 void mafw_gst_renderer_state_do_prev(MafwGstRendererState *self,
222 void mafw_gst_renderer_state_do_goto_index(MafwGstRendererState *self,
225 void mafw_gst_renderer_state_do_set_position(MafwGstRendererState *self,
226 MafwRendererSeekMode mode, gint seconds,
228 void mafw_gst_renderer_state_do_get_position(MafwGstRendererState *self,
231 void mafw_gst_renderer_state_do_notify_seek(MafwGstRendererState *self,
233 void mafw_gst_renderer_state_do_notify_buffer_status(MafwGstRendererState *self,