Fix displayed info for non-fmod audio clips

This commit is contained in:
VaDiM 2024-03-21 17:15:02 +03:00
parent 1e8085da2d
commit cadcf0b492
6 changed files with 63 additions and 38 deletions

View File

@ -95,7 +95,7 @@ namespace AssetStudio
public enum FMODSoundType
{
UNKNOWN = 0,
ACC = 1,
AAC = 1,
AIFF = 2,
ASF = 3,
AT3 = 4,

View File

@ -118,7 +118,7 @@ namespace AssetStudioCLI
var buffer = converter.ConvertToWav(m_AudioData);
if (buffer == null)
{
Logger.Error($"Export error. \"{item.Text}\": Failed to convert to Wav");
Logger.Error($"Export error. \"{item.Text}\": Failed to convert fmod audio to Wav");
return false;
}
File.WriteAllBytes(exportFullPath, buffer);
@ -127,6 +127,17 @@ namespace AssetStudioCLI
{
if (!TryExportFile(exportPath, item, converter.GetExtensionName(), out exportFullPath))
return false;
if (CLIOptions.o_logLevel.Value <= LoggerEvent.Debug)
{
var sb = new StringBuilder();
sb.AppendLine($"Exporting non-fmod {item.TypeString} \"{m_AudioClip.m_Name}\"..");
sb.AppendLine(m_AudioClip.version[0] < 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}");
Logger.Debug(sb.ToString());
}
File.WriteAllBytes(exportFullPath, m_AudioData);
}

View File

@ -290,9 +290,9 @@ namespace AssetStudioCLI.Options
(
optionDefaultValue: AudioFormat.Wav,
optionName: "--audio-format <value>",
optionDescription: "Specify the format for converting audio assets\n" +
optionDescription: "Specify the format for converting FMOD audio assets\n" +
"<Value: none | wav(default)>\n" +
"None - Do not convert audios and export them in their own format\n",
"None - Do not convert fmod audios and export them in their own format\n",
optionExample: "Example: \"--audio-format wav\"",
optionHelpGroup: HelpGroups.Convert
);

View File

@ -952,8 +952,8 @@ namespace AssetStudioGUI
{
switch (m_AudioClip.m_Type)
{
case FMODSoundType.ACC:
assetItem.InfoText += "Acc";
case FMODSoundType.AAC:
assetItem.InfoText += "AAC";
break;
case FMODSoundType.AIFF:
assetItem.InfoText += "AIFF";
@ -1036,6 +1036,18 @@ namespace AssetStudioGUI
var m_AudioData = m_AudioClip.m_AudioData.GetData();
if (m_AudioData == null || m_AudioData.Length == 0)
return;
if (!m_AudioClip.IsConvertSupport())
{
assetItem.InfoText +=
$"\nLength: {m_AudioClip.m_Length:.0##}\n" +
$"Channel count: {m_AudioClip.m_Channels}\n" +
$"Sample rate: {m_AudioClip.m_Frequency}\n" +
$"Bit depth: {m_AudioClip.m_BitsPerSample}";
StatusStripUpdate("Preview is not available for non-fmod sounds. Try to export instead.");
return;
}
var exinfo = new FMOD.CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);

View File

@ -214,9 +214,9 @@
this.convertAudio.CheckState = System.Windows.Forms.CheckState.Checked;
this.convertAudio.Location = new System.Drawing.Point(6, 173);
this.convertAudio.Name = "convertAudio";
this.convertAudio.Size = new System.Drawing.Size(179, 17);
this.convertAudio.Size = new System.Drawing.Size(213, 17);
this.convertAudio.TabIndex = 7;
this.convertAudio.Text = "Convert AudioClip to WAV(PCM)";
this.convertAudio.Text = "Convert FMOD AudioClip to WAV(PCM)";
this.convertAudio.UseVisualStyleBackColor = true;
//
// panel1

View File

@ -7,6 +7,8 @@ namespace AssetStudio
{
public class AudioClipConverter
{
public bool IsSupport => m_AudioClip.IsConvertSupport();
private AudioClip m_AudioClip;
public AudioClipConverter(AudioClip audioClip)
@ -96,7 +98,7 @@ namespace AssetStudio
{
switch (m_AudioClip.m_Type)
{
case FMODSoundType.ACC:
case FMODSoundType.AAC:
return ".m4a";
case FMODSoundType.AIFF:
return ".aif";
@ -152,10 +154,11 @@ namespace AssetStudio
return ".AudioClip";
}
}
public bool IsSupport
public static class AudioClipExtension
{
get
public static bool IsConvertSupport(this AudioClip m_AudioClip)
{
if (m_AudioClip.version[0] < 5)
{
@ -190,4 +193,3 @@ namespace AssetStudio
}
}
}
}