fix(stream): preserve live outputs and disable idle exit by default

Preserve RTP/RTMP session continuity across upstream stream_reset events by
forcing a keyframe on restart, remapping live timestamps, and keeping live
outputs open when the runtime requests reset continuity.

Disable idle auto-exit by default by changing ingest_idle_timeout_ms to 0,
removing validation that rejected 0, and only enforcing idle shutdown when a
positive timeout is configured in pipeline and ingest loops.

Also suppress libavformat FLV trailer header backfill attempts on RTMP sockets
and update the RTP output tester for the newer publisher create signature.

Docs are updated to state that 0 disables the idle timeout.
This commit is contained in:
2026-04-09 12:17:54 +08:00
parent 0a3da46f19
commit 965b03c053
9 changed files with 357 additions and 165 deletions
@@ -108,8 +108,9 @@ struct LatencyConfig {
std::size_t queue_size{1};
bool realtime_sync{true};
bool force_idr_on_reset{true};
bool keep_stream_on_reset{false};
std::uint32_t ingest_max_frames{0};
std::uint32_t ingest_idle_timeout_ms{1000};
std::uint32_t ingest_idle_timeout_ms{0};
std::uint32_t ingest_consumer_delay_ms{0};
std::uint32_t snapshot_copy_delay_us{0};
std::uint32_t emit_stall_ms{0};