ffmpeg | branch: master | Mark Thompson <s...@jkqxz.net> | Mon Feb 12 22:22:30 2018 +0000| [9471122a1b5dec34572c3d4c675737f0493d140e] | committer: Mark Thompson
Merge commit 'cad739dace55e3446ef7180de688173cd19fb000' * commit 'cad739dace55e3446ef7180de688173cd19fb000': lavc: Add per-thread surfaces in get_hw_frame_parameters() Merged-by: Mark Thompson <s...@jkqxz.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9471122a1b5dec34572c3d4c675737f0493d140e --- libavcodec/decode.c | 9 +++++---- libavcodec/dxva2.c | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index e984d9754e..522720c07a 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1186,10 +1186,6 @@ int ff_decode_get_hw_frames_ctx(AVCodecContext *avctx, // We guarantee 4 base work surfaces. The function above guarantees 1 // (the absolute minimum), so add the missing count. frames_ctx->initial_pool_size += 3; - - // Add an additional surface per thread is frame threading is enabled. - if (avctx->active_thread_type & FF_THREAD_FRAME) - frames_ctx->initial_pool_size += avctx->thread_count; } ret = av_hwframe_ctx_init(avctx->hw_frames_ctx); @@ -1236,6 +1232,11 @@ int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, // available then add them here. if (avctx->extra_hw_frames > 0) frames_ctx->initial_pool_size += avctx->extra_hw_frames; + + // If frame threading is enabled then an extra surface per thread + // is also required. + if (avctx->active_thread_type & FF_THREAD_FRAME) + frames_ctx->initial_pool_size += avctx->thread_count; } *out_frames_ref = frames_ref; diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index 6f294703fb..6d831599af 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -614,10 +614,6 @@ int ff_dxva2_common_frame_params(AVCodecContext *avctx, else num_surfaces += 2; - /* add extra surfaces for frame threading */ - if (avctx->active_thread_type & FF_THREAD_FRAME) - num_surfaces += avctx->thread_count; - frames_ctx->sw_format = avctx->sw_pix_fmt == AV_PIX_FMT_YUV420P10 ? AV_PIX_FMT_P010 : AV_PIX_FMT_NV12; frames_ctx->width = FFALIGN(avctx->coded_width, surface_alignment); ====================================================================== _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog