PDA

View Full Version : Strano comportamento programma in C [compressore Jpeg]


dario79
24-06-2005, 22:47
Ciao ragazzi per la mia tesi sto modificando il programma cjpeg noto compressore open source scritto in c per linux.
è un compressore che parte da riga di comando e accetta come parametri tipici:

cjpeg input.xxx > output.jpg

bene io tale programma devo poi inserirlo in un processore anche esso open source, il leon sparc, per realizzare un compressore jpeg hardware e valutare il consumo di potenza in fase di compressione....
leon non gestisce dischi per cui l'input file non posso prelevarlo con Fread (per l'output non ho problemi perchè cjpeg mi sputa l'output su stdout quindi a video e mi va anche bene), ho pertanto creato un file .h con una grossa matriciona e un programmino che mi salva il file (tratto i .pgm codificati ascii come input) nella matrice.....poi ho modificato il tutto per far puntare alla matrice e tutto funziona alla grandissima....

ora arriva il problema....

devo anche togliere i vari argv e argc poichè non devo prevedere opzioni (non ho sistema operativo qui) quindi devo eliminare tutto quello che riguarda la "bash", quindi come dire fornisco alimentazione al processore e lui parte a comprimere e si ferma.....

anche qui ho fatto tutto ma ho uno strano problema...

se lancio il programma da DDD e gli do semplicemente "run" lui mi spara su video tutto e mi dice program exited normally (è tutto ok anche se do come opzione a ddd: > out.jpg vedo che l'imamgine è perfetta)
se invece da shell gli do: cjpeg + invio (equivalente al run) il cursore va a capo e non fa una cippa.....e questa cosa non me la spiego proprio....

inoltre se do cjpeg + parametri lui è ancora sensibile a tali parametri (poichè compila il file e non + la matrice!) ma io li ho tolti dal main gli argv!!
da notare che in cjpeg la funzione parse_switches analizza le opzioni e anche se la tolgo fisicamente dal file il tutto funge come prima...quindi non sbattetevi a vadere li dentro...il rdppm.c analizza e gestisce l'estensione ppm/pgm e passa ad altri file le scanlines lette (nel mio caso sono quelle della matriciozza contenuta in header.h incluso in alto)

vi allego i file su cui ho lavorato...sperado in una vostra mano a capire dove sta il problemino....grazie a tutti!