[feat] upgrade MiniRTC and expose source ID in data callbacks

This commit is contained in:
dijunkun
2025-12-23 00:53:47 +08:00
parent 832b820096
commit 4035e0dd13
4 changed files with 14 additions and 5 deletions

View File

@@ -202,14 +202,17 @@ class Render {
public: public:
static void OnReceiveVideoBufferCb(const XVideoFrame* video_frame, static void OnReceiveVideoBufferCb(const XVideoFrame* video_frame,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data); void* user_data);
static void OnReceiveAudioBufferCb(const char* data, size_t size, static void OnReceiveAudioBufferCb(const char* data, size_t size,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data); void* user_data);
static void OnReceiveDataBufferCb(const char* data, size_t size, static void OnReceiveDataBufferCb(const char* data, size_t size,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data); void* user_data);
static void OnSignalStatusCb(SignalStatus status, const char* user_id, static void OnSignalStatusCb(SignalStatus status, const char* user_id,

View File

@@ -216,6 +216,7 @@ void Render::SdlCaptureAudioOut([[maybe_unused]] void* userdata,
void Render::OnReceiveVideoBufferCb(const XVideoFrame* video_frame, void Render::OnReceiveVideoBufferCb(const XVideoFrame* video_frame,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data) { void* user_data) {
Render* render = (Render*)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
@@ -283,6 +284,7 @@ void Render::OnReceiveVideoBufferCb(const XVideoFrame* video_frame,
void Render::OnReceiveAudioBufferCb(const char* data, size_t size, void Render::OnReceiveAudioBufferCb(const char* data, size_t size,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data) { void* user_data) {
Render* render = (Render*)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
@@ -302,16 +304,19 @@ void Render::OnReceiveAudioBufferCb(const char* data, size_t size,
void Render::OnReceiveDataBufferCb(const char* data, size_t size, void Render::OnReceiveDataBufferCb(const char* data, size_t size,
const char* user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
const char* src_id, size_t src_id_size,
void* user_data) { void* user_data) {
Render* render = (Render*)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
// try to parse as file-transfer chunk first std::string source_id = std::string(src_id, src_id_size);
static FileReceiver receiver; LOG_ERROR("Receive from source [{}]", source_id);
if (receiver.OnData(data, size)) { if (source_id == "file") {
return; // try to parse as file-transfer chunk first
static FileReceiver receiver;
receiver.OnData(data, size);
} }
std::string json_str(data, size); std::string json_str(data, size);

View File

@@ -165,6 +165,7 @@ std::filesystem::path FileReceiver::GetDefaultDesktopPath() {
} }
bool FileReceiver::OnData(const char* data, size_t size) { bool FileReceiver::OnData(const char* data, size_t size) {
LOG_ERROR("FileReceiver::OnData: size={}", size);
if (!data || size < sizeof(FileChunkHeader)) { if (!data || size < sizeof(FileChunkHeader)) {
LOG_ERROR("FileReceiver::OnData: invalid buffer"); LOG_ERROR("FileReceiver::OnData: invalid buffer");
return false; return false;