mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
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
This commit is contained in:
parent
38a9c529e2
commit
870ee6f715
@ -150,6 +150,11 @@ static av_cold int encode_init(AVCodecContext* avc_context)
|
||||
if (concatenate_packet( &offset, avc_context, &o_packet ) != 0) {
|
||||
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 */
|
||||
theora_encode_tables( &(h->t_state), &o_packet );
|
||||
@ -157,9 +162,6 @@ static av_cold int encode_init(AVCodecContext* avc_context)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Clear up theora_comment struct */
|
||||
theora_comment_clear( &t_comment );
|
||||
|
||||
/* Set up the output AVFrame */
|
||||
avc_context->coded_frame= avcodec_alloc_frame();
|
||||
|
||||
@ -249,6 +251,10 @@ static av_cold int encode_close(AVCodecContext* avc_context)
|
||||
|
||||
result = theora_encode_packetout( &(h->t_state), 1, &o_packet );
|
||||
theora_clear( &(h->t_state) );
|
||||
av_freep(&avc_context->coded_frame);
|
||||
av_freep(&avc_context->extradata);
|
||||
avc_context->extradata_size = 0;
|
||||
|
||||
switch (result) {
|
||||
case 0:/* No packet is ready */
|
||||
case -1:/* Encoding finished */
|
||||
|
Loading…
Reference in New Issue
Block a user