From patchwork Sun Jun 21 18:42:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gautam Ramakrishnan X-Patchwork-Id: 20541 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 46108449CB2 for ; Sun, 21 Jun 2020 21:42:38 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 30A0B68B82C; Sun, 21 Jun 2020 21:42:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8CA2168B822 for ; Sun, 21 Jun 2020 21:42:31 +0300 (EEST) Received: by mail-pl1-f194.google.com with SMTP id 35so6540799ple.0 for ; Sun, 21 Jun 2020 11:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+X134DluktfHssJSQjq8qkQxgx7V6XuCmjLtXj4fFLM=; b=OPYdREu0xsw85SaBX1WRf+XKrGEwHYbjFdro04pB/Y+NIB6FbMNz2I9I8mGS4RuQHm epkgwm3l8xTx5kKoFYZzvX1318rwsmWznpck2xC6hVLSeUIXKyYZelZQaiv0eoEzm9Cn TmdX0GVZdWquDPk4/wpRGyBxqR7EylzlqQS4oBCHfe9wRGYKaZDN6Qe5DIXGJj0kU/88 ADQRY8sGxUNS5KeiM/8ygicL5X420PzHP/S43I+81RwNbGvns8rdNplJltxsnq2FDQPc KP1gztzdfO7L9K4Kz6pRDOtFRf29yDosS+lgHNjFghx/H7pRYId+DjnUcNJqXvgg8fPe oizw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+X134DluktfHssJSQjq8qkQxgx7V6XuCmjLtXj4fFLM=; b=sNRG9rtkajfnGqW2I6iS+mIE8CkLc1iXED14GCOrCIkaEAT+ggImpHIa1fN7TFEEZ7 JdFNOJruRAaabe3TJzvhR6rGWbTkYQQV2gfFBFv2Yw7fMHtglFCyfqaJ96wSKVhl8NKa KRapTPry0j0yMh4m60U2XKAV5aLrFbM8d0fP3iNoDIEpzZouEgBkgMP0ydEEfD0lYyWF xadxtBuNiF+Mbjd33+QUXFh073ZgudsT2Xn1z09ZsNlY3cLRj1+Z169vDaaGRW+NT1Dz ZhU6SV7LQz/Ghz8GUUdvv7SoY3jK47P8c1A72FJv4biJf3YynMSr4L+B3GeH0bukV9KX 0Tng== X-Gm-Message-State: AOAM531X15e6urQuJAiiIZxK5Z4kzpbTsfsVQ7+7kFVyFCuHWpWqEu2B zcZ0SpaHNhiws0DaXJdJ2trd+gAl8Zo= X-Google-Smtp-Source: ABdhPJykGWsBsJth/xsS5yQdSME45IRsT642jxrVqZFg4gqJ8e51s0i3mdj18FJMAmNewt03m8Dn1A== X-Received: by 2002:a17:902:a606:: with SMTP id u6mr10852128plq.94.1592764949505; Sun, 21 Jun 2020 11:42:29 -0700 (PDT) Received: from localhost.localdomain ([122.167.28.239]) by smtp.gmail.com with ESMTPSA id s1sm10786414pjp.14.2020.06.21.11.42.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Jun 2020 11:42:29 -0700 (PDT) From: gautamramk@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 22 Jun 2020 00:12:05 +0530 Message-Id: <20200621184208.27665-2-gautamramk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200621184208.27665-1-gautamramk@gmail.com> References: <20200621184208.27665-1-gautamramk@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/5] libavcodec/jpeg2000dec.c: Modify image dimensions X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Gautam Ramakrishnan MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Gautam Ramakrishnan Reduce image size of the image if all components have a non zero sample separation. This is to replicate the output of opj_decompress. --- libavcodec/jpeg2000dec.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c index ab36009a2d..05e85f4317 100644 --- a/libavcodec/jpeg2000dec.c +++ b/libavcodec/jpeg2000dec.c @@ -269,6 +269,8 @@ static int get_siz(Jpeg2000DecoderContext *s) const enum AVPixelFormat *possible_fmts = NULL; int possible_fmts_nb = 0; int ret; + int o_dimx, o_dimy; //original image dimensions. + int dimx, dimy; if (bytestream2_get_bytes_left(&s->g) < 36) { av_log(s->avctx, AV_LOG_ERROR, "Insufficient space for SIZ\n"); @@ -371,11 +373,18 @@ static int get_siz(Jpeg2000DecoderContext *s) } /* compute image size with reduction factor */ - ret = ff_set_dimensions(s->avctx, - ff_jpeg2000_ceildivpow2(s->width - s->image_offset_x, - s->reduction_factor), - ff_jpeg2000_ceildivpow2(s->height - s->image_offset_y, - s->reduction_factor)); + o_dimx = ff_jpeg2000_ceildivpow2(s->width - s->image_offset_x, + s->reduction_factor); + o_dimy = ff_jpeg2000_ceildivpow2(s->height - s->image_offset_y, + s->reduction_factor); + dimx = ff_jpeg2000_ceildiv(o_dimx, s->cdx[0]); + dimy = ff_jpeg2000_ceildiv(o_dimy, s->cdy[0]); + for (i = 1; i < s->ncomponents; i++) { + dimx = FFMAX(dimx, ff_jpeg2000_ceildiv(o_dimx, s->cdx[i])); + dimy = FFMAX(dimy, ff_jpeg2000_ceildiv(o_dimy, s->cdy[i])); + } + + ret = ff_set_dimensions(s->avctx, dimx, dimy); if (ret < 0) return ret;