files/en-us/web/api/rtccodecstats/index.md
{{APIRef("WebRTC")}}
The RTCCodecStats dictionary of the WebRTC API provides statistics about a codec used by {{Glossary("RTP")}} streams that are being sent or received by the associated {{domxref("RTCPeerConnection")}} object.
These statistics can be obtained by iterating the {{domxref("RTCStatsReport")}} object returned by {{domxref("RTCPeerConnection.getStats()")}} until you find an entry with the type of codec.
The codec statistics can be correlated with the inbound or outbound stream statistics (both local and remote) by matching their codecId property to the codec's id.
For example, if RTCInboundRtpStreamStats.codecId matches an RTCCodecStats.id in the same report, then we know that the codec is being used on this peer connection's inbound stream.
If no stream codecId references a codec statistic, then that codec statistic object is deleted — if the codec is used again, the statistics object will be recreated with the same id.
Codec objects may be referenced by multiple RTP streams in media sections using the same transport.
In fact, user agents are expected to consolidate information into a single "codec" entry per payload type per transport (unless sdpFmtpLine is different when sending or receiving, in which case, different codecs will be needed for encoding and decoding).
Note that other transports will use their own distinct RTCCodecStats objects.
"a=fmtp" line in the codec's {{Glossary("SDP")}} (if present).The following properties are common to all WebRTC statistics objects (see RTCStatsReport for more information):
"codec", indicating the type of statistics the object contains.Given a variable myPeerConnection, which is an instance of {{domxref("RTCPeerConnection")}}, the code below uses await to wait for the statistics report, and then iterates it using RTCStatsReport.forEach().
It then filters the dictionaries for just those reports that have the type of codec and logs the result.
const stats = await myPeerConnection.getStats();
stats.forEach((report) => {
if (report.type === "codec") {
// Log the codec information
console.log(report);
}
});
{{Specifications}}
{{Compat}}
codecs option in parameter passed to {{domxref("RTCRtpTransceiver.setCodecPreferences()")}} and {{domxref("RTCRtpSender.setParameters()()")}}.codecs property in object returned by {{domxref("RTCRtpSender.getParameters()")}} and {{domxref("RTCRtpReceiver.getParameters()")}}.