Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ucitavanje i dupliranje ucitanih DLL-ova

[es] :: Pascal / Delphi / Kylix :: Ucitavanje i dupliranje ucitanih DLL-ova

Strane: 1 2

[ Pregleda: 5716 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Ucitavanje i dupliranje ucitanih DLL-ova18.12.2004. u 02:53 - pre 235 meseci
Ovako... winamp moze da pusta zvuk samo na jednoj muzickoj kartici, jedna muzicka kartica ima jedan svoj interni buffer. Ako imas 1000 OUT pluginova sa zasebnim bufferom i hoces da ih pustis sve od jednom to ce tesko da ide. Prvo moras svih 1000 da mixujes u jedan buffer i da ga das muzickoj tako da nema svrhe imati 1000 OUT pluginova, dovoljan je samo JEDAN sa JEDNIM bufferom. Na tebi je da u taj buffer umiksujes sve sto ti je potrebno. DSP plugin moze da pored podataka koje dobija od IN plugina koji obezbedjue Winamp da kreira jos koliko god hoces internih IN pluginova i da sve njihove ulaze mixuje i prosledi ih u OUT plugin koji opet moze da ima svoje interne pluginove i da na izlazu pusti nesto sto nije postojalo na izlazu iz DSP plugina. Jos jednom ti kazem... napisi nekoliko IN, DSP i OUT pluginova i jednostavno cackaj malo po njihovim bufferima i videces da je sasvim dovoljan jedan buffer u OUT pluginu.
 
Odgovor na temu

Peke
Ventis Media Inc.
Novi Sad

Član broj: 24103
Poruke: 66
*.neobee.net.

Sajt: www.mediamonkey.com


Profil

icon Re: TimeSpam funkcija u Delphiju 718.12.2004. u 20:17 - pre 235 meseci
Citat:
Srki_82: Ovako... winamp moze da pusta zvuk samo na jednoj muzickoj kartici, jedna muzicka kartica ima jedan svoj interni buffer.


Ko kaze Uzmi primer 5.1 to su ti 4 Odvojena Stream-a (Buffer-a) objedinjena u DirectX. Ja uspesno delim Front (stereo), Rear (Stereo), Center i Subwoofer (Mono) kao posebne kanale nezavisne od ostalih i to sve sa najobicnijom mediaPlayer komponentom i DirectSound Unit-ima. Bez DLL-ova, ...

Citat:
Srki_82: Ako imas 1000 OUT pluginova sa zasebnim bufferom i hoces da ih pustis sve od jednom to ce tesko da ide. Prvo moras svih 1000 da mixujes u jedan buffer i da ga das muzickoj tako da nema svrhe imati 1000 OUT pluginova, dovoljan je samo JEDAN sa JEDNIM bufferom.


Ma netreba mi 1000, Treba mi do 16 Hardware-skih kanala Koliko DirectSound i vecina kartica podrzava (Mozes to proveriti u Konfiguraciji OUT_DS u General Tab-u za svaku karticu posebno)

Citat:
Srki_82: Na tebi je da u taj buffer umiksujes sve sto ti je potrebno. DSP plugin moze da pored podataka koje dobija od IN plugina koji obezbedjue Winamp da kreira jos koliko god hoces internih IN pluginova i da sve njihove ulaze mixuje i prosledi ih u OUT plugin koji opet moze da ima svoje interne pluginove i da na izlazu pusti nesto sto nije postojalo na izlazu iz DSP plugina.


I sve se svodi na jednu pesmu i jednu Plylistu, nema ovo direktne veze sa Winampom vec se samo koriste OUT i IN Plugini od Winampa zbog njihove rasprostranjenosti a inace je potpuno drugi Player. A i DLL kiji rezervise 5MB u Memoriji nije neki problem ako imas i 256Ram a ne da govorimo vise. U ostalom oni se dinamicki koriste tako da nema bojazni za bilo cim drugim. A extremi od 1000 Hardware kanala nije problem nikakav jer kartica koja podrzava 1000 kanala sigurno nece koristiti MediaMonkey kao program vec ce biti u nekom Milionskom studiu i kostati bar toliko i najcesce ce biti mixeta sa svojim procesorom,....

Citat:
Srki_82: Jos jednom ti kazem... napisi nekoliko IN, DSP i OUT pluginova i jednostavno cackaj malo po njihovim bufferima i videces da je sasvim dovoljan jedan buffer u OUT pluginu.


Imam ja napisanih 2 IN, Jedan DSP i Jedan OUT plugin Nije problem u tome vec u samoj Arhitekturi Winampovog SDK koji nije namenjen za rad sa Multi-Thread Funkcijama vec se on kaci na Heap od samog EXE Thread-a. Odgovor/Resenje teme takvo kako je jedino sto u stvari resava problem. Sto i oni Winamp primeri pokazuju. Jednostavno mora se simulirati App. Multi Instance iz jednog Thread-a i sve radi kako treba.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Ucitavanje i dupliranje ucitanih DLL-ova19.12.2004. u 01:58 - pre 235 meseci
Ocigledno nije u mojoj moci da ti pomognem... samo bezveze trosis vreme citajuci ono sto pisem... sorry. I dalje stojim iza onoga da je sasvim ok sto dobijes dva ista handle-a kad dva puta ucitas isti dll. Probaj da pronadjes source nekog crossfade DSP plugina i vidi kako istovremeno pusta dva fajla.
 
Odgovor na temu

Peke
Ventis Media Inc.
Novi Sad

Član broj: 24103
Poruke: 66
*.neobee.net.

Sajt: www.mediamonkey.com


Profil

icon Re: TimeSpam funkcija u Delphiju 719.12.2004. u 03:39 - pre 235 meseci
Citat:
Srki_82: Ocigledno nije u mojoj moci da ti pomognem... samo bezveze trosis vreme citajuci ono sto pisem... sorry.


Nazalost, I nebrini nikada nije bezveze citajuci tudje ideje, pa makar ti i ne pomogle. Svaki put kada ti neko kaze ideju, ti preispitas svoju i stalno ponavljas te na kraju ti ili neko drugi se seti neceg pametnog. BTW A sta je sa tvojim vremenom koje si potrosio na citanje i mozganje?

Citat:
Srki_82: I dalje stojim iza onoga da je sasvim ok sto dobijes dva ista handle-a kad dva puta ucitas isti dll.


To i jeste normalno ponasanje DLL-ova u Win-u, Linux je to mnogo fleksibilniji ako mu kazes da hoces jedno to i dobijes. U 99% Slucajeva ovakvo ponasanje Windows-a je prakticno i pozeljno, a meni nije trebalo bas da nabasam na onaj 1% Ebiga.

Citat:
Srki_82: Probaj da pronadjes source nekog crossfade DSP plugina i vidi kako istovremeno pusta dva fajla.


Nasao tj. disasemblirao sam jedan i dosao sam do jednog vrlo logicnog resenja. Sve to funkcionise ovako.

Out buffer je stalno pun dok se pusta pesma, taj buffer se puni iz In plugina Svi Crossfader plugini rade sledece:
1. posalju Winampu WM_User Song ednded Message kada Length(In-Plugin stream)-(in-Plugin Decoded) < Out Buffer

2. Winamp proveri da li postoji sledeca pesma u Play listi i ako postoji inizializuje novi IN Buffer i posalje Out Pluginu Stream pointer

3. Out plugin lepi/puni Out buffer sa novim Stream-om. Zato se i pojavljuje u winamp-u Playing ali pusteno vreme je uvek 00:00 dokle god se prethodna pesma stvarno i ne zavrsi.

4. kada prethodni In stream Buffer postane Last In Stream Played = Length(Last In Stream) novo ucitani in stream dobija In stream played > 0 i tako u nedogled. Dok opet Length(In-Plugin stream)-(in-Plugin Decoded) < Out Buffer Ne bude true.

Ovo je najdnostavnije receno. Sto se tice DSP plugin-a on se nalazi izmedju IN i OUT Plugina i menja Stream Direktno Tj. stream relacije idu ovako IN->DSP->DSP+IN(ili samo DSP u slucaju Digital Sound Processing efekta na samom Stream-u kao sto su Reverb, Echo, ...)->OUT dalje i nije bitno jer to zavisi od samog Out plugin-a. Zato i imas Delay od aktiviranja DSP Plugina do njegovog izvrsenja i toga da cujes efekat DSP Plugin-a. Nazalost DSP Plugin nema uticaja na play listu.

Ja sam definitivno poceo da smaram ovde ali sta cu kada me ovaj problem jako jako nervira i nemogu da prihvatim da je neresiv, iako nemogu sam da ga resim.
Sta cu nedostatak sivih celia i pravilan algoritam za resavanje
 
Odgovor na temu

Peke
Ventis Media Inc.
Novi Sad

Član broj: 24103
Poruke: 66
*.dialup.neobee.net.

Sajt: www.mediamonkey.com


Profil

icon Re: Ucitavanje i dupliranje ucitanih DLL-ova01.02.2005. u 04:57 - pre 234 meseci
Hvala svima na pomoci, problem je resen (delimicno) nisam najbolje zadovoljan ali u svakom slucaju naterali ste me da malo dublje udjem u problem, za sada sve ide kako bi trebalo.

Ako nekog interesuje neka se javi ako zeli primer Engine-a.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Ucitavanje i dupliranje ucitanih DLL-ova01.02.2005. u 19:11 - pre 234 meseci
Mogao bi da okacis engine negde pa da mozemo da ga download-ujemo i vidimo kako si resio problem. Mozda neko dobije neku zanimljivu idejicu koja ti moze pomoci :)
 
