summaryrefslogtreecommitdiff
path: root/libavcodec/nvdec.c
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2018-05-08 00:07:31 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2018-05-10 00:34:22 +0200
commit880236e898fdc2610a60b644b8d802bc299e4d71 (patch)
treefde8ed6beb483539430b22a0a86e64ae47b84e8a /libavcodec/nvdec.c
parentc85568342741e0e1b48fc36c780342de8ad29be7 (diff)
avcodec/nvdec: pass CUstream in vpp parameters
Diffstat (limited to 'libavcodec/nvdec.c')
-rw-r--r--libavcodec/nvdec.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/nvdec.c b/libavcodec/nvdec.c
index 502747adfd..e779be3a45 100644
--- a/libavcodec/nvdec.c
+++ b/libavcodec/nvdec.c
@@ -39,6 +39,7 @@ typedef struct NVDECDecoder {
AVBufferRef *hw_device_ref;
CUcontext cuda_ctx;
+ CUstream stream;
CudaFunctions *cudl;
CuvidFunctions *cvdl;
@@ -189,6 +190,7 @@ static int nvdec_decoder_create(AVBufferRef **out, AVBufferRef *hw_device_ref,
}
decoder->cuda_ctx = device_hwctx->cuda_ctx;
decoder->cudl = device_hwctx->internal->cuda_dl;
+ decoder->stream = device_hwctx->stream;
ret = cuvid_load_functions(&decoder->cvdl, logctx);
if (ret < 0) {
@@ -386,7 +388,7 @@ static int nvdec_retrieve_data(void *logctx, AVFrame *frame)
NVDECFrame *cf = (NVDECFrame*)fdd->hwaccel_priv;
NVDECDecoder *decoder = (NVDECDecoder*)cf->decoder_ref->data;
- CUVIDPROCPARAMS vpp = { .progressive_frame = 1 };
+ CUVIDPROCPARAMS vpp = { 0 };
NVDECFrame *unmap_data = NULL;
CUresult err;
@@ -397,6 +399,9 @@ static int nvdec_retrieve_data(void *logctx, AVFrame *frame)
unsigned int offset = 0;
int ret = 0;
+ vpp.progressive_frame = 1;
+ vpp.output_stream = decoder->stream;
+
err = decoder->cudl->cuCtxPushCurrent(decoder->cuda_ctx);
if (err != CUDA_SUCCESS)
return AVERROR_UNKNOWN;