This commit is contained in:
wangjiyu 2025-04-16 19:07:53 +08:00
parent ad48b2e55a
commit 3157894c1a
4 changed files with 29 additions and 8 deletions

View File

@ -51,9 +51,13 @@ int getSize() {
return RTCContext::instance().getSize();
}
namespace bp = boost::python;
namespace np = boost::python::numpy;
np::ndarray getNumpydata() {
return RTCContext::instance().getNumpydata();
np::ndarray getNumpyData() {
return RTCContext::instance().getNumpyData();
}
bp::bytes getByteData() {
return RTCContext::instance().getByteData();
}
int16_t getDataCount() {
return RTCContext::instance().getDataCount();
@ -211,7 +215,8 @@ BOOST_PYTHON_MODULE(rtc_plugins) {
py::def("sendCustomAudioData", &sendCustomAudioData);
py::def("getSize", &getSize);
py::def("getData", &getData);
py::def("getNumpyData", &getNumpydata);
py::def("getNumpyData", &getNumpyData);
py::def("getByteData", &getByteData);
py::def("getDataCount", &getDataCount);
} catch (...) {
PyErr_SetString(PyExc_RuntimeError, "Module initialization failed");

View File

@ -4,6 +4,7 @@ import numpy as np
import mmap
import os
from ctypes import c_int16
import struct
srcUserId = "srcUser12"
destUserId = "destUser12"
@ -43,8 +44,12 @@ while True:
print("resend succ")
size = rtc_plugins.getSize()
print(f"data size:{size}")
frame = rtc_plugins.getNumpyData()
print(f"frame:{frame}")
#frame = rtc_plugins.getNumpyData()
frame = rtc_plugins.getByteData()
print("get frame")
samples = struct.unpack(f"{len(data_bytes)//2}h", data_bytes)
#print(f"get samples:{samples}")
print("get samples")
dataCount = rtc_plugins.getDataCount()
print(f"data count:{dataCount}")
time.sleep(0.005)

View File

@ -701,7 +701,7 @@ RetAudioFrame RTCContext::getData() {
}
namespace bp = boost::python;
namespace np = boost::python::numpy;
np::ndarray RTCContext::getNumpydata() {
np::ndarray RTCContext::getNumpyData() {
std::cout << "step1" << std::endl;
std::lock_guard<std::mutex> lock(dataMutex_);
RetAudioFrame frame = getData();
@ -728,7 +728,17 @@ np::ndarray RTCContext::getNumpydata() {
return result;
}
bp::bytes RTCContext::getByteData() {
std::cout << "step1" << std::endl;
std::lock_guard<std::mutex> lock(dataMutex_);
RetAudioFrame frame = getData();
std::cout << "step2" << std::endl;
int16_t* data_ptr = frame.data.get(); // 你的数据指针
std::cout << "step3" << std::endl;
size_t length = frame.dataCount; // 数据长度
std::cout << "step4" << std::endl;
return bp::bytes(reinterpret_cast<char*>(data_ptr), length * sizeof(int16_t));
}
int16_t RTCContext::getDataCount() {
std::lock_guard<std::mutex> lock(dataMutex_);
RetAudioFrame frame = getData();

View File

@ -99,7 +99,8 @@ public:
int16_t getSize();
void setData(const mrtc::MRTCAudioFrame& frame);
RetAudioFrame getData();
np::ndarray getNumpydata();
np::ndarray getNumpyData();
bp::bytes getByteData();
int16_t getDataCount();
void* getpData() const;