Files
Aaru/DVD/PFI.cs

1206 lines
42 KiB
C#
Raw Normal View History

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