Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
muxer libav: fix memory leak for h264
  • Loading branch information
perexg committed May 25, 2015
1 parent d39ce53 commit 40955d8
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions src/muxer/muxer_libav.c
Expand Up @@ -380,7 +380,8 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
AVPacket packet;
th_pkt_t *pkt = (th_pkt_t*)data, *opkt;
lav_muxer_t *lm = (lav_muxer_t*)m;
int rc = 0, free_data = 0;
unsigned char *tofree;
int rc = 0;

assert(smt == SMT_PACKET);

Expand All @@ -406,10 +407,10 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
if(pkt->pkt_payload == NULL)
continue;

tofree = NULL;
av_init_packet(&packet);

if(lm->lm_h264_filter && st->codec->codec_id == AV_CODEC_ID_H264) {
free_data = 1;
pkt = avc_convert_pkt(opkt = pkt);
pkt_ref_dec(opkt);
if(av_bitstream_filter_filter(lm->lm_h264_filter,
Expand All @@ -424,6 +425,8 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
if (packet.data != pktbuf_ptr(pkt->pkt_payload))
av_free(packet.data);
break;
} else {
tofree = packet.data;
}
} else if (st->codec->codec_id == AV_CODEC_ID_AAC) {
/* remove ADTS header */
Expand All @@ -446,8 +449,8 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
if((rc = av_interleaved_write_frame(oc, &packet)))
tvhlog(LOG_WARNING, "libav", "Failed to write frame");

if(free_data && packet.data != pktbuf_ptr(pkt->pkt_payload))
av_free(packet.data);
if(tofree && tofree != pktbuf_ptr(pkt->pkt_payload))
av_free(tofree);

break;
}
Expand Down

0 comments on commit 40955d8

Please sign in to comment.