This commit is contained in:
wangjiyu 2025-05-03 23:32:21 +08:00
parent a4713448d7
commit 6e6e7f4337
1 changed files with 26 additions and 5 deletions

View File

@ -66,11 +66,32 @@ int16_t getDataCount() {
PYBIND11_MODULE(rtc_plugins, m) {
// 可选:暴露 RetAudioFrame 类(需额外绑定)
py::class_<RetAudioFrame>(m, "RetAudioFrame")
.def_readwrite("data", &RetAudioFrame::data)
.def_readwrite("dataCount", &RetAudioFrame::dataCount)
.def_readwrite("sampleRate", &RetAudioFrame::sampleRate)
.def_readwrite("numChannels", &RetAudioFrame::numChannels)
.def_readwrite("channelIndex", &RetAudioFrame::channelIndex);
// 定义 data 属性(包含 getter 和 setter
.def_property("data",
// Getter返回 NumPy 数组
[](RetAudioFrame& self) {
return py::array_t<short>(
{self.dataCount}, // 数组形状
{sizeof(short)}, // 步长
self.data.get() // 数据指针(原始内存)
);
},
// Setter从 NumPy 数组复制数据
[](RetAudioFrame& self, py::array_t<short> arr) {
auto buf = arr.request(); // 获取数组信息
self.data.reset(new short[buf.size]); // 重新分配内存
std::memcpy(
self.data.get(), // 目标指针
buf.ptr, // 源数据指针
buf.size * sizeof(short) // 数据大小
);
self.dataCount = buf.size; // 更新数据长度
}
)
.def_readwrite("dataCount", &RetAudioFrame::dataCount)
.def_readwrite("sampleRate", &RetAudioFrame::sampleRate)
.def_readwrite("numChannels", &RetAudioFrame::numChannels)
.def_readwrite("channelIndex", &RetAudioFrame::channelIndex);
m.def("init", &init);
m.def("initRecv", &initRecv);
m.def("initSend", &initSend);