From 8f30929cbe8fb84871abbb97f97b63f6b717b490 Mon Sep 17 00:00:00 2001 From: Naoto Kondo Date: Fri, 24 Apr 2020 11:26:09 +0900 Subject: [PATCH] Add MetadataFrame --- src/PyMetadataFrame.cpp | 18 ++++++++++++++++++ src/PyMetadataFrame.hpp | 15 +++++++++++++++ src/main.cpp | 12 +++++++----- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/PyMetadataFrame.cpp create mode 100644 src/PyMetadataFrame.hpp diff --git a/src/PyMetadataFrame.cpp b/src/PyMetadataFrame.cpp new file mode 100644 index 0000000..448508e --- /dev/null +++ b/src/PyMetadataFrame.cpp @@ -0,0 +1,18 @@ +#include "PyMetadataFrame.hpp" + +PyMetadataFrame::PyMetadataFrame(int length_, int64_t timecode_, + const std::string &data_) + : _data(data_) { + length = length_; + timecode = timecode_; + p_data = &_data[0]; +} + +PyMetadataFrame::~PyMetadataFrame() {} + +const std::string &PyMetadataFrame::getData() const { return _data; } + +void PyMetadataFrame::setData(const std::string &data) { + _data = data; + p_data = &_data[0]; +} diff --git a/src/PyMetadataFrame.hpp b/src/PyMetadataFrame.hpp new file mode 100644 index 0000000..3584404 --- /dev/null +++ b/src/PyMetadataFrame.hpp @@ -0,0 +1,15 @@ +#include + +#include + +class PyMetadataFrame : public NDIlib_metadata_frame_t { +public: + PyMetadataFrame(int length_, int64_t timecode_, const std::string &data_); + virtual ~PyMetadataFrame(); + + const std::string &getData() const; + void setData(const std::string &data); + +private: + std::string _data; +}; diff --git a/src/main.cpp b/src/main.cpp index b56f704..f089885 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ #include #include +#include "PyMetadataFrame.hpp" #include "PySource.hpp" #include "PyVideoFrame.hpp" @@ -148,13 +149,14 @@ PYBIND11_MODULE(NDIlib, m) { .def_readwrite("metadata", &NDIlib_audio_frame_v2_t::p_metadata) .def_readwrite("timestamp", &NDIlib_audio_frame_v2_t::timestamp); - py::class_(m, "MetadataFrame") - .def(py::init(), py::arg("length") = 0, + py::class_(m, "MetadataFrame") + .def(py::init(), py::arg("length") = 0, py::arg("timecode") = NDIlib_send_timecode_synthesize, py::arg("data") = nullptr) - .def_readwrite("length", &NDIlib_metadata_frame_t::length) - .def_readwrite("timecode", &NDIlib_metadata_frame_t::timecode) - .def_readwrite("data", &NDIlib_metadata_frame_t::p_data); + .def_readwrite("length", &PyMetadataFrame::length) + .def_readwrite("timecode", &PyMetadataFrame::timecode) + .def_property("data", &PyMetadataFrame::getData, + &PyMetadataFrame::setData); py::class_(m, "Tally") .def(py::init(), py::arg("on_program") = false,