Ejemplo n.º 1
0
        public string GetCDDBQuerySegment()
        {
            int numTracks = this.GetNumTracks();

            if (numTracks == -1)
            {
                throw new Exception("Unable to retrieve the number of tracks");
            }
            string str   = numTracks.ToString();
            int    num3  = 0;
            int    num4  = 0;
            double num5  = 0.0;
            int    num6  = 0;
            int    track = 0;

            while (track < numTracks)
            {
                num5  = (((this.Toc.TrackData[track].Address_1 * 60) + this.Toc.TrackData[track].Address_2) * 0x4b) + this.Toc.TrackData[track].Address_3;
                num4 += this.cddb_sum((this.Toc.TrackData[track].Address_1 * 60) + this.Toc.TrackData[track].Address_2);
                num6 += this.GetSeconds(track);
                str   = str + " " + string.Format("{0}", num5);
                track++;
            }
            int num7 = (this.Toc.TrackData[track].Address_1 * 60) + this.Toc.TrackData[track].Address_2;

            str = str + " " + num7;
            Kernel32.TRACK_DATA track_data  = this.Toc.TrackData[numTracks];
            Kernel32.TRACK_DATA track_data2 = this.Toc.TrackData[0];
            num3 = ((track_data.Address_1 * 60) + track_data.Address_2) - ((track_data2.Address_1 * 60) + track_data2.Address_2);
            ulong num8 = (ulong)((((num4 % 0xff) << 0x18) | (num3 << 8)) | numTracks);

            return(str);
        }
Ejemplo n.º 2
0
 public bool IsAudioTrack(int track)
 {
     if ((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack))
     {
         Kernel32.TRACK_DATA track_data = this.Toc.TrackData[track - 1];
         return((track_data.Control & 4) == 0);
     }
     return(false);
 }
Ejemplo n.º 3
0
 protected int GetStartSector(int track)
 {
     if ((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack))
     {
         Kernel32.TRACK_DATA track_data = this.Toc.TrackData[track - 1];
         return(((((track_data.Address_1 * 60) * 0x4b) + (track_data.Address_2 * 0x4b)) + track_data.Address_3) - 150);
     }
     return(-1);
 }
Ejemplo n.º 4
0
 protected int GetEndSector2(int track)
 {
     if ((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack))
     {
         Kernel32.TRACK_DATA track_data = this.Toc.TrackData[track];
         return((((track_data.Address_1 * 60) * 0x4b) + (track_data.Address_2 * 0x4b)) - 0x97);
     }
     return(-1);
 }
Ejemplo n.º 5
0
        public string GetCDDBDiskID()
        {
            int numTracks = GetNumTracks();

            if (numTracks == -1)
            {
                throw new Exception("Unable to retrieve the number of tracks, Cannot calculate DiskID.");
            }

            string postfix = numTracks.ToString();

            int i, t = 0, n = 0;

            double ofs = 0;

            int secs = 0;

            /* For backward compatibility this algorithm must not change */
            i = 0;

            while (i < numTracks)
            {
                Console.WriteLine("Track {0}: {1}:{2}", i, GetSeconds(i) / 60, GetSeconds(i) % 60);

                ofs      = (((Toc.TrackData[i].Address_1 * 60) + Toc.TrackData[i].Address_2) * 75) + Toc.TrackData[i].Address_3;
                n        = n + cddb_sum((Toc.TrackData[i].Address_1 * 60) + Toc.TrackData[i].Address_2);
                secs    += GetSeconds(i);
                postfix += " " + string.Format("{0}", ofs);

                i++;
            }


            int numSecs = Toc.TrackData[i].Address_1 * 60 + Toc.TrackData[i].Address_2;

            Console.WriteLine("n = {0}, numSecs = {1}, secs = {2}", n, numSecs, secs);

            postfix += " " + numSecs;
            Kernel32.TRACK_DATA last  = Toc.TrackData[numTracks];
            Kernel32.TRACK_DATA first = Toc.TrackData[0];

            t = ((last.Address_1 * 60) + last.Address_2) -
                ((first.Address_1 * 60) + first.Address_2);

            ulong lDiscId = (((uint)n % 0xff) << 24 | (uint)t << 8 | (uint)numTracks);

            string sDiscId = String.Format("{0:x8}", lDiscId);

            return(sDiscId);
        }
Ejemplo n.º 6
0
 public int GetNumAudioTracks()
 {
     if (this.TocValid)
     {
         int num = 0;
         for (int i = this.Toc.FirstTrack - 1; i < this.Toc.LastTrack; i++)
         {
             Kernel32.TRACK_DATA track_data = this.Toc.TrackData[i];
             if (track_data.Control == 0)
             {
                 num++;
             }
         }
         return(num);
     }
     return(-1);
 }