diff options
| author | Philipp Zabel <p.zabel@pengutronix.de> | 2019-06-18 12:45:19 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2019-06-24 14:30:59 -0400 |
| commit | 2719ef7d1b1107892923a1f5b7cbc28cccbdea3d (patch) | |
| tree | 766f9f8eebeca0d55a33973ae74893d1feaa189f /drivers/media/platform/coda/coda.h | |
| parent | ccb901196ec5298458f2cd2c4c43652c3c0d5032 (diff) | |
| download | linux-2719ef7d1b1107892923a1f5b7cbc28cccbdea3d.tar.gz linux-2719ef7d1b1107892923a1f5b7cbc28cccbdea3d.tar.bz2 linux-2719ef7d1b1107892923a1f5b7cbc28cccbdea3d.zip | |
media: coda: pad first buffer with repeated MPEG headers to fix sequence init
If the first buffer contains only headers, the sequence initialization
command fails. On CodaHx4 the buffer must be padded to at least 512
bytes, on CODA960 it seems to be enough to just repeat the sequence and
extension headers (MPEG-2) or the VOS and VO headers (MPEG-4) once for
for sequence initialization to succeed without further bitstream data.
On CodaHx4 the headers can be repeated multiple times until the 512 byte
mark is reached.
A similar issue was solved for h.264 by padding with a filler NAL in
commit 0eef89403ece ("[media] coda: pad first h.264 buffer to 512
bytes").
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/platform/coda/coda.h')
| -rw-r--r-- | drivers/media/platform/coda/coda.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/media/platform/coda/coda.h b/drivers/media/platform/coda/coda.h index 10207e9534c2..12bbd3129269 100644 --- a/drivers/media/platform/coda/coda.h +++ b/drivers/media/platform/coda/coda.h @@ -338,8 +338,10 @@ int coda_h264_sps_fixup(struct coda_ctx *ctx, int width, int height, char *buf, int coda_mpeg2_profile(int profile_idc); int coda_mpeg2_level(int level_idc); +u32 coda_mpeg2_parse_headers(struct coda_ctx *ctx, u8 *buf, u32 size); int coda_mpeg4_profile(int profile_idc); int coda_mpeg4_level(int level_idc); +u32 coda_mpeg4_parse_headers(struct coda_ctx *ctx, u8 *buf, u32 size); void coda_update_profile_level_ctrls(struct coda_ctx *ctx, u8 profile_idc, u8 level_idc); |
