From patchwork Wed Nov 29 23:27:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 6460 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp5101388jah; Wed, 29 Nov 2017 15:27:14 -0800 (PST) X-Google-Smtp-Source: AGs4zMYw0AJhE9kPPAVuifUr+0lQRAD/3A1092oaOtIGb09EcJ/MNorGJhqoTXkBM7acMKuHFRoi X-Received: by 10.223.193.141 with SMTP id x13mr376460wre.239.1511998033934; Wed, 29 Nov 2017 15:27:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511998033; cv=none; d=google.com; s=arc-20160816; b=sHJQFn9eZFG9mk3D320X3DnP0wMnLAXL/iLMf6vyHKVgaZ/jWnHBayHmoiPfBpyBoT G2ARMqgteerREYr4NXwCVGWv3vAJV9l6TGiaD7Pd73WF/hBftYt1bgRJH4z9j0HNzQDd mLgJ8i2zZVJzptKYlAhNu5rvt2vOVgiPifgy8EXUFtKRvfP9wDFfV6mGRHkUlmUjYUG8 wrdAvF5utOI40+u27mj9uvcBnGlMCyCf+61RO+xX1/z0EHOyxLE1mk0v7+fAAWD5ukPk Jjx8QYrMRWkIPG104NctVhpIrn9DZdbMQPAHmHc+V+/zx6hwTo5blQeRNW/EpxSh7B8a hXJg== 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:content-language:mime-version:user-agent:date :message-id:from:to:dkim-signature:delivered-to :arc-authentication-results; bh=RCkP0/zRdCwAo+6gLD7BDKKDJlw8n7aFC3zv2uJIVQQ=; b=Iw6wyXyb11J3+9uVyCi73NeCcuY29yaOJSZBjDZ32geQFtbYrSs3MSHvG+CCUtD6CN asCT/rd3arQtI/4jQxnMBq9gVaw2W9QcFGoA3BF1jQd2FTsB6Tcgyszl61YIFHkIBKAT 8rR/go6fnStsmd3GdT+q+Ha9U57U/xHS93IdPKChZpvnA6ISAlk1E+THfv8WHixaY12h YGWGHHx8F52psKZ9+R/TPbf6G3HrdGDopYkF5OMbd8o2NtbJnO8QNj/6bHMb6BwM9wbh i5YJKeSZGNXom0S8mgKkx7CfF8pvDqjFSgovwhepxVJ/qcpB157eO+5qQM5IukgVI6LK oR6w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=m9sIW53P; 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 h71si669506wmd.205.2017.11.29.15.27.11; Wed, 29 Nov 2017 15:27:13 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=m9sIW53P; 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 8D10268A06F; Thu, 30 Nov 2017 01:27:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2604D68A055 for ; Thu, 30 Nov 2017 01:27:01 +0200 (EET) Received: by mail-wm0-f65.google.com with SMTP id i71so9623095wmf.2 for ; Wed, 29 Nov 2017 15:27:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=to:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=0q82OHPv+bCFQzIKU77sUIOcF/69d9SXq81pKk0KmuQ=; b=m9sIW53PfTmGoelazoOjN6udrn1+ujZeIAyCmE3x5Z3rBTC+Da+Sl0xEw+ql+vR/00 As/6i3FvZssbZutr4/t7CKI+qKB8BJQur05pHa/ynTsg3J1w2xooV8RVLEMyGPVJeL0e +ajmiYHkG7TNjuFiZuTAMhmnpDrpPJE3IXqY6B2RDWXAjJGDQHmt6ZD3aiFbZCUwWPut HFU2kan88V1nhvoOwt0eLRlx0eUdd8NWXlAyDcxJ+kqpFz27DoEdGbwOsowxWUcKlvjY Euvb7lrG9kHis5KSaWu9ooFU/lwp/t8UhUV6ToFs/7g7lDUghI/z3wg98GPPJmT6Gvw9 TTqg== 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:content-transfer-encoding; bh=0q82OHPv+bCFQzIKU77sUIOcF/69d9SXq81pKk0KmuQ=; b=rS9IVFQ4o0ugl7OOQ/qsItg0fWT1+OEK+5zSi5usKgCB6wlqfppW2KE9zwwPo5PSWO FibUogsmol5XntzxvjsQIdau/9UGFW229lAD2Et6MU+HyMqFcKiZVbFaSHe1idWS2rBl aNwvJsWGNURsh3n8YqbOS2wRi7DtDys2YWt6Ma31VXg0BYbVfP/CihLsaaBC8PtFumtE XTqX+/twzhuhL2HVQmu4QcDozv5hiawfm+caKeaM2ETdVZMJgMXnCcYJiNu9F0wU2tnR fjW0qt7tx+wF6M3PPE91bDazYTcdWWS09PMiJqKClJeYZydOAjIu6soylm/SEPgE7dB7 vOXg== X-Gm-Message-State: AJaThX6ze1onogXWHnPdbWhLbDI1dyaEAhswdATGB4U9ffggiJFagMLu PDkGRt5S3YrdcN/Eq3o3AdpUudjb X-Received: by 10.28.11.20 with SMTP id 20mr364485wml.42.1511998024235; Wed, 29 Nov 2017 15:27:04 -0800 (PST) Received: from [192.168.0.9] (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id h185sm4772715wma.19.2017.11.29.15.27.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Nov 2017 15:27:03 -0800 (PST) To: FFmpeg development discussions and patches From: Mark Thompson Message-ID: <7b694785-1c62-3584-b9ac-1faa325021c6@jkqxz.net> Date: Wed, 29 Nov 2017 23:27:00 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH 1/2] vaapi_h264: Add named options for setting profile and level 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" --- libavcodec/vaapi_encode_h264.c | 48 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 5fd0bf7796..6940823b8e 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -93,6 +93,8 @@ typedef struct VAAPIEncodeH264Options { int coder; int aud; int sei; + int profile; + int level; } VAAPIEncodeH264Options; @@ -886,6 +888,11 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) ctx->codec = &vaapi_encode_type_h264; + if (avctx->profile == FF_PROFILE_UNKNOWN) + avctx->profile = opt->profile; + if (avctx->level == FF_LEVEL_UNKNOWN) + avctx->level = opt->level; + switch (avctx->profile) { case FF_PROFILE_H264_BASELINE: av_log(avctx, AV_LOG_WARNING, "H.264 baseline profile is not " @@ -1010,12 +1017,49 @@ static const AVOption vaapi_encode_h264_options[] = { { "recovery_point", "Include recovery points where appropriate", 0, AV_OPT_TYPE_CONST, { .i64 = SEI_RECOVERY_POINT }, INT_MIN, INT_MAX, FLAGS, "sei" }, + + { "profile", "Set profile (profile_idc and constraint_set*_flag)", + OFFSET(profile), AV_OPT_TYPE_INT, + { .i64 = FF_PROFILE_H264_HIGH }, 0x0000, 0xffff, FLAGS, "profile" }, + +#define PROFILE(name, value) name, NULL, 0, AV_OPT_TYPE_CONST, \ + { .i64 = value }, 0, 0, FLAGS, "profile" + { PROFILE("constrained_baseline", FF_PROFILE_H264_CONSTRAINED_BASELINE) }, + { PROFILE("main", FF_PROFILE_H264_MAIN) }, + { PROFILE("high", FF_PROFILE_H264_HIGH) }, +#undef PROFILE + + { "level", "Set level (level_idc)", + OFFSET(level), AV_OPT_TYPE_INT, + { .i64 = 51 }, 0x00, 0xff, FLAGS, "level" }, + +#define LEVEL(name, value) name, NULL, 0, AV_OPT_TYPE_CONST, \ + { .i64 = value }, 0, 0, FLAGS, "level" + { LEVEL("1", 10) }, + { LEVEL("1.1", 11) }, + { LEVEL("1.2", 12) }, + { LEVEL("1.3", 13) }, + { LEVEL("2", 20) }, + { LEVEL("2.1", 21) }, + { LEVEL("2.2", 22) }, + { LEVEL("3", 30) }, + { LEVEL("3.1", 31) }, + { LEVEL("3.2", 32) }, + { LEVEL("4", 40) }, + { LEVEL("4.1", 41) }, + { LEVEL("4.2", 42) }, + { LEVEL("5", 50) }, + { LEVEL("5.1", 51) }, + { LEVEL("5.2", 52) }, + { LEVEL("6", 60) }, + { LEVEL("6.1", 61) }, + { LEVEL("6.2", 62) }, +#undef LEVEL + { NULL }, }; static const AVCodecDefault vaapi_encode_h264_defaults[] = { - { "profile", "100" }, - { "level", "51" }, { "b", "0" }, { "bf", "2" }, { "g", "120" },