据我所知,您不需要将设备显式传递给
av_hwdevice_ctx_create (
AVBufferRef ** device_ctx,
enum AVHWDeviceType type,
const char * device,
AVDictionary * opts,
int flags
)
可以为device_ctx
NULL,因为它是在这里创建的。你只需要知道你想要的类型。例如AV_HWDEVICE_TYPE_CUDA
。其余参数可以是 NULL 或 0。至少在hw_decode 示例中是这样:
static AVBufferRef *hw_device_ctx = NULL;
//...
static int hw_decoder_init(AVCodecContext *ctx, const enum AVHWDeviceType type)
{
int err = 0;
if ((err = av_hwdevice_ctx_create(&hw_device_ctx, type,
NULL, NULL, 0)) < 0) {
fprintf(stderr, "Failed to create specified HW device.\n");
return err;
}
ctx->hw_device_ctx = av_buffer_ref(hw_device_ctx);
return err;
}
(注意:我自己没有使用过该功能。我只是根据示例中的操作方式来回答。)