diff --git a/mpp/codec/enc/h264/h264e_dpb.c b/mpp/codec/enc/h264/h264e_dpb.c index 64df980e..8cbfc7d0 100644 --- a/mpp/codec/enc/h264/h264e_dpb.c +++ b/mpp/codec/enc/h264/h264e_dpb.c @@ -357,6 +357,7 @@ void h264e_dpb_build_marking(H264eDpb *dpb) } marking->idr_flag = 0; + marking->long_term_reference_flag = 0; marking->adaptive_ref_pic_buffering = 0; h264e_dbg_dpb("frm %d ref %d lt %d T%d\n", @@ -415,6 +416,8 @@ MPP_RET h264e_dpb_proc(H264eDpb *dpb, EncCpbStatus *cpb) frames[i].status.valid = 0; } dpb->used_size = 0; + dpb->curr_max_lt_idx = 0; + dpb->next_max_lt_idx = 0; } if (h264e_debug & H264E_DBG_DPB) diff --git a/mpp/codec/enc/h264/h264e_slice.c b/mpp/codec/enc/h264/h264e_slice.c index 6091f4cc..55a2058e 100644 --- a/mpp/codec/enc/h264/h264e_slice.c +++ b/mpp/codec/enc/h264/h264e_slice.c @@ -191,9 +191,6 @@ void write_marking(MppWriteCtx *s, H264eMarkingInfo *marking) mpp_writer_put_bits(s, marking->long_term_reference_flag, 1); h264e_dbg_slice("used bit %2d long_term_reference_flag %d\n", mpp_writer_bits(s), marking->long_term_reference_flag); - - // clear long_term_reference_flag flag - marking->long_term_reference_flag = 0; } else { h264e_dbg_mmco("mmco count %d\n", marking->wr_cnt); @@ -907,6 +904,8 @@ RK_S32 h264e_slice_write_prefix_nal_unit_svc(H264ePrefixNal *prefix, void *p, RK mpp_writer_trailing(s); } + mpp_writer_flush(s); + bitCnt = s->buffered_bits + s->byte_cnt * 8; return bitCnt;