|
|
|
@ -188,6 +188,35 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx) |
|
|
|
|
ctx->enc_params.tcp_numlayers = ctx->numlayers; |
|
|
|
|
ctx->enc_params.tcp_rates[0] = FFMAX(avctx->compression_level, 0) * 2; |
|
|
|
|
|
|
|
|
|
if (ctx->cinema_mode > 0) { |
|
|
|
|
ctx->enc_params.irreversible = 1; |
|
|
|
|
ctx->enc_params.tcp_mct = 1; |
|
|
|
|
ctx->enc_params.tile_size_on = 0; |
|
|
|
|
/* no subsampling */ |
|
|
|
|
ctx->enc_params.cp_tdx=1; |
|
|
|
|
ctx->enc_params.cp_tdy=1; |
|
|
|
|
ctx->enc_params.subsampling_dx = 1; |
|
|
|
|
ctx->enc_params.subsampling_dy = 1; |
|
|
|
|
/* Tile and Image shall be at (0,0) */ |
|
|
|
|
ctx->enc_params.cp_tx0 = 0; |
|
|
|
|
ctx->enc_params.cp_ty0 = 0; |
|
|
|
|
ctx->enc_params.image_offset_x0 = 0; |
|
|
|
|
ctx->enc_params.image_offset_y0 = 0; |
|
|
|
|
/* Codeblock size= 32*32 */ |
|
|
|
|
ctx->enc_params.cblockw_init = 32; |
|
|
|
|
ctx->enc_params.cblockh_init = 32; |
|
|
|
|
ctx->enc_params.csty |= 0x01; |
|
|
|
|
/* No ROI */ |
|
|
|
|
ctx->enc_params.roi_compno = -1; |
|
|
|
|
|
|
|
|
|
if (ctx->enc_params.prog_order != CPRL) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "prog_order forced to CPRL\n"); |
|
|
|
|
ctx->enc_params.prog_order = CPRL; |
|
|
|
|
} |
|
|
|
|
ctx->enc_params.tp_flag = 'C'; |
|
|
|
|
ctx->enc_params.tp_on = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ctx->compress = opj_create_compress(ctx->format); |
|
|
|
|
if (!ctx->compress) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "Error creating the compressor\n"); |
|
|
|
|