summaryrefslogtreecommitdiffstats
path: root/libavcodec/libopenjpegenc.c
diff options
context:
space:
mode:
authorMichaƫl Cinquin <mc@michaelcinquin.com>2013-02-03 23:53:39 -0700
committerMichael Bradshaw <mjbshaw@gmail.com>2013-02-03 23:53:39 -0700
commit60f06f986f81c5aa0497c4fa189f50a504896c81 (patch)
tree9b263138873dad09cfb18c08d690e38900d45d0b /libavcodec/libopenjpegenc.c
parentb5f544a0f9981ee1676128cb6c3711a2ec80fe1b (diff)
downloadffmpeg-streaming-60f06f986f81c5aa0497c4fa189f50a504896c81.zip
ffmpeg-streaming-60f06f986f81c5aa0497c4fa189f50a504896c81.tar.gz
libopenjpegenc: make dci compliant j2c
Signed-off-by: Michael Bradshaw <mjbshaw@gmail.com>
Diffstat (limited to 'libavcodec/libopenjpegenc.c')
-rw-r--r--libavcodec/libopenjpegenc.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
index 2bbbae9..c355083 100644
--- a/libavcodec/libopenjpegenc.c
+++ b/libavcodec/libopenjpegenc.c
@@ -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");
OpenPOWER on IntegriCloud