diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-04-25 01:43:26 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-05-23 14:43:32 +0200 |
commit | 0812a60feeb5e49efa268fb50d5850b1ad84eb70 (patch) | |
tree | 304f8297b00295993fa1f27103f7b8a8d407d643 | |
parent | c59398970bff5ee6c0305a0228eb562ec5901b08 (diff) | |
download | ffmpeg-0812a60feeb5e49efa268fb50d5850b1ad84eb70.tar.gz |
avcodec/libopenh264enc: Allow user-supplied buffers
Here the packet size is known before allocating the packet,
so that supporting user-supplied buffers is trivial.
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavcodec/libopenh264enc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 54babc3e97..de4b85c411 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -30,6 +30,7 @@ #include "libavutil/mathematics.h" #include "avcodec.h" +#include "encode.h" #include "internal.h" #include "libopenh264.h" @@ -404,10 +405,9 @@ static int svc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, } av_log(avctx, AV_LOG_DEBUG, "%d slices\n", fbi.sLayerInfo[fbi.iLayerNum - 1].iNalCount); - if ((ret = ff_alloc_packet2(avctx, avpkt, size, size))) { - av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n"); + if ((ret = ff_get_encode_buffer(avctx, avpkt, size, 0))) return ret; - } + size = 0; for (layer = first_layer; layer < fbi.iLayerNum; layer++) { memcpy(avpkt->data + size, fbi.sLayerInfo[layer].pBsBuf, layer_size[layer]); @@ -433,11 +433,11 @@ const AVCodec ff_libopenh264_encoder = { .long_name = NULL_IF_CONFIG_SMALL("OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_H264, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_OTHER_THREADS, .priv_data_size = sizeof(SVCContext), .init = svc_encode_init, .encode2 = svc_encode_frame, .close = svc_encode_close, - .capabilities = AV_CODEC_CAP_OTHER_THREADS, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_AUTO_THREADS, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, |