/** marker value (J2K_MS_EPC, etc.) */
int id;
/** union keeping the pointer to the real marker struct */
- union {
+ union jpwl_marks {
/** pointer to EPB marker */
jpwl_epb_ms_t *epbmark;
/** pointer to EPC marker */
jpwl_esd_ms_t *esdmark;
/** pointer to RED marker */
jpwl_red_ms_t *redmark;
- };
+ } m;
/** position where the marker should go, in the pre-JPWL codestream */
unsigned long int pos;
/** same as before, only written as a double, so we can sort it better */
bool data_ready;
} jpwl_marker_t;
+/**
+Encode according to JPWL specs
+@param j2k J2K handle
+@param cio codestream handle
+@param image image handle
+*/
+void jpwl_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image);
+
/**
Prepare the list of JPWL markers, after the Part 1 codestream
has been finalized (index struct is full)
@param j2k J2K handle
*/
void j2k_read_epc(opj_j2k_t *j2k);
+
/**
Write the EPC marker (Error Protection Capability), BUT the DL field is always set to 0
(this simplifies the management of EPBs and it is openly stated in the standard
@param j2k J2K handle
*/
void j2k_write_epc(opj_j2k_t *j2k);
+
/**
Read the EPB marker (Error Protection Block)
@param j2k J2K handle
*/
void j2k_read_epb(opj_j2k_t *j2k);
+
/**
Write the EPB marker (Error Protection Block)
@param j2k J2K handle
*/
void j2k_write_epb(opj_j2k_t *j2k);
+
/**
Read the ESD marker (Error Sensitivity Descriptor)
@param j2k J2K handle
*/
void j2k_read_esd(opj_j2k_t *j2k);
+
/**
Read the RED marker (Residual Error Descriptor)
@param j2k J2K handle
bool jpwl_epb_fill(opj_j2k_t *j2k, jpwl_epb_ms_t *epbmark, unsigned char *buf, unsigned char *post_buf);
+void j2k_add_marker(opj_codestream_info_t *cstr_info, unsigned short int type, int pos, int len);
+
/** corrects the data in the JPWL codestream
@param j2k J2K compressor handle
@return true if correction is performed correctly