v4l2: mpeg2: support multi-planar [1/1]
authorSong Zhao <song.zhao@amlogic.com>
Wed, 18 Dec 2019 05:35:41 +0000 (21:35 -0800)
committerNanxin Qin <nanxin.qin@amlogic.com>
Thu, 13 Feb 2020 06:12:46 +0000 (14:12 +0800)
commit68fcded9327dc8dfbd06fe9fefa4f4f715e8ab3a
tree565760cea9868ce429a30dd14912236a4b0ea5df
parenta20abedfa9b73263836765158c84e4ab5b10fd7d
v4l2: mpeg2: support multi-planar [1/1]

PD#SWPL-12624

Problem:
1. Enable V4L2 Mpeg2 decoder
2. Enable V4L2 Mpeg2 ucode parser to support secure mode

Solution:
* Use canvas linear mode
* Support NV21
* Add frame dump feature in aml_port
* Use width/heigh from IF layer before ucode is enable to parse it, it
  will make sure canvas is correctly configured (not 0 width and height).
* Add 00 00 01 00 padding for every frame in unsecure mode
* pass buffer margin number from interface to decoder. Make sure
  vdec_mpeg12_hw_s->buf_num and aml_vcodec_ctx->dpb_size are in sync.
* use completion to wait for decoder to parse the stream
* Also limite the buffer number returned from REQBUFS to ctx->dbp_size
  It will prevent application from allocate more memory than enough.

Verify:
U212

Change-Id: Ib7542fccdde6a10f9ec38b5584b8b523d4d378dc
Signed-off-by: Song Zhao <song.zhao@amlogic.com>
drivers/amvdec_ports/aml_vcodec_dec.c
drivers/amvdec_ports/aml_vcodec_dec_drv.c
drivers/amvdec_ports/decoder/vdec_mpeg12_if.c
drivers/frame_provider/decoder/mpeg12/vmpeg12_multi.c
drivers/frame_provider/decoder/utils/vdec_v4l2_buffer_ops.c
drivers/frame_provider/decoder/utils/vdec_v4l2_buffer_ops.h