Commit 2a89afb3 authored by Lukasz Marek's avatar Lukasz Marek

lavc/libxvid: return meaningful error codes

Signed-off-by: 's avatarLukasz Marek <lukasz.m.luki2@gmail.com>
parent e29153f4
...@@ -488,6 +488,7 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) ...@@ -488,6 +488,7 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx)
if (!x->twopassbuffer || !x->old_twopassbuffer) { if (!x->twopassbuffer || !x->old_twopassbuffer) {
av_log(avctx, AV_LOG_ERROR, av_log(avctx, AV_LOG_ERROR,
"Xvid: Cannot allocate 2-pass log buffers\n"); "Xvid: Cannot allocate 2-pass log buffers\n");
ret = AVERROR(ENOMEM);
goto fail; goto fail;
} }
x->twopassbuffer[0] = x->twopassbuffer[0] =
...@@ -501,8 +502,9 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) ...@@ -501,8 +502,9 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx)
rc2pass2.bitrate = avctx->bit_rate; rc2pass2.bitrate = avctx->bit_rate;
fd = av_tempfile("xvidff.", &x->twopassfile, 0, avctx); fd = av_tempfile("xvidff.", &x->twopassfile, 0, avctx);
if (fd == -1) { if (fd < 0) {
av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write 2-pass pipe\n"); av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write 2-pass pipe\n");
ret = fd;
goto fail; goto fail;
} }
x->twopassfd = fd; x->twopassfd = fd;
...@@ -510,14 +512,19 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) ...@@ -510,14 +512,19 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx)
if (!avctx->stats_in) { if (!avctx->stats_in) {
av_log(avctx, AV_LOG_ERROR, av_log(avctx, AV_LOG_ERROR,
"Xvid: No 2-pass information loaded for second pass\n"); "Xvid: No 2-pass information loaded for second pass\n");
ret = AVERROR(EINVAL);
goto fail; goto fail;
} }
if (strlen(avctx->stats_in) > ret = write(fd, avctx->stats_in, strlen(avctx->stats_in));
write(fd, avctx->stats_in, strlen(avctx->stats_in))) { if (ret == -1)
ret = AVERROR(errno);
else if (strlen(avctx->stats_in) > ret) {
av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write to 2-pass pipe\n"); av_log(avctx, AV_LOG_ERROR, "Xvid: Cannot write to 2-pass pipe\n");
goto fail; ret = AVERROR(EIO);
} }
if (ret < 0)
goto fail;
rc2pass2.filename = x->twopassfile; rc2pass2.filename = x->twopassfile;
plugins[xvid_enc_create.num_plugins].func = xvid_plugin_2pass2; plugins[xvid_enc_create.num_plugins].func = xvid_plugin_2pass2;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment