diff --git a/src/gui/render.h b/src/gui/render.h index c677425..31f8da8 100644 --- a/src/gui/render.h +++ b/src/gui/render.h @@ -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, diff --git a/src/gui/render_callback.cpp b/src/gui/render_callback.cpp index 79cefdf..f73ac74 100644 --- a/src/gui/render_callback.cpp +++ b/src/gui/render_callback.cpp @@ -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); diff --git a/src/tools/file_transfer.cpp b/src/tools/file_transfer.cpp index f8638ce..104a4bc 100644 --- a/src/tools/file_transfer.cpp +++ b/src/tools/file_transfer.cpp @@ -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; diff --git a/submodules/minirtc b/submodules/minirtc index 04e1af6..bfc9b0c 160000 --- a/submodules/minirtc +++ b/submodules/minirtc @@ -1 +1 @@ -Subproject commit 04e1af6331f23b994fa4d753414b8c4002944300 +Subproject commit bfc9b0c9d4610f98255886fb05afcb2dbfc8b785