]> Creatis software - gdcm.git/blobdiff - src/jpeg/libijg/jcprepct.c
ENH: * Finished lossless transition, not only do we now read all lossless jpeg
[gdcm.git] / src / jpeg / libijg / jcprepct.c
index fa93333db20f74cbcc3b660523b7dc26688d06ef..188548194a2f13949691437a81dad4d28503199e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * jcprepct.c
  *
- * Copyright (C) 1994-1996, Thomas G. Lane.
+ * Copyright (C) 1994-1998, Thomas G. Lane.
  * This file is part of the Independent JPEG Group's software.
  * For conditions of distribution and use, see the accompanying README file.
  *
@@ -58,12 +58,12 @@ typedef struct {
    */
   JSAMPARRAY color_buf[MAX_COMPONENTS];
 
-  JDIMENSION rows_to_go;       /* counts rows remaining in source image */
-  int next_buf_row;            /* index of next row to store in color_buf */
+  JDIMENSION rows_to_go;  /* counts rows remaining in source image */
+  int next_buf_row;    /* index of next row to store in color_buf */
 
-#ifdef CONTEXT_ROWS_SUPPORTED  /* only needed for context case */
-  int this_row_group;          /* starting row index of group to process */
-  int next_buf_stop;           /* downsample when we reach this index */
+#ifdef CONTEXT_ROWS_SUPPORTED  /* only needed for context case */
+  int this_row_group;    /* starting row index of group to process */
+  int next_buf_stop;    /* downsample when we reach this index */
 #endif
 } my_prep_controller;
 
@@ -104,13 +104,13 @@ start_pass_prep (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
 
 LOCAL(void)
 expand_bottom_edge (JSAMPARRAY image_data, JDIMENSION num_cols,
-                   int input_rows, int output_rows)
+        int input_rows, int output_rows)
 {
   register int row;
 
   for (row = input_rows; row < output_rows; row++) {
     jcopy_sample_rows(image_data, input_rows-1, image_data, row,
-                     1, num_cols);
+          1, num_cols);
   }
 }
 
@@ -126,10 +126,10 @@ expand_bottom_edge (JSAMPARRAY image_data, JDIMENSION num_cols,
 
 METHODDEF(void)
 pre_process_data (j_compress_ptr cinfo,
-                 JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-                 JDIMENSION in_rows_avail,
-                 JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-                 JDIMENSION out_row_groups_avail)
+      JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
+      JDIMENSION in_rows_avail,
+      JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
+      JDIMENSION out_row_groups_avail)
 {
   my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
   int numrows, ci;
@@ -137,32 +137,32 @@ pre_process_data (j_compress_ptr cinfo,
   jpeg_component_info * compptr;
 
   while (*in_row_ctr < in_rows_avail &&
-        *out_row_group_ctr < out_row_groups_avail) {
+   *out_row_group_ctr < out_row_groups_avail) {
     /* Do color conversion to fill the conversion buffer. */
     inrows = in_rows_avail - *in_row_ctr;
     numrows = cinfo->max_v_samp_factor - prep->next_buf_row;
     numrows = (int) MIN((JDIMENSION) numrows, inrows);
     (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-                                      prep->color_buf,
-                                      (JDIMENSION) prep->next_buf_row,
-                                      numrows);
+               prep->color_buf,
+               (JDIMENSION) prep->next_buf_row,
+               numrows);
     *in_row_ctr += numrows;
     prep->next_buf_row += numrows;
     prep->rows_to_go -= numrows;
     /* If at bottom of image, pad to fill the conversion buffer. */
     if (prep->rows_to_go == 0 &&
-       prep->next_buf_row < cinfo->max_v_samp_factor) {
+  prep->next_buf_row < cinfo->max_v_samp_factor) {
       for (ci = 0; ci < cinfo->num_components; ci++) {
-       expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-                          prep->next_buf_row, cinfo->max_v_samp_factor);
+  expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
+         prep->next_buf_row, cinfo->max_v_samp_factor);
       }
       prep->next_buf_row = cinfo->max_v_samp_factor;
     }
     /* If we've filled the conversion buffer, empty it. */
     if (prep->next_buf_row == cinfo->max_v_samp_factor) {
       (*cinfo->downsample->downsample) (cinfo,
-                                       prep->color_buf, (JDIMENSION) 0,
-                                       output_buf, *out_row_group_ctr);
+          prep->color_buf, (JDIMENSION) 0,
+          output_buf, *out_row_group_ctr);
       prep->next_buf_row = 0;
       (*out_row_group_ctr)++;
     }
