--- libavutil/hwcontext_cuda.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/libavutil/hwcontext_cuda.c b/libavutil/hwcontext_cuda.c index 8024eec79d..7f55881ba5 100644 --- a/libavutil/hwcontext_cuda.c +++ b/libavutil/hwcontext_cuda.c @@ -267,13 +267,19 @@ static int cuda_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst, .Height = src->height >> (i ? priv->shift_height : 0), }; - err = cu->cuMemcpy2D(&cpy); + err = cu->cuMemcpy2DAsync(&cpy, device_hwctx->stream); if (err != CUDA_SUCCESS) { av_log(ctx, AV_LOG_ERROR, "Error transferring the data from the CUDA frame\n"); return AVERROR_UNKNOWN; } } + err = cu->cuStreamSynchronize(device_hwctx->stream); + if (err != CUDA_SUCCESS) { + av_log(ctx, AV_LOG_ERROR, "Error synchronizing CUDA stream\n"); + return AVERROR_UNKNOWN; + } + cu->cuCtxPopCurrent(&dummy); return 0; @@ -306,13 +312,19 @@ static int cuda_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, .Height = src->height >> (i ? priv->shift_height : 0), }; - err = cu->cuMemcpy2D(&cpy); + err = cu->cuMemcpy2DAsync(&cpy, device_hwctx->stream); if (err != CUDA_SUCCESS) { - av_log(ctx, AV_LOG_ERROR, "Error transferring the data from the CUDA frame\n"); + av_log(ctx, AV_LOG_ERROR, "Error transferring the data to the CUDA frame\n"); return AVERROR_UNKNOWN; } } + err = cu->cuStreamSynchronize(device_hwctx->stream); + if (err != CUDA_SUCCESS) { + av_log(ctx, AV_LOG_ERROR, "Error synchronizing CUDA stream\n"); + return AVERROR_UNKNOWN; + } + cu->cuCtxPopCurrent(&dummy); return 0; -- 2.17.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel