diff --git a/ffmpeg.c b/ffmpeg.c index 5edd33dc7ba547bb33cc12c273dbd6fa5bc795fe..7310df492935fb99d17aa0d4d54d6bef0cfe6ef7 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 710530b831577b2469fc1eed3bc09472938be491..e793d43d09f2a84d47da2c39fb8f9ccb1a59f229 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)