]> git.sesse.net Git - ffmpeg/commitdiff
lavf,lavc: free avoptions in a generic way.
authorAnton Khirnov <anton@khirnov.net>
Sun, 5 Jun 2011 11:18:17 +0000 (13:18 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 5 Jun 2011 13:01:36 +0000 (15:01 +0200)
It's simpler and less error-prone.

Fixes some memleaks along the way.

libavcodec/utils.c
libavdevice/bktr.c
libavdevice/fbdev.c
libavdevice/libdc1394.c
libavdevice/v4l2.c
libavdevice/vfwcap.c
libavdevice/x11grab.c
libavformat/rawdec.c
libavformat/tty.c
libavformat/utils.c

index 65792a6f5a65f456bb1d6f30280811a2a50b21c8..2b417defbf154ee1ffd5b6a4d5b72ae4f7d0a60a 100644 (file)
@@ -783,6 +783,9 @@ av_cold int avcodec_close(AVCodecContext *avctx)
         avctx->codec->close(avctx);
     avcodec_default_free_buffers(avctx);
     avctx->coded_frame = NULL;
+    if (avctx->codec->priv_class)
+        av_opt_free(avctx->priv_data);
+    av_opt_free(avctx);
     av_freep(&avctx->priv_data);
     if(avctx->codec && avctx->codec->encode)
         av_freep(&avctx->extradata);
index 6e19a611036cec425b1f8a09d26bf9a068ce9689..4d3933f4e991818f9b1e44abb8f703a9fff708dd 100644 (file)
@@ -320,8 +320,6 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     last_frame_time = 0;
 
 out:
-    av_freep(&s->video_size);
-    av_freep(&s->framerate);
     return ret;
 }
 
index 7e9ffe5c77533f64f8428b6564800d18b6b1a2f7..afd6b94ed02b2e216318165fb51b14d4cf2a3f53 100644 (file)
@@ -103,7 +103,6 @@ av_cold static int fbdev_read_header(AVFormatContext *avctx,
     int ret, flags = O_RDONLY;
 
     ret = av_parse_video_rate(&fbdev->fps, fbdev->framerate);
-    av_freep(&fbdev->framerate);
     if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Couldn't parse framerate.\n");
         return ret;
index b17d0fb441cede289720055e127dab43a499df93..622579bc929f7b362d6a602686dffc201e1e203f 100644 (file)
@@ -195,9 +195,6 @@ static inline int dc1394_read_common(AVFormatContext *c, AVFormatParameters *ap,
     *select_fps = fps;
     *select_fmt = fmt;
 out:
-    av_freep(&dc1394->video_size);
-    av_freep(&dc1394->pixel_format);
-    av_freep(&dc1394->framerate);
     return ret;
 }
 
index 98ff82ec0dfc0130d398d87a5eaa9dc02b47f0bb..839d290b63be7852626354791087383734291a40 100644 (file)
@@ -684,10 +684,6 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     st->codec->bit_rate = s->frame_size * 1/av_q2d(st->codec->time_base) * 8;
 
 out:
-    av_freep(&s->video_size);
-    av_freep(&s->pixel_format);
-    av_freep(&s->standard);
-    av_freep(&s->framerate);
     return res;
 }
 
index 5dd873bdcbb6293f6972d6ec1f393153688003cf..95dd4c34b8ba4f3dcac0679085d80d9276507a6c 100644 (file)
@@ -234,9 +234,6 @@ static int vfw_read_close(AVFormatContext *s)
         pktl = next;
     }
 
-    av_freep(&ctx->video_size);
-    av_freep(&ctx->framerate);
-
     return 0;
 }
 
index b1ca6e699a866c2a5d3a162b2f5cadd10a566ae8..c6dc6735205765a9db1cc84f95282de30833104b 100644 (file)
@@ -258,8 +258,6 @@ x11grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     st->codec->bit_rate = x11grab->frame_size * 1/av_q2d(x11grab->time_base) * 8;
 
 out:
-    av_freep(&x11grab->video_size);
-    av_freep(&x11grab->framerate);
     return ret;
 }
 
index a92200d844e495a4e69555ae1b95ad0945a36ec8..cc05c353e9e0a3d978a19eb27e04633f54e27b99 100644 (file)
@@ -102,9 +102,6 @@ int ff_raw_read_header(AVFormatContext *s, AVFormatParameters *ap)
             st->codec->height = height;
             st->codec->pix_fmt = pix_fmt;
 fail:
-            av_freep(&s1->video_size);
-            av_freep(&s1->pixel_format);
-            av_freep(&s1->framerate);
             return ret;
             }
         default:
@@ -182,7 +179,6 @@ int ff_raw_video_read_header(AVFormatContext *s,
     av_set_pts_info(st, 64, 1, 1200000);
 
 fail:
-    av_freep(&s1->framerate);
     return ret;
 }
 
index 9dada16b8a1c9ba1d558b32a6f956e673acdd85b..970274eb54fc8c937f3899b4c83622ab8bf83a6a 100644 (file)
@@ -121,7 +121,6 @@ static int read_header(AVFormatContext *avctx,
     }
 
 fail:
-    av_freep(&s->video_size);
     return ret;
 }
 
index 1050959dcbf8c120f9f52d02ebd49361bf385744..bdc20f6d9bbd6c15f676794de64abb15fe3d8817 100644 (file)
@@ -2549,6 +2549,10 @@ void avformat_free_context(AVFormatContext *s)
     int i;
     AVStream *st;
 
+    av_opt_free(s);
+    if (s->iformat && s->iformat->priv_class)
+        av_opt_free(s->priv_data);
+
     for(i=0;i<s->nb_streams;i++) {
         /* free all data in a stream component */
         st = s->streams[i];
@@ -2578,7 +2582,6 @@ void avformat_free_context(AVFormatContext *s)
     }
     av_freep(&s->chapters);
     av_metadata_free(&s->metadata);
-    av_freep(&s->key);
     av_freep(&s->streams);
     av_free(s);
 }
@@ -3094,6 +3097,8 @@ fail:
         av_freep(&s->streams[i]->priv_data);
         av_freep(&s->streams[i]->index_entries);
     }
+    if (s->iformat && s->iformat->priv_class)
+        av_opt_free(s->priv_data);
     av_freep(&s->priv_data);
     return ret;
 }