Я реализую фильтр DirectShow, который выполняет простое микширование звука между несколькими входными выводами и доставляет объединенные данные на единственный выходной вывод (многие-к-одному).У меня есть микширование аудиоданных, но мне хотелось бы узнать, что делать с немедиа-данными потоковыми сообщениями.Например, учитывая приведенный ниже код, взятый из библиотеки компонентов DSPACK DirectShow, которую я изменил и использую с моим приложением Delphi 6:
var
Props: PAMSample2Properties;
OutSample: IMediaSample;
begin
Assert(Assigned(inputPin));
// Check for other streams and pass them on
// Props := FInput.SampleProps;
Props := inputPin.SampleProps;
if(Props.dwStreamId <> AM_STREAM_MEDIA) then
begin
// ATI: Currently, any stream notices that come in that aren't
// regular stream media data notices are immediately passed
// through to the output pin. Is this behavior OK for my multi-pin filter?
result := FOutput.FInputPin.Receive(Sample);
exit;
end;
...
Как вы можете видеть, в настоящее время я передаю любые входные выводы вывода, которые сообщения потокового мультимедиа не выводятся непосредственно на выходной контакт.Это отличается от того, что я делаю, когда я получаю аудиоданные, которые я держу до тех пор, пока все входные контакты не доставят свой следующий буфер аудиоданных, смешивая эти аудиоданные и затем совершая единственный вызов приема на мой единственный выходной контакт.Мои вопросы:
- Каковы последствия пакетной доставки входных контактов при обработке квитанций аудиоданных, но их немедленной передачи для квитанций, не относящихся к носителям?Список таких сообщений можно найти в этом документе MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd373500(v=vs.85).aspx
- Будут ли перепутаны нижестоящие фильтры при таком подходе?Если да, то какую методику я должен использовать для арбитража не потоковых мультимедийных данных поступлений через входные контакты, в настоящее время подключенные к моему фильтру, который смешивает аудиоданные?