From patchwork Fri May 24 16:39:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josh Allmann X-Patchwork-Id: 13280 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 D43D14492ED for ; Fri, 24 May 2019 19:45:40 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B5784689BF3; Fri, 24 May 2019 19:45:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6B795680AB4 for ; Fri, 24 May 2019 19:45:34 +0300 (EEST) Received: by mail-pf1-f193.google.com with SMTP id u17so5650480pfn.7 for ; Fri, 24 May 2019 09:45:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=wpyFH/XD7Rk3CgAISiMks6a5P73CTVt4Z0vK9EYT8xw=; b=PwBFrNICMumt9jkMVq4Pr3YyvLxkphkPXb0OuGojQSm4OzDQPSq2TSHoOI7FKcSAA6 doOMysMrpgJjiaCT9n+0sLJ7qnGS6LfY2eCAutSQ7bVLDfQ/Fu7BwzK7J0QToIoqGLz6 TjacuLHB17/kBFQwlLg+1qiF2g5/0cufIaEnombxoFSIXp1UK6vaTLjsiCdu8r6XfiUC 07uDS8E/KqW4Q7tSmi3wkkkyn0HG+4GqhBtZab7nietuzQ4Os7uu8SD9inYhQNOcPc+I pIUelIBtAO0UKfZsMmAV74gokqVs/cvUcn0aE/9CnZeIz0qABT5z/irQiFZd6GRsj7Da xvmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=wpyFH/XD7Rk3CgAISiMks6a5P73CTVt4Z0vK9EYT8xw=; b=HX6M4v5sgmhrUYGhsTf7s7TS9qa2u+tomkl6NF3MYIM2NTuSAejqpNcAYGfILB1WJe uoyYEA2zrMQLDiKD4tebwPosT/KZK1WcmoyAO8KtFPBybW08EaVybRulyVe9gAv+UbYB FvuXfKTs0D+kNgdefMYUs2aiSzQmclW2nNVu9Dl4BNMyVLkzE5yNNLIroidbmJErnFvG k9SOsdvyzesBnI49mmhOR9LLlSl+YkyFnP1VEZwmjdfbcHKeA6dAifhnE1RqzTlyRx4g 8gLNcmwxA5HCgjrYfOA/M6D7hs6BRo4b3CIIve86B3IEDzfJs38Ca8BnvgCLZTU302cl jsig== X-Gm-Message-State: APjAAAUDKRkXSfn8DD7Qilcc/y8PxoHgzr8vah36DCkvaMc59PHPM5J0 PBzIYc6hNk0bgsGQW8E480R31uyE X-Google-Smtp-Source: APXvYqwJJRAN2SD+RdXBBcv5j4enoTkv9mZ3GUY1Ljhw/KkQvxlzgw1GPDYxDz6mJaqHDL2AbFBCvA== X-Received: by 2002:a65:41c6:: with SMTP id b6mr41544621pgq.399.1558716024273; Fri, 24 May 2019 09:40:24 -0700 (PDT) Received: from localhost.localdomain (cpe-76-172-80-40.socal.res.rr.com. [76.172.80.40]) by smtp.gmail.com with ESMTPSA id t2sm3016587pfh.166.2019.05.24.09.40.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 24 May 2019 09:40:23 -0700 (PDT) From: Josh Allmann To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 May 2019 09:39:47 -0700 Message-Id: <1558715987-3692-1-git-send-email-joshua.allmann@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH] lavfi/vf_scale_cuda: Reset frame size after acquiring from hwframe. 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The first frame is scaled correctly, and subsequent frames are over-scaled / cropped since the frame data is reset with the hwframe after each invocation of the scaler. The hwframe-allocated frame has a width/height that is 32-bit aligned. The scaler uses this aligned width / height as its target, leading to "over-scaling" and then cropping of the result. To generate a broken test sample: ffmpeg -hwaccel cuvid -c:v h264_cuvid -i -an \ -lavfi scale_cuda=w=426:h=240 -c:v h264_nvenc --- Tested with NV12 and 420P inputs. Noting that YUV444P seems generally broken - both before/after this patch. libavfilter/vf_scale_cuda.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavfilter/vf_scale_cuda.c b/libavfilter/vf_scale_cuda.c index 6b1ef2bb6f..13eb3ad24c 100644 --- a/libavfilter/vf_scale_cuda.c +++ b/libavfilter/vf_scale_cuda.c @@ -489,6 +489,8 @@ static int cudascale_scale(AVFilterContext *ctx, AVFrame *out, AVFrame *in) av_frame_move_ref(out, s->frame); av_frame_move_ref(s->frame, s->tmp_frame); + s->frame->width = s->planes_out[0].width; + s->frame->height= s->planes_out[0].height; ret = av_frame_copy_props(out, in); if (ret < 0)