Compare commits
4 Commits
ZeroSixZer
...
ZeroFiveEi
Author | SHA1 | Date | |
---|---|---|---|
35904f5421 | |||
868310c687 | |||
57a9ad89e9 | |||
6d2b06ac0c |
@ -1,7 +1,7 @@
|
||||
Derek Foreman <derek@signalmarketing.com> and Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
Mario Danic <mario.danic@gmail.com>, Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2009 Mario Danic, Thomas Schmitt
|
||||
Copyright (C) 2006-2008 Mario Danic, Thomas Schmitt
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@ -101,9 +101,9 @@ test_structest_CPPFLAGS = -Ilibburn
|
||||
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS)
|
||||
test_structest_SOURCES = test/structest.c
|
||||
|
||||
## cdrskin construction site - ts A60816 - A90102
|
||||
## cdrskin construction site - ts A60816 - A81207
|
||||
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
|
||||
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_6_0
|
||||
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_5_8
|
||||
|
||||
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS)
|
||||
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
|
||||
|
85
README
85
README
@ -4,56 +4,44 @@
|
||||
This all is under GPL.
|
||||
(See GPL reference, our clarification and commitment at the end of this text)
|
||||
------------------------------------------------------------------------------
|
||||
libburn-project.org
|
||||
libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com> and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2009 Mario Danic, Thomas Schmitt
|
||||
Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
|
||||
and Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2006-2008 Mario Danic, Thomas Schmitt
|
||||
|
||||
Still containing parts of
|
||||
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||
Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
|
||||
http://files.libburnia-project.org/releases/libburn-0.6.0.pl00.tar.gz
|
||||
|
||||
This libburnia-project.org toplevel README (C) 2006-2008 Thomas Schmitt
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Build and Installation
|
||||
|
||||
From tarball
|
||||
Our build system is based on autotools. For preparing the build of a SVN
|
||||
snapshot you will need autotools of at least version 1.7.
|
||||
Check out from SVN by
|
||||
svn co http://svn.libburnia-project.org/libburn/trunk libburn
|
||||
go into directory libburn and apply autotools by
|
||||
./bootstrap
|
||||
|
||||
Obtain libburn-0.6.0.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Alternatively you may unpack a release tarball for which you do not need
|
||||
autotools installed.
|
||||
|
||||
tar xzf libburn-0.6.0.pl00.tar.gz
|
||||
cd libburn-0.6.0
|
||||
To build a libburnia-project.org subproject it should be sufficient to go
|
||||
into its toplevel directory (here: "libburn") and execute
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
|
||||
To make libburn accessible for running resp. application development,
|
||||
and to install the cdrecord compatibility binary cdrskin, do
|
||||
(as Superuser):
|
||||
|
||||
and to install the cdrecord compatibility binary cdrskin, do:
|
||||
make install
|
||||
|
||||
This procedure installs libburn.so.4 and cdrskin depending on it.
|
||||
|
||||
Above procedure installs cdrskin depending on libburn.so.4 .
|
||||
For a standalone cdrskin binary, see cdrskin/README.
|
||||
|
||||
|
||||
From SVN
|
||||
|
||||
Our build system is based on autotools. For preparing the build of a SVN
|
||||
snapshot you will need autotools of at least version 1.7.
|
||||
Do in a directory of your choice:
|
||||
|
||||
svn co http://svn.libburnia-project.org/libburn/trunk libburn-0.5.9
|
||||
cd libburn-0.5.9
|
||||
./bootstrap
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
make install
|
||||
|
||||
Warning: The trunk might contain experimental features which might not
|
||||
persist until next release.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
An important part of the project, libisofs, is hosted in a bzr repository at
|
||||
launchpad.net :
|
||||
bzr branch lp:libisofs
|
||||
@ -63,6 +51,7 @@ Another part the project, libisoburn, is hosted in the libburnia SVN, too:
|
||||
|
||||
See README files there.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -70,7 +59,7 @@ See README files there.
|
||||
|
||||
libburnia-project.org is an open-source software project for reading, mastering
|
||||
and writing optical discs.
|
||||
For now this means CD media, all DVD media except DVD-R DL, all BD media.
|
||||
For now this means only CD media and all single layer DVD media except DVD+R.
|
||||
|
||||
The project comprises of several more or less interdependent parts which
|
||||
together strive to be a usable foundation for application development.
|
||||
@ -79,16 +68,18 @@ classical (and valuable) Linux tools.
|
||||
Currently it is supported on Linux with kernels >= 2.4 and on FreeBSD versions
|
||||
with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||||
|
||||
For ports to other systems we would need : login on a development machine
|
||||
resp. a live OS on CD or DVD, advise from a system person about the equivalent
|
||||
of Linux sg or FreeBSD CAM, volunteers for testing of realistic use cases.
|
||||
Our scope is currently Linux 2.4 or 2.6 and FreeBSD versions with ATAPI/CAM
|
||||
support enabled in the kernel, see atapicam(4). For ports to other systems
|
||||
we would need : login on a development machine resp. a live OS on CD or DVD,
|
||||
advise from a system person about the equivalent of Linux sg or FreeBSD CAM,
|
||||
volunteers for testing of realistic use cases.
|
||||
|
||||
We have a well tested code base for burning data and audio CDs, DVDs and BDs.
|
||||
The burn API is quite comprehensively documented and can be used to build a
|
||||
presentable application.
|
||||
We have a functional application which emulates the core use cases of cdrecord
|
||||
in order to prove that usability, and in order to allow you to explore
|
||||
libburn's scope by help of existing cdrecord frontends.
|
||||
We have a well tested code base for burning data and audio CDs and many DVD
|
||||
types. The burn API is quite comprehensively documented and can be used to
|
||||
build a presentable application.
|
||||
We have a functional binary which emulates the core use cases of cdrecord in
|
||||
order to prove that usability, and in order to allow you to explore libburn's
|
||||
scope by help of existing cdrecord frontends.
|
||||
|
||||
ISO 9660 filesystems with Rock Ridge and Joliet extensions can be created
|
||||
and manipulated quite freely. This capability together with our burn capability
|
||||
@ -128,9 +119,8 @@ The project components (list subject to growth, hopefully):
|
||||
- xorriso is an application of all three libraries which creates, loads,
|
||||
manipulates and writes ISO 9660 filesystem images with
|
||||
Rock Ridge extensions. Manipulation is not only adding or
|
||||
overwriting of files but also deleting, renaming, attribute
|
||||
changing, incremental backups, activating boot images, and
|
||||
extracting of files from ISO images to disk.
|
||||
overwriting of files but also deletion, renaming, and attribute
|
||||
changing.
|
||||
See xorriso/README for more.
|
||||
|
||||
- "test" is a collection of application gestures and examples given by the
|
||||
@ -346,11 +336,6 @@ Project history as far as known to me:
|
||||
- 7th Dec 2008 libburn-0.5.8 prevents a SIGSEGV with wierd CD table-of-content
|
||||
and improves BD-RE formatting.
|
||||
|
||||
- 9th Dec 2008 Our project received a donation from Thomas Weber.
|
||||
|
||||
- 2nd Jan 2009 libburn-0.6.0 allows to format BD-R and to write to either
|
||||
formatted or unformatted BD-R.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/cdrskin_eng.html
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.6.0.pl00.tar.gz
|
||||
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.5.8.pl00.tar.gz
|
||||
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -21,10 +21,10 @@ By using this software you agree to the disclaimer at the end of this text
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Obtain cdrskin-0.6.0.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain cdrskin-0.5.8.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf cdrskin-0.6.0.pl00.tar.gz
|
||||
cd cdrskin-0.6.0
|
||||
tar xzf cdrskin-0.5.8.pl00.tar.gz
|
||||
cd cdrskin-0.5.8
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -274,8 +274,8 @@ behavior.
|
||||
BD-RE media need formatting before first use. cdrskin option "blank=as_needed"
|
||||
recognizes unformatted BD-RE and applies a lengthy formatting run.
|
||||
|
||||
During write operations DVD-RAM and BD-RE automatically apply Defect
|
||||
Management. This usually slows them down to half nominal speed. If drive
|
||||
During write operations DVD-RAM and BD-RE automatically apply defect
|
||||
management. This usually slows them down to half nominal speed. If drive
|
||||
and media produce flawless results anyway, then one can try to reach full
|
||||
nominal speed by option "stream_recording=on".
|
||||
In this case bad blocks are not detected during write and not even previously
|
||||
@ -350,24 +350,14 @@ Incremental Streaming afterwards. So blank=fast will do full blanking.
|
||||
blank=deformat_sequential_quickest is faster but might yield DAO-only media.
|
||||
|
||||
|
||||
DVD+R , DVD+R DL , BD-R
|
||||
DVD+R and DVD+R DL
|
||||
|
||||
From the view of cdrskin they behave much like DVD-R. Each track gets wrapped
|
||||
into an own session, though.
|
||||
|
||||
DVD+R DL appear as extra large DVD+R. cdrskin does not allow to set the address
|
||||
of the layer break where a reading drive might show some delay while switching
|
||||
between both media layers.
|
||||
|
||||
BD-R are sold unformatted blank. If used without initial formatting then the
|
||||
drive is supposed to format them to maximum payload size with no Defect
|
||||
Management (see also above with BD-RE).
|
||||
If Defect Management is desired then BD-R need to be formatted before the
|
||||
first attempt to write a session to them.
|
||||
blank=format_if_needed will detect the situation and eventually apply
|
||||
default sized Defect Management formatting.
|
||||
blank=format_defectmgt_* will apply non-default parameters to formatting.
|
||||
|
||||
|
||||
Emulated Drives
|
||||
|
||||
@ -446,7 +436,7 @@ contributions in a due way.
|
||||
Based on and sub project of:
|
||||
libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com> and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2009 Mario Danic, Thomas Schmitt
|
||||
Copyright (C) 2006-2008 Mario Danic, Thomas Schmitt
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of
|
||||
|
@ -38,7 +38,7 @@ original="./libburn_svn_release.tgz"
|
||||
# My changes are in $changes , mainly in $changes/cdrskin
|
||||
changes="./libburn-release"
|
||||
|
||||
skin_release="0.6.0"
|
||||
skin_release="0.5.8"
|
||||
patch_level=".pl00"
|
||||
skin_rev="$skin_release""$patch_level"
|
||||
|
@ -38,7 +38,7 @@ original="./libburn_svn.tgz"
|
||||
# My changes are in $changes , mainly in $changes/cdrskin
|
||||
changes="./libburn-develop"
|
||||
|
||||
skin_release="0.6.1"
|
||||
skin_release="0.5.9"
|
||||
patch_level=""
|
||||
skin_rev="$skin_release""$patch_level"
|
||||
|
@ -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 "Dec 10, 2008"
|
||||
.TH CDRSKIN 1 "Oct 15, 2008"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -16,7 +16,7 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
cdrskin \- burns preformatted data to CD, DVD, and BD via libburn.
|
||||
cdrskin \- burns preformatted data to CD, DVD, and BD-RE via libburn.
|
||||
.SH SYNOPSIS
|
||||
.B cdrskin
|
||||
.RI [ options | track_source_addresses ]
|
||||
@ -28,14 +28,14 @@ cdrskin \- burns preformatted data to CD, DVD, and BD via libburn.
|
||||
.\" respectively.
|
||||
.PP
|
||||
\fBcdrskin\fP is a program that provides some of cdrecord's options
|
||||
in a compatible way for CD media. With DVD and BD it has its own ways.
|
||||
in a compatible way for CD media. With DVD and BD-RE it has its own ways.
|
||||
You do not need to be superuser for its daily usage.
|
||||
.SS
|
||||
.B Overview of features:
|
||||
.br
|
||||
Blanking of CD-RW and DVD-RW.
|
||||
.br
|
||||
Formatting of DVD-RW, DVD+RW, DVD-RAM, BD.
|
||||
Formatting of DVD-RW, DVD+RW, DVD-RAM, BD-RE.
|
||||
.br
|
||||
Burning of data or audio tracks to CD,
|
||||
.br
|
||||
@ -45,7 +45,7 @@ or in Session at Once mode for seamless tracks.
|
||||
.br
|
||||
Multi session on CD (follow-up sessions in TAO only)
|
||||
.br
|
||||
or on DVD-R[W] (in Incremental mode) or DVD+R[/DL] or BD-R.
|
||||
or on DVD-R[W] (in Incremental mode) or on DVD+R[/DL].
|
||||
.br
|
||||
Single session on DVD-RW or DVD-R (Disk-at-once).
|
||||
.br
|
||||
@ -164,10 +164,10 @@ make it completely unreadable. It is no effective privacy precaution.
|
||||
Multiple cycles of blanking and overwriting with random numbers might be
|
||||
needed.
|
||||
.SS
|
||||
.B Sequentially Recordable DVD or BD Media:
|
||||
.B Sequentially Recordable DVD Media:
|
||||
.br
|
||||
Currently DVD-RW, DVD-R , DVD+R[/DL], and BD-R can be used for the Sequential
|
||||
recording model.
|
||||
Currently DVD-RW, DVD-R and DVD+R[/DL] can be used for the Sequential recording
|
||||
model.
|
||||
.br
|
||||
This applies to DVD-RW only if they are in state "Sequential Recording".
|
||||
The media must be either blank or appendable.
|
||||
@ -201,18 +201,14 @@ unpredicted length and to keep media appendable by option
|
||||
The only restriction towards CD-R[W] is the lack of support for -audio tracks.
|
||||
Multiple tracks per session are permissible.
|
||||
.br
|
||||
The write modes for DVD+R[/DL] and BD-R resemble those with DVD-R except that
|
||||
each track gets wrapped in an own session. There is no -dummy writing
|
||||
with DVD+R[/DL] or BD-R.
|
||||
The write modes for DVD+R[/DL] resemble those with DVD-R except that with +R
|
||||
each track gets wrapped in an own session. There is no -dummy writing with
|
||||
DVD+R[/DL].
|
||||
.br
|
||||
Quite deliberately write mode -sao insists in the tradition of a predicted
|
||||
track size and blank media, whereas -tao writes the tracks open ended and
|
||||
allows appendable media.
|
||||
.br
|
||||
BD-R may be formatted before first use to enable the Defect Management which
|
||||
might catch and repair some bad spots at the expense of slow speed
|
||||
even with flawless media.
|
||||
.br
|
||||
.B Note:
|
||||
Option -multi might make DVD media unreadable in some DVD-ROM drives.
|
||||
Best reader compatibility is achieved without it
|
||||
@ -357,7 +353,7 @@ audio track. Same is done for suffix ".au" and SUN Audio.
|
||||
Option -audio may be used only with CD media and not with DVD or BD.
|
||||
.TP
|
||||
.BI blank= type
|
||||
Blank a CD-RW, DVD-RW, or format a DVD-RW, DVD+RW, DVD-RAM, BD.
|
||||
Blank a CD-RW, DVD-RW, or format a DVD-RW, DVD+RW, DVD-RAM, BD-RE.
|
||||
This is combinable with burning in the same run of cdrskin.
|
||||
The type given with blank= selects the particular behavior:
|
||||
.RS
|
||||
@ -369,7 +365,7 @@ It is a reason to abort if the media cannot assume thoroughly writeable state,
|
||||
e.g. if it is non-blank write-once.
|
||||
.br
|
||||
This leaves unformatted DVD-RW in unformatted blank state. To format DVD-RW use
|
||||
blank=format_overwriteable. Blank unformatted BD-R stay unformatted.
|
||||
blank=format_overwriteable.
|
||||
.br
|
||||
(Note: blank=as_needed is not an original cdrecord option.)
|
||||
.TP
|
||||
@ -398,11 +394,10 @@ This is faster than full blanking but may yield media incapable of
|
||||
Incremental Streaming (-tao).
|
||||
.TP
|
||||
format_if_needed
|
||||
Format a media if it is not formatted yet,
|
||||
Format a media if it is not overwriteably formatted yet,
|
||||
and if cdrskin supports formatting for the media type,
|
||||
and if formatting will not happen automatically during write.
|
||||
This currently applies to unformatted DVD-RW, DVD-RAM, BD-RE,
|
||||
and blank unformatted BD-R.
|
||||
This currently applies to unformatted DVD-RW, DVD-RAM and BD-RE.
|
||||
Eventually the appropriate default formatting is chosen.
|
||||
If other media or states are encountered then nothing happens.
|
||||
.br
|
||||
@ -432,7 +427,7 @@ For DVD+RW this is the only supported explicit formatting type. It provides
|
||||
complete "de-icing" so no reader slips on unwritten data areas.
|
||||
.TP
|
||||
format_defectmgt
|
||||
Format DVD-RAM or BD to reserve the default amount of spare blocks for
|
||||
Format DVD-RAM or BD-RE to reserve the default amount of spare blocks for
|
||||
defect management.
|
||||
.br
|
||||
The following format_defectmgt_* allow to submit user wishes which
|
||||
@ -456,25 +451,25 @@ Whether there happens certification at all depends much on the media state
|
||||
and the actually selected format descriptor.
|
||||
.TP
|
||||
format_defectmgt_max
|
||||
Format DVD-RAM or BD to reserve a maximum number of spare blocks.
|
||||
Format DVD-RAM or BD-RE to reserve a maximum number of spare blocks.
|
||||
.TP
|
||||
format_defectmgt_min
|
||||
Format DVD-RAM or BD to reserve a minimum number of spare blocks.
|
||||
Format DVD-RAM or BD-RE to reserve a minimum number of spare blocks.
|
||||
It might be necessary to format format_defectmgt_none first in order to get
|
||||
offered the most minmal spare blocks sizes for format_defectmgt_min.
|
||||
.TP
|
||||
format_defectmgt_none
|
||||
Format DVD-RAM or BD-RE to the largest available payload in the hope to disable
|
||||
defect management at all. This may or may not have a speed increasing effect.
|
||||
Unformatted blank BD-R will be left unformatted.
|
||||
defect management at all. This seems not to have a speed increasing effect,
|
||||
though.
|
||||
.TP
|
||||
format_defectmgt_payload_<size>
|
||||
Format DVD-RAM or BD. The text after "format_defectmgt_payload_" gives a
|
||||
Format DVD-RAM or BD-RE. The text after "format_defectmgt_payload_" gives a
|
||||
number of bytes, eventually with suffixes "s", "k", "m". The largest number
|
||||
of spare blocks will be chosen which allows at least the given payload size.
|
||||
.TP
|
||||
format_by_index_<number>
|
||||
Format DVD-RW, DVD+RW, DVD-RAM or BD.
|
||||
Format DVD-RW, DVD+RW, DVD-RAM or BD-RE.
|
||||
The number after "format_by_index_" is used as index to the list of available
|
||||
format descriptors. This list can be obtained by option --list_formats.
|
||||
The numbers after text "Format idx" are the ones to be used with
|
||||
@ -1187,7 +1182,7 @@ original cdrecord.
|
||||
.TP
|
||||
.BI stream_recording="on"|"off"
|
||||
By setting "on" request that compliance to the desired speed setting is
|
||||
preferred over management of write errors. With DVD-RAM and BD this can
|
||||
preferred over management of write errors. With DVD-RAM and BD-RE this can
|
||||
bring effective write speed near to the nominal write speed of the media.
|
||||
But it will also disable the automatic use of replacement blocks
|
||||
if write errors occur. It might as well be disliked or ignored by the drive.
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
/*
|
||||
cdrskin.c , Copyright 2006-2009 Thomas Schmitt <scdbackup@gmx.net>
|
||||
cdrskin.c , Copyright 2006-2008 Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2. See future commitment below.
|
||||
|
||||
A cdrecord compatible command line interface for libburn.
|
||||
@ -88,7 +88,7 @@ or
|
||||
|
||||
/** The official program version */
|
||||
#ifndef Cdrskin_prog_versioN
|
||||
#define Cdrskin_prog_versioN "0.6.0"
|
||||
#define Cdrskin_prog_versioN "0.5.8"
|
||||
#endif
|
||||
|
||||
/** The official libburn interface revision to use.
|
||||
@ -98,10 +98,10 @@ or
|
||||
#define Cdrskin_libburn_majoR 0
|
||||
#endif
|
||||
#ifndef Cdrskin_libburn_minoR
|
||||
#define Cdrskin_libburn_minoR 6
|
||||
#define Cdrskin_libburn_minoR 5
|
||||
#endif
|
||||
#ifndef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_micrO 0
|
||||
#define Cdrskin_libburn_micrO 8
|
||||
#endif
|
||||
|
||||
|
||||
@ -135,44 +135,44 @@ or
|
||||
#endif /* Cdrskin_libburn_cvs_A60220_tS */
|
||||
|
||||
|
||||
#ifdef Cdrskin_libburn_0_6_0
|
||||
#define Cdrskin_libburn_versioN "0.6.0"
|
||||
#ifdef Cdrskin_libburn_0_5_8
|
||||
#define Cdrskin_libburn_versioN "0.5.8"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
#endif /* Cdrskin_libburn_0_6_0 */
|
||||
#endif /* Cdrskin_libburn_0_5_8 */
|
||||
|
||||
#ifdef Cdrskin_libburn_0_6_1
|
||||
#define Cdrskin_libburn_versioN "0.6.1"
|
||||
#ifdef Cdrskin_libburn_0_5_9
|
||||
#define Cdrskin_libburn_versioN "0.5.9"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
|
||||
/* Place novelty switch macros here.
|
||||
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
|
||||
*/
|
||||
|
||||
/* there are no libburn novelties in 0.6.1 yet */
|
||||
/* there are no libburn novelties in 0.5.9 yet */
|
||||
|
||||
#endif /* Cdrskin_libburn_0_6_1 */
|
||||
#endif /* Cdrskin_libburn_0_5_9 */
|
||||
|
||||
#ifndef Cdrskin_libburn_versioN
|
||||
#define Cdrskin_libburn_0_6_0
|
||||
#define Cdrskin_libburn_versioN "0.6.0"
|
||||
#define Cdrskin_libburn_0_5_8
|
||||
#define Cdrskin_libburn_versioN "0.5.8"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
#endif
|
||||
|
||||
#ifdef Cdrskin_libburn_0_6_0
|
||||
#ifdef Cdrskin_libburn_0_5_8
|
||||
#undef Cdrskin_libburn_majoR
|
||||
#undef Cdrskin_libburn_minoR
|
||||
#undef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_majoR 0
|
||||
#define Cdrskin_libburn_minoR 6
|
||||
#define Cdrskin_libburn_micrO 0
|
||||
#define Cdrskin_libburn_minoR 5
|
||||
#define Cdrskin_libburn_micrO 8
|
||||
#endif
|
||||
#ifdef Cdrskin_libburn_0_6_1
|
||||
#ifdef Cdrskin_libburn_0_5_9
|
||||
#undef Cdrskin_libburn_majoR
|
||||
#undef Cdrskin_libburn_minoR
|
||||
#undef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_majoR 0
|
||||
#define Cdrskin_libburn_minoR 6
|
||||
#define Cdrskin_libburn_micrO 1
|
||||
#define Cdrskin_libburn_minoR 5
|
||||
#define Cdrskin_libburn_micrO 9
|
||||
#endif
|
||||
|
||||
|
||||
@ -251,7 +251,7 @@ or
|
||||
/* 0.4.8 */
|
||||
/* Bug fix release for write_start_address=... on DVD-RAM and BD-RE */
|
||||
|
||||
/* 0.5.0 , 0.5.2 , 0.5.4 , 0.5.6 , 0.5.8 , 0.6.0 */
|
||||
/* 0.5.0 , 0.5.2 , 0.5.4 , 0.5.6 , 0.5.8 */
|
||||
/* novel libburn features are transparent to cdrskin */
|
||||
|
||||
|
||||
@ -2414,11 +2414,11 @@ return:
|
||||
fprintf(stderr,
|
||||
"\tformat_overwrite_full\t\tfull-size format a DVD-RW or DVD+RW\n");
|
||||
fprintf(stderr,
|
||||
"\tformat_defectmgt[_max|_min|_none]\tformat DVD-RAM or BD-R[E]\n");
|
||||
"\tformat_defectmgt[_max|_min|_none]\tformat DVD-RAM or BD-RE\n");
|
||||
fprintf(stderr,
|
||||
"\tformat_defectmgt[_cert_on|_cert_off]\tcertification slow|quick\n");
|
||||
fprintf(stderr,
|
||||
"\tformat_defectmgt_payload_<size>\tformat DVD-RAM or BD-R[E]\n");
|
||||
"\tformat_defectmgt_payload_<size>\tformat DVD-RAM or BD-RE\n");
|
||||
fprintf(stderr,
|
||||
"\tformat_by_index_<number>\t\tformat by index from --list_formats\n");
|
||||
|
||||
@ -2892,7 +2892,7 @@ set_severities:;
|
||||
int major, minor, micro;
|
||||
|
||||
printf(
|
||||
"Cdrecord 2.01-Emulation Copyright (C) 2006-2009, see libburnia-project.org\n");
|
||||
"Cdrecord 2.01-Emulation Copyright (C) 2006-2008, see libburnia-project.org\n");
|
||||
printf("libburn interface : %d.%d.%d\n",
|
||||
burn_header_version_major, burn_header_version_minor,
|
||||
burn_header_version_micro);
|
||||
@ -3155,7 +3155,7 @@ struct CdrskiN {
|
||||
bit15= format by index
|
||||
2=deformat_sequential (blank_fast might matter)
|
||||
3=format (= format_overwrite restricted to DVD+RW)
|
||||
4=format_defectmgt for DVD-RAM, BD-R[E]
|
||||
4=format_defectmgt for DVD-RAM, BD-RE
|
||||
bit8-15: bit0-7 of burn_disc_format(flag)
|
||||
bit8 = write zeros after formatting
|
||||
bit9+10: size mode
|
||||
@ -5148,12 +5148,10 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
||||
skin->blank_format_type= 1|(1<<8);
|
||||
skin->blank_format_size= 128*1024*1024;
|
||||
} else if(profile_number == 0x12 ||
|
||||
profile_number == 0x43 ||
|
||||
(profile_number == 0x41 && do_format==6)) {
|
||||
/* DVD-RAM , BD-RE , BD-R SRM */
|
||||
profile_number == 0x43) { /* DVD-RAM , BD-RE */;
|
||||
#ifdef Cdrskin_libburn_has_burn_disc_formaT
|
||||
ret= burn_disc_get_formats(drive, &status, &size, &dummy, &num_formats);
|
||||
if((ret>0 && status!=BURN_FORMAT_IS_FORMATTED)) {
|
||||
if(ret>0 && status!=BURN_FORMAT_IS_FORMATTED) {
|
||||
do_format= 4;
|
||||
skin->blank_format_type= 4|(3<<9); /* default payload size */
|
||||
skin->blank_format_size= 0;
|
||||
@ -5230,10 +5228,9 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
||||
|
||||
} else if(do_format==4) {
|
||||
/* Formatting and influencing defect management of DVD-RAM , BD-RE */
|
||||
if(!(profile_number == 0x12 || profile_number == 0x41 ||
|
||||
profile_number == 0x43)) {
|
||||
if(!(profile_number == 0x12 || profile_number == 0x43)) {
|
||||
fprintf(stderr,
|
||||
"cdrskin: SORRY : blank=%s for now does DVD-RAM and BD only\n",
|
||||
"cdrskin: SORRY : blank=%s for now does DVD-RAM and BD-RE only\n",
|
||||
fmt_text);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
@ -5842,12 +5839,10 @@ int Cdrskin_activate_write_mode(struct CdrskiN *skin, enum burn_disc_status s,
|
||||
profile_number==0x12 ||
|
||||
profile_number==0x11 || profile_number==0x14 ||
|
||||
profile_number==0x15 ||
|
||||
profile_number==0x1b || profile_number==0x2b ||
|
||||
profile_number==0x41 || profile_number==0x43)
|
||||
profile_number==0x1b || profile_number==0x2b)
|
||||
&& might_do_tao) {
|
||||
/* DVD+RW, DVD-RW Restricted Overwrite, DVD-RAM,
|
||||
DVD-R[W][/DL] Sequential Recording, DVD+R[/DL],
|
||||
BD-R SRM , BD-RE */
|
||||
DVD-R[W][/DL] Sequential Recording, DVD+R[/DL] */
|
||||
strcpy(skin->preskin->write_mode_name,"TAO");
|
||||
} else {
|
||||
strcpy(skin->preskin->write_mode_name,"SAO");
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<HEAD>
|
||||
<META NAME="description" CONTENT="cdrskin, a limited cdrecord compatibility wrapper for libburn">
|
||||
<META NAME="keywords" CONTENT="cdrskin, libburn, libburnia, burn, CD, DVD, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R/DL, DVD-RAM, BD-RE, BD-R, cdrecord, compatible, scdbackup">
|
||||
<META NAME="keywords" CONTENT="cdrskin, libburn, libburnia, burn, CD, DVD, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R/DL, DVD-RAM, BD-RE, cdrecord, compatible, scdbackup">
|
||||
<META NAME="robots" CONTENT="follow">
|
||||
<TITLE>cdrskin homepage english</TITLE>
|
||||
</HEAD>
|
||||
@ -24,7 +24,7 @@
|
||||
<P>
|
||||
<H2>Purpose:</H2>
|
||||
Burns preformatted data to CD, DVD, and BD media:<BR>
|
||||
CD-R, DVD-R, DVD+R, DVD+R/DL, BD-R, CD-RW, DVD-RW, DVD-RAM, DVD+RW, BD-RE
|
||||
CD-R, DVD-R, DVD+R, DVD+R/DL, CD-RW, DVD-RW, DVD-RAM, DVD+RW, BD-RE
|
||||
</P>
|
||||
<P>
|
||||
|
||||
@ -59,12 +59,12 @@ and to MMC-5 for DVD or BD).
|
||||
GPL software included:<BR>
|
||||
</H2>
|
||||
<DL>
|
||||
<DT>libburn-0.6.0</DT>
|
||||
<DT>libburn-0.5.8</DT>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)
|
||||
</DD>
|
||||
<DD>transfers data to CD, DVD, BD</DD>
|
||||
<DD>transfers data to CD, DVD, BD-RE</DD>
|
||||
</DL>
|
||||
</P>
|
||||
|
||||
@ -93,7 +93,7 @@ are provided in a compatible way.<BR>
|
||||
On all DVD media except DVD-R DL, cdrskin is able to perform any recording job
|
||||
which is possible with cdrecord.
|
||||
Other than with cdrecord, option -multi is supported with many DVD types and
|
||||
BD-R. Write mode -tao works with anything but quickly blanked DVD-RW.
|
||||
write mode -tao works with anything but quickly blanked DVD-RW.
|
||||
</DT>
|
||||
<BR><BR>
|
||||
<DT>Get an overview of drives and their addresses</DT>
|
||||
@ -191,8 +191,8 @@ or to do experiments on BD-R media.
|
||||
<P>
|
||||
<DL>
|
||||
<DT>Download as source code (see README):</DT>
|
||||
<DD><A HREF="cdrskin-0.6.0.pl00.tar.gz">cdrskin-0.6.0.pl00.tar.gz</A>
|
||||
(745 KB).
|
||||
<DD><A HREF="cdrskin-0.5.8.pl00.tar.gz">cdrskin-0.5.8.pl00.tar.gz</A>
|
||||
(740 KB).
|
||||
</DD>
|
||||
<DD>
|
||||
The cdrskin tarballs are source code identical with libburn releases
|
||||
@ -241,18 +241,21 @@ cdrskin_0.4.2.pl00-x86-suse9_0-static.tar.gz</A>, (310 KB), -static compiled,
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version cdrskin-0.5.8.pl00:
|
||||
Enhancements towards previous stable version cdrskin-0.5.6.pl00:
|
||||
<UL>
|
||||
<LI>Formatting and writing of BD-R media</LI>
|
||||
<LI>Improvements about BD-RE formatting</LI>
|
||||
<!--
|
||||
<LI>none</LI>
|
||||
-->
|
||||
</UL>
|
||||
|
||||
Bug fixes towards cdrskin-0.5.8.pl00:
|
||||
Bug fixes towards cdrskin-0.5.6.pl00:
|
||||
<UL>
|
||||
<LI>none</LI>
|
||||
<LI>
|
||||
A session without leadout entry on CD caused a SIGSEGV by NULL
|
||||
</LI>
|
||||
<!--
|
||||
<LI>none</LI>
|
||||
-->
|
||||
</UL>
|
||||
|
||||
@ -262,20 +265,20 @@ Bug fixes towards cdrskin-0.5.8.pl00:
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.6.1 :</H3></DT>
|
||||
<DD>Enhancements towards current stable version 0.6.0.pl00:
|
||||
<DT><H3>Development snapshot, version 0.5.9 :</H3></DT>
|
||||
<DD>Enhancements towards current stable version 0.5.8.pl00:
|
||||
<UL>
|
||||
<LI>none yet</LI>
|
||||
<!--
|
||||
-->
|
||||
<LI>none yet</LI>
|
||||
|
||||
</UL>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_cdrskin_devel">README 0.6.1</A>
|
||||
<DD><A HREF="cdrskin__help_devel">cdrskin_0.6.1 --help</A></DD>
|
||||
<DD><A HREF="cdrskin_help_devel">cdrskin_0.6.1 -help</A></DD>
|
||||
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.6.1)</A></DD>
|
||||
<DD><A HREF="README_cdrskin_devel">README 0.5.9</A>
|
||||
<DD><A HREF="cdrskin__help_devel">cdrskin_0.5.9 --help</A></DD>
|
||||
<DD><A HREF="cdrskin_help_devel">cdrskin_0.5.9 -help</A></DD>
|
||||
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.5.9)</A></DD>
|
||||
<DD> </DD>
|
||||
<DT>Maintainers of cdrskin unstable packages please use SVN of
|
||||
<A HREF="http://libburnia-project.org"> libburnia-project.org</A></DT>
|
||||
@ -295,7 +298,7 @@ admins with full system souvereignty.</DT>
|
||||
<A HREF="README_cdrskin_devel">upcoming README</A> ):
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="cdrskin-0.6.1.tar.gz">cdrskin-0.6.1.tar.gz</A>
|
||||
<A HREF="cdrskin-0.5.9.tar.gz">cdrskin-0.5.9.tar.gz</A>
|
||||
(740 KB).
|
||||
</DD>
|
||||
|
||||
|
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2009.01.02.160001"
|
||||
#define Cdrskin_timestamP "2008.12.07.140001"
|
||||
|
@ -6063,189 +6063,17 @@ Dec 07 2008 [2250]
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_5_9
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
Dec 07 2008 [2251]
|
||||
Dec 07 2008 []
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------ release - cdrskin-0.5.8.pl00 - 2008.12.07.140001
|
||||
------------------------------------ cycle - cdrskin-0.5.8 - 2008.12.07.140001
|
||||
* Bug fix: A session without leadout entry on CD caused a SIGSEGV by NULL
|
||||
* Improvements about BD-RE formatting
|
||||
|
||||
|
||||
2008.12.07.155219 [2252]
|
||||
Makefile.am
|
||||
configure.ac
|
||||
README
|
||||
libburn/libburn.h
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/README
|
||||
cdrskin/compile_cdrskin.sh
|
||||
cdrskin/cdrskin_timestamp.h
|
||||
cdrskin/cdrskin_eng.html
|
||||
Made number transition to 0.5.9
|
||||
|
||||
Dec 07 2008 [2253]
|
||||
- cdrskin/add_ts_changes_to_libburn_0_5_6
|
||||
- cdrskin/add_ts_changes_to_libburn_0_5_7
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_5_8
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_5_9
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
Dec 07 2008 [2254]
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
Dec 07 2008 [2255]
|
||||
svn move -m "libburn release 0.5.8 is ready" \
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroFiveEigh \
|
||||
http://svn.libburnia-project.org/libburn/tags/ZeroFiveEight
|
||||
|
||||
svn delete -m 'Deleted obsolete branch' \
|
||||
http://svn.libburnia-project.org/libburn/branches/"$svn_name"
|
||||
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.5.9 - 2008.12.07.155219
|
||||
|
||||
2008.12.09.123314 [2264]
|
||||
libburn/libburn.h
|
||||
libburn/drive.c
|
||||
libburn/async.c
|
||||
libburn/write.c
|
||||
libburn/mmc.c
|
||||
Beginning to implement write code for BD-R SRM without POW
|
||||
|
||||
2008.12.09.123558 [2265]
|
||||
cdrskin/cdrskin.c
|
||||
Beginning to implement write code for BD-R SRM without POW
|
||||
|
||||
2008.12.10.092535 [2271]
|
||||
libburn/transport.h
|
||||
libburn/async.c
|
||||
libburn/mmc.h
|
||||
libburn/mmc.c
|
||||
Formatting of BD-R SRM to default size and by index
|
||||
|
||||
2008.12.10.114241 [2273]
|
||||
cdrskin/cdrskin.c
|
||||
Formatting of BD-R SRM to default size and by index
|
||||
|
||||
10 Dec 2008 [2274]
|
||||
README
|
||||
cdrskin/README
|
||||
cdrskin/cdrskin.1
|
||||
cdrskin/wiki_plain.txt
|
||||
Mentioning BD-R in documentation
|
||||
|
||||
2008.12.11.072308 [2276]
|
||||
libburn/libdax_msgs.h
|
||||
libburn/async.c
|
||||
Rejecting unformattable BD-R more early
|
||||
|
||||
2008.12.11.092204 [2278]
|
||||
libburn/libdax_msgs.h
|
||||
libburn/async.c
|
||||
libburn/mmc.c
|
||||
cdrskin/cdrskin.1
|
||||
Catching BD-R zero spare formatting with NOTE rather than SORRY
|
||||
|
||||
2008.12.12.112129 [2279]
|
||||
libburn/libburn.h
|
||||
libburn/async.c
|
||||
libburn/mmc.c
|
||||
Making format size of BD-RE and BD-R quite freely adjustable
|
||||
|
||||
2008.12.12.214013 [2280]
|
||||
libburn/transport.h
|
||||
libburn/async.c
|
||||
libburn/mmc.c
|
||||
Interpreting feature 0023h for BD formatting capabilities
|
||||
|
||||
2008.12.13.144909 [2284]
|
||||
configure.ac
|
||||
Now producing libburn.so.4.24.0
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.5.9 - 2008.12.13.144909
|
||||
* Formatting and writing of BD-R media
|
||||
|
||||
|
||||
14 Dec 2008 [2289]
|
||||
test/libburner.c
|
||||
Updated libburner to BD-R
|
||||
|
||||
14 Dec 2008 [2290]
|
||||
cdrskin/cdrskin_eng.html
|
||||
Updated cdrskin web page
|
||||
|
||||
2008.12.17.091905 [2297]
|
||||
libburn/libburn.h
|
||||
libburn/drive.c
|
||||
New API function burn_get_read_capacity()
|
||||
|
||||
17 Dec 2008 [2298] [2302]
|
||||
doc/comments
|
||||
Removed project overview and references to libisofs and libisoburn
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.5.9 - 2008.12.19.070912
|
||||
* New API function burn_get_read_capacity()
|
||||
|
||||
|
||||
2008.12.19.203523 [2306]
|
||||
libburn/libburn.h
|
||||
Clarified blank, appendable, closed burn_disc_status
|
||||
|
||||
2008.12.22.130527 [2323]
|
||||
libburn/async.c
|
||||
Fixed denial of fast formatting with BD-RE introduced by revision 2280
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.5.9 - 2008.12.23.144853
|
||||
|
||||
|
||||
2008.12.29.105341 [2342]
|
||||
libburn/libburn.h
|
||||
test/libburner.c
|
||||
Cosmetic changes
|
||||
|
||||
Jan 02 2009 [2346]
|
||||
svn copy http://svn.libburnia-project.org/libburn/trunk
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroSixZero
|
||||
Preparing for libburn-0.6.0
|
||||
|
||||
02 Jan 2009 [2347]
|
||||
COPYRIGHT
|
||||
libburn/libdax_msgs.c
|
||||
libburn/libdax_msgs.h
|
||||
test/libburner.c
|
||||
Updated copyright claims to year 2009
|
||||
|
||||
2009.01.02.160001 [i2348]
|
||||
Makefile.am
|
||||
configure.ac
|
||||
README
|
||||
libburn/libburn.h
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/README
|
||||
cdrskin/compile_cdrskin.sh
|
||||
cdrskin/cdrskin_timestamp.h
|
||||
cdrskin/cdrskin_eng.html
|
||||
Made number transition to 0.6.0
|
||||
|
||||
02 Jan 2009 [2349]
|
||||
- cdrskin/add_ts_changes_to_libburn_0_5_8
|
||||
- cdrskin/add_ts_changes_to_libburn_0_5_9
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_6_0
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_6_1
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
[]
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------ release - cdrskin-0.6.0.pl00 - 2009.01.02.160001
|
||||
* Formatting and writing of BD-R media
|
||||
* New API function burn_get_read_capacity()
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.6.1 -
|
||||
------------------------------------ cycle - cdrskin-0.6.1 -
|
||||
------------------------------------ cycle - cdrskin-0.5.9 -
|
||||
------------------------------------ cycle - cdrskin-0.5.9 -
|
||||
|
||||
|
||||
===============================================================================
|
||||
@ -6277,11 +6105,13 @@ READ TRACK INFORMATION[#5]:
|
||||
|
||||
------------------------------ end of bugs ---------------------------------
|
||||
|
||||
Support for BD-R SRM+POW
|
||||
|
||||
? Provide an option to open track source file O_DIRECT ?
|
||||
(needs read chunks much larger than 2 kB)
|
||||
|
||||
interpret feature 0023h byte 4 for BD-RE formatting capabilities
|
||||
|
||||
Enable profile 0x41 BD-R sequential recording (much like DVD+R)
|
||||
|
||||
? Enable profile 0x42 BD-R random recording
|
||||
|
||||
Provide DVD+R DL layer break setter
|
||||
|
@ -7,7 +7,7 @@
|
||||
debug_opts="-O2"
|
||||
def_opts=
|
||||
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
||||
libvers="-DCdrskin_libburn_0_6_0"
|
||||
libvers="-DCdrskin_libburn_0_5_8"
|
||||
cleanup_src_or_obj="libburn/cleanup.o"
|
||||
libdax_msgs_o="libburn/libdax_msgs.o"
|
||||
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
|
||||
@ -33,15 +33,15 @@ do
|
||||
libdax_audioxtr_o=
|
||||
libdax_msgs_o="libburn/message.o"
|
||||
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
|
||||
elif test "$i" = "-libburn_0_6_0"
|
||||
elif test "$i" = "-libburn_0_5_8"
|
||||
then
|
||||
libvers="-DCdrskin_libburn_0_6_0"
|
||||
libvers="-DCdrskin_libburn_0_5_8"
|
||||
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
|
||||
libdax_msgs_o="libburn/libdax_msgs.o"
|
||||
cleanup_src_or_obj="libburn/cleanup.o"
|
||||
elif test "$i" = "-libburn_svn"
|
||||
then
|
||||
libvers="-DCdrskin_libburn_0_6_1"
|
||||
libvers="-DCdrskin_libburn_0_5_9"
|
||||
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
|
||||
libdax_msgs_o="libburn/libdax_msgs.o"
|
||||
cleanup_src_or_obj="libburn/cleanup.o"
|
||||
@ -76,7 +76,7 @@ do
|
||||
echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
|
||||
echo " -compile_dewav compile program test/dewav without libburn."
|
||||
echo " -cvs_A60220 set macro to match libburn-CVS of 20 Feb 2006."
|
||||
echo " -libburn_0_6_0 set macro to match libburn-0.6.0"
|
||||
echo " -libburn_0_5_8 set macro to match libburn-0.5.8"
|
||||
echo " -libburn_svn set macro to match current libburn-SVN."
|
||||
echo " -no_largefile do not use 64 bit off_t (must match libburn)."
|
||||
echo " -do_not_compile_cdrskin omit compilation of cdrskin/cdrskin."
|
||||
|
@ -10,8 +10,8 @@ Schilling's cdrtools. cdrskin strives to be a second source for the services
|
||||
traditionally provided by cdrecord. Currently it does CD-R and CD-RW this way.
|
||||
Overwriteable media DVD-RAM, DVD+RW, DVD-RW, and BD-RE are handled differently
|
||||
than with cdrecord-ProDVD in order to offer TAO-like single track recording.
|
||||
Sequential DVD-R[W], DVD+R, DVD+R DL, BD-R are handled like CD-R[W] with TAO
|
||||
and multi-session. Additionally cdrskin offers cdrecord-ProDVD-like mode DAO
|
||||
Sequential DVD-R[W], DVD+R, DVD+R DL are handled like CD-R[W] with TAO and
|
||||
multi-session. Additionally cdrskin offers cdrecord-ProDVD-like mode DAO
|
||||
with DVD-R[W].
|
||||
|
||||
cdrskin does not contain any bytes copied from cdrecord's sources.
|
||||
|
17
configure.ac
17
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libburn], [0.6.0], [http://libburnia-project.org])
|
||||
AC_INIT([libburn], [0.5.8], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -67,7 +67,6 @@ dnl 0.5.2 = libburn.so.4.17.0
|
||||
dnl 0.5.4 = libburn.so.4.19.0
|
||||
dnl 0.5.6 = libburn.so.4.21.0
|
||||
dnl 0.5.8 = libburn.so.4.23.0
|
||||
dnl 0.6.0 = libburn.so.4.25.0
|
||||
dnl
|
||||
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
|
||||
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
|
||||
@ -92,8 +91,8 @@ dnl If BURN_*_VERSION changes, be sure to change AC_INIT above to match.
|
||||
dnl
|
||||
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
|
||||
BURN_MAJOR_VERSION=0
|
||||
BURN_MINOR_VERSION=6
|
||||
BURN_MICRO_VERSION=0
|
||||
BURN_MINOR_VERSION=5
|
||||
BURN_MICRO_VERSION=8
|
||||
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(BURN_MAJOR_VERSION)
|
||||
@ -104,15 +103,15 @@ AC_SUBST(BURN_VERSION)
|
||||
dnl Libtool versioning
|
||||
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
|
||||
dnl
|
||||
dnl ts A90102
|
||||
dnl This is the release version libburn-0.6.0 = libburn.so.4.25.0
|
||||
dnl ts A81207
|
||||
dnl This is the release version libburn-0.5.8 = libburn.so.4.23.0
|
||||
dnl ### This is the development version after above release version
|
||||
dnl LT_CURRENT++, LT_AGE++ has not yet happened.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 29 - 25 = 4 . Library name = libburn.so.4.25.0
|
||||
LT_CURRENT=29
|
||||
LT_AGE=25
|
||||
dnl SONAME = 27 - 23 = 4 . Library name = libburn.so.4.23.0
|
||||
LT_CURRENT=27
|
||||
LT_AGE=23
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
|
128
doc/comments
128
doc/comments
@ -1,51 +1,106 @@
|
||||
/**
|
||||
@author Mario Danic, Thomas Schmitt
|
||||
|
||||
@mainpage Libburn Documentation Index
|
||||
@mainpage Libburnia Documentation Index
|
||||
|
||||
@section intro Introduction
|
||||
|
||||
Libburnia is an open-source project for reading, mastering and writing
|
||||
optical discs. This page is about its capability to handle optical media.
|
||||
optical discs.
|
||||
For now this means CD-R, CD-RW, DVD-RAM, DVD+RW, DVD+R, DVD+R/DL, DVD-RW,
|
||||
DVD-R, BD-R, BD-RE.
|
||||
DVD-R, BD-RE.
|
||||
|
||||
Not supported yet are DVD-R/DL. Testers wanted.
|
||||
Not supported yet are DVD-R/DL, HD-DVD, BD-R (blue ray). Testers for
|
||||
DVD-R/DL are wanted, though. BD-R programming efforts would be made
|
||||
if an interested tester contacts us.
|
||||
|
||||
Our scope is currently Linux 2.4 and 2.6, or FreeBSD . For ports to other
|
||||
systems we would need : login on a development machine resp. a live OS on CD
|
||||
or DVD, advise from a system person about the equivalent of Linux sg or FreeBSD
|
||||
CAM, volunteers for testing of realistic use cases.
|
||||
The project comprises of several more or less interdependent parts which
|
||||
together strive to be a usable foundation for application development.
|
||||
These are libraries, language bindings, and middleware binaries which emulate
|
||||
classical (and valuable) Linux tools.
|
||||
|
||||
libburn is the library by which preformatted data get onto optical media.
|
||||
Its code is independent of cdrecord. Its DVD capabilities are learned from
|
||||
studying the code of dvd+rw-tools and MMC-5 specs. No code but only the pure
|
||||
SCSI knowledge has been taken from dvd+rw-tools, though.
|
||||
Our scope is currently Linux 2.4 and 2.6 only. For ports to other systems
|
||||
we would need : login on a development machine resp. a live OS on CD or DVD,
|
||||
advise from a system person about the equivalent of Linux sg or FreeBSD CAM,
|
||||
volunteers for testing of realistic use cases.
|
||||
|
||||
cdrskin is a limited cdrecord compatibility wrapper for libburn.
|
||||
cdrecord is a powerful GPL'ed burn program included in Joerg Schilling's
|
||||
cdrtools. cdrskin strives to be a second source for the services traditionally
|
||||
provided by cdrecord. Additionally it provides libburn's DVD/BD capabilities,
|
||||
where only -sao is compatible with cdrecord.
|
||||
cdrskin does not contain any bytes copied from cdrecord's sources.
|
||||
Many bytes have been copied from the message output of cdrecord runs, though.
|
||||
See cdrskin/README for more.
|
||||
We have a well tested code base for burning data and audio CDs and many DVD
|
||||
types. The burn API is quite comprehensively documented and can be used to
|
||||
build a presentable application.
|
||||
We have a functional binary which emulates the core use cases of cdrecord in
|
||||
order to prove that usability, and in order to allow you to explore libburn's
|
||||
scope by help of existing cdrecord frontends.
|
||||
|
||||
The burn API example of libburn is named test/libburner.c . The API for media
|
||||
information inquiry is demonstrated in test/telltoc.c .
|
||||
Explore these examples if you look for inspiration.
|
||||
ISO 9660 filesystems with Rock Ridge and Joliet extensions can be created
|
||||
and manipulated quite freely. This capability together with our burn capability
|
||||
makes possible a single binary application which covers all steps of image
|
||||
composition, updating and writing. Quite unique in the Linux world.
|
||||
|
||||
SONAME:
|
||||
@subsection components The project components (list subject to growth, hopefully):
|
||||
|
||||
- libburn is the library by which preformatted data get onto optical media.
|
||||
It uses either /dev/sgN (e.g. on kernel 2.4 with ide-scsi) or
|
||||
/dev/srM or /dev/hdX (e.g. on kernel 2.6).
|
||||
libburn is the foundation of our cdrecord emulation. Its code is
|
||||
independent of cdrecord. Its DVD capabilities are learned from
|
||||
studying the code of dvd+rw-tools and MMC-5 specs. No code but only
|
||||
the pure SCSI knowledge has been taken from dvd+rw-tools, though.
|
||||
|
||||
- libisofs is the library to pack up hard disk files and directories into a
|
||||
ISO 9660 disk image. This may then be brought to CD via libburn.
|
||||
libisofs is to be the foundation of our upcoming mkisofs emulation.
|
||||
|
||||
- libisoburn is an add-on to libburn and libisofs which coordinates both and
|
||||
also allows to grow ISO-9660 filesystem images on multi-session
|
||||
media as well as on overwriteable media via the same API.
|
||||
All media peculiarities are handled automatically.
|
||||
|
||||
- cdrskin is a limited cdrecord compatibility wrapper for libburn.
|
||||
cdrecord is a powerful GPL'ed burn program included in Joerg
|
||||
Schilling's cdrtools. cdrskin strives to be a second source for
|
||||
the services traditionally provided by cdrecord. Additionally it
|
||||
provides libburn's DVD/BD capabilities, where only -sao is
|
||||
compatible with cdrecord.
|
||||
cdrskin does not contain any bytes copied from cdrecord's sources.
|
||||
Many bytes have been copied from the message output of cdrecord
|
||||
runs, though.
|
||||
See cdrskin/README for more.
|
||||
|
||||
- xorriso is an application of all three libraries which creates, loads,
|
||||
manipulates and writes ISO 9660 filesystem images with
|
||||
Rock Ridge extensions. Manipulation is not only adding or
|
||||
overwriting of files but also deletion, renaming, and attribute
|
||||
changing. An incremental backup feature is provided.
|
||||
See xorriso/README for more
|
||||
|
||||
- "test" is a collection of application gestures and examples given by the
|
||||
authors of the library features. The burn API example of libburn
|
||||
is named test/libburner.c . The API for media information inquiry is
|
||||
demonstrated in test/telltoc.c .
|
||||
Explore these examples if you look for inspiration.
|
||||
|
||||
We strive to be a responsive upstream.
|
||||
|
||||
Our libraries are committed to maintain older feature sets in newer versions.
|
||||
This applies to source code headers (API) as well as to linkable objects (ABI).
|
||||
The only exception from this rule is about non-release versions x.y.*[13579]
|
||||
which are allowed to introduce new features, change those new features in
|
||||
any way and even may revoke such new features before the next release of
|
||||
x.y.*[02468]. As soon as it is released, a feature is promised to persist.
|
||||
|
||||
SONAMES:
|
||||
libburn.so.4 (since 0.3.4, March 2007),
|
||||
libisofs.so.6 (since 0.6.2, February 2008),
|
||||
libisoburn.so.1 (since 0.1.0, February 2008).
|
||||
|
||||
|
||||
@section using Using libburn
|
||||
@section using Using the libraries
|
||||
|
||||
Our build system is based on autotools.
|
||||
User experience tells us that you will need at least autotools version 1.7.
|
||||
|
||||
To build libburn and its companion applications go into its toplevel directory
|
||||
and execute
|
||||
To build libburn and its subprojects it should be sufficient to go into
|
||||
its toplevel directory and execute
|
||||
|
||||
- ./bootstrap (needed if you downloaded from SVN)
|
||||
|
||||
@ -57,24 +112,29 @@ To make the libraries accessible for running resp. developing applications
|
||||
|
||||
- make install
|
||||
|
||||
Both libraries are written in C language and get built by autotools.
|
||||
Thus we expect them to be useable by a wide range of Linux-implemented
|
||||
languages and development tools.
|
||||
|
||||
|
||||
@section libburner Libburner
|
||||
|
||||
libburner is a minimal demo application for the library libburn
|
||||
(see: libburn/libburn.h) as provided on http://libburnia-project.org .
|
||||
It can list the available devices, can burn to recordable CD, DVD, or BD,
|
||||
can blank a CD-RW or DVD-RW, and can format unformatted DVD-RW, BD-R, or BD-RE.
|
||||
It can list the available devices, can blank a CD-RW or DVD-RW and
|
||||
can burn to recordable CD and recordable single layer DVD.
|
||||
|
||||
It's main purpose, nevertheless, is to show you how to use libburn and also
|
||||
to serve the libburnia team as reference application. libburner does indeed
|
||||
define the standard way how above gestures can be implemented and stay upward
|
||||
compatible for a good while.
|
||||
define the standard way how above three gestures can be implemented and
|
||||
stay upward compatible for a good while.
|
||||
|
||||
@subsection libburner-help Libburner --help
|
||||
<pre>
|
||||
Usage: test/libburner
|
||||
[--drive <address>|<driveno>|"-"] [--audio]
|
||||
[--blank_fast|--blank_full|--format] [--try_to_simulate]
|
||||
[--blank_fast|--blank_full|--format_overwrite]
|
||||
[--try_to_simulate]
|
||||
[--multi] [<one or more imagefiles>|"-"]
|
||||
Examples
|
||||
A bus scan (needs rw-permissions to see a drive):
|
||||
@ -87,8 +147,8 @@ Blank a used CD-RW (is combinable with burning in one run):
|
||||
test/libburner --drive /dev/hdc --blank_fast
|
||||
Blank a used DVD-RW (is combinable with burning in one run):
|
||||
test/libburner --drive /dev/hdc --blank_full
|
||||
Format a DVD-RW, BD-RE or BD-R:
|
||||
test/libburner --drive /dev/hdc --format
|
||||
Format a DVD-RW to avoid need for blanking before re-use:
|
||||
test/libburner --drive /dev/hdc --format_overwrite
|
||||
Burn two audio tracks (to CD only):
|
||||
lame --decode -t /path/to/track1.mp3 track1.cd
|
||||
test/dewav /path/to/track2.wav -o track2.cd
|
||||
|
@ -376,7 +376,7 @@ static void *format_worker_func(struct w_list *w)
|
||||
void burn_disc_format(struct burn_drive *drive, off_t size, int flag)
|
||||
{
|
||||
struct format_opts o;
|
||||
int ok = 0, ret;
|
||||
int ok = 0;
|
||||
char msg[160];
|
||||
|
||||
if ((SCAN_GOING()) || find_worker(drive) != NULL) {
|
||||
@ -409,82 +409,8 @@ void burn_disc_format(struct burn_drive *drive, off_t size, int flag)
|
||||
flag |= 4; /* format up to maximum size */
|
||||
} else if (drive->current_profile == 0x12) {
|
||||
ok = 1; /* DVD-RAM */
|
||||
|
||||
} else if (drive->current_profile == 0x41) {
|
||||
/* BD-R SRM */
|
||||
ok= 1;
|
||||
ret = drive->read_format_capacities(drive, 0x00);
|
||||
if (ret > 0 &&
|
||||
drive->format_descr_type == BURN_FORMAT_IS_FORMATTED)
|
||||
ok = 0;
|
||||
if (drive->status != BURN_DISC_BLANK)
|
||||
ok = 0;
|
||||
if (!ok) {
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020162,
|
||||
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"BD-R not unformatted blank any more. Cannot format.",
|
||||
0, 0);
|
||||
drive->cancel = 1;
|
||||
return;
|
||||
}
|
||||
if (flag & 32) {
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020163,
|
||||
LIBDAX_MSGS_SEV_NOTE, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Blank BD-R left unformatted for zero spare capacity.",
|
||||
0, 0);
|
||||
return;
|
||||
}
|
||||
} else if (drive->current_profile == 0x43) {
|
||||
ok = 1; /* BD-RE */
|
||||
|
||||
if ((flag & 32) && !(drive->current_feat23h_byte4 & 8)) {
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020164,
|
||||
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Drive does not format BD-RE without spares.",
|
||||
0, 0);
|
||||
drive->cancel = 1;
|
||||
return;
|
||||
|
||||
}
|
||||
if ((flag & 6) != 6 || (flag & 128)) {
|
||||
if ((flag & 64) && !(drive->current_feat23h_byte4 & 2)) {
|
||||
if (drive->current_feat23h_byte4 & 1) {
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020165,
|
||||
LIBDAX_MSGS_SEV_WARNING,
|
||||
LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Drive does not support fast formatting",
|
||||
0, 0);
|
||||
flag &= ~64;
|
||||
} else {
|
||||
no_non_default_bd_re:;
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020167,
|
||||
LIBDAX_MSGS_SEV_SORRY,
|
||||
LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Drive does not support non-default formatting",
|
||||
0, 0);
|
||||
drive->cancel = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ((!(flag & 64)) && !(drive->current_feat23h_byte4 & 1)){
|
||||
if (drive->current_feat23h_byte4 & 2) {
|
||||
libdax_msgs_submit(libdax_messenger,
|
||||
drive->global_index, 0x00020166,
|
||||
LIBDAX_MSGS_SEV_WARNING,
|
||||
LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Drive does not support full formatting",
|
||||
0, 0);
|
||||
flag |= 64;
|
||||
} else
|
||||
goto no_non_default_bd_re;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!ok) {
|
||||
|
@ -2246,9 +2246,8 @@ int burn_disc_get_multi_caps(struct burn_drive *d, enum burn_write_types wt,
|
||||
o->might_do_sao = 4;
|
||||
o->might_do_tao = 2;
|
||||
o->advised_write_mode = BURN_WRITE_TAO;
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b ||
|
||||
d->current_profile == 0x41) {
|
||||
/* DVD+R , DVD+R/DL , BD-R SRM */
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b) {
|
||||
/* DVD+R , DVD+R/DL */
|
||||
o->multi_session = o->multi_track = 1;
|
||||
o->might_do_tao = 2;
|
||||
o->might_do_sao = 1;
|
||||
@ -2507,10 +2506,3 @@ int burn_drive_set_media_capacity_remaining(struct burn_drive *d, off_t value)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ts A81215 : API */
|
||||
int burn_get_read_capacity(struct burn_drive *d, int *capacity, int flag)
|
||||
{
|
||||
*capacity = d->media_read_capacity;
|
||||
return (d->media_read_capacity != 0x7fffffff);
|
||||
}
|
||||
|
||||
|
@ -183,41 +183,18 @@ enum burn_block_types
|
||||
BURN_BLOCK_SAO = 16384
|
||||
};
|
||||
|
||||
/** Possible status of the drive in regard to the disc in it. */
|
||||
/** Possible status' of the drive in regard to the disc in it. */
|
||||
enum burn_disc_status
|
||||
{
|
||||
/** The current status is not yet known */
|
||||
BURN_DISC_UNREADY,
|
||||
|
||||
/** The drive holds a blank disc. It is ready for writing from scratch.
|
||||
Unused multi-session media:
|
||||
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, BD-R
|
||||
Blanked multi-session media (i.e. treated by burn_disc_erase())
|
||||
CD-RW, DVD-RW
|
||||
Overwriteable media with or without valid data
|
||||
DVD-RAM, DVD+RW, formatted DVD-RW, BD-RE
|
||||
*/
|
||||
/** The drive holds a blank disc */
|
||||
BURN_DISC_BLANK,
|
||||
|
||||
/** There is no disc at all in the drive */
|
||||
BURN_DISC_EMPTY,
|
||||
|
||||
/** There is an incomplete disc in the drive. It is ready for appending
|
||||
another session.
|
||||
Written but not yet closed multi-session media
|
||||
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, BD-R
|
||||
*/
|
||||
/** There is an incomplete disc in the drive */
|
||||
BURN_DISC_APPENDABLE,
|
||||
|
||||
/** There is a disc with data on it in the drive. It is usable only for
|
||||
reading.
|
||||
Written and closed multi-session media
|
||||
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, BD-R
|
||||
Read-Only media
|
||||
CD-ROM, DVD-ROM, BD-ROM
|
||||
Note that many DVD-ROM drives report any written media
|
||||
as Read-Only media and not by their real media types.
|
||||
*/
|
||||
/** There is a disc with data on it in the drive */
|
||||
BURN_DISC_FULL,
|
||||
|
||||
/* ts A61007 */
|
||||
@ -227,7 +204,7 @@ enum burn_disc_status
|
||||
|
||||
/* ts A61020 */
|
||||
/* @since 0.2.6 */
|
||||
/** The media seems to be unsuitable for reading and for writing */
|
||||
/** The media seems not to be suitable for burning */
|
||||
BURN_DISC_UNSUITABLE
|
||||
};
|
||||
|
||||
@ -1160,8 +1137,7 @@ off_t burn_disc_available_space(struct burn_drive *d,
|
||||
0x11 "DVD-R sequential recording", 0x12 "DVD-RAM",
|
||||
0x13 "DVD-RW restricted overwrite", 0x14 "DVD-RW sequential recording",
|
||||
0x1a "DVD+RW", 0x1b "DVD+R",
|
||||
0x2b "DVD+R/DL",
|
||||
0x41 "BD-R sequential recording", 0x43 "BD-RE",
|
||||
0x2b "DVD+R/DL", 0x43 "BD-RE",
|
||||
0xffff "stdio file"
|
||||
Note: 0xffff is not a MMC profile but a libburn invention.
|
||||
If enabled by burn_allow_untested_profiles() it also writes to profiles
|
||||
@ -1169,8 +1145,8 @@ off_t burn_disc_available_space(struct burn_drive *d,
|
||||
Read-only are the profiles
|
||||
0x08 "CD-ROM", 0x10 "DVD-ROM",
|
||||
0x40 "BD-ROM",
|
||||
For now read-only is BD-R profile (testers wanted)
|
||||
0x42 "BD-R random recording"
|
||||
For now read-only are BD-R profiles (testers wanted)
|
||||
0x41 "BD-R sequential recording", 0x42 "BD-R random recording"
|
||||
@param d The drive where the media is inserted.
|
||||
@param pno Profile Number. See also mmc5r03c.pdf, table 89
|
||||
@param name Profile Name (see above list, unknown profiles have empty name)
|
||||
@ -1193,8 +1169,8 @@ int burn_disc_erasable(struct burn_drive *d);
|
||||
enum burn_drive_status burn_drive_get_status(struct burn_drive *drive,
|
||||
struct burn_progress *p);
|
||||
|
||||
/** Creates a write_opts struct for burning to the specified drive.
|
||||
The returned object must later be freed with burn_write_opts_free().
|
||||
/** Creates a write_opts struct for burning to the specified drive
|
||||
must be freed with burn_write_opts_free
|
||||
@param drive The drive to write with
|
||||
@return The write_opts, NULL on error
|
||||
*/
|
||||
@ -1260,8 +1236,7 @@ void burn_disc_erase(struct burn_drive *drive, int fast);
|
||||
bit1+2: size mode
|
||||
0 = use parameter size as far as it makes sense
|
||||
1 = insist in size 0 even if there is a better default known
|
||||
(on DVD-RAM or BD-R identical to size mode 0,
|
||||
i.e. they never get formatted with payload size 0)
|
||||
(on DVD-RAM or BD-RE identical to size mode 0)
|
||||
2 = without bit7: format to maximum available size
|
||||
with bit7 : take size from indexed format descriptor
|
||||
3 = without bit7: format to default size
|
||||
@ -1277,9 +1252,8 @@ void burn_disc_erase(struct burn_drive *drive, int fast);
|
||||
the format to use. See burn_disc_get_formats(),
|
||||
burn_disc_get_format_descr().
|
||||
Acceptable types are: 0x00, 0x01, 0x10, 0x11, 0x13,
|
||||
0x15, 0x26, 0x30, 0x31, 0x32.
|
||||
0x15, 0x26, 0x30, 0x31.
|
||||
If bit7 is set, then bit4 is set automatically.
|
||||
bit16= enable POW on blank BD-R
|
||||
@since 0.3.0
|
||||
*/
|
||||
void burn_disc_format(struct burn_drive *drive, off_t size, int flag);
|
||||
@ -2230,8 +2204,8 @@ void burn_version(int *major, int *minor, int *micro);
|
||||
|
||||
*/
|
||||
#define burn_header_version_major 0
|
||||
#define burn_header_version_minor 6
|
||||
#define burn_header_version_micro 0
|
||||
#define burn_header_version_minor 5
|
||||
#define burn_header_version_micro 8
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
@ -2440,21 +2414,6 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
|
||||
char *data, off_t data_count, int flag);
|
||||
|
||||
|
||||
/* ts A81215 */
|
||||
/** Inquire the maximum amount of readable data.
|
||||
It is supposed that all LBAs in the range from 0 to media_read_acpacity-1
|
||||
can be read via burn_read_data() although some of them may never have been
|
||||
recorded. If tracks are recognizable then it is better to only read
|
||||
LBAs which are part of some track.
|
||||
@param d The drive from which to read
|
||||
@param capacity Will return the result if valid
|
||||
@param flag Bitfield for control purposes: Unused yet, submit 0.
|
||||
@return 1=sucessful , <=0 an error occured
|
||||
@since 0.6.0
|
||||
*/
|
||||
int burn_get_read_capacity(struct burn_drive *d, int *capacity, int flag);
|
||||
|
||||
|
||||
/* ts A70812 */
|
||||
/** Read data in random access mode.
|
||||
The drive must be grabbed successfully before calling this function.
|
||||
@ -2464,7 +2423,7 @@ int burn_get_read_capacity(struct burn_drive *d, int *capacity, int flag);
|
||||
This is a synchronous call which returns only after the full read job
|
||||
has ended (sucessfully or not). So it is wise not to read giant amounts
|
||||
of data in a single call.
|
||||
@param d The drive from which to read
|
||||
@param d The drive to which to write
|
||||
@param byte_address The start address of the read in byte (aligned to 2048)
|
||||
@param data A memory buffer capable of taking data_size bytes
|
||||
@param data_size The amount of data to be read. This does not have to
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* libdax_msgs
|
||||
Message handling facility of libdax.
|
||||
Copyright (C) 2006 - 2009 Thomas Schmitt <scdbackup@gmx.net>,
|
||||
Copyright (C) 2006 - 2008 Thomas Schmitt <scdbackup@gmx.net>,
|
||||
provided under GPL version 2
|
||||
*/
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* libdax_msgs
|
||||
Message handling facility of libdax.
|
||||
Copyright (C) 2006-2009 Thomas Schmitt <scdbackup@gmx.net>,
|
||||
Copyright (C) 2006-2008 Thomas Schmitt <scdbackup@gmx.net>,
|
||||
provided under GPL version 2
|
||||
*/
|
||||
|
||||
@ -534,12 +534,6 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
|
||||
0x0002015f (MISHAP,HIGH) = Damaged CD table-of-content detected and truncated
|
||||
0x00020160 (WARNING,HIGH) = Session without leadout encountered
|
||||
0x00020161 (WARNING,HIGH) = Empty session deleted
|
||||
0x00020162 (SORRY,HIGH) = BD-R not unformatted blank any more. Cannot format
|
||||
0x00020163 (NOTE,HIGH) = Blank BD-R left unformatted for zero spare capacity
|
||||
0x00020164 (SORRY,HIGH) = Drive does not format BD-RE without spares
|
||||
0x00020165 (WARNING,HIGH) = Drive does not support fast formatting
|
||||
0x00020166 (WARNING,HIGH) = Drive does not support full formatting
|
||||
0x00020167 (SORRY,HIGH) = Drive does not support non-default formatting
|
||||
|
||||
libdax_audioxtr:
|
||||
0x00020200 (SORRY,HIGH) = Cannot open audio source file
|
||||
|
277
libburn/mmc.c
277
libburn/mmc.c
@ -58,9 +58,6 @@ extern struct libdax_msgs *libdax_messenger;
|
||||
/* ts A70509 : handling 0x41 and 0x42 as read-only types */
|
||||
#define Libburn_support_bd_r_readonlY 1
|
||||
|
||||
/* >>> ts A81208 */
|
||||
#define Libburn_support_bd_plus_r_srM 1
|
||||
|
||||
|
||||
/* ts A80410 : <<< Dangerous experiment: Pretend that DVD-RAM is BD-RE
|
||||
# define Libburn_dvd_ram_as_bd_rE yes
|
||||
@ -122,8 +119,6 @@ extern struct libdax_msgs *libdax_messenger;
|
||||
drive->do_stream_recording it does full nominal speed.
|
||||
ts A80506 : Giulio Orsero reports success with BD-RE formatting.
|
||||
BD-RE is now an officially supported profile.
|
||||
ts A81209 : The first two sessions have been written to BD-R SRM
|
||||
(auto formatted without Defect Management).
|
||||
*/
|
||||
|
||||
/* ts A70519 : With MMC commands of data direction FROM_DRIVE:
|
||||
@ -203,10 +198,6 @@ static unsigned char MMC_RESERVE_TRACK[] =
|
||||
static unsigned char MMC_READ_10[] =
|
||||
{ 0x28, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
/* ts A81210 : Determine the upper limit of readable data size */
|
||||
static unsigned char MMC_READ_CAPACITY[] =
|
||||
{ 0x25, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
|
||||
static int mmc_function_spy_do_tell = 0;
|
||||
|
||||
@ -1467,7 +1458,6 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
|
||||
char msg[160];
|
||||
/* ts A70131 : had to move mmc_read_toc() to end of function */
|
||||
int do_read_toc = 0, session_state, disc_status, len, old_alloc_len;
|
||||
int ret;
|
||||
|
||||
/* ts A61020 */
|
||||
d->start_lba = d->end_lba = -2000000000;
|
||||
@ -1478,9 +1468,6 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
|
||||
d->media_capacity_remaining = 0;
|
||||
d->media_lba_limit = 0;
|
||||
|
||||
/* ts A81210 */
|
||||
d->media_read_capacity = 0x7fffffff;
|
||||
|
||||
/* ts A61202 */
|
||||
d->toc_entries = 0;
|
||||
if (d->status == BURN_DISC_EMPTY)
|
||||
@ -1541,15 +1528,8 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
|
||||
#ifdef Libburn_support_bd_r_readonlY
|
||||
/* <<< For now: declaring BD-R read-only
|
||||
*/
|
||||
#ifndef Libburn_support_bd_plus_r_srM
|
||||
if (d->current_profile == 0x41) {
|
||||
/* BD-R seq as readonly dummy */
|
||||
disc_status = 2; /* always full and finalized */
|
||||
d->erasable = 0; /* never erasable */
|
||||
}
|
||||
#endif
|
||||
if (d->current_profile == 0x42) {
|
||||
/* BD-R rnd */
|
||||
if (d->current_profile == 0x41 || d->current_profile == 0x42) {
|
||||
/* BD-R seq, BD-R rnd */
|
||||
disc_status = 2; /* always full and finalized */
|
||||
d->erasable = 0; /* never erasable */
|
||||
}
|
||||
@ -1557,7 +1537,6 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
|
||||
|
||||
switch (disc_status) {
|
||||
case 0:
|
||||
regard_as_blank:;
|
||||
d->toc_entries = 0;
|
||||
d->start_lba = burn_msf_to_lba(data[17], data[18], data[19]);
|
||||
d->end_lba = burn_msf_to_lba(data[21], data[22], data[23]);
|
||||
@ -1572,25 +1551,28 @@ regard_as_blank:;
|
||||
break;
|
||||
case 1:
|
||||
d->status = BURN_DISC_APPENDABLE;
|
||||
|
||||
case 2:
|
||||
if (disc_status == 2)
|
||||
d->status = BURN_DISC_FULL;
|
||||
|
||||
/* ts A81210 */
|
||||
ret = mmc_read_capacity(d);
|
||||
/* Freshly formatted, unwritten BD-R pretend to be appendable
|
||||
but in our model they need to be regarded as blank.
|
||||
*/
|
||||
if (d->current_profile == 0x41 && ret > 0 &&
|
||||
d->status == BURN_DISC_APPENDABLE &&
|
||||
d->media_read_capacity == 0)
|
||||
goto regard_as_blank;
|
||||
|
||||
do_read_toc = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
#ifdef NIX
|
||||
/* <<< on its way out. DVD-R DL are current_is_supported_profile
|
||||
unconditionally. Writeability is handled above now.
|
||||
*/
|
||||
/* ts A80207 : DVD - R DL can normally be read but not be written */
|
||||
if(d->current_profile == 0x15 && !d->current_is_supported_profile) {
|
||||
if(d->status == BURN_DISC_APPENDABLE)
|
||||
d->status = BURN_DISC_FULL;
|
||||
d->erasable = 0; /* never erasable */
|
||||
d->current_is_supported_profile = 1;
|
||||
}
|
||||
#endif /* NIX */
|
||||
|
||||
|
||||
if ((d->current_profile != 0 || d->status != BURN_DISC_UNREADY)
|
||||
&& ! d->current_is_supported_profile) {
|
||||
if (!d->silent_on_scsi_error) {
|
||||
@ -2211,8 +2193,6 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
||||
d->current_is_supported_profile = 0;
|
||||
d->current_has_feat21h = 0;
|
||||
d->current_feat21h_link_size = -1;
|
||||
d->current_feat23h_byte4 = 0;
|
||||
d->current_feat23h_byte8 = 0;
|
||||
d->current_feat2fh_byte4 = -1;
|
||||
|
||||
scsi_init_command(&c, MMC_GET_CONFIGURATION,
|
||||
@ -2259,11 +2239,7 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
||||
d->current_is_supported_profile = 1;
|
||||
|
||||
#ifdef Libburn_support_bd_r_readonlY
|
||||
#ifndef Libburn_support_bd_plus_r_srM
|
||||
if (cp == 0x41) /* BD-R sequential (here as read-only dummy) */
|
||||
d->current_is_supported_profile = 1;
|
||||
#endif
|
||||
if (cp == 0x42) /* BD-R random recording */
|
||||
if (cp == 0x41 || cp == 0x42) /* BD-R sequential, BD-R random */
|
||||
d->current_is_supported_profile = 1;
|
||||
#endif
|
||||
|
||||
@ -2304,10 +2280,6 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
||||
if (cp == 0x1b || cp == 0x2b) /* DVD+R , DVD+R/DL */
|
||||
d->current_is_supported_profile = 1;
|
||||
#endif
|
||||
#ifdef Libburn_support_bd_plus_r_srM
|
||||
if (cp == 0x41) /* BD-R SRM */
|
||||
d->current_is_supported_profile = 1;
|
||||
#endif
|
||||
|
||||
/* Enable this to get loud and repeated reports about the feature set :
|
||||
#define Libburn_print_feature_descriptorS 1
|
||||
@ -2374,20 +2346,6 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
||||
|
||||
}
|
||||
|
||||
} else if (feature_code == 0x23) {
|
||||
d->current_feat23h_byte4 = descr[4];
|
||||
d->current_feat23h_byte8 = descr[8];
|
||||
#ifdef Libburn_print_feature_descriptorS
|
||||
if (cp >= 0x41 && cp <= 0x43)
|
||||
fprintf(stderr,
|
||||
"LIBBURN_EXPERIMENTAL : BD formats: %s%s%s%s%s\n",
|
||||
descr[4] & 1 ? " Cert" : "",
|
||||
descr[4] & 2 ? " QCert" : "",
|
||||
descr[4] & 4 ? " Expand" : "",
|
||||
descr[4] & 8 ? " RENoSA" : "",
|
||||
descr[8] & 1 ? " RRM" : "");
|
||||
#endif /* Libburn_print_feature_descriptorS */
|
||||
|
||||
} else if (feature_code == 0x2F) {
|
||||
if (descr[2] & 1)
|
||||
d->current_feat2fh_byte4 = descr[4];
|
||||
@ -2795,7 +2753,6 @@ int mmc_read_buffer_capacity(struct burn_drive *d)
|
||||
bit6= try to avoid lengthy media certification
|
||||
bit7= bit8 to bit15 contain the index of the format to use
|
||||
bit8-bit15 = see bit7
|
||||
bit16= enable POW on blank BD-R
|
||||
*/
|
||||
int mmc_format_unit(struct burn_drive *d, off_t size, int flag)
|
||||
{
|
||||
@ -2805,7 +2762,6 @@ int mmc_format_unit(struct burn_drive *d, off_t size, int flag)
|
||||
int index, format_sub_type = 0, format_00_index, size_mode;
|
||||
int accept_count = 0;
|
||||
off_t num_of_blocks = 0, diff, format_size, i_size, format_00_max_size;
|
||||
off_t min_size = -1, max_size = -1;
|
||||
char msg[256],descr[80];
|
||||
int key, asc, ascq;
|
||||
int full_format_type = 0x00; /* Full Format (or 0x10 for DVD-RW ?) */
|
||||
@ -3088,116 +3044,6 @@ no_suitable_formatting_type:;
|
||||
c.opcode[1] |= 0x08;
|
||||
}
|
||||
|
||||
} else if (d->current_profile == 0x41) {
|
||||
/* BD-R SRM */
|
||||
|
||||
index = -1;
|
||||
format_size = -1;
|
||||
if (d->num_format_descr <= 0)
|
||||
goto no_suitable_formatting_type;
|
||||
if (d->format_descriptors[0].type != 0)
|
||||
goto no_suitable_formatting_type;
|
||||
for (i = 0; i < d->num_format_descr; i++) {
|
||||
format_type = d->format_descriptors[i].type;
|
||||
i_size = d->format_descriptors[i].size;
|
||||
if (format_type != 0x00 && format_type != 0x32)
|
||||
continue;
|
||||
if (flag & 32) { /* No defect mgt */
|
||||
/* ts A81211 : MMC-5 6.5.4.2.17.1
|
||||
When formatted with Format Type 32h,
|
||||
the BD-R disc is required to allocate
|
||||
a non-zero number of spares.
|
||||
*/
|
||||
goto no_suitable_formatting_type;
|
||||
|
||||
} else if(size_mode == 2) { /* max payload size */
|
||||
/* search largest 0x32 format descriptor */
|
||||
if(format_type != 0x32)
|
||||
continue;
|
||||
} else if(size_mode == 3) { /* default payload size */
|
||||
if (format_type == 0x00) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
} else { /* defect managed format with size wish */
|
||||
|
||||
#ifdef Libburn_bd_r_format_olD
|
||||
|
||||
/* search for smallest 0x32 >= size */
|
||||
if(format_type != 0x32)
|
||||
continue;
|
||||
if (i_size < size)
|
||||
continue;
|
||||
if (format_size >= 0 && i_size >= format_size)
|
||||
continue;
|
||||
index = i;
|
||||
format_size = i_size;
|
||||
continue;
|
||||
|
||||
#else /* Libburn_bd_r_format_olD */
|
||||
|
||||
/* search largest and smallest 0x32 */
|
||||
if(format_type != 0x32)
|
||||
continue;
|
||||
if (i_size < min_size || min_size < 0)
|
||||
min_size = i_size;
|
||||
if (i_size > max_size)
|
||||
max_size = i_size;
|
||||
|
||||
#endif /* ! Libburn_bd_r_format_olD */
|
||||
|
||||
}
|
||||
/* common for all cases which search largest
|
||||
descriptors */
|
||||
if (i_size > format_size) {
|
||||
format_size = i_size;
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
if (size_mode == 2 && index < 0 && !(flag & 32))
|
||||
index = 0;
|
||||
if (index < 0)
|
||||
goto no_suitable_formatting_type;
|
||||
format_type = d->format_descriptors[index].type;
|
||||
if (flag & (1 << 16))
|
||||
format_sub_type = 0; /* SRM + POW */
|
||||
else
|
||||
format_sub_type = 1; /* SRM (- POW) */
|
||||
|
||||
#ifdef Libburn_bd_r_format_olD
|
||||
if (0) {
|
||||
#else
|
||||
if (size_mode == 0 || size_mode == 1) {
|
||||
#endif /* ! Libburn_bd_r_format_olD */
|
||||
|
||||
if (min_size < 0 || max_size < 0)
|
||||
goto no_suitable_formatting_type;
|
||||
if (size <= 0)
|
||||
size = min_size;
|
||||
if (size % 0x10000)
|
||||
size += 0x10000 - (size % 0x10000);
|
||||
if (size < min_size)
|
||||
goto no_suitable_formatting_type;
|
||||
else if(size > max_size)
|
||||
goto no_suitable_formatting_type;
|
||||
num_of_blocks = size / 2048;
|
||||
mmc_int_to_four_char(c.page->data + 4, num_of_blocks);
|
||||
for (i = 0; i < 3; i++)
|
||||
c.page->data[9 + i] = 0;
|
||||
} else {
|
||||
num_of_blocks =
|
||||
d->format_descriptors[index].size / 2048;
|
||||
mmc_int_to_four_char(c.page->data + 4, num_of_blocks);
|
||||
for (i = 0; i < 3; i++)
|
||||
c.page->data[9 + i] =
|
||||
( d->format_descriptors[index].tdp >>
|
||||
(16 - 8 * i)) & 0xff;
|
||||
}
|
||||
sprintf(descr, "%s", d->current_profile_text);
|
||||
return_immediately = 1; /* caller must do the waiting */
|
||||
c.page->data[1] |= 0x80; /* FOV = this flag vector is valid */
|
||||
|
||||
} else if (d->current_profile == 0x43) {
|
||||
/* BD-RE */
|
||||
index = -1;
|
||||
@ -3241,9 +3087,6 @@ no_suitable_formatting_type:;
|
||||
index = i;
|
||||
continue;
|
||||
} else { /* defect managed format with size wish */
|
||||
|
||||
#ifdef Libburn_bd_re_format_olD
|
||||
|
||||
/* search for smallest 0x30 >= size */
|
||||
if(format_type != 0x30)
|
||||
continue;
|
||||
@ -3254,19 +3097,6 @@ no_suitable_formatting_type:;
|
||||
index = i;
|
||||
format_size = i_size;
|
||||
continue;
|
||||
|
||||
#else /* Libburn_bd_re_format_olD */
|
||||
|
||||
/* search largest and smallest 0x30 */
|
||||
if(format_type != 0x30)
|
||||
continue;
|
||||
if (i_size < min_size || min_size < 0)
|
||||
min_size = i_size;
|
||||
if (i_size > max_size)
|
||||
max_size = i_size;
|
||||
|
||||
#endif /* ! Libburn_bd_re_format_olD */
|
||||
|
||||
}
|
||||
/* common for all cases which search largest
|
||||
descriptors */
|
||||
@ -3275,7 +3105,6 @@ no_suitable_formatting_type:;
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (size_mode == 2 && index < 0 && !(flag & 32))
|
||||
index = 0;
|
||||
if (index < 0)
|
||||
@ -3287,36 +3116,12 @@ no_suitable_formatting_type:;
|
||||
else
|
||||
format_sub_type = 2; /* Full certification */
|
||||
}
|
||||
|
||||
#ifdef Libburn_bd_re_format_olD
|
||||
if (0) {
|
||||
#else
|
||||
if (size_mode == 0 || size_mode == 1) {
|
||||
#endif /* ! Libburn_bd_re_format_olD */
|
||||
|
||||
if (min_size < 0 || max_size < 0)
|
||||
goto no_suitable_formatting_type;
|
||||
if (size <= 0)
|
||||
size = min_size;
|
||||
if (size % 0x10000)
|
||||
size += 0x10000 - (size % 0x10000);
|
||||
if (size < min_size)
|
||||
goto no_suitable_formatting_type;
|
||||
else if(size > max_size)
|
||||
goto no_suitable_formatting_type;
|
||||
num_of_blocks = size / 2048;
|
||||
mmc_int_to_four_char(c.page->data + 4, num_of_blocks);
|
||||
for (i = 0; i < 3; i++)
|
||||
c.page->data[9 + i] = 0;
|
||||
} else {
|
||||
num_of_blocks =
|
||||
d->format_descriptors[index].size / 2048;
|
||||
mmc_int_to_four_char(c.page->data + 4, num_of_blocks);
|
||||
for (i = 0; i < 3; i++)
|
||||
c.page->data[9 + i] =
|
||||
( d->format_descriptors[index].tdp >>
|
||||
(16 - 8 * i)) & 0xff;
|
||||
}
|
||||
num_of_blocks = d->format_descriptors[index].size / 2048;
|
||||
mmc_int_to_four_char(c.page->data + 4, num_of_blocks);
|
||||
for (i = 0; i < 3; i++)
|
||||
c.page->data[9 + i] =
|
||||
( d->format_descriptors[index].tdp >>
|
||||
(16 - 8 * i)) & 0xff;
|
||||
sprintf(descr, "%s", d->current_profile_text);
|
||||
return_immediately = 1; /* caller must do the waiting */
|
||||
c.page->data[1] |= 0x80; /* FOV = this flag vector is valid */
|
||||
@ -3635,9 +3440,8 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
||||
|
||||
} else if (d->current_profile == 0x1a || d->current_profile == 0x1b ||
|
||||
d->current_profile == 0x2b || d->current_profile == 0x12 ||
|
||||
d->current_profile == 0x41 || d->current_profile == 0x42 ||
|
||||
d->current_profile == 0x43) {
|
||||
/* not with DVD+R[W][/DL] or DVD-RAM or BD-R[E] */;
|
||||
/* not with DVD+R[W][/DL] or DVD-RAM or BD-RE */;
|
||||
return 0;
|
||||
} else {
|
||||
/* Traditional setup for CD */
|
||||
@ -3722,34 +3526,6 @@ int mmc_read_10(struct burn_drive *d, int start,int amount, struct buffer *buf)
|
||||
}
|
||||
|
||||
|
||||
/* ts A81210 : Determine the upper limit of readable data size */
|
||||
int mmc_read_capacity(struct burn_drive *d)
|
||||
{
|
||||
struct buffer buf;
|
||||
struct command c;
|
||||
int alloc_len= 8;
|
||||
|
||||
d->media_read_capacity = 0x7fffffff;
|
||||
if (mmc_function_spy(d, "mmc_read_capacity") <= 0)
|
||||
return 0;
|
||||
|
||||
scsi_init_command(&c, MMC_READ_CAPACITY, sizeof(MMC_READ_CAPACITY));
|
||||
c.dxfer_len = alloc_len;
|
||||
c.retry = 1;
|
||||
c.page = &buf;
|
||||
c.page->bytes = 0;
|
||||
c.page->sectors = 0;
|
||||
c.dir = FROM_DRIVE;
|
||||
d->issue_command(d, &c);
|
||||
d->media_read_capacity = mmc_four_char_to_int(c.page->data);
|
||||
if (d->media_read_capacity < 0) {
|
||||
d->media_read_capacity = 0x7fffffff;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ts A61021 : the mmc specific part of sg.c:enumerate_common()
|
||||
*/
|
||||
int mmc_setup_drive(struct burn_drive *d)
|
||||
@ -3791,8 +3567,6 @@ int mmc_setup_drive(struct burn_drive *d)
|
||||
d->current_is_supported_profile = 0;
|
||||
d->current_has_feat21h = 0;
|
||||
d->current_feat21h_link_size = -1;
|
||||
d->current_feat23h_byte4 = 0;
|
||||
d->current_feat23h_byte8 = 0;
|
||||
d->current_feat2fh_byte4 = -1;
|
||||
d->needs_close_session = 0;
|
||||
d->needs_sync_cache = 0;
|
||||
@ -3802,7 +3576,6 @@ int mmc_setup_drive(struct burn_drive *d)
|
||||
d->last_track_no = 1;
|
||||
d->media_capacity_remaining = 0;
|
||||
d->media_lba_limit = 0;
|
||||
d->media_read_capacity = 0x7fffffff;
|
||||
d->pessimistic_buffer_free = 0;
|
||||
d->pbf_altered = 0;
|
||||
d->wait_for_buffer_free = Libburn_wait_for_buffer_freE;
|
||||
|
@ -72,8 +72,6 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
||||
int mmc_read_10(struct burn_drive *d, int start, int amount,
|
||||
struct buffer *buf);
|
||||
|
||||
/* ts A81210 : Determine the upper limit of readable data size */
|
||||
int mmc_read_capacity(struct burn_drive *d);
|
||||
|
||||
|
||||
/* mmc5r03c.pdf 4.3.4.4.1 d) "The maximum number of RZones is 2 302." */
|
||||
|
@ -171,19 +171,6 @@ struct burn_drive
|
||||
/* Link Size item number 0 from feature 0021h descriptor */
|
||||
int current_feat21h_link_size;
|
||||
|
||||
/* Flags from feature 0023h for formatting BD mmc5r03c.pdf 5.3.13
|
||||
Byte 4 BD-RE:
|
||||
bit0= Cert format 30h sub-type 10b
|
||||
bit1= QCert format 30h sub-type 11b
|
||||
bit2= Expand format 01h
|
||||
bit3= RENoSA format 31h
|
||||
Byte 8 BD-R:
|
||||
bit0= RRM format 32h sub-type 10b
|
||||
*/
|
||||
int current_feat23h_byte4;
|
||||
int current_feat23h_byte8;
|
||||
|
||||
|
||||
/* Flags from feature 002Fh feature descriptor mmc5r03c.pdf 5.3.25 :
|
||||
bit1= DVD-RW supported
|
||||
bit2= Test Write available
|
||||
@ -248,9 +235,6 @@ struct burn_drive
|
||||
/* ts A70215 : if > 0 : first lba on media that is too high for write*/
|
||||
int media_lba_limit;
|
||||
|
||||
/* ts A81210 : Upper limit of readable data size,
|
||||
0x7fffffff = unknown */
|
||||
int media_read_capacity;
|
||||
|
||||
int toc_temp;
|
||||
struct burn_disc *disc; /* disc structure */
|
||||
|
@ -1005,10 +1005,8 @@ int burn_precheck_write(struct burn_write_opts *o, struct burn_disc *disc,
|
||||
} else if (d->drive_role == 3 ||
|
||||
d->current_profile == 0x11 || d->current_profile == 0x14 ||
|
||||
d->current_profile == 0x15 ||
|
||||
d->current_profile == 0x1b || d->current_profile == 0x2b ||
|
||||
d->current_profile == 0x41) {
|
||||
/* DVD-R* Sequential , DVD+R[/DL] , BD-R,
|
||||
sequential stdio "drive" */
|
||||
d->current_profile == 0x1b || d->current_profile == 0x2b ) {
|
||||
/* DVD-R* Sequential , DVD+R[/DL] , sequential stdio "drive" */
|
||||
if (o->start_byte >= 0)
|
||||
strcat(reasons, "write start address not supported, ");
|
||||
} else {
|
||||
@ -1108,10 +1106,6 @@ int burn_disc_open_track_dvd_plus_r(struct burn_write_opts *o,
|
||||
if (o->write_type == BURN_WRITE_SAO &&
|
||||
! burn_track_is_open_ended(s->track[tnum])) {
|
||||
/* Round track size up to 32 KiB and reserve track */
|
||||
|
||||
/* ts A81208 */
|
||||
/* >>> ??? round to 64 KiB for BD-R ? (It is not mandatory) */
|
||||
|
||||
size = ((off_t) burn_track_get_sectors(s->track[tnum]))
|
||||
* (off_t) 2048;
|
||||
size = (size + (off_t) 0x7fff) & ~((off_t) 0x7fff);
|
||||
@ -1206,7 +1200,7 @@ int burn_disc_close_track_dvd_plus_r(struct burn_write_opts *o,
|
||||
}
|
||||
|
||||
|
||||
/* ts A61218 - A81208 */
|
||||
/* ts A61218 - A70129 */
|
||||
int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
struct burn_session *s, int tnum, int is_last_track)
|
||||
{
|
||||
@ -1230,11 +1224,6 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
ret = burn_disc_open_track_dvd_plus_r(o, s, tnum);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
} else if (d->current_profile == 0x41) {
|
||||
/* BD-R SRM */
|
||||
ret = burn_disc_open_track_dvd_plus_r(o, s, tnum);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
sectors = burn_track_get_sectors(t);
|
||||
@ -1303,12 +1292,6 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
is_last_track);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
} else if (d->current_profile == 0x41) {
|
||||
/* BD-R SRM */
|
||||
ret = burn_disc_close_track_dvd_plus_r(o, s, tnum,
|
||||
is_last_track);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
ret = 1;
|
||||
ex:;
|
||||
@ -1425,8 +1408,6 @@ int burn_dvd_write_session(struct burn_write_opts *o,
|
||||
}
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b) {
|
||||
/* DVD+R , DVD+R/DL do each track as an own session */;
|
||||
} else if (d->current_profile == 0x41) {
|
||||
/* BD-R SRM do each track as an own session */;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@ -1630,12 +1611,8 @@ int burn_dvd_write_sync(struct burn_write_opts *o,
|
||||
/* ??? padding needed ??? cowardly doing it for now */
|
||||
o->obs_pad = 1; /* fill-up track's last 32k buffer */
|
||||
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b ||
|
||||
d->current_profile == 0x41) {
|
||||
/* DVD+R , DVD+R/DL , BD-R SRM */
|
||||
|
||||
/* >>> ts A81208 : with BD-R set o->obs to 64 kB ? */
|
||||
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b) {
|
||||
/* DVD+R , DVD+R/DL */
|
||||
t = disc->session[0]->track[0];
|
||||
o_end = ( burn_track_is_open_ended(t) && !o->fill_up_media );
|
||||
default_size = burn_track_get_default_size(t);
|
||||
@ -1650,8 +1627,8 @@ int burn_dvd_write_sync(struct burn_write_opts *o,
|
||||
}
|
||||
ret = burn_disc_setup_dvd_plus_r(o, disc);
|
||||
if (ret <= 0) {
|
||||
sprintf(msg, "Write preparation setup failed for %s",
|
||||
d->current_profile == 0x41 ? "BD-R" : "DVD+R");
|
||||
sprintf(msg,
|
||||
"Write preparation setup failed for DVD+R");
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
0x00020121,
|
||||
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
/* test/libburner.c , API illustration of burning data or audio tracks to CD */
|
||||
/* Copyright (C) 2005 - 2009 Thomas Schmitt <scdbackup@gmx.net> */
|
||||
/* Copyright (C) 2005 - 2007 Thomas Schmitt <scdbackup@gmx.net> */
|
||||
/* Provided under GPLv2,see also "License and copyright aspects" at file end */
|
||||
|
||||
|
||||
@ -8,9 +8,9 @@
|
||||
|
||||
libburner is a minimal demo application for the library libburn as provided
|
||||
on http://libburnia-project.org . It can list the available devices, can
|
||||
blank a CD-RW or DVD-RW, can format DVD-RW and BD, can burn to CD-R,
|
||||
CD-RW, DVD-R, DVD+R, DVD+R/DL, DVD+RW, DVD-RW, DVD-RAM, BD-R, BD-RE.
|
||||
Not supported yet: DVD-R/DL.
|
||||
blank a CD-RW or DVD-RW, can format DVD-RW and BD-RE, can burn to CD-R,
|
||||
CD-RW, DVD-R, DVD+R, DVD+R/DL, DVD+RW, DVD-RW, DVD-RAM, BD-RE.
|
||||
Not supported yet: DVD-R/DL, BD-R.
|
||||
|
||||
It's main purpose, nevertheless, is to show you how to use libburn and also
|
||||
to serve the libburnia team as reference application. libburner.c does indeed
|
||||
@ -29,9 +29,9 @@
|
||||
With that aquired drive you can blank a CD-RW
|
||||
libburner_blank_disc()
|
||||
or you can format a DVD-RW to profile "Restricted Overwrite" (needed once)
|
||||
or an unused BD to default size with spare blocks
|
||||
libburner_format()
|
||||
With the aquired drive you can burn to CD, DVD, BD
|
||||
or an unused BD-RE to default size
|
||||
libburner_format_owrt()
|
||||
With the aquired drive you can burn to CD or DVD
|
||||
libburner_payload()
|
||||
When everything is done, main() releases the drive and shuts down libburn:
|
||||
burn_drive_release();
|
||||
@ -260,8 +260,7 @@ int libburner_aquire_by_driveno(int *driveno)
|
||||
}
|
||||
|
||||
|
||||
/** Makes a previously used CD-RW or unformatted DVD-RW ready for thorough
|
||||
re-usal.
|
||||
/** Makes a previously used CD-RW ready for thorough re-usal.
|
||||
|
||||
To our knowledge it is hardly possible to abort an ongoing blank operation
|
||||
because after start it is entirely handled by the drive.
|
||||
@ -323,35 +322,24 @@ int libburner_blank_disc(struct burn_drive *drive, int blank_fast)
|
||||
Formats unformatted BD-RE to default size. This will allocate some
|
||||
reserve space, test for bad blocks and make the media ready for writing.
|
||||
Expect a very long run time.
|
||||
|
||||
Formats unformatted blank BD-R to hold a default amount of spare blocks
|
||||
for eventual mishaps during writing. If BD-R get written without being
|
||||
formatted, then they get no such reserve and will burn at full speed.
|
||||
*/
|
||||
int libburner_format(struct burn_drive *drive)
|
||||
int libburner_format_owrt(struct burn_drive *drive)
|
||||
{
|
||||
struct burn_progress p;
|
||||
double percent = 1.0;
|
||||
int ret, status, num_formats, format_flag= 0;
|
||||
off_t size = 0;
|
||||
unsigned dummy;
|
||||
enum burn_disc_status disc_state;
|
||||
|
||||
if (current_profile == 0x13) {
|
||||
fprintf(stderr, "IDLE: DVD-RW media is already formatted\n");
|
||||
return 2;
|
||||
} else if (current_profile == 0x41 || current_profile == 0x43) {
|
||||
disc_state = burn_disc_get_status(drive);
|
||||
if (disc_state != BURN_DISC_BLANK && current_profile == 0x41) {
|
||||
fprintf(stderr,
|
||||
"FATAL: BD-R is not blank. Cannot format.\n");
|
||||
return 0;
|
||||
}
|
||||
} else if (current_profile == 0x43) {
|
||||
ret = burn_disc_get_formats(drive, &status, &size, &dummy,
|
||||
&num_formats);
|
||||
if (ret > 0 && status != BURN_FORMAT_IS_UNFORMATTED) {
|
||||
if (ret > 0 && status == BURN_FORMAT_IS_FORMATTED) {
|
||||
fprintf(stderr,
|
||||
"IDLE: BD media is already formatted\n");
|
||||
"IDLE: BD-RE media is already formatted\n");
|
||||
return 2;
|
||||
}
|
||||
size = 0; /* does not really matter */
|
||||
@ -360,7 +348,7 @@ int libburner_format(struct burn_drive *drive)
|
||||
size = 128 * 1024 * 1024;
|
||||
format_flag = 1; /* write initial 128 MiB */
|
||||
} else {
|
||||
fprintf(stderr, "FATAL: Can only format DVD-RW or BD\n");
|
||||
fprintf(stderr, "FATAL: Can only format DVD-RW or BD-RE\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -488,7 +476,7 @@ int libburner_payload(struct burn_drive *drive,
|
||||
/* Give up local reference to the data burn_source object */
|
||||
burn_source_free(data_src);
|
||||
|
||||
} /* trackno loop end */
|
||||
} /* trackno loop end */
|
||||
|
||||
/* Evaluate drive and media */
|
||||
disc_state = burn_disc_get_status(drive);
|
||||
@ -626,8 +614,7 @@ int libburner_setup(int argc, char **argv)
|
||||
}
|
||||
strcpy(drive_adr, argv[i]);
|
||||
}
|
||||
} else if ((!strcmp(argv[i], "--format_overwrite")) ||
|
||||
(!strcmp(argv[i], "--format"))) {
|
||||
} else if (!strcmp(argv[i], "--format_overwrite")) {
|
||||
do_blank = 101;
|
||||
|
||||
} else if (!strcmp(argv[i], "--multi")) {
|
||||
@ -668,7 +655,8 @@ int libburner_setup(int argc, char **argv)
|
||||
if (print_help || insuffient_parameters ) {
|
||||
printf("Usage: %s\n", argv[0]);
|
||||
printf(" [--drive <address>|<driveno>|\"-\"] [--audio]\n");
|
||||
printf(" [--blank_fast|--blank_full|--format] [--try_to_simulate]\n");
|
||||
printf(" [--blank_fast|--blank_full|--format_overwrite]\n");
|
||||
printf(" [--try_to_simulate]\n");
|
||||
printf(" [--multi] [<one or more imagefiles>|\"-\"]\n");
|
||||
printf("Examples\n");
|
||||
printf("A bus scan (needs rw-permissions to see a drive):\n");
|
||||
@ -681,8 +669,8 @@ int libburner_setup(int argc, char **argv)
|
||||
printf(" %s --drive /dev/hdc --blank_fast\n",argv[0]);
|
||||
printf("Blank a used DVD-RW (is combinable with burning in one run):\n");
|
||||
printf(" %s --drive /dev/hdc --blank_full\n",argv[0]);
|
||||
printf("Format a DVD-RW, BD-RE or BD-R:\n");
|
||||
printf(" %s --drive /dev/hdc --format\n", argv[0]);
|
||||
printf("Format a DVD-RW to avoid need for blanking before re-use:\n");
|
||||
printf(" %s --drive /dev/hdc --format_overwrite\n", argv[0]);
|
||||
printf("Burn two audio tracks (to CD only):\n");
|
||||
printf(" lame --decode -t /path/to/track1.mp3 track1.cd\n");
|
||||
printf(" test/dewav /path/to/track2.wav -o track2.cd\n");
|
||||
@ -732,7 +720,7 @@ int main(int argc, char **argv)
|
||||
{ ret = 0; goto release_drive; }
|
||||
if (do_blank) {
|
||||
if (do_blank > 100)
|
||||
ret = libburner_format(drive_list[driveno].drive);
|
||||
ret = libburner_format_owrt(drive_list[driveno].drive);
|
||||
else
|
||||
ret = libburner_blank_disc(drive_list[driveno].drive,
|
||||
do_blank == 1);
|
||||
|
Reference in New Issue
Block a user