Ahoj,
clanek me velmi zaujal, tak sem si do DEV-C++ doinstaloval balicek SDL_mixer-1.2.6-1mol.DevPak a vse perfektne fakci, az na... ;)
Pri svem laborovani jsem narazil na par zajimavosti, na ktere si neumim 100%-ne vydedukovat odpoved, tak kdyby nekdo vedel, rad bych byl o neco chytrejsi...
1) Kdyz u meho programu mam knihovny, nainstalovane balickem DevPak: SDL.dll (verze??? - 1.23MB) a SDL_mixer.dll (verze??? - 1,68MB), program nahlasi chybu a padne na hubu... Kdyz jsem stahl nejaky dll z netu, tak sem to nakonec rozchodil, ale pri stisku klavesy reagoval program asi az po 1 vterine - pri programovani her nepouzitelne. Nakonec jsem od nejake hry zkopiroval SDL.dll (1.2.5.0 - 220kB) a k tomu stahl z netu SDL_mixer.dll (1.2.6.0 - 308kB) - nevi nekdo, jake verze dll by se meli pouzivat a kde je stahovat?
2) Kdyz mam pustenou aplikaci a program Winamp je v popredi, v mem programu s SDL_mixerem se vsechny kanaly samy pauznou a kdyz je v popredi muj program, tak se zase rozjedou. Nevi nekdo proc?
3) Kdyz v 6-ti kanálech prehravam hudbu, spravce uloh ukazuje, ze program zabira neco pres 100MB v RAM - ale kdyz se program za staleho prehravani minimalizuje, najednou zabira jen asi 2MB a postupne tato hodnota roste... Nevi nekdo proc?
Vlákno názorů k článku
SDL: Hry nejen pro Linux (19)
8. 7. 2005 21:49
Re: SDL pod Widlema
Pouze k bodu 2). Nevidel jsem zdrojaky SDL, ale s problemem jsem se setkal. Zakopany pes je nejspis v inicializaci DirectSound knihovnou SDL, protoze zde se funkce SetCooperativeLevel vola s parametrem, ktery urcuje, jak se ma spolupracovat s ostatnimi aplikacemi. Kdyz se pouzije DSSCL_EXCLUSIVE, tak DirectSound hraje pouze, kdyz je okno aplikace v popredi, lepsi je pouzit DSSCL_PRIORITY. Jeste to souvisi s nastavenim CreateSoundBuffer a parametrem DSBCAPS_GLOBALFOCUS a DSBCAPS_STICKYFOCUS (tenhle je ten spravny pro hrani na pozadi).
Nemuzu rict vic, ponevadz pres GPRS si moc srandy s hledanim informaci neuziju. Vice viz www.msdn.com a www.google.com. Poznamka: s SDL, ani s DirectSound jsem v zivote nepracoval, takze informace mohou byt nepresne a zavadejici :-)
Nemuzu rict vic, ponevadz pres GPRS si moc srandy s hledanim informaci neuziju. Vice viz www.msdn.com a www.google.com. Poznamka: s SDL, ani s DirectSound jsem v zivote nepracoval, takze informace mohou byt nepresne a zavadejici :-)
9. 7. 2005 17:04
Re: SDL pod Widlema
Dik za vysvetleni. Me to nejak netrapi, ze bych to musel resit, jen sem si toho vsiml a nevedel proc to tak je... R.
9. 7. 2005 2:51
Re: SDL pod Widlema
Vami popisovany devpak je urcen pro pouziti s timto SDL devpakem: http://devpaks.org/details.php?devpak=12 (SDL.dll 248745 bajtu). SDL_mixer devpak sam o sobe zadne SDL.dll neobsahuje, pravdepodobne se k vam dostalo jinudy a proto to dohromady nefunguje.
SDL_mixer v dane devpaku je ve verzi 1.2.6, to se snadno pozna z jeho nazvu :-)
SDL devpak nainstaluje sve SDL.dll do dev-cpp\bin
SDL_mixer depvak nainstaluje SDL_mixer.dll a smpeg.dll do dev-cpp\dll (a Windows\system32)
SDL_mixer v dane devpaku je ve verzi 1.2.6, to se snadno pozna z jeho nazvu :-)
SDL devpak nainstaluje sve SDL.dll do dev-cpp\bin
SDL_mixer depvak nainstaluje SDL_mixer.dll a smpeg.dll do dev-cpp\dll (a Windows\system32)
9. 7. 2005 17:00
Re: SDL pod Widlema
Ano, je to logicke a take jsem to takto resil. Program se sice rozjede, ale pri stisku klavesnice se ozve zvuk se zpozdenim asi jedne vteriny! Proto jsem badal proc, a kdyz jsem nahodou nakopiroval jinou dll od nejake hry, tak se problem vyresil... Ale to je jedno, chodi to pekne, kdyz se s tim clovek trocha popere...
Radek.
Radek.
10. 7. 2005 23:19
Re: SDL pod Widlema
Zdravim.
Já jsem oboje kompiloval a všechno fungovalo tak, jak má, takže s timhle neporadím.
To sekundové zpoždění bude s největší pravděpodobností dáno velikostí audio bufferu - poslední parametr Mix_OpenAudio(). Čím větší bude tato hodnota, tím delší zpoždění. Aktualizace (např. požadavek na přehrávání/zastavení) se, zjednodušeně řečeno, nedělají při volání funkce, anobrž ;) až v době, kdy zvukovka požádá o další data. Zkuste tam zadat číslo 512 a mělo by to pomoci. Naproti tomu, pro hudbu by měl být buffer spíš větší, aby nedocházelo k jejímu trhání, když aplikace nestíhá - předpokládám, že právě proto jsou v mixeru zvuky a hudba oddělené (možná blud). Možná jsem to měl zdůraznit i u mixeru, myslím, že jsem to psal už předtím u SDL audia.
Jujda, 100 MB paměti jenom na hudbu, to je opravdu ažaž... ;) Pro hudbu je speciální kanál, ve kterém se dekóduje za chodu. Zkuste si nahrát do obyčejného zvukového kanálu třímegový ogg a stopněte si, jak dlouho to bude trvat.
Doufám, že je alespoň půlka z toho, co jsem teď napsal, pravda ;) Neměl bych to říkat, ale zvuky jsem se učil za chodu až při psaní článku :(
Já jsem oboje kompiloval a všechno fungovalo tak, jak má, takže s timhle neporadím.
To sekundové zpoždění bude s největší pravděpodobností dáno velikostí audio bufferu - poslední parametr Mix_OpenAudio(). Čím větší bude tato hodnota, tím delší zpoždění. Aktualizace (např. požadavek na přehrávání/zastavení) se, zjednodušeně řečeno, nedělají při volání funkce, anobrž ;) až v době, kdy zvukovka požádá o další data. Zkuste tam zadat číslo 512 a mělo by to pomoci. Naproti tomu, pro hudbu by měl být buffer spíš větší, aby nedocházelo k jejímu trhání, když aplikace nestíhá - předpokládám, že právě proto jsou v mixeru zvuky a hudba oddělené (možná blud). Možná jsem to měl zdůraznit i u mixeru, myslím, že jsem to psal už předtím u SDL audia.
Jujda, 100 MB paměti jenom na hudbu, to je opravdu ažaž... ;) Pro hudbu je speciální kanál, ve kterém se dekóduje za chodu. Zkuste si nahrát do obyčejného zvukového kanálu třímegový ogg a stopněte si, jak dlouho to bude trvat.
Doufám, že je alespoň půlka z toho, co jsem teď napsal, pravda ;) Neměl bych to říkat, ale zvuky jsem se učil za chodu až při psaní článku :(
11. 7. 2005 18:10
Re: SDL pod Widlema
Ja su vuuuuul!!! Ja ve funkci pro prehravani zvuku prehravam hudbu! No tak se moc omlouvam. To kvantum zabrane pameti se uz timto vysvetluje...
Ale i kdyz jsem vse dal do poradku a ve funkci pro prehravani zvuku prehravam pouze kratke zvuky, tak s knihovnami nainstalovanymi balicem DevPak - sdl.dll verze 1.2.8 a sdl_mixer.dll verze 1.2.6 stale po stisku klavesy trva priblizne vterinu, nez se ozve zvuk. Pri pouhem nakopirovani sdl.dll verze 1.2.5.0 - kterou jsem nasel u nejake hry, vse funguje perfektne... Ale to je jen takova blbuskta...
Dik moc za nakopnuti, Radek.
Ale i kdyz jsem vse dal do poradku a ve funkci pro prehravani zvuku prehravam pouze kratke zvuky, tak s knihovnami nainstalovanymi balicem DevPak - sdl.dll verze 1.2.8 a sdl_mixer.dll verze 1.2.6 stale po stisku klavesy trva priblizne vterinu, nez se ozve zvuk. Pri pouhem nakopirovani sdl.dll verze 1.2.5.0 - kterou jsem nasel u nejake hry, vse funguje perfektne... Ale to je jen takova blbuskta...
Dik moc za nakopnuti, Radek.
12. 7. 2005 8:09
Re: SDL pod Widlema
Taky mi to dela :-( Doporucuji pouzivat oficialni build DLLka http://www.libsdl.org/release/SDL-1.2.8-win32.zip ktery se da najit vzdy pro posledni verzi SDL na strance http://www.libsdl.org/download-1.2.php v sekci Runtime Libraries\Win32
12. 7. 2005 11:44
pro Michal Molhanec - prehravani MP3
Uplne prvni dotaz v teto diskuzi je, jestli existuje nejaka verze sdl_mixeru pod widle, co plne podporuje prehravani MP3. Ja sem si stahl DevPak SDL_mixeru a tam je SDL_mixer.dll, ktera ma asi 1,5MB. Prislo mi to hodne moc - tak sem dumal proc asi, zkusil jsem prehrat MP3ku a hups, ono to jelo ;) - takze doporucuji!!!
Jinak s tim prehravanim hudby v kanalech zvkuku, to jsem se zas jednou s necim "predvedl"! ;)
Jinak s tim prehravanim hudby v kanalech zvkuku, to jsem se zas jednou s necim "predvedl"! ;)
12. 7. 2005 13:46
Re: pro Michal Molhanec - prehravani MP3
Ehm, díky za snahu, ale já jsem autor SDL_mixer devpaku :-) MP3 sice přehrává, ale bohužel se spoustou rušivých artefaktů. BTW vlastní jádro MP3 přehrávače je v SMPEG.dll, SDL_mixer.dll je tak velkej jenom protože není stripnutej.
Nicméně díky za zájem.
Nicméně díky za zájem.
13. 7. 2005 1:31
Re: pro Michal Molhanec - prehravani MP3
Dobrá věc se podařila, konečně se mi povedlo zkompilovat verzi, která přehrává MP3 bez problémů, aktualizovaný devpak je na obvyklém místě http://devpaks.org/details.php?devpak=6
13. 7. 2005 16:13
Re: pro Michal Molhanec - prehravani MP3
Super! Velice povedena knihovna a ten novy DevPak taky!
Stahl se si ho a z adresy http://www.libsdl.org/release/SDL-1.2.8-win32.zip jsem stal sdl.dll a uz vse frci na 100% ;) (pred tim mi s nejakou sdl.dll bud vpoho jely udalosti, ale vytuhl hlavni panel ve widlich, nebo s jinou sdl.dll nevytuhl hlavni panel, ale udalosti byly s 1s zpozdenim)
PS: jeste doporucuji programem upx.exe snizit velikost dll, maji pak smesnou velikost...
Dik moc vsem za rady a nakopnuiti, Radek.
Stahl se si ho a z adresy http://www.libsdl.org/release/SDL-1.2.8-win32.zip jsem stal sdl.dll a uz vse frci na 100% ;) (pred tim mi s nejakou sdl.dll bud vpoho jely udalosti, ale vytuhl hlavni panel ve widlich, nebo s jinou sdl.dll nevytuhl hlavni panel, ale udalosti byly s 1s zpozdenim)
PS: jeste doporucuji programem upx.exe snizit velikost dll, maji pak smesnou velikost...
Dik moc vsem za rady a nakopnuiti, Radek.
jan16 (neregistrovaný)
2. 2. 2007 11:28
Re: SDL pod Widlema
Já bych moc nedoporučoval 512, když jsem to testoval, tak doporučuju takhle: 512 - minimálně, 1024 - dobrý do her, 2048 - eště se ta odezva dá přežít + do her, 4096 - jenom do přehrávačů, ne do her, 8192 - zbytečně moc :)

