Applying a Custom Resolution

All BrightSign operating systems from 8.3 on support custom video modes in Series 3 and later hardware platforms.

Modeline Format

Modeline is a configuration line that delivers information to the server about a connected display and how it should be driven at the specified display resolution. The modeline format follows XFree86_Modeline:

Notes

  • The horizontal and vertical sync flags (hsync and vsync) are required, but other flags are not supported.

  • Only progressive video modes are supported (not interlaced video modes).

  • The pixel clock frequency will be rounded to the nearest 0.25MHz.

There are several ways to calculate a modeline:

  • The cvt command line program, which is available on Linux, generates modelines in the correct format (though you must remove the quotation marks around the mode name). Use the -r flag, which reduces blanking.

  • EDID Information in the Video tab of the BrightAuthor:connected DWS, and the edid hdmi BrightSign command line, both output the Detailed Descriptor Mode (DTD) EDID entries in the modeline format. You can connect a screen, query the EDID, and use the resulting modeline as your custom modeline.

  • You can create your own modeline from the documentation for a particular screen.

Custom Mode

Setting videomode to custom means that the stored modeline will be used. The configured mode will always be 8 bits per color and RGB. For modes where the pixel area is greater than 2.5 million, the graphics layer will be a quarter size and upscaled by default. Setting the mode to custom:fullres forces a full resolution graphics layer as with the higher resolution preset modes. Some players don't allow fullres modes - see Full-Resolution Graphics for more information. 

Enabling Custom Resolutions in BrightScript

Use SetCustomModeline() in roVideoMode to parse the modeline, check that it is within the supported range, and then store the value in the registry. The new modeline is only active when the videomode is set to custom and, as with most videomode changes, it requires an application restart. Methods like GetConfiguredMode will return the width, height, and calculated frame rate from the custom mode. See the examples at the bottom of this page.

Enabling Custom Resolutions in JavaScript

The videomodeconfiguration class contains setCustomModeline(), which returns whether or not a restart is required. If the videomode is already set to custom, a restart will be required.

For example:

VMC = require("@brightsign/videomodeconfiguration"); let video_config = new VMC; let modelinesuccess = await video_config.setCustomModeline("Modeline 3440x1440R 319.75 3440 3488 3520 3600 1440 1443 1453 1481 +hsync -vsync"); let modesuccess = await video_config.setMode({modeName: "custom"})

Modeline Limitations

BrightSign players support any videomode which has:

  • A width between the narrowest and widest of any of the preset videomodes (for example, between 640 and 4096 on 4K players).

  • A height between the shortest and tallest of any of the preset videomodes (for example, between 288 and 2160 on 4K players).

  • A pixel clock frequency between 25.0MHz and 594.0MHz for 4K players, or between 25.0MHz and 200.0MHz for HD players

Examples

See https://github.com/brightsign/video-mode-plugin/tree/master for example video-mode plugins for single and multi HDMI® output models.