root / branches / v2_0_0_prep / libraries / libjni-ecwcompress / src / ncsecwcompressclient_wrapper.c @ 25814
History | View | Annotate | Download (15.1 KB)
1 | 1429 | igbrotru | /**********************************************************************
|
---|---|---|---|
2 | * $Id$
|
||
3 | *
|
||
4 | * Name: bsb_interfaz.c
|
||
5 | * Project: JGDAL. Interface java to gdal (Frank Warmerdam).
|
||
6 | * Purpose: Interface functions to manage bsb files. This include gdal
|
||
7 | * code but it doesn't use the gdal API.
|
||
8 | * Author: Nacho Brodin, brodin_ign@gva.es
|
||
9 | *
|
||
10 | **********************************************************************/
|
||
11 | 2211 | igbrotru | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
12 | *
|
||
13 | * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
|
||
14 | *
|
||
15 | * This program is free software; you can redistribute it and/or
|
||
16 | * modify it under the terms of the GNU General Public License
|
||
17 | * as published by the Free Software Foundation; either version 2
|
||
18 | * of the License, or (at your option) any later version.
|
||
19 | *
|
||
20 | * This program is distributed in the hope that it will be useful,
|
||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
23 | * GNU General Public License for more details.
|
||
24 | *
|
||
25 | * You should have received a copy of the GNU General Public License
|
||
26 | * along with this program; if not, write to the Free Software
|
||
27 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
28 | *
|
||
29 | * For more information, contact:
|
||
30 | *
|
||
31 | * Generalitat Valenciana
|
||
32 | * Conselleria d'Infraestructures i Transport
|
||
33 | * Av. Blasco Ib??ez, 50
|
||
34 | * 46010 VALENCIA
|
||
35 | * SPAIN
|
||
36 | *
|
||
37 | * +34 963862235
|
||
38 | * gvsig@gva.es
|
||
39 | * www.gvsig.gva.es
|
||
40 | *
|
||
41 | * or
|
||
42 | *
|
||
43 | * IVER T.I. S.A
|
||
44 | * Salamanca 50
|
||
45 | * 46005 Valencia
|
||
46 | * Spain
|
||
47 | *
|
||
48 | * +34 963163400
|
||
49 | * dac@iver.es
|
||
50 | */
|
||
51 | 1429 | igbrotru | |
52 | #include <jni.h> |
||
53 | 1937 | igbrotru | #include <string.h> |
54 | #include <malloc.h> |
||
55 | 1429 | igbrotru | #include "../include/es_gva_cit_jecwcompress_NCSEcwCompressClient.h" |
56 | #include "NCSECWCompressClient.h" |
||
57 | |||
58 | 1432 | igbrotru | typedef struct ReadInfo { |
59 | 1937 | igbrotru | //NCSFileView *pNCSFileView;
|
60 | 1442 | igbrotru | UINT8 **ppInputBandBufferArray; |
61 | UINT32 nPercentComplete; |
||
62 | jclass clase; |
||
63 | jobject *jclient; |
||
64 | jobject *jreadcall; |
||
65 | JNIEnv *env; |
||
66 | 1937 | igbrotru | char pErrorBuffer[1024]; |
67 | 1432 | igbrotru | } ReadInfo; |
68 | 1429 | igbrotru | |
69 | 4274 | nacho | static BOOLEAN callBackOn = TRUE;
|
70 | 1442 | igbrotru | |
71 | 1429 | igbrotru | /******************************************************************************/
|
72 | 1442 | igbrotru | // ReadCallback
|
73 | /******************************************************************************/
|
||
74 | |||
75 | |||
76 | static BOOLEAN ReadCallback(NCSEcwCompressClient *pClient,
|
||
77 | UINT32 nNextLine, |
||
78 | IEEE4 **ppOutputBandBufferArray) |
||
79 | { |
||
80 | ReadInfo *pReadInfo = (ReadInfo *)pClient->pClientData; |
||
81 | 1937 | igbrotru | UINT32 nBand; |
82 | 1442 | igbrotru | jfieldID fid; |
83 | 1937 | igbrotru | jbyteArray jarray; |
84 | 1442 | igbrotru | JNIEnv *env=pReadInfo->env; |
85 | int longitud;
|
||
86 | jclass clase_client; |
||
87 | jclass clase_readcall; |
||
88 | jmethodID metodo; |
||
89 | 1937 | igbrotru | |
90 | 4274 | nacho | if(callBackOn){
|
91 | clase_client = (*env)->GetObjectClass(env, *(pReadInfo->jclient)); |
||
92 | clase_readcall = (*env)->GetObjectClass(env, *(pReadInfo->jreadcall)); |
||
93 | |||
94 | //Ponemos el valor de la banda un n?mero de l?nea en el objeto cliente
|
||
95 | 1442 | igbrotru | |
96 | 4274 | nacho | fid = (*env)->GetFieldID(env, clase_readcall, "nNextLine", "I"); |
97 | (*env)->SetIntField(env, *(pReadInfo->jreadcall), fid, nNextLine); |
||
98 | |||
99 | //Ejecutamos la funci?n de java que carga el buffer
|
||
100 | |||
101 | metodo = (*env)->GetMethodID(env, clase_readcall, "loadBuffer", "()V"); |
||
102 | (*env)->CallVoidMethod(env, *(pReadInfo->jreadcall), metodo); |
||
103 | 1937 | igbrotru | |
104 | 4274 | nacho | //Obtenemos el array de bytes desde java
|
105 | |||
106 | fid = (*env)->GetFieldID(env, clase_client, "buffer", "[B"); |
||
107 | jarray =(jbyteArray)(*env)->GetObjectField(env, *(pReadInfo->jclient), fid); |
||
108 | longitud = (*env)->GetArrayLength(env, jarray); |
||
109 | |||
110 | (*env)->GetByteArrayRegion(env,jarray,0,longitud,(jbyte *)pReadInfo->ppInputBandBufferArray[0]); |
||
111 | |||
112 | for(nBand = 0; nBand < pClient->nInputBands; nBand++) { |
||
113 | UINT32 nCell; |
||
114 | UINT8 *pInputValue = pReadInfo->ppInputBandBufferArray[nBand]; |
||
115 | IEEE4 *pOutputValue = ppOutputBandBufferArray[nBand]; |
||
116 | |||
117 | // Compression needs input to be IEEE4
|
||
118 | for (nCell = 0; nCell < pClient->nInOutSizeX; nCell++) { |
||
119 | *pOutputValue++ = (IEEE4)*pInputValue++; |
||
120 | } |
||
121 | |||
122 | 1442 | igbrotru | } |
123 | |||
124 | 4274 | nacho | return(TRUE);
|
125 | }else
|
||
126 | return(FALSE);
|
||
127 | 1442 | igbrotru | } |
128 | |||
129 | /******************************************************************************/
|
||
130 | // StatusCallback
|
||
131 | /******************************************************************************/
|
||
132 | 1937 | igbrotru | //Asigna el tanto por cien de imagen que lleva comprimido en una variable de java
|
133 | //Ejecuta la funci?n updatePercent de java despues de actualizar la varible.
|
||
134 | 1442 | igbrotru | |
135 | static void StatusCallback(NCSEcwCompressClient *pClient, |
||
136 | UINT32 nCurrentLine) |
||
137 | { |
||
138 | 1937 | igbrotru | ReadInfo *pReadInfo = (ReadInfo *)pClient->pClientData; |
139 | UINT32 nPercentComplete = (nCurrentLine * 100) / (pClient->nInOutSizeY - 1); |
||
140 | jclass clase_client; |
||
141 | jclass clase_readcall; |
||
142 | JNIEnv *env=pReadInfo->env; |
||
143 | jfieldID fid; |
||
144 | jmethodID metodo; |
||
145 | |||
146 | clase_client = (*env)->GetObjectClass(env, *(pReadInfo->jclient)); |
||
147 | clase_readcall = (*env)->GetObjectClass(env, *(pReadInfo->jreadcall)); |
||
148 | |||
149 | 1442 | igbrotru | if (nPercentComplete != pReadInfo->nPercentComplete) {
|
150 | 1937 | igbrotru | fid = (*env)->GetFieldID(env, clase_client, "porcentaje", "I"); |
151 | (*env)->SetIntField(env, *(pReadInfo->jclient), fid, nPercentComplete); |
||
152 | metodo = (*env)->GetMethodID(env, clase_readcall, "updatePercent", "()V"); |
||
153 | (*env)->CallVoidMethod(env, *(pReadInfo->jreadcall), metodo); |
||
154 | 1442 | igbrotru | pReadInfo->nPercentComplete = nPercentComplete; |
155 | } |
||
156 | } |
||
157 | |||
158 | /******************************************************************************/
|
||
159 | 1429 | igbrotru | // NCSEcwCompressClient
|
160 | /******************************************************************************/
|
||
161 | |||
162 | JNIEXPORT jlong JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_NCSEcwCompressClientNat |
||
163 | (JNIEnv *env, jobject obj){ |
||
164 | |||
165 | NCSEcwCompressClient *pClient; |
||
166 | 1937 | igbrotru | jlong jresult = 0 ;
|
167 | 1429 | igbrotru | |
168 | if(pClient = NCSEcwCompressAllocClient()){
|
||
169 | *(NCSEcwCompressClient **)&jresult = pClient; |
||
170 | return jresult;
|
||
171 | }else
|
||
172 | return -1; |
||
173 | |||
174 | } |
||
175 | |||
176 | /******************************************************************************/
|
||
177 | // NCSEcwCompressOpen
|
||
178 | /******************************************************************************/
|
||
179 | |||
180 | 1431 | igbrotru | JNIEXPORT jint JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_NCSEcwCompressOpenNat |
181 | 1429 | igbrotru | (JNIEnv *env, jobject obj, jlong cPtr, jboolean bCalculateSizesOnly){ |
182 | |||
183 | 1431 | igbrotru | NCSEcwCompressClient *pClient = (NCSEcwCompressClient *) 0 ;
|
184 | NCSError eError; |
||
185 | jfieldID fid; |
||
186 | jobject obj_str; |
||
187 | const char *str; |
||
188 | 1442 | igbrotru | ReadInfo *compress_readInfo; |
189 | jmethodID metodo; |
||
190 | 1937 | igbrotru | |
191 | UINT8 *pReadBuffer,nBand; |
||
192 | 1442 | igbrotru | |
193 | 1431 | igbrotru | pClient = *(NCSEcwCompressClient **)&cPtr; |
194 | if(pClient!=NULL){ |
||
195 | |||
196 | //Asignamos los valores de los campos de NCSEcwCompress
|
||
197 | |||
198 | jclass clase = (*env)->GetObjectClass(env, obj); |
||
199 | |||
200 | fid = (*env)->GetFieldID(env, clase, "inputFilename", "Ljava/lang/String;"); |
||
201 | obj_str = (*env)->GetObjectField(env, obj, fid); |
||
202 | if(obj_str!=NULL){ |
||
203 | str = (*env)->GetStringUTFChars(env,obj_str,0);
|
||
204 | strcpy(pClient->szInputFilename,str); |
||
205 | str=NULL;
|
||
206 | (*env)->ReleaseStringUTFChars(env, obj_str, str); |
||
207 | 1937 | igbrotru | //printf("inputFilename=%s\n",pClient->szInputFilename);
|
208 | 1431 | igbrotru | } |
209 | |||
210 | fid = (*env)->GetFieldID(env, clase, "outputFilename", "Ljava/lang/String;"); |
||
211 | obj_str = (*env)->GetObjectField(env, obj, fid); |
||
212 | if(obj_str!=NULL){ |
||
213 | str = (*env)->GetStringUTFChars(env,obj_str,0);
|
||
214 | strcpy(pClient->szOutputFilename,str); |
||
215 | str=NULL;
|
||
216 | (*env)->ReleaseStringUTFChars(env, obj_str, str); |
||
217 | 1937 | igbrotru | //printf("outputFilename=%s\n",pClient->szOutputFilename);
|
218 | 1431 | igbrotru | } |
219 | |||
220 | fid = (*env)->GetFieldID(env, clase, "targetCompression", "D"); |
||
221 | 1442 | igbrotru | pClient->fTargetCompression = (IEEE4)(*env)->GetDoubleField(env, obj, fid); |
222 | 1937 | igbrotru | //printf("targetCompression=%f\n",pClient->fTargetCompression);
|
223 | 1431 | igbrotru | |
224 | fid = (*env)->GetFieldID(env, clase, "eCompressFormat", "I"); |
||
225 | pClient->eCompressFormat = (*env)->GetIntField(env, obj, fid); |
||
226 | 1937 | igbrotru | //printf("eCompressFormat=%d\n",pClient->eCompressFormat);
|
227 | 1431 | igbrotru | |
228 | fid = (*env)->GetFieldID(env, clase, "eCompressHint", "I"); |
||
229 | pClient->eCompressHint = (*env)->GetIntField(env, obj, fid); |
||
230 | 1937 | igbrotru | //printf("eCompressHint=%d\n",pClient->eCompressHint);
|
231 | 1431 | igbrotru | |
232 | fid = (*env)->GetFieldID(env, clase, "nBlockSizeX", "I"); |
||
233 | pClient->nBlockSizeX = (*env)->GetIntField(env, obj, fid); |
||
234 | 1937 | igbrotru | //printf("nBlockSizeX=%d\n",pClient->nBlockSizeX);
|
235 | 1431 | igbrotru | |
236 | fid = (*env)->GetFieldID(env, clase, "nBlockSizeY", "I"); |
||
237 | pClient->nBlockSizeY = (*env)->GetIntField(env, obj, fid); |
||
238 | 1937 | igbrotru | //printf("nBlockSizeY=%d\n",pClient->nBlockSizeY);
|
239 | 1431 | igbrotru | |
240 | fid = (*env)->GetFieldID(env, clase, "nInOutSizeX", "I"); |
||
241 | pClient->nInOutSizeX = (*env)->GetIntField(env, obj, fid); |
||
242 | 1937 | igbrotru | //printf("nInOutSizeX=%d\n",pClient->nInOutSizeX);
|
243 | 1431 | igbrotru | |
244 | fid = (*env)->GetFieldID(env, clase, "nInOutSizeY", "I"); |
||
245 | pClient->nInOutSizeY = (*env)->GetIntField(env, obj, fid); |
||
246 | 1937 | igbrotru | //printf("nInOutSizeY=%d\n",pClient->nInOutSizeY);
|
247 | 1431 | igbrotru | |
248 | fid = (*env)->GetFieldID(env, clase, "nInputBands", "I"); |
||
249 | pClient->nInputBands = (*env)->GetIntField(env, obj, fid); |
||
250 | 1937 | igbrotru | //printf("nInputBands=%d\n",pClient->nInputBands);
|
251 | 1431 | igbrotru | |
252 | fid = (*env)->GetFieldID(env, clase, "nOutputBands", "I"); |
||
253 | pClient->nOutputBands = (*env)->GetIntField(env, obj, fid); |
||
254 | 1937 | igbrotru | //printf("nOutputBands=%d\n",pClient->nOutputBands);
|
255 | 1431 | igbrotru | |
256 | fid = (*env)->GetFieldID(env, clase, "nInputSize", "J"); |
||
257 | pClient->nInputSize = (*env)->GetLongField(env, obj, fid); |
||
258 | 1937 | igbrotru | //printf("nInputSize=%ld\n",pClient->nInputSize);
|
259 | 1431 | igbrotru | |
260 | fid = (*env)->GetFieldID(env, clase, "fCellIncrementX", "D"); |
||
261 | pClient->fCellIncrementX = (*env)->GetDoubleField(env, obj, fid); |
||
262 | 1937 | igbrotru | //printf("fCellIncrementX=%f\n",pClient->fCellIncrementX);
|
263 | 1431 | igbrotru | |
264 | fid = (*env)->GetFieldID(env, clase, "fCellIncrementY", "D"); |
||
265 | pClient->fCellIncrementY = (*env)->GetDoubleField(env, obj, fid); |
||
266 | 1937 | igbrotru | //printf("fCellIncrementY=%f\n",pClient->fCellIncrementY);
|
267 | 1431 | igbrotru | |
268 | fid = (*env)->GetFieldID(env, clase, "fOriginX", "D"); |
||
269 | pClient->fOriginX = (*env)->GetDoubleField(env, obj, fid); |
||
270 | 1937 | igbrotru | //printf("fOriginX=%f\n",pClient->fOriginX);
|
271 | 1431 | igbrotru | |
272 | fid = (*env)->GetFieldID(env, clase, "fOriginY", "D"); |
||
273 | pClient->fOriginY = (*env)->GetDoubleField(env, obj, fid); |
||
274 | 1937 | igbrotru | //printf("fOriginY=%f\n",pClient->fOriginY);
|
275 | 1431 | igbrotru | |
276 | fid = (*env)->GetFieldID(env, clase, "eCellSizeUnits", "I"); |
||
277 | pClient->fActualCompression = (IEEE4)(*env)->GetIntField(env, obj, fid); |
||
278 | 1937 | igbrotru | //printf("eCellSizeUnits=%d\n",pClient->fActualCompression);
|
279 | 1431 | igbrotru | |
280 | fid = (*env)->GetFieldID(env, clase, "szDatum", "Ljava/lang/String;"); |
||
281 | obj_str = (*env)->GetObjectField(env, obj, fid); |
||
282 | if(obj_str!=NULL){ |
||
283 | str = (*env)->GetStringUTFChars(env,obj_str,0);
|
||
284 | strcpy(pClient->szDatum,str); |
||
285 | str=NULL;
|
||
286 | (*env)->ReleaseStringUTFChars(env, obj_str, str); |
||
287 | 1937 | igbrotru | //printf("szDatum=%s\n",pClient->szDatum);
|
288 | 1431 | igbrotru | } |
289 | |||
290 | fid = (*env)->GetFieldID(env, clase, "szProjection", "Ljava/lang/String;"); |
||
291 | obj_str = (*env)->GetObjectField(env, obj, fid); |
||
292 | if(obj_str!=NULL){ |
||
293 | str = (*env)->GetStringUTFChars(env,obj_str,0);
|
||
294 | strcpy(pClient->szProjection,str); |
||
295 | str=NULL;
|
||
296 | (*env)->ReleaseStringUTFChars(env, obj_str, str); |
||
297 | 1937 | igbrotru | //printf("szProjection=%s\n",pClient->szProjection);
|
298 | 1431 | igbrotru | } |
299 | |||
300 | fid = (*env)->GetFieldID(env, clase, "fActualCompression", "D"); |
||
301 | pClient->fActualCompression = (IEEE4)(*env)->GetDoubleField(env, obj, fid); |
||
302 | 1937 | igbrotru | //printf("fActualCompression=%f\n",pClient->fActualCompression);
|
303 | 1431 | igbrotru | |
304 | fid = (*env)->GetFieldID(env, clase, "fCompressionSeconds", "D"); |
||
305 | pClient->fCompressionSeconds = (*env)->GetDoubleField(env, obj, fid); |
||
306 | 1937 | igbrotru | //printf("fCompressionSeconds=%f\n",pClient->fCompressionSeconds);
|
307 | 1431 | igbrotru | |
308 | fid = (*env)->GetFieldID(env, clase, "fCompressionMBSec", "D"); |
||
309 | pClient->fCompressionMBSec = (*env)->GetDoubleField(env, obj, fid); |
||
310 | 1937 | igbrotru | //printf("fCompressionMBSec=%f\n",pClient->fCompressionMBSec);
|
311 | 1431 | igbrotru | |
312 | fid = (*env)->GetFieldID(env, clase, "nOutputSize", "J"); |
||
313 | pClient->nOutputSize = (*env)->GetLongField(env, obj, fid); |
||
314 | 1937 | igbrotru | //printf("nOutputSize=%ld\n",pClient->nOutputSize);
|
315 | 1432 | igbrotru | |
316 | 1442 | igbrotru | pClient->pReadCallback = ReadCallback; |
317 | pClient->pStatusCallback = StatusCallback; |
||
318 | 1937 | igbrotru | |
319 | 1442 | igbrotru | //Inicializar el buffer que tendr? una l?nea de entrada x el n?m de bandas
|
320 | |||
321 | metodo = (*env)->GetMethodID(env, clase, "initialize", "()V"); |
||
322 | (*env)->CallIntMethod(env,obj,metodo); |
||
323 | |||
324 | compress_readInfo = (ReadInfo *)malloc(sizeof(ReadInfo));
|
||
325 | 1937 | igbrotru | |
326 | pReadBuffer = (UINT8 *)malloc(sizeof(UINT8) *
|
||
327 | pClient->nInOutSizeX * |
||
328 | pClient->nInputBands); |
||
329 | 1442 | igbrotru | compress_readInfo->ppInputBandBufferArray = (UINT8 **)malloc(sizeof(UINT8 *) *
|
330 | pClient->nInputBands); |
||
331 | 1937 | igbrotru | for (nBand = 0; nBand < pClient->nInputBands; nBand++) { |
332 | compress_readInfo->ppInputBandBufferArray[nBand] = pReadBuffer + |
||
333 | (nBand * pClient->nInOutSizeX * sizeof(UINT8));
|
||
334 | } |
||
335 | |||
336 | 1442 | igbrotru | if (compress_readInfo->ppInputBandBufferArray == NULL) return 46; |
337 | compress_readInfo->nPercentComplete = 0;
|
||
338 | |||
339 | pClient->pClientData = (void *)compress_readInfo;
|
||
340 | |||
341 | 1431 | igbrotru | eError = NCSEcwCompressOpen(pClient, ((bCalculateSizesOnly==0)? FALSE : TRUE));
|
342 | |||
343 | return eError;
|
||
344 | |||
345 | } |
||
346 | return -1; |
||
347 | } |
||
348 | |||
349 | 1442 | igbrotru | /******************************************************************************/
|
350 | // NCSEcwCompress
|
||
351 | /******************************************************************************/
|
||
352 | 1431 | igbrotru | |
353 | 1442 | igbrotru | JNIEXPORT jint JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_NCSEcwCompressNat |
354 | (JNIEnv *env, jobject obj, jlong cPtr, jobject obj_read){ |
||
355 | |||
356 | NCSEcwCompressClient *pClient = (NCSEcwCompressClient *) 0 ;
|
||
357 | ReadInfo *compress_readInfo = (ReadInfo *) 0 ;
|
||
358 | NCSError eError; |
||
359 | |||
360 | pClient = *(NCSEcwCompressClient **)&cPtr; |
||
361 | compress_readInfo = (ReadInfo *)pClient->pClientData; |
||
362 | compress_readInfo->jclient=&obj; |
||
363 | compress_readInfo->jreadcall=&obj_read; |
||
364 | compress_readInfo->env=env; |
||
365 | |||
366 | eError = NCSEcwCompress(pClient); |
||
367 | return eError;
|
||
368 | } |
||
369 | |||
370 | /******************************************************************************/
|
||
371 | // NCSEcwCompressClose
|
||
372 | /******************************************************************************/
|
||
373 | |||
374 | JNIEXPORT jint JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_NCSEcwCompressCloseNat |
||
375 | (JNIEnv *env, jobject obj, jlong cPtr){ |
||
376 | |||
377 | NCSEcwCompressClient *pClient = (NCSEcwCompressClient *) 0 ;
|
||
378 | NCSError eError; |
||
379 | |||
380 | pClient = *(NCSEcwCompressClient **)&cPtr; |
||
381 | 1937 | igbrotru | eError = NCSEcwCompressClose(pClient); |
382 | 1442 | igbrotru | return eError;
|
383 | } |
||
384 | |||
385 | /******************************************************************************/
|
||
386 | 4274 | nacho | // NCSEcwCompressCancel
|
387 | /******************************************************************************/
|
||
388 | |||
389 | JNIEXPORT void JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_NCSEcwCompressCancelNat
|
||
390 | (JNIEnv *env, jobject obj, jlong cPtr){ |
||
391 | callBackOn = FALSE; |
||
392 | } |
||
393 | |||
394 | /******************************************************************************/
|
||
395 | 1442 | igbrotru | // finalize
|
396 | /******************************************************************************/
|
||
397 | |||
398 | JNIEXPORT void JNICALL Java_es_gva_cit_jecwcompress_NCSEcwCompressClient_finalizeNat
|
||
399 | (JNIEnv *env, jobject obj, jlong cPtr){ |
||
400 | |||
401 | ReadInfo *compress_readInfo = (ReadInfo *) 0 ;
|
||
402 | NCSEcwCompressClient *pClient = (NCSEcwCompressClient *) 0 ;
|
||
403 | 1937 | igbrotru | int nBand;
|
404 | |||
405 | 1442 | igbrotru | pClient = *(NCSEcwCompressClient **)&cPtr; |
406 | |||
407 | //Liberamos la memoria
|
||
408 | |||
409 | compress_readInfo = pClient->pClientData; |
||
410 | 1937 | igbrotru | for (nBand = 0; nBand < pClient->nInputBands; nBand++) { |
411 | free(compress_readInfo->ppInputBandBufferArray[nBand]); |
||
412 | } |
||
413 | 1442 | igbrotru | free(compress_readInfo->ppInputBandBufferArray); |
414 | free(pClient->pClientData); |
||
415 | pClient->pClientData = NULL;
|
||
416 | NCSEcwCompressFreeClient(pClient); |
||
417 | |||
418 | } |