1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ 2 /* 3 * Libbrasero-burn 4 * Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr> 5 * 6 * Libbrasero-burn is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * The Libbrasero-burn authors hereby grant permission for non-GPL compatible 12 * GStreamer plugins to be used and distributed together with GStreamer 13 * and Libbrasero-burn. This permission is above and beyond the permissions granted 14 * by the GPL license by which Libbrasero-burn is covered. If you modify this code 15 * you may extend this exception to your version of the code, but you are not 16 * obligated to do so. If you do not wish to do so, delete this exception 17 * statement from your version. 18 * 19 * Libbrasero-burn is distributed in the hope that it will be useful, 20 * but WITHOUT ANY WARRANTY; without even the implied warranty of 21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 * GNU Library General Public License for more details. 23 * 24 * You should have received a copy of the GNU General Public License 25 * along with this program; if not, write to: 26 * The Free Software Foundation, Inc., 27 * 51 Franklin Street, Fifth Floor 28 * Boston, MA 02110-1301, USA. 29 */ 30 31 #ifndef BURN_CAPS_H 32 #define BURN_CAPS_H 33 34 #include <glib.h> 35 #include <glib-object.h> 36 37 #include "burn-basics.h" 38 #include "brasero-track-type.h" 39 #include "brasero-track-type-private.h" 40 #include "brasero-plugin.h" 41 #include "brasero-plugin-information.h" 42 #include "brasero-plugin-registration.h" 43 44 G_BEGIN_DECLS 45 46 #define BRASERO_TYPE_BURNCAPS (brasero_burn_caps_get_type ()) 47 #define BRASERO_BURNCAPS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BRASERO_TYPE_BURNCAPS, BraseroBurnCaps)) 48 #define BRASERO_BURNCAPS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), BRASERO_TYPE_BURNCAPS, BraseroBurnCapsClass)) 49 #define BRASERO_IS_BURNCAPS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BRASERO_TYPE_BURNCAPS)) 50 #define BRASERO_IS_BURNCAPS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BRASERO_TYPE_BURNCAPS)) 51 #define BRASERO_BURNCAPS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BRASERO_TYPE_BURNCAPS, BraseroBurnCapsClass)) 52 53 struct _BraseroCaps { 54 GSList *links; /* BraseroCapsLink */ 55 GSList *modifiers; /* BraseroPlugin */ 56 BraseroTrackType type; 57 BraseroPluginIOFlag flags; 58 }; 59 typedef struct _BraseroCaps BraseroCaps; 60 61 struct _BraseroCapsLink { 62 GSList *plugins; 63 BraseroCaps *caps; 64 }; 65 typedef struct _BraseroCapsLink BraseroCapsLink; 66 67 struct _BraseroCapsTest { 68 GSList *links; 69 BraseroChecksumType type; 70 }; 71 typedef struct _BraseroCapsTest BraseroCapsTest; 72 73 typedef struct BraseroBurnCapsPrivate BraseroBurnCapsPrivate; 74 struct BraseroBurnCapsPrivate { 75 GSList *caps_list; /* BraseroCaps */ 76 GSList *tests; /* BraseroCapsTest */ 77 78 GHashTable *groups; 79 80 gchar *group_str; 81 guint group_id; 82 }; 83 84 typedef struct { 85 GObject parent; 86 BraseroBurnCapsPrivate *priv; 87 } BraseroBurnCaps; 88 89 typedef struct { 90 GObjectClass parent_class; 91 } BraseroBurnCapsClass; 92 93 GType brasero_burn_caps_get_type (void); 94 95 BraseroBurnCaps *brasero_burn_caps_get_default (void); 96 97 BraseroPlugin * 98 brasero_caps_link_need_download (BraseroCapsLink *link); 99 100 gboolean 101 brasero_caps_link_active (BraseroCapsLink *link, 102 gboolean ignore_plugin_errors); 103 104 gboolean 105 brasero_burn_caps_is_input (BraseroBurnCaps *self, 106 BraseroCaps *input); 107 108 BraseroCaps * 109 brasero_burn_caps_find_start_caps (BraseroBurnCaps *self, 110 BraseroTrackType *output); 111 112 gboolean 113 brasero_caps_is_compatible_type (const BraseroCaps *caps, 114 const BraseroTrackType *type); 115 116 BraseroBurnResult 117 brasero_caps_link_check_recorder_flags_for_input (BraseroCapsLink *link, 118 BraseroBurnFlag session_flags); 119 120 G_END_DECLS 121 122 #endif /* BURN_CAPS_H */ 123