]> Creatis software - gdcm.git/blobdiff - src/gdcmopenjpeg/libopenjpeg/jpt.c
use GDCM_NAME_SPACE:: instead of gdcm::, even in Examples ...
[gdcm.git] / src / gdcmopenjpeg / libopenjpeg / jpt.c
index 909cc6302111dcba4c7e45ed69e868ad276c392e..9b75994b069e0c0b23e633b0611281e132314c16 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2004, Yannick Verschueren
- * Copyright (c) 2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
+ * Copyright (c) 2005, HervĂ© Drolon, FreeImage Team
+ * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "jpt.h"
-#include "j2k.h"
-#include "cio.h"
-
+#include "opj_includes.h"
 
 /*
  * Read the information contains in VBAS [JPP/JPT stream message header]
  * Store information (7 bits) in value
  *
  */
-unsigned int jpt_read_VBAS_info(unsigned int value)
-{
+unsigned int jpt_read_VBAS_info(opj_cio_t *cio, unsigned int value) {
   unsigned char elmt;
 
-  elmt = cio_read(1);
+  elmt = cio_read(cio, 1);
   while ((elmt >> 7) == 1) {
     value = (value << 7);
     value |= (elmt & 0x7f);
-    elmt = cio_read(1);
+    elmt = cio_read(cio, 1);
   }
   value = (value << 7);
   value |= (elmt & 0x7f);
@@ -58,15 +52,14 @@ unsigned int jpt_read_VBAS_info(unsigned int value)
  * Initialize the value of the message header structure 
  *
  */
-void jpt_init_Msg_Header(jpt_msg_header_struct_t * header)
-{
-  header->Id = 0;      /* In-class Identifier    */
-  header->last_byte = 0;   /* Last byte information  */
-  header->Class_Id = 0;      /* Class Identifier       */
-  header->CSn_Id = 0;      /* CSn : index identifier */
-  header->Msg_offset = 0;   /* Message offset         */
-  header->Msg_length = 0;   /* Message length         */
-  header->Layer_nb = 0;      /* Auxiliary for JPP case */
+void jpt_init_msg_header(opj_jpt_msg_header_t * header) {
+  header->Id = 0;    /* In-class Identifier    */
+  header->last_byte = 0;  /* Last byte information  */
+  header->Class_Id = 0;    /* Class Identifier       */
+  header->CSn_Id = 0;    /* CSn : index identifier */
+  header->Msg_offset = 0;  /* Message offset         */
+  header->Msg_length = 0;  /* Message length         */
+  header->Layer_nb = 0;    /* Auxiliary for JPP case */
 }
 
 /*
@@ -75,47 +68,45 @@ void jpt_init_Msg_Header(jpt_msg_header_struct_t * header)
  * Only parameters always present in message header
  *
  */
-void jpt_reinit_Msg_Header(jpt_msg_header_struct_t * header)
-{
-  header->Id = 0;      /* In-class Identifier    */
-  header->last_byte = 0;   /* Last byte information  */
-  header->Msg_offset = 0;   /* Message offset         */
-  header->Msg_length = 0;   /* Message length         */
+void jpt_reinit_msg_header(opj_jpt_msg_header_t * header) {
+  header->Id = 0;    /* In-class Identifier    */
+  header->last_byte = 0;  /* Last byte information  */
+  header->Msg_offset = 0;  /* Message offset         */
+  header->Msg_length = 0;  /* Message length         */
 }
 
 /*
  * Read the message header for a JPP/JPT - stream
  *
  */
-void jpt_read_Msg_Header(jpt_msg_header_struct_t * header)
-{
+void jpt_read_msg_header(opj_common_ptr cinfo, opj_cio_t *cio, opj_jpt_msg_header_t *header) {
   unsigned char elmt, Class = 0, CSn = 0;
-  jpt_reinit_Msg_Header(header);
+  jpt_reinit_msg_header(header);
 
   /* ------------- */
   /* VBAS : Bin-ID */
   /* ------------- */
-  elmt = cio_read(1);
+  elmt = cio_read(cio, 1);
 
   /* See for Class and CSn */
   switch ((elmt >> 5) & 0x03) {
-  case 0:
-    fprintf(stderr, "Forbidden value encounter in message header !!\n");
-    break;
-  case 1:
-    Class = 0;
-    CSn = 0;
-    break;
-  case 2:
-    Class = 1;
-    CSn = 0;
-    break;
-  case 3:
-    Class = 1;
-    CSn = 1;
-    break;
-  default:
-    break;
+    case 0:
+      opj_event_msg(cinfo, EVT_ERROR, "Forbidden value encounter in message header !!\n");
+      break;
+    case 1:
+      Class = 0;
+      CSn = 0;
+      break;
+    case 2:
+      Class = 1;
+      CSn = 0;
+      break;
+    case 3:
+      Class = 1;
+      CSn = 1;
+      break;
+    default:
+      break;
   }
 
   /* see information on bits 'c' [p 10 : A.2.1 general, ISO/IEC FCD 15444-9] */
@@ -125,14 +116,14 @@ void jpt_read_Msg_Header(jpt_msg_header_struct_t * header)
   /* In-class identifier */
   header->Id |= (elmt & 0x0f);
   if ((elmt >> 7) == 1)
-    header->Id = jpt_read_VBAS_info(header->Id);
+    header->Id = jpt_read_VBAS_info(cio, header->Id);
 
   /* ------------ */
   /* VBAS : Class */
   /* ------------ */
   if (Class == 1) {
     header->Class_Id = 0;
-    header->Class_Id = jpt_read_VBAS_info(header->Class_Id);
+    header->Class_Id = jpt_read_VBAS_info(cio, header->Class_Id);
   }
 
   /* ---------- */
@@ -140,24 +131,24 @@ void jpt_read_Msg_Header(jpt_msg_header_struct_t * header)
   /* ---------- */
   if (CSn == 1) {
     header->CSn_Id = 0;
-    header->CSn_Id = jpt_read_VBAS_info(header->CSn_Id);
+    header->CSn_Id = jpt_read_VBAS_info(cio, header->CSn_Id);
   }
 
   /* ----------------- */
   /* VBAS : Msg_offset */
   /* ----------------- */
-  header->Msg_offset = jpt_read_VBAS_info(header->Msg_offset);
+  header->Msg_offset = jpt_read_VBAS_info(cio, header->Msg_offset);
 
   /* ----------------- */
   /* VBAS : Msg_length */
   /* ----------------- */
-  header->Msg_length = jpt_read_VBAS_info(header->Msg_length);
+  header->Msg_length = jpt_read_VBAS_info(cio, header->Msg_length);
 
   /* ---------- */
   /* VBAS : Aux */
   /* ---------- */
   if ((header->Class_Id & 0x01) == 1) {
     header->Layer_nb = 0;
-    header->Layer_nb = jpt_read_VBAS_info(header->Layer_nb);
+    header->Layer_nb = jpt_read_VBAS_info(cio, header->Layer_nb);
   }
 }