fix(history): file each session under the real encoder, not "unknown"
FfmpegEncoder resolved the encoder name into its OWN StreamHealth instance, while the view model read CurrentHealth — a different object. So every recorded session was filed as "unknown", and the rate history's encoder key (evidence about NVENC says nothing about QSV) had nothing to key on. The name now travels on the encoder interface and the pump forwards it: IFfmpegEncoder.VideoEncoderName -> FramePump.EncoderName. Caught while adding it: reading _framePump.EncoderName from RefreshRateProposal throws, because that call runs at MainViewModel ctor line 354 and the pump is built at line 468. Eight tests failed with the same NullReferenceException, which took a while to see because the harness's test output is buffered — the first honest look at per-test logging named it in one line. Guarded; the history falls back to the last session's encoder for that tier, which is exactly the pre-first-session case the fallback already existed for. Tests: FramePumpTests gains the encoder-name assertion (null before start, h264_nvenc after), and the three fake encoders implement the new member. 675 pass, 0 warnings.
This commit is contained in:
@@ -29,11 +29,6 @@ public class StreamHealth
|
||||
public TimeSpan StreamDuration { get; set; }
|
||||
public string? LastError { get; set; }
|
||||
|
||||
/// <summary>The encoder the probe actually chose ("h264_nvenc", "libopenh264", …). Filled once the
|
||||
/// encoder starts, and the key the rate history is filed under — evidence about NVENC says nothing
|
||||
/// about QSV on another machine.</summary>
|
||||
public string? VideoEncoder { get; set; }
|
||||
|
||||
// YouTube-specific (liveStreams.status)
|
||||
public string? HealthStatus { get; set; } // "good", "ok", "bad", "noData"
|
||||
public string? HealthMessage { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user