@@ -170,16 +170,16 @@ pre_process_data (j_compress_ptr cinfo,
      * Note we assume the caller is providing a one-iMCU-height output buffer!
      */
     if (prep->rows_to_go == 0 &&
-       *out_row_group_ctr < out_row_groups_avail) {
+  *out_row_group_ctr < out_row_groups_avail) {
       for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-          ci++, compptr++) {
-       expand_bottom_edge(output_buf[ci],
-                          compptr->width_in_blocks * DCTSIZE,
-                          (int) (*out_row_group_ctr * compptr->v_samp_factor),
-                          (int) (out_row_groups_avail * compptr->v_samp_factor));
+     ci++, compptr++) {
+  expand_bottom_edge(output_buf[ci],
+         compptr->width_in_data_units * cinfo->data_unit,
+         (int) (*out_row_group_ctr * compptr->v_samp_factor),
+         (int) (out_row_groups_avail * compptr->v_samp_factor));
       }
       *out_row_group_ctr = out_row_groups_avail;
-      break;                   /* can exit outer loop without test */
+      break;      /* can exit outer loop without test */
     }
   }
 }
@@ -193,10 +193,10 @@ pre_process_data (j_compress_ptr cinfo,
 
 METHODDEF(void)
 pre_process_context (j_compress_ptr cinfo,
-                    JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-                    JDIMENSION in_rows_avail,
-                    JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-                    JDIMENSION out_row_groups_avail)
+         JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
+         JDIMENSION in_rows_avail,
+         JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
+         JDIMENSION out_row_groups_avail)
 {
   my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
   int numrows, ci;
@@ -210,19 +210,19 @@ pre_process_context (j_compress_ptr cinfo,
       numrows = prep->next_buf_stop - prep->next_buf_row;
       numrows = (int) MIN((JDIMENSION) numrows, inrows);
       (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-                                        prep->color_buf,
-                                        (JDIMENSION) prep->next_buf_row,
-                                        numrows);
+           prep->color_buf,
+           (JDIMENSION) prep->next_buf_row,
+           numrows);
       /* Pad at top of image, if first time through */
       if (prep->rows_to_go == cinfo->image_height) {
-       for (ci = 0; ci < cinfo->num_components; ci++) {
-         int row;
-         for (row = 1; row <= cinfo->max_v_samp_factor; row++) {
-           jcopy_sample_rows(prep->color_buf[ci], 0,
-                             prep->color_buf[ci], -row,
-                             1, cinfo->image_width);
-         }
-       }
+  for (ci = 0; ci < cinfo->num_components; ci++) {
+    int row;
+    for (row = 1; row <= cinfo->max_v_samp_factor; row++) {
+      jcopy_sample_rows(prep->color_buf[ci], 0,
+            prep->color_buf[ci], -row,
+            1, cinfo->image_width);
+    }
+  }
       }
       *in_row_ctr += numrows;
       prep->next_buf_row += numrows;
@@ -230,29 +230,29 @@ pre_process_context (j_compress_ptr cinfo,
     } else {
       /* Return for more data, unless we are at the bottom of the image. */
       if (prep->rows_to_go != 0)
-       break;
+  break;
       /* When at bottom of image, pad to fill the conversion buffer. */
       if (prep->next_buf_row < prep->next_buf_stop) {
-       for (ci = 0; ci < cinfo->num_components; ci++) {
-         expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-                            prep->next_buf_row, prep->next_buf_stop);
-       }
-       prep->next_buf_row = prep->next_buf_stop;
+  for (ci = 0; ci < cinfo->num_components; ci++) {
+    expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
+           prep->next_buf_row, prep->next_buf_stop);
+  }
+  prep->next_buf_row = prep->next_buf_stop;
       }
     }
     /* If we've gotten enough data, downsample a row group. */
     if (prep->next_buf_row == prep->next_buf_stop) {
       (*cinfo->downsample->downsample) (cinfo,
-                                       prep->color_buf,
-                                       (JDIMENSION) prep->this_row_group,
-                                       output_buf, *out_row_group_ctr);
+          prep->color_buf,
+          (JDIMENSION) prep->this_row_group,
+          output_buf, *out_row_group_ctr);
       (*out_row_group_ctr)++;
       /* Advance pointers with wraparound as necessary. */
       prep->this_row_group += cinfo->max_v_samp_factor;
       if (prep->this_row_group >= buf_height)
