Exemple #1
0
opj_dinfo_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format) {
	opj_dinfo_t *dinfo = (opj_dinfo_t*)opj_malloc(sizeof(opj_dinfo_t));
	if(!dinfo) return NULL;
	dinfo->is_decompressor = true;
	switch(format) {
		case CODEC_J2K:
		case CODEC_JPT:
			/* get a J2K decoder handle */
			dinfo->j2k_handle = (void*)j2k_create_decompress((opj_common_ptr)dinfo);
			if(!dinfo->j2k_handle) {
				opj_free(dinfo);
				return NULL;
			}
			break;
		case CODEC_JP2:
			/* get a JP2 decoder handle */
			dinfo->jp2_handle = (void*)jp2_create_decompress((opj_common_ptr)dinfo);
			if(!dinfo->jp2_handle) {
				opj_free(dinfo);
				return NULL;
			}
			break;
		case CODEC_UNKNOWN:
		default:
			opj_free(dinfo);
			return NULL;
	}

	dinfo->codec_format = format;

	return dinfo;
}
Exemple #2
0
opj_jp2_t* jp2_create_decompress(opj_common_ptr cinfo) {
	opj_jp2_t *jp2 = (opj_jp2_t*) opj_calloc(1, sizeof(opj_jp2_t));
	if(jp2) {
		jp2->cinfo = cinfo;
		/* create the J2K codec */
		jp2->j2k = j2k_create_decompress(cinfo);
		if(jp2->j2k == NULL) {
			jp2_destroy_decompress(jp2);
			return NULL;
		}
	}
	return jp2;
}
Exemple #3
0
opj_codec_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT p_format)
{
  opj_codec_private_t *l_info = 00;

  l_info = (opj_codec_private_t*) opj_calloc(1, sizeof(opj_codec_private_t));
  if
    (!l_info)
  {
    return 00;
  }
  memset(l_info, 0, sizeof(opj_codec_private_t));
  l_info->is_decompressor = 1;
  switch
    (p_format)
  {
    case CODEC_J2K:
      l_info->m_codec_data.m_decompression.opj_decode = (opj_image_t* (*) (void *, struct opj_stream_private *, struct opj_event_mgr * ))j2k_decode;
      l_info->m_codec_data.m_decompression.opj_end_decompress =  (bool (*) (void *,struct opj_stream_private *,struct opj_event_mgr *))j2k_end_decompress;
      l_info->m_codec_data.m_decompression.opj_read_header =  (bool (*) (
        void *,
        opj_image_t **,
        OPJ_INT32 * ,
        OPJ_INT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        struct opj_stream_private *,
        struct opj_event_mgr * )) j2k_read_header;
      l_info->m_codec_data.m_decompression.opj_destroy = (void (*) (void *))j2k_destroy;
      l_info->m_codec_data.m_decompression.opj_setup_decoder = (void (*) (void * ,opj_dparameters_t * )) j2k_setup_decoder;
      l_info->m_codec_data.m_decompression.opj_read_tile_header = (bool (*) (
        void *,
        OPJ_UINT32*,
        OPJ_UINT32*,
        OPJ_INT32 * ,
        OPJ_INT32 * ,
        OPJ_INT32 * ,
        OPJ_INT32 * ,
        OPJ_UINT32 * ,
        bool *,
        struct opj_stream_private *,
        struct opj_event_mgr * )) j2k_read_tile_header;
        l_info->m_codec_data.m_decompression.opj_decode_tile_data = (bool (*) (void *,OPJ_UINT32,OPJ_BYTE*,OPJ_UINT32,struct opj_stream_private *,  struct opj_event_mgr * )) j2k_decode_tile;
      l_info->m_codec_data.m_decompression.opj_set_decode_area = (bool (*) (void *,OPJ_INT32,OPJ_INT32,OPJ_INT32,OPJ_INT32, struct opj_event_mgr * )) j2k_set_decode_area;
      l_info->m_codec = j2k_create_decompress();
      if
        (! l_info->m_codec)
      {
        opj_free(l_info);
        return 00;
      }
      break;

    case CODEC_JP2:
      /* get a JP2 decoder handle */
      l_info->m_codec_data.m_decompression.opj_decode = (opj_image_t* (*) (void *, struct opj_stream_private *, struct opj_event_mgr * ))jp2_decode;
      l_info->m_codec_data.m_decompression.opj_end_decompress =  (bool (*) (void *,struct opj_stream_private *,struct opj_event_mgr *)) jp2_end_decompress;
      l_info->m_codec_data.m_decompression.opj_read_header =  (bool (*) (
        void *,
        opj_image_t **,

        OPJ_INT32 * ,
        OPJ_INT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        OPJ_UINT32 * ,
        struct opj_stream_private *,
        struct opj_event_mgr * )) jp2_read_header;

      l_info->m_codec_data.m_decompression.opj_read_tile_header = (
        bool (*) (
          void *,
          OPJ_UINT32*,
          OPJ_UINT32*,
          OPJ_INT32*,
          OPJ_INT32*,
          OPJ_INT32 * ,
          OPJ_INT32 * ,
          OPJ_UINT32 * ,
          bool *,
          struct opj_stream_private *,
          struct opj_event_mgr * )) jp2_read_tile_header;

      l_info->m_codec_data.m_decompression.opj_decode_tile_data = (bool (*) (void *,OPJ_UINT32,OPJ_BYTE*,OPJ_UINT32,struct opj_stream_private *,  struct opj_event_mgr * )) jp2_decode_tile;

      l_info->m_codec_data.m_decompression.opj_destroy = (void (*) (void *))jp2_destroy;
      l_info->m_codec_data.m_decompression.opj_setup_decoder = (void (*) (void * ,opj_dparameters_t * )) jp2_setup_decoder;
      l_info->m_codec_data.m_decompression.opj_set_decode_area = (bool (*) (void *,OPJ_INT32,OPJ_INT32,OPJ_INT32,OPJ_INT32, struct opj_event_mgr * )) jp2_set_decode_area;


      l_info->m_codec = jp2_create(true);
      if
        (! l_info->m_codec)
      {
        opj_free(l_info);
        return 00;
      }
      break;
    case CODEC_UNKNOWN:
    case CODEC_JPT:
    default:
      opj_free(l_info);
      return 00;
  }
  set_default_event_handler(&(l_info->m_event_mgr));
  return (opj_codec_t*) l_info;
}