Posted By: medvidek (Blazni umiraji nadvakrat) on 'CZprogram'
Title: Waveout, SB Live! a bruceni
Date: Tue Aug 23 15:08:27 2005
Hola,
lamu si tu uz par dni hlavu s takovym zajimavym problemem. Mam win32 aplikaci,
ktera pres WaveOut device prehrava audio pomoci win32 API
(waveOutOpen, waveOutUnprepareHeader, waveOutWrite atd). Audio jsou kratke,
obvykle nekolikasekundove klipy, ktere se radi do fronty a prehravaji.
Aplikaci testuju na WinXP. Vse funguje jak ma, pokud neni zvukovka
SoundBlaster Live! Se SB live! mi to obcas udela to, ze po prehrani posledniho
klipu to prida jako "bonus" jeste tak 300ms brumu. Zaboha nemuzu prijit na to,
cim to je. Upgrade ovladacu jsem zkusil, tvrdi, ze mam posledni, na jinem HW
se SB Live! to dela taky.
Celkem jiste muzu vyloucit to, ze bych poslal na prehravani buffer s nejakym
smetim, stejny efekt nastane i kdyz prehravam data, za kterymi je v pameti
nekolik kB nul.
Zjistil jsem nasledujici skutecnosti:
- ne kazdy klip to dela, nektere se prehraji ciste. Mam ale jeden klip
(pipnuti pouzivane pred zacatkem nahravani), ktery je k tomu obzvlast nachylny.
- stava se to jenom u posledni polozky ve fronte, pokud to pipnuti dam
prehrat vickrat po sobe, tak zabruci jenom to posledni
- V nekterych pripadech ani to pipnuti jako posledni polozka ve fronte
nezabruci, ale nemuzu prijit na to, kdy (ale zalezi na tom, co se dela ve
zbytku aplikace - to, co popisuju, je soucast mnohem vetsi aplikace, jsem si
ale jisty, ze nic dalsiho s audiem nepracuje)
- no a perlicka na zaver - zkousel jsem dat si breakpoint do callbacku, ktery
se mi vola, kdyz se dokonci prehravani jednoho klipu. Dal jsem prehravat 2x to
pipnuti a kdyz se to zastavilo na tom breakpointu po prehrani prvniho klipu,
tak to zabrucelo!
Uz fakt nevim, co s tim, budu vdecny za kazdy rozumny napad, co otestovat.
medvidek
--
There are 4 boxes to use in the defense of liberty:
soap, ballot, jury, ammo.
Use in that order.