mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-13 04:43:42 +08:00
[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:
@@ -194,6 +194,12 @@ MPP_RET av1d_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
|
|||||||
} else {
|
} else {
|
||||||
task->valid = 0;
|
task->valid = 0;
|
||||||
task->flags.eos = av1_ctx->eos;
|
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;
|
(void)pts;
|
||||||
|
@@ -2624,7 +2624,7 @@ static RK_S32 mpp_av1_metadata_obu(AV1Context *ctx, BitReadCtx_t *gb,
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Unknown metadata type.
|
// Unknown metadata type.
|
||||||
return MPP_ERR_UNKNOW;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2975,6 +2975,7 @@ MPP_RET mpp_av1_read_unit(AV1Context *ctx, Av1ObuUnit *unit)
|
|||||||
return err;
|
return err;
|
||||||
} break;
|
} break;
|
||||||
case AV1_OBU_METADATA: {
|
case AV1_OBU_METADATA: {
|
||||||
|
ctx->frame_tag_size += obu->obu_size;
|
||||||
err = mpp_av1_metadata_obu(ctx, &gbc, &obu->obu.metadata);
|
err = mpp_av1_metadata_obu(ctx, &gbc, &obu->obu.metadata);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
@@ -990,11 +990,15 @@ MPP_RET av1d_paser_reset(Av1CodecContext *ctx)
|
|||||||
av1d_dbg_func("enter ctx %p\n", ctx);
|
av1d_dbg_func("enter ctx %p\n", ctx);
|
||||||
for ( i = 0; i < MPP_ARRAY_ELEMS(s->ref); i++) {
|
for ( i = 0; i < MPP_ARRAY_ELEMS(s->ref); i++) {
|
||||||
AV1Frame *f = &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);
|
av1d_dbg_func("leave ctx %p\n", ctx);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user