From patchwork Fri Mar 2 04:26:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Langdale X-Patchwork-Id: 7786 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp5826894jaj; Thu, 1 Mar 2018 20:32:29 -0800 (PST) X-Google-Smtp-Source: AG47ELsdJSsBxsgE4aI2AbqwEh5yp+TlTpxywqarRifqa/eu+K5TrYk8l34Ac197ggijDPcemjO+ X-Received: by 10.28.74.199 with SMTP id n68mr381235wmi.83.1519965149598; Thu, 01 Mar 2018 20:32:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519965149; cv=none; d=google.com; s=arc-20160816; b=kyw41NieEDnHYCXrRIG9Kv3Ai/xrgLAEtjQdKsCkAeklImtpjBZyoGsNNWGh+jVdR2 R4Qc7vjZxPNr/gqbq9MLMQYP+1EUWd9gT8LLTzr1x7vllq5n34b04eJD7yPUR+dtrQq4 JnNLJnkEH78EQXWZPTbLGu9BVMDkdMSxw0RmI/m+1p20hkmr+nO/9DNkLSJ10lNcebSy yFpJGvNGnRcyFTuSNvQG6TBV3J3iqZvzKt2TZpn1rPMGmt95VQ9mubpBqpu1gli12zGY h/966BxJfSt/6IO3D7+BOEl2wBrwRncpMetzCBus1cZ3bYR34+IBk8EnZ8Cl7IZYHaKD ieJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=fSDYiZgaQGZpeAjnXzCkQbT+5Te18R8vtu5iyMtCkWs=; b=My69vKxQh23krkLYmAe6fl/sA7ryLCgyCpjPlNnTIwm3MaTfTZG6zop0aBF4hLqbf9 Hg0NJUeg4y+sfoc5xeDOurwnNKOFXcQGCVT8EqovsbVdQQH3Ox2V/sUCXkRZ7Nrql9Zw O1FzcO9U7NvFL+VHMb7ZEeWQ/KHyikExTVkgpY5kbqjgHRriGuHc//Gr4Vwvo23OmvIp bl6HHvFesI6pJe3Ig5mf3plBNuSK5Pyut/S/y5tVnAWLCmL/C0IAe28nRTjuc0z8boP8 pFmffZQ+xPPuymRF2veTaTRJWk1YWP2bC0cCCCSyj5OE9vQilkhFGK41smOGHk0ws0Oj 4ikw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@overt.org header.s=mail header.b=vJ6c/2kc; 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 b94si4133857wrd.50.2018.03.01.20.32.28; Thu, 01 Mar 2018 20:32:29 -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=@overt.org header.s=mail header.b=vJ6c/2kc; 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 7AEC968A4D1; Fri, 2 Mar 2018 06:32:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f99.google.com (mail-it0-f99.google.com [209.85.214.99]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE2A568A4C3 for ; Fri, 2 Mar 2018 06:32:14 +0200 (EET) Received: by mail-it0-f99.google.com with SMTP id k135so575031ite.2 for ; Thu, 01 Mar 2018 20:32:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references; bh=WCc/EZgTKS6BsOIUylawBDY8It1VVSR8xo+nr7i+Dgc=; b=VakSp19ya2QwW+X0Cp84FC0QwYL0wiR1qd98MzEVdSyQmB1W9wUwW8+grIFfh+Lnc+ /vygAcdIkfhS/ww5C19uAHn9y1Ko8dB+j5J0RzjujW7prYUW8JTQ10rX0HmbnZhXuCFn +gynZAjfKRM+qrW2j/zENRt4Ddji3V3epgGrx3gEpT1uJlKTOk/JTWtQ8iCQI4m+pIs6 +GjkcurDRQB7H7g6WzzJ8wEZmGNGkjuFyphoX3P5CvWEckbLemz6ar/IrFo2oezmG7mJ vs3XgEHMGQtEc6NXof8x69OUAbudEwvfBWhyw062mSUZcMrjj+WZ4mbpMZm82nW1Hvf6 D52w== X-Gm-Message-State: AElRT7E3REk7bWTNKIego+Z/FRky69CxccqeE4+Qd5l3t9PKuGSJjXZK HTrnPAEx8sTkrKxJwjR/nQZZtRydVf2U0NR3ddRR/+fcvo8pcw== X-Received: by 10.36.244.13 with SMTP id d13mr793823iti.110.1519964826759; Thu, 01 Mar 2018 20:27:06 -0800 (PST) Received: from mail.overt.org (155.208.178.107.bc.googleusercontent.com. [107.178.208.155]) by smtp-relay.gmail.com with ESMTPS id o17sm158780ita.5.2018.03.01.20.27.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Mar 2018 20:27:06 -0800 (PST) X-Relaying-Domain: gapps.overt.org Received: from authenticated-user (mail.overt.org [107.178.208.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.overt.org (Postfix) with ESMTPSA id 2EB56601C2; Fri, 2 Mar 2018 04:27:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=overt.org; s=mail; t=1519964826; bh=AmGJrmAGlcpQDefZoE/TqOZWft4IE3Loyx2pKZYcW9w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vJ6c/2kcU5IKKBMdf81B3BkgsOWGR+VvtQd/D/Qb79MFCKs5PoGCGb5HraDlaRAcn yJalrFHs8iONq3KxbPs2YWQ3vt/kx+toTPVKAqqpom/tm7bNe5cBMTqpyBWtIvo/64 eKKB31lp4YPn//n4vIyjMthUdXUVJrz2uMXsWdT9xk9ZcQia3+GqTKoG0gGCRFmt+Q /Ypbmak4ZWE6pP2WjNyf+vqBYDuECiGYiczXS1BBoTJ2N/X+C6XB2NsgHGidO27mEv kBzGuMlWI1fNnrFVfGVGHPeaDfUW0KOoTPYh866360ieJ64aa/F1ySIztUDscOssYj sdZXER9CqLPFw== From: Philip Langdale To: ffmpeg-devel@ffmpeg.org Date: Thu, 1 Mar 2018 20:26:53 -0800 Message-Id: <20180302042653.14337-4-philipl@overt.org> In-Reply-To: <20180302042653.14337-1-philipl@overt.org> References: <20180302042653.14337-1-philipl@overt.org> Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/nvenc: Declare support for P016 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: Philip Langdale MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" nvenc doesn't support P016, but we have two problems today: 1) We declare support for YUV444P16 which nvenc also doesn't support. We do this because it's the only pix_fmt we have that can approximate nvenc's internal format that is YUV444P10 with data in MSBs instead of LSBs. Because the declared format is a 16bit one, it will be preferrentially chosen when encoding >10bit content, but that content will normally be YUV420P12 or P016 which should get mapped to P010 and not YUV444P10. 2) Transcoding P016 content with nvenc should be possible in a pure hardware pipeline, and that can't be done if nvenc doesn't say it accepts P016. By mapping it to P010, we can use it, albeit with truncation. I have established that swscale doesn't know how to dither to 10bits so we'd get truncation anyway, even if we tried to do this 'properly'. Signed-off-by: Philip Langdale --- libavcodec/nvenc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 161c56adc2..e00c1fb245 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -41,7 +41,8 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = { AV_PIX_FMT_NV12, AV_PIX_FMT_P010, AV_PIX_FMT_YUV444P, - AV_PIX_FMT_YUV444P16, + AV_PIX_FMT_P016, // Truncated to 10bits + AV_PIX_FMT_YUV444P16, // Truncated to 10bits AV_PIX_FMT_0RGB32, AV_PIX_FMT_0BGR32, AV_PIX_FMT_CUDA, @@ -52,6 +53,7 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = { }; #define IS_10BIT(pix_fmt) (pix_fmt == AV_PIX_FMT_P010 || \ + pix_fmt == AV_PIX_FMT_P016 || \ pix_fmt == AV_PIX_FMT_YUV444P16) #define IS_YUV444(pix_fmt) (pix_fmt == AV_PIX_FMT_YUV444P || \ @@ -1222,6 +1224,7 @@ static NV_ENC_BUFFER_FORMAT nvenc_map_buffer_format(enum AVPixelFormat pix_fmt) case AV_PIX_FMT_NV12: return NV_ENC_BUFFER_FORMAT_NV12_PL; case AV_PIX_FMT_P010: + case AV_PIX_FMT_P016: return NV_ENC_BUFFER_FORMAT_YUV420_10BIT; case AV_PIX_FMT_YUV444P: return NV_ENC_BUFFER_FORMAT_YUV444_PL;