M
Marcelo
Hello,
I am trying to modify some color information from java to C.
I have the information given by java in a format ARGB and I would like to
convert it as:
RRRR...GGGG...BBB....
without the A composant. Separating the A,R,G,B part is not hard. My main
problem is the size of my images.
I have something like
jsize len = env -> GetArrayLength(arr);
where len = 3145728 (for a given image The width 2048, the height 1536)
I have tried to put it inside a unsigned char variable vector, but it doesn't
work well. I seems like that's a lot of memory (Eclipse just stops executing the
jni program).
Do you have an idea in order to bypass this "memory" problem ?
thanks a lot,
Marcelo
The error is segmentation falut, and the code:
The error I get is
segmentation fault.
My code is:
void argb2rgb(JNIEnv *env, jobject obj, jintArray arr)
{
jsize len = env -> GetArrayLength(arr);
int *body = env -> GetIntArrayElements(arr, 0);
int compSize = len / 4 ;
printf("\n%d len:%d\n",compSize,len);
uchar rgbArr [3 * compSize];
uchar* pr = (uchar*) rgbArr;
uchar* pg = pr + compSize;
uchar* pb = pg + compSize;
//pg = pr + compSize;
//pb = pg + compSize;
int i = 0;
for( i = 0 ; i< 1; i++){
uchar red = ((body >> 16) & 0xff);
//pr = &red;
uchar green = ((body >> 8) & 0xff);
//pg = &green;
uchar blue = (body & 0xff);
//pg = &blue;
int result = (red << 16) | (green << 8) | blue;
//printf("red %d pointer: %d result: %x",red, *pr, result);
}
env -> ReleaseIntArrayElements(arr, body, 0);
}
I am trying to modify some color information from java to C.
I have the information given by java in a format ARGB and I would like to
convert it as:
RRRR...GGGG...BBB....
without the A composant. Separating the A,R,G,B part is not hard. My main
problem is the size of my images.
I have something like
jsize len = env -> GetArrayLength(arr);
where len = 3145728 (for a given image The width 2048, the height 1536)
I have tried to put it inside a unsigned char variable vector, but it doesn't
work well. I seems like that's a lot of memory (Eclipse just stops executing the
jni program).
Do you have an idea in order to bypass this "memory" problem ?
thanks a lot,
Marcelo
The error is segmentation falut, and the code:
The error I get is
segmentation fault.
My code is:
void argb2rgb(JNIEnv *env, jobject obj, jintArray arr)
{
jsize len = env -> GetArrayLength(arr);
int *body = env -> GetIntArrayElements(arr, 0);
int compSize = len / 4 ;
printf("\n%d len:%d\n",compSize,len);
uchar rgbArr [3 * compSize];
uchar* pr = (uchar*) rgbArr;
uchar* pg = pr + compSize;
uchar* pb = pg + compSize;
//pg = pr + compSize;
//pb = pg + compSize;
int i = 0;
for( i = 0 ; i< 1; i++){
uchar red = ((body >> 16) & 0xff);
//pr = &red;
uchar green = ((body >> 8) & 0xff);
//pg = &green;
uchar blue = (body & 0xff);
//pg = &blue;
int result = (red << 16) | (green << 8) | blue;
//printf("red %d pointer: %d result: %x",red, *pr, result);
}
env -> ReleaseIntArrayElements(arr, body, 0);
}