mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
Fix displayed info for non-fmod audio clips
This commit is contained in:
parent
1e8085da2d
commit
cadcf0b492
@ -95,7 +95,7 @@ namespace AssetStudio
|
|||||||
public enum FMODSoundType
|
public enum FMODSoundType
|
||||||
{
|
{
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
ACC = 1,
|
AAC = 1,
|
||||||
AIFF = 2,
|
AIFF = 2,
|
||||||
ASF = 3,
|
ASF = 3,
|
||||||
AT3 = 4,
|
AT3 = 4,
|
||||||
|
@ -118,7 +118,7 @@ namespace AssetStudioCLI
|
|||||||
var buffer = converter.ConvertToWav(m_AudioData);
|
var buffer = converter.ConvertToWav(m_AudioData);
|
||||||
if (buffer == null)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
File.WriteAllBytes(exportFullPath, buffer);
|
File.WriteAllBytes(exportFullPath, buffer);
|
||||||
@ -127,6 +127,17 @@ namespace AssetStudioCLI
|
|||||||
{
|
{
|
||||||
if (!TryExportFile(exportPath, item, converter.GetExtensionName(), out exportFullPath))
|
if (!TryExportFile(exportPath, item, converter.GetExtensionName(), out exportFullPath))
|
||||||
return false;
|
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);
|
File.WriteAllBytes(exportFullPath, m_AudioData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,9 +290,9 @@ namespace AssetStudioCLI.Options
|
|||||||
(
|
(
|
||||||
optionDefaultValue: AudioFormat.Wav,
|
optionDefaultValue: AudioFormat.Wav,
|
||||||
optionName: "--audio-format <value>",
|
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" +
|
"<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\"",
|
optionExample: "Example: \"--audio-format wav\"",
|
||||||
optionHelpGroup: HelpGroups.Convert
|
optionHelpGroup: HelpGroups.Convert
|
||||||
);
|
);
|
||||||
|
@ -952,8 +952,8 @@ namespace AssetStudioGUI
|
|||||||
{
|
{
|
||||||
switch (m_AudioClip.m_Type)
|
switch (m_AudioClip.m_Type)
|
||||||
{
|
{
|
||||||
case FMODSoundType.ACC:
|
case FMODSoundType.AAC:
|
||||||
assetItem.InfoText += "Acc";
|
assetItem.InfoText += "AAC";
|
||||||
break;
|
break;
|
||||||
case FMODSoundType.AIFF:
|
case FMODSoundType.AIFF:
|
||||||
assetItem.InfoText += "AIFF";
|
assetItem.InfoText += "AIFF";
|
||||||
@ -1036,6 +1036,18 @@ namespace AssetStudioGUI
|
|||||||
var m_AudioData = m_AudioClip.m_AudioData.GetData();
|
var m_AudioData = m_AudioClip.m_AudioData.GetData();
|
||||||
if (m_AudioData == null || m_AudioData.Length == 0)
|
if (m_AudioData == null || m_AudioData.Length == 0)
|
||||||
return;
|
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();
|
var exinfo = new FMOD.CREATESOUNDEXINFO();
|
||||||
|
|
||||||
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
||||||
@ -2298,7 +2310,7 @@ namespace AssetStudioGUI
|
|||||||
ERRCHECK(result);
|
ERRCHECK(result);
|
||||||
if (version < FMOD.VERSION.number)
|
if (version < FMOD.VERSION.number)
|
||||||
{
|
{
|
||||||
Logger.Error($"Error! You are using an old version of FMOD {version:X}. This program requires {FMOD.VERSION.number:X}.");
|
Logger.Error($"Error! You are using an old version of FMOD {version:X}. This program requires {FMOD.VERSION.number:X}.");
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
AssetStudioGUI/ExportOptions.Designer.cs
generated
4
AssetStudioGUI/ExportOptions.Designer.cs
generated
@ -214,9 +214,9 @@
|
|||||||
this.convertAudio.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.convertAudio.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.convertAudio.Location = new System.Drawing.Point(6, 173);
|
this.convertAudio.Location = new System.Drawing.Point(6, 173);
|
||||||
this.convertAudio.Name = "convertAudio";
|
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.TabIndex = 7;
|
||||||
this.convertAudio.Text = "Convert AudioClip to WAV(PCM)";
|
this.convertAudio.Text = "Convert FMOD AudioClip to WAV(PCM)";
|
||||||
this.convertAudio.UseVisualStyleBackColor = true;
|
this.convertAudio.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// panel1
|
// panel1
|
||||||
|
@ -7,6 +7,8 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
public class AudioClipConverter
|
public class AudioClipConverter
|
||||||
{
|
{
|
||||||
|
public bool IsSupport => m_AudioClip.IsConvertSupport();
|
||||||
|
|
||||||
private AudioClip m_AudioClip;
|
private AudioClip m_AudioClip;
|
||||||
|
|
||||||
public AudioClipConverter(AudioClip audioClip)
|
public AudioClipConverter(AudioClip audioClip)
|
||||||
@ -96,7 +98,7 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
switch (m_AudioClip.m_Type)
|
switch (m_AudioClip.m_Type)
|
||||||
{
|
{
|
||||||
case FMODSoundType.ACC:
|
case FMODSoundType.AAC:
|
||||||
return ".m4a";
|
return ".m4a";
|
||||||
case FMODSoundType.AIFF:
|
case FMODSoundType.AIFF:
|
||||||
return ".aif";
|
return ".aif";
|
||||||
@ -152,40 +154,40 @@ namespace AssetStudio
|
|||||||
|
|
||||||
return ".AudioClip";
|
return ".AudioClip";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsSupport
|
public static class AudioClipExtension
|
||||||
|
{
|
||||||
|
public static bool IsConvertSupport(this AudioClip m_AudioClip)
|
||||||
{
|
{
|
||||||
get
|
if (m_AudioClip.version[0] < 5)
|
||||||
{
|
{
|
||||||
if (m_AudioClip.version[0] < 5)
|
switch (m_AudioClip.m_Type)
|
||||||
{
|
{
|
||||||
switch (m_AudioClip.m_Type)
|
case FMODSoundType.AIFF:
|
||||||
{
|
case FMODSoundType.IT:
|
||||||
case FMODSoundType.AIFF:
|
case FMODSoundType.MOD:
|
||||||
case FMODSoundType.IT:
|
case FMODSoundType.S3M:
|
||||||
case FMODSoundType.MOD:
|
case FMODSoundType.XM:
|
||||||
case FMODSoundType.S3M:
|
case FMODSoundType.XMA:
|
||||||
case FMODSoundType.XM:
|
case FMODSoundType.AUDIOQUEUE:
|
||||||
case FMODSoundType.XMA:
|
return true;
|
||||||
case FMODSoundType.AUDIOQUEUE:
|
default:
|
||||||
return true;
|
return false;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (m_AudioClip.m_CompressionFormat)
|
||||||
{
|
{
|
||||||
switch (m_AudioClip.m_CompressionFormat)
|
case AudioCompressionFormat.PCM:
|
||||||
{
|
case AudioCompressionFormat.Vorbis:
|
||||||
case AudioCompressionFormat.PCM:
|
case AudioCompressionFormat.ADPCM:
|
||||||
case AudioCompressionFormat.Vorbis:
|
case AudioCompressionFormat.MP3:
|
||||||
case AudioCompressionFormat.ADPCM:
|
case AudioCompressionFormat.XMA:
|
||||||
case AudioCompressionFormat.MP3:
|
return true;
|
||||||
case AudioCompressionFormat.XMA:
|
default:
|
||||||
return true;
|
return false;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user