From patchwork Fri Dec 8 19:23:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mmironov X-Patchwork-Id: 6616 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp927546jah; Fri, 8 Dec 2017 11:23:49 -0800 (PST) X-Google-Smtp-Source: AGs4zMZKWnp4okI8yQq2BIKycKbR7DiXfFyfo1ulL+L6UvUHiiXoPh8JMiTFYzqjWP26Ma9jWHUi X-Received: by 10.223.165.19 with SMTP id i19mr30160310wrb.227.1512761029410; Fri, 08 Dec 2017 11:23:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512761029; cv=none; d=google.com; s=arc-20160816; b=GttRw6IXpxNyGNvtMoz2UGzFq2XRwL5/Gvm6X3bhTk3I7Qzy8/BMY13Lt2xZhItDU1 Yex2h/IXnevDJ8R6rfi0MIMAtIwbHhhWWm/FZ/d1OCwdNSj8uOGbA9eSfUSN6MIkgXUw WBYnfv157riQKLVmNpjdOWDCq18ZEglbQysFnD2iMTUsclkPPFKB6TMV69L3m0m6Rzz4 iWzF9gCdNDqLPL90rpnEsS0GuUVbOfqLKtOdaCOuxuuK8ymLXyVYbLrqu1WAGM2Jr2/K XEFr3EnQebJGq6+lyiidvjH3Vo3615T3hDUDbIPSaJ9KzUgy0ZCwNoJrLIa4y8RkwChD pNIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:spamdiagnosticmetadata :spamdiagnosticoutput:content-language:accept-language:message-id :date:thread-index:thread-topic:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=bR2ePE2mWNIXFQTvi8S4zqJM29nUV/5u3WRC5o9QB3U=; b=y+z6ayG/Ml+mDTolpQ7kF19ohygfK4E2snRh0LhRw9zH5G8vVy0Z1JF0cXUu5kPD5g uNgGTClLaLGUgxOIf9Gd6vWkeKKVyGRP/+AeEc6wwxDvw1YQbzNYr+wMxTaZ6Tq5DsOx V0vsfyv/dhXcFs/IQc9XYmOD/RtcnOGiYTi7Fh6FI6rfJ2Q+D7DAMeZiGpecs7BIfe/c YRXbHDtA7cD7BzfkWCZ7UW2wVR0uiNQ8Ra20d88w91b7wC8Vyz39bFY+UCCQpaU0KH9t Ayyj6lj7LdWb4scnWVsSJMsqrBKCbTYfr51nsLjhkB9ns8kTC1WbInojLuX/QMkItPrb tneQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=gupoXQSn; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x33si5733584wrb.344.2017.12.08.11.23.48; Fri, 08 Dec 2017 11:23:49 -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=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=gupoXQSn; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0E96A68A3EA; Fri, 8 Dec 2017 21:23:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0044.outbound.protection.outlook.com [104.47.42.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E57D2689DD9 for ; Fri, 8 Dec 2017 21:23:34 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AKMKdfPWMXZrRnWbicThI92c4TKO1Cm/vILYcKZQx+k=; b=gupoXQSnpr5b3MP8EZNRYUouM3GTLjkd08VPX6vIP+lnTLnTePpPlIeM7ywa1kfpy6S9u1clzexi4/tm9827hW/xfYjMCLnoQ/djJTve0Z+XjoodqjAz7zoD66QSomXysi2ZAc4WKN535bqve3ijKST2R+TXuiJXCNifEXdDE4w= Received: from CY4PR12MB1477.namprd12.prod.outlook.com (10.172.71.145) by CY4PR12MB1480.namprd12.prod.outlook.com (10.172.71.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Fri, 8 Dec 2017 19:23:38 +0000 Received: from CY4PR12MB1477.namprd12.prod.outlook.com ([10.172.71.145]) by CY4PR12MB1477.namprd12.prod.outlook.com ([10.172.71.145]) with mapi id 15.20.0282.012; Fri, 8 Dec 2017 19:23:38 +0000 From: "Mironov, Mikhail" To: FFmpeg development discussions and patches Thread-Topic: [PATCH] amf: fix wrong profile level after auto-correction in H264 and HEVC Thread-Index: AdNwWejzl4IquxpaSCqdDczNNkKJBw== Date: Fri, 8 Dec 2017 19:23:38 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Mikhail.Mironov@amd.com; x-originating-ip: [165.204.55.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR12MB1480; 20:e0HPvwvPXxHPVDyTDa0N/XNbXSF9R6aSVeSMPt2bgbME6TyeJ7JEbpyFKaN6Jsj+bUmRxN+a2eWRqTcxSO47iNW6snbmZqYhFy42Xc/n+jtZBzyo1rffMc/IL5/CoTKv/NcwkBInqhoD+da3YSNvrhJdcWqwUh3xSRCkRRgS7eq44xpO44fU0crCxfjpSXpJ6GWorVrWgAMDgzEtCcgdMTrTqcFRDURW1KOhmnf21CDRJ5frxze5vuB8Oy3rT5NI x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 2f74b5bd-863c-4948-1486-08d53e712f25 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307); SRVR:CY4PR12MB1480; x-ms-traffictypediagnostic: CY4PR12MB1480: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(767451399110)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123562025)(20161123555025)(6072148)(201708071742011); SRVR:CY4PR12MB1480; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY4PR12MB1480; x-forefront-prvs: 0515208626 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(376002)(346002)(39860400002)(189003)(199004)(2906002)(68736007)(66066001)(8676002)(81166006)(14454004)(3660700001)(53936002)(3280700002)(3846002)(74316002)(81156014)(99286004)(6916009)(5660300001)(7736002)(33656002)(97736004)(72206003)(478600001)(6506006)(106356001)(316002)(9686003)(2900100001)(7696005)(102836003)(8936002)(77096006)(6436002)(105586002)(305945005)(6116002)(25786009)(55016002)(86362001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1480; H:CY4PR12MB1477.namprd12.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f74b5bd-863c-4948-1486-08d53e712f25 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2017 19:23:38.4729 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1480 Subject: [FFmpeg-devel] [PATCH] amf: fix wrong profile level after auto-correction in H264 and HEVC 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" Moved bitrate parameters set before Init() call because bitrate is used in profile level correction code inside Init(). Signed-off-by: Mikhail Mironov --- libavcodec/amfenc_h264.c | 10 +++++----- libavcodec/amfenc_hevc.c | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libavcodec/amfenc_h264.c b/libavcodec/amfenc_h264.c index 3cacf32..96e4e95 100644 --- a/libavcodec/amfenc_h264.c +++ b/libavcodec/amfenc_h264.c @@ -213,7 +213,6 @@ static av_cold int amf_encode_init_h264(AVCodecContext *avctx) } } - if (ctx->rate_control_mode == AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CONSTANT_QP) { AMF_ASSIGN_PROPERTY_INT64(res, ctx->encoder, AMF_VIDEO_ENCODER_RATE_CONTROL_PREANALYSIS_ENABLE, AMF_VIDEO_ENCODER_PREENCODE_DISABLED); if (ctx->preanalysis) @@ -224,10 +223,6 @@ static av_cold int amf_encode_init_h264(AVCodecContext *avctx) AMF_ASSIGN_PROPERTY_INT64(res, ctx->encoder, AMF_VIDEO_ENCODER_QUALITY_PRESET, ctx->quality); - // Initialize Encoder - res = ctx->encoder->pVtbl->Init(ctx->encoder, ctx->format, avctx->width, avctx->height); - AMF_RETURN_IF_FALSE(ctx, res == AMF_OK, AVERROR_BUG, "encoder->Init() failed with error %d\n", res); - // Dynamic parmaters AMF_ASSIGN_PROPERTY_INT64(res, ctx->encoder, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, ctx->rate_control_mode); @@ -279,6 +274,11 @@ static av_cold int amf_encode_init_h264(AVCodecContext *avctx) } else if (ctx->rate_control_mode == AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR) { av_log(ctx, AV_LOG_WARNING, "rate control mode is PEAK_CONSTRAINED_VBR but rc_max_rate is not set\n"); } + + // Initialize Encoder + res = ctx->encoder->pVtbl->Init(ctx->encoder, ctx->format, avctx->width, avctx->height); + AMF_RETURN_IF_FALSE(ctx, res == AMF_OK, AVERROR_BUG, "encoder->Init() failed with error %d\n", res); + // Enforce HRD, Filler Data, VBAQ, Frame Skipping, Deblocking Filter AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_ENFORCE_HRD, !!ctx->enforce_hrd); AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, !!ctx->filler_data); diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c index ced57b1..3956b2d 100644 --- a/libavcodec/amfenc_hevc.c +++ b/libavcodec/amfenc_hevc.c @@ -204,10 +204,6 @@ static av_cold int amf_encode_init_hevc(AVCodecContext *avctx) AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_MOTION_HALF_PIXEL, ctx->me_half_pel); AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_MOTION_QUARTERPIXEL, ctx->me_quarter_pel); - // init encoder - res = ctx->encoder->pVtbl->Init(ctx->encoder, ctx->format, avctx->width, avctx->height); - AMF_RETURN_IF_FALSE(ctx, res == AMF_OK, AVERROR_BUG, "encoder->Init() failed with error %d\n", res); - // init dynamic rate control params if (ctx->max_au_size) ctx->enforce_hrd = 1; @@ -225,6 +221,10 @@ static av_cold int amf_encode_init_hevc(AVCodecContext *avctx) av_log(ctx, AV_LOG_WARNING, "rate control mode is PEAK_CONSTRAINED_VBR but rc_max_rate is not set\n"); } + // init encoder + res = ctx->encoder->pVtbl->Init(ctx->encoder, ctx->format, avctx->width, avctx->height); + AMF_RETURN_IF_FALSE(ctx, res == AMF_OK, AVERROR_BUG, "encoder->Init() failed with error %d\n", res); + // init dynamic picture control params AMF_ASSIGN_PROPERTY_INT64(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_MAX_AU_SIZE, ctx->max_au_size);