mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 01:02:39 +08:00
[hal_jpegd]: Check output format before decoding
Change-Id: I035297695a4ff027814507e829adba1a767f61e8 Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
This commit is contained in:

committed by
Herman Chen

parent
516fd94a0b
commit
0faeb9413f
@@ -348,7 +348,11 @@ MPP_RET mpp_dec_proc_cfg(MppDecImpl *dec, MpiCmd cmd, void *param)
|
||||
MPP_RET ret = MPP_OK;
|
||||
|
||||
mpp_parser_control(dec->parser, cmd, param);
|
||||
mpp_hal_control(dec->hal, cmd, param);
|
||||
|
||||
ret = mpp_hal_control(dec->hal, cmd, param);
|
||||
|
||||
if (ret)
|
||||
goto RET;
|
||||
|
||||
switch (cmd) {
|
||||
case MPP_DEC_SET_FRAME_INFO : {
|
||||
@@ -423,6 +427,7 @@ MPP_RET mpp_dec_proc_cfg(MppDecImpl *dec, MpiCmd cmd, void *param)
|
||||
} break;
|
||||
}
|
||||
|
||||
RET:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -779,13 +779,17 @@ MPP_RET hal_jpegd_rkv_control(void *hal, MpiCmd cmd_type, void *param)
|
||||
JpegHalCtx->output_fmt = *((MppFrameFormat *)param);
|
||||
JpegHalCtx->set_output_fmt_flag = 1;
|
||||
jpegd_dbg_hal("output_format:%d\n", JpegHalCtx->output_fmt);
|
||||
|
||||
if (!MPP_FRAME_FMT_IS_YUV(JpegHalCtx->output_fmt) && !MPP_FRAME_FMT_IS_RGB(JpegHalCtx->output_fmt)) {
|
||||
mpp_err_f("output format %d is invalid.\n", JpegHalCtx->output_fmt);
|
||||
ret = MPP_ERR_VALUE;
|
||||
}
|
||||
} break;
|
||||
//TODO support scale and tile output
|
||||
default :
|
||||
ret = MPP_NOK;
|
||||
break;
|
||||
}
|
||||
|
||||
jpegd_dbg_func("exit\n");
|
||||
jpegd_dbg_func("exit ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -1054,10 +1054,15 @@ MPP_RET hal_jpegd_vdpu1_control(void *hal, MpiCmd cmd_type, void *param)
|
||||
JpegHalCtx->output_fmt = *((MppFrameFormat *)param);
|
||||
JpegHalCtx->set_output_fmt_flag = 1;
|
||||
jpegd_dbg_hal("output_format:%d\n", JpegHalCtx->output_fmt);
|
||||
|
||||
if (!MPP_FRAME_FMT_IS_YUV(JpegHalCtx->output_fmt) && !MPP_FRAME_FMT_IS_RGB(JpegHalCtx->output_fmt)) {
|
||||
mpp_err_f("output format %d is invalid.\n", JpegHalCtx->output_fmt);
|
||||
ret = MPP_ERR_VALUE;
|
||||
}
|
||||
} break;
|
||||
default :
|
||||
ret = MPP_NOK;
|
||||
break;
|
||||
}
|
||||
jpegd_dbg_func("exit\n");
|
||||
jpegd_dbg_func("exit ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -1034,11 +1034,16 @@ MPP_RET hal_jpegd_vdpu2_control(void *hal, MpiCmd cmd_type,
|
||||
JpegHalCtx->output_fmt = *((MppFrameFormat *)param);
|
||||
JpegHalCtx->set_output_fmt_flag = 1;
|
||||
jpegd_dbg_hal("output_format:%d\n", JpegHalCtx->output_fmt);
|
||||
|
||||
if (!MPP_FRAME_FMT_IS_YUV(JpegHalCtx->output_fmt) && !MPP_FRAME_FMT_IS_RGB(JpegHalCtx->output_fmt)) {
|
||||
mpp_err_f("output format %d is invalid.\n", JpegHalCtx->output_fmt);
|
||||
ret = MPP_ERR_VALUE;
|
||||
}
|
||||
} break;
|
||||
default :
|
||||
ret = MPP_NOK;
|
||||
break;
|
||||
}
|
||||
|
||||
jpegd_dbg_func("exit\n");
|
||||
jpegd_dbg_func("exit ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -664,8 +664,13 @@ int dec_decode(MpiDecTestCmd *cmd)
|
||||
}
|
||||
} else {
|
||||
/* NOTE: change output format before jpeg decoding */
|
||||
if (cmd->format < MPP_FMT_BUTT)
|
||||
if (MPP_FRAME_FMT_IS_YUV(cmd->format) || MPP_FRAME_FMT_IS_RGB(cmd->format)) {
|
||||
ret = mpi->control(ctx, MPP_DEC_SET_OUTPUT_FORMAT, &cmd->format);
|
||||
if (ret) {
|
||||
mpp_err("Failed to set output format %d\n", cmd->format);
|
||||
goto MPP_TEST_OUT;
|
||||
}
|
||||
}
|
||||
|
||||
while (!data.eos) {
|
||||
dec_advanced(&data);
|
||||
|
Reference in New Issue
Block a user