diff --git a/src/call.cpp b/src/call.cpp index 9c12952c312483f5c78cd6107b6949b3cd3892af..c036d56c7c32e5377f120a1dcbdec4557df4c627 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -643,12 +643,30 @@ Call::setConferenceInfo(const std::string& msg) Json::CharReaderBuilder rbuilder; auto reader = std::unique_ptr<Json::CharReader>(rbuilder.newCharReader()); if (reader->parse(msg.data(), msg.data() + msg.size(), &json, &err)) { - for (const auto& participantInfo : json) { - ParticipantInfo pInfo; - if (!participantInfo.isMember("uri")) - continue; - pInfo.fromJson(participantInfo); - newInfo.emplace_back(pInfo); + if (json.isObject()) { + // new confInfo + if (json.isMember("p")) { + for (const auto& participantInfo : json["p"]) { + ParticipantInfo pInfo; + if (!participantInfo.isMember("uri")) + continue; + pInfo.fromJson(participantInfo); + newInfo.emplace_back(pInfo); + } + } + if (json.isMember("w")) + newInfo.w = json["w"].asInt(); + if (json.isMember("h")) + newInfo.h = json["h"].asInt(); + } else { + // old confInfo + for (const auto& participantInfo : json) { + ParticipantInfo pInfo; + if (!participantInfo.isMember("uri")) + continue; + pInfo.fromJson(participantInfo); + newInfo.emplace_back(pInfo); + } } } diff --git a/src/conference.h b/src/conference.h index 1f84e3e418e4a6815284c1551e52880f9abffc6d..61aaefcede3d5558ee897de170d3471fd3dd0d5d 100644 --- a/src/conference.h +++ b/src/conference.h @@ -111,6 +111,8 @@ struct ParticipantInfo struct ConfInfo : public std::vector<ParticipantInfo> { std::vector<std::map<std::string, std::string>> toVectorMapStringString() const; + int h {0}; + int w {0}; }; using ParticipantSet = std::set<std::string>;