Skip to content

Commit 90c3b6a

Browse files
Squash: fix after some review comments in the video bitrates by origin.
1 parent 6d9da17 commit 90c3b6a

File tree

7 files changed

+33
-25
lines changed

7 files changed

+33
-25
lines changed

jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/PacketInfo.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
1919
import org.jitsi.config.JitsiConfig
2020
import org.jitsi.metaconfig.config
2121
import org.jitsi.rtp.Packet
22-
import org.jitsi.rtp.rtcp.RtcpPacket
2322
import org.jitsi.utils.logging2.createLogger
2423
import java.time.Clock
2524
import java.time.Duration
@@ -91,14 +90,19 @@ class EventTimeline(
9190
}
9291
}
9392

94-
enum class PacketType {
93+
/**
94+
* The origin of a packet in the system; used to track outgoing packets in [OutgoingStatisticsTracker]
95+
* to measure the bitrates of each type of data.
96+
*
97+
* Currently only used for RTP, so RTCP, SCTP, and Datachannel will all be either Routed or Misc.
98+
*/
99+
enum class PacketOrigin {
95100
Routed,
96-
RTX,
101+
Retransmission,
97102
Padding,
98103
Synthesized,
99-
RTCP,
100104
Misc
101-
/* TODO: handle SCTP and datachannel if we need them */
105+
/* TODO: Add RTCP, SCTP, and datachannel if needed */
102106
}
103107

104108
/**
@@ -152,9 +156,9 @@ open class PacketInfo @JvmOverloads constructor(
152156
var payloadVerification = if (enablePayloadVerification) packet.payloadVerification else null
153157

154158
/**
155-
* The type of the packet, used for tracking the sources of media being routed.
159+
* The origin of the packet, used for tracking the sources of media being routed.
156160
*/
157-
var packetType: PacketType = if (packet is RtcpPacket) PacketType.RTCP else PacketType.Misc
161+
var packetOrigin: PacketOrigin = PacketOrigin.Misc
158162

159163
/**
160164
* Re-calculates the expected payload verification string. This should be called any time that the code
@@ -185,7 +189,7 @@ open class PacketInfo @JvmOverloads constructor(
185189
clone.endpointId = endpointId
186190
clone.layeringChanged = layeringChanged
187191
clone.payloadVerification = payloadVerification
188-
clone.packetType = packetType
192+
clone.packetOrigin = packetOrigin
189193
@Suppress("UNCHECKED_CAST") // ArrayList.clone() really does return ArrayList, not Object.
190194
clone.onSentActions = onSentActions?.clone() as ArrayList<() -> Unit>?
191195
return clone

jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/rtcp/NackHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package org.jitsi.nlj.rtcp
1818
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
1919
import org.jitsi.nlj.PacketHandler
2020
import org.jitsi.nlj.PacketInfo
21-
import org.jitsi.nlj.PacketType
21+
import org.jitsi.nlj.PacketOrigin
2222
import org.jitsi.nlj.stats.EndpointConnectionStats
2323
import org.jitsi.nlj.stats.NodeStatsBlock
2424
import org.jitsi.nlj.transform.NodeStatsProducer
@@ -90,7 +90,7 @@ class NackHandler(
9090
}
9191
nackedPackets.forEach {
9292
val packetInfo = PacketInfo(it)
93-
packetInfo.packetType = PacketType.RTX
93+
packetInfo.packetOrigin = PacketOrigin.Retransmission
9494
onNackedPacketsReady.processPacket(packetInfo)
9595
}
9696
}

jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/AudioRedHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package org.jitsi.nlj.transform.node
1919
import org.jitsi.config.JitsiConfig
2020
import org.jitsi.metaconfig.config
2121
import org.jitsi.nlj.PacketInfo
22-
import org.jitsi.nlj.PacketType
22+
import org.jitsi.nlj.PacketOrigin
2323
import org.jitsi.nlj.format.AudioRedPayloadType
2424
import org.jitsi.nlj.rtp.AudioRtpPacket
2525
import org.jitsi.nlj.rtp.RedAudioRtpPacket
@@ -249,7 +249,7 @@ class AudioRedHandler(
249249
(it.sequenceNumber == prev2 && prev2Missing)
250250
) {
251251
val packetInfo = PacketInfo(it)
252-
packetInfo.packetType = PacketType.Synthesized
252+
packetInfo.packetOrigin = PacketOrigin.Synthesized
253253
add(packetInfo)
254254
stats.lostPacketRecovered()
255255
}

jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/outgoing/OutgoingStatisticsTracker.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.jitsi.nlj.transform.node.outgoing
1717

1818
import org.jitsi.nlj.PacketInfo
19-
import org.jitsi.nlj.PacketType
19+
import org.jitsi.nlj.PacketOrigin
2020
import org.jitsi.nlj.rtp.AudioRtpPacket
2121
import org.jitsi.nlj.rtp.VideoRtpPacket
2222
import org.jitsi.nlj.stats.NodeStatsBlock
@@ -43,7 +43,7 @@ class OutgoingStatisticsTracker(
4343

4444
private val videoBitrate = BitrateCalculator.createBitrateTracker()
4545

46-
private val videoPacketTypeBitrates = mutableMapOf<PacketType, BitrateTracker>()
46+
private val videoBitratesByOrigin = mutableMapOf<PacketOrigin, BitrateTracker>()
4747

4848
override fun observe(packetInfo: PacketInfo) {
4949
val rtpPacket = packetInfo.packetAs<RtpPacket>()
@@ -52,10 +52,14 @@ class OutgoingStatisticsTracker(
5252
is AudioRtpPacket -> numAudioPackets++
5353
is VideoRtpPacket -> {
5454
numVideoPackets++
55+
56+
/* These bitrate measurements are only used in the timeseries log below, so only calculate them
57+
* if the timeseries is enabled. */
5558
if (timeseriesLogger.isTraceEnabled) {
5659
videoBitrate.update(rtpPacket.length.bytes)
57-
videoPacketTypeBitrates.getOrPut(packetInfo.packetType) { BitrateCalculator.createBitrateTracker() }
58-
.update(rtpPacket.length.bytes)
60+
videoBitratesByOrigin.getOrPut(packetInfo.packetOrigin) {
61+
BitrateCalculator.createBitrateTracker()
62+
}.update(rtpPacket.length.bytes)
5963
}
6064
}
6165
}
@@ -92,8 +96,8 @@ class OutgoingStatisticsTracker(
9296
if (timeseriesLogger.isTraceEnabled) {
9397
val point = diagnosticContext.makeTimeSeriesPoint("sent_video_stream_stats")
9498
.addField("bitrate_bps", videoBitrate.rate.bps)
95-
videoPacketTypeBitrates.forEach { (type, tracker) ->
96-
point.addField("video_${type}_bitrate", tracker.rate.bps)
99+
videoBitratesByOrigin.forEach { (origin, tracker) ->
100+
point.addField("video_${origin}_bitrate", tracker.rate.bps)
97101
}
98102

99103
timeseriesLogger.trace(point)

jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/outgoing/ProbingDataSender.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import org.jitsi.nlj.Event
2121
import org.jitsi.nlj.EventHandler
2222
import org.jitsi.nlj.PacketHandler
2323
import org.jitsi.nlj.PacketInfo
24-
import org.jitsi.nlj.PacketType
24+
import org.jitsi.nlj.PacketOrigin
2525
import org.jitsi.nlj.SetLocalSsrcEvent
2626
import org.jitsi.nlj.format.RtxPayloadType
2727
import org.jitsi.nlj.format.VideoPayloadType
@@ -138,7 +138,7 @@ class ProbingDataSender(
138138
packetCache.getMany(mediaSsrc, numBytes).forEach {
139139
bytesSent += it.length
140140
val packetInfo = PacketInfo(it)
141-
packetInfo.packetType = PacketType.Padding
141+
packetInfo.packetOrigin = PacketOrigin.Padding
142142
rtxDataSender.processPacket(packetInfo)
143143
}
144144
return bytesSent
@@ -166,7 +166,7 @@ class ProbingDataSender(
166166
paddingPacket.timestamp = currDummyTimestamp
167167
paddingPacket.sequenceNumber = currDummySeqNum
168168
val packetInfo = PacketInfo(paddingPacket)
169-
packetInfo.packetType = PacketType.Padding
169+
packetInfo.packetOrigin = PacketOrigin.Padding
170170
garbageDataSender.processPacket(packetInfo)
171171

172172
currDummySeqNum++

jvb/src/main/kotlin/org/jitsi/videobridge/Endpoint.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import org.jitsi.nlj.Features
2828
import org.jitsi.nlj.MediaSourceDesc
2929
import org.jitsi.nlj.PacketHandler
3030
import org.jitsi.nlj.PacketInfo
31-
import org.jitsi.nlj.PacketType
31+
import org.jitsi.nlj.PacketOrigin
3232
import org.jitsi.nlj.Transceiver
3333
import org.jitsi.nlj.TransceiverEventHandler
3434
import org.jitsi.nlj.format.PayloadType
@@ -424,7 +424,7 @@ class Endpoint @JvmOverloads constructor(
424424
PacketInfo(UnparsedPacket(buffer.buffer, buffer.offset, buffer.length)).apply {
425425
this.receivedTime = buffer.receivedTime
426426
}
427-
pktInfo.packetType = PacketType.Routed
427+
pktInfo.packetOrigin = PacketOrigin.Routed
428428
transceiver.handleIncomingPacket(pktInfo)
429429
}
430430
}

jvb/src/main/kotlin/org/jitsi/videobridge/relay/Relay.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import org.jitsi.nlj.Features
2525
import org.jitsi.nlj.MediaSourceDesc
2626
import org.jitsi.nlj.PacketHandler
2727
import org.jitsi.nlj.PacketInfo
28-
import org.jitsi.nlj.PacketType
28+
import org.jitsi.nlj.PacketOrigin
2929
import org.jitsi.nlj.Transceiver
3030
import org.jitsi.nlj.TransceiverEventHandler
3131
import org.jitsi.nlj.VideoType
@@ -362,7 +362,7 @@ class Relay @JvmOverloads constructor(
362362
).apply {
363363
this.receivedTime = buffer.receivedTime
364364
}
365-
pktInfo.packetType = PacketType.Routed
365+
pktInfo.packetOrigin = PacketOrigin.Routed
366366
handleMediaPacket(pktInfo)
367367
}
368368
}

0 commit comments

Comments
 (0)