mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 01:26:49 +08:00
[mpp]: move init flag to private data, add comment for extra data
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@536 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -131,9 +131,7 @@ static MPP_RET mpi_reset(MppCtx ctx)
|
|||||||
MpiImpl *p = (MpiImpl *)ctx;
|
MpiImpl *p = (MpiImpl *)ctx;
|
||||||
MPP_RET ret = MPP_OK;
|
MPP_RET ret = MPP_OK;
|
||||||
MPI_FUNCTION_ENTER();
|
MPI_FUNCTION_ENTER();
|
||||||
if (p->ctx->mInitDone) {
|
ret = p->ctx->reset();
|
||||||
ret = p->ctx->reset();
|
|
||||||
}
|
|
||||||
MPI_FUNCTION_LEAVE();
|
MPI_FUNCTION_LEAVE();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
38
mpp/mpp.cpp
38
mpp/mpp.cpp
@@ -50,14 +50,14 @@ Mpp::Mpp()
|
|||||||
mThreadHal(NULL),
|
mThreadHal(NULL),
|
||||||
mDec(NULL),
|
mDec(NULL),
|
||||||
mEnc(NULL),
|
mEnc(NULL),
|
||||||
mFastMode(0),
|
|
||||||
mInitDone(0),
|
|
||||||
mType(MPP_CTX_BUTT),
|
mType(MPP_CTX_BUTT),
|
||||||
mCoding(MPP_VIDEO_CodingUnused),
|
mCoding(MPP_VIDEO_CodingUnused),
|
||||||
|
mInitDone(0),
|
||||||
mPacketBlock(0),
|
mPacketBlock(0),
|
||||||
mOutputBlock(0),
|
mOutputBlock(0),
|
||||||
mMultiFrame(0),
|
mMultiFrame(0),
|
||||||
mStatus(0)
|
mStatus(0),
|
||||||
|
mFastMode(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,11 +305,21 @@ MPP_RET Mpp::control(MpiCmd cmd, MppParam param)
|
|||||||
|
|
||||||
MPP_RET Mpp::reset()
|
MPP_RET Mpp::reset()
|
||||||
{
|
{
|
||||||
MppPacket mpkt = NULL;
|
if (!mInitDone)
|
||||||
RK_U32 flags = 0;
|
return MPP_OK;
|
||||||
|
|
||||||
|
MppPacket pkt = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On mp4 case extra data of sps/pps will be put at the beginning
|
||||||
|
* If these packet was reset before they are send to decoder then
|
||||||
|
* decoder can not get these important information to continue decoding
|
||||||
|
* To avoid this case happen we need to save it on reset beginning
|
||||||
|
* then restore it on reset end.
|
||||||
|
*/
|
||||||
mPackets->lock();
|
mPackets->lock();
|
||||||
if (mPackets->list_size()) {
|
if (mPackets->list_size()) {
|
||||||
mPackets->del_at_head(&mpkt, sizeof(mpkt));
|
mPackets->del_at_head(&pkt, sizeof(pkt));
|
||||||
}
|
}
|
||||||
mPackets->flush();
|
mPackets->flush();
|
||||||
mPackets->unlock();
|
mPackets->unlock();
|
||||||
@@ -330,15 +340,17 @@ MPP_RET Mpp::reset()
|
|||||||
mpp_enc_reset(mEnc);
|
mpp_enc_reset(mEnc);
|
||||||
}
|
}
|
||||||
mThreadCodec->unlock(THREAD_RESET);
|
mThreadCodec->unlock(THREAD_RESET);
|
||||||
if (mpkt != NULL) {
|
|
||||||
flags = mpp_packet_get_flag(mpkt);
|
if (pkt != NULL) {
|
||||||
mpp_log("flags = %d", flags);
|
RK_U32 flags = mpp_packet_get_flag(pkt);
|
||||||
if (flags & MPP_PACKET_FLAG_EXTRA_DATA) { //avoid first packet is extara data was flushed & dec can work
|
|
||||||
put_packet(mpkt);
|
if (flags & MPP_PACKET_FLAG_EXTRA_DATA) {
|
||||||
|
put_packet(pkt);
|
||||||
}
|
}
|
||||||
mpp_packet_deinit(&mpkt);
|
mpp_packet_deinit(&pkt);
|
||||||
mpkt = NULL;
|
pkt = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -101,20 +101,20 @@ public:
|
|||||||
MppDec *mDec;
|
MppDec *mDec;
|
||||||
MppEnc *mEnc;
|
MppEnc *mEnc;
|
||||||
|
|
||||||
RK_U32 mFastMode;
|
|
||||||
RK_U32 mInitDone;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
MppCtxType mType;
|
MppCtxType mType;
|
||||||
MppCodingType mCoding;
|
MppCodingType mCoding;
|
||||||
|
|
||||||
|
RK_U32 mInitDone;
|
||||||
RK_U32 mPacketBlock;
|
RK_U32 mPacketBlock;
|
||||||
RK_U32 mOutputBlock;
|
RK_U32 mOutputBlock;
|
||||||
RK_U32 mMultiFrame;
|
RK_U32 mMultiFrame;
|
||||||
|
|
||||||
RK_U32 mStatus;
|
RK_U32 mStatus;
|
||||||
|
RK_U32 mFastMode;
|
||||||
|
|
||||||
|
|
||||||
Mpp(const Mpp &);
|
Mpp(const Mpp &);
|
||||||
Mpp &operator=(const Mpp &);
|
Mpp &operator=(const Mpp &);
|
||||||
|
Reference in New Issue
Block a user