Esempio n. 1
0
        internal static Block Parse(ref ReadOnlyMemory <byte> data)
        {
            var   intRef = data;
            Block block  = new Block();

            block.Zero           = ParsePrimitive <uint>(ref intRef);
            block.BlockId        = ParsePrimitive <uint>(ref intRef);
            block.Unknown1       = ParsePrimitive <long>(ref intRef);
            block.Unknown2       = ParsePrimitive <long>(ref intRef);
            block.NumberOfRows   = ParsePrimitive <byte>(ref intRef);
            block.NextRowId      = ParsePrimitive <byte>(ref intRef);
            block.Unknown3       = ParsePrimitive <ushort>(ref intRef);
            block.RemainingBytes = ParsePrimitive <ushort>(ref intRef);
            block.DataSize       = ParsePrimitive <ushort>(ref intRef);
            block.Unknown4       = ParsePrimitive <long>(ref intRef);
            var rowData = new RowHeader[block.NumberOfRows];

            for (int i = 0; i < block.NumberOfRows; i++)
            {
                rowData[i] = RowHeader.Parse(intRef.Slice(ParsePrimitive <ushort>(data.Slice(4096 - 6 - i * 2))));
            }

            data = data.Slice(4096);

            block.Rows = rowData;

            return(block);
        }
Esempio n. 2
0
        internal static Track FromRow(RekordboxLibrary library, Internal.RowHeader row)
        {
            var internalTrack = row.ParseColumnData <Internal.Track>();

            return(new Track(row.ReadString(internalTrack.TrackName).ReadAsUtf8(),
                             internalTrack.ArtistId,
                             IOPath.Combine(IOPath.GetDirectoryName(library.Path), "../../",
                                            row.ReadString(internalTrack.DatFile).Slice(1).ReadAsUtf8())));
        }
Esempio n. 3
0
        internal static RowHeader Parse(ReadOnlyMemory <byte> data)
        {
            var       intRef = data;
            RowHeader row    = default;

            row.TableId  = ParsePrimitive <short>(ref intRef);
            row.RowIndex = ParsePrimitive <short>(ref intRef);
            row.RowData  = intRef;

            return(row);
        }
Esempio n. 4
0
        internal static Artist FromRow(RekordboxLibrary library, Internal.RowHeader row)
        {
            var internalArtist = row.ParseColumnData <Internal.Artist>();

            return(new Artist(internalArtist.ArtistId, row.ReadString(internalArtist.ArtistName).ReadAsUtf8()));
        }