Implement RTCMediaSourceStats and friends in standard getStats().
This implements RTCAudioSourceStats and RTCVideoSourceStats, both inheriting from abstract dictionary RTCMediaSourceStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediasourcestats All members are implemented except for the total "frames" counter: - trackIdentifier - kind - width - height - framesPerSecond This means to make googFrameWidthInput, googFrameHeightInput and googFrameRateInput obsolete. Implemented using the same code path as the goog stats, there are some minor bugs that should be fixed in the future, but not this CL: 1. We create media-source objects on a per-track attachment basis. If the same track is attached multiple times this results in multiple media-source objects, but the spec says it should be on a per-source basis. 2. framesPerSecond is only calculated after connecting (when we have a sender with SSRC), but if collected on a per-source basis the source should be able to tell us the FPS whether or not we are sending it. Bug: webrtc:10453 Change-Id: I23705a79f15075dca2536275934af1904a7f0d39 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137804 Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28028}
This commit is contained in:
committed by
Commit Bot
parent
58c71db1b3
commit
646fda0212
@ -179,6 +179,24 @@ class RTC_EXPORT RTCStats {
|
||||
return local_var_members_vec; \
|
||||
}
|
||||
|
||||
// A version of WEBRTC_RTCSTATS_IMPL() where "..." is omitted, used to avoid a
|
||||
// compile error on windows. This is used if the stats dictionary does not
|
||||
// declare any members of its own (but perhaps its parent dictionary does).
|
||||
#define WEBRTC_RTCSTATS_IMPL_NO_MEMBERS(this_class, parent_class, type_str) \
|
||||
const char this_class::kType[] = type_str; \
|
||||
\
|
||||
std::unique_ptr<webrtc::RTCStats> this_class::copy() const { \
|
||||
return std::unique_ptr<webrtc::RTCStats>(new this_class(*this)); \
|
||||
} \
|
||||
\
|
||||
const char* this_class::type() const { return this_class::kType; } \
|
||||
\
|
||||
std::vector<const webrtc::RTCStatsMemberInterface*> \
|
||||
this_class::MembersOfThisObjectAndAncestors( \
|
||||
size_t local_var_additional_capacity) const { \
|
||||
return parent_class::MembersOfThisObjectAndAncestors(0); \
|
||||
}
|
||||
|
||||
// Non-standard stats members can be exposed to the JavaScript API in Chrome
|
||||
// e.g. through origin trials. The group ID can be used by the blink layer to
|
||||
// determine if a stats member should be exposed or not. Multiple non-standard
|
||||
|
||||
Reference in New Issue
Block a user