diff options
| author | Antonin Descampe <antonin@gmail.com> | 2005-12-02 13:34:15 +0000 |
|---|---|---|
| committer | Antonin Descampe <antonin@gmail.com> | 2005-12-02 13:34:15 +0000 |
| commit | f61cda9b7d83e0202cbaa15bac45d358e9b3652e (patch) | |
| tree | 2acfa84c798e60d15107f2399a8856be4f5a3806 /libopenjpeg/jpt.c | |
| parent | 76016d509bf892b555840a1bfa3b62750c878051 (diff) | |
openjpeg version 1.0 (previous version still available with tag opj0-97)
Diffstat (limited to 'libopenjpeg/jpt.c')
| -rw-r--r-- | libopenjpeg/jpt.c | 98 |
1 files changed, 45 insertions, 53 deletions
diff --git a/libopenjpeg/jpt.c b/libopenjpeg/jpt.c index 1d4713dc..08323e13 100644 --- a/libopenjpeg/jpt.c +++ b/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,22 @@ * 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 +53,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 +69,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: + opg_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 +117,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 +132,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); } } |
