提交 870ee6f7 编写于 作者: A Art Clarke 提交者: David Conrad

Fix memory leak in libtheora encoder

Patch by Art Clarke [aclark , xuggle . com]

Originally committed as revision 19423 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 38a9c529
...@@ -150,6 +150,11 @@ static av_cold int encode_init(AVCodecContext* avc_context) ...@@ -150,6 +150,11 @@ static av_cold int encode_init(AVCodecContext* avc_context)
if (concatenate_packet( &offset, avc_context, &o_packet ) != 0) { if (concatenate_packet( &offset, avc_context, &o_packet ) != 0) {
return -1; return -1;
} }
/* Clear up theora_comment struct before we reset the packet */
theora_comment_clear( &t_comment );
/* And despite documentation to the contrary, theora_comment_clear
* does not release the packet */
ogg_packet_clear(&o_packet);
/* Tables */ /* Tables */
theora_encode_tables( &(h->t_state), &o_packet ); theora_encode_tables( &(h->t_state), &o_packet );
...@@ -157,9 +162,6 @@ static av_cold int encode_init(AVCodecContext* avc_context) ...@@ -157,9 +162,6 @@ static av_cold int encode_init(AVCodecContext* avc_context)
return -1; return -1;
} }
/* Clear up theora_comment struct */
theora_comment_clear( &t_comment );
/* Set up the output AVFrame */ /* Set up the output AVFrame */
avc_context->coded_frame= avcodec_alloc_frame(); avc_context->coded_frame= avcodec_alloc_frame();
...@@ -249,6 +251,10 @@ static av_cold int encode_close(AVCodecContext* avc_context) ...@@ -249,6 +251,10 @@ static av_cold int encode_close(AVCodecContext* avc_context)
result = theora_encode_packetout( &(h->t_state), 1, &o_packet ); result = theora_encode_packetout( &(h->t_state), 1, &o_packet );
theora_clear( &(h->t_state) ); theora_clear( &(h->t_state) );
av_freep(&avc_context->coded_frame);
av_freep(&avc_context->extradata);
avc_context->extradata_size = 0;
switch (result) { switch (result) {
case 0:/* No packet is ready */ case 0:/* No packet is ready */
case -1:/* Encoding finished */ case -1:/* Encoding finished */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册