Re[6]: DirectShow как управлять аудио потоками?
От: XoSteL  
Дата: 14.07.08 18:37
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, XoSteL, Вы писали:


XSL>>// если так , то как можно можно управлять гомкостью дорожек используя индекс рендереров???


DM>Если угодно по индексу рендереров — сделайте массив, содержащий указатели на IBasicAudio для каждого рендерера, и по индексу к ним обращайтесь.


Вот так все работает


procedure TForm1.btASwitchClick(Sender: TObject);
var
 FilterList: TDSoundFilterList;
 pBasicAudio: IBasicAudio;
 i : integer;
begin
 i := btASwitch.Tag + 1;
 FilterList := TDSoundFilterList.Create(FilterGraph as IFiltergraph);
 try
   if i <> FilterList.Count then
   begin
      FilterGraph.QueryInterface(IID_IBasicAudio, pBasicAudio);
      pBasicAudio.put_Volume(-10000);
      btASwitch.Tag := btASwitch.Tag + 1;
      FilterList.Items[btASwitch.Tag].QueryInterface(IID_IBasicAudio, pBasicAudio);
      pBasicAudio.put_Volume(0);
      ShowMessage('Audio ' + IntToStr(i) +  ' из ' + IntToStr(FilterList.Count));
    end else
    begin
      FilterGraph.QueryInterface(IID_IBasicAudio, pBasicAudio);
      pBasicAudio.put_Volume(-10000);
      btASwitch.Tag := 0;
      FilterList.Items[btASwitch.Tag].QueryInterface(IID_IBasicAudio, pBasicAudio);
      pBasicAudio.put_Volume(0);
      ShowMessage('Audio ' + IntToStr(i) +  ' из ' + IntToStr(FilterList.Count));
    end;
 finally
   FilterList.Free;
 end;
end;


Может можно сделать проще??? Подскажите как
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.