mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 17:46:50 +08:00
[mpp_packet]: used interal free when buffer alloc by mpppacket self
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@528 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -288,7 +288,6 @@ static MPP_RET try_proc_dec_task(Mpp *mpp, DecTask *task)
|
|||||||
if (!task->status.curr_task_rdy) {
|
if (!task->status.curr_task_rdy) {
|
||||||
parser_prepare(dec->parser, dec->mpp_pkt_in, task_dec);
|
parser_prepare(dec->parser, dec->mpp_pkt_in, task_dec);
|
||||||
if (0 == mpp_packet_get_length(dec->mpp_pkt_in)) {
|
if (0 == mpp_packet_get_length(dec->mpp_pkt_in)) {
|
||||||
mpp_free(mpp_packet_get_data(dec->mpp_pkt_in));
|
|
||||||
mpp_packet_deinit(&dec->mpp_pkt_in);
|
mpp_packet_deinit(&dec->mpp_pkt_in);
|
||||||
dec->mpp_pkt_in = NULL;
|
dec->mpp_pkt_in = NULL;
|
||||||
}
|
}
|
||||||
|
@@ -307,7 +307,7 @@ MPP_RET Mpp::reset()
|
|||||||
MppPacket mpkt = NULL;
|
MppPacket mpkt = NULL;
|
||||||
RK_U32 flags = 0;
|
RK_U32 flags = 0;
|
||||||
mPackets->lock();
|
mPackets->lock();
|
||||||
if(mPackets->list_size()){
|
if (mPackets->list_size()) {
|
||||||
mPackets->del_at_head(&mpkt, sizeof(mpkt));
|
mPackets->del_at_head(&mpkt, sizeof(mpkt));
|
||||||
}
|
}
|
||||||
mPackets->flush();
|
mPackets->flush();
|
||||||
@@ -329,13 +329,12 @@ MPP_RET Mpp::reset()
|
|||||||
mpp_enc_reset(mEnc);
|
mpp_enc_reset(mEnc);
|
||||||
}
|
}
|
||||||
mThreadCodec->unlock(THREAD_RESET);
|
mThreadCodec->unlock(THREAD_RESET);
|
||||||
if(mpkt != NULL){
|
if (mpkt != NULL) {
|
||||||
flags = mpp_packet_get_flag(mpkt);
|
flags = mpp_packet_get_flag(mpkt);
|
||||||
mpp_log("flags = %d",flags);
|
mpp_log("flags = %d", flags);
|
||||||
if(flags&MPP_PACKET_FLAG_EXTRA_DATA){ //avoid first packet is extara data was flushed & dec can work
|
if (flags & MPP_PACKET_FLAG_EXTRA_DATA) { //avoid first packet is extara data was flushed & dec can work
|
||||||
put_packet(mpkt);
|
put_packet(mpkt);
|
||||||
}
|
}
|
||||||
mpp_free(mpp_packet_get_data(mpkt));
|
|
||||||
mpp_packet_deinit(&mpkt);
|
mpp_packet_deinit(&mpkt);
|
||||||
mpkt = NULL;
|
mpkt = NULL;
|
||||||
}
|
}
|
||||||
|
@@ -94,6 +94,7 @@ MPP_RET mpp_packet_copy_init(MppPacket *packet, const MppPacket src)
|
|||||||
memcpy(p, src, sizeof(*p));
|
memcpy(p, src, sizeof(*p));
|
||||||
p->data = p->pos = data;
|
p->data = p->pos = data;
|
||||||
p->size = p->length = size;
|
p->size = p->length = size;
|
||||||
|
p->flag |= MPP_PACKET_FLAG_INTERNAL;
|
||||||
if (size) {
|
if (size) {
|
||||||
memcpy(data, ((MppPacketImpl *)src)->data, size);
|
memcpy(data, ((MppPacketImpl *)src)->data, size);
|
||||||
}
|
}
|
||||||
@@ -115,6 +116,9 @@ MPP_RET mpp_packet_deinit(MppPacket *packet)
|
|||||||
|
|
||||||
MppPacketImpl *p = (MppPacketImpl *)(*packet);
|
MppPacketImpl *p = (MppPacketImpl *)(*packet);
|
||||||
check_mpp_packet_name(p);
|
check_mpp_packet_name(p);
|
||||||
|
if (p->flag & MPP_PACKET_FLAG_INTERNAL) {
|
||||||
|
mpp_free(p->data);
|
||||||
|
}
|
||||||
mpp_free(p);
|
mpp_free(p);
|
||||||
*packet = NULL;
|
*packet = NULL;
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#define MPP_PACKET_FLAG_EOS (0x00000001)
|
#define MPP_PACKET_FLAG_EOS (0x00000001)
|
||||||
#define MPP_PACKET_FLAG_EXTRA_DATA (0x00000002)
|
#define MPP_PACKET_FLAG_EXTRA_DATA (0x00000002)
|
||||||
|
#define MPP_PACKET_FLAG_INTERNAL (0x00000004)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* mpp_packet_imp structure
|
* mpp_packet_imp structure
|
||||||
|
Reference in New Issue
Block a user