mbox series

[v7,0/5] media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail

Message ID 20241116031724.15694-1-yunfei.dong@mediatek.com (mailing list archive)
Headers show
Series media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail | expand

Message

Yunfei Dong Nov. 16, 2024, 3:17 a.m. UTC
User space attach the syntaxes and bit-stream buffer to a same media
request for stateless decode, 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
form 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. Using manual request completion to handle the
request complete event.
---
depends on manual request completion patch:
[1] https://patchwork.linuxtv.org/project/linux-media/cover/cover.1724928939.git.hverkuil-cisco@xs4all.nl/
---
compared with v6:
- Using manual request completion for patch 1
- rebase on latest driver for patches 2/3/4/5

compared with v5:
- fix comments for patch 3
- fix smatch error for patch 1

compared with v4:
- re-write the commit message for cover-letter
- change patch 2/3/4/5 commit message

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 (5):
  media: mediatek: vcodec: support manual request completion
  media: mediatek: vcodec: change flush decode order when stream off
  media: mediatek: vcodec: remove media request checking
  media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
  media: mediatek: vcodec: store current vb2 buffer to decode again

 .../mediatek/vcodec/decoder/mtk_vcodec_dec.c  | 43 ++++++++--------
 .../vcodec/decoder/mtk_vcodec_dec_drv.h       |  2 +
 .../vcodec/decoder/mtk_vcodec_dec_stateless.c | 51 ++++++++++++-------
 .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 14 ++---
 .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 15 +++---
 5 files changed, 72 insertions(+), 53 deletions(-)