From: "Yunfei Dong (董云飞)" <Yunfei.Dong@mediatek.com>
To: "nhebert@chromium.org" <nhebert@chromium.org>,
"nicolas.dufresne@collabora.com" <nicolas.dufresne@collabora.com>,
"daniel.almeida@collabora.com" <daniel.almeida@collabora.com>,
"benjamin.gaignard@collabora.com"
<benjamin.gaignard@collabora.com>,
"sebastian.fricke@collabora.com" <sebastian.fricke@collabora.com>,
"hverkuil-cisco@xs4all.nl" <hverkuil-cisco@xs4all.nl>,
"angelogioacchino.delregno@collabora.com"
<angelogioacchino.delregno@collabora.com>,
"nfraprado@collabora.com" <nfraprado@collabora.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"frkoenig@chromium.org" <frkoenig@chromium.org>,
"stevecho@chromium.org" <stevecho@chromium.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"daniel@ffwll.ch" <daniel@ffwll.ch>,
Project_Global_Chrome_Upstream_Group
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
"hsinyi@chromium.org" <hsinyi@chromium.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v4 0/7] media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail
Date: Thu, 15 Aug 2024 12:58:47 +0000 [thread overview]
Message-ID: <b19335d01870fca6b242a8cce44c2d4d799dfb77.camel@mediatek.com> (raw)
In-Reply-To: <be4baa6313d16ed52245347d866dd878049a12a0.camel@collabora.com>
Hi Nicolas,
Thanks for your advice.
On Wed, 2024-08-07 at 09:08 -0400, Nicolas Dufresne wrote:
> >
> Hi Yunfei,
>
> Le mercredi 07 août 2024 à 16:24 +0800, Yunfei Dong a écrit :
> > v4l2_m2m_buf_done is called in lat work queue,
> > v4l2_ctrl_request_complete
> > is called in core queue. The request status of output queue will be
> > set to
> > MEDIA_REQUEST_STATE_COMPLETE when v4l2_m2m_buf_done is called,
> > leading to
> > output queue request complete fail. Must move
> > v4l2_ctrl_request_complete
> > in front of v4l2_m2m_buf_done.
>
> Sebastian and I have analyzed further the issue and the description
> here does
> not seem to match. What happens is that in Stateless decoding, you
> have to set
> header controls out-of-request to negotiate the format at first.
>
> With VP9 notably, the header control is the only control there is.
> Chromium will
> optimize out this and only attach a bitstream buffer to the request.
> So when the
> buffer is mark to done, it is the last object in the request, which
> implicitly
> mark the request as complete.
>
> When v4l2_ctrl_request_complete() is later called, the control code
> detect that
> there is no controls in the request. It then creates an empty
> control, but
> attaching an object to a completed request is not allowed.
>
Whether I can write the commit message as below:
"User space will attach the syntaxes and bit-stream buffer to a media
request for stateless decoding, and the syntax controls are the only
v4l2 control request. The request will be marked to complete status
when the buffer is set to done, then request object will be cleaned
from media request.
When v4l2_ctrl_request_complete() is later called, the control request
detect that there is no controls in the request object. It then creates
an empty control request object, but attaching an object to a completed
request is not allowed."
> > Patch 1 setting request complete before buffer done
> > Patch 2 change flush decode order when stream off
> > Patch 3 flush decoder before stream off
> > Patch 4 using input information to get vb2 buffer
> > Patch 5 store source vb2 buffer
> > Patch 6 replace v4l2_m2m_next_src_buf with v4l2_m2m_src_buf_remove
> > Patch 7 remove media request checking
>
> I will give a some testing soon. Can you clarify on if the LAT and
> the CORE
Have you already helped to do the fluster test?
> still runs in parallel after this change ?
>
Yes, the driver can work in parallel.
Could you please help to review other patches?
> Nicolas
>
Best Regards,
Yunfei Dong
> >
> > ---
> > compared with v3:
> > - fix flush decoder issue when userspace stream off capture queue
> > firstly
> > - fluster test result same with v3
> >
> > compared with v2:
> > - add patch 5/6/7 to fix decode again issue
> > - add fluster test result with mt8195 platform(same with no
> > changed):
> > 1> ./fluster.py run -d GStreamer-VP8-V4L2SL-Gst1.0 -j1 -t 90
> > VP8-TEST-VECTORS 59/61
> > 2> ./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0 -j1 -t 90
> > VP9-TEST-VECTORS 276/305
> > 3> ./fluster.py run -d GStreamer-AV1-V4L2SL-Gst1.0 -j1 -t 90
> > AV1-TEST-VECTORS 237/239
> > 4> ./fluster.py run -d GStreamer-H.264-V4L2SL-Gst1.0 -j1 -t 90
> > JVT-AVC_V1 95/135
> > 5> ./fluster.py run -d GStreamer-H.265-V4L2SL-Gst1.0 -j1 -t 90
> > JCT-VC-HEVC_V1 142/147
> >
> > compared with v1:
> > - add patch 2/3/4 to fix timing issue.
> > ---
> > Yunfei Dong (7):
> > media: mediatek: vcodec: setting request complete before buffer
> > done
> > media: mediatek: vcodec: change flush decode order when stream
> > off
> > media: mediatek: vcodec: flush decoder before stream off
> > media: mediatek: vcodec: using input information to get vb2
> > buffer
> > media: mediatek: vcodec: store source vb2 buffer
> > media: mediatek: vcodec: replace v4l2_m2m_next_src_buf with
> > v4l2_m2m_src_buf_remove
> > media: mediatek: vcodec: remove media request checking
> >
> > .../mediatek/vcodec/decoder/mtk_vcodec_dec.c | 44 ++++++++-------
> > --
> > .../vcodec/decoder/mtk_vcodec_dec_drv.h | 4 +-
> > .../vcodec/decoder/mtk_vcodec_dec_stateless.c | 48 ++++++++++++++-
> > ----
> > .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 18 +++----
> > .../decoder/vdec/vdec_h264_req_multi_if.c | 4 +-
> > .../decoder/vdec/vdec_hevc_req_multi_if.c | 4 +-
> > .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 19 ++++----
> > .../mediatek/vcodec/decoder/vdec_msg_queue.h | 4 +-
> > 8 files changed, 85 insertions(+), 60 deletions(-)
> >
>
>
next prev parent reply other threads:[~2024-08-15 12:59 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-07 8:24 Yunfei Dong
2024-08-07 8:24 ` [PATCH v4 1/7] media: mediatek: vcodec: setting request complete before buffer done Yunfei Dong
2024-08-07 8:24 ` [PATCH v4 2/7] media: mediatek: vcodec: change flush decode order when stream off Yunfei Dong
2024-08-22 15:32 ` Sebastian Fricke
2024-08-07 8:24 ` [PATCH v4 3/7] media: mediatek: vcodec: flush decoder before " Yunfei Dong
2024-08-22 16:11 ` Sebastian Fricke
2024-08-27 2:42 ` Yunfei Dong (董云飞)
2024-08-07 8:24 ` [PATCH v4 4/7] media: mediatek: vcodec: using input information to get vb2 buffer Yunfei Dong
2024-08-23 12:40 ` Sebastian Fricke
2024-08-27 2:47 ` Yunfei Dong (董云飞)
2024-08-07 8:24 ` [PATCH v4 5/7] media: mediatek: vcodec: store source " Yunfei Dong
2024-08-23 14:14 ` Sebastian Fricke
2024-08-27 2:50 ` Yunfei Dong (董云飞)
2024-08-07 8:24 ` [PATCH v4 6/7] media: mediatek: vcodec: replace v4l2_m2m_next_src_buf with v4l2_m2m_src_buf_remove Yunfei Dong
2024-08-23 15:23 ` Sebastian Fricke
2024-08-27 2:56 ` Yunfei Dong (董云飞)
2024-08-07 8:24 ` [PATCH v4 7/7] media: mediatek: vcodec: remove media request checking Yunfei Dong
2024-08-07 13:08 ` [PATCH v4 0/7] media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail Nicolas Dufresne
2024-08-15 12:58 ` Yunfei Dong (董云飞) [this message]
2024-08-23 15:45 ` Sebastian Fricke
2024-08-27 2:58 ` Yunfei Dong (董云飞)
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=b19335d01870fca6b242a8cce44c2d4d799dfb77.camel@mediatek.com \
--to=yunfei.dong@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=benjamin.gaignard@collabora.com \
--cc=daniel.almeida@collabora.com \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=frkoenig@chromium.org \
--cc=hsinyi@chromium.org \
--cc=hverkuil-cisco@xs4all.nl \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=nfraprado@collabora.com \
--cc=nhebert@chromium.org \
--cc=nicolas.dufresne@collabora.com \
--cc=sebastian.fricke@collabora.com \
--cc=stevecho@chromium.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
all inboxes | Powered by JetHome®