mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-07-18 03:24:15 -04:00
[GUI] AudioClip improvements
- Increased loading speed of AudioClip preview - Optimized memory consumption of AudioClip preview - Fixed incorrect length detection for some sound types - Added channel count info (audio channels)
This commit is contained in:
@ -38,7 +38,7 @@ namespace AssetStudio
|
||||
var exinfo = new CREATESOUNDEXINFO();
|
||||
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
||||
exinfo.length = (uint)m_AudioClip.m_Size;
|
||||
var result = system.createSound(m_AudioData, MODE.OPENMEMORY, ref exinfo, out var sound);
|
||||
var result = system.createSound(m_AudioData, MODE.OPENMEMORY | MODE.LOWMEM | MODE.ACCURATETIME, ref exinfo, out var sound);
|
||||
if (ErrorCheck(result, out debugLog))
|
||||
return null;
|
||||
result = sound.getNumSubSounds(out var numsubsounds);
|
||||
@ -106,19 +106,20 @@ namespace AssetStudio
|
||||
|
||||
public byte[] RawAudioClipToWav(out string debugLog)
|
||||
{
|
||||
var audioSize = m_AudioClip.m_Size;
|
||||
var audioSize = (uint)m_AudioClip.m_Size;
|
||||
var channels = m_AudioClip.m_Channels;
|
||||
var sampleRate = m_AudioClip.m_Frequency;
|
||||
var bits = 16;
|
||||
|
||||
debugLog = "[Legacy wav converter] Generating wav header..\n";
|
||||
var buffer = new byte[audioSize + 44];
|
||||
m_AudioClip.m_AudioData.GetData(buffer, 44);
|
||||
WriteWavHeader(buffer, audioSize, sampleRate, channels, bits);
|
||||
m_AudioClip.m_AudioData.GetData(buffer, out var read, 44);
|
||||
if (read > 0)
|
||||
WriteWavHeader(buffer, audioSize, sampleRate, channels, bits);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
private static void WriteWavHeader(byte[] buffer, long size, int sampleRate, int channels, int bits)
|
||||
private static void WriteWavHeader(byte[] buffer, uint size, int sampleRate, int channels, int bits)
|
||||
{
|
||||
Encoding.ASCII.GetBytes("RIFF").CopyTo(buffer, 0);
|
||||
BitConverter.GetBytes(size + 36).CopyTo(buffer, 4);
|
||||
|
@ -89,7 +89,7 @@ namespace AssetStudio
|
||||
var buff = BigArrayPool<byte>.Shared.Rent(reader.Size);
|
||||
try
|
||||
{
|
||||
reader.GetData(buff);
|
||||
reader.GetData(buff, out _);
|
||||
if (switchSwizzled)
|
||||
{
|
||||
var unswizzledData = BigArrayPool<byte>.Shared.Rent(reader.Size);
|
||||
|
Reference in New Issue
Block a user