mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-15 11:30:08 +01:00
- Fix memory leak and others bugs for ppmpipe. Thanks to Rudolf Opalla.
Originally committed as revision 373 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
17
ffmpeg.c
17
ffmpeg.c
@@ -302,15 +302,14 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
|
|||||||
UINT8 *buf, *src, *dest;
|
UINT8 *buf, *src, *dest;
|
||||||
int size, j, i;
|
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
|
/* XXX: not efficient, should add test if we can take
|
||||||
directly the AVPicture */
|
directly the AVPicture */
|
||||||
switch(pix_fmt) {
|
switch(pix_fmt) {
|
||||||
case PIX_FMT_YUV420P:
|
case PIX_FMT_YUV420P:
|
||||||
|
size = avpicture_get_size(pix_fmt, w, h);
|
||||||
|
buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
dest = buf;
|
dest = buf;
|
||||||
for(i=0;i<3;i++) {
|
for(i=0;i<3;i++) {
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
@@ -328,6 +327,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
|
|||||||
case PIX_FMT_YUV422P:
|
case PIX_FMT_YUV422P:
|
||||||
size = (w * h) * 2;
|
size = (w * h) * 2;
|
||||||
buf = malloc(size);
|
buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
dest = buf;
|
dest = buf;
|
||||||
for(i=0;i<3;i++) {
|
for(i=0;i<3;i++) {
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
@@ -344,6 +345,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
|
|||||||
case PIX_FMT_YUV444P:
|
case PIX_FMT_YUV444P:
|
||||||
size = (w * h) * 3;
|
size = (w * h) * 3;
|
||||||
buf = malloc(size);
|
buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
dest = buf;
|
dest = buf;
|
||||||
for(i=0;i<3;i++) {
|
for(i=0;i<3;i++) {
|
||||||
src = picture->data[i];
|
src = picture->data[i];
|
||||||
@@ -357,6 +360,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
|
|||||||
case PIX_FMT_YUV422:
|
case PIX_FMT_YUV422:
|
||||||
size = (w * h) * 2;
|
size = (w * h) * 2;
|
||||||
buf = malloc(size);
|
buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
dest = buf;
|
dest = buf;
|
||||||
src = picture->data[0];
|
src = picture->data[0];
|
||||||
for(j=0;j<h;j++) {
|
for(j=0;j<h;j++) {
|
||||||
@@ -369,6 +374,8 @@ static void write_picture(AVFormatContext *s, int index, AVPicture *picture,
|
|||||||
case PIX_FMT_BGR24:
|
case PIX_FMT_BGR24:
|
||||||
size = (w * h) * 3;
|
size = (w * h) * 3;
|
||||||
buf = malloc(size);
|
buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
dest = buf;
|
dest = buf;
|
||||||
src = picture->data[0];
|
src = picture->data[0];
|
||||||
for(j=0;j<h;j++) {
|
for(j=0;j<h;j++) {
|
||||||
|
|||||||
12
libav/img.c
12
libav/img.c
@@ -169,10 +169,14 @@ static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
|
|||||||
int ret;
|
int ret;
|
||||||
ByteIOContext f1, *f;
|
ByteIOContext f1, *f;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This if-statement destroys pipes - I do not see why it is necessary
|
||||||
if (get_frame_filename(filename, sizeof(filename),
|
if (get_frame_filename(filename, sizeof(filename),
|
||||||
s->path, s->img_number) < 0)
|
s->path, s->img_number) < 0)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
*/
|
||||||
|
get_frame_filename(filename, sizeof(filename),
|
||||||
|
s->path, s->img_number);
|
||||||
if (!s->is_pipe) {
|
if (!s->is_pipe) {
|
||||||
f = &f1;
|
f = &f1;
|
||||||
if (url_fopen(f, filename, URL_RDONLY) < 0)
|
if (url_fopen(f, filename, URL_RDONLY) < 0)
|
||||||
@@ -547,10 +551,14 @@ static int img_write_packet(AVFormatContext *s, int stream_index,
|
|||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
This if-statement destroys pipes - I do not see why it is necessary
|
||||||
if (get_frame_filename(filename, sizeof(filename),
|
if (get_frame_filename(filename, sizeof(filename),
|
||||||
img->path, img->img_number) < 0)
|
img->path, img->img_number) < 0)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
*/
|
||||||
|
get_frame_filename(filename, sizeof(filename),
|
||||||
|
img->path, img->img_number);
|
||||||
if (!img->is_pipe) {
|
if (!img->is_pipe) {
|
||||||
pb = &pb1;
|
pb = &pb1;
|
||||||
if (url_fopen(pb, filename, URL_WRONLY) < 0)
|
if (url_fopen(pb, filename, URL_WRONLY) < 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user