@java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
            output.writeMessage(1, getStartTime());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
            output.writeMessage(2, getEndTime());
        }
        if (java.lang.Double.doubleToRawLongBits(duration_) != 0) {
            output.writeDouble(3, duration_);
        }
        if (packets_ != 0) {
            output.writeUInt32(4, packets_);
        }
        if (java.lang.Double.doubleToRawLongBits(packetRate_) != 0) {
            output.writeDouble(5, packetRate_);
        }
        if (bytes_ != 0L) {
            output.writeUInt64(6, bytes_);
        }
        if (java.lang.Double.doubleToRawLongBits(bitrate_) != 0) {
            output.writeDouble(7, bitrate_);
        }
        if (packetsLost_ != 0) {
            output.writeUInt32(8, packetsLost_);
        }
        if (java.lang.Double.doubleToRawLongBits(packetLossRate_) != 0) {
            output.writeDouble(9, packetLossRate_);
        }
        if (java.lang.Float.floatToRawIntBits(packetLossPercentage_) != 0) {
            output.writeFloat(10, packetLossPercentage_);
        }
        if (packetsDuplicate_ != 0) {
            output.writeUInt32(11, packetsDuplicate_);
        }
        if (java.lang.Double.doubleToRawLongBits(packetDuplicateRate_) != 0) {
            output.writeDouble(12, packetDuplicateRate_);
        }
        if (bytesDuplicate_ != 0L) {
            output.writeUInt64(13, bytesDuplicate_);
        }
        if (java.lang.Double.doubleToRawLongBits(bitrateDuplicate_) != 0) {
            output.writeDouble(14, bitrateDuplicate_);
        }
        if (packetsPadding_ != 0) {
            output.writeUInt32(15, packetsPadding_);
        }
        if (java.lang.Double.doubleToRawLongBits(packetPaddingRate_) != 0) {
            output.writeDouble(16, packetPaddingRate_);
        }
        if (bytesPadding_ != 0L) {
            output.writeUInt64(17, bytesPadding_);
        }
        if (java.lang.Double.doubleToRawLongBits(bitratePadding_) != 0) {
            output.writeDouble(18, bitratePadding_);
        }
        if (packetsOutOfOrder_ != 0) {
            output.writeUInt32(19, packetsOutOfOrder_);
        }
        if (frames_ != 0) {
            output.writeUInt32(20, frames_);
        }
        if (java.lang.Double.doubleToRawLongBits(frameRate_) != 0) {
            output.writeDouble(21, frameRate_);
        }
        if (java.lang.Double.doubleToRawLongBits(jitterCurrent_) != 0) {
            output.writeDouble(22, jitterCurrent_);
        }
        if (java.lang.Double.doubleToRawLongBits(jitterMax_) != 0) {
            output.writeDouble(23, jitterMax_);
        }
        com.google.protobuf.GeneratedMessage.serializeIntegerMapTo(output,
                internalGetGapHistogram(),
                GapHistogramDefaultEntryHolder.defaultEntry,
                24);
        if (nacks_ != 0) {
            output.writeUInt32(25, nacks_);
        }
        if (nackMisses_ != 0) {
            output.writeUInt32(26, nackMisses_);
        }
        if (plis_ != 0) {
            output.writeUInt32(27, plis_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
            output.writeMessage(28, getLastPli());
        }
        if (firs_ != 0) {
            output.writeUInt32(29, firs_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
            output.writeMessage(30, getLastFir());
        }
        if (rttCurrent_ != 0) {
            output.writeUInt32(31, rttCurrent_);
        }
        if (rttMax_ != 0) {
            output.writeUInt32(32, rttMax_);
        }
        if (keyFrames_ != 0) {
            output.writeUInt32(33, keyFrames_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
            output.writeMessage(34, getLastKeyFrame());
        }
        if (layerLockPlis_ != 0) {
            output.writeUInt32(35, layerLockPlis_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
            output.writeMessage(36, getLastLayerLockPli());
        }
        if (nackAcks_ != 0) {
            output.writeUInt32(37, nackAcks_);
        }
        if (nackRepeated_ != 0) {
            output.writeUInt32(38, nackRepeated_);
        }
        if (headerBytes_ != 0L) {
            output.writeUInt64(39, headerBytes_);
        }
        if (headerBytesDuplicate_ != 0L) {
            output.writeUInt64(40, headerBytesDuplicate_);
        }
        if (headerBytesPadding_ != 0L) {
            output.writeUInt64(41, headerBytesPadding_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
            output.writeMessage(44, getPacketDrift());
        }
        if (((bitField0_ & 0x00000080) != 0)) {
            output.writeMessage(45, getReportDrift());
        }
        if (((bitField0_ & 0x00000100) != 0)) {
            output.writeMessage(46, getRebasedReportDrift());
        }
        getUnknownFields().writeTo(output);
    }
<pre>
NEXT_ID: 47
</pre>

<code>.livekit.RTPDrift rebased_report_drift = 46;</code>
turms-plugins/turms-plugin-livekit/src/main/java/im/turms/plugin/livekit/core/proto/models/RTPStats.java