mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02: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
|
|
@ -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