Citat:
Rapaic Rajko: Peke, ima tu par stvari iz tvog izlaganja koje mi bas nisu jasne.
Pojasnicu nadam se
Citat:
Rapaic Rajko:Buffer: ko kreira buffer, tvoja aplikacija (mainthread), neki worker thread, dll ili nesto trece? Gde se kreira: heap (dinamicka memorija) ili na stack-u? Kako se kreira, samo ucitas dll ili treba i da pozoves neku funkciju iz dll-a?
Buffer se kreira output plugin pozivajuci se na DirectShow i Directsound prilikom ucitavanja DLL-a. On moze biti interno menjan u DLL-u.
Citat:
Rapaic Rajko:Scenario1: recimo da se buffer kreira pozivom neke funkcije iz dll-a, kao lokalna varijabla (znaci stack) u toj funkciji. Taj buffer je 'ziv' sve dok ne izadjes iz funkcije. U tom slucaju, resen problem, jer svaki thread u Win-u ima svoj stack, i jedan drugog ne ometaju.
Jok. To nije to.
Citat:
Rapaic Rajko:Scenario2: buffer se kreira na heap-u, opet pozivom neke funkcije iz dll-a. Heap jeste zajednicki za celu aplikaciju (i njene thread-ove), ali posto je svaki thread alocirao svoj buffer pozivom pomenute funkcije, opet nema kolizije.
Moglo bi se reci. da output plugin kreira pozivanjem Init funkcije u DLL mada nisam 100% siguran jer nije isti sllucaj kod svakog DLL-a. To je ono sto me i nervira nemam source od plugina da mogu lepo da ih debagujem i vidim sta se desava.
Citat:
Rapaic Rajko:Scenario3: buffer se kreira SAMO JEDNOM, samim ucitavanjem dll-a, znaci za sve thread-ove jedinstveno. E, ovo je malo slozeniji slucaj. Resava se tako sto se napravi thread-safe klasa/omotac oko buffer-a, i ta klasa radi zastitu resursa (buffer-a), tako sto sprecava moguce kolizije thread-ova nad buffer-om. To su vec klasicne tehnike koriscenjem criticalsection-a, mutex-a ili sta vec.
I ovo bi mogao da bude scenario, ali isto kao u slucaju scenarija 2 nisam 100% siguran iliti kompetentan
Citat:
Rapaic Rajko:Aj sad pojasni koji je stvarni scenario u tvom slucaju (osecam da nije ni jedan od gore navedenih

).
Saljem primer programa koji mi je bio vodilja za jedan kanal. Cisto da se vidi sta u stvari treba da se desi

Nadam se da sam malo jasniji. a ako nisam ponovo na objasnjavanje.
U promeru imas IN_Wave (Za Wav), In_MP3(za MP3) i Out_Wave (za output na Windows Media Mapper) moze da se koristi i Out_DS iz winampa za DirectSound Output.