mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-07-18 03:24:15 -04:00
Update FMOD to v2.03.06
- Fixed a bug that caused audioСlip preview volume to reset when selecting an asset - Added some native libs for linux-arm64, win-arm64
This commit is contained in:
57
AssetStudioUtility/Audio/WavHelper/WavHeader.cs
Normal file
57
AssetStudioUtility/Audio/WavHelper/WavHeader.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace WavHelper
|
||||
{
|
||||
public sealed class WavHeader
|
||||
{
|
||||
private static byte[] ChunkId = Encoding.ASCII.GetBytes("RIFF");
|
||||
private uint ChunkSize;
|
||||
private static byte[] Format = Encoding.ASCII.GetBytes("WAVE");
|
||||
private static byte[] FmtChunkId = Encoding.ASCII.GetBytes("fmt ");
|
||||
private static uint FmtChunkSize = 16;
|
||||
private WavAudioFormat AudioFormat;
|
||||
private ushort NumChannels;
|
||||
private uint SampleRate;
|
||||
private uint ByteRate;
|
||||
private ushort BlockAlign;
|
||||
private ushort BitsPerSample;
|
||||
private static byte[] DataChunkId = Encoding.ASCII.GetBytes("data");
|
||||
private uint DataChunkSize;
|
||||
|
||||
public WavHeader(uint dataSize, WavAudioFormat audioFormat, int channels, uint sampleRate, int bits)
|
||||
{
|
||||
ChunkSize = dataSize + 36;
|
||||
AudioFormat = audioFormat;
|
||||
NumChannels = (ushort)channels;
|
||||
SampleRate = sampleRate;
|
||||
BitsPerSample = (ushort)bits;
|
||||
ByteRate = SampleRate * NumChannels * BitsPerSample / 8;
|
||||
BlockAlign = (ushort)(NumChannels * BitsPerSample / 8);
|
||||
DataChunkSize = dataSize;
|
||||
}
|
||||
|
||||
public void WriteToArray(byte[] buffer)
|
||||
{
|
||||
using (var stream = new MemoryStream(buffer))
|
||||
{
|
||||
using (var writer = new BinaryWriter(stream))
|
||||
{
|
||||
writer.Write(ChunkId);
|
||||
writer.Write(ChunkSize);
|
||||
writer.Write(Format);
|
||||
writer.Write(FmtChunkId);
|
||||
writer.Write(FmtChunkSize);
|
||||
writer.Write((ushort)AudioFormat);
|
||||
writer.Write(NumChannels);
|
||||
writer.Write(SampleRate);
|
||||
writer.Write(ByteRate);
|
||||
writer.Write(BlockAlign);
|
||||
writer.Write(BitsPerSample);
|
||||
writer.Write(DataChunkId);
|
||||
writer.Write(DataChunkSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user