[trunk] add functions to avoid to use FILE* into the API (thanks winfried).
Update issue 120 and update issue 198
This commit is contained in:
parent
a2aeafe85b
commit
d5884afcf3
|
@ -195,6 +195,21 @@ void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OPJ_CALLCONV opj_stream_destroy_v3(opj_stream_t* p_stream)
|
||||||
|
{
|
||||||
|
opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
|
||||||
|
|
||||||
|
if (l_stream) {
|
||||||
|
FILE *fp = (FILE*)l_stream->m_user_data;
|
||||||
|
if(fp)
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
opj_free(l_stream->m_stored_data);
|
||||||
|
l_stream->m_stored_data = 00;
|
||||||
|
opj_free(l_stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stream, opj_stream_read_fn p_function)
|
void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stream, opj_stream_read_fn p_function)
|
||||||
{
|
{
|
||||||
opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
|
opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
|
||||||
|
|
|
@ -1037,6 +1037,11 @@ opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (FILE * p_file,
|
||||||
return opj_stream_create_file_stream(p_file,OPJ_J2K_STREAM_CHUNK_SIZE,p_is_read_stream);
|
return opj_stream_create_file_stream(p_file,OPJ_J2K_STREAM_CHUNK_SIZE,p_is_read_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream_v3 (const char *fname, OPJ_BOOL p_is_read_stream)
|
||||||
|
{
|
||||||
|
return opj_stream_create_file_stream_v3(fname, OPJ_J2K_STREAM_CHUNK_SIZE, p_is_read_stream);
|
||||||
|
}
|
||||||
|
|
||||||
opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream ( FILE * p_file,
|
opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream ( FILE * p_file,
|
||||||
OPJ_SIZE_T p_size,
|
OPJ_SIZE_T p_size,
|
||||||
OPJ_BOOL p_is_read_stream)
|
OPJ_BOOL p_is_read_stream)
|
||||||
|
@ -1061,3 +1066,40 @@ opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream ( FILE * p_file,
|
||||||
|
|
||||||
return l_stream;
|
return l_stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream_v3 (
|
||||||
|
const char *fname,
|
||||||
|
OPJ_SIZE_T p_size,
|
||||||
|
OPJ_BOOL p_is_read_stream)
|
||||||
|
{
|
||||||
|
opj_stream_t* l_stream = 00;
|
||||||
|
FILE *p_file;
|
||||||
|
const char *mode;
|
||||||
|
|
||||||
|
if (! fname) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p_is_read_stream) mode = "rb"; else mode = "wb";
|
||||||
|
|
||||||
|
p_file = fopen(fname, mode);
|
||||||
|
|
||||||
|
if (! p_file) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
l_stream = opj_stream_create(p_size,p_is_read_stream);
|
||||||
|
if (! l_stream) {
|
||||||
|
fclose(p_file);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
opj_stream_set_user_data(l_stream, p_file);
|
||||||
|
opj_stream_set_user_data_length(l_stream, opj_get_data_length_from_file(p_file));
|
||||||
|
opj_stream_set_read_function(l_stream, (opj_stream_read_fn) opj_read_from_file);
|
||||||
|
opj_stream_set_write_function(l_stream, (opj_stream_write_fn) opj_write_from_file);
|
||||||
|
opj_stream_set_skip_function(l_stream, (opj_stream_skip_fn) opj_skip_from_file);
|
||||||
|
opj_stream_set_seek_function(l_stream, (opj_stream_seek_fn) opj_seek_from_file);
|
||||||
|
|
||||||
|
return l_stream;
|
||||||
|
}
|
||||||
|
|
|
@ -387,7 +387,8 @@ typedef struct opj_cparameters {
|
||||||
char tcp_mct;
|
char tcp_mct;
|
||||||
/** Enable JPIP indexing*/
|
/** Enable JPIP indexing*/
|
||||||
OPJ_BOOL jpip_on;
|
OPJ_BOOL jpip_on;
|
||||||
/** Naive implementation of MCT restricted to a single reversible array based encoding without offset concerning all the components. */
|
/** Naive implementation of MCT restricted to a single reversible array based
|
||||||
|
encoding without offset concerning all the components. */
|
||||||
void * mct_data;
|
void * mct_data;
|
||||||
} opj_cparameters_t;
|
} opj_cparameters_t;
|
||||||
|
|
||||||
|
@ -1004,6 +1005,7 @@ OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, O
|
||||||
* @param p_stream the stream to destroy.
|
* @param p_stream the stream to destroy.
|
||||||
*/
|
*/
|
||||||
OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream);
|
OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream);
|
||||||
|
OPJ_API void OPJ_CALLCONV opj_stream_destroy_v3(opj_stream_t* p_stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the given function to be used as a read function.
|
* Sets the given function to be used as a read function.
|
||||||
|
@ -1055,6 +1057,7 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream
|
||||||
* @param p_is_read_stream whether the stream is a read stream (true) or not (false)
|
* @param p_is_read_stream whether the stream is a read stream (true) or not (false)
|
||||||
*/
|
*/
|
||||||
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (FILE * p_file, OPJ_BOOL p_is_read_stream);
|
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (FILE * p_file, OPJ_BOOL p_is_read_stream);
|
||||||
|
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream_v3 (const char *fname, OPJ_BOOL p_is_read_stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FIXME DOC
|
* FIXME DOC
|
||||||
|
@ -1062,7 +1065,12 @@ OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (FILE *
|
||||||
* @param p_buffer_size size of the chunk used to stream
|
* @param p_buffer_size size of the chunk used to stream
|
||||||
* @param p_is_read_stream whether the stream is a read stream (true) or not (false)
|
* @param p_is_read_stream whether the stream is a read stream (true) or not (false)
|
||||||
*/
|
*/
|
||||||
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (FILE * p_file, OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_read_stream);
|
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (FILE * p_file,
|
||||||
|
OPJ_SIZE_T p_buffer_size,
|
||||||
|
OPJ_BOOL p_is_read_stream);
|
||||||
|
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream_v3 (const char *fname,
|
||||||
|
OPJ_SIZE_T p_buffer_size,
|
||||||
|
OPJ_BOOL p_is_read_stream);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==========================================================
|
==========================================================
|
||||||
|
@ -1217,7 +1225,8 @@ OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_c
|
||||||
* @param p_codec the jpeg2000 codec.
|
* @param p_codec the jpeg2000 codec.
|
||||||
* @param p_tile_index the index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
|
* @param p_tile_index the index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
|
||||||
* @param p_data pointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
|
* @param p_data pointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
|
||||||
* @param p_data_size this value os used to make sure the data being written is correct. The size must be equal to the sum for each component of tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
|
* @param p_data_size this value os used to make sure the data being written is correct. The size must be equal to the sum for each component of
|
||||||
|
* tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
|
||||||
* @param p_stream the stream to write data to.
|
* @param p_stream the stream to write data to.
|
||||||
*
|
*
|
||||||
* @return true if the data could be written.
|
* @return true if the data could be written.
|
||||||
|
|
Loading…
Reference in New Issue