From patchwork Tue Aug 13 01:04:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 14453 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 9F44F4483C0 for ; Tue, 13 Aug 2019 04:05:16 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6F8D268AB6F; Tue, 13 Aug 2019 04:05:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E7EB689D7B for ; Tue, 13 Aug 2019 04:05:09 +0300 (EEST) Received: by mail-pg1-f193.google.com with SMTP id n190so9537758pgn.0 for ; Mon, 12 Aug 2019 18:05:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7CYRi7R5DxwaR6a3FvQv57qDkfl4/VmXwpJTme8VNDo=; b=j3xEHhmMKHPQTHJmP4fiRPrCgfCUekkTcP1WxAXpCzTUNypWMZ1cH2oMAW2XHHJiQI 1t35OYNbys3Gu97joTulBgLTzt67mQKUk3hLayTyexQsjJOY4CbgCSA21gK2xLGhWnNs tq/WCr5V7F7BaLD/MNg/i/FhfSTdOsPRT4KbrXo3gdVA/1KAbZWQwIXH4QPW2UlKnqSq uWZfj4cW8aiGGHqpCHkx5oPi7FB4TEC3i1RFUNBz+hKPFZ4I/Gt715Fptz5PxrLRmEF6 h1SM+48pXxn0WSUptCr7UHAJT87gY/eT07imwAaztaGh7XoPqm3jeYREMI/LlnmhfNKN ky6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=7CYRi7R5DxwaR6a3FvQv57qDkfl4/VmXwpJTme8VNDo=; b=uKBA3eZBsyEqp2xxpuvAFkqO131JrTp+9qnWV2pKWByw1k0puwMGyd/4mf34UCwanC kcnDj2pPwz67a8v1+k/6dqrYHE1MDWiF9YZp8K+VCKZstdHzxheaEwS5uHUsedKYjSDi 0BzZW2Zqnb5y/KgOBwU1Kw5FycbAC7iA6CdyH2TVIE8/6hFbTckSLLpu+ZShcUZu7CVp DXgyoPbWcsTE9w+66hrCXU6kN+LleXnbR3r8bSzZQho92sfNG/roSom38LsyBaRg01XR SoIkzcabAJk1sFhvLeuv0ga7W+NVQ50wdJLY3Dy2iG+T0QtHGFi59OmaY7lr+pOpC5Fe D11A== X-Gm-Message-State: APjAAAWbhybB8WgKqM/mTku/XKMRSoZlGOpsfTko54ZfwIk4ktz+ux69 lqr4V9NdlydwLGhUU7pPnbxBPdTLHW4= X-Google-Smtp-Source: APXvYqxn4v/ESrVCIVL+OPgwXyrHkYqI3OyaMX8fKfjpwVuSXIuwgGmxz/wPrGYpTtEdSIT0zxuTiQ== X-Received: by 2002:a17:90b:14c:: with SMTP id em12mr1816957pjb.22.1565658307402; Mon, 12 Aug 2019 18:05:07 -0700 (PDT) Received: from localhost.localdomain (ip184-189-221-177.sb.sd.cox.net. [184.189.221.177]) by smtp.gmail.com with ESMTPSA id p7sm123000887pfp.131.2019.08.12.18.05.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 12 Aug 2019 18:05:06 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 12 Aug 2019 18:04:56 -0700 Message-Id: <20190813010456.91644-2-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190813010456.91644-1-ffmpeg@tmm1.net> References: <20190813010456.91644-1-ffmpeg@tmm1.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/2] vaapi_encode: fix VBR mode generating low bitrates 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 Cc: sw@jkqxz.net, Aman Gupta , linjie.fu@intel.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta On some Intel chips, sending VAEncMiscParameterTypeRateControl multiple times causes the encoder to produce very low bitrates that do not match the requested rate controls. This is a regression as of af532c921575eb8ee805cc2c64a914f6302442e1. Prior to that global params were sent only once at the start of the encoding session. The broken VBR behavior was observed on: - i5-7260U Kaby Lake - N3060 CherryView - N3710 CherryView - J3455 Broxton /cc intel/intel-vaapi-driver#480 Signed-off-by: Aman Gupta --- libavcodec/vaapi_encode.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 231efba6cc..960f8230de 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -236,6 +236,12 @@ static int vaapi_encode_issue(AVCodecContext *avctx, if (pic->type == PICTURE_TYPE_IDR) { for (i = 0; i < ctx->nb_global_params; i++) { + if (pic->encode_order != 0 && + ctx->global_params_type[i] == VAEncMiscParameterTypeRateControl && + ctx->va_rc_mode == VA_RC_VBR) { + // send VAEncMiscParameterTypeRateControl only once in VBR mode + continue; + } err = vaapi_encode_make_misc_param_buffer(avctx, pic, ctx->global_params_type[i], ctx->global_params[i],