Esempio n. 1
0
 protected int GetEndSector2(int track)
 {
     if (TocValid && (track >= Toc.FirstTrack) && (track <= Toc.LastTrack))
     {
         Win32Functions.TRACK_DATA td = Toc.TrackData[track];
         return((td.Address_1 * 60 * 75 + td.Address_2 * 75) - 151);
     }
     else
     {
         return(-1);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Retrieve the data required to perform a CDDB Query
        /// </summary>
        /// <returns></returns>
        public string GetCDDBQuery()
        {
            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;
            Win32Functions.TRACK_DATA last  = Toc.TrackData[numTracks];
            Win32Functions.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);

            string qs = sDiscId + "+" + postfix;

            return(qs);
        }