002 
            06.10.2002, 00:28 Uhr 
            Tobi 
            
             
            
             
             
             | 
          Hi!
  oder mit DirectSound
  
   
  
  
    | Code: | 
   
  
    
      
  #include "stdafx.h" #include "stdio.h" #include "dshow.h"
  #pragma comment (lib,"amstrmid.lib") #pragma comment (lib,"strmiids.lib")
  IGraphBuilder *GB=NULL; IMediaControl *MC=NULL; IMediaEventEx *ME=NULL; IBasicAudio   *BA=NULL; IMediaSeeking *MS=NULL; 
       
      
     | 
   
   
  
  und als zum Laden einer Datei 
   
  
  
    | Code: | 
   
  
    
      
  HRESULT LoadFile(const char *name) {     HRESULT hres;     //create graphbuilder     hres=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&GB);     if(hres!=S_OK)         return hres;     WCHAR wFile[MAX_PATH];     MultiByteToWideChar(CP_ACP,0,name,-1,wFile,MAX_PATH);      //call codec, which will render our audiofile     hres=GB->RenderFile(wFile,NULL);     if(hres!=S_OK)         return hres;     //create mediacontrol for play and stop     hres=GB->QueryInterface(IID_IMediaControl,(void **)&MC);     if(hres!=S_OK)         return hres;     //cretae mediaevent     hres=GB->QueryInterface(IID_IMediaEventEx,(void **)&ME);     if(hres!=S_OK)         return hres;     //create seekingobject for get & set streampointer     hres=GB->QueryInterface(IID_IMediaSeeking,(void **)&MS);     if(hres!=S_OK)         return hres;     //call audiointerface     hres=GB->QueryInterface(IID_IBasicAudio,(void **)&BA);          return hres; } 
       
      
     | 
   
   
  
  Wenn du eine Datei geladen hast, dann hast du folgende Möglichkeiten: 
   
  
  
    | Code: | 
   
  
    
      
  MC->Run();//Abspielen der Datei MC->Stop();//Anhalten __int64 current, end; MS->GetPositions(&cur,&end);//Positonen holen SetPos(__int64 pos) { if(MS->SetPositions(&pos,AM_SEEKING_AbsolutePositioning,NULL,NULL)!=S_OK)return FALSE; return TRUE; }//Position setzen 
       
      
     | 
   
   
  
  Das ganze basiert auf COM, deshalb 
   
  
  
    | Code: | 
   
  
    
      
  //ganz am Anfang: CoInitialize(NULL);
  //und beim Beenden des Programms: if(MS!=NULL)MS->Release(); if(BA!=NULL)BA->Release(); if(ME!=NULL)ME->Release(); if(MC!=NULL)MC->Release(); if(GB!=NULL)GB->Release(); CoUninitialize(); 
       
      
     | 
   
   
  
  bisschen viel Code (hoff das ich nix vergessen hab), aber damit geht alles (mp3,wav,mpg...) -- Mit Computern können wir Probleme lösen die wir ohne sie gar nicht erst hätten!
  mfg
  Tobi |