Пример #1
0
        private void FixSoundReference_LanguageDuration(int originalIndex, int count, IWriter buffer)
        {
            for (int i = 0; i < count; i++)
            {
                var langd = _container.FindSoundLanguageDuration(originalIndex + i);

                int newIndex;
                if (!_soundLanguageDurations.TryGetValue(langd, out newIndex))
                {
                    newIndex = _soundResources.LanguageDurations[0].PitchRanges.Count;

                    //redo so its foreach existing language and find a match?
                    foreach (var lang in langd.Languages)
                    {
                        SoundLanguagePitchRange newLang = new SoundLanguagePitchRange();

                        newLang.Durations = lang.Durations.ToArray();

                        _soundResources.LanguageDurations[lang.LanguageIndex].PitchRanges.Add(newLang);
                    }

                    _soundLanguageDurations[langd] = newIndex;
                }
                if (i == 0)
                {
                    buffer.SeekTo(_soundLayout.GetFieldOffset("first language duration pitch range index"));
                    buffer.WriteInt16((short)newIndex);
                }
            }
        }