MLK-20093 VPU: A simple workaroud for vpu decoder to handle the case that some frame is not for diaplay
If the buffer is not for display, it will be released directly by firmware but not return the event VID_API_EVENT_FRAME_BUFF_RDY for display, for this case, just add the buffer to the queue list again Signed-off-by: Huang Chaofan <chaofan.huang@nxp.com>pull/10/head
parent
0e54f5fca0
commit
7f3671ddd7
|
@ -1886,8 +1886,11 @@ static void vpu_api_event_handler(struct vpu_ctx *ctx, u_int32 uStrIdx, u_int32
|
|||
if (fsrel->eType == MEDIAIP_FRAME_REQ) {
|
||||
p_data_req = &This->vb2_reqs[fsrel->uFSIdx];
|
||||
|
||||
if (ctx->wait_rst_done != true && p_data_req->status != FRAME_READY)
|
||||
vpu_dbg(LVL_ERR, "error: normal release need to set status to FRAME_RELEASE but previous status %s is not FRAME_READY\n", bufstat[p_data_req->status]);
|
||||
if (ctx->wait_rst_done != true && p_data_req->status != FRAME_READY) {
|
||||
vpu_dbg(LVL_WARN, "warning: normal release and previous status %s, frame not for display, queue the buffer to list again\n",
|
||||
bufstat[p_data_req->status]);
|
||||
list_add_tail(&p_data_req->list, &This->drv_q);
|
||||
}
|
||||
p_data_req->status = FRAME_RELEASE;
|
||||
}
|
||||
vpu_dbg(LVL_INFO, "VID_API_EVENT_REL_FRAME_BUFF uFSIdx=%d, eType=%d, size=%ld\n", fsrel->uFSIdx, fsrel->eType, sizeof(MEDIA_PLAYER_FSREL));
|
||||
|
|
Loading…
Reference in New Issue