private void OverlayInitialize() { OverlayDestroy(); mOverlay = new OverlayRender(new Point((int)Properties.Settings.Default.OverlayX, (int)Properties.Settings.Default.OverlayY), new Size(280, 30), 1000); mOverlay.TimerTick = Overlay_TimerTick; mOverlay.OnRender = Overlay_OnRender; }
public OverlayContext(OverlayRender render, YUVPlanes plane) { Plane = plane; Mode = render.Mode; Static = render.Invert ? new StaticContext(render.Overlay, render.Source, render.OverlayMask, render.SourceMask, plane) : new StaticContext(render.Source, render.Overlay, render.SourceMask, render.OverlayMask, plane); Source = Static.Source.Dynamic(); Overlay = Static.Overlay.Dynamic(); SourceInfo = Static.Source.GetVideoInfo(); OverlayInfo = Static.Overlay.GetVideoInfo(); TargetInfo = render.GetVideoInfo(); SourceMask = PrepareMask(Static.SourceMask, render.Source.GetVideoInfo()); OverlayMask = PrepareMask(Static.OverlayMask, render.Overlay.GetVideoInfo()); disposables.Add(render.Source); disposables.Add(render.Overlay); disposables.Add(render.SourceMask); disposables.Add(render.OverlayMask); disposables.Add(Static.Source); disposables.Add(Static.Overlay); disposables.Add(Static.SourceMask); disposables.Add(Static.OverlayMask); if (plane.IsChroma()) { TargetInfo = TargetInfo.Chroma; } DefaultColor = Plane.IsChroma() ? 0x808080 : TargetInfo.Info.IsRGB() ? 0 : 0x008080; BlankColor = render.BlankColor >= 0 ? render.BlankColor : TargetInfo.Info.IsRGB() ? 0 : 0x008080; if (Plane == YUVPlanes.PLANAR_U) { BlankColor <<= 8; } else if (Plane == YUVPlanes.PLANAR_V) { BlankColor <<= 16; } BlankColor &= 0xFFFFFF; dynamic PrepareMask(Clip mask, ExtraVideoInfo target) { if (mask != null) { if (!target.Info.IsRGB() && mask.IsRealPlanar()) { mask = mask.Dynamic().ExtractY(); } if (plane.IsChroma() && !target.ColorSpace.WithoutSubSample()) { mask = mask.Dynamic().BilinearResize(target.Chroma.Size); } disposables.Add(mask); } return(mask?.Dynamic()); } int Round(double val) => (int)Math.Round(val); }