From 188dfb5d2086799ba232a9aba910f88b4e27739c Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Fri, 17 Jun 2022 14:48:37 +0800 Subject: [PATCH] [mpp_enc]: Add intra flag on slice output mode Change-Id: Ib717b7df596ab6ffb35ba0c2f4274dc9ef79850d Signed-off-by: Herman Chen --- mpp/codec/mpp_enc_impl.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mpp/codec/mpp_enc_impl.cpp b/mpp/codec/mpp_enc_impl.cpp index c0dba712..63fce3fa 100644 --- a/mpp/codec/mpp_enc_impl.cpp +++ b/mpp/codec/mpp_enc_impl.cpp @@ -469,7 +469,11 @@ MPP_RET mpp_enc_callback(const char *caller, void *ctx, RK_S32 cmd, void *param) case ENC_OUTPUT_SLICE : { enc_dbg_slice("slice pos %p len %5d\n", last_pos, slice_length); - mpp_packet_copy_init((MppPacket *)&impl, packet); + mpp_packet_new((MppPacket *)&impl); + mpp_assert(impl); + + /* copy the source data */ + memcpy(impl, packet, sizeof(*impl)); impl->pos = last_pos; impl->length = slice_length; @@ -478,6 +482,16 @@ MPP_RET mpp_enc_callback(const char *caller, void *ctx, RK_S32 cmd, void *param) impl->status.soi = part_first; impl->status.eoi = 0; + if (impl->buffer) + mpp_buffer_inc_ref(impl->buffer); + + mpp_meta_get(&impl->meta); + if (impl->meta) { + EncFrmStatus *frm = &task->rc_task->frm; + + mpp_meta_set_s32(impl->meta, KEY_OUTPUT_INTRA, frm->is_intra); + } + enc_dbg_detail("pkt %d new pos %p len %d\n", task->part_count, last_pos, slice_length);