[mpp]: add internal pts mode flag for mpeg2/mpeg4

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@953 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
ChenHengming
2016-06-23 11:19:33 +00:00
parent 85dd93fadf
commit ff1a8f1fcb
6 changed files with 25 additions and 8 deletions

View File

@@ -39,6 +39,7 @@ struct MppDec_t {
// work mode flag // work mode flag
RK_U32 parser_need_split; RK_U32 parser_need_split;
RK_U32 parser_fast_mode; RK_U32 parser_fast_mode;
RK_U32 parser_internal_pts;
// dec parser thread runtime resource context // dec parser thread runtime resource context
MppPacket mpp_pkt_in; MppPacket mpp_pkt_in;
@@ -49,6 +50,7 @@ typedef struct {
MppCodingType coding; MppCodingType coding;
RK_U32 fast_mode; RK_U32 fast_mode;
RK_U32 need_split; RK_U32 need_split;
RK_U32 internal_pts;
void *mpp; void *mpp;
} MppDecCfg; } MppDecCfg;

View File

@@ -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 internal_pts;
IOInterruptCB notify_cb; IOInterruptCB notify_cb;
} ParserCfg; } ParserCfg;

View File

@@ -789,6 +789,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->internal_pts,
cb, cb,
}; };
@@ -829,6 +830,7 @@ MPP_RET mpp_dec_init(MppDec **dec, MppDecCfg *cfg)
p->mpp = cfg->mpp; p->mpp = cfg->mpp;
p->parser_need_split = cfg->need_split; p->parser_need_split = cfg->need_split;
p->parser_fast_mode = cfg->fast_mode; p->parser_fast_mode = cfg->fast_mode;
p->parser_internal_pts = cfg->internal_pts;
*dec = p; *dec = p;
return MPP_OK; return MPP_OK;
} while (0); } while (0);

View File

@@ -353,6 +353,10 @@ RK_S32 VpuApi::control(VpuCodecContext *ctx, VPU_API_CMD cmd, void *param)
mpicmd = MPP_DEC_SET_EXT_BUF_GROUP; mpicmd = MPP_DEC_SET_EXT_BUF_GROUP;
break; break;
} }
case VPU_API_USE_PRESENT_TIME_ORDER: {
mpicmd = MPP_DEC_USE_PRESENT_TIME_ORDER;
break;
}
case VPU_API_SET_DEFAULT_WIDTH_HEIGH: { case VPU_API_SET_DEFAULT_WIDTH_HEIGH: {
VPU_GENERIC *p = (VPU_GENERIC *)param; VPU_GENERIC *p = (VPU_GENERIC *)param;
RK_U32 ImgWidth = p->ImgWidth; RK_U32 ImgWidth = p->ImgWidth;

View File

@@ -57,7 +57,8 @@ Mpp::Mpp()
mMultiFrame(0), mMultiFrame(0),
mStatus(0), mStatus(0),
mParserFastMode(0), mParserFastMode(0),
mParserNeedSplit(0) mParserNeedSplit(0),
mParserInternalPts(0)
{ {
} }
@@ -80,6 +81,7 @@ MPP_RET Mpp::init(MppCtxType type, MppCodingType coding)
coding, coding,
mParserFastMode, mParserFastMode,
mParserNeedSplit, mParserNeedSplit,
mParserInternalPts,
this, this,
}; };
mpp_dec_init(&mDec, &cfg); mpp_dec_init(&mDec, &cfg);
@@ -298,14 +300,19 @@ MPP_RET Mpp::control(MpiCmd cmd, MppParam param)
mpp_dec_control(mDec, cmd, param); mpp_dec_control(mDec, cmd, param);
break; break;
} }
case MPP_DEC_USE_PRESENT_TIME_ORDER: {
RK_U32 flag = *((RK_U32 *)param);
mParserInternalPts = flag;
break;
}
case MPP_DEC_SET_PARSER_SPLIT_MODE: { case MPP_DEC_SET_PARSER_SPLIT_MODE: {
RK_U32 mode = *((RK_U32 *)param); RK_U32 flag = *((RK_U32 *)param);
mParserNeedSplit = mode; mParserNeedSplit = flag;
break; break;
} }
case MPP_DEC_SET_PARSER_FAST_MODE: { case MPP_DEC_SET_PARSER_FAST_MODE: {
RK_U32 mode = *((RK_U32 *)param); RK_U32 flag = *((RK_U32 *)param);
mParserFastMode = mode; mParserFastMode = flag;
break; break;
} }
case MPP_DEC_GET_STREAM_COUNT: { case MPP_DEC_GET_STREAM_COUNT: {

View File

@@ -121,6 +121,7 @@ private:
RK_U32 mStatus; RK_U32 mStatus;
RK_U32 mParserFastMode; RK_U32 mParserFastMode;
RK_U32 mParserNeedSplit; RK_U32 mParserNeedSplit;
RK_U32 mParserInternalPts; /* for MPEG2/MPEG4 */
Mpp(const Mpp &); Mpp(const Mpp &);
Mpp &operator=(const Mpp &); Mpp &operator=(const Mpp &);