From patchwork Fri Nov 20 03:23:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: leozhang X-Patchwork-Id: 23745 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 6BC72449973 for ; Fri, 20 Nov 2020 05:47:28 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1502768B8E6; Fri, 20 Nov 2020 05:47:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-il1-f194.google.com (mail-il1-f194.google.com [209.85.166.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C0F1C689E53 for ; Fri, 20 Nov 2020 05:47:20 +0200 (EET) Received: by mail-il1-f194.google.com with SMTP id f5so6466969ilj.9 for ; Thu, 19 Nov 2020 19:47:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=aOS0YFrLtMAiF6WlbYP1LrC9/yBxieIyjyeshJDA+/A=; b=bOwAvZcGA5K06aLJzjwXzXix78yoSu1HXXKHRDMwCZ2Y6OYv//Tw2onN05MbxjoDMg qvj/TSN+IrOCiNBBeXwKtFAQjflOEGDjbuIKSWhOQ9Bmc1TVGfOaD/iAqFSS0GljacwJ +lnBnN7KUselWde1d4J0YDEp4WKpYARI05PZQ6LjZ+VcJ+zbrIAbMvbRMqsNSH3s/0vJ u9diokeFfNLt19+/EnXEEoR/zS91yheKj1gQMYxv151FKOT2pRdq2R5mqxHQcn5OmQi9 YWVQe5oH0cSTlB3X7e0xgNlXaVjw/d696HNHeaihkiUhHXc1RQBbOdpvwwNg/RuNjesf 3z1Q== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=aOS0YFrLtMAiF6WlbYP1LrC9/yBxieIyjyeshJDA+/A=; b=TlHFdD7TshBSJI2t9gW9BJDooveVm9AvHlOgA5NbUNmWfOhFpPsY1l1xWxzg2DFakj tYNbS2gMhu+KsQtl4Fw20Cb8QpxDuCpTGO3Rd67xXwZadIzmIVRJv88uMLGszCSTqJ2f OIn6/nbVP343nM97ElB1X6Pegbe9WqV+Acq1p/Kz7T9BJ9Zv0IDKUG3dxOWlioKH4iqp BDUpfeOacNm1X9BxSG3EJAHueAHr38D/lCU5YGpBgVqrFkoeg3mDhC0TsSj5s18cn/Ko m/dGZwxJfaINzWlQey1smr9FL9FgDBIt0DG+TOKpsOSJYYKtHDzhxNVHCr+mH78q+9ZW m6YQ== X-Gm-Message-State: AOAM530aCLkjizww0p3JSsLEoFN0JOAak9FDa4Aauu3cU6YSrAbYTA5J x8F6oJzs6axf8Xm6r/i1JqV5+xAYVSk= X-Google-Smtp-Source: ABdhPJyab00gvmHdA7CMGuCyX5MAo2id5Wl1ojyKFCpT6vUjEjRytxYT5Xv726euE5SH5OFXxL/Dfg== X-Received: by 2002:a63:6802:: with SMTP id d2mr15266841pgc.226.1605842628945; Thu, 19 Nov 2020 19:23:48 -0800 (PST) Received: from PF2E8E0S-ATW.inc.bytedance.com ([61.120.150.72]) by smtp.gmail.com with ESMTPSA id t8sm1473003pfe.65.2020.11.19.19.23.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Nov 2020 19:23:48 -0800 (PST) From: leozhang To: ffmpeg-devel@ffmpeg.org Date: Fri, 20 Nov 2020 11:23:43 +0800 Message-Id: <20201120032343.1966-1-nowerzt@gmail.com> X-Mailer: git-send-email 2.28.0.windows.1 In-Reply-To: <20201118082407.1817-1-nowerzt@gmail.com> References: <20201118082407.1817-1-nowerzt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] 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" 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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c index 5e698d4cd0..61d7f36c79 100644 --- a/libavcodec/cuviddec.c +++ b/libavcodec/cuviddec.c @@ -673,15 +673,22 @@ 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; av_fifo_freep(&ctx->frame_queue); + ctx->cudl->cuCtxPushCurrent(cuda_ctx); + if (ctx->cuparser) ctx->cvdl->cuvidDestroyVideoParser(ctx->cuparser); if (ctx->cudecoder) ctx->cvdl->cuvidDestroyDecoder(ctx->cudecoder); + ctx->cudl->cuCtxPopCurrent(&dummy); + ctx->cudl = NULL; av_buffer_unref(&ctx->hwframe);