diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-11-18 10:47:08 +0100 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-11-18 10:47:08 +0100 |
commit | 07502e473f0c28fdb781954d5ca1aca5f039179a (patch) | |
tree | 7ee2a450e466c6ca7a399961461b76c86977ebb5 /libavcodec/libopenh264enc.c | |
parent | 7e9474ca47fd4d267bdafcc8162fded67f6410e5 (diff) | |
parent | 7a76371437f9562c3414f985523f883489e3936a (diff) | |
download | ffmpeg-07502e473f0c28fdb781954d5ca1aca5f039179a.tar.gz |
Merge commit '7a76371437f9562c3414f985523f883489e3936a'
* commit '7a76371437f9562c3414f985523f883489e3936a':
libopenh264enc: Simplify init by setting FF_CODEC_CAP_INIT_CLEANUP
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Diffstat (limited to 'libavcodec/libopenh264enc.c')
-rw-r--r-- | libavcodec/libopenh264enc.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 91f26d0731..648f59b767 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -100,8 +100,6 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) if ((err = ff_libopenh264_check_version(avctx)) < 0) return err; - // Use a default error for multiple error paths below - err = AVERROR_UNKNOWN; if (WelsCreateSVCEncoder(&s->encoder)) { av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n"); @@ -167,8 +165,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(avctx, AV_LOG_ERROR, "Invalid combination -slices %d and -max_nal_size %d.\n", avctx->slices, s->max_nal_size); - err = AVERROR(EINVAL); - goto fail; + return AVERROR(EINVAL); } if (avctx->slices > 1) @@ -196,14 +193,13 @@ FF_ENABLE_DEPRECATION_WARNINGS } else { av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, " "specify a valid max_nal_size to use -slice_mode dyn\n"); - err = AVERROR(EINVAL); - goto fail; + return AVERROR(EINVAL); } } if ((*s->encoder)->InitializeExt(s->encoder, ¶m) != cmResultSuccess) { av_log(avctx, AV_LOG_ERROR, "Initialize failed\n"); - goto fail; + return AVERROR_UNKNOWN; } if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { @@ -213,27 +209,19 @@ FF_ENABLE_DEPRECATION_WARNINGS for (i = 0; i < fbi.sLayerInfo[0].iNalCount; i++) size += fbi.sLayerInfo[0].pNalLengthInByte[i]; avctx->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!avctx->extradata) { - err = AVERROR(ENOMEM); - goto fail; - } + if (!avctx->extradata) + return AVERROR(ENOMEM); avctx->extradata_size = size; memcpy(avctx->extradata, fbi.sLayerInfo[0].pBsBuf, size); } props = ff_add_cpb_side_data(avctx); - if (!props) { - err = AVERROR(ENOMEM); - goto fail; - } + if (!props) + return AVERROR(ENOMEM); props->max_bitrate = param.iMaxBitrate; props->avg_bitrate = param.iTargetBitrate; return 0; - -fail: - svc_encode_close(avctx); - return err; } static int svc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, @@ -306,6 +294,7 @@ AVCodec ff_libopenh264_encoder = { .encode2 = svc_encode_frame, .close = svc_encode_close, .capabilities = AV_CODEC_CAP_AUTO_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &class, |