/// <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; } }