X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2Fgdcmopenjpeg%2Flibopenjpeg%2Fjpt.c;h=9b75994b069e0c0b23e633b0611281e132314c16;hb=6278320cc85da00d2d56ffbf07806e84966892c3;hp=909cc6302111dcba4c7e45ed69e868ad276c392e;hpb=7452f3039ff4dd2574fcbf3343b530a2f20f9623;p=gdcm.git diff --git a/src/gdcmopenjpeg/libopenjpeg/jpt.c b/src/gdcmopenjpeg/libopenjpeg/jpt.c index 909cc630..9b75994b 100644 --- a/src/gdcmopenjpeg/libopenjpeg/jpt.c +++ b/src/gdcmopenjpeg/libopenjpeg/jpt.c @@ -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 @@ -25,28 +26,21 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include -#include - -#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); } }