From patchwork Fri Nov 11 02:24:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 1380 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp1175743vsb; Thu, 10 Nov 2016 18:24:14 -0800 (PST) X-Received: by 10.194.75.227 with SMTP id f3mr3870228wjw.19.1478831054664; Thu, 10 Nov 2016 18:24:14 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id td3si8118511wjc.11.2016.11.10.18.24.14; Thu, 10 Nov 2016 18:24:14 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 770E2689F21; Fri, 11 Nov 2016 04:24:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f175.google.com (mail-pf0-f175.google.com [209.85.192.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0C657689F0C for ; Fri, 11 Nov 2016 04:24:02 +0200 (EET) Received: by mail-pf0-f175.google.com with SMTP id i88so2784521pfk.2 for ; Thu, 10 Nov 2016 18:24:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=to:from:subject:message-id:date:user-agent:mime-version; bh=82RviReezCFUdedvMaH8Jyx3OGMlpR2+H8cxS9vyrpY=; b=1CqYLNwWjk+8/C6WqnZcU2St33Zxygnj40iVv05wkgYuUn/pbohKy1KRh4ITUIxSvA /JLR8q+uEBzX2IWTbyqk9jXdvrI+63gOXap8T9Ru3/4DudC874W4j2FwzU3X8ch4Vrp+ XnL/HL6YcUiTi+5ODiitiSy8kM4lMi7dRmo6eVMUuJonVHYVTfFCU/rCD6SoAiGWI97Z Uf5ByUv2YrRPub/CJQiEioALCW/VN5he2QJsRbXARpEegWU8TmJt/teIwXZcVEg7vCYG q+tygGrUTmKtlOovJpk2dC2qh4T8uExllQzR3qJ8pfErut4XpUjl5yNRKwGA3WnCH8l8 jMKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=82RviReezCFUdedvMaH8Jyx3OGMlpR2+H8cxS9vyrpY=; b=OW6HsoOQI7gh2HrgLomIdAHrsJVuhOckUWJhGROQKJPhJAPN8HrIggdHVyAcG5+SI7 0Vzq8s/7BDP2xcn99Kk742zuO6NoxcpO/7vBRm8hwKl81ouMhbIp92hBam2KHHDssAZ6 AVZkBNKcuNAYKbiWvXDlciclxm3JfAZKviig1mwXzBYwlV+uueHaMBJuf2DKuMrPmv2o ktYsgshd3yutOLRHgpHy6s4xHbVCHrizhbyyVxT7ttJS0Zk+KWp5zxirKqo1bX/Bs214 suYuLFEKIDUXNp+keLX9MSb+0Kt69XC6k514VgrnUXbAZ6sNVIg7nMDsM/hVmEhwLlut jgjg== X-Gm-Message-State: ABUngvcnK5X42IcDuHGoHaOg4xlXbnFsLEh75UwhPAk/4o6UnXolxAJ+xr2j9FL+Bmv6GA== X-Received: by 10.99.112.65 with SMTP id a1mr41207455pgn.31.1478831044163; Thu, 10 Nov 2016 18:24:04 -0800 (PST) Received: from [10.239.204.196] ([192.55.54.42]) by smtp.gmail.com with ESMTPSA id v66sm10233704pfa.33.2016.11.10.18.24.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Nov 2016 18:24:03 -0800 (PST) To: FFmpeg development discussions and patches , jun.zhao@intel.com, Mark Thompson , mypopy@gmail.com From: Jun Zhao Message-ID: Date: Fri, 11 Nov 2016 10:24:00 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 Content-Disposition: attachment; filename*0="0001-lavc-vaapi_encode_h265-fix-the-hevc-vaapi-encoder-ou.pa"; filename*1="tch" X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH] lavc/vaapi_encode_h265: fix the hevc vaapi encoder output shaking issue. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From 5db0b2cd0930ed88d853114f13b69a80a44d9c4c Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Fri, 11 Nov 2016 10:04:53 +0800 Subject: [PATCH] lavc/vaapi_encode_h265: fix the hevc vaapi encoder output shaking issue. the max_num_reorder_pics/max_dec_pic_buffering_minus in vps/sps are incorrect. merge libav commit 314b421dd8910ebed7a8d419a0dbea239a00044e vaapi_encode: Decide on GOP setup before initialising sequence parameters merge libav commit b8cac1e83066aa87e8402c146c81b77a11b5eec3 vaapi_h265: Fix buffering parameters Merged-by: Wang, Yi A Merged-by: Jun Zhao --- libavcodec/vaapi_encode.c | 13 ++++++------- libavcodec/vaapi_encode_h265.c | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 21a8656..233f749 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -1181,6 +1181,12 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx, ctx->decode_delay = 1; ctx->output_order = - ctx->output_delay - 1; + // Currently we never generate I frames, only IDR. + ctx->i_per_idr = 0; + ctx->p_per_i = ((avctx->gop_size + avctx->max_b_frames) / + (avctx->max_b_frames + 1)); + ctx->b_per_p = avctx->max_b_frames; + if (ctx->codec->sequence_params_size > 0) { ctx->codec_sequence_params = av_mallocz(ctx->codec->sequence_params_size); @@ -1206,13 +1212,6 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx, goto fail; } } - - // All I are IDR for now. - ctx->i_per_idr = 0; - ctx->p_per_i = ((avctx->gop_size + avctx->max_b_frames) / - (avctx->max_b_frames + 1)); - ctx->b_per_p = avctx->max_b_frames; - // This should be configurable somehow. (Needs testing on a machine // where it actually overlaps properly, though.) ctx->issue_mode = ISSUE_MODE_MAXIMISE_THROUGHPUT; diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c index 45f6f6d..33de041 100644 --- a/libavcodec/vaapi_encode_h265.c +++ b/libavcodec/vaapi_encode_h265.c @@ -897,12 +897,12 @@ static int vaapi_encode_h265_init_sequence_params(AVCodecContext *avctx) mseq->log2_max_pic_order_cnt_lsb_minus4 = 8; mseq->vps_sub_layer_ordering_info_present_flag = 0; - mseq->vps_max_dec_pic_buffering_minus1[0] = 1; - mseq->vps_max_num_reorder_pics[0] = ctx->b_per_p; + mseq->vps_max_dec_pic_buffering_minus1[0] = (avctx->max_b_frames > 0) + 1; + mseq->vps_max_num_reorder_pics[0] = (avctx->max_b_frames > 0); mseq->vps_max_latency_increase_plus1[0] = 0; mseq->sps_sub_layer_ordering_info_present_flag = 0; - mseq->sps_max_dec_pic_buffering_minus1[0] = 1; - mseq->sps_max_num_reorder_pics[0] = ctx->b_per_p; + mseq->sps_max_dec_pic_buffering_minus1[0] = (avctx->max_b_frames > 0) + 1; + mseq->sps_max_num_reorder_pics[0] = (avctx->max_b_frames > 0); mseq->sps_max_latency_increase_plus1[0] = 0; mseq->vps_timing_info_present_flag = 1;