• 16 odgovora
  • 4.265 pregleda
BCB kako napraviti sopstveni divX player 14.08.2005. u 19:59 · pre 257 meseci #1
Brljao sam po INNetu alli nikako da nadjem &
ili neko sturo uputstvo za pocetak.
Ima li neko ideju || link

Potpis
Tape loading error
BCB kako napraviti sopstveni divX player 15.08.2005. u 15:58 · pre 257 meseci #3
Hvala na adresi
Tu je ono sto mi treba
btw MediaPlayer nije za te svrhe ( ko ne veruje neka proba)
Potpis
Tape loading error
Re: BCB kako napraviti sopstveni divX player 15.08.2005. u 17:45 · pre 257 meseci #4
Mogu da ti posaljem moj MiniPlayer.dll i interface. Pusta sve sto ima instaliran codec.
API izgleda otprilike ovako:

Code:

IPlayerControl *MyPlayer = g_LPlayerControl.NewPlayerControl();

MyPlayer->SetWindowHandle(neki handle); // handle prozora
MyPlayer->SetFinename("foo.mpg(avi)"); // ime fajla
MyPlayer->Play(); 
....

MyPlayer->Stop();
g_LPlayerControl.DeletePlayerControl(MyPlayer);


Player koristi DirectShow filter graph.

Koriscen je u Will Of Steel za vreme razvoja igre. Nisam siguran da li je ostao u finalnoj verziji igre.

yooyo
Re: BCB kako napraviti sopstveni divX player 16.08.2005. u 23:41 · pre 257 meseci #6
Evo ga...

Test primer pre kompajliranja prepravite da prikazuje na AVI file na disku.
Otovrice se prozor sa ogromnim dugmetom... ako se film ne vidi u prozoru.. samo malo pomerite prozor da naterate windows da osvezi taj deo ekrana. Primer je glup i sluzi samo za testiranje dll-a.

Napisan je u MSVC++ 6 i trebalo bi da imate sve runtime biblioteke vec instalirane u system32, ako imate Win2k ili XP.

Nisam testirao kako radi u borlandu, ali mi se cini da bi trebalo da i tu radi.
Helpa nema, ali postoje komentari u mini2.h koji su dovoljni.

Ako nesto baguje... javite, pa da ga popravljam!



yooyo

[Ovu poruku je menjao yooyo dana 17.08.2005. u 00:44 GMT+1]
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 14:37 · pre 257 meseci #8
Verovarno gcc i MSVC se mnogo razlikuju kod calling konvencija. Mozes li da utvrdis gde program puca, prilikom ucitavanja dll-a ili prilokom kreiranja instance mini playera ili prilikom poziva neke od metoda mini playera?

Ajde da i to resimo pa da ga napravimo da radi i sa gcc-om.

yooyo
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 14:41 · pre 257 meseci #9
meni radi u mvsc 6,ali ne shvatam koja je fora sa onim dugmetom i film se pokrene samo kada pomerim window inace se cuje zvuk i vidi se samo "aaa" i provaljujem da je to neko ogromno dugme preko celog ekrana.
Potpis
www.surrealtalesthegame.com
www.chemninja.com
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 15:22 · pre 257 meseci #10
Test program treba da otvori nekakav prozor i da u njemu pusti film. E mene je mrzelo da pravim wndclass i WinProc i jos nekoliko sitnica, nego sam samo napravio prozor u obliku dugmeta i pustio film preko njega.

Vas prozor u kome treba da se vrti film treba do bude npr.. TFrame iz BCB-a.

Ajde, probacu da napravim drugi test program..

yooyo
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 16:33 · pre 257 meseci #11
Malo sam debagovao program i uvidio da puca na sledecoj liniji:
Code:

g_pc->SetWindowHandle(hwnd);

Linija izgleda bezazleno! :)
Jos nesto...
Sta ce ti variabla hInstance kad se ona nigdje ne upotrebljava!
Pozdrav!
Potpis
[email protected]
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 17:00 · pre 257 meseci #12
Evo ga update sa par bugfixova:

1. Korektno fitovanje pozicije i velicine videa unutar prozora (touch inside)
2. Novi demo. Startujte test.exe i drag'n'drop bilo koji video file na prozor

yooyo

@Buffy:
Player koristi sledeci design...
Postoji pure virtual klasa IPlayerControl. Implementacija te klase se nalazi u dll-u.
Kada se kreira nova instanca implementacije, dll vrati samo pointer na interface preko koga se poziva implementacija. Ocekivao sam da ce razni kompajleri generisati tablicu viruelnih funkcija na isti nacin.

btw.. da li gcc podrzava __stdcall ili __cdecl calling konvencije?

yooyo
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 17:33 · pre 257 meseci #13
Trebao bi da podrzava.
Samo ja ne znam tacno koji je default call.
Mozda se kod MSVC-a default call razlikuje od gcc default-a.
Ako si stavljao atribute ne bi trebalo da bude problema.
Ali bez obzira trebalo bi da moze da radi.
Ti si rekao da je problem u v-table-u, ali to ne bi trebao da bude problem, jer ja mogu da pozivam sve metode koje si ti koristio u test primjeru sem SetWindowHandle(HWND).Vjerovatno je onda problem u ovoj metodi, jer kad pozovem ovu metodu, automatski probgram puca.
Pozdrav!
Potpis
[email protected]
Re: BCB kako napraviti sopstveni divX player 17.08.2005. u 17:56 · pre 257 meseci #14
Ako pogledas u mini2.h videces da svaka funkcija interfejsa ima __cdecl:
Code:
    
virtual int __cdecl SetWindowHandle(HWND destHandle) = 0;


Ovo sam morao da uradim da bi BCB mogao da koristi dll.

yooyo
Re: BCB kako napraviti sopstveni divX player 18.08.2005. u 00:15 · pre 257 meseci #15
Debagovao sam celu stvar i utvrdio da kada MinGW pozove SetWindowHandle, poziva se u stvari SetFilename !? Definitivno je neki vtable problem, ali ja nisam dovoljno upoznat sa gcc-om da bih ovo razresio.

yooyo
Re: BCB kako napraviti sopstveni divX player 18.08.2005. u 17:44 · pre 257 meseci #17
Citat:
Buffy: Pokusaj minipleyer.dll komapjlirati pomocu MinGW-a, pa ce vjerovatno raditi sa sva tri komapjlera.


To je tek nemoguce, jer se oslanja na MS DirectShow, tj. zavisi od gomile .h, .cpp, i .lib fajlova iz distribucije DirectX SDK, koje MinGW ne moze da "svari".

yooyo
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme