From 492e3d78959a3c563b3941f5872381a360d9ca67 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 8 Apr 2012 11:27:54 +0000 Subject: [PATCH] New option --obs_pad --- cdrskin/cdrskin.1 | 18 ++++++++++++++---- cdrskin/cdrskin.c | 7 +++++++ cdrskin/cdrskin_timestamp.h | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/cdrskin/cdrskin.1 b/cdrskin/cdrskin.1 index a734918..ebc53c8 100644 --- a/cdrskin/cdrskin.1 +++ b/cdrskin/cdrskin.1 @@ -2,7 +2,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH CDRSKIN 1 "Jan 12, 2012" +.TH CDRSKIN 1 "Version 1.2.3, Jan 12, 2012" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1051,9 +1051,10 @@ overwriteable DVD-RW it is 32k. .BI dvd_obs= default|32k|64k Linux specific: Set the number of bytes to be transmitted with each write operation to DVD -or BD media. Tracks get padded up to the next multiple of this write -size. A number of 64 KB may improve throughput with bus systems which -show latency problems. The default depends on media type, option +or BD media. With most write types, tracks get padded up to the next multiple +of this write size (see option obs_pad=). +A number of 64 KB may improve throughput with systems +which show latency problems. The default depends on media type, option stream_recording=, and on compile time options. .TP .BI fallback_program= command @@ -1477,6 +1478,15 @@ Such opening is needed for Bus,Target,Lun addresses unless option addresses which are not listed with cdrskin --devices but nevertheless point to a usable drive. (Like /dev/sg0 using the same SCSI address as /dev/sr0.) .TP +.BI \--obs_pad +Pad the data of last write operation of a DVD-R[W] DAO session or +stdio: pseudo-drive up to the full size of an output chunk. +This padding has to be applied automatically to the other DVD and BD media +types, where it causes e.g. ISO images to have trailing unclaimed blocks. +.br +There are reports that DAO sessions of a size that is not a multiple of 16 +blocks abort on some Linux kernels and/or DVD drives. +.TP .BI \--old_pseudo_scsi_adr Linux specific: Use and report literal Bus,Target,Lun addresses rather than real SCSI and diff --git a/cdrskin/cdrskin.c b/cdrskin/cdrskin.c index df4aceb..697d3cf 100644 --- a/cdrskin/cdrskin.c +++ b/cdrskin/cdrskin.c @@ -2865,6 +2865,7 @@ set_dev:; printf(" --no_convert_fs_adr only literal translations of dev=\n"); printf( " --no_rc as first argument: do not read startup files\n"); + printf(" --obs_pad pad DVD DAO to full 16 or 32 blocks\n"); printf(" --old_pseudo_scsi_adr use and report literal Bus,Target,Lun\n"); printf(" rather than real SCSI and pseudo ATA.\n"); printf(" --prodvd_cli_compatible react on some DVD types more like\n"); @@ -3320,6 +3321,7 @@ struct CdrskiN { int force_is_set; int stream_recording_is_set; /* see burn_write_opts_set_stream_recording() */ int dvd_obs; /* DVD write chunk size: 0, 32k or 64k */ + int obs_pad; /* Whether to force obs end padding */ int stdio_sync; /* stdio fsync interval: -1, 0, >=32 */ int single_track; int prodvd_cli_compatible; @@ -3571,6 +3573,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag) o->force_is_set= 0; o->stream_recording_is_set= 0; o->dvd_obs= 0; + o->obs_pad= 0; o->stdio_sync= 0; o->single_track= 0; o->prodvd_cli_compatible= 0; @@ -6981,6 +6984,7 @@ burn_failed:; else #endif burn_write_opts_set_dvd_obs(o, skin->dvd_obs); + burn_write_opts_set_obs_pad(o, skin->obs_pad); burn_write_opts_set_stdio_fsync(o, skin->stdio_sync); if(skin->dummy_mode) { @@ -8259,6 +8263,9 @@ msifile_equals:; } else if(strcmp(argv[i],"-nopreemp")==0) { skin->track_modemods&= ~BURN_PREEMPHASIS; + } else if(strcmp(argv[i],"--obs_pad")==0) { + skin->obs_pad= 1; + } else if(strcmp(argv[i],"--old_pseudo_scsi_adr")==0) { /* is handled in Cdrpreskin_setup() */; diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 9e68fe7..a2a75ac 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2012.04.08.112703" +#define Cdrskin_timestamP "2012.04.08.112825"