Как я могу разрешить потоковые сообщения через входные контакты в моем аудио-фильтре с несколькими входами DirectShow? - PullRequest
2 голосов
/ 16 ноября 2011

Я реализую фильтр 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;

  ...

Как вы можете видеть, в настоящее время я передаю любые входные выводы вывода, которые сообщения потокового мультимедиа не выводятся непосредственно на выходной контакт.Это отличается от того, что я делаю, когда я получаю аудиоданные, которые я держу до тех пор, пока все входные контакты не доставят свой следующий буфер аудиоданных, смешивая эти аудиоданные и затем совершая единственный вызов приема на мой единственный выходной контакт.Мои вопросы:

  1. Каковы последствия пакетной доставки входных контактов при обработке квитанций аудиоданных, но их немедленной передачи для квитанций, не относящихся к носителям?Список таких сообщений можно найти в этом документе MSDN:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd373500(v=vs.85).aspx

  1. Будут ли перепутаны нижестоящие фильтры при таком подходе?Если да, то какую методику я должен использовать для арбитража не потоковых мультимедийных данных поступлений через входные контакты, в настоящее время подключенные к моему фильтру, который смешивает аудиоданные?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...