Update ndi recv

This commit is contained in:
Naoto Kondo
2020-04-25 03:19:04 +09:00
parent 2c05259944
commit 3f2e0b150b

View File

@@ -276,78 +276,63 @@ PYBIND11_MODULE(NDIlib, m) {
py::arg("instance"), py::arg("timeout_in_ms")); py::arg("instance"), py::arg("timeout_in_ms"));
// Processing.NDI.Recv // Processing.NDI.Recv
enum RecvBandwidth { py::enum_<NDIlib_recv_bandwidth_e>(m, "RecvBandwidth", py::arithmetic())
RECV_BANDWIDTH_METADATA_ONLY = NDIlib_recv_bandwidth_metadata_only,
RECV_BANDWIDTH_AUDIO_ONLY = NDIlib_recv_bandwidth_audio_only,
RECV_BANDWIDTH_LOWEST = NDIlib_recv_bandwidth_lowest,
RECV_BANDWIDTH_HIGHEST = NDIlib_recv_bandwidth_highest
};
py::enum_<RecvBandwidth>(m, "RecvBandwidth", py::arithmetic())
.value("RECV_BANDWIDTH_METADATA_ONLY", .value("RECV_BANDWIDTH_METADATA_ONLY",
RecvBandwidth::RECV_BANDWIDTH_METADATA_ONLY) NDIlib_recv_bandwidth_metadata_only)
.value("RECV_BANDWIDTH_AUDIO_ONLY", .value("RECV_BANDWIDTH_AUDIO_ONLY", NDIlib_recv_bandwidth_audio_only)
RecvBandwidth::RECV_BANDWIDTH_AUDIO_ONLY) .value("RECV_BANDWIDTH_LOWEST", NDIlib_recv_bandwidth_lowest)
.value("RECV_BANDWIDTH_LOWEST", RecvBandwidth::RECV_BANDWIDTH_LOWEST) .value("RECV_BANDWIDTH_HIGHEST", NDIlib_recv_bandwidth_highest)
.value("RECV_BANDWIDTH_HIGHEST", RecvBandwidth::RECV_BANDWIDTH_HIGHEST) .value("RECV_BANDWIDTH_MAX", NDIlib_recv_bandwidth_max)
.export_values(); .export_values();
enum RecvColorFormat { py::enum_<NDIlib_recv_color_format_e>(m, "RecvColorFormat", py::arithmetic())
RECV_COLOR_FORMAT_BGRX_BGRA = NDIlib_recv_color_format_BGRX_BGRA, .value("RECV_COLOR_FORMAT_BGRX_BGRA", NDIlib_recv_color_format_BGRX_BGRA)
RECV_COLOR_FORMAT_UYVY_BGRA = NDIlib_recv_color_format_UYVY_BGRA, .value("RECV_COLOR_FORMAT_UYVY_BGRA", NDIlib_recv_color_format_UYVY_BGRA)
RECV_COLOR_FORMAT_RGBX_RGBA = NDIlib_recv_color_format_RGBX_RGBA, .value("RECV_COLOR_FORMAT_RGBX_RGBA", NDIlib_recv_color_format_RGBX_RGBA)
RECV_COLOR_FORMAT_UYVY_RGBA = NDIlib_recv_color_format_UYVY_RGBA, .value("RECV_COLOR_FORMAT_UYVY_RGBA", NDIlib_recv_color_format_UYVY_RGBA)
#ifdef _WIN32 .value("RECV_COLOR_FORMAT_FASTEST", NDIlib_recv_color_format_fastest)
RECV_COLOR_FORMAT_BGRX_BGRA_FLIPPED = .value("RECV_COLOR_FORMAT_BEST", NDIlib_recv_color_format_best)
NDIlib_recv_color_format_BGRX_BGRA_flipped, .value("RECV_COLOR_FORMAT_E_BGRX_BGRA",
#endif NDIlib_recv_color_format_e_BGRX_BGRA)
RECV_COLOR_FORMAT_FASTEST = NDIlib_recv_color_format_fastest, .value("RECV_COLOR_FORMAT_E_UYVY_BGRA",
RECV_COLOR_FORMAT_E_BGRX_BGRA = NDIlib_recv_color_format_e_BGRX_BGRA, NDIlib_recv_color_format_e_UYVY_BGRA)
RECV_COLOR_FORMAT_E_UYVY_BGRA = NDIlib_recv_color_format_e_UYVY_BGRA, .value("RECV_COLOR_FORMAT_E_RGBX_RGBA",
RECV_COLOR_FORMAT_E_RGBX_RGBA = NDIlib_recv_color_format_e_RGBX_RGBA, NDIlib_recv_color_format_e_RGBX_RGBA)
RECV_COLOR_FORMAT_E_UYVY_RGBA = NDIlib_recv_color_format_e_UYVY_RGBA .value("RECV_COLOR_FORMAT_E_UYVY_RGBA",
}; NDIlib_recv_color_format_e_UYVY_RGBA)
py::enum_<RecvColorFormat>(m, "RecvColorFormat", py::arithmetic())
.value("RECV_COLOR_FORMAT_BGRX_BGRA",
RecvColorFormat::RECV_COLOR_FORMAT_BGRX_BGRA)
.value("RECV_COLOR_FORMAT_UYVY_BGRA",
RecvColorFormat::RECV_COLOR_FORMAT_UYVY_BGRA)
.value("RECV_COLOR_FORMAT_RGBX_RGBA",
RecvColorFormat::RECV_COLOR_FORMAT_RGBX_RGBA)
.value("RECV_COLOR_FORMAT_UYVY_RGBA",
RecvColorFormat::RECV_COLOR_FORMAT_UYVY_RGBA)
#ifdef _WIN32 #ifdef _WIN32
.value("RECV_COLOR_FORMAT_BGRX_BGRA_FLIPPED", .value("RECV_COLOR_FORMAT_BGRX_BGRA_FLIPPED",
RecvColorFormat::RECV_COLOR_FORMAT_BGRX_BGRA_FLIPPED) 1000 + NDIlib_recv_color_format_BGRX_BGRA)
#endif #endif
.value("RECV_COLOR_FORMAT_FASTEST", .value("RECV_COLOR_FORMAT_MAX", NDIlib_recv_color_format_max)
RecvColorFormat::RECV_COLOR_FORMAT_FASTEST)
.value("RECV_COLOR_FORMAT_E_BGRX_BGRA",
RecvColorFormat::RECV_COLOR_FORMAT_E_BGRX_BGRA)
.value("RECV_COLOR_FORMAT_E_UYVY_BGRA",
RecvColorFormat::RECV_COLOR_FORMAT_E_UYVY_BGRA)
.value("RECV_COLOR_FORMAT_E_RGBX_RGBA",
RecvColorFormat::RECV_COLOR_FORMAT_E_RGBX_RGBA)
.value("RECV_COLOR_FORMAT_E_UYVY_RGBA",
RecvColorFormat::RECV_COLOR_FORMAT_E_UYVY_RGBA)
.export_values(); .export_values();
py::class_<NDIlib_recv_create_v3_t>(m, "RecvCreateV3") py::class_<NDIlib_recv_create_v3_t>(m, "RecvCreateV3")
.def(py::init<const NDIlib_source_t, NDIlib_recv_color_format_e, .def(py::init<const NDIlib_source_t, NDIlib_recv_color_format_e,
NDIlib_recv_bandwidth_e, bool, const char *>(), NDIlib_recv_bandwidth_e, bool, const char *>(),
py::arg("source_to_connect_to") = NDIlib_source_t(), py::arg("source_to_connect_to") = NDIlib_source_t(),
py::arg("color_format") = RECV_COLOR_FORMAT_UYVY_BGRA, py::arg("color_format") = NDIlib_recv_color_format_UYVY_BGRA,
py::arg("bandwidth") = RECV_BANDWIDTH_HIGHEST, py::arg("bandwidth") = NDIlib_recv_bandwidth_highest,
py::arg("allow_video_fields") = true, py::arg("ndi_name") = nullptr) py::arg("allow_video_fields") = true,
py::arg("p_ndi_recv_name") = nullptr)
.def_readwrite("source_to_connect_to", .def_readwrite("source_to_connect_to",
&NDIlib_recv_create_v3_t::source_to_connect_to) &NDIlib_recv_create_v3_t::source_to_connect_to)
.def_readwrite("color_format", &NDIlib_recv_create_v3_t::color_format) .def_readwrite("color_format", &NDIlib_recv_create_v3_t::color_format)
.def_readwrite("bandwidth", &NDIlib_recv_create_v3_t::bandwidth) .def_readwrite("bandwidth", &NDIlib_recv_create_v3_t::bandwidth)
.def_readwrite("allow_video_fields", .def_readwrite("allow_video_fields",
&NDIlib_recv_create_v3_t::allow_video_fields) &NDIlib_recv_create_v3_t::allow_video_fields)
.def_readwrite("ndi_recv_name", .def_property(
&NDIlib_recv_create_v3_t::p_ndi_recv_name); "ndi_recv_name",
[](const NDIlib_recv_create_v3_t &self) {
auto ustr = PyUnicode_DecodeLocale(self.p_ndi_recv_name, nullptr);
return py::reinterpret_steal<py::str>(ustr);
},
[](NDIlib_recv_create_v3_t &self, const std::string &ndi_recv_name) {
static std::unordered_map<NDIlib_recv_create_v3_t *, std::string>
strs;
strs[&self] = py::str(ndi_recv_name);
self.p_ndi_recv_name = strs[&self].c_str();
});
py::class_<NDIlib_recv_performance_t>(m, "RecvPerformance") py::class_<NDIlib_recv_performance_t>(m, "RecvPerformance")
.def(py::init<>()) .def(py::init<>())
@@ -374,12 +359,19 @@ PYBIND11_MODULE(NDIlib, m) {
py::arg("video_data"), py::arg("audio_data"), py::arg("metadata"), py::arg("video_data"), py::arg("audio_data"), py::arg("metadata"),
py::arg("timeout_in_ms")); py::arg("timeout_in_ms"));
m.def("recv_capture_v3", &NDIlib_recv_capture_v3, py::arg("instance"),
py::arg("video_data"), py::arg("audio_data"), py::arg("metadata"),
py::arg("timeout_in_ms"));
m.def("recv_free_video_v2", &NDIlib_recv_free_video_v2, py::arg("instance"), m.def("recv_free_video_v2", &NDIlib_recv_free_video_v2, py::arg("instance"),
py::arg("video_data")); py::arg("video_data"));
m.def("recv_free_audio_v2", &NDIlib_recv_free_audio_v2, py::arg("instance"), m.def("recv_free_audio_v2", &NDIlib_recv_free_audio_v2, py::arg("instance"),
py::arg("audio_data")); py::arg("audio_data"));
m.def("recv_free_audio_v3", &NDIlib_recv_free_audio_v3, py::arg("instance"),
py::arg("audio_data"));
m.def("recv_free_metadata", &NDIlib_recv_free_metadata, py::arg("instance"), m.def("recv_free_metadata", &NDIlib_recv_free_metadata, py::arg("instance"),
py::arg("metadata")); py::arg("metadata"));