[av1d_parser]: fix parse err with unknown metadata

Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: Ie6a7c1085bd126c6b776b53f2488f7700aa6d395
This commit is contained in:
Yandong Lin
2023-01-30 16:11:27 +08:00
parent efd877e4d2
commit a7401eded1
3 changed files with 15 additions and 4 deletions

View File

@@ -194,6 +194,12 @@ MPP_RET av1d_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
} else {
task->valid = 0;
task->flags.eos = av1_ctx->eos;
if (av1_ctx->eos) {
task->input_packet = av1_ctx->pkt;
mpp_packet_set_length(av1_ctx->pkt, 0);
mpp_packet_set_pts(av1_ctx->pkt, pts);
mpp_packet_set_dts(av1_ctx->pkt, dts);
}
}
(void)pts;

View File

@@ -2624,7 +2624,7 @@ static RK_S32 mpp_av1_metadata_obu(AV1Context *ctx, BitReadCtx_t *gb,
break;
default:
// Unknown metadata type.
return MPP_ERR_UNKNOW;
return MPP_OK;
}
return 0;
@@ -2975,6 +2975,7 @@ MPP_RET mpp_av1_read_unit(AV1Context *ctx, Av1ObuUnit *unit)
return err;
} break;
case AV1_OBU_METADATA: {
ctx->frame_tag_size += obu->obu_size;
err = mpp_av1_metadata_obu(ctx, &gbc, &obu->obu.metadata);
if (err < 0)
return err;

View File

@@ -990,11 +990,15 @@ MPP_RET av1d_paser_reset(Av1CodecContext *ctx)
av1d_dbg_func("enter ctx %p\n", ctx);
for ( i = 0; i < MPP_ARRAY_ELEMS(s->ref); i++) {
AV1Frame *f = &s->ref[i];
if (f->ref) {
av1d_frame_unref(ctx, &s->ref[i]);
}
if (f->ref)
av1d_frame_unref(ctx, &s->ref[i]);
}
if (s->cur_frame.ref) {
av1d_frame_unref(ctx, &s->cur_frame);
}
av1d_dbg_func("leave ctx %p\n", ctx);
return ret;