muxer libav: fix another memory leaks caused by wrong ffmpeg code

This commit is contained in:
Jaroslav Kysela 2014-10-21 14:54:57 +02:00
parent 15db6d188a
commit 33449e80f5

View file

@ -49,11 +49,15 @@ lav_muxer_write(void *opaque, uint8_t *buf, int buf_size)
{
int r;
lav_muxer_t *lm = (lav_muxer_t*)opaque;
r = write(lm->lm_fd, buf, buf_size);
lm->m_errors += (r != buf_size);
if (r != buf_size)
lm->m_errors++;
return r;
/* No room to notify about errors here. */
/* We need to complete av_write_trailer() to free */
/* all associated structures. */
return buf_size;
}
@ -388,6 +392,9 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
av_init_packet(&packet);
if(lm->lm_h264_filter && st->codec->codec_id == AV_CODEC_ID_H264) {
free_data = 1;
packet.data = NULL;
packet.size = 0;
if(av_bitstream_filter_filter(lm->lm_h264_filter,
st->codec,
NULL,
@ -399,7 +406,6 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
tvhlog(LOG_WARNING, "libav", "Failed to filter bitstream");
break;
}
free_data = 1;
} else if (st->codec->codec_id == AV_CODEC_ID_AAC) {
/* remove ADTS header */
packet.data = pktbuf_ptr(pkt->pkt_payload) + 7;