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);