From 6f91a59d0b16f863018096eb9f900742d1b62ffa Mon Sep 17 00:00:00 2001 From: Ding Wei Date: Thu, 26 Jul 2018 17:01:41 +0800 Subject: [PATCH] [vp9d]: fix case when split error tips: when split error, and consumed lager than input length, it will be wrong. Change-Id: I43ca99f55cb379b93ff08028ed368ce21e6b3611 Signed-off-by: Ding Wei --- mpp/codec/dec/vp9/vp9d_api.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mpp/codec/dec/vp9/vp9d_api.c b/mpp/codec/dec/vp9/vp9d_api.c index 02b2f04c..838c2fde 100644 --- a/mpp/codec/dec/vp9/vp9d_api.c +++ b/mpp/codec/dec/vp9/vp9d_api.c @@ -172,11 +172,12 @@ MPP_RET vp9d_prepare(void *ctx, MppPacket pkt, HalDecTask *task) length = (RK_S32)mpp_packet_get_length(pkt); consumed = vp9d_split_frame(ps, &out_data, &out_size, buf, length); - pos += consumed; + pos += (consumed >= 0) ? consumed : length; + mpp_packet_set_pos(pkt, pos); vp9d_dbg(VP9D_DBG_STRMIN, "pkt_len=%d, pts=%lld\n", length, pts); - vp9d_get_frame_stream(vp9_ctx, out_data, out_size); if (out_size > 0) { + vp9d_get_frame_stream(vp9_ctx, out_data, out_size); task->input_packet = vp9_ctx->pkt; task->valid = 1; mpp_packet_set_pts(vp9_ctx->pkt, pts);