[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:
VaDiM
2025-01-19 22:23:06 +03:00
parent 1cdb0b762a
commit e3e343320c
7 changed files with 131 additions and 106 deletions

View File

@ -102,8 +102,8 @@ namespace AssetStudioCLI
var m_AudioData = BigArrayPool<byte>.Shared.Rent(m_AudioClip.m_AudioData.Size);
try
{
m_AudioClip.m_AudioData.GetData(m_AudioData);
if (m_AudioData == null || m_AudioData.Length == 0)
m_AudioClip.m_AudioData.GetData(m_AudioData, out var read);
if (read <= 0)
{
Logger.Error($"Export error. \"{item.Text}\": AudioData was not found");
return false;
@ -116,24 +116,8 @@ namespace AssetStudioCLI
if (CLIOptions.o_logLevel.Value <= LoggerEvent.Debug)
{
var sb = new StringBuilder();
sb.AppendLine($"Converting {item.TypeString} \"{m_AudioClip.m_Name}\" to wav..");
if (m_AudioClip.version >= (2, 6))
{
sb.AppendLine(m_AudioClip.version < 5
? $"AudioClip type: {m_AudioClip.m_Type}"
: $"AudioClip compression format: {m_AudioClip.m_CompressionFormat}");
sb.AppendLine($"AudioClip channel count: {m_AudioClip.m_Channels}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
sb.AppendLine($"AudioClip bit depth: {m_AudioClip.m_BitsPerSample}");
}
else
{
sb.AppendLine($"Is raw AudioClip: {m_AudioClip.m_Format != 0x05}");
sb.AppendLine($"AudioClip channel count: {m_AudioClip.m_Channels}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
}
debugLog += sb.ToString();
debugLog += $"Converting {item.TypeString} \"{m_AudioClip.m_Name}\" to wav..\n";
debugLog += GenerateAudioClipInfo(m_AudioClip);
}
var debugLogConverter = "";
@ -155,23 +139,8 @@ namespace AssetStudioCLI
if (CLIOptions.o_logLevel.Value <= LoggerEvent.Debug)
{
var sb = new StringBuilder();
sb.AppendLine($"Exporting non-fmod {item.TypeString} \"{m_AudioClip.m_Name}\"..");
if (m_AudioClip.version >= (2, 6))
{
sb.AppendLine(m_AudioClip.version < 5
? $"AudioClip type: {m_AudioClip.m_Type}"
: $"AudioClip compression format: {m_AudioClip.m_CompressionFormat}");
sb.AppendLine($"AudioClip channel count: {m_AudioClip.m_Channels}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
sb.AppendLine($"AudioClip bit depth: {m_AudioClip.m_BitsPerSample}");
}
else
{
sb.AppendLine($"Is raw AudioClip: {m_AudioClip.m_Format != 0x05}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
}
debugLog += sb.ToString();
debugLog += $"Exporting non-fmod {item.TypeString} \"{m_AudioClip.m_Name}\"..\n";
debugLog += GenerateAudioClipInfo(m_AudioClip);
}
using (var file = File.OpenWrite(exportFullPath))
{
@ -187,6 +156,32 @@ namespace AssetStudioCLI
}
}
private static string GenerateAudioClipInfo(AudioClip m_AudioClip)
{
var sb = new StringBuilder();
if (m_AudioClip.version >= (2, 6))
{
sb.AppendLine(m_AudioClip.version < 5
? $"AudioClip type: {m_AudioClip.m_Type}"
: $"AudioClip compression format: {m_AudioClip.m_CompressionFormat}");
if (m_AudioClip.version >= 5)
{
sb.AppendLine($"AudioClip channel count: {m_AudioClip.m_Channels}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
sb.AppendLine($"AudioClip bit depth: {m_AudioClip.m_BitsPerSample}");
}
}
else
{
var isRawWav = m_AudioClip.m_Format != 0x05;
sb.AppendLine($"Is raw wav data: {isRawWav}");
if (isRawWav)
sb.AppendLine($"AudioClip channel count: {m_AudioClip.m_Channels}");
sb.AppendLine($"AudioClip sample rate: {m_AudioClip.m_Frequency}");
}
return sb.ToString();
}
private static bool TryExportFile(string dir, AssetItem item, string extension, out string fullPath)
{
var fileName = FixFileName(item.Text);