Adds length display support for PCM & IMA music.
This commit is contained in:
@@ -91,6 +91,25 @@ namespace OpenRA.FileFormats
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static float WaveLength(Stream s)
|
||||||
|
{
|
||||||
|
s.Position = 12;
|
||||||
|
var fmt = s.ReadASCII(4);
|
||||||
|
|
||||||
|
if (fmt != "fmt ")
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
s.Position = 22;
|
||||||
|
var channels = s.ReadInt16();
|
||||||
|
var sampleRate = s.ReadInt32();
|
||||||
|
|
||||||
|
s.Position = 34;
|
||||||
|
var bitsPerSample = s.ReadInt16();
|
||||||
|
var length = s.Length * 8;
|
||||||
|
|
||||||
|
return length / (channels * sampleRate * bitsPerSample);
|
||||||
|
}
|
||||||
|
|
||||||
public byte[] DecodeAdpcmData()
|
public byte[] DecodeAdpcmData()
|
||||||
{
|
{
|
||||||
var s = new MemoryStream(RawOutput);
|
var s = new MemoryStream(RawOutput);
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
Exists = true;
|
Exists = true;
|
||||||
using (var s = GlobalFileSystem.Open(Filename))
|
using (var s = GlobalFileSystem.Open(Filename))
|
||||||
Length = (int)AudLoader.SoundLength(s);
|
if (Filename.ToLowerInvariant().EndsWith("wav"))
|
||||||
|
Length = (int)WavLoader.WaveLength(s);
|
||||||
|
else
|
||||||
|
Length = (int)AudLoader.SoundLength(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reload()
|
public void Reload()
|
||||||
@@ -42,7 +45,10 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
Exists = true;
|
Exists = true;
|
||||||
using (var s = GlobalFileSystem.Open(Filename))
|
using (var s = GlobalFileSystem.Open(Filename))
|
||||||
Length = (int)AudLoader.SoundLength(s);
|
if (Filename.ToLowerInvariant().EndsWith("wav"))
|
||||||
|
Length = (int)WavLoader.WaveLength(s);
|
||||||
|
else
|
||||||
|
Length = (int)AudLoader.SoundLength(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user