From patchwork Thu Apr 13 12:34:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 3393 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp678988vsd; Thu, 13 Apr 2017 05:43:05 -0700 (PDT) X-Received: by 10.223.153.233 with SMTP id y96mr2846852wrb.96.1492087385487; Thu, 13 Apr 2017 05:43:05 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v131si4028744wmg.2.2017.04.13.05.43.05; Thu, 13 Apr 2017 05:43:05 -0700 (PDT) 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 sp=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 C241768975B; Thu, 13 Apr 2017 15:42:56 +0300 (EEST) 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 E945D688332 for ; Thu, 13 Apr 2017 15:42:49 +0300 (EEST) Received: by mail-pf0-f175.google.com with SMTP id i5so28248330pfc.2 for ; Thu, 13 Apr 2017 05:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=NrAt3w+JctQQ2l22QjCwPyiRUsMzlyUI6ENCi8H0Ohc=; b=bo5UxeVirP221Br1RMsaaGzQK/RgfAyMKc1rd/IxFTAyoUySVUnSWkuo+kNBzZguA5 9OoERfWx5JYl8cSJTv8GK14hwqa+6JaN83e8rR4wMbKivos057lqRbsJSqoI/fMmjgtM uoH3AlwUGu7txmMPqT0jyN0pG96TQuJHAB1y3qmHPIrojF0ycPw9a5Y+ydUS8uPppPIa 4DV108qaFAzbLJRt+sKGtIf7fyz2ijmM+/+WNmwqL993RX0bs7a+zai4MFO32GhP2am1 OzyoENt3daiixItvAMKZl7mR+h+5bXTrrIiZE/y2en5crPcxzgwnxNH3eVKqOL/MBc/3 tuQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=NrAt3w+JctQQ2l22QjCwPyiRUsMzlyUI6ENCi8H0Ohc=; b=NJbH0TlHMg70PKgjhMiays6ofdFkIqe9BpVvi6hiwIJ4yChs95Ymz1AVRlTv9I0ULY P+VM0vqV1J8Dqt/9PaeIOmsVdmnbQwJHN77V5QGgonrh4ngcD/64G/AzZg7FzaHTkCfF IEMmOc6BcId4b+gNTpMS5VG9Udj8wel6a8YjoPW/8L8u1JX8vZk5MGscwC8tOulafRyz csxt1gxO6t7lQJprx4P5xYGrwver41XoNUkJKJllKY2/PQYcttpLzBjUDSHD2+dVzS5v Kr3nY52FttzyIb95t67akkiA7ALXmIpJhRsrSGknGq1Vrv20o68ywreBHXFYFmVP5b1p XvQg== X-Gm-Message-State: AN3rC/6CX0wG2NAEp5Qy7yx+IJHlcxjbICTsWWmnZ/QmArhd3x6Pq6wg zzK/ummMzVCe1w== X-Received: by 10.84.175.67 with SMTP id s61mr3998598plb.126.1492086892238; Thu, 13 Apr 2017 05:34:52 -0700 (PDT) Received: from [10.239.204.51] ([192.55.55.41]) by smtp.gmail.com with ESMTPSA id q5sm17121670pgn.59.2017.04.13.05.34.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Apr 2017 05:34:51 -0700 (PDT) To: FFmpeg development discussions and patches , Mark Thompson From: Jun Zhao Message-ID: <2d9a3b36-3afc-883a-a7a5-62c508adc562@gmail.com> Date: Thu, 13 Apr 2017 20:34:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0 MIME-Version: 1.0 Content-Language: en-US Content-Disposition: attachment; filename*0="0001-vaapi_encode-Fix-the-vaapi-h264-encoder-VBR-CBR-meta.pa"; filename*1="tch" X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH] vaapi_encode: Fix the vaapi h264 encoder VBR/CBR metadata setting error. 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 1fa48b45fe962d8c342d158d9c16ce24139ffd84 Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Thu, 13 Apr 2017 20:07:10 +0800 Subject: [PATCH] vaapi_encode: Fix the vaapi h264 encoder VBR/CBR metadata setting error. before this fix, mediainfo check the bit rate control mode metadata info is wrong. Reproduce step: encode with CBR or VBR mode like this: ./ffmpeg -y -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.mp4 -an -c:v h264_vaapi \ -maxrate 5M -b:v 5M output_cbr.mp4 ./ffmpeg -y -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.mp4 -an -c:v h264_vaapi \ -maxrate 6M -b:v 5M output_cbr.mp4 then use the mediainfo check the bit rate control mode. Signed-off-by: Jun Zhao --- libavcodec/vaapi_encode_h264.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 92e2955..47d0c94 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -760,7 +760,7 @@ static int vaapi_encode_h264_write_extra_header(AVCodecContext *avctx, char tmp[256]; size_t header_len; - if (index == 0 && ctx->va_rc_mode == VA_RC_CBR) { + if (index == 0 && (ctx->va_rc_mode == VA_RC_CBR || ctx->va_rc_mode == VA_RC_VBR)) { *type = VAEncPackedHeaderH264_SEI; init_put_bits(&pbc, tmp, sizeof(tmp)); @@ -868,7 +868,7 @@ static int vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx) mseq->fixed_frame_rate_flag = 0; } - if (ctx->va_rc_mode == VA_RC_CBR) { + if (ctx->va_rc_mode == VA_RC_CBR || ctx->va_rc_mode == VA_RC_VBR) { priv->send_timing_sei = 1; mseq->nal_hrd_parameters_present_flag = 1; @@ -886,8 +886,7 @@ static int vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx) mseq->cpb_size_value_minus1[0] = (ctx->hrd_params.hrd.buffer_size >> mseq->cpb_size_scale + 4) - 1; - // CBR mode isn't actually available here, despite naming. - mseq->cbr_flag[0] = 0; + mseq->cbr_flag[0] = (ctx->va_rc_mode == VA_RC_CBR ? 1 : 0); mseq->initial_cpb_removal_delay_length_minus1 = 23; mseq->cpb_removal_delay_length_minus1 = 23;