Commit 9b82e333 authored by Timo Rothenpieler's avatar Timo Rothenpieler

avutil/hwcontext_cuda: explicitly synchronize cuMemcpy calls

parent 880236e8
...@@ -258,13 +258,19 @@ static int cuda_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst, ...@@ -258,13 +258,19 @@ static int cuda_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst,
.Height = src->height >> (i ? priv->shift_height : 0), .Height = src->height >> (i ? priv->shift_height : 0),
}; };
err = cu->cuMemcpy2D(&cpy); err = cu->cuMemcpy2DAsync(&cpy, device_hwctx->stream);
if (err != CUDA_SUCCESS) { 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 from the CUDA frame\n");
return AVERROR_UNKNOWN; 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); cu->cuCtxPopCurrent(&dummy);
return 0; return 0;
...@@ -297,13 +303,19 @@ static int cuda_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, ...@@ -297,13 +303,19 @@ static int cuda_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
.Height = src->height >> (i ? priv->shift_height : 0), .Height = src->height >> (i ? priv->shift_height : 0),
}; };
err = cu->cuMemcpy2D(&cpy); err = cu->cuMemcpy2DAsync(&cpy, device_hwctx->stream);
if (err != CUDA_SUCCESS) { 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; 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); cu->cuCtxPopCurrent(&dummy);
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment