1*f0687c8aSRaman Tenneti #include <pybind11/pybind11.h>
2*f0687c8aSRaman Tenneti #include <pybind11/stl.h>
3*f0687c8aSRaman Tenneti #include <kms++/kms++.h>
4*f0687c8aSRaman Tenneti #include <kms++util/kms++util.h>
5*f0687c8aSRaman Tenneti #include <kms++util/videodevice.h>
6*f0687c8aSRaman Tenneti
7*f0687c8aSRaman Tenneti namespace py = pybind11;
8*f0687c8aSRaman Tenneti
9*f0687c8aSRaman Tenneti using namespace kms;
10*f0687c8aSRaman Tenneti using namespace std;
11*f0687c8aSRaman Tenneti
init_pyvid(py::module & m)12*f0687c8aSRaman Tenneti void init_pyvid(py::module& m)
13*f0687c8aSRaman Tenneti {
14*f0687c8aSRaman Tenneti py::class_<VideoDevice>(m, "VideoDevice")
15*f0687c8aSRaman Tenneti .def(py::init<const string&>())
16*f0687c8aSRaman Tenneti .def_property_readonly("fd", &VideoDevice::fd)
17*f0687c8aSRaman Tenneti .def_property_readonly("has_capture", &VideoDevice::has_capture)
18*f0687c8aSRaman Tenneti .def_property_readonly("has_output", &VideoDevice::has_output)
19*f0687c8aSRaman Tenneti .def_property_readonly("has_m2m", &VideoDevice::has_m2m)
20*f0687c8aSRaman Tenneti .def_property_readonly("capture_streamer", &VideoDevice::get_capture_streamer)
21*f0687c8aSRaman Tenneti .def_property_readonly("output_streamer", &VideoDevice::get_output_streamer)
22*f0687c8aSRaman Tenneti .def_property_readonly("discrete_frame_sizes", &VideoDevice::get_discrete_frame_sizes)
23*f0687c8aSRaman Tenneti .def_property_readonly("frame_sizes", &VideoDevice::get_frame_sizes)
24*f0687c8aSRaman Tenneti .def("get_capture_devices", &VideoDevice::get_capture_devices);
25*f0687c8aSRaman Tenneti
26*f0687c8aSRaman Tenneti py::class_<VideoStreamer>(m, "VideoStreamer")
27*f0687c8aSRaman Tenneti .def_property_readonly("fd", &VideoStreamer::fd)
28*f0687c8aSRaman Tenneti .def_property_readonly("ports", &VideoStreamer::get_ports)
29*f0687c8aSRaman Tenneti .def("set_port", &VideoStreamer::set_port)
30*f0687c8aSRaman Tenneti .def_property_readonly("formats", &VideoStreamer::get_formats)
31*f0687c8aSRaman Tenneti .def("set_format", &VideoStreamer::set_format)
32*f0687c8aSRaman Tenneti .def("get_selection", [](VideoStreamer* self) {
33*f0687c8aSRaman Tenneti uint32_t left, top, width, height;
34*f0687c8aSRaman Tenneti self->get_selection(left, top, width, height);
35*f0687c8aSRaman Tenneti return make_tuple(left, top, width, height);
36*f0687c8aSRaman Tenneti })
37*f0687c8aSRaman Tenneti .def("set_selection", [](VideoStreamer* self, uint32_t left, uint32_t top, uint32_t width, uint32_t height) {
38*f0687c8aSRaman Tenneti self->set_selection(left, top, width, height);
39*f0687c8aSRaman Tenneti return make_tuple(left, top, width, height);
40*f0687c8aSRaman Tenneti })
41*f0687c8aSRaman Tenneti .def("set_queue_size", &VideoStreamer::set_queue_size)
42*f0687c8aSRaman Tenneti .def("queue", &VideoStreamer::queue)
43*f0687c8aSRaman Tenneti .def("dequeue", &VideoStreamer::dequeue)
44*f0687c8aSRaman Tenneti .def("stream_on", &VideoStreamer::stream_on)
45*f0687c8aSRaman Tenneti .def("stream_off", &VideoStreamer::stream_off);
46*f0687c8aSRaman Tenneti }
47