diff --git a/plugins/obs-ffmpeg/jim-nvenc.c b/plugins/obs-ffmpeg/jim-nvenc.c index cd572dfd2..2c3dbd1ee 100644 --- a/plugins/obs-ffmpeg/jim-nvenc.c +++ b/plugins/obs-ffmpeg/jim-nvenc.c @@ -253,8 +253,6 @@ static bool init_d3d11(struct nvenc_data *enc, obs_data_t *settings) ID3D11DeviceContext *context; HRESULT hr; - int gpu = (int)obs_data_get_int(settings, "gpu"); - if (!dxgi || !d3d11) { return false; } @@ -275,7 +273,7 @@ static bool init_d3d11(struct nvenc_data *enc, obs_data_t *settings) return false; } - hr = factory->lpVtbl->EnumAdapters(factory, gpu, &adapter); + hr = factory->lpVtbl->EnumAdapters(factory, 0, &adapter); factory->lpVtbl->Release(factory); if (FAILED(hr)) { error_hr("EnumAdapters failed"); @@ -320,7 +318,6 @@ static bool init_encoder(struct nvenc_data *enc, obs_data_t *settings) const char *profile = obs_data_get_string(settings, "profile"); bool psycho_aq = obs_data_get_bool(settings, "psycho_aq"); bool lookahead = obs_data_get_bool(settings, "lookahead"); - int gpu = (int)obs_data_get_int(settings, "gpu"); int bf = (int)obs_data_get_int(settings, "bf"); bool vbr = astrcmpi(rc, "VBR") == 0; NVENCSTATUS err; @@ -505,16 +502,14 @@ static bool init_encoder(struct nvenc_data *enc, obs_data_t *settings) "\t2-pass: %s\n" "\tb-frames: %d\n" "\tlookahead: %s\n" - "\tpsycho_aq: %s\n" - "\tGPU: %d\n", + "\tpsycho_aq: %s\n", rc, bitrate, cqp, gop_size, preset, profile, enc->cx, enc->cy, twopass ? "true" : "false", bf, lookahead ? "true" : "false", - psycho_aq ? "true" : "false", - gpu); + psycho_aq ? "true" : "false"); return true; } @@ -558,6 +553,13 @@ static void *nvenc_create(obs_data_t *settings, obs_encoder_t *encoder) enc->encoder = encoder; enc->first_packet = true; + /* this encoder requires shared textures, this cannot be used on a + * gpu other than the one OBS is currently running on. */ + int gpu = (int)obs_data_get_int(settings, "gpu"); + if (gpu != 0) { + goto fail; + } + if (!obs_nv12_tex_active()) { goto fail; }