Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Настройка звука в DirectShow


Ketrikken ©   (2006-10-23 16:11:00) 

Я пытаюсь поменять настройки звука через кодек....

procedure TDSCapture.SetAudioProperties;
var
 MediaType: TAMMediaType;
 pVih: WAVEFORMAT;    //вообще должен быть не waveformat а waveformatex, но не нашла, где он описан, они вроде идентичны
 Config: IAMStreamConfig;
 scc: audio_STREAM_CONFIG_CAPS;
 pmtConfig: pammediatype;
begin

if FAudioCompressFilter<>nil then  //это фильтр  компрессора аудио
   begin
    if failed (FCaptureGraphBuilder.FindInterface(
    nil,
    nil,    .
    FAudioCompressFilter,
    IID_IAMStreamConfig, Config)) then
      exit;
    try
      if Config.GetStreamCaps(0, pmtConfig, scc) <> s_ok then exit;
      pVih := wAvEFORMAT(pmtConfig.pbFormat^);
      ....
      pvih.nChannels := 1;
      ......
      pmtConfig.pbFormat := pointer(@pvih);
      if (Config.SetFormat(_ammediatype(pmtConfig^))) <>s_ok the exit;
      finally
      Config:=nil;
      end;
end;

Он мне выдает, что ошибка в функции Config.SetFormat(_ammediatype(pmtConfig^)) и равна она VFW_E_INVALIDMEDIATYPE
Скажите пожалуйста, что я делаю не так?


han_malign   (2006-10-26 16:55:00) [1]

with PWaveFormat(pmtConfig.pbFormat)^ do begin
   nChannels:= 1;
   nBlockAlign:= nChannels * wBitsPerSample div 8;
   nAvgBytesPerSec:= nBlockAlign * nSamplesPerSec;
end;


AbrosimovA   (2006-10-24 11:16:00) [2]

Из MMSystem.pas
PWaveFormatEx = ^TWaveFormatEx;
 {$EXTERNALSYM tWAVEFORMATEX}
 tWAVEFORMATEX = packed record
   wFormatTag: Word;         { format type }
   nChannels: Word;          { number of channels (i.e. mono, stereo, etc.) }
   nSamplesPerSec: DWORD;  { sample rate }
   nAvgBytesPerSec: DWORD; { for buffer estimation }
   nBlockAlign: Word;      { block size of data }
   wBitsPerSample: Word;   { number of bits per sample of mono data }
   cbSize: Word;           { the count in bytes of the size of }
 end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо