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