avutil/hwcontext_cuda: explicitly synchronize cuMemcpy calls
This commit is contained in:
parent
880236e898
commit
9b82e333b7
1 changed files with 15 additions and 3 deletions
|
@ -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,
|
||||||
.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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue