First step toward RFC 4588 RTX retransmission with SSRC multiplexing
(#4671). This PR adds the config, the server-side groundwork, the tests
and the test tools. RTX negotiation, the uplink unwrap and the downlink
RTX send path come in a follow-up PR.
## Config
New per-vhost `nack_prefer_rtx` directive, off by default. It can be
overridden with `SRS_VHOST_RTC_NACK_PREFER_RTX`.
```
vhost __defaultVhost__ {
rtc {
nack_prefer_rtx on;
}
}
```
`rtc.rtx.conf` and `rtc.plain.conf` are sample configs for the two
modes. `regression-test.conf` turns RTX on.
## Server changes
- **NACK simulator fix:** simulated drops (and `drop_for_pt`) now happen
before SRTP unprotect. Before, a dropped packet had already been
unprotected, so its retransmission was rejected as a replay.
- SDP writes `a=ssrc-group` lines. `SrsRtxPayloadDes` uses the offered
clock rate and reads `apt` from the fmtp.
- A play NACK that names an RTX SSRC is ignored.
- RTX counters show up as cumulative totals in the `rtx=(s,r,u,p)` stats
group.
- Detailed NACK logs are compiled in only for `--simulator=on` or
debug-drop builds.
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>