mirror of
				https://github.com/nyanmisaka/mpp.git
				synced 2025-10-31 12:36:44 +08:00 
			
		
		
		
	[hal_h264e_vepu541: Use REG_OFFSET to setup addr
Change-Id: I6365f5e3213c9bfe27340b163ac39669585156cc Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
		| @@ -977,36 +977,48 @@ static void setup_vepu541_roi(Vepu541H264eRegSet *regs, HalH264eVepu541Ctx *ctx) | |||||||
|     hal_h264e_dbg_func("leave\n"); |     hal_h264e_dbg_func("leave\n"); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void setup_vepu541_recn_refr(Vepu541H264eRegSet *regs, H264eFrmInfo *frms, | static void setup_vepu541_recn_refr(Vepu541H264eRegSet *regs, MppDev dev, | ||||||
|                                     HalBufs bufs, RK_S32 fbc_hdr_size) |                                     H264eFrmInfo *frms, HalBufs bufs, | ||||||
|  |                                     RK_S32 fbc_hdr_size) | ||||||
| { | { | ||||||
|     HalBuf *curr = hal_bufs_get_buf(bufs, frms->curr_idx); |     HalBuf *curr = hal_bufs_get_buf(bufs, frms->curr_idx); | ||||||
|     HalBuf *refr = hal_bufs_get_buf(bufs, frms->refr_idx); |     HalBuf *refr = hal_bufs_get_buf(bufs, frms->refr_idx); | ||||||
|  |     MppDevRegOffsetCfg trans_cfg; | ||||||
|  |  | ||||||
|     hal_h264e_dbg_func("enter\n"); |     hal_h264e_dbg_func("enter\n"); | ||||||
|  |  | ||||||
|     if (curr && curr->cnt) { |     if (curr && curr->cnt) { | ||||||
|         MppBuffer buf_pixel = curr->buf[0]; |         MppBuffer buf_pixel = curr->buf[0]; | ||||||
|         MppBuffer buf_thumb = curr->buf[1]; |         MppBuffer buf_thumb = curr->buf[1]; | ||||||
|  |         RK_S32 fd = mpp_buffer_get_fd(buf_pixel); | ||||||
|  |  | ||||||
|         mpp_assert(buf_pixel); |         mpp_assert(buf_pixel); | ||||||
|         mpp_assert(buf_thumb); |         mpp_assert(buf_thumb); | ||||||
|  |  | ||||||
|         regs->reg074.rfpw_h_addr = mpp_buffer_get_fd(buf_pixel); |         regs->reg074.rfpw_h_addr = fd; | ||||||
|         regs->reg075.rfpw_b_addr = regs->reg074.rfpw_h_addr + (fbc_hdr_size << 10); |         regs->reg075.rfpw_b_addr = fd; | ||||||
|         regs->reg080.dspw_addr = mpp_buffer_get_fd(buf_thumb); |         regs->reg080.dspw_addr = mpp_buffer_get_fd(buf_thumb); | ||||||
|  |  | ||||||
|  |         trans_cfg.reg_idx = 75; | ||||||
|  |         trans_cfg.offset = fbc_hdr_size; | ||||||
|  |         mpp_dev_ioctl(dev, MPP_DEV_REG_OFFSET, &trans_cfg); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (refr && refr->cnt) { |     if (refr && refr->cnt) { | ||||||
|         MppBuffer buf_pixel = refr->buf[0]; |         MppBuffer buf_pixel = refr->buf[0]; | ||||||
|         MppBuffer buf_thumb = refr->buf[1]; |         MppBuffer buf_thumb = refr->buf[1]; | ||||||
|  |         RK_S32 fd = mpp_buffer_get_fd(buf_pixel); | ||||||
|  |  | ||||||
|         mpp_assert(buf_pixel); |         mpp_assert(buf_pixel); | ||||||
|         mpp_assert(buf_thumb); |         mpp_assert(buf_thumb); | ||||||
|  |  | ||||||
|         regs->reg076.rfpr_h_addr = mpp_buffer_get_fd(buf_pixel); |         regs->reg076.rfpr_h_addr = fd; | ||||||
|         regs->reg077.rfpr_b_addr = regs->reg076.rfpr_h_addr + (fbc_hdr_size << 10); |         regs->reg077.rfpr_b_addr = fd; | ||||||
|         regs->reg081.dspr_addr = mpp_buffer_get_fd(buf_thumb); |         regs->reg081.dspr_addr = mpp_buffer_get_fd(buf_thumb); | ||||||
|  |  | ||||||
|  |         trans_cfg.reg_idx = 77; | ||||||
|  |         trans_cfg.offset = fbc_hdr_size; | ||||||
|  |         mpp_dev_ioctl(dev, MPP_DEV_REG_OFFSET, &trans_cfg); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     hal_h264e_dbg_func("leave\n"); |     hal_h264e_dbg_func("leave\n"); | ||||||
| @@ -1416,7 +1428,7 @@ static MPP_RET hal_h264e_vepu541_gen_regs(void *hal, HalEncTask *task) | |||||||
|     setup_vepu541_rc_base(regs, sps, slice, &cfg->hw, task->rc_task); |     setup_vepu541_rc_base(regs, sps, slice, &cfg->hw, task->rc_task); | ||||||
|     setup_vepu541_io_buf(regs, ctx->dev, task); |     setup_vepu541_io_buf(regs, ctx->dev, task); | ||||||
|     setup_vepu541_roi(regs, ctx); |     setup_vepu541_roi(regs, ctx); | ||||||
|     setup_vepu541_recn_refr(regs, ctx->frms, ctx->hw_recn, |     setup_vepu541_recn_refr(regs, ctx->dev, ctx->frms, ctx->hw_recn, | ||||||
|                             ctx->pixel_buf_fbc_hdr_size); |                             ctx->pixel_buf_fbc_hdr_size); | ||||||
|  |  | ||||||
|     regs->reg082.meiw_addr = task->mv_info ? mpp_buffer_get_fd(task->mv_info) : 0; |     regs->reg082.meiw_addr = task->mv_info ? mpp_buffer_get_fd(task->mv_info) : 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Herman Chen
					Herman Chen