[mpp]: add packet/frame block flag and multi-frame output flag

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@363 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
ChenHengming
2015-10-12 22:29:38 +00:00
parent 99cb6a06a6
commit 9f2ce51ade
2 changed files with 19 additions and 9 deletions

View File

@@ -51,6 +51,9 @@ Mpp::Mpp(MppCtxType type, MppCodingType coding)
mThreadHal(NULL),
mType(type),
mCoding(coding),
mPacketBlock(0),
mFrameBlock(0),
mMultiFrame(0),
mStatus(0),
mDec(NULL),
mEnc(NULL)
@@ -177,7 +180,8 @@ MPP_RET Mpp::get_frame(MppFrame *frame)
if (0 == mFrames->list_size()) {
mThreadCodec->signal();
mFrames->wait();
if (mFrameBlock)
mFrames->wait();
}
if (mFrames->list_size()) {
@@ -185,14 +189,16 @@ MPP_RET Mpp::get_frame(MppFrame *frame)
mFrameGetCount++;
mThreadHal->signal();
MppFrame prev = first;
MppFrame next = NULL;
while (mFrames->list_size()) {
mFrames->del_at_head(&next, sizeof(frame));
mFrameGetCount++;
mThreadHal->signal();
mpp_frame_set_next(prev, next);
prev = next;
if (mMultiFrame) {
MppFrame prev = first;
MppFrame next = NULL;
while (mFrames->list_size()) {
mFrames->del_at_head(&next, sizeof(frame));
mFrameGetCount++;
mThreadHal->signal();
mpp_frame_set_next(prev, next);
prev = next;
}
}
}
*frame = first;

View File

@@ -98,6 +98,10 @@ public:
MppCtxType mType;
MppCodingType mCoding;
RK_U32 mPacketBlock;
RK_U32 mFrameBlock;
RK_U32 mMultiFrame;
RK_U32 mStatus;
MppDec *mDec;