private void CompileLipSyncFiles(CompileMessages errors)
{
List<SpeechLipSyncLine> lipSyncDataLines = new List<SpeechLipSyncLine>();
foreach (string fileName in Utilities.GetDirectoryFileList(Directory.GetCurrentDirectory(), PAMELA_FILE_FILTER))
{
lipSyncDataLines.Add(CompilePamelaFile(fileName, errors));
}
foreach (string fileName in Utilities.GetDirectoryFileList(Directory.GetCurrentDirectory(), PAPAGAYO_FILE_FILTER))
{
lipSyncDataLines.Add(CompilePapagayoFile(fileName, errors));
}
if (File.Exists(LIP_SYNC_DATA_OUTPUT))
{
File.Delete(LIP_SYNC_DATA_OUTPUT);
}
if ((!errors.HasErrors) && (lipSyncDataLines.Count > 0))
{
BinaryWriter bw = new BinaryWriter(new FileStream(LIP_SYNC_DATA_OUTPUT, FileMode.Create, FileAccess.Write));
bw.Write((int)4);
bw.Write(lipSyncDataLines.Count);
foreach (SpeechLipSyncLine line in lipSyncDataLines)
{
bw.Write((short)line.Phonemes.Count);
byte[] fileNameBytes = Encoding.Default.GetBytes(line.FileName);
byte[] paddedFileNameBytes = new byte[14];
Array.Copy(fileNameBytes, paddedFileNameBytes, fileNameBytes.Length);
paddedFileNameBytes[fileNameBytes.Length] = 0;
bw.Write(paddedFileNameBytes);
for (int i = 0; i < line.Phonemes.Count; i++)
{
bw.Write((int)line.Phonemes[i].EndTimeOffset);
}
for (int i = 0; i < line.Phonemes.Count; i++)
{
bw.Write((short)line.Phonemes[i].Frame);
}
}
bw.Close();
}
}