All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/14] media: mtk-vcodec: support for MT8183 decoder
@ 2021-07-05  5:32 ` Alexandre Courbot
  0 siblings, 0 replies; 38+ messages in thread
From: Alexandre Courbot @ 2021-07-05  5:32 UTC (permalink / raw)
  To: Tiffany Lin, Andrew-CT Chen, Hans Verkuil, Dafna Hirschfeld, Yunfei Dong
  Cc: Mauro Carvalho Chehab, linux-media, linux-kernel, linux-mediatek,
	Alexandre Courbot

This series adds support for the stateless API into mtk-vcodec, by first
separating the stateful ops into their own source file, and introducing
a new set of ops suitable for stateless decoding. As such, support for
stateful decoders should remain completely unaffected.

This series has been tested with both MT8183 and MT8173. Decoding was
working for both chips, and in the case of MT8173 no regression has been
spotted.

Patches 1-5 fix a few compliance issues with the decoder and encoder, most
notably by adding support for the START and STOP command for the latter. These
patches were last up until v4 but have been moved to the beginning so they can
be applied sooner.

Patches 6-9 separates the "stateful" part of the driver into its own file and
add support for the new firmware and pixel format used by MT8183.

Patches 10-14 add support for H.264 stateless decoding and MT8183.

Note that a few checkpatch issues have been left unadressed on purpose:
* Conversion from e.g. uint32_t to u32 can't be done without breaking
  consistency. This should be done by a driver-wide patch.
* Some macro warning suggesting parentheses for parameters expanded as struct
  members, which is obviously not applicable here.
* Warnings about adding new files without an update the MAINTAINERS, which is
  irrelevant as the new files are already covered by the existing wildcards.

Changes since v5:
* Rebased against latest media tree.
* Applied most suggestions of `checkpatch.pl --strict`. Some proposed fixes were
  not applied because they would require a larger refactoring (i.e. large-scale
  type changes) of the code.
* Applied Reviewed-by and fix suggestions from Tzung-bi.
* Check for ABORT state in vidioc_encoder_cmd.

Changes since v4:
* Reorganized fixup patches first.
* Select MEDIA_CONTROLLER_REQUEST_API.
* Properly capitalize MM21's format description string.
* Reorganize stateless code as suggested by Hans.
* Fix compilation errors when DEBUG is defined.
* Merge double-free fixup patch into the patch that introduced the issue.

Changes since v3:
* Stop checking that controls are set for every request.
* Add V4L2_CID_STATELESS_H264_START_CODE control.
* Stop mapping OUTPUT buffers and getting the NAL type from them, use the
  nal_ref_idc field instead.
* Make V4L2_CID_MIN_BUFFERS_FOR_CAPTURE control stateful-only.
* Set vb2_buffer's field to V4L2_FIELD_NONE in buffer validation hook.

Changes since v2:
* Add follow-up patches fixing support for START/STOP commands for the
  encoder, and stateful decoder.

Alexandre Courbot (8):
  media: mtk-vcodec: vdec: use helpers in VIDIOC_(TRY_)DECODER_CMD
  media: mtk-vcodec: vdec: clamp OUTPUT resolution to hardware limits
  media: mtk-vcodec: make flush buffer reusable by encoder
  media: mtk-vcodec: venc: support START and STOP commands
  media: mtk-vcodec: vdec: handle firmware version field
  media: mtk-vcodec: support version 2 of decoder firmware ABI
  media: add Mediatek's MM21 format
  dt-bindings: media: document mediatek,mt8183-vcodec-dec

Hirokazu Honda (1):
  media: mtk-vcodec: vdec: Support H264 profile control

Yunfei Dong (5):
  media: mtk-vcodec: vdec: move stateful ops into their own file
  media: mtk-vcodec: vdec: support stateless API
  media: mtk-vcodec: vdec: support stateless H.264 decoding
  media: mtk-vcodec: vdec: add media device if using stateless api
  media: mtk-vcodec: enable MT8183 decoder

 .../bindings/media/mediatek-vcodec.txt        |   1 +
 .../media/v4l/pixfmt-reserved.rst             |   7 +
 drivers/media/platform/Kconfig                |   3 +
 drivers/media/platform/mtk-vcodec/Makefile    |   3 +
 .../platform/mtk-vcodec/mtk_vcodec_dec.c      | 820 +++---------------
 .../platform/mtk-vcodec/mtk_vcodec_dec.h      |  25 +-
 .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c  |  65 +-
 .../mtk-vcodec/mtk_vcodec_dec_stateful.c      | 626 +++++++++++++
 .../mtk-vcodec/mtk_vcodec_dec_stateless.c     | 360 ++++++++
 .../platform/mtk-vcodec/mtk_vcodec_drv.h      |  58 +-
 .../platform/mtk-vcodec/mtk_vcodec_enc.c      | 140 ++-
 .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c  |   6 +-
 .../mtk-vcodec/vdec/vdec_h264_req_if.c        | 771 ++++++++++++++++
 .../media/platform/mtk-vcodec/vdec_drv_if.c   |   3 +
 .../media/platform/mtk-vcodec/vdec_drv_if.h   |   1 +
 .../media/platform/mtk-vcodec/vdec_ipi_msg.h  |  23 +-
 .../media/platform/mtk-vcodec/vdec_vpu_if.c   |  43 +-
 .../media/platform/mtk-vcodec/vdec_vpu_if.h   |   5 +
 drivers/media/v4l2-core/v4l2-ioctl.c          |   1 +
 include/uapi/linux/videodev2.h                |   1 +
 20 files changed, 2235 insertions(+), 727 deletions(-)
 create mode 100644 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c
 create mode 100644 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c
 create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c

--
2.32.0.93.g670b81a890-goog


^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2021-08-05 11:52 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-05  5:32 [PATCH v6 00/14] media: mtk-vcodec: support for MT8183 decoder Alexandre Courbot
2021-07-05  5:32 ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 01/14] media: mtk-vcodec: vdec: Support H264 profile control Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 02/14] media: mtk-vcodec: vdec: use helpers in VIDIOC_(TRY_)DECODER_CMD Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 03/14] media: mtk-vcodec: vdec: clamp OUTPUT resolution to hardware limits Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 04/14] media: mtk-vcodec: make flush buffer reusable by encoder Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 05/14] media: mtk-vcodec: venc: support START and STOP commands Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 06/14] media: mtk-vcodec: vdec: move stateful ops into their own file Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 07/14] media: mtk-vcodec: vdec: handle firmware version field Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 08/14] media: mtk-vcodec: support version 2 of decoder firmware ABI Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 09/14] media: add Mediatek's MM21 format Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 10/14] media: mtk-vcodec: vdec: support stateless API Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 11/14] media: mtk-vcodec: vdec: support stateless H.264 decoding Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-20 10:52   ` Hans Verkuil
2021-07-20 10:52     ` Hans Verkuil
2021-08-05 11:51     ` Tzung-Bi Shih
2021-08-05 11:51       ` Tzung-Bi Shih
2021-07-05  5:32 ` [PATCH v6 12/14] media: mtk-vcodec: vdec: add media device if using stateless api Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot
2021-07-19 16:22   ` Dafna Hirschfeld
2021-07-19 16:22     ` Dafna Hirschfeld
2021-08-05 11:51     ` Tzung-Bi Shih
2021-08-05 11:51       ` Tzung-Bi Shih
2021-07-05  5:32 ` [PATCH v6 13/14] dt-bindings: media: document mediatek,mt8183-vcodec-dec Alexandre Courbot
2021-07-05  5:32   ` [PATCH v6 13/14] dt-bindings: media: document mediatek, mt8183-vcodec-dec Alexandre Courbot
2021-07-05  5:32 ` [PATCH v6 14/14] media: mtk-vcodec: enable MT8183 decoder Alexandre Courbot
2021-07-05  5:32   ` Alexandre Courbot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.