- Generator: Detects missing packets and sends NACK requests
- Responder: Buffers sent packets and resends them when NACKed
Generator Interceptor
The generator monitors incoming RTP streams and sends NACK feedback for missing sequence numbers.Basic Usage
Configuration Options
GeneratorSize
GeneratorSize
Sets the buffer size for tracking sequence numbers. Must be a power of 2.Valid sizes: 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
GeneratorInterval
GeneratorInterval
Sets how often to check for missing packets and send NACKs.
GeneratorSkipLastN
GeneratorSkipLastN
Ignores the last N packets when generating NACKs to avoid requesting packets that may still be in flight.
GeneratorMaxNacksPerPacket
GeneratorMaxNacksPerPacket
Limits how many times a packet will be NACKed. Set to 0 for unlimited.
GeneratorStreamsFilter
GeneratorStreamsFilter
Filter which streams should generate NACKs.
Complete Example
Responder Interceptor
The responder buffers outgoing packets and resends them when it receives NACK feedback.Basic Usage
Configuration Options
ResponderSize
ResponderSize
Sets the buffer size for storing sent packets.Valid sizes: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
DisableCopy
DisableCopy
Disables packet copying for better performance when you’re not reusing buffers.
ResponderStreamsFilter
ResponderStreamsFilter
Filter which streams should respond to NACKs.
Complete Example
Using Both Together
For bidirectional communication, you typically need both generator and responder:How It Works
- Generator: Monitors incoming RTP packets and maintains a sequence number log
- Detection: Periodically checks for gaps in sequence numbers
- Request: Sends RTCP NACK packets requesting missing sequence numbers
- Responder: Receives NACK feedback and resends buffered packets
- Delivery: Missing packets are retransmitted to fill gaps
The generator uses a
receiveLog to track received sequence numbers, while the responder uses an rtpBuffer to store sent packets for potential retransmission.Performance Considerations
- Buffer Size: Larger buffers can handle more packet loss but use more memory
- Interval: Shorter intervals detect losses faster but generate more RTCP traffic
- Max NACKs: Limiting retries prevents wasting bandwidth on permanently lost packets
- Skip Last N: Reduces unnecessary NACKs for packets still in flight
The NACK interceptor works best with RTT-aware tuning. For high-latency networks, increase the interval and skip last N values.