diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-07-12 18:38:26 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-07-12 18:38:26 +0300 |
commit | 5fae2503bf7d81b89f68f4c494f4c0e4c9eb5f46 (patch) | |
tree | 9b37773884e020430093b429c4fba4ff7b04481f /extern/libopenjpeg/ppix_manager.c | |
parent | 51b274a6be5d59c7009fd3f439821d1e15b72709 (diff) |
Revert "OpenJPEG: update to 2.1 from 1.5"
This reverts commit f12204196fb1ee985ab9745cf9c70877601145f9.
Campbell, sorry. have to revert this for the time being.
We've missed some very important bits, such as:
- FFmpeg is usually linked against OpenJPEG
- OIIO needs OpenJPEG as well.
For FFmpeg issues we can either disable OpenJPEG there (since
we don't really use it), or bump FFmpeg to version 3.1.1 which
can use either of OpenJPEG 1.5 or 2.1.
For OIIO we do need OpenJPEG support (otherwise Cycles will
not be able to use j2k/j2c textures) and currently there is
NO solution to make OIIO working with OpenJPEG 2.1.
According to Matthias Fauconneau (aka mfv) Larry is working
on the patch to get OIIO work with OpenJPEG 2.1, but it'll
take some time still.
I've tried to look into support of some sort of build system
flag and do ifdefs, but it all becomes quite nasty, especially
with bundled OpenJPEG bumped to 2.1.
Surely such an update is something we'll have to apply to
but at this exact moment it causes quite some pain for all
developers.
Suggest to wait for until OIIO supports OpenJPEG 2.1 and then
go with the updates for real.
Diffstat (limited to 'extern/libopenjpeg/ppix_manager.c')
-rw-r--r-- | extern/libopenjpeg/ppix_manager.c | 113 |
1 files changed, 46 insertions, 67 deletions
diff --git a/extern/libopenjpeg/ppix_manager.c b/extern/libopenjpeg/ppix_manager.c index fce514899a4..58d324ceb41 100644 --- a/extern/libopenjpeg/ppix_manager.c +++ b/extern/libopenjpeg/ppix_manager.c @@ -1,8 +1,8 @@ /* * $Id: ppix_manager.c 897 2011-08-28 21:43:57Z Kaori.Hagihara@gmail.com $ * - * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium - * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2011, Professor Benoit Macq * Copyright (c) 2003-2004, Yannick Verschueren * Copyright (c) 2010-2011, Kaori Hagihara * All rights reserved. @@ -33,6 +33,9 @@ * \brief Modification of jpip.c from 2KAN indexer */ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> #include "opj_includes.h" /* @@ -46,65 +49,49 @@ * @param[in] cio file output handle * @return length of faix box */ +int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio); - -int opj_write_ppix( int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, - opj_event_mgr_t * p_manager ) +int write_ppix( int coff, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio) { - OPJ_BYTE l_data_header [4]; - int compno, i; + int len, lenp, compno, i; opj_jp2_box_t *box; - OPJ_OFF_T lenp; - OPJ_UINT32 len; /* printf("cstr_info.packno %d\n", cstr_info.packno); //NMAX? */ lenp = -1; - box = (opj_jp2_box_t *)opj_calloc( (size_t)cstr_info.numcomps, sizeof(opj_jp2_box_t)); + box = (opj_jp2_box_t *)opj_calloc( cstr_info.numcomps, sizeof(opj_jp2_box_t)); for (i=0;i<2;i++){ - if (i) - - opj_stream_seek( cio, lenp, p_manager); + if (i) cio_seek( cio, lenp); - lenp = (OPJ_UINT32)(opj_stream_tell(cio)); - opj_stream_skip( cio, 4, p_manager); /* L [at the end] */ - opj_write_bytes(l_data_header,JPIP_PPIX,4);/* PPIX */ - opj_stream_write_data(cio,l_data_header,4,p_manager); + lenp = cio_tell( cio); + cio_skip( cio, 4); /* L [at the end] */ + cio_write( cio, JPIP_PPIX, 4); /* PPIX */ - opj_write_manf( i, cstr_info.numcomps, box, cio, p_manager); + write_manf( i, cstr_info.numcomps, box, cio); for (compno=0; compno<cstr_info.numcomps; compno++){ - box[compno].length = (OPJ_UINT32)opj_write_ppixfaix( coff, compno, cstr_info, EPHused, j2klen, cio,p_manager); + box[compno].length = write_ppixfaix( coff, compno, cstr_info, EPHused, j2klen, cio); box[compno].type = JPIP_FAIX; } - - len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); - opj_stream_seek(cio, lenp,p_manager); - opj_write_bytes(l_data_header,len,4);/* L */ - opj_stream_write_data(cio,l_data_header,4,p_manager); - opj_stream_seek(cio, lenp+len,p_manager); + len = cio_tell( cio)-lenp; + cio_seek( cio, lenp); + cio_write( cio, len, 4); /* L */ + cio_seek( cio, lenp+len); } opj_free(box); - return (int)len; + return len; } - - -int opj_write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, - opj_event_mgr_t * p_manager ) +int write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, opj_bool EPHused, int j2klen, opj_cio_t *cio) { - OPJ_BYTE l_data_header [8]; - OPJ_UINT32 tileno, version, i, nmax, size_of_coding; /* 4 or 8*/ - OPJ_UINT32 len; - OPJ_OFF_T lenp; + int len, lenp, tileno, version, i, nmax, size_of_coding; /* 4 or 8*/ opj_tile_info_t *tile_Idx; opj_packet_info_t packet; - int resno, precno, layno; - OPJ_UINT32 num_packet; + int resno, precno, layno, num_packet; int numOfres, numOfprec, numOflayers; packet.end_pos = packet.end_ph_pos = packet.start_pos = -1; (void)EPHused; /* unused ? */ @@ -118,22 +105,19 @@ int opj_write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, O version = 0; } - lenp = opj_stream_tell(cio); - opj_stream_skip(cio, 4, p_manager); /* L [at the end] */ - opj_write_bytes(l_data_header,JPIP_FAIX,4); /* FAIX */ - opj_write_bytes(l_data_header,version,1); - opj_stream_write_data(cio,l_data_header,1,p_manager);/* Version 0 = 4 bytes */ + lenp = cio_tell( cio); + cio_skip( cio, 4); /* L [at the end] */ + cio_write( cio, JPIP_FAIX, 4); /* FAIX */ + cio_write( cio, version, 1); /* Version 0 = 4 bytes */ nmax = 0; - for( i=0; i<=(OPJ_UINT32)cstr_info.numdecompos[compno]; i++) - nmax += (OPJ_UINT32)(cstr_info.tile[0].ph[i] * cstr_info.tile[0].pw[i] * cstr_info.numlayers); + for( i=0; i<=cstr_info.numdecompos[compno]; i++) + nmax += cstr_info.tile[0].ph[i] * cstr_info.tile[0].pw[i] * cstr_info.numlayers; - opj_write_bytes(l_data_header,nmax,size_of_coding); /* NMAX */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); - opj_write_bytes(l_data_header,(OPJ_UINT32)(cstr_info.tw*cstr_info.th),size_of_coding); /* M */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); + cio_write( cio, nmax, size_of_coding); /* NMAX */ + cio_write( cio, cstr_info.tw*cstr_info.th, size_of_coding); /* M */ - for( tileno=0; tileno<(OPJ_UINT32)(cstr_info.tw*cstr_info.th); tileno++){ + for( tileno=0; tileno<cstr_info.tw*cstr_info.th; tileno++){ tile_Idx = &cstr_info.tile[ tileno]; num_packet=0; @@ -146,29 +130,27 @@ int opj_write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, O for( layno=0; layno<numOflayers; layno++){ switch ( cstr_info.prog){ - case OPJ_LRCP: + case LRCP: packet = tile_Idx->packet[ ((layno*numOfres+resno)*cstr_info.numcomps+compno)*numOfprec+precno]; break; - case OPJ_RLCP: + case RLCP: packet = tile_Idx->packet[ ((resno*numOflayers+layno)*cstr_info.numcomps+compno)*numOfprec+precno]; break; - case OPJ_RPCL: + case RPCL: packet = tile_Idx->packet[ ((resno*numOfprec+precno)*cstr_info.numcomps+compno)*numOflayers+layno]; break; - case OPJ_PCRL: + case PCRL: packet = tile_Idx->packet[ ((precno*cstr_info.numcomps+compno)*numOfres+resno)*numOflayers + layno]; break; - case OPJ_CPRL: + case CPRL: packet = tile_Idx->packet[ ((compno*numOfprec+precno)*numOfres+resno)*numOflayers + layno]; break; default: fprintf( stderr, "failed to ppix indexing\n"); } - opj_write_bytes(l_data_header,(OPJ_UINT32)(packet.start_pos-coff),size_of_coding); /* start position */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); - opj_write_bytes(l_data_header,(OPJ_UINT32)(packet.end_pos-packet.start_pos+1),size_of_coding); /* length */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); + cio_write( cio, packet.start_pos-coff, size_of_coding); /* start position */ + cio_write( cio, packet.end_pos-packet.start_pos+1, size_of_coding); /* length */ num_packet++; } @@ -176,19 +158,16 @@ int opj_write_ppixfaix( int coff, int compno, opj_codestream_info_t cstr_info, O } while( num_packet < nmax){ /* PADDING */ - opj_write_bytes(l_data_header,0,size_of_coding);/* start position */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); - opj_write_bytes(l_data_header,0,size_of_coding);/* length */ - opj_stream_write_data(cio,l_data_header,size_of_coding,p_manager); + cio_write( cio, 0, size_of_coding); /* start position */ + cio_write( cio, 0, size_of_coding); /* length */ num_packet++; } } - len = (OPJ_UINT32)(opj_stream_tell(cio)-lenp); - opj_stream_seek(cio, lenp,p_manager); - opj_write_bytes(l_data_header,len,4);/* L */ - opj_stream_write_data(cio,l_data_header,4,p_manager); - opj_stream_seek(cio, lenp+len,p_manager); + len = cio_tell( cio)-lenp; + cio_seek( cio, lenp); + cio_write( cio, len, 4); /* L */ + cio_seek( cio, lenp+len); - return (int)len; + return len; } |