Exemple #1
0
        /// <summary>
        /// Confirms whether the next part of the data is a leader field, meaning
        /// that data lies afterwards.
        /// </summary>
        /// 
        /// <param name="ie">The enumerator of data.</param>
        /// <returns>Whether the data was a leader field.</returns>
        private bool IsLeader(SoundData.SoundEnumerator ie)
        {
            // Probably the start of some data! Let's just check a couple more
              // data points to make sure.
              FrequencyAnalyzer analyzer = new FrequencyAnalyzer();
              Int16[] sample = new Int16[4];

              try {
            // The leader field is 3600 bits long.
            for (int i = 0; i < 3600; ++i) {
              sample = ie.CurrentFour;
              if (sample == null) {
            return false;
              }

              // Normalise the sample to check if it fits the leader spec.
              bool[] sizes = analyzer.NormalizeSample(ie, sample);
              if (!sizes[2]) {
            if (sample[0] > 10000) {
              for (int k = 0; k < 4; ++k) {
                Console.Write(sample[k] + " ");
              }
              Console.WriteLine();
            }
            // The leader field is all 1s.
            return false;
              }

              ie.MoveNextFour();
            }

            // Nothing thrown, so we have data.
            return true;
              } catch {
            // Not data! Oh well, just keep looking.
            return false;
              }
        }