mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[vpu_legacy]:eos set no contain in frame, return in ret
[mpp_dec]:when flush lock codec signal, fixed dead loop in seek status [mpp_dec]:when flush check first packet if is config keep this packet to decoder avoid extract data has been flush cause decoder err [h265d]: mark h265 dec error use check ref has error if ref error mark current dec frame error git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@524 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
17
mpp/mpp.cpp
17
mpp/mpp.cpp
@@ -304,7 +304,12 @@ MPP_RET Mpp::control(MpiCmd cmd, MppParam param)
|
||||
|
||||
MPP_RET Mpp::reset()
|
||||
{
|
||||
MppPacket mpkt = NULL;
|
||||
RK_U32 flags = 0;
|
||||
mPackets->lock();
|
||||
if(mPackets->list_size()){
|
||||
mPackets->del_at_head(&mpkt, sizeof(mpkt));
|
||||
}
|
||||
mPackets->flush();
|
||||
mPackets->unlock();
|
||||
|
||||
@@ -316,12 +321,24 @@ MPP_RET Mpp::reset()
|
||||
|
||||
if (mType == MPP_CTX_DEC) {
|
||||
mpp_dec_reset(mDec);
|
||||
mThreadCodec->lock();
|
||||
mThreadCodec->signal();
|
||||
mThreadCodec->unlock();
|
||||
mThreadCodec->wait(THREAD_RESET);
|
||||
} else {
|
||||
mpp_enc_reset(mEnc);
|
||||
}
|
||||
mThreadCodec->unlock(THREAD_RESET);
|
||||
if(mpkt != NULL){
|
||||
flags = mpp_packet_get_flag(mpkt);
|
||||
mpp_log("flags = %d",flags);
|
||||
if(flags&MPP_PACKET_FLAG_EXTRA_DATA){ //avoid first packet is extara data was flushed & dec can work
|
||||
put_packet(mpkt);
|
||||
}
|
||||
mpp_free(mpp_packet_get_data(mpkt));
|
||||
mpp_packet_deinit(&mpkt);
|
||||
mpkt = NULL;
|
||||
}
|
||||
|
||||
return MPP_OK;
|
||||
}
|
||||
|
Reference in New Issue
Block a user