-
Подскажите пожалуйста если кто сталкивался с http://homepages.borland.com/torry/vcl/mmedia/audio/acm.zipтам три компонента ACMDialog ACMWaveIn ACMWaveOut позволяют кодиаровать/декодировать на ходу звук чере ACM codecпочему Delphi7 нормально компилирует этот пакет, не считая сетевых дел, но в процессе выполнения программы происходит ошибка в acmdialog.pas ? процес уходит в ntdll.DlgBreakPoint :( вот в этой функции: res:=acmFormatChoose(fc); описанная в msacm.pas ???
-
Также в тех компонентах происходит еще ошибка , опят таки у автора скомпилированный пример работает нормально, у меня почему-то нет... правда неизвестно на кокой Delphi (stud_pe показал 4-5) компилировал но неужели 7ая собирает проект как-то иначе? я попробовал принудительно открыть ACMWaveOut1.Open(pw); со следующими параметрами:
pw.wFormatTag :=$31; //WAVE_FORMAT_GSM610; set default format to GSM6.10 pw.nChannels := 1; //mono pw.nSamplesPerSec := 8000; pw.nAvgBytesPerSec:= 8000; { for buffer estimation } pw.nBlockAlign:=1; { block size of data } pw.wbitspersample := 8; // pw.cbSize:= 65535;
ACMWaveOut1.Open(pw);
и все равно WaveOutOpen дает ошибку 32 ??? может кто знает в чем есть существенные отличия в компиляторах напр Delphi3 и Delphi7, особено касаемых типу вызову функции из системных dll ???
/////////////////////////////////////////
procedure TACMWaveOut.Open(format:PWaveFormatEx); var waveformat:PWaveFormatEx; maxsizeformat,i:integer; begin if (format<>nil) and (HWaveOut1=nil) then begin acmMetrics(0, ACM_METRIC_MAX_SIZE_FORMAT,MaxSizeFormat); getmem(WaveFormat, MaxSizeFormat); move(format^,waveformat^,maxsizeformat); HWaveOut1:=new(PHWaveOut); //create playing handle with waveformatex structure i:=WaveOutOpen(HWaveOut1,0,waveformat,handle,0,CALLBACK_WINDOW or WAVE_MAPPED); if i<>0 then begin showmessage('Problem creating playing handle' + inttostr(i)); exit; end; closed:=false; end; end;
-
Вроде разобрался ! Прикол в том что функция acmFormatChoose() в msacm32.dll почему-то не хочет дружить с дебагером делфи, программа запускается но только не из IDE, может кто знает в чем глюк дебагера и как его можно подличить, или этот диагноз не лечится? с такими приколами и самому не долго в дурке оказаться :)
-
> ntdll.DlgBreakPoint
у тебя там случайно Lame MP3 кодек не стоит, с версией 3.93 и ниже? Он память повреждает при некоторых условиях(хорошо хоть только в своем контектсе - приложение не валится). Отуда и может вылазить точка останова в проверке целостности кучи... Ну и на другие левые кодеки стоит посмотреть, которые вполне могут быть скомпилированны в отладочной версии. А отладчик Delphi тут не причем - он все правильно делает - у него в генокоде записанно останавливаться на исключении генерируемом прерыванием asm int 3 которое и дергается в ntdll.DlgBreakPoint... Неужто название этой функции никаких ассоциаций не навеяло???
-
Неужто название этой функции никаких ассоциаций не навеяло???
да я в первый раз полез в дебри мультимедии...
вот он vct3216.acm 1.6.0.17 Voxware Audio Compression Manager Driver попался !
Огромнейшее спасибо за совет!
|