Signed-off-by: Linjie Fu <linjie...@intel.com> --- Tested following encoders with container muxer(like mp4 muxer for x264, which previously use extradata to store a global header) and raw video muxer, results are good.
libavcodec/libopenh264enc.c | 4 +++- libavcodec/libvpxenc.c | 4 +++- libavcodec/libx264.c | 4 +++- libavcodec/libx265.c | 4 +++- libavcodec/rawenc.c | 3 ++- libavcodec/wrapped_avframe.c | 3 ++- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index f63aa52..b86041b 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -438,7 +438,9 @@ AVCodec ff_libopenh264_encoder = { .init = svc_encode_init, .encode2 = svc_encode_frame, .close = svc_encode_close, - .capabilities = AV_CODEC_CAP_AUTO_THREADS, + .capabilities = AV_CODEC_CAP_AUTO_THREADS | + AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, .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 }, diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 8e0ea42..9faec48 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -1789,7 +1789,9 @@ AVCodec ff_libvpx_vp9_encoder = { .init = vp9_init, .encode2 = vpx_encode, .close = vpx_free, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS | + AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, .profiles = NULL_IF_CONFIG_SMALL(ff_vp9_profiles), .priv_class = &class_vp9, .defaults = defaults, diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index d4b1fd0..016c53c 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -1177,7 +1177,9 @@ AVCodec ff_libx264_encoder = { .encode2 = X264_frame, .close = X264_close, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS | - AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | + AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, .priv_class = &x264_class, .defaults = x264_defaults, .init_static_data = X264_init_static, diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index f560d7f..2a9ec4e 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -701,6 +701,8 @@ AVCodec ff_libx265_encoder = { .priv_class = &class, .defaults = x265_defaults, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS | - AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | + AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, .wrapper_name = "libx265", }; diff --git a/libavcodec/rawenc.c b/libavcodec/rawenc.c index 486c0d7..85298dc 100644 --- a/libavcodec/rawenc.c +++ b/libavcodec/rawenc.c @@ -92,5 +92,6 @@ AVCodec ff_rawvideo_encoder = { .id = AV_CODEC_ID_RAWVIDEO, .init = raw_encode_init, .encode2 = raw_encode, - .capabilities = AV_CODEC_CAP_VARIABLE_DIMENSIONS, + .capabilities = AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, }; diff --git a/libavcodec/wrapped_avframe.c b/libavcodec/wrapped_avframe.c index ae29328..9af3193 100644 --- a/libavcodec/wrapped_avframe.c +++ b/libavcodec/wrapped_avframe.c @@ -116,7 +116,8 @@ AVCodec ff_wrapped_avframe_encoder = { .id = AV_CODEC_ID_WRAPPED_AVFRAME, .encode2 = wrapped_avframe_encode, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, - .capabilities = AV_CODEC_CAP_VARIABLE_DIMENSIONS, + .capabilities = AV_CODEC_CAP_VARIABLE_DIMENSIONS | + AV_CODEC_CAP_ENCODER_FLUSH, }; AVCodec ff_wrapped_avframe_decoder = { -- 2.7.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".