mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
- Fixed a bug that caused audioСlip preview volume to reset when selecting an asset - Added some native libs for linux-arm64, win-arm64
58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|