<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
  <meta name="Generator" content="Kopano WebApp v8.6.80">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title></title>
</head>
<body>
<!-- begin sanitized html -->
<div class="bodyclass">
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">Hello,</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><br /></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">I am trying to create a program that does the following:<br /></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">1. decode frames with cuvid</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">2. run CUDA kernels on the decoded frames</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">3. encode result with nvenc</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><br /></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">In order to do step 2, I need the CUDA kernels to access the decoded frame which should be stored in the GPU memory.</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">For this I think I need to provide the CUDA CUcontext to ffmpeg and give the pointer to the decoded frame to the kernel.</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">I could not find any documentation about this topic.<br /></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">In the ffmpeg docs I see the AVCodecContext has hw_device_ctx which is a </span><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;">AVHWDeviceContext.</span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">AVHWDeviceContext has a hwctx field which can be a AVCUDADeviceContext.</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">AVCUDADeviceContext has a cuda_ctx field which is a CUcontext.</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;"><br /></span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">So I think I need to create a AVHWDeviceContext and set it on the </span></span><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">AVCodecContext before calling avcodec_open2.</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">Are my assumptions right?</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">And how can I create a AVHWDeviceContext with the correct hwctx?</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;"><br /></span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">Thanks,</span></span></p>
<p style="padding: 0; margin: 0;"><span style="font-size: 10pt; font-family: tahoma, arial, helvetica, sans-serif;"><span style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 13.3333px;">Joep</span></span></p>
</div>
<!-- end sanitized html -->
</body>
</html>