Add absolute capture time property to rtp sources.
This part of the effort to implement A/V sync metric. Bug: webrtc:10739 Change-Id: I4adba1b99b37b31868168e37d9aa8e03f8ea6d4e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159886 Commit-Queue: Ruslan Burakov <kuddai@webrtc.org> Reviewed-by: Björn Terelius <terelius@webrtc.org> Reviewed-by: Minyue Li <minyue@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Ruslan Burakov <kuddai@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29849}
This commit is contained in:
committed by
Commit Bot
parent
bb55e0bc72
commit
d51cc7bd71
@ -14,6 +14,7 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/rtp_headers.h"
|
||||
#include "rtc_base/checks.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -25,17 +26,35 @@ enum class RtpSourceType {
|
||||
|
||||
class RtpSource {
|
||||
public:
|
||||
struct Extensions {
|
||||
absl::optional<uint8_t> audio_level;
|
||||
absl::optional<AbsoluteCaptureTime> absolute_capture_time;
|
||||
};
|
||||
|
||||
RtpSource() = delete;
|
||||
|
||||
// TODO(bugs.webrtc.org/10739): Remove this constructor once all clients
|
||||
// migrate to the version with absolute capture time.
|
||||
RtpSource(int64_t timestamp_ms,
|
||||
uint32_t source_id,
|
||||
RtpSourceType source_type,
|
||||
absl::optional<uint8_t> audio_level,
|
||||
uint32_t rtp_timestamp)
|
||||
: RtpSource(timestamp_ms,
|
||||
source_id,
|
||||
source_type,
|
||||
rtp_timestamp,
|
||||
{audio_level, absl::nullopt}) {}
|
||||
|
||||
RtpSource(int64_t timestamp_ms,
|
||||
uint32_t source_id,
|
||||
RtpSourceType source_type,
|
||||
uint32_t rtp_timestamp,
|
||||
const RtpSource::Extensions& extensions)
|
||||
: timestamp_ms_(timestamp_ms),
|
||||
source_id_(source_id),
|
||||
source_type_(source_type),
|
||||
audio_level_(audio_level),
|
||||
extensions_(extensions),
|
||||
rtp_timestamp_(rtp_timestamp) {}
|
||||
|
||||
RtpSource(const RtpSource&) = default;
|
||||
@ -54,16 +73,26 @@ class RtpSource {
|
||||
// The source can be either a contributing source or a synchronization source.
|
||||
RtpSourceType source_type() const { return source_type_; }
|
||||
|
||||
absl::optional<uint8_t> audio_level() const { return audio_level_; }
|
||||
absl::optional<uint8_t> audio_level() const {
|
||||
return extensions_.audio_level;
|
||||
}
|
||||
|
||||
void set_audio_level(const absl::optional<uint8_t>& level) {
|
||||
audio_level_ = level;
|
||||
extensions_.audio_level = level;
|
||||
}
|
||||
|
||||
uint32_t rtp_timestamp() const { return rtp_timestamp_; }
|
||||
|
||||
absl::optional<AbsoluteCaptureTime> absolute_capture_time() const {
|
||||
return extensions_.absolute_capture_time;
|
||||
}
|
||||
|
||||
bool operator==(const RtpSource& o) const {
|
||||
return timestamp_ms_ == o.timestamp_ms() && source_id_ == o.source_id() &&
|
||||
source_type_ == o.source_type() && audio_level_ == o.audio_level_ &&
|
||||
source_type_ == o.source_type() &&
|
||||
extensions_.audio_level == o.extensions_.audio_level &&
|
||||
extensions_.absolute_capture_time ==
|
||||
o.extensions_.absolute_capture_time &&
|
||||
rtp_timestamp_ == o.rtp_timestamp();
|
||||
}
|
||||
|
||||
@ -71,7 +100,7 @@ class RtpSource {
|
||||
int64_t timestamp_ms_;
|
||||
uint32_t source_id_;
|
||||
RtpSourceType source_type_;
|
||||
absl::optional<uint8_t> audio_level_;
|
||||
RtpSource::Extensions extensions_;
|
||||
uint32_t rtp_timestamp_;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user