1 2 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens 3 Copyright (c) 2006 - 2013 Thomas Schmitt <scdbackup@gmx.net> 4 Provided under GPL version 2 or later. 5 */ 6 7 #ifndef BURN__OPTIONS_H 8 #define BURN__OPTIONS_H 9 10 #include "libburn.h" 11 12 /** Options for disc writing operations. This should be created with 13 burn_write_opts_new() and freed with burn_write_opts_free(). */ 14 struct burn_write_opts 15 { 16 /** Drive the write opts are good for */ 17 struct burn_drive *drive; 18 19 /** For internal use. */ 20 int refcount; 21 22 /** The method/style of writing to use. */ 23 enum burn_write_types write_type; 24 /** format of the data to send to the drive */ 25 enum burn_block_types block_type; 26 27 /** Number of toc entries. if this is 0, they will be auto generated*/ 28 int toc_entries; 29 /** Toc entries for the disc */ 30 struct burn_toc_entry *toc_entry; 31 32 /** Simulate the write so that the disc is not actually written */ 33 unsigned int simulate:1; 34 /** If available, enable a drive feature which prevents buffer 35 underruns if not enough data is available to keep up with the 36 drive. */ 37 unsigned int underrun_proof:1; 38 /** Perform calibration of the drive's laser before beginning the 39 write. */ 40 unsigned int perform_opc:1; 41 42 /* ts A61219 : Output block size to trigger buffer flush if hit. 43 -1 with CD, 32 kB with DVD */ 44 int obs; 45 int obs_pad; /* >0 pad up last block to obs, 0 do not 46 2 indicates burn_write_opts_set_obs_pad(,1) 47 */ 48 49 /* ts A61222 : Start address for media which offer a choice */ 50 off_t start_byte; 51 52 /* ts A70213 : Whether to fill up the available space on media */ 53 int fill_up_media; 54 55 /* ts A70303 : Whether to override conformance checks: 56 - the check whether CD write+block type is supported by the drive 57 */ 58 int force_is_set; 59 60 /* ts A80412 : whether to use WRITE12 with Streaming bit set 61 rather than WRITE10. Speeds up DVD-RAM. Might help with BD-RE. 62 This gets transferred to burn_drive.do_stream_recording 63 */ 64 int do_stream_recording; 65 66 /* ts A91115 : override value for .obs on DVD media. 67 Only values 0, 32K and 64K are allowed for now. */ 68 int dvd_obs_override; 69 70 /* ts A91115 : size of the fsync() interval for stdio writing. 71 Values 0 or >= 32 counted in 2 KB blocks. */ 72 int stdio_fsync_size; 73 74 /* ts B11203 : CD-TEXT */ 75 unsigned char *text_packs; 76 int num_text_packs; 77 int no_text_pack_crc_check; 78 79 /** A disc can have a media catalog number */ 80 int has_mediacatalog; 81 unsigned char mediacatalog[13]; 82 /** Session format */ 83 int format; 84 85 /* internal use only */ 86 unsigned char control; 87 88 /* Whether to keep medium appendable */ 89 unsigned char multi; 90 91 /* ts B31024 */ 92 /* The severity to be attributed to error messages about failed 93 write attempt with blank DVD-RW, possibly due to falsely reported 94 feature 21h Incremental Streaming Writable 95 */ 96 int feat21h_fail_sev; 97 }; 98 99 /* Default value for burn_write_opts.stdio_flush_size 100 */ 101 #define Libburn_stdio_fsync_limiT 8192 102 103 /* Maximum number of Lead-in text packs. 104 READ TOC/PMA/ATIP can at most return 3640.7 packs. 105 The sequence counters of the packs have 8 bits. There are 8 blocks at most. 106 Thus max 2048 packs. 107 */ 108 #define Libburn_leadin_cdtext_packs_maX 2048 109 110 111 /** Options for disc reading operations. This should be created with 112 burn_read_opts_new() and freed with burn_read_opts_free(). */ 113 struct burn_read_opts 114 { 115 /** Drive the read opts are good for */ 116 struct burn_drive *drive; 117 118 /** For internal use. */ 119 int refcount; 120 121 /** Read in raw mode, so that everything in the data tracks on the 122 disc is read, including headers. Not needed if just reading a 123 filesystem off a disc, but it should usually be used when making a 124 disc image or copying a disc. */ 125 unsigned int raw:1; 126 /** Report c2 errors. Useful for statistics reporting */ 127 unsigned int c2errors:1; 128 /** Read subcodes from audio tracks on the disc */ 129 unsigned int subcodes_audio:1; 130 /** Read subcodes from data tracks on the disc */ 131 unsigned int subcodes_data:1; 132 /** Have the drive recover errors if possible */ 133 unsigned int hardware_error_recovery:1; 134 /** Report errors even when they were recovered from */ 135 unsigned int report_recovered_errors:1; 136 /** Read blocks even when there are unrecoverable errors in them */ 137 unsigned int transfer_damaged_blocks:1; 138 139 /** The number of retries the hardware should make to correct 140 errors. */ 141 unsigned char hardware_error_retries; 142 143 /* ts B21119 */ 144 /* >>> Needs API access */ 145 /** Whether to set DAP bit which allows the drive to apply 146 "flaw obscuring mechanisms like audio data mute and interpolate" 147 */ 148 unsigned int dap_bit; 149 150 }; 151 152 153 int burn_write_opts_clone(struct burn_write_opts *from, 154 struct burn_write_opts **to, int flag); 155 156 157 #endif /* BURN__OPTIONS_H */ 158