- Socials: the dialog is a right-rail drawer (same pattern as Stream Info/YPP/TEST); the live-screen button is removed - Right rail: Stream Info (was Stream Settings) and YPP show the YouTube logo; Socials and TEST get icons; tab colors and label colors per spec - Top bar: EDIT toggle beside REC (orange when on, blue when off); going live on YouTube turns it off - Stream readouts (bitrate, FPS, dropped n (x.y%), Live hh:mm:ss, health) and the resolution dropdown moved to the top-left cell; bottom bar emptied at the same height - Webcam border drawing restored (it was removed with the CRT bezel change) - YouTube chat layer: border color, thickness, and opacity controls - Vertical 1080p30 tier added Not related to the fps gate yet; no gating is enforced.
21 lines
838 B
C#
21 lines
838 B
C#
using System.Globalization;
|
|
using System.Windows.Data;
|
|
|
|
namespace ytLive.Helpers;
|
|
|
|
public class DroppedPercentConverter : IMultiValueConverter
|
|
{
|
|
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
var dropped = values.Length > 0 && values[0] is int d ? d : 0;
|
|
var fps = values.Length > 1 && values[1] is double f ? f : 0;
|
|
var duration = values.Length > 2 && values[2] is TimeSpan t ? t : TimeSpan.Zero;
|
|
var total = fps * duration.TotalSeconds;
|
|
var percent = total > 0 ? dropped / total * 100 : 0;
|
|
return $"{dropped} ({percent.ToString("0.0", CultureInfo.InvariantCulture)}%)";
|
|
}
|
|
|
|
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
|
=> throw new NotSupportedException();
|
|
}
|