Feature/ndi out node #2
@@ -81,10 +81,13 @@ class NDIInNode : public dmf::NodeBase {
|
|||||||
|
|
||||||
// --- main loop ---
|
// --- main loop ---
|
||||||
const mxlRational video_rate = {fps_num, fps_den};
|
const mxlRational video_rate = {fps_num, fps_den};
|
||||||
const mxlRational audio_rate = {sample_rate, 1};
|
|
||||||
|
|
||||||
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
||||||
uint64_t audio_index = has_audio ? mxlGetCurrentIndex(&audio_rate) : 0;
|
uint64_t audio_index = 0;
|
||||||
|
if (has_audio) {
|
||||||
|
const mxlRational audio_rate = {sample_rate, 1};
|
||||||
|
audio_index = mxlGetCurrentIndex(&audio_rate);
|
||||||
|
}
|
||||||
log("start video_index=%llu", video_index);
|
log("start video_index=%llu", video_index);
|
||||||
|
|
||||||
std::vector<uint8_t> latest_video(video_stride * height);
|
std::vector<uint8_t> latest_video(video_stride * height);
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ class NDIOutNode : public dmf::NodeBase {
|
|||||||
NDIlib_video_frame_v2_t p216_frame{};
|
NDIlib_video_frame_v2_t p216_frame{};
|
||||||
p216_frame.xres = width;
|
p216_frame.xres = width;
|
||||||
p216_frame.yres = height;
|
p216_frame.yres = height;
|
||||||
|
p216_frame.FourCC = NDIlib_FourCC_video_type_P216;
|
||||||
p216_frame.frame_rate_N = fps_num;
|
p216_frame.frame_rate_N = fps_num;
|
||||||
p216_frame.frame_rate_D = fps_den;
|
p216_frame.frame_rate_D = fps_den;
|
||||||
p216_frame.line_stride_in_bytes = width * static_cast<int>(sizeof(uint16_t));
|
p216_frame.line_stride_in_bytes = width * static_cast<int>(sizeof(uint16_t));
|
||||||
@@ -125,10 +126,13 @@ class NDIOutNode : public dmf::NodeBase {
|
|||||||
|
|
||||||
// --- main loop ---
|
// --- main loop ---
|
||||||
const mxlRational video_rate = {fps_num, fps_den};
|
const mxlRational video_rate = {fps_num, fps_den};
|
||||||
const mxlRational audio_rate = {sample_rate, 1};
|
|
||||||
|
|
||||||
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
||||||
uint64_t audio_index = has_audio ? mxlGetCurrentIndex(&audio_rate) : 0;
|
uint64_t audio_index = 0;
|
||||||
|
if (has_audio) {
|
||||||
|
const mxlRational audio_rate = {sample_rate, 1};
|
||||||
|
audio_index = mxlGetCurrentIndex(&audio_rate);
|
||||||
|
}
|
||||||
uint64_t frame_count = 0;
|
uint64_t frame_count = 0;
|
||||||
uint64_t invalid_count = 0;
|
uint64_t invalid_count = 0;
|
||||||
uint64_t late_count = 0;
|
uint64_t late_count = 0;
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ class TestPatternNode : public dmf::NodeBase {
|
|||||||
|
|
||||||
// --- main loop ---
|
// --- main loop ---
|
||||||
const mxlRational video_rate = {fps_num, fps_den};
|
const mxlRational video_rate = {fps_num, fps_den};
|
||||||
const mxlRational audio_rate = {sample_rate, 1};
|
|
||||||
const size_t samples_per_frame =
|
const size_t samples_per_frame =
|
||||||
static_cast<size_t>(sample_rate) * static_cast<size_t>(fps_den) / static_cast<size_t>(fps_num);
|
static_cast<size_t>(sample_rate) * static_cast<size_t>(fps_den) / static_cast<size_t>(fps_num);
|
||||||
|
|
||||||
@@ -73,7 +72,11 @@ class TestPatternNode : public dmf::NodeBase {
|
|||||||
const float amplitude = static_cast<float>(std::pow(10.0, -18.0 / 20.0));
|
const float amplitude = static_cast<float>(std::pow(10.0, -18.0 / 20.0));
|
||||||
|
|
||||||
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
uint64_t video_index = mxlGetCurrentIndex(&video_rate);
|
||||||
uint64_t audio_index = has_audio ? mxlGetCurrentIndex(&audio_rate) : 0;
|
uint64_t audio_index = 0;
|
||||||
|
if (has_audio) {
|
||||||
|
const mxlRational audio_rate = {sample_rate, 1};
|
||||||
|
audio_index = mxlGetCurrentIndex(&audio_rate);
|
||||||
|
}
|
||||||
log("start video_index=%llu", video_index);
|
log("start video_index=%llu", video_index);
|
||||||
|
|
||||||
while (dmf::g_running.load(std::memory_order_relaxed)) {
|
while (dmf::g_running.load(std::memory_order_relaxed)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user