IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 4, 2015, 5:42:47 PM (11 years ago)
Author:
eugene
Message:

libfits compressed I/O seems to be generally working

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20150429/src/libfits/table/F_uncompress_T.c

    r38363 r38366  
    1313# if (VERBOSE_DUMP)
    1414  int i;
    15   fprintf (stderr, "%s data: ", message);
    16   // for (i = 0; i < table->header->Naxis[0]*table->header->Naxis[1]; i++) {
    17   for (i = 0; i < 16; i++) {
    18     fprintf (stderr, "0x%02hhx ", table->buffer[i]);
     15  fprintf (stderr, "%s data:\n", message);
     16  for (i = 0; i < table->header->Naxis[0]*table->header->Naxis[1]; i++) {
     17    // for (i = 0; i < 16; i++) {
     18    fprintf (stderr, "%02hhx", table->buffer[i]);
     19    if (i % 2) fprintf (stderr, " ");
     20    if (i % 32 == 31) fprintf (stderr, "\n");
    1921  }
    2022  fprintf (stderr, "\n");
     
    2628# if (VERBOSE_DUMP)
    2729  int i;
    28   fprintf (stderr, "%s pntr: ", message);
    29   for (i = 0; (i < 16) && (i < table->header->Naxis[0]*table->header->Naxis[1]); i++) {
    30     fprintf (stderr, "0x%02hhx ", table->buffer[i]);
     30  fprintf (stderr, "%s pntr:\n", message);
     31  for (i = 0; i < table->header->Naxis[0]*table->header->Naxis[1]; i++) {
     32    fprintf (stderr, "%02hhx", table->buffer[i]);
     33    if (i % 2) fprintf (stderr, " ");
     34    if (i % 32 == 31) fprintf (stderr, "\n");
    3135  }
    3236  fprintf (stderr, "\n");
    3337
    34   fprintf (stderr, "%s data: ", message);
    35   for (i = 0; (i < 16) && (i < table->header->pcount); i++) {
    36     fprintf (stderr, "0x%02hhx ", table->buffer[table->heap_start + i]);
     38  fprintf (stderr, "%s data:\n", message);
     39  for (i = 0; i < table->header->pcount; i++) {
     40    fprintf (stderr, "%02hhx", table->buffer[table->heap_start + i]);
     41    if (i % 2) fprintf (stderr, " ");
     42    if (i % 32 == 31) fprintf (stderr, "\n");
    3743  }
    3844  fprintf (stderr, "\n");
     
    156162      if (!zdata) ESCAPE;
    157163   
    158       if (strcasecmp(fields[i].zctype, "GZIP_1") && strcasecmp(fields[i].zctype, "GZIP_2") && strcasecmp(fields[i].zctype, "RICE_1")) {
     164      if (VERBOSE_DUMP) {
     165        int k;
     166        fprintf (stderr, "u4: ");
     167        for (k = 0; k < Nzdata; k++) {
     168          fprintf (stderr, "%02hhx", zdata[k]);
     169          if (k % 2) fprintf (stderr, " ");
     170          // if (k % 32 == 31) fprintf (stderr, "\n");
     171        }
     172        fprintf (stderr, "\n");
     173      }
     174
     175      if (strcasecmp(fields[i].zctype, "NONE") &&
     176          strcasecmp(fields[i].zctype, "NONE_2") &&
     177          strcasecmp(fields[i].zctype, "GZIP_1") &&
     178          strcasecmp(fields[i].zctype, "GZIP_2") &&
     179          strcasecmp(fields[i].zctype, "RICE_1") &&
     180          strcasecmp(fields[i].zctype, "RICE_ONE")) {
    159181        // Nzdata is number of bytes
    160182        if (!gfits_byteswap_zdata (zdata, Nzdata, fields[i].pixsize)) ESCAPE;
    161183      }
    162184
     185      if (VERBOSE_DUMP) {
     186        int k;
     187        fprintf (stderr, "u3: ");
     188        for (k = 0; k < Nzdata; k++) {
     189          fprintf (stderr, "%02hhx", zdata[k]);
     190          if (k % 2) fprintf (stderr, " ");
     191          // if (k % 32 == 31) fprintf (stderr, "\n");
     192        }
     193        fprintf (stderr, "\n");
     194      }
     195
    163196      int Nrows = (row == Ntile - 1) ? ztilelast : ztilelen;
    164       int Nraw = Nraw_alloc; // expected number of pixel: Nrows*fields[i].Nvalues
    165       if (!gfits_uncompress_data (zdata, Nzdata, fields[i].zctype, NULL, NULL, 0, raw, &Nraw, fields[i].pixsize)) ESCAPE;
     197      int Nraw = Nrows*fields[i].Nvalues*fields[i].pixsize; // expected number of bytes
     198      if (!gfits_uncompress_data (zdata, Nzdata, fields[i].zctype, NULL, NULL, 0, raw, &Nraw, Nraw_alloc, fields[i].pixsize)) ESCAPE;
     199
     200      if (VERBOSE_DUMP) {
     201        int k;
     202        fprintf (stderr, "u2: ");
     203        for (k = 0; k < Nraw*fields[i].pixsize; k++) {
     204          fprintf (stderr, "%02hhx", raw[k]);
     205          if (k % 2) fprintf (stderr, " ");
     206          // if (k % 32 == 31) fprintf (stderr, "\n");
     207        }
     208        fprintf (stderr, "\n");
     209      }
    166210
    167211      if (!strcasecmp(fields[i].zctype, "GZIP_1")) {
     
    170214      }
    171215
     216      if (VERBOSE_DUMP) {
     217        int k;
     218        fprintf (stderr, "u1: ");
     219        for (k = 0; k < Nraw*fields[i].pixsize; k++) {
     220          fprintf (stderr, "%02hhx", raw[k]);
     221          if (k % 2) fprintf (stderr, " ");
     222          // if (k % 32 == 31) fprintf (stderr, "\n");
     223        }
     224        fprintf (stderr, "\n");
     225      }
     226
    172227      // int valid = (row == 0) && (i == 0);
    173228
     
    177232
    178233      // copy the raw pixels from their native matrix locations to the temporary output buffer
    179       if (!strcasecmp(fields[i].zctype, "GZIP_2")) {
     234      if (!strcasecmp(fields[i].zctype, "GZIP_2") || !strcasecmp(fields[i].zctype, "NONE_2")) {
    180235        if (!gfits_distribute_table_gzp2 (tgttable, &fields[i], raw, row_start, Nrows)) ESCAPE;
    181236      } else {
     
    233288    for (i = 0; i < Nrows; i++) {
    234289      int row = row_start + i;
    235       char *src = &raw[i*field->rowsize + k*Nrows*field->Nvalues];
    236       char *tgt = &table->buffer[Nx*row + field->offset + k];
    237       for (j = 0; j < field->Nvalues; j++, tgt+=field->pixsize, src++) {
    238         *tgt = *src;
     290      char *rawptr = &raw[i*field->Nvalues + k*Nrows*field->Nvalues];
     291# ifdef BYTE_SWAP     
     292      char *tblptr = &table->buffer[Nx*row + field->offset + (field->pixsize - k - 1)];
     293# else
     294      char *tblptr = &table->buffer[Nx*row + field->offset + k];
     295# endif
     296      for (j = 0; j < field->Nvalues; j++, tblptr += field->pixsize, rawptr++) {
     297        *tblptr = *rawptr;
    239298      }
    240299    }
Note: See TracChangeset for help on using the changeset viewer.