namespace BizHawk.Emulation.Common { /// /// This service provides the ability to pass video output to the client /// If available the client will display video output to the user, /// If unavailable the client will fall back to a default video implementation, presumably /// a black screen of some arbitrary size /// public interface IVideoProvider : IEmulatorService { /// /// Returns a frame buffer of the current video content /// int[] GetVideoBuffer(); // put together, these describe a metric on the screen // they should define the smallest size that the buffer can be placed inside such that: // 1. no actual pixel data is lost // 2. aspect ratio is accurate /// /// Gets a value that together with , describes a metric on the screen /// they should define the smallest size that the buffer can be placed inside such that: /// 1. no actual pixel data is lost /// 2. aspect ratio is accurate /// int VirtualWidth { get; } /// /// Gets a value that together with , describes a metric on the screen /// they should define the smallest size that the buffer can be placed inside such that: /// 1. no actual pixel data is lost /// 2. aspect ratio is accurate /// int VirtualHeight { get; } /// /// Gets the width of the frame buffer /// int BufferWidth { get; } /// /// Gets the height of the frame buffer /// int BufferHeight { get; } /// /// Gets the vsync Numerator. Combined with the can be used to calculate a precise vsync rate. /// int VsyncNum { get; } /// /// Gets the vsync Denominator. Combined with the can be used to calculate a precise vsync rate. /// int VsyncDen { get; } /// /// Gets the default color when no other color is applied /// Often cores will set this to something other than black /// to show that the core is in fact loaded and frames are rendering /// which is less obvious if it is the same as the default video output /// int BackgroundColor { get; } } }