From patchwork Wed Nov 18 08:24:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: leozhang X-Patchwork-Id: 23681 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp109536ybf; Wed, 18 Nov 2020 00:53:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJzHktjQqyntYaWKUo91uf7QWN6rSZBd6mocFFJCmSANaQoPWwVZwC4+XV/TId1B65J01tAD X-Received: by 2002:a5d:69d1:: with SMTP id s17mr3812286wrw.104.1605689582105; Wed, 18 Nov 2020 00:53:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605689582; cv=none; d=google.com; s=arc-20160816; b=i7AzjrIfs/dXZKOdhV1vQ9P2KcbVLPMhelDmbadDkFXX9B4XGLQCRM3nuraHtlSU8F lByHkc0ecwH9+xNO1vchLm5syIUXwC5pG5H8svolJ4+MMVBys/p9het9hHmJgEsp3sFO DFGWKdpf5GgI+OgqZYYknMbPqRzMoV4nqjagyzMXnMNY7VVltLHQR99lC16kbU1nONO1 3jxmNUNIURP3OLTNdiBVKVunFyBZ1PkYAhV8pCUCuLkwFWk3d0jmwyP5cyzTfRH0os4x 5+qOa8IRGQ5nMwSJTUg6YTD1kiHBPnF1IBSCPFXvZAd4h1+bS/ODS3xAzAOp67qaAwAp YKog== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=cbdxh2Wgy6/xjLOBo2C9nQMC7HwLClt5jmnQwP5dgbY=; b=RE8jdH73tVv56bECpBCIYmPknWolAuTDoLezr33ZT7ZKD4i1Ns0uJMSjZbrW3XiYgl hHK3VJ/d5E+sfQU03pptHnmFExAiF2Y/8EUVyrapRjZv/wObDp1KE6t/hxdAJqr5GZNn V/sSE1QQfmWX0mURco+vwHmysXNf6RWg23glhPNkS2EmOo+J5LfS9yh1T+WfVa140RV+ 8ygxP7KzuOpIELV10G0BYe+kROmxiBkr4UxLN3MJu3WTqVXMlIOy/OOtobEncn1lF7ZR 3qj6coBEYNAeXR/UlrP8Z2vsNfXUpRX7/PPCRnIyMHOTaaTyUSezIqa3OMGUQZVa9t9w pTNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=qD1Fd8W0; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c65si1373377wmd.97.2020.11.18.00.53.01; Wed, 18 Nov 2020 00:53:02 -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=@gmail.com header.s=20161025 header.b=qD1Fd8W0; 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=QUARANTINE 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 7AE9868B469; Wed, 18 Nov 2020 10:52:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f195.google.com (mail-oi1-f195.google.com [209.85.167.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0F4D4680A7C for ; Wed, 18 Nov 2020 10:52:50 +0200 (EET) Received: by mail-oi1-f195.google.com with SMTP id f11so1391120oij.6 for ; Wed, 18 Nov 2020 00:52:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=GMakkPqluXz4dNc82JI9fgu+fF5eiIbLVpTxoQLfViU=; b=qD1Fd8W0hpnHy5uMWtFOwRkSwSHkrf3rt5p3myDoZ23gAxt0GKGYUKqDxdXNu+hzdv vuVcjxPIz1j3Jjr6zpoENBm7FMtxbBEUXzq2qiGL5eNlUF8JlCzH3JjX9VWLTFz4Q4P1 Uh5aZ1JWlmugeTGoR4I0BZwYDeggp/6qvz5u4FONsLVuRc+DXUHQOSyE7vav9/XLc6n5 x4uoVCXCZsrb1fzPiCvURYegZ02Z9tIi3Or61cFVftDqNs+7++i82CX4AGvJHpMOOHgd ZXwCexrzl5V8u+lku5mS0nVki7T6SP5U+5QQjYTJOpYbDzef4oA/EwcwpGM8vESc+zBb eSmQ== 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:mime-version :content-transfer-encoding; bh=GMakkPqluXz4dNc82JI9fgu+fF5eiIbLVpTxoQLfViU=; b=KhPhDUqpLmHHUJU/pcAyMVbGUV7I9L3VPZx6N8TSc3KYpWH3y0dV6Z+9Avak7KqC5t FlHozAQgjmHc+HNqudRhgbhFqIvhSm8H5R2WDi1DKQlCQvcu75QaZqAnw1bLed1XSQcS SRhDKTmquyjhq07QasgjAn0TmGPpioLc/+yH+J0Cjj2JoECBtsBa8uJtk9j2g7bBop6Y aIuIQUZlggkljJB3AawpIhoyrSQS2Oq+jpHnw3ozzgUJcAgKFaSDlA4EY2zBBeX4hVcR wRhTUMkBFgv0TE0W+NRfYRiYQXv1+NwG47/jqseFrs72x7X0AzQn1D+30NUHViRtCYTf cDEw== X-Gm-Message-State: AOAM530UGdouIhUag+SHqwa4xTvr9cCGnf+t7xGkO3xgUEyRcvv//CKc fFHbnyux4YSpBIFwUh6ocVhgnuXSxjg= X-Received: by 2002:a17:90b:3505:: with SMTP id ls5mr2887967pjb.134.1605687851784; Wed, 18 Nov 2020 00:24:11 -0800 (PST) Received: from PF2E8E0S-ATW.inc.bytedance.com ([61.120.150.72]) by smtp.gmail.com with ESMTPSA id j11sm8546728pfe.26.2020.11.18.00.24.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Nov 2020 00:24:11 -0800 (PST) From: leozhang To: ffmpeg-devel@ffmpeg.org Date: Wed, 18 Nov 2020 16:24:07 +0800 Message-Id: <20201118082407.1817-1-nowerzt@gmail.com> X-Mailer: git-send-email 2.28.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/cuviddec: fix CUDA_ERROR_INVALID_CONTEXT error found by cuda-memcheck tool 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" X-TUID: oTCOgmRaSn+W Content-Length: 2404 Test command like below: cuda-memcheck ./ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input_file -c:v h264_nvenc -f null - Signed-off-by: leozhang --- libavcodec/cuviddec.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c index 5e698d4cd0..816a9c1b3c 100644 --- a/libavcodec/cuviddec.c +++ b/libavcodec/cuviddec.c @@ -673,15 +673,27 @@ static int cuvid_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, static av_cold int cuvid_decode_end(AVCodecContext *avctx) { CuvidContext *ctx = avctx->priv_data; + AVHWDeviceContext *device_ctx = (AVHWDeviceContext *)ctx->hwdevice->data; + AVCUDADeviceContext *device_hwctx = device_ctx->hwctx; + CUcontext dummy, cuda_ctx = device_hwctx->cuda_ctx; + int ret; av_fifo_freep(&ctx->frame_queue); + ret = CHECK_CU(ctx->cudl->cuCtxPushCurrent(cuda_ctx)); + if (ret < 0) + goto error; + if (ctx->cuparser) ctx->cvdl->cuvidDestroyVideoParser(ctx->cuparser); if (ctx->cudecoder) ctx->cvdl->cuvidDestroyDecoder(ctx->cudecoder); + ret = CHECK_CU(ctx->cudl->cuCtxPopCurrent(&dummy)); + if (ret < 0) + goto error; + ctx->cudl = NULL; av_buffer_unref(&ctx->hwframe); @@ -693,6 +705,9 @@ static av_cold int cuvid_decode_end(AVCodecContext *avctx) cuvid_free_functions(&ctx->cvdl); return 0; + +error: + return ret; } static int cuvid_test_capabilities(AVCodecContext *avctx,