All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/11] media: hantro: Add support for H264 decoding
@ 2019-08-14 19:59 Ezequiel Garcia
  2019-08-14 19:59 ` [PATCH v6 01/11] lib/sort.c: implement sort() variant taking context argument Ezequiel Garcia
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: Ezequiel Garcia @ 2019-08-14 19:59 UTC (permalink / raw)
  To: linux-media
  Cc: kernel, Nicolas Dufresne, Tomasz Figa, linux-rockchip,
	Heiko Stuebner, Jonas Karlman, Philipp Zabel, Boris Brezillon,
	Paul Kocialkowski, Alexandre Courbot, fbuergisser, linux-kernel,
	Ezequiel Garcia

Small respin of H264 uAPI review and Hantro G1 H264 decoding support.
Compared to previous version, this version does some more improvements
on the uAPI spec, addressing feedback from Hans and Paul.

I really hope I managed to get this right, and address current concerns.

Here's previous cover letter, for reference:

This series consolidates the two recent H264 series submitted
by Boris [1] [2]. Some patches from [2] have been merged (namely,
helpers for the Hantro driver), and so I'm adding the remanining
bits required to support H264 on Hantro G1 VPU.

* Patch 1 adds support for the sort_r() variant and has
  been posted separately by Rasmus. It would be good to merge this patch
  via the media tree, ideally as soon as possible, to avoid the
  synchronisation burden that might appear if we decide to delay it.

* Patch 2 to 4 extends the H264 uAPI, introducing frame-based vs slice-based
  decoding granularity, and also support for different NALU start codes.
  Currently, Annex B and no start codes are the supported options.

  With the introduction of the start code control, the H264 parsed
  slices pixel format should be renamed, dropping the _RAW suffix,
  which is now meaningless.

* Patch 5 removes the P0/B0/B1 ref lists from the decode_params control.
  These lists are no longer needed since we build them on the
  kernel side based on the DPB.

* Patch 6 and 7 exposes the proper decoding mode and start code
  on the cedrus driver. The driver functionality is not changed,
  and only the Cedrus support is now being properly exposed to
  userspace.

* Patch 8 is needed to properly propagate the OUTPUT buffer timestamp to
  the CAPTURE buffer one, which is required for intra-frame references.

* Patches 9 to 11 adds H264 support for Hantro G1 and then enable
  H264 decoding on RK3288.

This is based on media master and tested on Rockchip RK3288 for Hantro and
Allwinner H3 boards for Cedrus. Philipp Zabel tested on i.MX8MQ EVK using [3].

The Ffmpeg branch used to test is based on the great work of Jonas and Boris,
and is available in [4]. Instructions to build and run are as follows:

./configure --enable-v4l2-request --enable-libdrm
make -j4

(test via framebuffer rendering):

./ffmpeg -loglevel debug -hwaccel drm -hwaccel_device /dev/dri/card0 -i $some_file.avi -pix_fmt bgra -f fbdev /dev/fb0

[1] https://www.mail-archive.com/linux-media@vger.kernel.org/msg148299.html
[2] https://lkml.org/lkml/2019/6/19/379
[3] git://git.pengutronix.de/git/pza/linux.git hantro/imx8m-wip
[4] https://gitlab.collabora.com/ezequiel/ffmpeg/tree/stateless-mpeg2-vp8-h264-v4

Boris Brezillon (3):
  media: uapi: h264: Add the concept of decoding mode
  media: uapi: h264: Get rid of the p0/b0/b1 ref-lists
  media: hantro: Move copy_metadata() before doing a decode operation

Ezequiel Garcia (4):
  media: uapi: h264: Rename pixel format
  media: uapi: h264: Add the concept of start code
  media: cedrus: Cleanup control initialization
  media: cedrus: Specify H264 startcode and decoding mode

Hertz Wong (3):
  media: hantro: Add core bits to support H264 decoding
  media: hantro: Add support for H264 decoding on G1
  media: hantro: Enable H264 decoding on rk3288

Rasmus Villemoes (1):
  lib/sort.c: implement sort() variant taking context argument

 .../media/uapi/v4l/ext-ctrls-codec.rst        |  89 ++-
 .../media/uapi/v4l/pixfmt-compressed.rst      |  11 +-
 drivers/media/v4l2-core/v4l2-ctrls.c          |  18 +
 drivers/media/v4l2-core/v4l2-ioctl.c          |   2 +-
 drivers/staging/media/hantro/Makefile         |   2 +
 drivers/staging/media/hantro/hantro.h         |   9 +-
 drivers/staging/media/hantro/hantro_drv.c     |  50 +-
 .../staging/media/hantro/hantro_g1_h264_dec.c | 292 ++++++++
 drivers/staging/media/hantro/hantro_h264.c    | 641 ++++++++++++++++++
 drivers/staging/media/hantro/hantro_hw.h      |  56 ++
 drivers/staging/media/hantro/hantro_v4l2.c    |  10 +
 drivers/staging/media/hantro/rk3288_vpu_hw.c  |  21 +-
 drivers/staging/media/sunxi/cedrus/cedrus.c   |  65 +-
 drivers/staging/media/sunxi/cedrus/cedrus.h   |   3 +-
 .../staging/media/sunxi/cedrus/cedrus_dec.c   |   2 +-
 .../staging/media/sunxi/cedrus/cedrus_video.c |   6 +-
 include/linux/sort.h                          |   5 +
 include/media/h264-ctrls.h                    |  21 +-
 lib/sort.c                                    |  34 +-
 19 files changed, 1281 insertions(+), 56 deletions(-)
 create mode 100644 drivers/staging/media/hantro/hantro_g1_h264_dec.c
 create mode 100644 drivers/staging/media/hantro/hantro_h264.c

-- 
2.22.0


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

end of thread, other threads:[~2019-08-16 14:43 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-14 19:59 [PATCH v6 00/11] media: hantro: Add support for H264 decoding Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 01/11] lib/sort.c: implement sort() variant taking context argument Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 02/11] media: uapi: h264: Rename pixel format Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 03/11] media: uapi: h264: Add the concept of decoding mode Ezequiel Garcia
2019-08-16  7:34   ` Hans Verkuil
2019-08-16 12:29     ` Ezequiel Garcia
2019-08-16 14:43     ` Hans Verkuil
2019-08-14 19:59 ` [PATCH v6 04/11] media: uapi: h264: Add the concept of start code Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 05/11] media: uapi: h264: Get rid of the p0/b0/b1 ref-lists Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 06/11] media: cedrus: Cleanup control initialization Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 07/11] media: cedrus: Specify H264 startcode and decoding mode Ezequiel Garcia
2019-08-14 19:59   ` Ezequiel Garcia
2019-08-16  7:38   ` Hans Verkuil
2019-08-16  7:38     ` Hans Verkuil
2019-08-16 12:32     ` Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 08/11] media: hantro: Move copy_metadata() before doing a decode operation Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 09/11] media: hantro: Add core bits to support H264 decoding Ezequiel Garcia
2019-08-16  7:41   ` Hans Verkuil
2019-08-16 13:11     ` Ezequiel Garcia
2019-08-16 13:11       ` Ezequiel Garcia
2019-08-16 12:39   ` Hans Verkuil
2019-08-14 19:59 ` [PATCH v6 10/11] media: hantro: Add support for H264 decoding on G1 Ezequiel Garcia
2019-08-14 19:59 ` [PATCH v6 11/11] media: hantro: Enable H264 decoding on rk3288 Ezequiel Garcia

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.