Encoding 如何将GPU设备ID传递给NVENC
我们使用的库与NVIDIA提供的示例大致相似。但是,这些示例是针对单个GPU场景设计的 在我们的服务器上,我们有8个开普勒K10 GPU,我们希望传递一个参数作为设备ID作为输入,然后将其传递给库中的NVENC API。有办法吗 以下是init函数:Encoding 如何将GPU设备ID传递给NVENC,encoding,gpu,nvidia,Encoding,Gpu,Nvidia,我们使用的库与NVIDIA提供的示例大致相似。但是,这些示例是针对单个GPU场景设计的 在我们的服务器上,我们有8个开普勒K10 GPU,我们希望传递一个参数作为设备ID作为输入,然后将其传递给库中的NVENC API。有办法吗 以下是init函数: static av_cold int NVENC_init(AVCodecContext *avctx) { NVENCContext *x4 = avctx->priv_data; x4->p_nv
static av_cold int NVENC_init(AVCodecContext *avctx)
{
NVENCContext *x4 = avctx->priv_data;
x4->p_nv264IntefaceCtxt = (nv264InterfaceCtxt *)av_malloc(sizeof(nv264InterfaceCtxt));
x4->p_nv264IntefaceCtxt->width = avctx->width;
x4->p_nv264IntefaceCtxt->height = avctx->height;
if (avctx->bit_rate) {
x4->p_nv264IntefaceCtxt->avgBitRate = avctx->bit_rate;
}else
{
x4->p_nv264IntefaceCtxt->avgBitRate = 128000;
}
x4->p_nv264IntefaceCtxt->peakBitRate = 1.1*(x4->p_nv264IntefaceCtxt->avgBitRate);
if (avctx->gop_size >= 0)
{
x4->p_nv264IntefaceCtxt->gopLength = avctx->gop_size;
}
else
{
x4->p_nv264IntefaceCtxt->gopLength = 30;
}
x4->p_nv264IntefaceCtxt->frameRateNum = x4->frameRateNum ;
x4->p_nv264IntefaceCtxt->frameRateDen = x4->frameRateDen;
x4->p_nv264IntefaceCtxt->rc_mode = x4->rc_mode;
x4->p_nv264IntefaceCtxt->idr_period = x4->p_nv264IntefaceCtxt->gopLength;
x4->p_nv264IntefaceCtxt->insertSEIMessage = x4->insertSEIMessage;
x4->p_nv264IntefaceCtxt->cabacenable = x4->cabacenable;
x4->p_nv264IntefaceCtxt->profile = x4->profile;
x4->p_nv264IntefaceCtxt->gpu_number = x4->gpu_number;
x4->opStreamBufAllocSize = (avctx->width) * (avctx->height);
x4->p_opStream = (unsigned char *)malloc(x4->opStreamBufAllocSize*sizeof(unsigned char));
if(NULL == x4->p_opStream)
{
return -1;
}
if(0 != nv264Enc_Init(x4->p_nv264IntefaceCtxt))
{
return -1;
}
// copy the extradate to appropriate structure
if ((avctx->flags & CODEC_FLAG_GLOBAL_HEADER) && (x4->p_nv264IntefaceCtxt->spsSize > 0)) {
uint8_t *p;
avctx->extradata = p = av_malloc(x4->p_nv264IntefaceCtxt->spsSize);
memcpy(p,x4->p_nv264IntefaceCtxt->spsbuffer,x4->p_nv264IntefaceCtxt->spsSize);
avctx->extradata_size = x4->p_nv264IntefaceCtxt->spsSize;
}
return 0;
}
检查NV264 ENC_Init(x4->p_NV264 INTEFACECTXT))函数
您的答案在此函数中。:) 我建议你在这里加上CUDA以外的标签。@RobertCrovella我们需要一个标签“nvenc”,我想这是不存在的。