本文整理汇总了C#中WaveFormat.Load方法的典型用法代码示例。如果您正苦于以下问题:C# WaveFormat.Load方法的具体用法?C# WaveFormat.Load怎么用?C# WaveFormat.Load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveFormat
的用法示例。
在下文中一共展示了WaveFormat.Load方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadSampleCount
/// <summary>
/// Read the sample count of a waveform file.
/// </summary>
/// <param name="filePath">Waveform file to read sample count.</param>
/// <returns>Sample count of the waveform file. if -1 is returned.</returns>
public static int ReadSampleCount(string filePath)
{
if (string.IsNullOrEmpty(filePath))
{
throw new ArgumentNullException("filePath");
}
WaveFormat format;
try
{
FileStream fs = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read);
try
{
using (BinaryReader br = new BinaryReader(fs))
{
fs = null;
Riff riff = new Riff();
riff.LoadHead(br);
RiffChunk fmt = new RiffChunk();
fmt.Load(br, Riff.IdFormat);
format = new WaveFormat();
format.Load(fmt.GetData());
int chunkId = 0;
int dataSize = 0;
do
{
chunkId = br.ReadInt32();
dataSize = br.ReadInt32();
if (dataSize < 0)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Invalid data size [{0}], which should not be negative integer.",
dataSize);
throw new InvalidDataException(message);
}
long currPos = br.BaseStream.Position;
long newPos = br.BaseStream.Seek(dataSize, SeekOrigin.Current);
if (newPos != currPos + dataSize)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Invalid data size [{0}], which may be too large.",
dataSize);
throw new InvalidDataException(message);
}
}
while (Riff.IdData != chunkId);
if (Riff.IdData != chunkId)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Invalid waveform format for not data chunk found in file {0}",
filePath);
throw new InvalidDataException(message);
}
return dataSize / (format.BlockAlign * format.Channels);
}
}
finally
{
if (null != fs)
{
fs.Dispose();
}
}
}
catch (InvalidDataException ide)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Fail to read sample count of waveform file [{0}] for invalid data.",
filePath);
throw new InvalidDataException(message, ide);
}
catch (EndOfStreamException ese)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Fail to read sample count of waveform file [{0}] for no enough data.",
filePath);
throw new InvalidDataException(message, ese);
}
}
示例2: ReadFormat
public static WaveFormat ReadFormat(string filePath)
{
WaveFormat format;
try
{
using (FileStream fs =
new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
using (BinaryReader br = new BinaryReader(fs))
{
Riff riff = new Riff();
riff.LoadHead(br);
RiffChunk fmt = new RiffChunk();
fmt.Load(br, Riff.IdFormat);
format = new WaveFormat();
format.Load(fmt.GetData());
}
}
catch (InvalidDataException ide)
{
string message = string.Format(CultureInfo.InvariantCulture,
"Fail to read format of waveform file [{0}] for invalid data.",
filePath);
throw new InvalidDataException(message, ide);
}
return format;
}