diff options
-rw-r--r-- | tools/h4toh5/h4toh5image.c | 51 | ||||
-rw-r--r-- | tools/h4toh5/h4toh5sds.c | 4 | ||||
-rw-r--r-- | tools/h4toh5/h4toh5test.c | 148 | ||||
-rw-r--r-- | tools/h4toh5/h4toh5util.h | 6 | ||||
-rwxr-xr-x | tools/h4toh5/testh4toh5.sh | 1 |
5 files changed, 188 insertions, 22 deletions
diff --git a/tools/h4toh5/h4toh5image.c b/tools/h4toh5/h4toh5image.c index 9da5378..a1ab359 100644 --- a/tools/h4toh5/h4toh5image.c +++ b/tools/h4toh5/h4toh5image.c @@ -118,7 +118,7 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in } istat = GRgetiminfo(ri_id, image_name, &ncomp, &image_dtype, - NULL, dimsizes, &ngrattrs); + &interlace_mode, dimsizes, &ngrattrs); if(istat == FAIL) { printf("Cannot obtain GR info. at Image routine.\n"); @@ -154,7 +154,16 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in printf("error in allocating memory for image data. \n"); return FAIL; } - + /* GRreqimageil or GRreadimage are not working, comment this out for the time being. + if(interlace_mode == MFGR_INTERLACE_LINE){ + istat = GRreqimageil(ri_id,MFGR_INTERLACE_PIXEL); + if(istat == FAIL){ + printf("error in setting interlace_mode.\n"); + free(image_data); + return FAIL; + } + } + */ istat = GRreadimage(ri_id, start, NULL, edges, (VOIDP)image_data); if (istat == FAIL) { @@ -179,13 +188,16 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in h5dims24[1] = edges[0]-start[0]; h5dims24[2] = 3; } - /* currently scan-line is not supported. + /* currently scan-line is not supported. */ else if (interlace_mode == MFGR_INTERLACE_LINE){ - h5dims24[0] = 3; + printf("currently line interleaving is not supported.\n"); + printf("the image %s will not be converted.\n",image_name); + free(image_data); + return SUCCEED; + /*h5dims24[0] = 3; h5dims24[1] = edges[1]-start[1]; - h5dims24[2] = edges[0]-start[0]; + h5dims24[2] = edges[0]-start[0];*/ } - */ else if (interlace_mode == MFGR_INTERLACE_COMPONENT){ h5dims24[0] = 3; h5dims24[1] = edges[1]-start[1]; @@ -411,6 +423,18 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in /* HDF4 can support various compression methods including simple RLE, NBIT, Skip Huffman, gzip,Jpeg , HDF5 currently only supports gzip compression. By default, we will compress HDF5 dataset by using gzip compression if HDF5 file is compressed. */ + /* we don't use data transfer property list. + write_plist = H5Pcreate_list(H5P_DATASET_XFER_NEW); + bufsize = h4memsize *h5dims[1]*ncomp; + + if(H5Pset_buffer(write_plist,bufsize,NULL,NULL)<0) { + printf("fail to create data transfer property list.\n"); + free(image_data); + free(h5cimage_name); + H5Pclose(create_plist); + return FAIL; + } + */ if (ncomp == 1) { h5d_sid = H5Screate_simple(2,h5dims,NULL); @@ -442,18 +466,11 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in return FAIL; } - } + } - else { /* 24-bit image */ + else { /* 24-bit image */ h5d_sid = H5Screate_simple(3,h5dims24,NULL); - if(h5d_sid < 0) { - printf("error in creating space. \n"); - free(image_data); - free(h5cimage_name); - H5Pclose(create_plist); - return FAIL; - } h5dset = H5Dcreate(h5_group,h5cimage_name,h5ty_id,h5d_sid, create_plist); @@ -473,7 +490,7 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in H5Pclose(create_plist); return FAIL; } - } + } free(image_data); /* convert image annotation into attribute of image dataset. @@ -652,7 +669,7 @@ int Image_h4_to_h5(int32 file_id,int32 ri_id,hid_t h5_group,hid_t h5_palgroup,in istat = GRendaccess(ri_id); free(h5cimage_name); return SUCCEED; -} + } /**** palette routine. ****/ /*------------------------------------------------------------------------- diff --git a/tools/h4toh5/h4toh5sds.c b/tools/h4toh5/h4toh5sds.c index 7de526a..245da81 100644 --- a/tools/h4toh5/h4toh5sds.c +++ b/tools/h4toh5/h4toh5sds.c @@ -55,7 +55,7 @@ int Sds_h4_to_h5(int32 file_id,int32 sds_id,hid_t h5_group,hid_t h5_dimgroup,int int32* sds_stride; int32 count_sdsdata; int32 sds_ref; - int sds_empty; + intn sds_empty; int32 istat; int i; int32 num_sdsattrs; @@ -453,7 +453,7 @@ int Sds_h4_to_h5(int32 file_id,int32 sds_id,hid_t h5_group,hid_t h5_dimgroup,int } if (H5Dwrite(h5dset,h5_memtype,h5d_sid,h5d_sid,write_plist, (void *)sds_data)<0) { */ - if (H5Dwrite(h5dset,h5_memtype,h5d_sid,h5d_sid,NULL, + if (H5Dwrite(h5dset,h5_memtype,h5d_sid,h5d_sid,H5P_DEFAULT, (void *)sds_data)<0) { printf("failed to write data into hdf5 dataset"); printf(" converted from SDS.\n"); diff --git a/tools/h4toh5/h4toh5test.c b/tools/h4toh5/h4toh5test.c index 4a985d6..e398a11 100644 --- a/tools/h4toh5/h4toh5test.c +++ b/tools/h4toh5/h4toh5test.c @@ -1071,7 +1071,13 @@ int test_ras24() { int32 start[2], edges[2],dims[2]; int8 image_data24[Y_LENGTH][X_LENGTH][3]; uint8 image_datau24[Y_LENGTH][X_LENGTH][3]; +<<<<<<< h4toh5test.c + unsigned char t24[13][15][3],tl24[13][3][15],tp24[3][13][15]; + int32 dimst24[2]; + intn i, j,k,m,n,p,q,co; +======= int i, j; +>>>>>>> 1.3.2.5 int32 CUB_SIZE; @@ -1095,6 +1101,69 @@ int test_ras24() { } } + k =0; + m = 0; + n = 0; + for (j = 0; j < 13; j++) { + for (i = 0; i < 15; i++) { + t24[j][i][0] = k; + t24[j][i][1] = k; + t24[j][i][2] = k; + k = k+1; + n = n+1; + if(n%13==0) { + k=m+1; + m++; + } + } + } + + k = 0; + m = 0; + n = 0; + p = 0; + for (j = 0; j < 13; j++) { + for (co =0;co<3;co++) { + for (i = 0; i < 15; i++) { + tl24[j][co][i] = k; + k = k+1; + p = p+1; + if(p%13==0) { + m=m+1; + if(m%3==0) n++; + k = n; + } + } + } + } + + k = 0; + m = 0; + n = 0; + p = 0; + q = 0; + for (co = 0; co < 3; co++) { + for (j =0;j<13;j++) { + for (i = 0; i < 15; i++) { + tp24[co][j][i] = k; + k++; + m++; + q++; + p++; + if(p%13 ==0) { + n++; + k = n; + } + if(q%(13*15)==0) { + k = 0; + n = 0; + } + } + } + } + dimst24[0] = 13; + dimst24[1] = 15; + /* Open the file. */ file_id = Hopen(FILERAS24, DFACC_CREATE, 0); @@ -1157,6 +1226,85 @@ int test_ras24() { printf("fail to write GR image.\n"); return FAIL; } + /* Terminate access to the image. */ + GRendaccess(ri_id); + + +/* pixel interlaced.*/ +ncomp = 3; +il = MFGR_INTERLACE_PIXEL; +for(i=0;i<2;i++) +{ + + start[i] =0; + edges[i] = dimst24[i]; +} + ri_id = GRcreate(gr_id, "t24", ncomp, DFNT_UCHAR8, il, dimst24); + if(ri_id == FAIL) { + printf("fail to create GR object.\n"); + return FAIL; + } + istat = GRwriteimage(ri_id, start, NULL, edges, (VOIDP)t24); + if(istat == FAIL) { + printf("fail to write GR image.\n"); + return FAIL; + } + + GRendaccess(ri_id); + + /* we will use DF24 APIs to test interlace function of image. */ + DF24setil(MFGR_INTERLACE_PIXEL); + DF24addimage("ras24il.hdf",(VOIDP)t24,13,15); + DF24setil(MFGR_INTERLACE_COMPONENT); + DF24addimage("ras24il.hdf",(VOIDP)tp24,13,15); + +/* component interlaced.*/ + ncomp = 3; + il = MFGR_INTERLACE_COMPONENT; + +for(i=0;i<2;i++) +{ + + start[i] =0; + edges[i] = dimst24[i]; +} + /* Create the array. */ + ri_id = GRcreate(gr_id, "tp24", ncomp, DFNT_UCHAR8, il, dimst24); + if(ri_id == FAIL) { + printf("fail to create GR object.\n"); + return FAIL; + } + /* Write the stored data to the image array. */ + istat = GRwriteimage(ri_id, start, NULL, edges, (VOIDP)tp24); + if(istat == FAIL) { + printf("fail to write GR image.\n"); + return FAIL; + } + + /* Terminate access to the image. */ + GRendaccess(ri_id); + +/* line interlaced. */ + ncomp = 3; + il = MFGR_INTERLACE_LINE; +for(i=0;i<2;i++) +{ + + start[i] =0; + edges[i] = dimst24[i]; +} + /* Create the array. */ + ri_id = GRcreate(gr_id, "tl24", ncomp, DFNT_UCHAR8, il, dimst24); + if(ri_id == FAIL) { + printf("fail to create GR object.\n"); + return FAIL; + } + /* Write the stored data to the image array. */ + istat = GRwriteimage(ri_id, start, NULL, edges, (VOIDP)tl24); + if(istat == FAIL) { + printf("fail to write GR image.\n"); + return FAIL; + } /* Terminate access to the image. */ GRendaccess(ri_id); diff --git a/tools/h4toh5/h4toh5util.h b/tools/h4toh5/h4toh5util.h index 27bdcb5..e04aa35 100644 --- a/tools/h4toh5/h4toh5util.h +++ b/tools/h4toh5/h4toh5util.h @@ -98,9 +98,9 @@ converter.*/ #define IM_CLASS "IMAGE" /*7.5. define interlace mode. */ #define INTERLACE_MODE "INTERLACE_MODE" -#define PIXEL_INTERLACE "PIXEL_INTERLACE" -#define LINE_INTERLACE "LINE_INTERLACE" -#define PLANE_INTERLACE "PLANE_INTERLACE" +#define PIXEL_INTERLACE "INTERLACE_PIXEL" +#define LINE_INTERLACE "INTERLACE_LINE" +#define PLANE_INTERLACE "INTERLACE_PLANE" /* 8. reserved group name for HDF4 dimensional scale and palette. */ diff --git a/tools/h4toh5/testh4toh5.sh b/tools/h4toh5/testh4toh5.sh index c2a196e..d392a6a 100755 --- a/tools/h4toh5/testh4toh5.sh +++ b/tools/h4toh5/testh4toh5.sh @@ -221,6 +221,7 @@ CONVERT gr_typ_test.hdf gr_typ_test.h5 CONVERT grnameclash_test.hdf grnameclash_test.h5 CONVERT image_attr_test.hdf image_attr_test.h5 #CONVERT image_maxsize.hdf image_maxsize.h5 +CONVERT ras24il.hdf ras24il.h5 CONVERT ras_24_test.hdf ras_24_test.h5 CONVERT ras_8_test.hdf ras_8_test.h5 CONVERT sds_attr_test.hdf sds_attr_test.h5 |