Odgovor na temu

Peke
Ventis Media Inc.
Novi Sad

Član broj: 24103
Poruke: 66
*.202.EUnet.yu.

Sajt: www.mediamonkey.com


Profil

icon Re: Ucitavanje i dupliranje ucitanih DLL-ova02.02.2005. u 05:39 - pre 234 meseci
Delimicno uradjen primer mozes skinuti sa http://peke.narod.ru/test/mp3playertest.zip

Uzivajte, Mislim da se sada delimicno videti sta je bio osnovni problem u engine-u. Inace primer je radjen samo za MP3 Fajlove i ogranicen je na 8 Player-a cisto zbog toga sto Integrisane kartice podrzavaju do 16 Hardware-skih kanala i niz bogcega drugog. Pa da se osiguram da ne nestane

Samo raspakuj arhivu u neki Dir, startuj i uzivaj u testiranju.

U User TEMP Direktorijumu se kreiraju TempPlayer-i Tako da se posle testa mogu obrisati.

Kada bih samo uspeo da izbegnem kreiranje istih onda bi ceo osnovni problem i bio resen u potpunosti. Inace to stvarno nije moguce napraviti is DSP-a nazalost jer svaki pravi svoj Application.OnMessage event koji je vezan za APPLICATION.HANDLE Mada sam i to ovako uspeo da resim jer svaki player ima svoj Handle i potpuno zasebnu kontrolu da bih dobio nezavisnost svakog ponaosob. Nastavak razvoja ide ka tome da mogu svakom player-u dodeliti Drugi izlaz (Muzicku karticu) ali to je vec drugi problem koji je i resen.
Sada ostaje samo da se resi osnova tj. ova tema.

Ponovo hvala svima na idejama i pomoci.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Ucitavanje i dupliranje ucitanih DLL-ova

Strane: 1 2

[ Pregleda: 5716 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.