mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
media: meson: vdec: align stride on 32 bytes
The HEVC/VP9 aligns the plane stride on 32, so align the planes stride for all codecs to 32 to satisfy HEVC/VP9 decoding using the "HEVC" HW. This fixes VP9 decoding of streams with following (not limited) widths: - 264 -288 - 350 - 352 - 472 - 480 - 528 - 600 - 720 - 800 - 848 - 1440 Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Tested-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
d7647e7c90
commit
7624c9cd5b
drivers/staging/media/meson/vdec
@ -528,20 +528,20 @@ vdec_try_fmt_common(struct amvdec_session *sess, u32 size,
|
||||
memset(pfmt[1].reserved, 0, sizeof(pfmt[1].reserved));
|
||||
if (pixmp->pixelformat == V4L2_PIX_FMT_NV12M) {
|
||||
pfmt[0].sizeimage = output_size;
|
||||
pfmt[0].bytesperline = ALIGN(pixmp->width, 64);
|
||||
pfmt[0].bytesperline = ALIGN(pixmp->width, 32);
|
||||
|
||||
pfmt[1].sizeimage = output_size / 2;
|
||||
pfmt[1].bytesperline = ALIGN(pixmp->width, 64);
|
||||
pfmt[1].bytesperline = ALIGN(pixmp->width, 32);
|
||||
pixmp->num_planes = 2;
|
||||
} else if (pixmp->pixelformat == V4L2_PIX_FMT_YUV420M) {
|
||||
pfmt[0].sizeimage = output_size;
|
||||
pfmt[0].bytesperline = ALIGN(pixmp->width, 64);
|
||||
pfmt[0].bytesperline = ALIGN(pixmp->width, 32);
|
||||
|
||||
pfmt[1].sizeimage = output_size / 4;
|
||||
pfmt[1].bytesperline = ALIGN(pixmp->width, 64) / 2;
|
||||
pfmt[1].bytesperline = ALIGN(pixmp->width, 32) / 2;
|
||||
|
||||
pfmt[2].sizeimage = output_size / 2;
|
||||
pfmt[2].bytesperline = ALIGN(pixmp->width, 64) / 2;
|
||||
pfmt[2].bytesperline = ALIGN(pixmp->width, 32) / 2;
|
||||
pixmp->num_planes = 3;
|
||||
}
|
||||
}
|
||||
|
@ -154,8 +154,8 @@ int amvdec_set_canvases(struct amvdec_session *sess,
|
||||
{
|
||||
struct v4l2_m2m_buffer *buf;
|
||||
u32 pixfmt = sess->pixfmt_cap;
|
||||
u32 width = ALIGN(sess->width, 64);
|
||||
u32 height = ALIGN(sess->height, 64);
|
||||
u32 width = ALIGN(sess->width, 32);
|
||||
u32 height = ALIGN(sess->height, 32);
|
||||
u32 reg_cur = reg_base[0];
|
||||
u32 reg_num_cur = 0;
|
||||
u32 reg_base_cur = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user