1 /* 2 * Clutter-GStreamer. 3 * 4 * GStreamer integration library for Clutter. 5 * 6 * clutter-gst-player.h - Wrap some convenience functions around playbin2 7 * 8 * Authored By Damien Lespiau <damien.lespiau@intel.com> 9 * Lionel Landwerlin <lionel.g.landwerlin@linux.intel.com> 10 * 11 * Copyright (C) 2011 Intel Corporation 12 * 13 * This library is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU Lesser General Public 15 * License as published by the Free Software Foundation; either 16 * version 2 of the License, or (at your option) any later version. 17 * 18 * This library is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 * Lesser General Public License for more details. 22 * 23 * You should have received a copy of the GNU Lesser General Public 24 * License along with this library; if not, write to the 25 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 26 * Boston, MA 02111-1307, USA. 27 */ 28 29 #ifndef __CLUTTER_GST_PLAYER_H__ 30 #define __CLUTTER_GST_PLAYER_H__ 31 32 #include <glib-object.h> 33 34 #include <clutter/clutter.h> 35 36 #include <clutter-gst/clutter-gst-types.h> 37 38 G_BEGIN_DECLS 39 40 #define CLUTTER_GST_TYPE_PLAYER clutter_gst_player_get_type() 41 42 #define CLUTTER_GST_PLAYER(obj) \ 43 (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 44 CLUTTER_GST_TYPE_PLAYER, \ 45 ClutterGstPlayer)) 46 #define CLUTTER_GST_IS_PLAYER(obj) \ 47 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 48 CLUTTER_GST_TYPE_PLAYER)) 49 #define CLUTTER_GST_PLAYER_GET_INTERFACE(obj) \ 50 (G_TYPE_INSTANCE_GET_INTERFACE ((obj), \ 51 CLUTTER_GST_TYPE_PLAYER, \ 52 ClutterGstPlayerIface)) 53 54 typedef struct _ClutterGstPlayer ClutterGstPlayer; 55 typedef struct _ClutterGstPlayerIface ClutterGstPlayerIface; 56 typedef struct _ClutterGstPlayerIfacePrivate ClutterGstPlayerIfacePrivate; 57 58 59 /** 60 * ClutterGstPlayer: 61 * 62 * #ClutterGstPlayer is an opaque structure whose members cannot be 63 * directly accessed 64 * 65 * Since: 1.4 66 */ 67 68 /** 69 * ClutterGstPlayerIface: 70 * @download_buffering: handler for the #ClutterGstPlayer::download-buffering 71 * signal 72 * 73 * Interface vtable for #ClutterGstPlayer implementations 74 * 75 * Since: 1.4 76 */ 77 struct _ClutterGstPlayerIface 78 { 79 /*< private >*/ 80 GTypeInterface base_iface; 81 82 ClutterGstPlayerIfacePrivate *priv; 83 84 /*< public >*/ 85 GstElement * (* get_pipeline) (ClutterGstPlayer *player); 86 87 gchar * (* get_user_agent) (ClutterGstPlayer *player); 88 void (* set_user_agent) (ClutterGstPlayer *player, 89 const gchar *user_agent); 90 91 ClutterGstSeekFlags (* get_seek_flags) (ClutterGstPlayer *player); 92 void (* set_seek_flags) (ClutterGstPlayer *player, 93 ClutterGstSeekFlags flags); 94 95 ClutterGstBufferingMode (* get_buffering_mode) (ClutterGstPlayer *player); 96 void (* set_buffering_mode) (ClutterGstPlayer *player, 97 ClutterGstBufferingMode mode); 98 99 GList * (* get_audio_streams) (ClutterGstPlayer *player); 100 gint (* get_audio_stream) (ClutterGstPlayer *player); 101 void (* set_audio_stream) (ClutterGstPlayer *player, 102 gint index_); 103 104 GList * (* get_subtitle_tracks) (ClutterGstPlayer *player); 105 gint (* get_subtitle_track) (ClutterGstPlayer *player); 106 void (* set_subtitle_track) (ClutterGstPlayer *player, 107 gint index_); 108 109 gboolean (*get_idle) (ClutterGstPlayer *player); 110 111 gboolean (*get_in_seek) (ClutterGstPlayer *player); 112 113 void (* _iface_reserved16) (void); 114 void (* _iface_reserved17) (void); 115 void (* _iface_reserved18) (void); 116 void (* _iface_reserved19) (void); 117 void (* _iface_reserved20) (void); 118 void (* _iface_reserved21) (void); 119 void (* _iface_reserved22) (void); 120 void (* _iface_reserved23) (void); 121 void (* _iface_reserved24) (void); 122 void (* _iface_reserved25) (void); 123 void (* _iface_reserved26) (void); 124 void (* _iface_reserved27) (void); 125 void (* _iface_reserved28) (void); 126 void (* _iface_reserved29) (void); 127 void (* _iface_reserved30) (void); 128 void (* _iface_reserved31) (void); 129 void (* _iface_reserved32) (void); 130 void (* _iface_reserved33) (void); 131 void (* _iface_reserved34) (void); 132 void (* _iface_reserved35) (void); 133 134 /* signals */ 135 void (* download_buffering) (ClutterGstPlayer *player, 136 gdouble start, 137 gdouble stop); 138 void (* _clutter_reserved2) (void); 139 void (* _clutter_reserved3) (void); 140 void (* _clutter_reserved4) (void); 141 void (* _clutter_reserved5) (void); 142 void (* _clutter_reserved6) (void); 143 void (* _clutter_reserved7) (void); 144 void (* _clutter_reserved8) (void); 145 void (* _clutter_reserved9) (void); 146 void (* _clutter_reserved10) (void); 147 }; 148 149 GType clutter_gst_player_get_type (void) G_GNUC_CONST; 150 151 void clutter_gst_player_class_init (GObjectClass *object_class); 152 153 gboolean clutter_gst_player_init (ClutterGstPlayer *player); 154 void clutter_gst_player_deinit (ClutterGstPlayer *player); 155 156 GstElement * clutter_gst_player_get_pipeline (ClutterGstPlayer *player); 157 158 gchar * clutter_gst_player_get_user_agent (ClutterGstPlayer *player); 159 void clutter_gst_player_set_user_agent (ClutterGstPlayer *player, 160 const gchar *user_agent); 161 162 ClutterGstSeekFlags clutter_gst_player_get_seek_flags (ClutterGstPlayer *player); 163 void clutter_gst_player_set_seek_flags (ClutterGstPlayer *player, 164 ClutterGstSeekFlags flags); 165 166 ClutterGstBufferingMode clutter_gst_player_get_buffering_mode (ClutterGstPlayer *player); 167 void clutter_gst_player_set_buffering_mode (ClutterGstPlayer *player, 168 ClutterGstBufferingMode mode); 169 170 GList * clutter_gst_player_get_audio_streams (ClutterGstPlayer *player); 171 gint clutter_gst_player_get_audio_stream (ClutterGstPlayer *player); 172 void clutter_gst_player_set_audio_stream (ClutterGstPlayer *player, 173 gint index_); 174 175 GList * clutter_gst_player_get_subtitle_tracks (ClutterGstPlayer *player); 176 gint clutter_gst_player_get_subtitle_track (ClutterGstPlayer *player); 177 void clutter_gst_player_set_subtitle_track (ClutterGstPlayer *player, 178 gint index_); 179 180 gboolean clutter_gst_player_get_idle (ClutterGstPlayer *player); 181 182 gboolean clutter_gst_player_get_in_seek (ClutterGstPlayer *player); 183 184 G_END_DECLS 185 186 #endif /* __CLUTTER_GST_PLAYER_H__ */ 187