| 382 | obs_source *obs_source, obs_source_frame *obs_video_frame); |
| 383 | |
| 384 | void *ndi_source_thread(void *data) |
| 385 | { |
| 386 | auto s = (ndi_source_t *)data; |
| 387 | auto obs_source_name = obs_source_get_name(s->obs_source); |
| 388 | obs_log(LOG_DEBUG, "'%s' +ndi_source_thread(…)", obs_source_name); |
| 389 | |
| 390 | auto config = Config::Current(); |
| 391 | ptz_t ptz; |
| 392 | NDIlib_tally_t tally; |
| 393 | |
| 394 | obs_source_audio obs_audio_frame = {}; |
| 395 | obs_source_frame obs_video_frame = {}; |
| 396 | |
| 397 | NDIlib_recv_create_v3_t recv_desc; |
| 398 | recv_desc.allow_video_fields = true; |
| 399 | |
| 400 | NDIlib_recv_instance_t ndi_receiver = nullptr; |
| 401 | NDIlib_video_frame_v2_t video_frame; |
| 402 | |
| 403 | NDIlib_metadata_frame_t metadata_frame; |
| 404 | NDIlib_framesync_instance_t ndi_frame_sync = nullptr; |
| 405 | NDIlib_audio_frame_v3_t audio_frame; |
| 406 | NDIlib_frame_type_e frame_received = NDIlib_frame_type_none; |
| 407 | |
| 408 | int64_t timestamp_audio = 0; |
| 409 | int64_t timestamp_video = 0; |
| 410 | |
| 411 | // |
| 412 | // Main NDI receiver loop: BEGIN |
| 413 | // |
| 414 | while (s->running) { |
| 415 | // |
| 416 | // reset_ndi_receiver: BEGIN |
| 417 | // |
| 418 | if (s->config.reset_ndi_receiver) { |
| 419 | s->config.reset_ndi_receiver = false; |
| 420 | |
| 421 | // If config.ndi_receiver_name changed, then so did obs_source_name |
| 422 | obs_source_name = obs_source_get_name(s->obs_source); |
| 423 | |
| 424 | // |
| 425 | // Update recv_desc.p_ndi_recv_name |
| 426 | // |
| 427 | recv_desc.p_ndi_recv_name = s->config.ndi_receiver_name; |
| 428 | obs_log(LOG_DEBUG, |
| 429 | "'%s' ndi_source_thread: reset_ndi_receiver; Setting recv_desc.p_ndi_recv_name='%s'", |
| 430 | obs_source_name, // |
| 431 | recv_desc.p_ndi_recv_name); |
| 432 | |
| 433 | // |
| 434 | // Update recv_desc.source_to_connect_to.p_ndi_name |
| 435 | // |
| 436 | recv_desc.source_to_connect_to.p_ndi_name = s->config.ndi_source_name; |
| 437 | obs_log(LOG_DEBUG, |
| 438 | "'%s' ndi_source_thread: reset_ndi_receiver; Setting recv_desc.source_to_connect_to.p_ndi_name='%s'", |
| 439 | obs_source_name, // |
| 440 | recv_desc.source_to_connect_to.p_ndi_name); |
| 441 |
nothing calls this directly
no test coverage detected