mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-29 10:52:20 +00:00
libxvid: cleanup on error pathes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
667bf15652
commit
4f0d4acc70
@ -73,6 +73,8 @@ struct xvid_ff_pass1 {
|
||||
struct xvid_context *context; /**< Pointer to private context */
|
||||
};
|
||||
|
||||
static int xvid_encode_close(AVCodecContext *avctx);
|
||||
|
||||
/*
|
||||
* Xvid 2-Pass Kludge Section
|
||||
*
|
||||
@ -477,7 +479,7 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
|
||||
if( x->twopassbuffer == NULL || x->old_twopassbuffer == NULL ) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Xvid: Cannot allocate 2-pass log buffers\n");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
x->twopassbuffer[0] = x->old_twopassbuffer[0] = 0;
|
||||
|
||||
@ -492,21 +494,21 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
|
||||
if( fd == -1 ) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Xvid: Cannot write 2-pass pipe\n");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
x->twopassfd = fd;
|
||||
|
||||
if( avctx->stats_in == NULL ) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Xvid: No 2-pass information loaded for second pass\n");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if( strlen(avctx->stats_in) >
|
||||
write(fd, avctx->stats_in, strlen(avctx->stats_in)) ) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Xvid: Cannot write to 2-pass pipe\n");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rc2pass2.filename = x->twopassfile;
|
||||
@ -606,13 +608,16 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
|
||||
xerr = xvid_encore(NULL, XVID_ENC_CREATE, &xvid_enc_create, NULL);
|
||||
if( xerr ) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Xvid: Could not create encoder reference\n");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
x->encoder_handle = xvid_enc_create.handle;
|
||||
avctx->coded_frame = &x->encoded_picture;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
xvid_encode_close(avctx);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int xvid_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||
|
Loading…
Reference in New Issue
Block a user