linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nicolas Dufresne <nicolas@ndufresne.ca>
To: Tomasz Figa <tfiga@chromium.org>, Philipp Zabel <p.zabel@pengutronix.de>
Cc: Stanimir Varbanov <stanimir.varbanov@linaro.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Vikash Garodia <vgarodia@codeaurora.org>,
	Alexandre Courbot <acourbot@chromium.org>,
	Malathi Gottam <mgottam@codeaurora.org>
Subject: Re: [PATCH 10/10] venus: dec: make decoder compliant with stateful codec API
Date: Thu, 31 Jan 2019 10:18:17 -0500	[thread overview]
Message-ID: <1f8485785a21c0b0e071a3a766ed2cbc727e47f6.camel@ndufresne.ca> (raw)
In-Reply-To: <CAAFQd5Aih7cWu-cfwBvNdwhHHYEaMF0SFebrYfdNXD9qKu8fxw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4088 bytes --]

Le jeudi 31 janvier 2019 à 22:34 +0900, Tomasz Figa a écrit :
> On Thu, Jan 31, 2019 at 9:42 PM Philipp Zabel <p.zabel@pengutronix.de> wrote:
> > Hi Nicolas,
> > 
> > On Wed, 2019-01-30 at 10:32 -0500, Nicolas Dufresne wrote:
> > > Le mercredi 30 janvier 2019 à 15:17 +0900, Tomasz Figa a écrit :
> > > > > I don't remember saying that, maybe I meant to say there might be a
> > > > > workaround ?
> > > > > 
> > > > > For the fact, here we queue the headers (or first frame):
> > > > > 
> > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/master/sys/v4l2/gstv4l2videodec.c#L624
> > > > > 
> > > > > Then few line below this helper does G_FMT internally:
> > > > > 
> > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/master/sys/v4l2/gstv4l2videodec.c#L634
> > > > > https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/master/sys/v4l2/gstv4l2object.c#L3907
> > > > > 
> > > > > And just plainly fails if G_FMT returns an error of any type. This was
> > > > > how Kamil designed it initially for MFC driver. There was no other
> > > > > alternative back then (no EAGAIN yet either).
> > > > 
> > > > Hmm, was that ffmpeg then?
> > > > 
> > > > 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 have
> > > > such wait in their g_fmt implementations?
> > > 
> > > 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 the
> > > timing (it would be that the drivers process the SPS/PPS synchronously,
> > > and a simple lock in the G_FMT call is enough to wait). Adding Philipp
> > > 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.
> > 
> > CODA predates the width/height=0 rule on the coded/OUTPUT queue.
> > It currently behaves more like a traditional mem2mem device.
> 
> 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.
> 
> > 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.
> 
> 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 
into the capture buffers (if understood correctly).

I would say, best is just to test the updated Venus driver, which is in
my queue.

> 
> > 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 ?

