Described DVD-R[W] DAO mode

ZeroThreeEight
Thomas Schmitt 16 years ago
parent d2283a5b4e
commit 78f1cf835d

@ -691,12 +691,14 @@ DVD-RW Restricted Overwrite 0013h
DVD-RW Sequential Recording 0014h
There are two approaches for writing to sequential DVD-R[W]: DAO and
Incremental. Not all media and drives offer Incremental which allows multi-
session as with CD media.
Incremental. Not all media and drives offer Incremental which allows
multi-session as with CD media and does not demand a predicted track size.
DAO seems to be the older method. It allows only one single session and
track and it demands an exactly predicted track size.
- About overwriteavble, blank, appendable and finalized DVD-R[W] media
- Incremental writing
>>> - DAO writing (missing yet)
- DAO writing
- Obtaining DVD-R[W] multi-session info for extending ISO-9660 filesystems
- Obtaining a Table Of Content from DVD-R[W]
@ -725,10 +727,9 @@ Finalized, appendable or overwriteable DVD-RW can be brought into blank
sequential state by command A1h BLANK with blanking type 000b "Blank the disc".
See TAO Multi-Session CD Cookbook for details about blanking.
Different from CD it seems unwise to use minimal blanking (type 001b) because
my two DVD drives do not offer the Incremental Streaming feature 0021h with
DVD-RW which have been treated this way. cdrecord and cdrskin even stall when
examining these media (exact command and cause is still to be determined).
After minimal blanking (type 001b) DVD-RW my two drives do not offer the
Incremental Streaming feature 0021h the media any more. Full blanking (000b)
brings back this feature.
(mmc5r03c.pdf 6.2)
@ -758,7 +759,7 @@ Multi-Session by the application.
LS_V Link size valid 1=true
Test Write -dummy mode for writing 0=off, 1=on
Write Type Packet/TAO/SAO/RAW 00h = Incremental (Packet)
Multi-session Wether to keep appendable 00b = finalize(growisofs DAO)
Multi-session Wether to keep appendable 00b = finalize
11b = keep appendable
Track Mode Describes frame type 5 [*1]
Data Block Type Layout of payload blocks 8 [*2]
@ -801,26 +802,70 @@ does with TAO CD. So libburn obtains the Last Track Number in Last Session
from the reply of 51h READ DISC INFORMATION requesting Data Type 000b
"Standard Disc Information".
(mmc5r03c.pdf 6.3.3.2.2 CLOSE TRACK, 6.22.3.1.)
Afterwards 5Bh CLOSE TRACK SESSION Close Function 010b with Logical Track
Multiple tracks are permissible in a single session. After all of them have
been written, 5Bh CLOSE TRACK SESSION Close Function 010b with Logical Track
Number 0 closes the session. It depends on the Multi-Session value in mode
page 05h wether the disc is finalized or stays appendable.
(mmc5r03c.pdf 6.3.3.2.3)
It has not been tested yet wether multiple tracks are permissible in a single
session.
-------------------------------------------------------------------------------
>>> DAO writing : INCOMPLETE AND YET UNEXPLORED
DAO writing :
DAO is the mode described by feature 002Fh. This feature also gives information
about capabilities for Burnfree (BUF), Test Write and DVD-RW.
(mmc5r03c.pdf 5.3.25)
Experiments with growisofs showed that the track size needs to be predicted
and may not be exceeded during the write process. (growisofs ran into SCSI
errors with piped non-ISO-9660 images and with piped ISO-9660 which have
trailing data.)
>>> DAO
DAO is the mode prescribed by feature 002Fh.
growisofs is_dao in page 05h sets Write Type to 2 "SAO". It is accompanied
by dvd_compat. Thus Multi-session is set to 0.
Speed can be influenced by B6h SET STREAMING , speed capabilities can be
inquired by ACh GET PERFORMANCE. It is advised to set only speeds and sizes
which are returned by ACh.
(mmc5r03c.pdf 6.39 SET STREAMING, 6.8 GET PERFORMANCE)
The mode page 05h to be sent :
BUFE Buffer Underrun protection 0=off, 1=on
LS_V Link size valid 0=false [*3]
Test Write -dummy mode for writing 0=off, 1=on
Write Type Packet/TAO/SAO/RAW 02h = DAO (same code as SAO)
Multi-session Wether to keep appendable 00b = finalize
Track Mode Describes frame type 5 [*1]
Data Block Type Layout of payload blocks 8 [*2]
Link Size ??? 0 [*3]
FP Fixed Packet Size Bit 0 [*3]
Packet Size 0 [*3]
(mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode)
(spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats)
[*1:]
growisofs takes the Track Mode from 52h READ TRACK INFORMATION, Address/Number
Type 1, Track 1, Track Information Block byte 5 & 0xf.
(mmc5r03.pdf 6.27)
[*2:]
8 means: 2048 byte data blocks. growisofs sets this value if Data Mode from
above 52h READ TRACK INFORMATION is 1 or Fh, which is predicted by the specs
to be always true. (If not: growisofs aborts.)
(mmc5r03.pdf 6.27.3.10)
[*3:]
Link Size, Packet Size and their companions only apply to Write Type 00h.
>>> only with DAO and leadout : minus_r_reserve_track
The session layout must be described by 53h RESERVE TRACK, RMZ=ARSV=0.
Reservation size should better already be aligned to 32 KiB. It has not been
tested yet, what happens if not enough data get written.
(mmc5r03c.pdf 6.31)
Next Writeable Address is fetched from the reply of 52h READ TRACK INFORMATION.
The reply is supposed to be 0. libburn writes full 32 kB buffers via 2Ah WRITE.
(mmc5r03c.pdf, 6.27 READ TRACK INFORMATION, 6.44 WRITE)
If the track source delivers less than the announced size then libburn pads up
by zeros.
When writing is done, it is mandatory to force the drive's buffer to media by
35h SYNCHRONIZE CACHE.
(mmc5r03c.pdf, 6.41)
No further finalization is necessary. (I.e. no 5Bh CLOSE TRACK SESSION.)
-------------------------------------------------------------------------------
@ -904,7 +949,7 @@ libburn uses Last Track in Last Session as a hint for the range of track
numbers.
(mmc5r03c.pdf 6.22)
Next step ist to iterate from 1 up to the last track number and to obtain
Next step is to iterate from 1 up to the last track number and to obtain
the according track info by 52h READ TRACK INFORMATION. Each track tells its
Session Number (LSB at byte 2, MSB at 33), its Logical Track Start Address,
its Logical Track Size, and much more which is not needed for a fake CD TOC.

Loading…
Cancel
Save