Message ID | 20190726085433.15612-1-gtk_ruiwang@mediatek.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 00ab9c1a620dc29f3651d5b61ad12aa327d4dd12 |
Headers | show |
Series | media: mtk-vcodec: Handle H264 error bitstreams | expand |
Em Fri, 26 Jul 2019 16:54:33 +0800 <gtk_ruiwang@mediatek.com> escreveu: > From: gtk_ruiwang <gtk_ruiwang@mediatek.com> ... > Signed-off-by: gtk_ruiwang <gtk_ruiwang@mediatek.com> Please use your real name on your SOB and at the From: line. Thanks, Mauro
Dear Mauro, patch v2 uploaded. Thanks, Best Regards On Tue, 2019-07-30 at 13:15 -0300, Mauro Carvalho Chehab wrote: > Em Fri, 26 Jul 2019 16:54:33 +0800 > <gtk_ruiwang@mediatek.com> escreveu: > > > From: gtk_ruiwang <gtk_ruiwang@mediatek.com> > > ... > > > Signed-off-by: gtk_ruiwang <gtk_ruiwang@mediatek.com> > > Please use your real name on your SOB and at the From: line. > > Thanks, > Mauro
diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c index c5f8f1fca44c..49aa85a9bb5a 100644 --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_if.c @@ -29,6 +29,9 @@ #define H264_MAX_FB_NUM 17 #define HDR_PARSING_BUF_SZ 1024 +#define DEC_ERR_RET(ret) ((ret) >> 16) +#define H264_ERR_NOT_VALID 3 + /** * struct h264_fb - h264 decode frame buffer information * @vdec_fb_va : virtual address of struct vdec_fb @@ -357,8 +360,11 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, buf = (unsigned char *)bs->va; buf_sz = bs->size; nal_start_idx = find_start_code(buf, buf_sz); - if (nal_start_idx < 0) + if (nal_start_idx < 0) { + mtk_vcodec_err(inst, "invalid nal start code"); + err = -EIO; goto err_free_fb_out; + } nal_start = buf[nal_start_idx]; nal_type = NAL_TYPE(buf[nal_start_idx]); @@ -382,8 +388,14 @@ static int vdec_h264_decode(void *h_vdec, struct mtk_vcodec_mem *bs, data[0] = buf_sz; data[1] = nal_start; err = vpu_dec_start(vpu, data, 2); - if (err) + if (err) { + if (err > 0 && (DEC_ERR_RET(err) == H264_ERR_NOT_VALID)) { + mtk_vcodec_err(inst, "- error bitstream - err = %d -", + err); + err = -EIO; + } goto err_free_fb_out; + } *res_chg = inst->vsi->dec.resolution_changed; if (*res_chg) {