Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3871658pxu; Tue, 20 Oct 2020 02:43:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzHzAdHArRbxeGN2kTLQ4fqZohBBArE0VDQJMfrg/6utkZ+5llFrKw08egm8bc83gkl0PWQ X-Received: by 2002:aa7:c1d3:: with SMTP id d19mr1949056edp.293.1603186989554; Tue, 20 Oct 2020 02:43:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603186989; cv=none; d=google.com; s=arc-20160816; b=PwCsj2Q+jieO4h75gWKB3gFQNpEr7Ur44yOiswEOFto2Z7kisf1AYa/K/GgSKsaCWC ZZut5C8vY5ZV6tZdzPCGz1bmwIQA3wtjAPfSCF22KZVr9eKge238bpdcbiEe4ro3D7VA HaC/ZSZPu+x2NlmFTkeWcZk8vEhUdIGGEho5T1HWgsCQen+J+LnucIo6IIGNVQuTQo9W +ypB+RQcjs31S4n61soFek+q4KCMZpDd+cjN2v/g1x3eYf4NWX3VDr/eok/ZG1MPHrB0 hYzrCdrpFChFGGVs2uYi3OIm76JZK2GO1OIBHuMlYmb9yIDX78eXlvjKEE6m0d67DjjK 6WEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=i5LGZ4Z5//+lRNXTDf6tlbBsdMMt7/nvH3Q3EoFvv7s=; b=eYyM09wV46LDhEDKIau1I7KMrX6/od2SX0ltg1/v0H/W9d8IoWf3+f12v/tZypbccx Lqny7IryI21BwJ3N0ZG8iImWXCEGu4zfNLj0qsG0/4JnBzYvCFfjzdmA0OXpkl0zZD6b NEl/WPPLBqfWWJy6wECrqO6W4tPwMwyIUMRcV1Bj2dPKdyaNjAyAKII0JXWAfQfCWaZX 2XJ3tee8lZaReI5Gm+Vv38SXSOW4ExM9T0CqNNfdY7Vhe0knwo3SjXfwfKfisYJz3r8u 2nXT7B24cagSva125k5LOeIELtNSX+MXLQaDWiIevlKTZX13g/CrRpDxH/dEbyvz9JCj hrKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Seh8wX3y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p27si860251ejf.691.2020.10.20.02.42.47; Tue, 20 Oct 2020 02:43:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Seh8wX3y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404424AbgJTGlb (ORCPT + 99 others); Tue, 20 Oct 2020 02:41:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404421AbgJTGla (ORCPT ); Tue, 20 Oct 2020 02:41:30 -0400 Received: from mail-oo1-xc41.google.com (mail-oo1-xc41.google.com [IPv6:2607:f8b0:4864:20::c41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83CD8C0613CE for ; Mon, 19 Oct 2020 23:41:30 -0700 (PDT) Received: by mail-oo1-xc41.google.com with SMTP id w25so192457oos.10 for ; Mon, 19 Oct 2020 23:41:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=i5LGZ4Z5//+lRNXTDf6tlbBsdMMt7/nvH3Q3EoFvv7s=; b=Seh8wX3yNDbz2GaumO8yPfsIcVs44ueyV8duc/RD0O/2j5QVWjxuAfj7ov8QrLl/1t 2Ifriom0ENn+iNMhZNB38+XJdOd0Lla1+8RFcFXYGYJPlJJCLLJU0QjBQXyS1HYKM7Bf L7/yRX2oScLVkIun/Ob1qL4X33j2g8VWH/kRA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=i5LGZ4Z5//+lRNXTDf6tlbBsdMMt7/nvH3Q3EoFvv7s=; b=JLljKF8ZBzNd/OQPr0mrA99qD7oI/bj6MyXFUcErcl0Ro1B87F2Kor2P8rSl/lwWXE 7z6uBUxgNpzwKaqHqUDUrycawvnMQIRmlBvOJEI7vK9+OwliGHWk+eQL+fs0iML/RB4c d+cr+ACnjUF6E5K39AR/EYss8iEPLPHzIfQrQI182NMr2dVThGAk40X/nkOEOFOmkWZK KfXL5ad3+TOJvkCH1uDRAIuROUsEOIoJusctvmw2BOWPvtTFbocy0MC35UBJtqbSsLOB HiVV6xhBBMk71c6ksoHsFUVyTWuf8ldwrXtxqvlDKqbaNtiaaWo3Ac4t9JMLrsv8O5fY CfIg== X-Gm-Message-State: AOAM533RsccU7BABUhHUqHDycfPJpMYPsQbwLN0Nr1sNuIyPiB2DoJzQ +YyDVedB96ewX8GI73F3B30rERPjImEvwQ== X-Received: by 2002:a4a:95cb:: with SMTP id p11mr758950ooi.89.1603176089538; Mon, 19 Oct 2020 23:41:29 -0700 (PDT) Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com. [209.85.167.181]) by smtp.gmail.com with ESMTPSA id d64sm289431oia.11.2020.10.19.23.41.28 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Oct 2020 23:41:28 -0700 (PDT) Received: by mail-oi1-f181.google.com with SMTP id q136so1060766oic.8 for ; Mon, 19 Oct 2020 23:41:28 -0700 (PDT) X-Received: by 2002:a05:6808:8c:: with SMTP id s12mr808474oic.55.1603176087864; Mon, 19 Oct 2020 23:41:27 -0700 (PDT) MIME-Version: 1.0 References: <20201009084533.2405320-1-acourbot@chromium.org> In-Reply-To: From: Alexandre Courbot Date: Tue, 20 Oct 2020 15:41:16 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] venus: vdec: return parsed crop information from stream To: Fritz Koenig Cc: Stanimir Varbanov , Linux Media Mailing List , linux-arm-msm@vger.kernel.org, LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 19, 2020 at 7:19 AM Fritz Koenig wrote: > > It looks like only h.264 streams are populating the event.input_crop > struct when receiving the HFI_INDEX_EXTRADATA_INPUT_CROP message in > event_seq_changed(). vp8/vp9 streams end up with the struct filled > with 0. Indeed. :( I guess we can fallback to the previous behavior of using the coded resolution as visible rect when the reported visible rect's area is 0. That will preserve the previous behavior until the firmware starts reporting this information for all encoded streams. > > On Fri, Oct 9, 2020 at 1:45 AM Alexandre Courbot wrote: > > > > Per the stateful codec specification, VIDIOC_G_SELECTION with a target > > of V4L2_SEL_TGT_COMPOSE is supposed to return the crop area of capture > > buffers containing the decoded frame. Until now the driver did not get > > that information from the firmware and just returned the dimensions of > > CAPTURE buffers. > > > > Signed-off-by: Alexandre Courbot > > --- > > drivers/media/platform/qcom/venus/core.h | 1 + > > drivers/media/platform/qcom/venus/vdec.c | 21 ++++++++++++++++----- > > 2 files changed, 17 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h > > index 7b79a33dc9d6..3bc129a4f817 100644 > > --- a/drivers/media/platform/qcom/venus/core.h > > +++ b/drivers/media/platform/qcom/venus/core.h > > @@ -361,6 +361,7 @@ struct venus_inst { > > unsigned int streamon_cap, streamon_out; > > u32 width; > > u32 height; > > + struct v4l2_rect crop; > > u32 out_width; > > u32 out_height; > > u32 colorspace; > > diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c > > index ea13170a6a2c..ee74346f0cae 100644 > > --- a/drivers/media/platform/qcom/venus/vdec.c > > +++ b/drivers/media/platform/qcom/venus/vdec.c > > @@ -325,6 +325,10 @@ static int vdec_s_fmt(struct file *file, void *fh, struct v4l2_format *f) > > > > inst->width = format.fmt.pix_mp.width; > > inst->height = format.fmt.pix_mp.height; > > + inst->crop.top = 0; > > + inst->crop.left = 0; > > + inst->crop.width = inst->width; > > + inst->crop.height = inst->height; > > > > if (f->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) > > inst->fmt_out = fmt; > > @@ -343,6 +347,9 @@ vdec_g_selection(struct file *file, void *fh, struct v4l2_selection *s) > > s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) > > return -EINVAL; > > > > + s->r.top = 0; > > + s->r.left = 0; > > + > > switch (s->target) { > > case V4L2_SEL_TGT_CROP_BOUNDS: > > case V4L2_SEL_TGT_CROP_DEFAULT: > > @@ -363,16 +370,12 @@ vdec_g_selection(struct file *file, void *fh, struct v4l2_selection *s) > > case V4L2_SEL_TGT_COMPOSE: > > if (s->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) > > return -EINVAL; > > - s->r.width = inst->out_width; > > - s->r.height = inst->out_height; > > + s->r = inst->crop; > > break; > > default: > > return -EINVAL; > > } > > > > - s->r.top = 0; > > - s->r.left = 0; > > - > > return 0; > > } > > > > @@ -1309,6 +1312,10 @@ static void vdec_event_change(struct venus_inst *inst, > > > > inst->width = format.fmt.pix_mp.width; > > inst->height = format.fmt.pix_mp.height; > > + inst->crop.left = ev_data->input_crop.left; > > + inst->crop.top = ev_data->input_crop.top; > > + inst->crop.width = ev_data->input_crop.width; > > + inst->crop.height = ev_data->input_crop.height; > > > > inst->out_width = ev_data->width; > > inst->out_height = ev_data->height; > > @@ -1412,6 +1419,10 @@ static void vdec_inst_init(struct venus_inst *inst) > > inst->fmt_cap = &vdec_formats[0]; > > inst->width = frame_width_min(inst); > > inst->height = ALIGN(frame_height_min(inst), 32); > > + inst->crop.left = 0; > > + inst->crop.top = 0; > > + inst->crop.width = inst->width; > > + inst->crop.height = inst->height; > > inst->out_width = frame_width_min(inst); > > inst->out_height = frame_height_min(inst); > > inst->fps = 30; > > -- > > 2.28.0.1011.ga647a8990f-goog > >