// /*************************************************************************** // The Disc Image Chef // ---------------------------------------------------------------------------- // // Filename : Layers.cs // Author(s) : Natalia Portillo // // Component : Device structures decoders. // // --[ Description ] ---------------------------------------------------------- // // Records DVD layers structures. // // --[ License ] -------------------------------------------------------------- // // This library is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; either version 2.1 of the // License, or (at your option) any later version. // // This library 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 // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, see . // // ---------------------------------------------------------------------------- // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ namespace DiscImageChef.Decoders.DVD { /// /// 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 365 /// public static class Layers { public struct LayerCapacity { /// /// Bytes 0 to 1 /// Data length /// public ushort DataLength; /// /// Byte 2 /// Reserved /// public byte Reserved1; /// /// Byte 3 /// Reserved /// public byte Reserved2; /// /// Byte 4, bit 7 /// If set, L0 capacity is immutable /// public bool InitStatus; /// /// Byte 4, bits 6 to 0 /// Reserved /// public byte Reserved3; /// /// Byte 5 /// Reserved /// public byte Reserved4; /// /// Byte 6 /// Reserved /// public byte Reserved5; /// /// Byte 7 /// Reserved /// public byte Reserved6; /// /// Byte 8 to 11 /// L0 Data Area Capacity /// public uint Capacity; } public struct MiddleZoneStartAddress { /// /// Bytes 0 to 1 /// Data length = 10 /// public ushort DataLength; /// /// Byte 2 /// Reserved /// public byte Reserved1; /// /// Byte 3 /// Reserved /// public byte Reserved2; /// /// Byte 4, bit 7 /// If set, L0 shifter middle area is immutable /// public bool InitStatus; /// /// Byte 4, bits 6 to 0 /// Reserved /// public byte Reserved3; /// /// Byte 5 /// Reserved /// public byte Reserved4; /// /// Byte 6 /// Reserved /// public byte Reserved5; /// /// Byte 7 /// Reserved /// public byte Reserved6; /// /// Byte 8 to 11 /// Start LBA of Shifted Middle Area on L0 /// public uint ShiftedMiddleAreaStartAddress; } public struct JumpIntervalSize { /// /// Bytes 0 to 1 /// Data length = 10 /// public ushort DataLength; /// /// Byte 2 /// Reserved /// public byte Reserved1; /// /// Byte 3 /// Reserved /// public byte Reserved2; /// /// Byte 4 /// Reserved /// public byte Reserved3; /// /// Byte 5 /// Reserved /// public byte Reserved4; /// /// Byte 6 /// Reserved /// public byte Reserved5; /// /// Byte 7 /// Reserved /// public byte Reserved6; /// /// Byte 8 to 11 /// Jump Interval size for the Regular Interval Layer Jump /// public uint Size; } public struct ManualLayerJumpAddress { /// /// Bytes 0 to 1 /// Data length = 10 /// public ushort DataLength; /// /// Byte 2 /// Reserved /// public byte Reserved1; /// /// Byte 3 /// Reserved /// public byte Reserved2; /// /// Byte 4 /// Reserved /// public byte Reserved3; /// /// Byte 5 /// Reserved /// public byte Reserved4; /// /// Byte 6 /// Reserved /// public byte Reserved5; /// /// Byte 7 /// Reserved /// public byte Reserved6; /// /// Byte 8 to 11 /// LBA for the manual layer jump /// public uint LBA; } } }