-
trackIdentifier、型 DOMString
-
MediaStreamTrack
の
id 属性の値。
-
mid、型
DOMString
-
この stream を所有する RTCRtpTransceiver
が
null ではない
mid
値を持つ場合、これはその値である。そうでない場合、このメンバーは
存在してはMUST
NOTならない。
-
remoteId、型
DOMString
-
remoteId は、
同じ SSRC についてリモートの
RTCRemoteOutboundRtpStreamStats
オブジェクトを検索するために使用される。
-
framesDecoded
-
audio については exist してはMUST NOTならない。
これは、この RTP stream について正しくデコードされた
フレームの総数、すなわちフレームがドロップされなければ表示されるはずのフレームを表す。
-
keyFramesDecoded、型 unsigned long
-
audio については exist してはMUST NOTならない。
この RTP media stream について正常にデコードされた、
VP8 [RFC6386] の key frame や
H.264 [RFC6184] の IDR-frame などの
key frame の総数を表す。これは
framesDecoded
のサブセットである。
framesDecoded - keyFramesDecoded により、
デコードされた delta frame の数が得られる。
-
framesRendered
-
audio については exist してはMUST NOTならない。
レンダリングされたフレームの総数を表す。
フレームがレンダリングされた直後に増加する。
-
framesDropped、型 unsigned
long
-
audio については exist してはMUST NOTならない。
この receiver の track について、デコード前にドロップされた、または
フレームが表示期限に間に合わなかったためにドロップされたフレームの総数。
測定は receiver が作成された時点で開始され、[RFC7004]
Appendix A (g) で定義される累積メトリックである。
-
frameWidth、型 unsigned
long
-
audio については exist してはMUST NOTならない。
最後にデコードされたフレームの幅を表す。最初の
フレームがデコードされる前、このメンバーは exist してはMUST NOTならない。
-
frameHeight、型 unsigned
long
-
audio については exist してはMUST NOTならない。
最後にデコードされたフレームの高さを表す。最初の
フレームがデコードされる前、このメンバーは exist してはMUST NOTならない。
-
framesPerSecond、型 double
-
audio については exist してはMUST NOTならない。
直近 1 秒間にデコードされたフレーム数。
-
qpSum、型 unsigned
long
long
-
audio については exist してはMUST NOTならない。
この receiver によってデコードされたフレームの QP 値の合計。
フレーム数は framesDecoded
にある。
QP 値の定義は codec に依存する。VP8 では、QP 値は
frame header 内で syntax element y_ac_qi として運ばれる値であり、
[RFC6386] 第 19.2 節で定義される。
その範囲は 0..127 である。
QP 値は、使用された quantizer 値の指標にすぎないことに注意。
多くの形式には、フレーム内で quantizer 値を変化させる方法がある。
-
totalDecodeTime、型 double
-
audio については exist してはMUST NOTならない。
この stream の framesDecoded
フレームのデコードに費やされた秒数の総数。
平均デコード時間は、この値を framesDecoded
で
割ることで計算できる。1 フレームをデコードするのにかかる時間は、
decoder にフレームを供給してから、そのフレームについて decoder がデコード済み
データを返すまでに経過した時間である。
-
totalInterFrameDelay、型 double
-
audio については exist してはMUST NOTならない。
連続してレンダリングされたフレーム間の interframe delay の秒単位の合計であり、
フレームがレンダリングされた直後に記録される。interframe delay variance は
totalInterFrameDelay、
totalSquaredInterFrameDelay、
および framesRendered
から、次の式に従って計算できる:
(totalSquaredInterFrameDelay
- totalInterFrameDelay^2/
framesRendered)/framesRendered.
-
totalSquaredInterFrameDelay、型 double
-
audio については exist してはMUST NOTならない。
連続してレンダリングされたフレーム間の二乗された interframe delay の秒単位の合計であり、
フレームがレンダリングされた直後に記録される。interframe delay variance の計算方法の詳細については、
totalInterFrameDelay
を参照。
-
pauseCount、型
unsigned long
-
audio については exist してはMUST NOTならない。
この receiver が経験した video pause の総数を数える。
最後にレンダリングされたフレームから経過した時間が 5 秒を超える場合、
video は一時停止していると見なされる。pauseCount
は、そのような一時停止の後にフレームがレンダリングされたときに増加する。
-
totalPausesDuration、型
double
-
audio については exist してはMUST NOTならない。
pause の総継続時間(pause の定義については pauseCount
を参照)を
秒単位で表す。この値はフレームがレンダリングされたときに更新される。
-
freezeCount、型
unsigned long
-
audio については exist してはMUST NOTならない。
この receiver が経験した video freeze の総数を数える。
frame duration、すなわち連続してレンダリングされた 2 つのフレーム間の時間間隔が、
Max(3 * avg_frame_duration_ms, avg_frame_duration_ms + 150) 以上である場合、
freeze である。ここで avg_frame_duration_ms は、最後にレンダリングされた
30 フレームの duration の線形平均である。
-
totalFreezesDuration、型
double
-
audio については exist してはMUST NOTならない。
frozen と見なされるレンダリング済みフレームの総継続時間(freeze の定義については
freezeCount
を参照)を
秒単位で表す。この値は
フレームがレンダリングされたときに更新される。
-
lastPacketReceivedTimestamp、型 DOMHighResTimeStamp
-
この SSRC について最後のパケットが受信された時刻のタイムスタンプを表す。
これは、ローカル endpoint によって統計が生成された時刻を表す
timestamp とは異なる。
-
、型 unsigned long long
-
この SSRC について受信された
RTP header および padding byte の総数。
これには再送が含まれる。
これは IP や UDP などの transport layer header のサイズを含まない。
headerBytesReceived + bytesReceived は、
transport 上で payload として受信された byte 数と等しい。
-
packetsDiscarded、型 unsigned long long
-
late または early-arrival により jitter buffer によって破棄された RTP パケットの累積数。
すなわち、これらのパケットは再生されない。packet duplication により破棄された RTP パケットは、
このメトリックでは報告されない [XRBLOCK-STATS]。
[RFC7002]
第 3.2 節および Appendix A.a で定義されるように計算される。
-
fecBytesReceived、型 unsigned long long
-
この SSRC について受信された RTP FEC byte の総数であり、
payload
byte のみを含む。
これは bytesReceived
のサブセットである。
別の ssrc
を使用する FEC mechanism がネゴシエートされた場合、FEC パケットは
別個の SSRC 上で送信されるが、それでもここで計上される。
-
fecPacketsReceived、型 unsigned long long
-
この SSRC について受信された
RTP FEC パケットの総数。別の ssrc
を使用する FEC mechanism がネゴシエートされた場合、FEC パケットは
別個の SSRC 上で送信されるが、それでもここで計上される。
このカウンターは、media packet と同一帯域で FEC パケットを受信する場合にも
増加することがある
(例: Opus の場合)。
-
fecPacketsDiscarded、型 unsigned long long
-
この SSRC について受信された
RTP FEC パケットの総数のうち、
error correction payload がアプリケーションによって破棄されたもの。
これは、1. FEC パケットによって保護されたすべての source packet が受信済みまたは
別個の FEC パケットによってすでに回復済みである場合、または 2. FEC パケットが遅れて到着した、
すなわち recovery window の外であり、失われた RTP パケットがすでに
playout 中にスキップされている場合に発生する可能性がある。
これは fecPacketsReceived
のサブセットである。
-
bytesReceived、型 unsigned
long long
-
この SSRC について受信された byte の総数。
これには再送が含まれる。
[RFC3550]
第 6.4.1 節で定義されるように計算される。
-
firCount、型 unsigned
long
-
audio については exist してはMUST NOTならない。
この receiver によって送信された Full Intra Request (FIR) パケットの総数を数える。
これは [RFC5104]
第 4.3.1 節で定義される。 [RFC2032] で示され、
[RFC4587] によって
非推奨とされた RTCP FIR は数えない。
-
pliCount、型 unsigned
long
-
audio については exist してはMUST NOTならない。
この receiver によって送信された Picture Loss Indication (PLI)
パケットの総数を数える。これは [RFC4585]
第 6.3.1 節で定義される。
-
totalProcessingDelay、型 double
-
これは、各 audio
sample または video frame について、
最初の RTP パケットが受信された時刻(reception timestamp)から、対応する sample または frame が
デコードされた時刻(decoded timestamp)までにかかった時間の秒単位の合計である。
この時点で、audio sample または video frame は MediaStreamTrack による playout の準備ができている。
通常ここで playout の準備ができているとは、audio sample または video frame が
decoder によって完全にデコードされた後を意味する。
関連する複雑さを考慮し、arrival time または reception timestamp は
可能な限り network layer に近いところで測定され、decoded timestamp は
完全な sample または frame がデコードされ次第測定される。
audio の場合、複数の sample が同じ RTP パケットで受信されるため、すべての sample は
同じ reception timestamp と異なる decoded timestamp を共有する。
video の場合、frame は複数の RTP パケットにわたって受信される。この場合、
frame を含む最も早い timestamp が reception timestamp として数えられ、
decoded timestamp は完全な frame がデコードされた時点に対応する。
このメトリックは、デコードされないフレーム、
すなわち framesDropped
については増加しない。
平均 processing delay は、totalProcessingDelay
を、video については
framesDecoded
(または audio については provisional stats spec の totalSamplesDecoded)で
割ることで計算できる。
-
nackCount、型 unsigned
long
-
この receiver によって送信された Negative ACKnowledgement (NACK) パケットの総数を数える。
これは
[RFC4585]
第 6.2.1 節で定義される。
-
estimatedPlayoutTimestamp、型 DOMHighResTimeStamp
-
これは、この receiver の track の推定 playout time である。playout time は、
既知の timestamp(RTP timestamp を NTP timestamp に対応付ける RTCP
SR パケットから得られる)を持つ、
最後に再生可能な audio sample または video frame の
NTP timestamp であり、
再生可能になってから経過した時間で外挿される。これは sender の NTP clock time における
track の "current time" であり、
現在再生中の audio がなくても存在できる。
これは、同じ source からの 2 つの track について、audio と video がどれだけ同期していないかを
推定するのに有用である。audioInboundRtpStats.estimatedPlayoutTimestamp
-
videoInboundRtpStats.estimatedPlayoutTimestamp.
-
jitterBufferDelay、型 double
-
jitter buffer の目的は、(video の場合)RTP パケットを frame に再結合し、
滑らかな playout を行うことである。ここで説明するモデルは、sample または frame が
まだ圧縮されており、まだデコードされていないことを前提とする。
これは、各 audio
sample または video frame について、
最初のパケットが jitter buffer に受信された時刻(ingest timestamp)から
jitter buffer を出る時刻(emit timestamp)までにかかる時間の秒単位の合計である。
audio の場合、複数の sample が同じ RTP パケットに属するため、それらは同じ
ingest timestamp を持つが、異なる jitter buffer emit timestamp を持つ。
video の場合、frame は複数の RTP パケットにわたって受信されることがあるため、
ingest timestamp は jitter buffer に入ったその frame の最も早いパケットであり、
emit timestamp は
frame 全体が jitter buffer を出る時刻である。
このメトリックは、sample または frame が buffer 内での時間を完了して外に出たときに増加する(そして
jitterBufferEmittedCount
を増加させる)。
平均 jitter buffer
delay は、jitterBufferDelay
を
jitterBufferEmittedCount
で割ることで計算できる。
-
jitterBufferTargetDelay、型 double
-
この値は、jitter buffer から sample が emit されるたびに、
target jitter buffer delay だけ増加する。追加される target は、
その sample が jitter buffer から emit された時点の、
秒単位の target delay である。平均 target delay を得るには、
jitterBufferEmittedCount
で割る。
-
jitterBufferEmittedCount、型 unsigned long long
-
jitter buffer から出た audio sample または video frame の総数
(jitterBufferDelay
を増加させる)。
-
jitterBufferMinimumDelay、型 double
-
jitter buffer delay がより高い値へ増加する理由はさまざまであり、たとえば
AV synchronization を達成するため、または
jitterBufferTarget
が RTCRtpReceiver に設定されたためである。これらの mechanism の 1 つを使用する場合、
達成できたはずの最小 jitter buffer delay を追跡しておくことが有用な場合があり、
それにより WebRTC client は追加されている delay の量を追跡できる。
このメトリックは jitterBufferTargetDelay
と同じように機能するが、
jitter buffer target delay を増加させる外部 mechanism、たとえば
jitterBufferTarget(上記リンクを参照)、
AV sync、またはその他の mechanism の影響を受けない。このメトリックは
jitter や packet loss などの network characteristics のみに基づき、
外部要因が影響しなければ得られる最小 jitter buffer delay と見なすことができる。
このメトリックは、jitterBufferEmittedCount
が更新されるたびに更新される。
-
totalSamplesReceived、型 unsigned long long
-
video については MUST NOT exist である。この RTP stream 上で
受信された sample の総数。これには concealedSamples
が含まれる。
-
concealedSamples、型 unsigned long long
-
video については MUST NOT exist である。concealed sample である
sample の総数。concealed sample とは、
再生される前に、ローカルで生成された合成 sample に置き換えられた sample である。
conceal されなければならない sample の例としては、失われた packet からの sample
(packetsLost
で報告される)や、
再生には遅すぎて到着した packet からの sample
(packetsDiscarded
で報告される)がある。
-
silentConcealedSamples、型 unsigned long long
-
video については MUST NOT exist である。挿入された
concealed sample のうち、"silent" であるものの総数。
silent sample を再生すると、無音または comfort noise になる。これは
concealedSamples
のサブセットである。
-
concealmentEvents、型 unsigned long long
-
video については MUST NOT exist である。
concealment event の数。このカウンターは、
concealed sample が non-concealed sample の後に合成されるたびに増加する。つまり、
複数の連続した concealed sample は concealedSamples
count を複数回増加させるが、単一の concealment event である。
-
insertedSamplesForDeceleration、型 unsigned long long
-
video については MUST NOT exist である。playout が
遅くされた場合、このカウンターは、
受信された sample の数と再生された sample の数との差分だけ増加する。
sample を挿入することによって playout が遅くされる場合、これは挿入された
sample の数になる。
-
removedSamplesForAcceleration、型 unsigned long long
-
video については MUST NOT exist である。playout が
速くされた場合、このカウンターは、
受信された sample の数と再生された sample の数との差分だけ増加する。
sample を削除することによって speedup が達成される場合、これは削除された
sample の数になる。
-
audioLevel、型
double
-
video については MUST NOT exist である。受信 track の
audio level を表す。ローカルに添付された track の audio
level については、代わりに RTCAudioSourceStats
を参照。
値は 0..1(linear)の範囲であり、1.0 は 0 dBov、0 は
silence、0.5 は 0 dBov からの sound pressure
level のおよそ 6 dBSPL の変化を表す。
audioLevel
は、totalAudioEnergy
の下で説明されるアルゴリズムを使用して、ある小さな interval にわたって平均される。
使用される interval は implementation-defined
である。
-
totalAudioEnergy、型 double
-
video については MUST NOT exist である。受信 track の
audio energy を表す。ローカルに添付された track の
audio energy については、代わりに
RTCAudioSourceStats を参照。
この値は次のように計算されなければMUSTならない:
受信された(したがって audio sample が
totalSamplesReceived
によって数えられる)各 sample について、
sample の値を最高強度の encode 可能値で割り、二乗し、その後
sample の duration(秒)を掛けたものを加算する。言い換えると、
duration * Math.pow(energy/maxEnergy, 2) である。
これは、[RFC6464]
で定義される audioLevel と
同じ単位を使用する root mean square(RMS)値を得るために使用できる。
これは式
Math.sqrt(totalAudioEnergy/totalSamplesDuration) を使用して
それらの単位に変換できる。この計算は、任意の望ましい時間間隔にわたる
平均 audio level を計算するために、2 つの異なる
getStats()
呼び出しの値の差分を使用して実行することもできる。言い換えると、
Math.sqrt((energy2 -
energy1)/(duration2 - duration1)) とする。
たとえば、10ms の audio packet が 0.5(1.0 のうち)の RMS で生成された場合、
これは totalAudioEnergy
に
0.5 * 0.5 * 0.01 = 0.0025 を加えるべきである。
RMS が 0.1 の別の 10ms packet が
受信された場合、これは同様に
totalAudioEnergy
に
0.0001 を加えるべきである。
すると、
Math.sqrt(totalAudioEnergy/totalSamplesDuration) は
Math.sqrt(0.0026/0.02) = 0.36 となり、これは連続した
20ms の audio segment に対して RMS 計算を行うことで得られる値と同じである。
複数の audio channel が使用される場合、
sample の audio energy は任意の channel の最高 energyを指す。
-
totalSamplesDuration、型 double
-
video については MUST NOT exist である。受信 track の
audio duration を表す。ローカルに添付された track の
audio duration については、代わりに
RTCAudioSourceStats を参照。
受信された(したがって totalSamplesReceived
によって数えられる)すべての sample の合計 duration を秒単位で表す。
totalAudioEnergy
とともに使用して、異なる interval にわたる平均 audio level を計算できる。
-
framesReceived、型 unsigned
long
-
audio については MUST NOT exist である。この
RTP stream 上で受信された完全な frame の総数を表す。
このメトリックは、完全な frame が受信されたときに増加する。
-
decoderImplementation、型 DOMString
-
exist
してはならない。ただし、exposing
hardware is allowed である場合を除く。
audio については MUST NOT exist である。使用されている
decoder implementation を識別する。
これは相互運用性の問題を診断するのに有用である。
-
playoutId
、型 DOMString
-
video については MUST NOT exist である。
audio playout が発生している場合、これは対応する
RTCAudioPlayoutStats
を検索するために使用される。
-
powerEfficientDecoder、型 boolean
-
exist
してはならない。ただし、exposing
hardware is allowed である場合を除く。
audio については MUST NOT exist である。
現在使用されている decoder が、user agent によって power
efficient と見なされるかどうか。
これは構成が hardware acceleration につながるかどうかを反映すべきSHOULDであるが、
user agent は、その構成が power efficient と見なされるかどうかを判断する際に、
他の情報を考慮してもMAYよい。
-
framesAssembledFromMultiplePackets、型
unsigned long
-
audio については MUST NOT exist である。
これは、この RTP stream について正しくデコードされた、複数の RTP packet から構成される
frame の総数を表す。そのような frame については、
totalAssemblyTime
が増加する。平均 frame assembly time は、
totalAssemblyTime
を framesAssembledFromMultiplePackets
で
割ることで計算できる。
-
totalAssemblyTime、型 double
-
audio については MUST NOT exist である。
各 video frame について、最初の RTP packet が受信された時刻
(reception timestamp)から、その frame の最後の RTP packet が受信された時刻までに
かかる時間の秒単位の合計である。複数の
RTP packet から構成される frame についてのみ増加する。
関連する複雑さを考慮し、arrival time または reception timestamp は
可能な限り network layer に近いところで測定される。このメトリックは、
デコードされない frame、すなわち framesDropped
や、その他の理由でデコードに失敗した frame
(もしあれば)については増加しない。複数の RTP packet から構成される frame についてのみ増加する。
-
retransmittedPacketsReceived、型 unsigned long long
-
この SSRC について受信された再送 packet の総数。
これは packetsReceived
の
サブセットである。RTX がネゴシエートされていない場合、
再送 packet は識別できず、このメンバーは MUST
NOT exist である。
-
retransmittedBytesReceived、型 unsigned long long
-
この SSRC について受信された
再送 byte の総数であり、payload byte のみを含む。
これは bytesReceived
のサブセットである。
RTX がネゴシエートされていない場合、再送 packet は識別できず、
このメンバーは MUST NOT exist である。
-
rtxSsrc
、型 unsigned long
-
別個の RTP
stream 上での再送について RTX がネゴシエートされている場合、
これはこの stream の ssrc
と関連付けられた
RTX stream の SSRC である。
RTX がネゴシエートされていない場合、この値は MUST NOT present である。
-
fecSsrc
、型 unsigned long
-
別個の RTP stream を使用する
FEC mechanism がネゴシエートされている場合、これはこの stream の
ssrc と関連付けられた
FEC stream の SSRC である。
FEC がネゴシエートされていない、または同じ RTP stream を使用する場合、この値は MUST NOT
present である。
-
totalCorruptionProbability、型 double
-
audio については MUST NOT exist である。この SSRC について
行われたすべての corruption
probability measurement の累積合計を表す。この属性がいつ SHOULD
present であるかについては、
corruptionMeasurements
を参照。
totalCorruptionProbability
に加算される各 measurement は [0.0, 1.0] の範囲でなければMUSTならない。
ここで値 0.0 は、システムが処理済み frame に corruption が存在しない、または無視できる程度であると
推定したことを示す。同様に値 1.0 は、処理済み frame に corruption がほぼ確実に
見えることを示す。その中間の値は、何らかの corruption が見える可能性が高いが、
たとえば magnitude が低い、または frame の小さな部分にのみ存在する可能性があることを示す。
注
corruption likelihood の値は推定であり、保証ではない。推定が
0.0 であっても、たとえば frame の非常に小さな領域だけが影響を受けている場合には
corruption が存在する可能性がある(すなわち false negative である)。同様に、推定が 1.0 であっても、
たとえば frame average よりはるかに高い QP を持つ macroblock がある場合には
corruption が存在しない可能性がある(すなわち false positive である)。
PSNR measurement などに edge case があるのと同様に、これらのメトリックは
per-frame basis で絶対的な真実として使用するよりも、主として
統計分析の基礎として使用されるべきである。
-
totalSquaredCorruptionProbability、型
double
-
audio については MUST NOT exist である。この SSRC について
行われたすべての corruption
probability measurement の二乗の累積合計を表す。この属性がいつ SHOULD
present であるかについては、
corruptionMeasurements
を参照。
-
corruptionMeasurements、型 unsigned long long
-
audio については MUST NOT exist である。user
agent が corruption
probability measurement を行うことができる場合、このカウンターはそのような measurement ごとに増加し、
totalCorruptionProbability
および totalSquaredCorruptionProbability
は、それぞれこの measurement および measurement の二乗で集計される。
corruption-detection header extension が RTP packet に存在する場合、corruption
probability measurement は MUST present である。