1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #include "hal_h265e_stream_amend.h" 7*437bfbebSnyanmisaka 8*437bfbebSnyanmisaka #include "mpp_common.h" 9*437bfbebSnyanmisaka #include "mpp_log.h" 10*437bfbebSnyanmisaka hal_h265e_amend_temporal_id(HalEncTask * enc_task,RK_U32 strm_size)11*437bfbebSnyanmisakaMPP_RET hal_h265e_amend_temporal_id(HalEncTask *enc_task, RK_U32 strm_size) 12*437bfbebSnyanmisaka { 13*437bfbebSnyanmisaka MPP_RET ret = MPP_OK; 14*437bfbebSnyanmisaka H265eSyntax_new *syn = (H265eSyntax_new *)enc_task->syntax.data; 15*437bfbebSnyanmisaka RK_U32 offset = mpp_packet_get_length(enc_task->packet); 16*437bfbebSnyanmisaka RK_U8 *stream_ptr = (RK_U8 *)(mpp_buffer_get_ptr(enc_task->output) + offset); 17*437bfbebSnyanmisaka 18*437bfbebSnyanmisaka if (strm_size < 5) { 19*437bfbebSnyanmisaka mpp_err("Stream size is too small, maybe there is hw encoder error!"); 20*437bfbebSnyanmisaka return MPP_NOK; 21*437bfbebSnyanmisaka } 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka if (syn->sp.temporal_id) 24*437bfbebSnyanmisaka stream_ptr[5] = (stream_ptr[5] & 0xf8) | ((syn->sp.temporal_id + 1) & 0x7); 25*437bfbebSnyanmisaka 26*437bfbebSnyanmisaka return ret; 27*437bfbebSnyanmisaka }