Entwickler-Ecke

Multimedia / Grafik - "Globalen" SampleGrabber, geht das ???


Lazarus - Sa 22.03.08 01:29
Titel: "Globalen" SampleGrabber, geht das ???
Hallo,
ich würde gerne mit einem SampleGrabber (DirectShow) alles mithören, was aus meinen Lautsprechern kommt, also entsprechend NUR Audio.

Es gibt mehrere gleichzeitig gespielte "Channels". Ein Channel sieht (Schematisch) so aus :

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
procedure TForm1.btnRenderFileClick(Sender: TObject); 
var 
  pGraph: IGraphBuilder; 
  pControl: IMediaControl; 
  pEvent: IMediaEvent; 
  evCode: Integer; 
  strPath: string
  wstrFileName: PWideChar; 
begin 
  CoInitialize(nil); 
  GetMem(wstrFileName, MAX_PATH); 
  try 
    CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,pGraph); 
    pGraph.QueryInterface(IID_IMediaControl,pControl); 
    pGraph.QueryInterface(IID_IMediaEvent,pEvent); 
    {-----} 
    strPath := FilenameEdit1.Text; 
    MultiByteToWideChar(CP_ACP, 0, PChar(strPath), -1, wstrFileName, MAX_PATH); 
    if Succeeded(pGraph.RenderFile(wstrFileName,nil)) then 
    {-----} 
    begin 
      if Succeeded(pControl.Run) then begin 
        pEvent.WaitForCompletion(INFINITE,evCode); 
      end
    end
  finally 
    CoUninitialize(); 
    FreeMem(wstrFileName, MAX_PATH) 
  end
end;


Ich denke ich müsste etwa das von oben nehmen, mit einem Nullrenderer und einem SampleGrabber...
Aber ich habe irgendwie keine Idee, wie das gehen soll... Die MS-Samples nützen mir auch nur bedingt etwas, da ich mit C++ auf Kriegsfuss stehe ;-)

Ich hoffe jemand kann mir da einen Rat geben ... Danke...