У меня есть программа Delphi 6 Pro, использующая библиотеку DSPACK для работы фильтра DirectShow.Я создаю свой первый Push Source Filter, который будет обеспечивать аудио из пользовательского аудиоисточника.В настоящее время мой самый большой вопрос заключается в том, как определить объем данных, которые я бы скопировал в выходной буфер фильтра во время вызова FillBuffer ().
Действительно ли я копирую только один аудиосэмпл за раз?В моем случае это будет всего 2 байта, поскольку каждый аудиосэмпл имеет ширину 16 бит, одноканальный.Это кажется в корне неэффективным.Или я копирую блок сэмплов сразу, и если да, то какую правильную логику использовать при определении количества байтов для копирования?Правильна ли логика, чтобы просто использовать значение, возвращаемое Sample.GetSize () в качестве количества предоставляемых байтов, где Sample - это объект IMediaSample, переданный в вызов FillBuffer ()?
Кроме того, если у кого-то естьЛюбые советы или предостережения относительно создания аудиоисточника исходного фильтра по сравнению с видео, пожалуйста, разместите их здесь.Пример, над которым я работаю, - это видеофильтр, который передает текущее изображение рабочего стола в виде серии растровых изображений.Я беспокоюсь, что сделаю что-то, что не подходит для фильтра DirectShow только для аудио, когда в качестве отправной точки используется видеофильтр.Кроме того, звук, поступающий из этого фильтра, должен быть в режиме реального времени, так как он включает в себя прямую аудиосвязь между двумя сторонами.