6 |
|
internal class AifExporter : SoundExporter |
7 |
|
{ |
8 |
|
#region Private data |
9 |
+ |
private bool do_pc_demo_test; |
10 |
+ |
|
11 |
|
private const int fcc_FORM = 0x464f524d; |
12 |
|
private const int fcc_AIFC = 0x41494643; |
13 |
|
private const int fcc_COMM = 0x434f4d4d; |
21 |
|
|
22 |
|
#endregion |
23 |
|
|
24 |
< |
public AifExporter(InstanceFileManager fileManager, string outputDirPath) |
24 |
> |
public AifExporter(InstanceFileManager fileManager, string outputDirPath, bool noDemo = false) |
25 |
|
: base(fileManager, outputDirPath) |
26 |
|
{ |
27 |
+ |
do_pc_demo_test = !noDemo; |
28 |
|
} |
29 |
|
|
30 |
|
protected override void ExportInstance(InstanceDescriptor descriptor) |
31 |
|
{ |
32 |
< |
var sound = SoundData.Read(descriptor); |
32 |
> |
var sound = SoundData.Read(descriptor, do_pc_demo_test); |
33 |
|
|
34 |
|
using (var stream = File.Create(Path.Combine(OutputDirPath, descriptor.FullName + ".aif"))) |
35 |
|
using (var writer = new BinaryWriter(stream)) |
36 |
|
{ |
37 |
|
if (!(sound.IsIMA4)) |
38 |
|
{ |
39 |
< |
throw new NotSupportedException("Transcoding from PC ADPCM to Mac/demo ADPCM not supported!"); |
39 |
> |
throw new NotSupportedException("Transcoding from MS ADPCM (PC) to IMA4 ADPCM (Mac) not supported!"); |
40 |
|
} |
41 |
|
writer.Write(Utils.ByteSwap(fcc_FORM)); |
42 |
|
writer.Write(Utils.ByteSwap(50 + sound.Data.Length)); |