- From: Emil Ivov <emcho@jitsi.org>
- Date: Tue, 28 May 2013 22:52:13 +0300
- To: public-webrtc@w3.org
Hey Harald, all Perhaps at this point it might also be worth considering how to report CSRC audio levels (RFC 6465) ? They could be just as, or even more useful to a WebRTC application than the SSRC ones. Cheers, Emil > I'm continuing with the process of designing stats variables that make > sense and are useful. > My current draft is reproduced below. Comments welcome! > > One question that arose about audio volume representation: It's hairy. > Especially it's hairy to define volume in a way that makes sense when > you don't know the sampling interval (because this is a polling > interface), and you don't want to give undue importance to the last > tenth of a before the sample. Or perhaps you do - it might be app dependent. > > One suggestion made internally: Just report the cumulative audio energy > (sum of audio energy over time) instead. Then people can transform that > as they will. > > Thoughts on this? > For now, the proposal contains a conventional "audio level" variable. > For the rest: > > > Root of hierarchy: > > dictionary RTCStats { > DOMHiResTimeStamp timestamp; > RTCStatsType type; > DOMString id; > }; > > All SSRCs: > > dictionary RTCRTPStreamStats : RTCStats { > DOMString ssrc; > DOMString remoteId; > // New stuff: > DOMString mediaTrackId; > DOMString transportId; > DOMString codecId; > }; > > Note the convention that names ending in “Id” are identifiers of other > stats objects. > Directed SSRCs: > > dictionary RTCInboundRTPStreamStats : RTCRTPStreamStats { > unsigned long packetsReceived; > unsigned long bytesReceived; > // In addition to current spec: > float jitter; > }; > > dictionary RTCOutboundRTPStreamStats : RTCRTPStreamStats { > unsigned long packetsSent; > unsigned long bytesSent; > }; > > Representing MediaStreamTracks: > > dictionary RTCMediaStreamTrackStats : RTCStats { > DOMString trackIdentifier; // track.id property > boolean remoteSource; > sequence<DOMString> ssrcIds; > // Only makes sense for audio > unsigned int audioLevel; > // Only makes sense for video > unsigned int frameWidth; > unsigned int frameHeight; > unsigned float framesPerSecond; // The nominal FPS value > unsigned int framesSent; > unsigned int framesReceived; // Only makes sense for remoteSource=true > unsigned int framesDecoded; > int firs; > } > > dictionary MediaStream : RTCStats { > DOMString streamIdentifier; // stream.id property > sequence<DOMString> trackIds; // Note: This is the id of the stats > object, not the track.id > } > > Representing transports: > > dictionary RTCTransport: RTCStats { > unsigned long bytesSent; > unsigned long bytesReceived; > } > > dictionary RTCIceComponentStats : RTCStats { > DOMString transportId; > int component; > unsigned long bytesSent; > unsigned long bytesReceived; > bool activeConnection; > } > > dictionary RTCIceCandidatePairStats : RTCStats { > DOMString componentId; > DOMString localCandidateId; > DOMString remoteCandidateId; > boolean writable; // Has gotten ACK to an ICE request > boolean readable; // Has gotten a valid incoming ICE request > } > > dictionary RTCIceCandidate : RTCStats { > DOMString ipAddress; > int portNumber; > // More ICE-related info goes here. > } > > dictionary RTCCodec : RTCStats { > unsigned int payloadType; // As used in RTP encoding. > DOMString codec; // video/vp8 or equivalent > unsigned int clockRate; > unsigned int channels; // 2 for stereo, missing for most other cases. > DOMString parameters; // From SDP description line > } -- https://jitsi.org
Received on Tuesday, 28 May 2013 19:52:43 UTC