V souboru main.c mám:
extern unsigned char * image_buffer; // Final image
V includovaném souboru soubor.h mám:
unsigned char * image_buffer; // Final image
(jestli to chápu správně tak jsou to dvě nezávislé proměnné, protože ten druhý buffer platí jen pro includovaný soubor (soubor.c a soubor.h ) a funkce pro čtení a zápis do souboru v něm .
mám ale dvě verze toho souboru.c a souboru.h - jedna je původní funkční, druhá je editovaná a nefunkční, ačkoliv způsob deklarace obrazového bufferu je v obou verzích stejný.
Tak se ptám - když dám do projektu původní verzi soubor.c a soubor.h
spouštím z mainu:
read_JPEG_file_rgb2hsv(filename1);
write_JPEG_file(filename2, 95);
soubor se načte a zapíše (změněný). Takže funguje.
Když dám ale do projektu ten novější soubor.c a soubor.h tak mi to v read chybně přidělí paměť bufferu
image_buffer = (unsigned char*) malloc( row_stride_len*cinfo.output_height ); // globální buffer - nezměněno!
V panelu watch vidím: (unsigned char *) 0x6f0020 ""
Měl bych správně vidět nějaké znaky abych věděl, že se inicioval... např. (unsigned char *) 0x6f0020 "ěšč+ěšuhiabrfýě+bšdzěgš+ě;s6" edit: není to pravda, znaky se oběví až po memcpy(image_buffer+counter, rows_buffer[0], raw_size);
no a dále to samozřejmě nefunguje, když načítám data ze souboru po řádcích pomocí smyčky while a ukládám je do toho bufferu
// inside reading loop:
image_buffer[counter+t]=(char)H;
image_buffer[counter+t+1]=(char)S;
image_buffer[counter+t+2]=(char)V;
tak v bufferu bude jen (unsigned char *) 0x6f0020 "A"
tak je to chyba allokace paměti, chyba globální deklarace nebo chyba uvnitř čtecí smyčky?
Ještě přikládám kód který je přímo uvnitř smyčky (konverze RGB2HSV v rámci načítání dat ze souboru jpeg):
http://paste.ofcode.org/TQZRyKfThiyncghdrLeUH6
Pokud je to globální deklarací tak nechápu kde je chyba protože mi to nedává smysl.
: