Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 42 Next »

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:


ON THIS PAGE

Note that:

  • 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 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

Single HDMI Output Models

Use SetCustomModeline() in roVideoMode to parse the modeline and force a custom resolution:

vm=CreateObject("roVideoMode")
vm.SetCustomModeline("Modeline 3840x2160x60p 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync")
vm.SetMode("custom")

BrightSign GitHub also contains an example of how to set the video resolution, frame rate, color space, and depth.


Multi HDMI Output Models

Use SetScreenModes() in roVideoMode to initialize the HDMI output’s video_mode with Modeline for each connector, as in this example which sets two HDMI outputs with custom modelines:

vm=CreateObject("roVideoMode")
hdmi1={ name: "HDMI-1", video_mode: "Modeline 1360x768x60p 85.50 1360 1424 1536 1792  768 771 777 795  +hsync +vsync", transform:"normal", display_x: 0, display_y: 0, enabled: true }
hdmi2={ name: "HDMI-2", video_mode: "Modeline 1360x768x60p 85.50 1360 1424 1536 1792  768 771 777 795  +hsync +vsync", transform:"normal", display_x: 1920, display_y: 0, enabled: true }

' hdmi3={ name: "HDMI-3", video_mode: "Modeline 1360x768x60p 85.50 1360 1424 1536 1792  768 771 777 795  +hsync +vsync", transform:"normal", display_x: 0, display_y: 1080, enabled: true }
' hdmi4={ name: "HDMI-4", video_mode: "Modeline 1360x768x60p 85.50 1360 1424 1536 1792  768 771 777 795  +hsync +vsync", transform:"normal", display_x: 1920, display_y: 1080, enabled: true }

vm.SetScreenModes([hdmi1, hdmi2])





  • No labels