diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2017-08-10 16:49:47 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2017-08-10 16:49:47 +0200 |
| commit | 0b4fef6d1901254e41ab74ed681daba477d724c3 (patch) | |
| tree | 75119bdedc3a63b96b8d82aa3a83fab00c6c7e4b /src/lib/openjp2/tcd.c | |
| parent | a316f36dfc7cc4217bfce0ac6d23b47f90cf8fd9 (diff) | |
Propagate event manager down to opj_t2_encode_packet() and use it to emit an error message when the output buffer is too small
Diffstat (limited to 'src/lib/openjp2/tcd.c')
| -rw-r--r-- | src/lib/openjp2/tcd.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c index dd9faced..301c7213 100644 --- a/src/lib/openjp2/tcd.c +++ b/src/lib/openjp2/tcd.c @@ -180,12 +180,14 @@ static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, OPJ_BYTE * p_dest_data, OPJ_UINT32 * p_data_written, OPJ_UINT32 p_max_dest_size, - opj_codestream_info_t *p_cstr_info); + opj_codestream_info_t *p_cstr_info, + opj_event_mgr_t *p_manager); static OPJ_BOOL opj_tcd_rate_allocate_encode(opj_tcd_t *p_tcd, OPJ_BYTE * p_dest_data, OPJ_UINT32 p_max_dest_size, - opj_codestream_info_t *p_cstr_info); + opj_codestream_info_t *p_cstr_info, + opj_event_mgr_t *p_manager); /* ----------------------------------------------------------------------- */ @@ -431,7 +433,8 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 * p_data_written, OPJ_UINT32 len, - opj_codestream_info_t *cstr_info) + opj_codestream_info_t *cstr_info, + opj_event_mgr_t *p_manager) { OPJ_UINT32 compno, resno, bandno, precno, cblkno, layno; OPJ_UINT32 passno; @@ -563,7 +566,7 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, if (OPJ_IS_CINEMA(cp->rsiz)) { if (! opj_t2_encode_packets(t2, tcd->tcd_tileno, tcd_tile, layno + 1, dest, p_data_written, maxlen, cstr_info, tcd->cur_tp_num, tcd->tp_pos, tcd->cur_pino, - THRESH_CALC)) { + THRESH_CALC, p_manager)) { lo = thresh; continue; @@ -593,7 +596,7 @@ OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, } else { if (! opj_t2_encode_packets(t2, tcd->tcd_tileno, tcd_tile, layno + 1, dest, p_data_written, maxlen, cstr_info, tcd->cur_tp_num, tcd->tp_pos, tcd->cur_pino, - THRESH_CALC)) { + THRESH_CALC, p_manager)) { /* TODO: what to do with l ??? seek / tell ??? */ /* opj_event_msg(tcd->cinfo, EVT_INFO, "rate alloc: len=%d, max=%d\n", l, maxlen); */ lo = thresh; @@ -1303,7 +1306,8 @@ OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 * p_data_written, OPJ_UINT32 p_max_length, - opj_codestream_info_t *p_cstr_info) + opj_codestream_info_t *p_cstr_info, + opj_event_mgr_t *p_manager) { if (p_tcd->cur_tp_num == 0) { @@ -1365,7 +1369,8 @@ OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, /* FIXME _ProfStop(PGROUP_T1); */ /* FIXME _ProfStart(PGROUP_RATE); */ - if (! opj_tcd_rate_allocate_encode(p_tcd, p_dest, p_max_length, p_cstr_info)) { + if (! opj_tcd_rate_allocate_encode(p_tcd, p_dest, p_max_length, + p_cstr_info, p_manager)) { return OPJ_FALSE; } /* FIXME _ProfStop(PGROUP_RATE); */ @@ -1380,7 +1385,7 @@ OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, /* FIXME _ProfStart(PGROUP_T2); */ if (! opj_tcd_t2_encode(p_tcd, p_dest, p_data_written, p_max_length, - p_cstr_info)) { + p_cstr_info, p_manager)) { return OPJ_FALSE; } /* FIXME _ProfStop(PGROUP_T2); */ @@ -2196,7 +2201,8 @@ static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, OPJ_BYTE * p_dest_data, OPJ_UINT32 * p_data_written, OPJ_UINT32 p_max_dest_size, - opj_codestream_info_t *p_cstr_info) + opj_codestream_info_t *p_cstr_info, + opj_event_mgr_t *p_manager) { opj_t2_t * l_t2; @@ -2217,7 +2223,8 @@ static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, p_tcd->tp_num, p_tcd->tp_pos, p_tcd->cur_pino, - FINAL_PASS)) { + FINAL_PASS, + p_manager)) { opj_t2_destroy(l_t2); return OPJ_FALSE; } @@ -2232,7 +2239,8 @@ static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, static OPJ_BOOL opj_tcd_rate_allocate_encode(opj_tcd_t *p_tcd, OPJ_BYTE * p_dest_data, OPJ_UINT32 p_max_dest_size, - opj_codestream_info_t *p_cstr_info) + opj_codestream_info_t *p_cstr_info, + opj_event_mgr_t *p_manager) { opj_cp_t * l_cp = p_tcd->cp; OPJ_UINT32 l_nb_written = 0; @@ -2246,7 +2254,7 @@ static OPJ_BOOL opj_tcd_rate_allocate_encode(opj_tcd_t *p_tcd, /* fixed_quality */ /* Normal Rate/distortion allocation */ if (! opj_tcd_rateallocate(p_tcd, p_dest_data, &l_nb_written, p_max_dest_size, - p_cstr_info)) { + p_cstr_info, p_manager)) { return OPJ_FALSE; } } else { |
