struct opj_j2k: remove unused fields, and add some documentation
[openjpeg.git] / src / lib / openjp2 / t2.c
index 6f956d1c7f6f988d243a86f64c34f2e8020c7f5e..0887b9f5f4681d1c44c9c420fc94701345796ea0 100644 (file)
@@ -667,7 +667,19 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno,
     opj_tcd_resolution_t *res = &tilec->resolutions[resno];
 
     opj_bio_t *bio = 00;    /* BIO component */
+#ifdef ENABLE_EMPTY_PACKET_OPTIMIZATION
     OPJ_BOOL packet_empty = OPJ_TRUE;
+#else
+    OPJ_BOOL packet_empty = OPJ_FALSE;
+#endif
+
+#ifdef DEBUG_VERBOSE
+    if (p_t2_mode == FINAL_PASS) {
+        fprintf(stderr,
+                "encode packet compono=%d, resno=%d, precno=%d, layno=%d\n",
+                compno, resno, precno, layno);
+    }
+#endif
 
     /* <SOP 0xff91> */
     if (tcp->csty & J2K_CP_CSTY_SOP) {
@@ -728,6 +740,11 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno,
     }
     opj_bio_init_enc(bio, c, length);
 
+#ifdef ENABLE_EMPTY_PACKET_OPTIMIZATION
+    /* WARNING: this code branch is disabled, since it has been reported that */
+    /* such packets cause decoding issues with cinema J2K hardware */
+    /* decoders: https://groups.google.com/forum/#!topic/openjpeg/M7M_fLX_Bco */
+
     /* Check if the packet is empty */
     /* Note: we could also skip that step and always write a packet header */
     band = res->bands;
@@ -755,10 +772,9 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno,
             break;
         }
     }
-
+#endif
     opj_bio_write(bio, packet_empty ? 0 : 1, 1);           /* Empty header bit */
 
-
     /* Writing Packet header */
     band = res->bands;
     for (bandno = 0; !packet_empty &&