diff --git a/build.sh b/build.sh index 37c12a7..0c87326 100644 --- a/build.sh +++ b/build.sh @@ -1 +1 @@ -g++ -shared -fPIC -std=c++11 $(python3 -m pybind11 --includes) -I./include -L./lib -L/usr/lib/x86_64-linux-gnu -lMRTCEngine -lpython3.10 -Wl,-rpath='$ORIGIN/lib' -o rtc_plugins$(python3-config --extension-suffix) rtc_plugins.cpp util/RTCContext.cpp +g++ -shared -fPIC -std=c++17 $(python3 -m pybind11 --includes) -I./include -L./lib -L/usr/lib/x86_64-linux-gnu -lMRTCEngine -lpython3.10 -Wl,-rpath='$ORIGIN/lib' -o rtc_plugins$(python3-config --extension-suffix) rtc_plugins.cpp util/RTCContext.cpp diff --git a/rtc_plugins.cpp b/rtc_plugins.cpp index d084449..bf30eb0 100644 --- a/rtc_plugins.cpp +++ b/rtc_plugins.cpp @@ -1,26 +1,11 @@ -#define IMPLEMENT_NUMPY_API #include "util/RTCContext.h" #include #include // pybind11 的 NumPy 支持 -#include namespace py = pybind11; #include "util/RTCContext.h" -// 初始化 NumPy(适配 pybind11) -void init_numpy() { - if (import_array() < 0) { - throw py::bind_already_set(); // 自动捕获 NumPy 初始化错误 - } - std::cout << "NumPy API addr: " << PyArray_API << std::endl; -} - int init(const char* selfUserId, const char* selfDisplayName, const char* selfRoomId, py::object callback) { - if (!PyArray_API) { - std::cout << "PyArray_API is null in outer init" << std::endl; - } else { - std::cout << "PyArray_API is not null in outer init" << std::endl; - } RTCContext::instance().setPyCallback(callback); bool res = RTCContext::instance().init(selfUserId, selfDisplayName, selfRoomId); if (res) { @@ -30,11 +15,6 @@ int init(const char* selfUserId, const char* selfDisplayName, const char* selfRo } } int initRecv(const char* destRoomId, const char* srcUserId, const int16_t destChannelIndex) { - if (!PyArray_API) { - std::cout << "PyArray_API is null in outer initRecv" << std::endl; - } else { - std::cout << "PyArray_API is not null in outer initRecv" << std::endl; - } bool res = RTCContext::instance().initRecv(destRoomId, srcUserId, destChannelIndex); if (res) { return 0; @@ -84,7 +64,6 @@ int16_t getDataCount() { } PYBIND11_MODULE(rtc_plugins, m) { - init_numpy(); // 可选:暴露 RetAudioFrame 类(需额外绑定) py::class_(m, "RetAudioFrame") .def_readwrite("data", &RetAudioFrame::data) diff --git a/util/RTCContext.cpp b/util/RTCContext.cpp index 0a4b140..99adbac 100644 --- a/util/RTCContext.cpp +++ b/util/RTCContext.cpp @@ -258,7 +258,7 @@ RetAudioFrame RTCContext::getData() { } return {}; // 返回空对象 } -np::ndarray RTCContext::getNumpyData() { +py::array_t RTCContext::getNumpyData() { std::cout << "step1" << std::endl; std::lock_guard lock(dataMutex_); RetAudioFrame frame = getData();