Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > directdraw


Автор: Antony41 21.2.2012, 20:37
Проблема у меня следующая решил значит я написать видеопроигрыватель на основе directDraw всё как бы хорошо но вот у меня проблема. когда я воспроизвожу какой нибудь фильм у меня идет смешивание двух звуковых потоков если их больше естесственно трех и тд. и получается каша какая то. в другом проигрывателе в настройках звука выбирается какую дорожку использовать. как мне определить сколько дорожек и выбрать нужную. информации так мало уже весь инет облазил. знаю нужно как то звуковые фильтра обрабатывать но как? помогите плиз...

Автор: Antony41 23.2.2012, 22:52
Жаль что ни кто не ответил пришлось разбираться самому 
Код

Function TForm1.GetAudioTracks:Integer;
var
  pEnum : IEnumFilters;
  pFilter :IBaseFilter;
  cFetched : dword;
  CL:TGUID;
begin
  result:=0;
  pGraphBuilder.EnumFilters(pEnum);
  while pEnum.Next(1, pFilter, @cFetched) = S_OK do
    begin
      pFilter.GetClassID(CL);
      if IsEqualGUID(CL,CLSID_DSoundRender) then
        inc(Result);
      pFilter:=nil;
    end;
  pFilter:=nil;
  pEnum:=nil;
end;


Теперь создалась еще одна ситуация. Можно конечно удалить ненужные звуковые фильтра с помощью следующей функции
Код

pGraphBuilder.RemoveFilter(pFilter);

но если фильм уже проигрывается и пользователь решил изменить звуковой поток на другой, а фильтра то уже нету так как он удалён. Можно конечно не удалять а ставить на паузу
Код

pFilter.Pause;

но при перемотке главного потока звуковой фильтр начинает снова воспроизводится и его каждый раз приходится ставить на паузу. а если звуковых потоков 3, 4 или более придётся ставить все потоки на паузу кроме основного при каждой перемотке. Хотелось бы узнать как лучше поступить в такой ситуации.
ps от этого com  интерфейса крыша едит уже и почему всё так сложно!))) Всех с Праздником!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)