1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ 2 /* 3 * Libbrasero-media 4 * Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr> 5 * 6 * Libbrasero-media 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-media authors hereby grant permission for non-GPL compatible 12 * GStreamer plugins to be used and distributed together with GStreamer 13 * and Libbrasero-media. This permission is above and beyond the permissions granted 14 * by the GPL license by which Libbrasero-media 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-media 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_MEDIA_H 32 #define _BURN_MEDIA_H 33 34 #include <glib.h> 35 36 G_BEGIN_DECLS 37 38 /** 39 * Some needed information about the library 40 */ 41 42 #define LIBBRASERO_MEDIA_VERSION_MAJOR \ 43 3 44 #define LIBBRASERO_MEDIA_VERSION_MINOR \ 45 12 46 #define LIBBRASERO_MEDIA_VERSION_MICRO \ 47 3 48 #define LIBBRASERO_MEDIA_AGE \ 49 372 50 #define LIBBRASERO_MEDIA_INSTALL \ 51 "/home/david/gnome" 52 53 /** 54 * To start and stop the library 55 */ 56 57 void 58 brasero_media_library_start (void); 59 60 void 61 brasero_media_library_stop (void); 62 63 GOptionGroup * 64 brasero_media_get_option_group (void); 65 66 /** 67 * Errors 68 */ 69 70 GQuark brasero_media_quark (void); 71 72 /** 73 * BRASERO_MEDIA_ERROR: 74 * 75 * The GQuark used for BraseroMediaError 76 */ 77 #define BRASERO_MEDIA_ERROR brasero_media_quark() 78 79 /** 80 * BraseroMediaError: 81 * 82 * Error codes returned by libbrasero-media 83 * 84 */ 85 typedef enum { 86 BRASERO_MEDIA_ERROR_NONE, 87 BRASERO_MEDIA_ERROR_GENERAL, 88 BRASERO_MEDIA_ERROR_IMAGE_INVALID, 89 } BraseroMediaError; 90 91 /** 92 * BraseroMedia: 93 * 94 * This enum allows to define all characteristics for a media (closed, writable, ...) 95 * and identify all types of optical media. 96 * 97 */ 98 typedef enum { 99 BRASERO_MEDIUM_UNSUPPORTED = -2, 100 BRASERO_MEDIUM_BUSY = -1, 101 BRASERO_MEDIUM_NONE = 0, 102 103 /* types */ 104 BRASERO_MEDIUM_FILE = 1, 105 106 BRASERO_MEDIUM_CD = 1 << 1, 107 108 BRASERO_MEDIUM_DVD = 1 << 2, 109 110 BRASERO_MEDIUM_BD = 1 << 3, 111 112 /* subtype for DVD and BD types */ 113 BRASERO_MEDIUM_DUAL_L = 1 << 4, 114 115 /* DVD and DVD DL subtypes */ 116 BRASERO_MEDIUM_RAM = 1 << 5, 117 BRASERO_MEDIUM_PLUS = 1 << 6, 118 BRASERO_MEDIUM_SEQUENTIAL = 1 << 7, 119 BRASERO_MEDIUM_RESTRICTED = 1 << 8, /* DVD-RW only */ 120 121 /* DVD-R dual layer only subtype */ 122 BRASERO_MEDIUM_JUMP = 1 << 9, 123 124 /* BD subtypes */ 125 BRASERO_MEDIUM_RANDOM = 1 << 10, 126 BRASERO_MEDIUM_SRM = 1 << 11, 127 BRASERO_MEDIUM_POW = 1 << 12, /* This is Pseudo OverWrite */ 128 129 /* discs attributes */ 130 BRASERO_MEDIUM_REWRITABLE = 1 << 14, 131 BRASERO_MEDIUM_WRITABLE = 1 << 15, 132 BRASERO_MEDIUM_ROM = 1 << 16, 133 134 /* status of the disc */ 135 BRASERO_MEDIUM_BLANK = 1 << 17, 136 BRASERO_MEDIUM_CLOSED = 1 << 18, 137 BRASERO_MEDIUM_APPENDABLE = 1 << 19, 138 139 /* Only used for DVD+RW, DVD-RW restricted */ 140 BRASERO_MEDIUM_UNFORMATTED = 1 << 20, 141 142 BRASERO_MEDIUM_PROTECTED = 1 << 21, 143 BRASERO_MEDIUM_HAS_DATA = 1 << 22, 144 BRASERO_MEDIUM_HAS_AUDIO = 1 << 23, 145 } BraseroMedia; 146 147 #define BRASERO_MEDIUM_CDROM (BRASERO_MEDIUM_CD| \ 148 BRASERO_MEDIUM_ROM) 149 #define BRASERO_MEDIUM_CDR (BRASERO_MEDIUM_CD| \ 150 BRASERO_MEDIUM_WRITABLE) 151 #define BRASERO_MEDIUM_CDRW (BRASERO_MEDIUM_CD| \ 152 BRASERO_MEDIUM_REWRITABLE) 153 #define BRASERO_MEDIUM_DVD_ROM (BRASERO_MEDIUM_DVD| \ 154 BRASERO_MEDIUM_ROM) 155 #define BRASERO_MEDIUM_DVDR (BRASERO_MEDIUM_DVD| \ 156 BRASERO_MEDIUM_SEQUENTIAL| \ 157 BRASERO_MEDIUM_WRITABLE) 158 #define BRASERO_MEDIUM_DVDRW (BRASERO_MEDIUM_DVD| \ 159 BRASERO_MEDIUM_SEQUENTIAL| \ 160 BRASERO_MEDIUM_REWRITABLE) 161 #define BRASERO_MEDIUM_DVDRW_RESTRICTED (BRASERO_MEDIUM_DVD| \ 162 BRASERO_MEDIUM_REWRITABLE| \ 163 BRASERO_MEDIUM_RESTRICTED) 164 #define BRASERO_MEDIUM_DVDR_DL (BRASERO_MEDIUM_DVD| \ 165 BRASERO_MEDIUM_DUAL_L| \ 166 BRASERO_MEDIUM_WRITABLE| \ 167 BRASERO_MEDIUM_SEQUENTIAL) 168 #define BRASERO_MEDIUM_DVDR_JUMP_DL (BRASERO_MEDIUM_DVD| \ 169 BRASERO_MEDIUM_DUAL_L| \ 170 BRASERO_MEDIUM_WRITABLE| \ 171 BRASERO_MEDIUM_JUMP) 172 #define BRASERO_MEDIUM_DVDR_PLUS (BRASERO_MEDIUM_DVD| \ 173 BRASERO_MEDIUM_WRITABLE| \ 174 BRASERO_MEDIUM_PLUS) 175 #define BRASERO_MEDIUM_DVDRW_PLUS (BRASERO_MEDIUM_DVD| \ 176 BRASERO_MEDIUM_REWRITABLE| \ 177 BRASERO_MEDIUM_PLUS) 178 #define BRASERO_MEDIUM_DVDR_PLUS_DL (BRASERO_MEDIUM_DVD| \ 179 BRASERO_MEDIUM_DUAL_L| \ 180 BRASERO_MEDIUM_WRITABLE| \ 181 BRASERO_MEDIUM_PLUS) 182 #define BRASERO_MEDIUM_DVDRW_PLUS_DL (BRASERO_MEDIUM_DVD| \ 183 BRASERO_MEDIUM_DUAL_L| \ 184 BRASERO_MEDIUM_REWRITABLE| \ 185 BRASERO_MEDIUM_PLUS) 186 187 #define BRASERO_MEDIUM_DVD_RAM (BRASERO_MEDIUM_DVD| \ 188 BRASERO_MEDIUM_RAM) 189 190 /* BD types all exist in BD-R(E) DL as well */ 191 #define BRASERO_MEDIUM_BD_ROM (BRASERO_MEDIUM_BD| \ 192 BRASERO_MEDIUM_ROM) 193 #define BRASERO_MEDIUM_BDR_SRM (BRASERO_MEDIUM_BD| \ 194 BRASERO_MEDIUM_SRM| \ 195 BRASERO_MEDIUM_WRITABLE) 196 #define BRASERO_MEDIUM_BDR_SRM_POW (BRASERO_MEDIUM_BD| \ 197 BRASERO_MEDIUM_POW| \ 198 BRASERO_MEDIUM_SRM| \ 199 BRASERO_MEDIUM_WRITABLE) 200 201 /* This seems to be a really rare mode for BD-R */ 202 #define BRASERO_MEDIUM_BDR_RANDOM (BRASERO_MEDIUM_BD| \ 203 BRASERO_MEDIUM_WRITABLE| \ 204 BRASERO_MEDIUM_RANDOM) 205 /* This is always RANDOM write */ 206 #define BRASERO_MEDIUM_BDRE (BRASERO_MEDIUM_BD| \ 207 BRASERO_MEDIUM_REWRITABLE) 208 209 210 211 #define BRASERO_MEDIUM_VALID(media) ((media) != BRASERO_MEDIUM_NONE && \ 212 (media) != BRASERO_MEDIUM_BUSY && \ 213 (media) != BRASERO_MEDIUM_UNSUPPORTED) 214 215 216 #define BRASERO_MEDIUM_TYPE(media) ((media) & 0x003F) 217 #define BRASERO_MEDIUM_ATTR(media) ((media) & 0x1C000) 218 #define BRASERO_MEDIUM_STATUS(media) ((media) & 0xE0000) 219 #define BRASERO_MEDIUM_SUBTYPE(media) ((media) & 0x1FC0) 220 #define BRASERO_MEDIUM_INFO(media) ((media) & 0xFE0000) 221 222 #define BRASERO_MEDIUM_IS(media, type) (((media)&(type))==(type)) 223 224 /* These behave like random writable: 225 * they can be appendable or closed, rewritable or writable */ 226 #define BRASERO_MEDIUM_RANDOM_WRITABLE(media) \ 227 (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS) || \ 228 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED) || \ 229 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD_RAM) || \ 230 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BDR_RANDOM) || \ 231 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BDR_SRM_POW) || \ 232 BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BDRE)) 233 234 235 G_END_DECLS 236 237 #endif /* _BURN_MEDIA_H */ 238 239 240 241