+ {
+ const char* options[4] = { NULL, NULL, NULL, NULL };
+ int iOpt = 0;
+ char szGuardBits[32];
+ if (PLT) {
+ options[iOpt++] = "PLT=YES";
+ }
+ if (TLM) {
+ options[iOpt++] = "TLM=YES";
+ }
+ if (guard_bits >= 0) {
+ sprintf(szGuardBits, "GUARD_BITS=%d", guard_bits);
+ options[iOpt++] = szGuardBits;
+ }
+ if (iOpt > 0 && !opj_encoder_set_extra_options(l_codec, options)) {
+ fprintf(stderr, "failed to encode image: opj_encoder_set_extra_options\n");
+ opj_destroy_codec(l_codec);
+ opj_image_destroy(image);
+ ret = 1;
+ goto fin;
+ }
+ }
+
+ if (num_threads >= 1 &&
+ !opj_codec_set_threads(l_codec, num_threads)) {
+ fprintf(stderr, "failed to set number of threads\n");
+ opj_destroy_codec(l_codec);
+ opj_image_destroy(image);
+ ret = 1;
+ goto fin;
+ }
+