-       prep->this_row_group = 0;
+  prep->this_row_group = 0;
       if (prep->next_buf_row >= buf_height)
-       prep->next_buf_row = 0;
+  prep->next_buf_row = 0;
       prep->next_buf_stop = prep->next_buf_row + cinfo->max_v_samp_factor;
     }
   }
@@ -277,8 +277,8 @@ create_context_buffer (j_compress_ptr cinfo)
    */
   fake_buffer = (JSAMPARRAY)
     (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-                               (cinfo->num_components * 5 * rgroup_height) *
-                               SIZEOF(JSAMPROW));
+        (cinfo->num_components * 5 * rgroup_height) *
+        SIZEOF(JSAMPROW));
 
   for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
        ci++, compptr++) {
@@ -288,12 +288,12 @@ create_context_buffer (j_compress_ptr cinfo)
      */
     true_buffer = (*cinfo->mem->alloc_sarray)
       ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-                     cinfo->max_h_samp_factor) / compptr->h_samp_factor),
+       (JDIMENSION) (((long) compptr->width_in_data_units * cinfo->data_unit *
+          cinfo->max_h_samp_factor) / compptr->h_samp_factor),
        (JDIMENSION) (3 * rgroup_height));
     /* Copy true buffer row pointers into the middle of the fake row array */
     MEMCOPY(fake_buffer + rgroup_height, true_buffer,
-           3 * rgroup_height * SIZEOF(JSAMPROW));
+      3 * rgroup_height * SIZEOF(JSAMPROW));
     /* Fill in the above and below wraparound pointers */
     for (i = 0; i < rgroup_height; i++) {
       fake_buffer[i] = true_buffer[2 * rgroup_height + i];
@@ -318,12 +318,12 @@ jinit_c_prep_controller (j_compress_ptr cinfo, boolean need_full_buffer)
   int ci;
   jpeg_component_info * compptr;
 
-  if (need_full_buffer)                /* safety check */
+  if (need_full_buffer)    /* safety check */
     ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
 
   prep = (my_prep_ptr)
     (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-                               SIZEOF(my_prep_controller));
+        SIZEOF(my_prep_controller));
   cinfo->prep = (struct jpeg_c_prep_controller *) prep;
   prep->pub.start_pass = start_pass_prep;
 
@@ -343,12 +343,12 @@ jinit_c_prep_controller (j_compress_ptr cinfo, boolean need_full_buffer)
     /* No context, just make it tall enough for one row group */
     prep->pub.pre_process_data = pre_process_data;
     for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-        ci++, compptr++) {
+   ci++, compptr++) {
       prep->color_buf[ci] = (*cinfo->mem->alloc_sarray)
-       ((j_common_ptr) cinfo, JPOOL_IMAGE,
-        (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-                       cinfo->max_h_samp_factor) / compptr->h_samp_factor),
-        (JDIMENSION) cinfo->max_v_samp_factor);
+  ((j_common_ptr) cinfo, JPOOL_IMAGE,
+   (JDIMENSION) (((long) compptr->width_in_data_units * cinfo->data_unit *
+      cinfo->max_h_samp_factor) / compptr->h_samp_factor),
+   (JDIMENSION) cinfo->max_v_samp_factor);
     }
   }
 }