static bool jp2_read_struct(opj_jp2_t *jp2, opj_cio_t *cio) { if (!jp2_read_jp(jp2, cio)) return false; if (!jp2_read_ftyp(jp2, cio)) return false; if (!jp2_read_jp2h(jp2, cio)) return false; if (!jp2_read_jp2c(jp2, cio, &jp2->j2k_codestream_length, &jp2->j2k_codestream_offset)) return false; return true; }
static opj_bool jp2_read_struct(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color) { if (!jp2_read_jp(jp2, cio)) return OPJ_FALSE; if (!jp2_read_ftyp(jp2, cio)) return OPJ_FALSE; if (!jp2_read_jp2h(jp2, cio, color)) return OPJ_FALSE; if (!jp2_read_jp2c(jp2, cio, &jp2->j2k_codestream_length, &jp2->j2k_codestream_offset)) return OPJ_FALSE; return OPJ_TRUE; }
int jp2_decode(unsigned char *src, int len, jp2_struct_t * jp2_struct, j2k_cp_t * cp) { cio_init(src, len); if (jp2_read_jp()) return 1; if (jp2_read_ftyp(jp2_struct)) return 1; if (jp2_read_jp2h(jp2_struct)) return 1; if (jp2_read_jp2c(src, len, jp2_struct, cp)) return 1; return 0; }