mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp_dec]: add immediate_out flag in mpp struct
tips: control cmd for immediate_out, can send both before and after mpp_init. Signed-off-by: Ding Wei <leo.ding@rock-chips.com> Change-Id: Ibe66878cfab1f592b952d01bee3adade7c9d31bc
This commit is contained in:
@@ -335,7 +335,7 @@ MPP_RET h264d_init(void *decoder, ParserCfg *init)
|
|||||||
FUN_CHECK(ret = init_cur_ctx(p_Dec->p_Cur));
|
FUN_CHECK(ret = init_cur_ctx(p_Dec->p_Cur));
|
||||||
FUN_CHECK(ret = init_vid_ctx(p_Dec->p_Vid));
|
FUN_CHECK(ret = init_vid_ctx(p_Dec->p_Vid));
|
||||||
FUN_CHECK(ret = init_dec_ctx(p_Dec));
|
FUN_CHECK(ret = init_dec_ctx(p_Dec));
|
||||||
|
p_Dec->immediate_out = init->immediate_out;
|
||||||
__RETURN:
|
__RETURN:
|
||||||
return ret = MPP_OK;
|
return ret = MPP_OK;
|
||||||
__FAILED:
|
__FAILED:
|
||||||
|
@@ -28,6 +28,7 @@ typedef struct {
|
|||||||
RK_U32 fast_mode;
|
RK_U32 fast_mode;
|
||||||
RK_U32 need_split;
|
RK_U32 need_split;
|
||||||
RK_U32 internal_pts;
|
RK_U32 internal_pts;
|
||||||
|
RK_U32 immedaite_out;
|
||||||
void *mpp;
|
void *mpp;
|
||||||
} MppDecCfg;
|
} MppDecCfg;
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@ typedef struct DecParserInitCfg_t {
|
|||||||
// output
|
// output
|
||||||
RK_S32 task_count;
|
RK_S32 task_count;
|
||||||
RK_U32 need_split;
|
RK_U32 need_split;
|
||||||
|
RK_U32 immediate_out;
|
||||||
RK_U32 internal_pts;
|
RK_U32 internal_pts;
|
||||||
} ParserCfg;
|
} ParserCfg;
|
||||||
|
|
||||||
|
@@ -1300,6 +1300,7 @@ MPP_RET mpp_dec_init(MppDec *dec, MppDecCfg *cfg)
|
|||||||
packet_slots,
|
packet_slots,
|
||||||
hal_task_count,
|
hal_task_count,
|
||||||
cfg->need_split,
|
cfg->need_split,
|
||||||
|
cfg->immedaite_out,
|
||||||
cfg->internal_pts,
|
cfg->internal_pts,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -169,7 +169,7 @@ private:
|
|||||||
RK_U32 mParserFastMode;
|
RK_U32 mParserFastMode;
|
||||||
RK_U32 mParserNeedSplit;
|
RK_U32 mParserNeedSplit;
|
||||||
RK_U32 mParserInternalPts; /* for MPEG2/MPEG4 */
|
RK_U32 mParserInternalPts; /* for MPEG2/MPEG4 */
|
||||||
|
RK_U32 mImmediateOut;
|
||||||
/* backup extra packet for seek */
|
/* backup extra packet for seek */
|
||||||
MppPacket mExtraPacket;
|
MppPacket mExtraPacket;
|
||||||
|
|
||||||
|
@@ -87,6 +87,7 @@ Mpp::Mpp()
|
|||||||
mParserFastMode(0),
|
mParserFastMode(0),
|
||||||
mParserNeedSplit(0),
|
mParserNeedSplit(0),
|
||||||
mParserInternalPts(0),
|
mParserInternalPts(0),
|
||||||
|
mImmediateOut(0),
|
||||||
mExtraPacket(NULL),
|
mExtraPacket(NULL),
|
||||||
mDump(NULL)
|
mDump(NULL)
|
||||||
{
|
{
|
||||||
@@ -140,6 +141,7 @@ MPP_RET Mpp::init(MppCtxType type, MppCodingType coding)
|
|||||||
mParserFastMode,
|
mParserFastMode,
|
||||||
mParserNeedSplit,
|
mParserNeedSplit,
|
||||||
mParserInternalPts,
|
mParserInternalPts,
|
||||||
|
mImmediateOut,
|
||||||
this,
|
this,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -815,11 +817,16 @@ MPP_RET Mpp::control_dec(MpiCmd cmd, MppParam param)
|
|||||||
*((RK_S32 *)param) = mPackets->list_size();
|
*((RK_S32 *)param) = mPackets->list_size();
|
||||||
ret = MPP_OK;
|
ret = MPP_OK;
|
||||||
} break;
|
} break;
|
||||||
|
case MPP_DEC_SET_IMMEDIATE_OUT: {
|
||||||
|
mImmediateOut = *((RK_U32 *)param);
|
||||||
|
ret = MPP_OK;
|
||||||
|
if (mDec)
|
||||||
|
ret = mpp_dec_control(mDec, cmd, param);
|
||||||
|
} break;
|
||||||
case MPP_DEC_GET_VPUMEM_USED_COUNT:
|
case MPP_DEC_GET_VPUMEM_USED_COUNT:
|
||||||
case MPP_DEC_SET_OUTPUT_FORMAT:
|
case MPP_DEC_SET_OUTPUT_FORMAT:
|
||||||
case MPP_DEC_SET_DISABLE_ERROR:
|
case MPP_DEC_SET_DISABLE_ERROR:
|
||||||
case MPP_DEC_SET_PRESENT_TIME_ORDER:
|
case MPP_DEC_SET_PRESENT_TIME_ORDER:
|
||||||
case MPP_DEC_SET_IMMEDIATE_OUT:
|
|
||||||
case MPP_DEC_SET_ENABLE_DEINTERLACE: {
|
case MPP_DEC_SET_ENABLE_DEINTERLACE: {
|
||||||
ret = mpp_dec_control(mDec, cmd, param);
|
ret = mpp_dec_control(mDec, cmd, param);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user