[feat] SSRC supported for RTP packets

This commit is contained in:
dijunkun
2024-12-09 17:08:22 +08:00
parent 2cb92ddd72
commit b29f3de868
2 changed files with 53 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
#include <cstddef>
#include <cstdint>
#include <unordered_set>
#include <vector>
#include "fec_encoder.h"
@@ -57,4 +58,36 @@ class RtpCodec {
FecEncoder fec_encoder_;
};
class SSRCManager {
public:
static SSRCManager& Instance() {
static SSRCManager instance;
return instance;
}
void AddSsrc(uint32_t ssrc) {
std::lock_guard<std::mutex> lock(mutex_);
ssrcs_.insert(ssrc);
}
void DeleteSsrc(uint32_t ssrc) {
std::lock_guard<std::mutex> lock(mutex_);
ssrcs_.erase(ssrc);
}
bool Contains(uint32_t ssrc) {
std::lock_guard<std::mutex> lock(mutex_);
return ssrcs_.count(ssrc) > 0;
}
private:
SSRCManager() = default;
~SSRCManager() = default;
SSRCManager(const SSRCManager&) = delete;
SSRCManager& operator=(const SSRCManager&) = delete;
std::unordered_set<uint32_t> ssrcs_;
std::mutex mutex_;
};
#endif