From fdc9c5d4b45cac2665ad9b67005df2b3e352bc0c Mon Sep 17 00:00:00 2001 From: HuangTingjin Date: Tue, 9 Aug 2016 12:24:54 +0000 Subject: [PATCH] [jpegd]: add implementation of jpegd_parser_control. git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@1180 6e48237b-75ef-9749-8fc9-41990f28c85a --- inc/rk_mpi.h | 1 + mpp/codec/dec/jpeg/jpegd_parser.c | 24 +++++++++++++++++++----- mpp/mpp.cpp | 3 +++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/inc/rk_mpi.h b/inc/rk_mpi.h index 07e7d483..66dcbcdc 100644 --- a/inc/rk_mpi.h +++ b/inc/rk_mpi.h @@ -100,6 +100,7 @@ typedef enum { MPP_DEC_GET_STREAM_COUNT, MPP_DEC_GET_VPUMEM_USED_COUNT, MPP_DEC_SET_VC1_EXTRA_DATA, + MPP_DEC_SET_OUTPUT_FORMAT, MPP_DEC_CMD_END, MPP_ENC_CMD_BASE = CMD_MODULE_CODEC | CMD_CTX_ID_ENC, diff --git a/mpp/codec/dec/jpeg/jpegd_parser.c b/mpp/codec/dec/jpeg/jpegd_parser.c index ebc247ae..4e7d981e 100644 --- a/mpp/codec/dec/jpeg/jpegd_parser.c +++ b/mpp/codec/dec/jpeg/jpegd_parser.c @@ -2859,7 +2859,7 @@ MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg) memset(&(JpegParserCtx->imageInfo), 0, sizeof(JpegDecImageInfo)); JpegParserCtx->decImageType = JPEGDEC_IMAGE; /* FULL MODEs */ JpegParserCtx->sliceMbSet = 0; /* will be changed when over 16MB*/ - JpegParserCtx->color_conv = 1; + JpegParserCtx->color_conv = 0; /* max */ JpegParserCtx->maxSupportedWidth = JPEGDEC_MAX_WIDTH_8190; @@ -2906,11 +2906,25 @@ MPP_RET jpegd_reset(void *ctx) MPP_RET jpegd_control(void *ctx, RK_S32 cmd, void *param) { FUN_TEST("Enter"); - (void)ctx; - (void)cmd; - (void)param; + + MPP_RET ret = MPP_OK; + JpegParserContext *JpegParserCtx = (JpegParserContext *)ctx; + if (NULL == JpegParserCtx) { + JPEGD_ERROR_LOG("NULL pointer"); + return MPP_ERR_NULL_PTR; + } + + switch (cmd) { + case MPP_DEC_SET_OUTPUT_FORMAT: { + JpegParserCtx->color_conv = *((RK_U32 *)param); + JPEGD_INFO_LOG("output_format:%d\n", JpegParserCtx->color_conv); + } break; + default : + ret = MPP_NOK; + } + FUN_TEST("Exit"); - return MPP_OK; + return ret; } MPP_RET jpegd_callback(void *ctx, void *err_info) diff --git a/mpp/mpp.cpp b/mpp/mpp.cpp index bc82ee76..1e44f899 100644 --- a/mpp/mpp.cpp +++ b/mpp/mpp.cpp @@ -638,6 +638,9 @@ MPP_RET Mpp::control_dec(MpiCmd cmd, MppParam param) case MPP_DEC_GET_VPUMEM_USED_COUNT: { ret = mpp_dec_control(mDec, cmd, param); } break; + case MPP_DEC_SET_OUTPUT_FORMAT: { + ret = mpp_dec_control(mDec, cmd, param); + } break; default : { } break; }