[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:
ChenSiyong
2016-01-13 10:00:49 +00:00
parent 41fcb47315
commit 1975d15c8d
6 changed files with 61 additions and 6 deletions

View File

@@ -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;
}