Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7247056imu; Thu, 31 Jan 2019 07:18:57 -0800 (PST) X-Google-Smtp-Source: ALg8bN4mCjwqA6hYC8BwSDJV5IIBkVTBP/ub1QdRofCsDxdszmvSsXehZWU8BdQLy0WujKdna+cw X-Received: by 2002:a63:8f45:: with SMTP id r5mr31474937pgn.222.1548947937789; Thu, 31 Jan 2019 07:18:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548947937; cv=none; d=google.com; s=arc-20160816; b=XnNIKo+GLVQgAWgxkJCdjRkB55P1s5iXBE6hjgefdO8eQB3fKdOqvn0qX+5P8yrM4q MTME2Xpg8ns1yREDNinlQQkTx4YpYVs4lWTW3NjXqFYwTErbQjjMm18JaCG3WTjadz0H 3H7xx/TLE7kqSxbiYSY6jIZGOOC9sO3faT4pSlt7s6cjBZU/VG6fugxvNLej8nVUybX0 Z+qEUmnaPKNVJi5qMsvaEFxGyBLNwWGITLqx1sbLY2JplzlJ2GW7mI1Gew9NxxXNXQsP WHhmuqPjZjXGvwUQuplHc3rT57gEbT9e3boYE+lFnb+hJLuQNGa1CZDQ+0EHSl/gT5RV ILXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:date:cc:to:from:subject:message-id:dkim-signature; bh=u31s4R5VEIifuxZ4zMHmYpHmJ4AQzbiw8WoCEfXIgXQ=; b=HoI4wIrwnCDl5BYFRjwKmVqLzrfB4KAW/cYd2k4NpxtGhhScgPMIa6FVcBADOAsgQg TB2Iv2zzyNt54BjntXEvwHRe7uglLsuT6us4bV4CmlPmi2DF4L4Ggcm/9UePYX1mb0nW zIe7Ic8Qxefr/FEJ0AimbjKVyk8CCTPDbBy8GFS9rD79Rlzj+9Gs9cZBZjcZcO35Bndi YPQR8RYW0JkTsgRgbmU/X5rZdV1L4HhxVY/TGjcyS9DTNhopFhK8mKvm8N33qp6odAmJ ew28Srfn5g7XZUXbiBclzJ8uNwkpsKwlDOQ43pV6/LeKLm1djj517yq4pH47ORmlxRNw Gjjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=tfIfzcqu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x23si4403205pgj.247.2019.01.31.07.18.42; Thu, 31 Jan 2019 07:18:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=tfIfzcqu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730070AbfAaPSV (ORCPT + 99 others); Thu, 31 Jan 2019 10:18:21 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:35064 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726239AbfAaPSU (ORCPT ); Thu, 31 Jan 2019 10:18:20 -0500 Received: by mail-qt1-f196.google.com with SMTP id v11so3848123qtc.2 for ; Thu, 31 Jan 2019 07:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version; bh=u31s4R5VEIifuxZ4zMHmYpHmJ4AQzbiw8WoCEfXIgXQ=; b=tfIfzcqu3RxDnZF/vMSJMdrJEPsANB1yIPQTTyhptLVgJri2jQZG1PT8O3TBi3Hi6G mdB0N70K0gjd6pLFlIw77hOhcG0/gr8eY3RGzwozcbv3ggprqsb7vMIjCJWqqJDQQopH CFhz+QaYtWJ88cdzmcntbmPRH/CoQYFlN+JyMoWi4jzyZLv94dutoL1fMj2Jg4fSvcLF ztnIhM4Qw9e0wgyX17lEYIRMxjYlEe3xD9sT6YDjIIo0g/WQsmzAXAZmi1wRzDEnQAL9 IVlNvSMkmJHQkKNDwLRGCRf0KSudHTVFI7y3JQV7n4TbqUnCAFUObfEQOQjZ9WM+Qyrb PIyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version; bh=u31s4R5VEIifuxZ4zMHmYpHmJ4AQzbiw8WoCEfXIgXQ=; b=tmPalmCKgy81JsHyLR4qW8rGP5KW4DUZZ+WE7xKlLnUtNGyarjHK2FbRorqXx+phew uo76u+xH8GuQkN4B0eW9fBw/Mi5mCaoW74RyDWr0d7vLFawAZDrCuSrs/6Bxckw0Uh2S /t9QIxlt2cDempDXRenHxrPhNKNn2JYty7tRhzyESNV+cHVM6XaIC7xXupooSbtUxLZT d1kjROuF/TFIG3vvkWRgLqilpSc9uX8EprxbJszUGubMGxLOeRfZA2qcw4QEwUsHBkEZ e8xz3KtXrnCRqh/04KZWd4b449up0aD4VMflPH6iz90U3DiwUVojCYoBv2nRP8Y86PMr ETWg== X-Gm-Message-State: AJcUukcK6zA+8FXkvEXQ9GJUZpXpjdAFjPVetMTgRZlDVDkwDDSE1fBO zyPrYdnD7r2WUI3dG08M5OQisw== X-Received: by 2002:aed:2249:: with SMTP id o9mr35022550qtc.13.1548947899246; Thu, 31 Jan 2019 07:18:19 -0800 (PST) Received: from tpx230-nicolas.collaboramtl (modemcable154.55-37-24.static.videotron.ca. [24.37.55.154]) by smtp.gmail.com with ESMTPSA id c17sm6136806qtb.14.2019.01.31.07.18.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 31 Jan 2019 07:18:18 -0800 (PST) Message-ID: <1f8485785a21c0b0e071a3a766ed2cbc727e47f6.camel@ndufresne.ca> Subject: Re: [PATCH 10/10] venus: dec: make decoder compliant with stateful codec API From: Nicolas Dufresne To: Tomasz Figa , Philipp Zabel Cc: Stanimir Varbanov , Linux Media Mailing List , Mauro Carvalho Chehab , Hans Verkuil , Linux Kernel Mailing List , linux-arm-msm , Vikash Garodia , Alexandre Courbot , Malathi Gottam Date: Thu, 31 Jan 2019 10:18:17 -0500 In-Reply-To: References: <20190117162008.25217-1-stanimir.varbanov@linaro.org> <20190117162008.25217-11-stanimir.varbanov@linaro.org> <28069a44-b188-6b89-2687-542fa762c00e@linaro.org> <57419418d377f32d0e6978f4e4171c0da7357cbb.camel@ndufresne.ca> <1548938556.4585.1.camel@pengutronix.de> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-FzoxvhNtcf6eebpqy6W3" User-Agent: Evolution 3.30.4 (3.30.4-1.fc29) Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-FzoxvhNtcf6eebpqy6W3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le jeudi 31 janvier 2019 =C3=A0 22:34 +0900, Tomasz Figa a =C3=A9crit : > On Thu, Jan 31, 2019 at 9:42 PM Philipp Zabel wr= ote: > > Hi Nicolas, > >=20 > > On Wed, 2019-01-30 at 10:32 -0500, Nicolas Dufresne wrote: > > > Le mercredi 30 janvier 2019 =C3=A0 15:17 +0900, Tomasz Figa a =C3=A9c= rit : > > > > > I don't remember saying that, maybe I meant to say there might be= a > > > > > workaround ? > > > > >=20 > > > > > For the fact, here we queue the headers (or first frame): > > > > >=20 > > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/ma= ster/sys/v4l2/gstv4l2videodec.c#L624 > > > > >=20 > > > > > Then few line below this helper does G_FMT internally: > > > > >=20 > > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/ma= ster/sys/v4l2/gstv4l2videodec.c#L634 > > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/ma= ster/sys/v4l2/gstv4l2object.c#L3907 > > > > >=20 > > > > > And just plainly fails if G_FMT returns an error of any type. Thi= s was > > > > > how Kamil designed it initially for MFC driver. There was no othe= r > > > > > alternative back then (no EAGAIN yet either). > > > >=20 > > > > Hmm, was that ffmpeg then? > > > >=20 > > > > So would it just set the OUTPUT width and height to 0? Does it mean > > > > that gstreamer doesn't work with coda and mtk-vcodec, which don't h= ave > > > > such wait in their g_fmt implementations? > > >=20 > > > I don't know for MTK, I don't have the hardware and didn't integrate > > > their vendor pixel format. For the CODA, I know it works, if there is > > > no wait in the G_FMT, then I suppose we are being really lucky with t= he > > > timing (it would be that the drivers process the SPS/PPS synchronousl= y, > > > and a simple lock in the G_FMT call is enough to wait). Adding Philip= p > > > in CC, he could explain how this works, I know they use GStreamer in > > > production, and he would have fixed GStreamer already if that was > > > causing important issue. > >=20 > > CODA predates the width/height=3D0 rule on the coded/OUTPUT queue. > > It currently behaves more like a traditional mem2mem device. >=20 > The rule in the latest spec is that if width/height is 0 then CAPTURE > format is determined only after the stream is parsed. Otherwise it's > instantly deduced from the OUTPUT resolution. >=20 > > When width/height is set via S_FMT(OUT) or output crop selection, the > > driver will believe it and set the same (rounded up to macroblock > > alignment) on the capture queue without ever having seen the SPS. >=20 > That's why I asked whether gstreamer sets width and height of OUTPUT > to non-zero values. If so, there is no regression, as the specs mimic > the coda behavior. I see, with Philipp's answer it explains why it works. Note that GStreamer sets the display size on the OUTPUT format (in fact we pass as much information as we have, because a) it's generic code and b) it will be needed someday when we enable pre-allocation (REQBUFS before SPS/PPS is passed, to avoid the setup delay introduce by allocation, mostly seen with CMA base decoder). In any case, the driver reported display size should always be ignored in GStreamer, the only information we look at is the G_SELECTION for the case the x/y or the cropping rectangle is non-zero. Note this can only work if the capture queue is not affected by the coded size, or if the round-up made by the driver is bigger or equal to that coded size. I believe CODA falls into the first category, since the decoding happens in a separate set of buffers and are then de-tiled=20 into the capture buffers (if understood correctly). I would say, best is just to test the updated Venus driver, which is in my queue. >=20 > > The source change event after SPS parsing that the spec requires isn't > > even implemented yet. Just to make sure, if I try and register that event on CODA with the current driver, it will simply fail immediately right ? I don't need any other magic to detect that this isn't supported ? > >=20 > > regards > > Philipp --=-FzoxvhNtcf6eebpqy6W3 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQSScpfJiL+hb5vvd45xUwItrAaoHAUCXFMRuQAKCRBxUwItrAao HNHrAJ44pwdbaPbPYPgDWNbhxMRrBAqkQACfeSfsnTuENX53E5nD9wBJl+8UJS4= =seHL -----END PGP SIGNATURE----- --=-FzoxvhNtcf6eebpqy6W3--