> > 
> > regards
> > Philipp

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

  reply	other threads:[~2019-01-31 15:18 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-17 16:19 [PATCH 00/10] Venus stateful Codec API Stanimir Varbanov
2019-01-17 16:19 ` [PATCH 01/10] venus: hfi_cmds: add more not-implemented properties Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 02/10] venus: helpers: fix dynamic buffer mode for v4 Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 03/10] venus: helpers: export few helper functions Stanimir Varbanov
2019-01-24  8:43   ` Alexandre Courbot
2019-01-24  8:48     ` Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 04/10] venus: hfi: add type argument to hfi flush function Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 05/10] venus: hfi: export few HFI functions Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 06/10] venus: hfi: return an error if session_init is already called Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 07/10] venus: helpers: add three more helper functions Stanimir Varbanov
2019-01-24  8:43   ` Alexandre Courbot
2019-01-24  8:54     ` Stanimir Varbanov
2019-01-25  5:47       ` Alexandre Courbot
2019-01-17 16:20 ` [PATCH 08/10] venus: vdec_ctrls: get real minimum buffers for capture Stanimir Varbanov
2019-01-24  8:43   ` Alexandre Courbot
2019-01-24  9:59     ` Stanimir Varbanov
2019-01-17 16:20 ` [PATCH 09/10] venus: vdec: allow bigger sizeimage set by clients Stanimir Varbanov
2019-01-24  8:43   ` Alexandre Courbot
2019-01-24 10:05     ` Stanimir Varbanov
2019-01-25  5:36       ` Alexandre Courbot
2019-01-17 16:20 ` [PATCH 10/10] venus: dec: make decoder compliant with stateful codec API Stanimir Varbanov
2019-01-21 11:20   ` mgottam
2019-01-21 11:29     ` mgottam
2019-01-24 10:24     ` Stanimir Varbanov
2019-01-24  8:44   ` Alexandre Courbot
2019-01-24 12:34     ` Stanimir Varbanov
2019-01-25  5:44       ` Alexandre Courbot
2019-01-25  7:59   ` Tomasz Figa
2019-01-25 10:25     ` Stanimir Varbanov
2019-01-28  7:38       ` Tomasz Figa
2019-01-28 16:28         ` Stanimir Varbanov
2019-01-29  8:24           ` Tomasz Figa
2019-01-30  3:18         ` Nicolas Dufresne
2019-01-30  3:38           ` Tomasz Figa
2019-01-30  4:21             ` Nicolas Dufresne
2019-01-30  6:17               ` Tomasz Figa
2019-01-30 15:32                 ` Nicolas Dufresne
2019-01-31 12:42                   ` Philipp Zabel
2019-01-31 13:34                     ` Tomasz Figa
2019-01-31 15:18                       ` Nicolas Dufresne [this message]
2019-02-05  6:26                         ` Tomasz Figa
2019-02-05  9:00                           ` Hans Verkuil
2019-02-05  9:31                             ` Tomasz Figa
2019-02-05 10:35                               ` Hans Verkuil
2019-02-07  7:33                                 ` Tomasz Figa
2019-02-14  2:43                                   ` Tomasz Figa
2019-02-14 16:19                                     ` Nicolas Dufresne
2019-04-09  9:59                                   ` Tomasz Figa
2019-04-09 16:30                                     ` Nicolas Dufresne
2019-04-10  2:32                                       ` Tomasz Figa
2019-02-15 13:44   ` Hans Verkuil
2019-02-15 16:27     ` Nicolas Dufresne
2019-02-15 16:40       ` Hans Verkuil
2019-04-24 12:15     ` Stanimir Varbanov
2019-04-24 12:39       ` Tomasz Figa
2019-05-20 14:47         ` Stanimir Varbanov
2019-05-21  9:09           ` Tomasz Figa
2019-05-21 12:27             ` Hans Verkuil
2019-05-27  3:51               ` Tomasz Figa
2019-05-27  7:39                 ` Hans Verkuil
2019-05-27  8:18                   ` Tomasz Figa
2019-05-31  8:01                     ` Stanimir Varbanov
2019-05-31 13:53                       ` Nicolas Dufresne
2019-06-03  7:25                       ` Hans Verkuil
2019-06-03  7:30                         ` Tomasz Figa
2019-01-24  8:43 ` [PATCH 00/10] Venus stateful Codec API Alexandre Courbot
2019-01-24 10:12   ` Stanimir Varbanov
2019-01-25  5:34     ` Alexandre Courbot
2019-01-25 10:35       ` Stanimir Varbanov
2019-01-28  4:16         ` Alexandre Courbot
2019-01-28  4:30           ` Tomasz Figa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1f8485785a21c0b0e071a3a766ed2cbc727e47f6.camel@ndufresne.ca \
    --to=nicolas@ndufresne.ca \
    --cc=acourbot@chromium.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mgottam@codeaurora.org \
    --cc=p.zabel@pengutronix.de \
    --cc=stanimir.varbanov@linaro.org \
    --cc=tfiga@chromium.org \
    --cc=vgarodia@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).