lkml.org 
[lkml]   [2019]   [Oct]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 05/10] media: hantro: Reduce H264 extra space for motion vectors
    Date
    A decoded 8-bit 4:2:0 frame need memory for up to 448 bytes per
    macroblock with additional 32 bytes on multi-core variants.

    Memory layout is as follow:

    +---------------------------+
    | Y-plane 256 bytes x MBs |
    +---------------------------+
    | UV-plane 128 bytes x MBs |
    +---------------------------+
    | MV buffer 64 bytes x MBs |
    +---------------------------+
    | MC sync 32 bytes |
    +---------------------------+

    Reduce the extra space allocated now that motion vector buffer offset no
    longer is based on the extra space.

    Only allocate extra space for 64 bytes x MBs of motion vector buffer
    and 32 bytes for multi-core sync.

    Fixes: a9471e25629b ("media: hantro: Add core bits to support H264 decoding")
    Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
    ---
    Changes in v2:
    - updated commit message
    ---
    drivers/staging/media/hantro/hantro_v4l2.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/staging/media/hantro/hantro_v4l2.c b/drivers/staging/media/hantro/hantro_v4l2.c
    index 3dae52abb96c..b3a4368b37de 100644
    --- a/drivers/staging/media/hantro/hantro_v4l2.c
    +++ b/drivers/staging/media/hantro/hantro_v4l2.c
    @@ -242,12 +242,12 @@ static int vidioc_try_fmt(struct file *file, void *priv, struct v4l2_format *f,
    /*
    * The H264 decoder needs extra space on the output buffers
    * to store motion vectors. This is needed for reference
    - * frames.
    + * frames. 32 extra bytes is used for multi-core sync.
    */
    if (ctx->vpu_src_fmt->fourcc == V4L2_PIX_FMT_H264_SLICE)
    pix_mp->plane_fmt[0].sizeimage +=
    - 128 * DIV_ROUND_UP(pix_mp->width, 16) *
    - DIV_ROUND_UP(pix_mp->height, 16);
    + 64 * MB_WIDTH(pix_mp->width) *
    + MB_WIDTH(pix_mp->height) + 32;
    } else if (!pix_mp->plane_fmt[0].sizeimage) {
    /*
    * For coded formats the application can specify
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-10-29 02:25    [W:4.799 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site