Reworked ISoundFormat.LengthInSeconds implementations
This commit is contained in:
committed by
Matthias Mailänder
parent
631297417c
commit
87b92b53a4
@@ -37,10 +37,10 @@ namespace OpenRA.Mods.Common.AudioLoaders
|
||||
|
||||
public sealed class Mp3Format : ISoundFormat
|
||||
{
|
||||
public int Channels { get { return mp3.ChannelCount; } }
|
||||
public int SampleBits { get { return 16; } }
|
||||
public int SampleRate { get { return mp3.Frequency; } }
|
||||
public float LengthInSeconds { get; private set; }
|
||||
public int Channels => mp3.ChannelCount;
|
||||
public int SampleBits => 16;
|
||||
public int SampleRate => mp3.Frequency;
|
||||
public float LengthInSeconds { get; }
|
||||
public Stream GetPCMInputStream() { return new MP3Stream(Clone(this)); }
|
||||
public void Dispose() { mp3.Dispose(); }
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.AudioLoaders
|
||||
public int SampleBits => 16;
|
||||
public int Channels => reader.Channels;
|
||||
public int SampleRate => reader.SampleRate;
|
||||
public float LengthInSeconds => (float)reader.TotalTime.TotalSeconds;
|
||||
public float LengthInSeconds { get; }
|
||||
public Stream GetPCMInputStream() { return new OggStream(new OggFormat(this)); }
|
||||
public void Dispose() { reader.Dispose(); }
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace OpenRA.Mods.Common.AudioLoaders
|
||||
{
|
||||
this.stream = stream;
|
||||
reader = new VorbisReader(stream);
|
||||
LengthInSeconds = (float) reader.TotalTime.TotalSeconds;
|
||||
}
|
||||
|
||||
OggFormat(OggFormat cloneFrom)
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.AudioLoaders
|
||||
public int Channels => channels;
|
||||
public int SampleBits => sampleBits;
|
||||
public int SampleRate => sampleRate;
|
||||
public float LengthInSeconds { get; }
|
||||
public float LengthInSeconds => lengthInSeconds;
|
||||
public Stream GetPCMInputStream() { return wavStreamFactory(); }
|
||||
public void Dispose() { sourceStream.Dispose(); }
|
||||
|
||||
@@ -62,15 +62,14 @@ namespace OpenRA.Mods.Common.AudioLoaders
|
||||
readonly short channels;
|
||||
readonly int sampleBits;
|
||||
readonly int sampleRate;
|
||||
readonly float lengthInSeconds;
|
||||
|
||||
public WavFormat(Stream stream)
|
||||
{
|
||||
sourceStream = stream;
|
||||
|
||||
if (!WavReader.LoadSound(stream, out wavStreamFactory, out channels, out sampleBits, out sampleRate))
|
||||
if (!WavReader.LoadSound(stream, out wavStreamFactory, out channels, out sampleBits, out sampleRate, out lengthInSeconds))
|
||||
throw new InvalidDataException();
|
||||
|
||||
LengthInSeconds = WavReader.WaveLength(sourceStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user