aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanjo <pulento@users.sourceforge.net>2002-04-02 15:07:01 +0000
committerJuanjo <pulento@users.sourceforge.net>2002-04-02 15:07:01 +0000
commit5b0ad91b996506632708dcefc22d2835d04a4dba (patch)
tree58f1409b7207a5d235db0ea52bb5b65ccce2774a
parentc60cf138bd82cf80a2b239cf5f48fbf9ff0a125c (diff)
downloadffmpeg-5b0ad91b996506632708dcefc22d2835d04a4dba.tar.gz
- Fix memory leak and others bugs for ppmpipe. Thanks to Rudolf Opalla.
Originally committed as revision 373 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--ffmpeg.c17
-rw-r--r--libav/img.c12
2 files changed, 22 insertions, 7 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 5edd33dc7b..7310df4929 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -302,15 +302,14 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
UINT8 *buf, *src, *dest;
int size, j, i;
- size = avpicture_get_size(pix_fmt, w, h);
- buf = malloc(size);
- if (!buf)
- return;
-
/* XXX: not efficient, should add test if we can take
directly the AVPicture */
switch(pix_fmt) {
case PIX_FMT_YUV420P:
+ size = avpicture_get_size(pix_fmt, w, h);
+ buf = malloc(size);
+ if (!buf)
+ return;
dest = buf;
for(i=0;i<3;i++) {
if (i == 1) {
@@ -328,6 +327,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
case PIX_FMT_YUV422P:
size = (w * h) * 2;
buf = malloc(size);
+ if (!buf)
+ return;
dest = buf;
for(i=0;i<3;i++) {
if (i == 1) {
@@ -344,6 +345,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
case PIX_FMT_YUV444P:
size = (w * h) * 3;
buf = malloc(size);
+ if (!buf)
+ return;
dest = buf;
for(i=0;i<3;i++) {
src = picture->data[i];
@@ -357,6 +360,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
case PIX_FMT_YUV422:
size = (w * h) * 2;
buf = malloc(size);
+ if (!buf)
+ return;
dest = buf;
src = picture->data[0];
for(j=0;j<h;j++) {
@@ -369,6 +374,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
case PIX_FMT_BGR24:
size = (w * h) * 3;
buf = malloc(size);
+ if (!buf)
+ return;
dest = buf;
src = picture->data[0];
for(j=0;j<h;j++) {
diff --git a/libav/img.c b/libav/img.c
index 710530b831..e793d43d09 100644
--- a/libav/img.c
+++ b/libav/img.c
@@ -169,10 +169,14 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
int ret;
ByteIOContext f1, *f;
+/*
+ This if-statement destroys pipes - I do not see why it is necessary
if (get_frame_filename(filename, sizeof(filename),
s->path, s->img_number) < 0)
return -EIO;
-
+*/
+ get_frame_filename(filename, sizeof(filename),
+ s->path, s->img_number);
if (!s->is_pipe) {
f = &f1;
if (url_fopen(f, filename, URL_RDONLY) < 0)
@@ -547,10 +551,14 @@ static int img_write_packet(AVFormatContext *s, int stream_index,
return -EIO;
}
+/*
+ This if-statement destroys pipes - I do not see why it is necessary
if (get_frame_filename(filename, sizeof(filename),
img->path, img->img_number) < 0)
return -EIO;
-
+*/
+ get_frame_filename(filename, sizeof(filename),
+ img->path, img->img_number);
if (!img->is_pipe) {
pb = &pb1;
if (url_fopen(pb, filename, URL_WRONLY) < 0)