diff --git a/ChangeLog b/ChangeLog index 1e4b7ac5b..675e500a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-11-27 Natalia Portillo + + * DVD/PFI.cs: + Added PFI information from all ECMA standards. + 2015-11-24 Natalia Portillo * SCSI/MMC/OPW.cs: diff --git a/DVD/PFI.cs b/DVD/PFI.cs index 4cab0d38e..b248f897b 100644 --- a/DVD/PFI.cs +++ b/DVD/PFI.cs @@ -53,7 +53,22 @@ namespace DiscImageChef.Decoders.DVD /// T10/1675-D revision 2c /// T10/1675-D revision 4 /// T10/1836-D revision 2g - /// ECMA 365 + /// ECMA 267: 120 mm DVD - Read-Only Disk + /// ECMA 268: 80 mm DVD - Read-Only Disk + /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) + /// ECMA 274: Data Interchange on 120 mm Optical Disk using +RW Format - Capacity: 3,0 Gbytes and 6,0 Gbytes + /// ECMA 279: 80 mm (1,23 Gbytes per side) and 120 mm (3,95 Gbytes per side) DVD-Recordable Disk (DVD-R) + /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) + /// ECMA 337: Data Interchange on 120 mm and 80 mm Optical Disk using +RW Format - Capacity: 4,7 and 1,46 Gbytes per Side + /// ECMA 338: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Re-recordable Disk (DVD-RW) + /// ECMA 349: Data Interchange on 120 mm and 80 mm Optical Disk using +R Format - Capacity: 4,7 and 1,46 Gbytes per Side + /// ECMA 359: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Recordable Disk (DVD-R) + /// ECMA 364: Data Interchange on 120 mm and 80 mm Optical Disk using +R DL Format - Capacity 8,55 and 2,66 Gbytes per Side + /// ECMA 365: Data Interchange on 60 mm Read-Only ODC - Capacity: 1,8 Gbytes (UMD™) + /// ECMA 371: Data Interchange on 120 mm and 80 mm Optical Disk using +RW HS Format - Capacity 4,7 and 1,46 Gbytes per side + /// ECMA 374: Data Interchange on 120 mm and 80 mm Optical Disk using +RW DL Format - Capacity 8,55 and 2,66 Gbytes per side + /// ECMA 382: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Recordable Disk for Dual Layer (DVD-R for DL) + /// ECMA 384: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Re-recordable Disk for Dual Layer (DVD-RW for DL) /// public static class PFI { @@ -74,11 +89,13 @@ namespace DiscImageChef.Decoders.DVD /// Reserved /// public byte Reserved2; + + #region PFI common to all /// /// Byte 4, bits 7 to 4 /// Disk category field /// - public byte DiskCategory; + public DVDCategory DiskCategory; /// /// Byte 4, bits 3 to 0 /// Media version @@ -88,12 +105,12 @@ namespace DiscImageChef.Decoders.DVD /// Byte 5, bits 7 to 4 /// 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values /// - public byte DiscSize; + public DVDSize DiscSize; /// /// Byte 5, bits 3 to 0 /// Maximum data rate /// - public byte MaximumRate; + public DVDMaxTransfer MaximumRate; /// /// Byte 6, bit 7 /// Reserved @@ -113,17 +130,17 @@ namespace DiscImageChef.Decoders.DVD /// Byte 6, bits 3 to 0 /// Layer type /// - public byte LayerType; + public DVDLayerTypes LayerType; /// /// Byte 7, bits 7 to 4 /// Linear density field /// - public byte LinearDensity; + public DVDLinearDensity LinearDensity; /// /// Byte 7, bits 3 to 0 /// Track density field /// - public byte TrackDensity; + public DVDTrackDensity TrackDensity; /// /// Bytes 8 to 11 /// PSN where Data Area starts @@ -149,116 +166,1040 @@ namespace DiscImageChef.Decoders.DVD /// Reserved /// public byte Reserved4; + #endregion PFI common to all + + #region UMD PFI /// /// Bytes 21 to 22 /// UMD only, media attribute, application-defined, part of media specific in rest of discs /// public UInt16 MediaAttribute; - /// - /// Bytes 21 to 2051, set to zeroes in UMD (at least according to ECMA). - /// Media specific - /// - public byte[] MediaSpecific; - } + #endregion UMD PFI - public struct PhysicalFormatInformationForWritables - { + #region DVD-RAM PFI /// - /// Bytes 0 to 1 - /// Data length + /// Byte 36 + /// Disc type, respecting case recordability /// - public UInt16 DataLength; + public DVDRAMDiscType DiscType; + #region DVD-RAM PFI + + #region DVD-RAM PFI, Version 0001b /// - /// Byte 2 - /// Reserved + /// Byte 52 + /// Byte 504 in Version 0110b + /// Linear velocity, in tenths of m/s /// - public byte Reserved1; + public byte Velocity; /// - /// Byte 3 - /// Reserved + /// Byte 53 + /// Byte 505 in Version 0110b + /// Read power on disk surface, tenths of mW /// - public byte Reserved2; + public byte ReadPower; /// - /// Byte 4, bits 7 to 4 - /// Disk category field + /// Byte 54 + /// Byte 507 in Version 0110b + /// Peak power on disk surface for recording land tracks /// - public byte DiskCategory; + public byte PeakPower; /// - /// Byte 4, bits 3 to 0 - /// Media version + /// Byte 55 + /// Bias power on disk surface for recording land tracks /// - public byte PartVersion; + public byte BiasPower; /// - /// Byte 5, bits 7 to 4 - /// 120mm if 0, 80mm if 1 + /// Byte 56 + /// First pulse starting time for recording on land tracks, ns /// - public byte DiscSize; + public byte FirstPulseStart; /// - /// Byte 5, bits 3 to 0 - /// Maximum data rate + /// Byte 57 + /// Byte 515 in Version 0110b + /// First pulse ending time for recording on land tracks /// - public byte MaximumRate; + public byte FirstPulseEnd; /// - /// Byte 6, bit 7 - /// Reserved + /// Byte 58 + /// Byte 518 in Version 0110b + /// Multiple-pulse duration time for recording on land tracks /// - public bool Reserved3; + public byte MultiplePulseDuration; /// - /// Byte 6, bits 6 to 5 - /// Number of layers + /// Byte 59 + /// Byte 519 in Version 0110b + /// Last pulse starting time for recording on land tracks /// - public byte Layers; + public byte LastPulseStart; /// - /// Byte 6, bit 4 - /// Track path + /// Byte 60 + /// Las pulse ending time for recording on land tracks /// - public bool TrackPath; + public byte LastPulseEnd; /// - /// Byte 6, bits 3 to 0 - /// Layer type + /// Byte 61 + /// Bias power duration for recording on land tracks /// - public byte LayerType; + public byte BiasPowerDuration; /// - /// Byte 7, bits 7 to 4 - /// Linear density field + /// Byte 62 + /// Byte 511 on Version 0110b + /// Peak power for recording on groove tracks /// - public byte LinearDensity; + public byte PeakPowerGroove; /// - /// Byte 7, bits 3 to 0 - /// Track density field + /// Byte 63 + /// Bias power for recording on groove tracks /// - public byte TrackDensity; + public byte BiasPowerGroove; /// - /// Bytes 8 to 11 - /// PSN where Data Area starts + /// Byte 64 + /// First pulse starting time on groove tracks /// - public UInt32 DataAreaStartPSN; + public byte FirstPulseStartGroove; /// - /// Bytes 12 to 15 - /// PSN where Data Area ends + /// Byte 65 + /// First pulse ending time on groove tracks /// - public UInt32 DataAreaEndPSN; + public byte FirstPulseEndGroove; /// - /// Bytes 16 to 19 - /// PSN where Data Area ends in Layer 0 + /// Byte 66 + /// Multiple-pulse duration time on groove tracks /// - public UInt32 Layer0EndPSN; + public byte MultiplePulseDurationGroove; /// - /// Byte 20, bit 7 - /// True if BCA exists + /// Byte 67 + /// Last pulse starting time on groove tracks /// - public bool BCA; + public byte LastPulseStartGroove; /// - /// Byte 20, bits 6 to 0 - /// Reserved + /// Byte 68 + /// Last pulse ending time on groove tracks /// - public byte Reserved4; + public byte LastPulseEndGroove; /// - /// Bytes 21 to 2051 - /// Media specific, content defined in each specification + /// Byte 69 + /// Bias power duration for recording on groove tracks /// - public byte[] MediaSpecific; + public byte BiasPowerDurationGroove; + #endregion DVD-RAM PFI, Version 0001b + + #region DVD-R PFI, DVD-RW PFI + /// + /// Bytes 36 to 39 + /// Sector number of the first sector of the current Border Out + /// + public UInt32 CurrentBorderOutSector; + /// + /// Bytes 40 to 43 + /// Sector number of the first sector of the next Border In + /// + public UInt32 NextBorderInSector; + #endregion DVD-R PFI, DVD-RW PFI + + #region DVD+RW PFI + /// + /// Byte 36 + /// Linear velocities + /// 0 = CLV from 4,90 m/s to 6,25 m/s + /// 1 = CAV from 3,02 m/s to 7,35 m/s + /// + public UInt32 RecordingVelocity; + /// + /// Byte 37 + /// Maximum read power in milliwatts at maximum velocity + /// mW = 20 * (value - 1) + /// + public UInt32 ReadPowerMaxVelocity; + /// + /// Byte 38 + /// Indicative value of Ptarget in mW at maximum velocity + /// + public UInt32 PIndMaxVelocity; + /// + /// Byte 39 + /// Peak power multiplication factor at maximum velocity + /// + public UInt32 PMaxVelocity; + /// + /// Byte 40 + /// Bias1/write power ration at maximum velocity + /// + public UInt32 E1MaxVelocity; + /// + /// Byte 41 + /// Bias2/write power ration at maximum velocity + /// + public UInt32 E2MaxVelocity; + /// + /// Byte 42 + /// Target value for γ, γtarget at the maximum velocity + /// + public UInt32 YTargetMaxVelocity; + /// + /// Byte 43 + /// Maximum read power in milliwatts at reference velocity (4,90 m/s) + /// mW = 20 * (value - 1) + /// + public UInt32 ReadPowerRefVelocity; + /// + /// Byte 44 + /// Indicative value of Ptarget in mW at reference velocity (4,90 m/s) + /// + public UInt32 PIndRefVelocity; + /// + /// Byte 45 + /// Peak power multiplication factor at reference velocity (4,90 m/s) + /// + public UInt32 PRefVelocity; + /// + /// Byte 46 + /// Bias1/write power ration at reference velocity (4,90 m/s) + /// + public UInt32 E1RefVelocity; + /// + /// Byte 47 + /// Bias2/write power ration at reference velocity (4,90 m/s) + /// + public UInt32 E2RefVelocity; + /// + /// Byte 48 + /// Target value for γ, γtarget at the reference velocity (4,90 m/s) + /// + public UInt32 YTargetRefVelocity; + /// + /// Byte 49 + /// Maximum read power in milliwatts at minimum velocity + /// mW = 20 * (value - 1) + /// + public UInt32 ReadPowerMinVelocity; + /// + /// Byte 50 + /// Indicative value of Ptarget in mW at minimum velocity + /// + public UInt32 PIndMinVelocity; + /// + /// Byte 51 + /// Peak power multiplication factor at minimum velocity + /// + public UInt32 PMinVelocity; + /// + /// Byte 52 + /// Bias1/write power ration at minimum velocity + /// + public UInt32 E1MinVelocity; + /// + /// Byte 53 + /// Bias2/write power ration at minimum velocity + /// + public UInt32 E2MinVelocity; + /// + /// Byte 54 + /// Target value for γ, γtarget at the minimum velocity + /// + public UInt32 YTargetMinVelocity; + #endregion DVD+RW PFI + + #region DVD-RAM PFI, version 0110b + /// + /// Byte 506, bit 7 + /// Mode of adaptative write pulse control + /// + public bool AdaptativeWritePulseControlFlag; + /// + /// Byte 508 + /// Bias power 1 on disk surface for recording land tracks + /// + public byte BiasPower1; + /// + /// Byte 509 + /// Bias power 2 on disk surface for recording land tracks + /// + public byte BiasPower2; + /// + /// Byte 510 + /// Bias power 3 on disk surface for recording land tracks + /// + public byte BiasPower3; + /// + /// Byte 512 + /// Bias power 1 on disk surface for recording groove tracks + /// + public byte BiasPower1Groove; + /// + /// Byte 513 + /// Bias power 2 on disk surface for recording groove tracks + /// + public byte BiasPower2Groove; + /// + /// Byte 514 + /// Bias power 3 on disk surface for recording groove tracks + /// + public byte BiasPower3Groove; + /// + /// Byte 516 + /// First pulse duration + /// + public byte FirstPulseDuration; + /// + /// Byte 520 + /// Bias power 2 duration on land tracks at Velocity 1 + /// + public byte BiasPower2Duration; + /// + /// Byte 521 + /// First pulse start time, at Mark 3T and Leading Space 3T + /// + public byte FirstPulseStart3TSpace3T; + /// + /// Byte 522 + /// First pulse start time, at Mark 4T and Leading Space 3T + /// + public byte FirstPulseStart4TSpace3T; + /// + /// Byte 523 + /// First pulse start time, at Mark 5T and Leading Space 3T + /// + public byte FirstPulseStart5TSpace3T; + /// + /// Byte 524 + /// First pulse start time, at Mark >5T and Leading Space 3T + /// + public byte FirstPulseStartSpace3T; + /// + /// Byte 525 + /// First pulse start time, at Mark 3T and Leading Space 4T + /// + public byte FirstPulseStart3TSpace4T; + /// + /// Byte 526 + /// First pulse start time, at Mark 4T and Leading Space 4T + /// + public byte FirstPulseStart4TSpace4T; + /// + /// Byte 527 + /// First pulse start time, at Mark 5T and Leading Space 4T + /// + public byte FirstPulseStart5TSpace4T; + /// + /// Byte 528 + /// First pulse start time, at Mark >5T and Leading Space 4T + /// + public byte FirstPulseStartSpace4T; + /// + /// Byte 529 + /// First pulse start time, at Mark 3T and Leading Space 5T + /// + public byte FirstPulseStart3TSpace5T; + /// + /// Byte 530 + /// First pulse start time, at Mark 4T and Leading Space 5T + /// + public byte FirstPulseStart4TSpace5T; + /// + /// Byte 531 + /// First pulse start time, at Mark 5T and Leading Space 5T + /// + public byte FirstPulseStart5TSpace5T; + /// + /// Byte 532 + /// First pulse start time, at Mark >5T and Leading Space 5T + /// + public byte FirstPulseStartSpace5T; + /// + /// Byte 533 + /// First pulse start time, at Mark 3T and Leading Space >5T + /// + public byte FirstPulseStart3TSpace; + /// + /// Byte 534 + /// First pulse start time, at Mark 4T and Leading Space >5T + /// + public byte FirstPulseStart4TSpace; + /// + /// Byte 535 + /// First pulse start time, at Mark 5T and Leading Space >5T + /// + public byte FirstPulseStart5TSpace; + /// + /// Byte 536 + /// First pulse start time, at Mark >5T and Leading Space >5T + /// + public byte FirstPulseStartSpace; + /// + /// Byte 537 + /// First pulse start time, at Mark 3T and Trailing Space 3T + /// + public byte FirstPulse3TStartTSpace3T; + /// + /// Byte 538 + /// First pulse start time, at Mark 4T and Trailing Space 3T + /// + public byte FirstPulse4TStartTSpace3T; + /// + /// Byte 539 + /// First pulse start time, at Mark 5T and Trailing Space 3T + /// + public byte FirstPulse5TStartTSpace3T; + /// + /// Byte 540 + /// First pulse start time, at Mark >5T and Trailing Space 3T + /// + public byte FirstPulseStartTSpace3T; + /// + /// Byte 541 + /// First pulse start time, at Mark 3T and Trailing Space 4T + /// + public byte FirstPulse3TStartTSpace4T; + /// + /// Byte 542 + /// First pulse start time, at Mark 4T and Trailing Space 4T + /// + public byte FirstPulse4TStartTSpace4T; + /// + /// Byte 543 + /// First pulse start time, at Mark 5T and Trailing Space 4T + /// + public byte FirstPulse5TStartTSpace4T; + /// + /// Byte 544 + /// First pulse start time, at Mark >5T and Trailing Space 4T + /// + public byte FirstPulseStartTSpace4T; + /// + /// Byte 545 + /// First pulse start time, at Mark 3T and Trailing Space 5T + /// + public byte FirstPulse3TStartTSpace5T; + /// + /// Byte 546 + /// First pulse start time, at Mark 4T and Trailing Space 5T + /// + public byte FirstPulse4TStartTSpace5T; + /// + /// Byte 547 + /// First pulse start time, at Mark 5T and Trailing Space 5T + /// + public byte FirstPulse5TStartTSpace5T; + /// + /// Byte 548 + /// First pulse start time, at Mark >5T and Trailing Space 5T + /// + public byte FirstPulseStartTSpace5T; + /// + /// Byte 549 + /// First pulse start time, at Mark 3T and Trailing Space >5T + /// + public byte FirstPulse3TStartTSpace; + /// + /// Byte 550 + /// First pulse start time, at Mark 4T and Trailing Space >5T + /// + public byte FirstPulse4TStartTSpace; + /// + /// Byte 551 + /// First pulse start time, at Mark 5T and Trailing Space >5T + /// + public byte FirstPulse5TStartTSpace; + /// + /// Byte 552 + /// First pulse start time, at Mark >5T and Trailing Space >5T + /// + public byte FirstPulseStartTSpace; + /// + /// Bytes 553 to 600 + /// Disk manufacturer's name, space-padded + /// + public string DiskManufacturer; + /// + /// Bytes 601 to 616 + /// Disk manufacturer's supplementary information + /// + public string DiskManufacturerSupplementary; + /// + /// Bytes 617 to 627 + /// Write power control parameters + /// + public byte[] WritePowerControlParams; + /// + /// Byte 619 + /// Ratio of peak power for land tracks to threshold peak power for land tracks + /// + public byte PowerRatioLandThreshold; + /// + /// Byte 620 + /// Target asymmetry + /// + public byte TargetAsymmetry; + /// + /// Byte 621 + /// Temporary peak power + /// + public byte TemporaryPeakPower; + /// + /// Byte 622 + /// Temporary bias power 1 + /// + public byte TemporaryBiasPower1; + /// + /// Byte 623 + /// Temporary bias power 2 + /// + public byte TemporaryBiasPower2; + /// + /// Byte 624 + /// Temporary bias power 3 + /// + public byte TemporaryBiasPower3; + /// + /// Byte 625 + /// Ratio of peak power for groove tracks to threshold peak power for groove tracks + /// + public byte PowerRatioGrooveThreshold; + /// + /// Byte 626 + /// Ratio of peak power for land tracks to threshold 6T peak power for land tracks + /// + public byte PowerRatioLandThreshold6T; + /// + /// Byte 627 + /// Ratio of peak power for groove tracks to threshold 6T peak power for groove tracks + /// + public byte PowerRatioGrooveThreshold6T; + #endregion DVD-RAM PFI, version 0110b + + #region DVD+RW PFI and DVD+R PFI + /// + /// Byte 20, bit 6 + /// If set indicates data zone contains extended information for VCPS + /// + public bool VCPS; + /// + /// Byte 21 + /// Indicates restricted usage disk + /// + public byte ApplicationCode; + /// + /// Byte 22 + /// Bitmap of extended information block presence + /// + public byte ExtendedInformation; + /// + /// Bytes 23 to 30 + /// Disk manufacturer ID, null-padded + /// + public string DiskManufacturerID; + /// + /// Bytes 31 to 33 + /// Media type ID, null-padded + /// + public string MediaTypeID; + /// + /// Byte 34 + /// Product revision number + /// + public byte ProductRevision; + /// + /// Byte 35 + /// Indicates how many bytes, up to 63, are used in ADIP's PFI + /// + public byte PFIUsedInADIP; + #region DVD+RW PFI and DVD+R PFI + + #region DVD+RW PFI, version 0010b + /// + /// Byte 55 + /// Ttop first pulse duration + /// + public byte FirstPulseDuration; + /// + /// Byte 56 + /// Tmp multi pulse duration + /// + public byte MultiPulseDuration; + /// + /// Byte 57 + /// dTtop first pulse lead time + /// + public byte FirstPulseLeadTime; + /// + /// Byte 58 + /// dTera erase lead time at reference velocity + /// + public byte EraseLeadTimeRefVelocity; + /// + /// Byte 59 + /// dTera erase lead time at upper velocity + /// + public byte EraseLeadTimeUppVelocity; + #endregion DVD+RW PFI, version 0010b + + #region DVD+R PFI version 0001b and DVD+R DL PFI version 0001b + /// + /// Byte 36 + /// Primary recording velocity for the basic write strategy + /// + public byte PrimaryVelocity; + /// + /// Byte 37 + /// Upper recording velocity for the basic write strategy + /// + public byte UpperVelocity; + /// + /// Byte 38 + /// Wavelength λIND + /// + public byte Wavelength; + /// + /// Byte 39 + /// Normalized write power dependency on wavelength (dP/dλ)/(PIND/λIND) + /// + public byte NormalizedPowerDependency; + /// + /// Byte 40 + /// Maximum read power at primary velocity + /// + public byte MaximumPowerAtPrimaryVelocity; + /// + /// Byte 41 + /// Pind at primary velocity + /// + public byte PindAtPrimaryVelocity; + /// + /// Byte 42 + /// βtarget at primary velocity + /// + public byte BtargetAtPrimaryVelocity; + /// + /// Byte 43 + /// Maximum read power at upper velocity + /// + public byte MaximumPowerAtUpperVelocity; + /// + /// Byte 44 + /// Pind at primary velocity + /// + public byte PindAtUpperVelocity; + /// + /// Byte 45 + /// βtarget at upper velocity + /// + public byte BtargetAtUpperVelocity; + /// + /// Byte 46 + /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Primary velocity + /// + public byte FirstPulseDuration4TPrimaryVelocity; + /// + /// Byte 47 + /// Ttop (=3T) first pulse duration for cm∗ =3T at Primary velocity + /// + public byte FirstPulseDuration3TPrimaryVelocity; + /// + /// Byte 48 + /// Tmp multi pulse duration at Primary velocity + /// + public byte MultiPulseDurationPrimaryVelocity; + /// + /// Byte 49 + /// Tlp last pulse duration at Primary velocity + /// + public byte LastPulseDurationPrimaryVelocity; + /// + /// Byte 50 + /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Primary velocity + /// + public byte FirstPulseLeadTime4TPrimaryVelocity; + /// + /// Byte 51 + /// dTtop (=3T) first pulse lead time for cm∗ =3T at Primary velocity + /// + public byte FirstPulseLeadTime3TPrimaryVelocity; + /// + /// Byte 52 + /// dTle first pulse leading edge shift for ps∗ =3T at Primary velocity + /// + public byte FirstPulseLeadingEdgePrimaryVelocity; + /// + /// Byte 53 + /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Upper velocity + /// + public byte FirstPulseDuration4TUpperVelocity; + /// + /// Byte 54 + /// Ttop (=3T) first pulse duration for cm∗ =3T at Upper velocity + /// + public byte FirstPulseDuration3TUpperVelocity; + /// + /// Byte 55 + /// Tmp multi pulse duration at Upper velocity + /// + public byte MultiPulseDurationUpperVelocity; + /// + /// Byte 56 + /// Tlp last pulse duration at Upper velocity + /// + public byte LastPulseDurationUpperVelocity; + /// + /// Byte 57 + /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Upper velocity + /// + public byte FirstPulseLeadTime4TUpperVelocity; + /// + /// Byte 58 + /// dTtop (=3T) first pulse lead time for cm∗ =3T at Upper velocity + /// + public byte FirstPulseLeadTime3TUpperVelocity; + /// + /// Byte 59 + /// dTle first pulse leading edge shift for ps∗ =3T at Upper velocity + /// + public byte FirstPulseLeadingEdgeUpperVelocity; + #endregion DVD+R PFI version 0001b and DVD+R DL PFI version 0001b + + #region DVD+R DL PFI version 0001b + /// + /// Byte 34, bits 7 to 6 + /// + public DVDLayerStructure LayerStructure; + #endregion DVD+R DL PFI version 0001b + + #region DVD+RW DL PFI + /// + /// Byte 36 + /// Primary recording velocity for the basic write strategy + /// + public byte PrimaryVelocity; + /// + /// Byte 37 + /// Maximum read power at Primary velocity + /// + public byte MaxReadPowerPrimaryVelocity; + /// + /// Byte 38 + /// PIND at Primary velocity + /// + public byte PindPrimaryVelocity; + /// + /// Byte 39 + /// ρ at Primary velocity + /// + public byte PPrimaryVelocity; + /// + /// Byte 40 + /// ε1 at Primary velocity + /// + public byte E1PrimaryVelocity; + /// + /// Byte 41 + /// ε2 at Primary velocity + /// + public byte E2PrimaryVelocity; + /// + /// Byte 42 + /// γtarget at Primary velocity + /// + public byte YtargetPrimaryVelocity; + /// + /// Byte 43 + /// β optimum at Primary velocity + /// + public byte BOptimumPrimaryVelocity; + /// + /// Byte 46 + /// Ttop first pulse duration + /// + public byte TFirstPulseDuration; + /// + /// Byte 47 + /// Tmp multi pulse duration + /// + public byte TMultiPulseDuration; + /// + /// Byte 48 + /// dTtop first pulse lead/lag time for any runlength ≥ 4T + /// + public byte FirstPulseLeadTimeAnyRun; + /// + /// Byte 49 + /// dTtop,3 first pulse lead/lag time for runlengths = 3T + /// + public byte FirstPulseLeadTimeRun3T; + /// + /// Byte 50 + /// dTlp last pulse lead/lag time for any runlength ≥ 5T + /// + public byte LastPulseLeadTimeAnyRun; + /// + /// Byte 51 + /// dTlp,3 last pulse lead/lag time for runlengths = 3T + /// + public byte LastPulseLeadTime3T; + /// + /// Byte 52 + /// dTlp,4 last pulse lead/lag time for runlengths = 4T + /// + public byte LastPulseLeadTime4T; + /// + /// Byte 53 + /// dTera erase lead/lag time when preceding mark length ≥ 5T + /// + public byte ErasePulseLeadTimeAny; + /// + /// Byte 54 + /// dTera,3 erase lead/lag time when preceding mark length = 3T + /// + public byte ErasePulseLeadTime3T; + /// + /// Byte 55 + /// dTera,4 erase lead/lag time when preceding mark length = 4T + /// + public byte ErasePulseLeadTime4T; + #endregion DVD+RW DL PFI + + #region DVD-R DL PFI and DVD-RW DL PFI + /// + /// Byte 21 + /// Maximum recording speed + /// + public DVDRecordingSpeed MaxRecordingSpeed; + /// + /// Byte 22 + /// Minimum recording speed + /// + public DVDRecordingSpeed MinRecordingSpeed; + /// + /// Byte 23 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed1; + /// + /// Byte 24 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed2; + /// + /// Byte 25 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed3; + /// + /// Byte 26 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed4; + /// + /// Byte 27 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed5; + /// + /// Byte 28 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed6; + /// + /// Byte 29 + /// Another recording speed + /// + public DVDRecordingSpeed RecordingSpeed7; + /// + /// Byte 30 + /// Class + /// + public byte Class; + /// + /// Byte 31 + /// Extended version. 0x30 = ECMA-382, 0x20 = ECMA-384 + /// + public byte ExtendedVersion; + /// + /// Byte 36 + /// Start sector number of current RMD in Extra Border Zone + /// + public UInt32 CurrentRMDExtraBorderPSN; + /// + /// Byte 40 + /// Start sector number of Physical Format Information blocks in Extra Border Zone + /// + public UInt32 PFIExtraBorderPSN; + /// + /// Byte 44, bit 0 + /// If NOT set, Control Data Zone is pre-recorded + /// + public bool PreRecordedControlDataInv; + /// + /// Byte 44 bit 1 + /// Lead-in Zone is pre-recorded + /// + public bool PreRecordedLeadIn; + /// + /// Byte 44 bit 3 + /// Lead-out Zone is pre-recorded + /// + public bool PreRecordedLeadOut; + /// + /// Byte 45 bits 0 to 3 + /// AR characteristic of LPP on Layer 1 + /// + public byte ARCharLayer1; + /// + /// Byte 45 bits 4 to 7 + /// Tracking polarity on Layer 1 + /// + public byte TrackPolarityLayer1; + #endregion DVD-R DL PFI and DVD-RW DL PFI } } + + public enum DVDCategory + { + /// + /// DVD-ROM. Version 1 is ECMA-267 and ECMA-268. + /// + DVDROM = 0, + /// + /// DVD-RAM. Version 1 is ECMA-272. Version 6 is ECMA-330. + /// + DVDRAM = 1, + /// + /// DVD-R. Version 1 is ECMA-279. Version 5 is ECMA-359. Version 6 is ECMA-832. + /// + DVDR = 2, + /// + /// DVD-RW. Version 2 is ECMA-338. Version 3 is ECMA-384. + /// + DVDRW = 3, + /// + /// UMD. Version 0 is ECMA-365. + /// + UMD = 8, + /// + /// DVD+RW. Version 1 is ECMA-274. Version 2 is ECMA-337. Version 3 is ECMA-371. + /// + DVDPRW = 9, + /// + /// DVD+R. Version 1 is ECMA-349. + /// + DVDPR = 10, + /// + /// DVD+RW DL. Version 1 is ECMA-374. + /// + DVDPRWDL = 13, + /// + /// DVD+R DL. Version 1 is ECMA-364. + /// + DVDPRDL = 14 + } + + public enum DVDSize + { + /// + /// 120 mm + /// + OneTwenty = 0, + /// + /// 80 mm + /// + Eighty = 1 + } + + public enum DVDMaxTransfer + { + /// + /// 2,52 Mbit/s + /// + Two = 0, + /// + /// 5,04 Mbit/s + /// + Five = 1, + /// + /// 10,08 Mbit/s + /// + Ten = 2, + /// + /// No maximum transfer rate + /// + Unspecified = 15 + } + + public enum DVDLayerTypes + { + ReadOnly = 1, + Recordable = 2, + Rewritable = 4 + } + + public enum DVDLinearDensity + { + /// + /// 0,133 μm + /// + One33 = 0, + /// + /// 0,147 μm + /// + One47 = 1, + /// + /// 0,205 μm to 0,218 μm + /// + Twenty5 = 2, + /// + /// 0,140 μm to 0,148 μm + /// + One40 = 4, + /// + /// 0,176 μm + /// + One76 = 8 + } + + public enum DVDTrackDensity + { + /// + /// 0,74 μm + /// + Seven4 = 0, + /// + /// 0,80 μm + /// + Eighty = 1, + /// + /// 0,615 μm + /// + Six15 = 2, + } + + public enum DVDRAMDiscType + { + /// + /// Shall not be recorded without a case + /// + Cased = 0, + /// + /// May be recorded without a case or within one + /// + Uncased = 1 + } + + public enum DVDLayerStructure + { + Unspecified = 0, + InvertedStack = 1, + TwoP = 2, + Reserved = 3 + } + + public enum DVDRecordingSpeed + { + None = 0 + Two = 0, + Four = 0x10, + Six = 0x20, + Eight = 0x30, + Ten = 0x40, + Twelve = 0x50 + } }