Šta je novo?

Delphi/BCB ultra brza konverzija jpeg u bmp?

salac

Čuven
VIP član
Učlanjen(a)
28.08.2001
Poruke
2,793
Poena
679
Posto radim projekat koji iz serija jpeg-ova kreira motion sekvencu, interesuje me najbrzi nacin na koji se jpeg moze konvertovati u bmp i sibnuti na ekran. Ja sam probao sa klasicnom upotrebom TImage-a :

myBitmap.Assign(myJpeg);
myImage.Canvas.Draw(0,0,myBitmap);

ali kada treba obraditi mnogo slika (nekih 15-ak frejmova po sec), procesor (amd tbird 1.33) pocne da posustaje, zakuca se na 100% i guta frejmove.
Dakle, dobro bi mi dosla komponenta koja ovo radi sto brze moguce, ili bilo sta slicno.
tnx
 
Za on-the-fly ce biti problema, bez obzira na komponentu - kako god brzu komponentu da nadjes, opet ce iskociti masina koja ima 100MHz manje na kojoj secka. Mozda je bolje da samo promenis logiku, tj. da prvo selektujes slikice, pa da konvertujes u pozadini ili u bafer u ramu ili na disk, a korisniku prikazes samo progressbar u tom trenutku ("generating...") i posle toga user moze da stisne na "play".
 
Ne moze, u pitanju je real-time konverzija, jpeg-ove vucem sa mreznih kamera...
tnx anyway
 
Ako ti je brzina bitna, konverzija ti nije potrebna, jesi li razmišljao o tome da koristis directX za prikaz, (može i neka druga slična biblioteka, primer OpenGL to takođe može brzo da odradi), tako da nemaš konverziju, već rezultat otpakivanja jpg iz buffera šibneš na ekran.
 
Upravo je problem dekompresija JPEG-ova. Kao sto rekoh, treba mi jako jako brzi nacin za prebacivanje JPEGa u (pozeljno) bitmapu - prosto zato sto se sa bitmapama moze raditi sve i svasta. Sa 3d bibliotekama nisam do sada radio, hoces da kazes da directx (ili opengl, whatever) u sebi sadrzi takvu rutinu? Tj da fenomenalno brzo izbaci jpeg na ekran?
 
Nažalost jpeg je jpeg, ako tvoje kamere komprimuju u ovaj format u hardveru, teško da ćeš softverski postići tako brzo otpakivanje, što je komprimovano jednim formatom, mora se u tom formatu i otpakivati. Možda možeš da proveriš ima li načina da podatke o slici dobiješ u "sirovom" formatu bez kompresije (ako to kamera podržava).
Ono o čemu sam govorio kada sam napomenuo biblioteke tipa OpenGL je brz prikaz sirovih, otpakovanih podataka, u svakom slučaju i za zapis BMP formata se sigurno gubi ako ništa onda procesorskog vremena.
 
Odnos vremena konverzija JPEG-a/bacanje bitmape na ekran je rekao bih 50:1.
U svakom slucaju hvala na idejama i pomoci.
 
Da li postoji mogucnost da simuliras MJPEG signal sa nizom JPEG slika i da preko "Frame serving"-a frejm po frejm saljes nekom Video DirectX dekoderu?
 
Da probam da budem od vise koristi.
Evo ti nekoliko linkova ka vise biblioteka, source-ova (ima i Pascal, a i MASM verzija) koji dekompresuju JPG:
http://www.programmersheaven.com/zone15/cat160/6778.htm
http://www.programmersheaven.com/zone15/cat160/6783.htm
http://www.programmersheaven.com/zone10/cat453/16685.htm
http://www.programmersheaven.com/zone10/cat453/2081.htm
http://www.programmersheaven.com/zone10/cat453/15254.htm

E sad, ili koristineki DLL ili napravi obj fajl u Builderu ili ubaci asm kod ili ubedi onaj Turbo Pascal kod da radi u Delphiju...

Sto se brzine tice - sa jedne strane MJPEG se vrte itekako lepo brzinom preko 60fps ako treba, a siguran sam da ne koristis velike rezolucije.
Ako ti zatreba, perfektna i besplatna, superbrza biblioteka za rad sa grafikom je Graphics32:
http://www.g32.org/graphics32/index.html
Mnogo mocnije i brze od TBitmap/TCanvas klasa. Ja je vrlo intenzivno i vec dugo koristim.
 
Hvala na tip-ovima i narocito linkovima. To je ono sto mi je bilo potebno. Btw, bas sam se spremao da isprobam Graphics32 biblioteku , na koju sam naleteo pre neki dan.
 
Graphic32 je vrlo kvalitetna biblioteka i predstavlja osnovu za bilo kakav kvalitetan rad sa grafikom pod Delphijem. Ukljuci tu i GraphicEx.
Koristili smo i razne komercijalne bibl. (ukljucujuci i LeadTools) i na kraju su se ove freeware bibl. pokazale najboljima.
 
Nazad
Vrh Dno