diff --git a/build.sh b/build.sh index cec4eef..b5e154c 100644 --- a/build.sh +++ b/build.sh @@ -1,5 +1,5 @@ g++ -shared -fPIC \ - -I/usr/include/python3.10 -I./include \ + -I/usr/include/python3.10 -I/usr/include/python3.10/numpy -I./include \ -L./lib \ rtc_plugins.cpp util/RTCContext.cpp \ -lMRTCEngine -lboost_python310 -lpython3.10 \ diff --git a/rtc_plugins.cpp b/rtc_plugins.cpp index 2ae7bb6..abddff5 100644 --- a/rtc_plugins.cpp +++ b/rtc_plugins.cpp @@ -30,9 +30,9 @@ int initSend(const char* destRoomId, const int16_t destChannelIndex) { return -1; } } -int sendCustomAudioData(const int16_t channelIndex, void* customData, int32_t sampleRate, uint64_t channelNum, +int sendCustomAudioData(const int16_t destChannelIndex, void* customData, int32_t sampleRate, uint64_t channelNum, uint64_t dataLen) { - return RTCContext::instance().sendCustomAudioData(channelIndex, customData, sampleRate, channelNum, dataLen); + return RTCContext::instance().sendCustomAudioData(destChannelIndex, customData, sampleRate, channelNum, dataLen); } BOOST_PYTHON_MODULE(rtc_plugins) { diff --git a/test_recv.py b/test_recv.py new file mode 100644 index 0000000..e69de29 diff --git a/test_send.py b/test_send.py new file mode 100644 index 0000000..c147ff7 --- /dev/null +++ b/test_send.py @@ -0,0 +1,27 @@ +import rtc_plugins +import time + +srcUserId = "srcUser1" +destUserId = "destUser1" + +srcDisplayName = "srcDisplayName1" +destDisplayName = "destDisplayName1" +srcRoomId = "srcRoom1" +destRoomId = "destRoomId1" +srcChannelIndex = 42 +destChannelIndex = 43 +def my_callback(npData, dataCount, sampleRate, numChannels, channelIndex): + print(f"dataCount:{dataCount}, sampleRate:{sampleRate}, numChannels:{numChannels}, channelIndex:{channelIndex}") +ret = rtc_plugins.init(srcUserId, srcDisplayName, srcRoomId, my_callback) +if ret != 0: + print(f"init fail, ret:{ret}") + exit(1) +ret = rtc_plugins.initSend(destRoomId, destChannelIndex) +if ret != 0: + print(f"initSend fail, ret:{ret}") + exit(1) +while True: + ret = rtc_plugins.sendCustomAudioData(destChannelIndex, "aaaaa", 48000, 1, 10) + if ret != 0: + print(f"send fail, ret:{ret}") + time.sleep(3) diff --git a/util/RTCContext.cpp b/util/RTCContext.cpp index daf8074..c340769 100644 --- a/util/RTCContext.cpp +++ b/util/RTCContext.cpp @@ -43,7 +43,9 @@ void RTCContext::onAudioProcess(const char* roomId, const char* peerId, std::cout << "dataCount:" << audioFrame.dataCount << audioSourceType; if (!py_callback_.is_none()) { std::cout << "python callback" << std::endl; - py_callback_(audioFrame.data, audioFrame.dataCount, audioFrame.sampleRate, audioFrame.numChannels, + npy_intp dims[1] = {audioFrame.dataCount}; + PyObject* pyArray = PyArray_SimpleNewFromData(1, dims, NPY_INT16, audioFrame.data); + py_callback_(py::handle<>(pyArray), audioFrame.dataCount, audioFrame.sampleRate, audioFrame.numChannels, audioFrame.channelIndex); } //sendAudioData(audioFrame.channelIndex, audioFrame.data, audioFrame.sampleRate, audioFrame.numChannels, diff --git a/util/RTCContext.h b/util/RTCContext.h index 7c6b71a..7f7f041 100644 --- a/util/RTCContext.h +++ b/util/RTCContext.h @@ -7,6 +7,7 @@ #include #include #include +#include namespace fs = std::filesystem; #define ENV_PRODUCT //#define SEND_MODE