BOS 5.x
5.1.65Â
Bug Fixes
The HDMI® output of XDx32 players is now fully compatible with the LG22M45 model from LG.
If an IP stream has multiple bitrate variants, the player no longer has a chance of switching to lower-bitrate variants during playback.
Video walls that use stretched HTML canvases now work correctly.
HTML <video> elements that have HWZ enabled are now cropped correctly when they extend beyond the boundaries of the HTML widget.
HTML <video> elements that alternate between IP streams and local files now work correctly.
Players now negotiate correctly with MJPEG streams that require authorization.
5.1.62
Bug Fixes
Publishing a presentation to a player during HTML playback no longer causes it to crash.
1920x1080x60p presentations no longer exhibit a slight pixel shift after every transition when the mouse cursor is enabled.
Touch events no longer have a chance of causing a white bar to flash at the bottom of the screen. This problem only occurred when the mouse cursor was disabled.
Passing 3D video to the 4K1142 via HDMI Input no longer causes the player to crash.
PNG images that are palletized and interlaced no longer have a reddish hue when displayed on top of a video zone.
HLS streaming playback no longer locks up if the HLS stream has a short playlist.
Players now correctly handle HLS streams that have multiple alternative URLs at the same bandwidth.
AES-encrypted HLS streams no longer exhibit video corruption during playback.
A player will no longer crash and reboot if it encounters a runtime error while running a .brs script using the Run() function. This bug only affected players that had serial console disabled.
Improvements
The CEA-608 closed-captions standard now supports CC1, CC2, CC3, and CC4 variations.
The SetLoopMode() method can now accept an associative array of parameters that allow it to handle situations where the video is synchronized but not looping seamlessly.
New roRtspStream.AddHeader() method allows you to add headers to streaming requests sent to URLs from the object instance. Conversely, the roRtspStream.ClearHeaders() method allows you to clear all headers from requests sent by the object instance.
5.1.54
Bug Fixes
When installed on 4Kx42 models, the Wireless Module now works more reliably on most channels.
Z-ordering is now applied correctly to video zones containing streaming video.
Players that are no longer part of a BrightWall now set their clocks correctly using the NTP/HTTP protocol.
DTCP-protected streams that are requested via RTSP now play correctly.
The 4K1042 no longer encounters file I/O errors with USB 2.0 storage devices.
Players now work with NEC AS192WM touchscreen models that have newer configurations.
The visibility:hidden CSS property now works with HTML <video> elements.
HTML <video> elements with the HWZ transform (i.e. video rotation) parameter enabled now display at the correct screen location and with the correct size.
The player no longer crashes if you include a trailing space with an HWZ attribute on an HTML <video> element.
The HTML <video> window no longer jumps briefly when transitioning between streaming videos.
Using SVG elements with HTML video and graphics no longer causes the player to crash.
The Tcpdump feature on the Diagnostic Web Server (DWS) no longer locks up when the network interface is busy.
The SSH port field on the DWS now displays the correct SSH port number.
Scripts that are run with the BrightScript Run() function can once again be interrupted by pressing Ctrl-C at the BrightScript debugger prompt.
Instantiating an roTextField objectthat is larger than the screen no longer causes object creation to fail.
The potential for deadlocks on the roMessagePort object has been resolved.
Misspelling the URL for an roRtspStream instance in the BrightScript debugger no longer results in an endlessly scrolling debugger prompt.
Improvements
The color spaces of HTML video and graphics now match.
Players that are part of a PTP synchronizations setup, but currently do not have a PTP master unit, now set their clocks correctly using HTTP/NTP.
5.1.48
New Features
New FormatJson() global function in BrightScript. This function allows you to format an associative array as a JSON string.
Support for recording and downloading Tcpdump files via the Diagnostic Web Server (DWS)
New time-to-live (TTL) parameter for multicast streams in Media Server destination URLs; this allows for propagation of multicast streams outside the local network:Â <protocol>://<ip_address>:<port>?maxbitrate=<value>&ttl=<value>
Support for Huawei E173 and E156G USB 3G modems
Bug Fixes
Stretched BrightWall presentations now work.
4k60p videos that use the 10-bit color profile (4:2:0) display correctly again.
Certain HLS streams no longer cause the player to crash.
HTML pages with certain types of content no longer cause memory leaks and crashing when loaded multiple times.
The Iguanaworks USB IR Transceiver no longer fails to work when other USB devices are connected to the player in certain configurations.
4Kx42 models now output 1920x1080x60p mode correctly when connected to LG 22M45 display models.
Switching between videos that have different audio sampling rates no longer causes problems with the HDMI output.
Rotated HTML video elements now display using the correct aspect ratio.
If multiple videos are played sequentially on an HTML page, the player now respects the native aspect ratio of each video.
Reusing an HTML video tag for multiple videos no longer causes the last frame of the previous video to display at the location of the next video.
Closing an HTML video window with closed captions no longer has a chance of causing a deadlock on the player.
The player no longer sends a spurious MEDIA_ERR_NETWORK message to the JavaScript console every time an HTML video ends.
The player no longer crashes if it attempts to load an HTML page containing JavaScript code for Google Analytics.
The BSSyncManager JavaScript object now works correctly when two HTML videos are being displayed.
The player no longer has a chance of crashing if it attempts to play a streaming MPEG-TS video with corrupted metadata.
Improvements
4Kx42 players can now play streaming H.265 videos that use the 10-bit color profile.
A presentation with a large number of Data Feeds (and/or Data Feeds with large chunks of text) will no longer experience choppy video playback when the Data Feeds are updated.
HLS streams from the BrightSign Media Server are now compatible with Mac devices.
BrightScript will now send a media-end event when an HLS stream ends unexpectedly (when the network goes down, for example).
The stability of the BSTicker JavaScript object has been improved.
5.1.40
New Features
Support for POSIX time-zone formats
Support for Huawei E173 and E156G USB 3G modems
Initial support for BrightSign Extensions
New roVideoPlayer.SetPlaybackSpeed() BrightScript method, which allows you to fast-forward and rewind video at various speeds, as well as play video in reverse.
New FormatJson() global function in BrightScript. This function allows you to format an associative array as a JSON string.
New SetPulseParams(), SetPulse(), and RemovePulse() methods for the roControlPort object. These methods allow you to specify blinking/pulsing behavior for LEDs connected to the GPIO port.
New AddMethodFromEvent() and AddMethodToFile() methods for the roHttpServer, as well as theGetMethod() method for the roHttpEvent object. These allow for complete support of RESTful HTTP methods on the BrightSign player.
Bug Fixes
BrightWall presentations that are set to Stretched now work with HDMI Input states.
Ticker zones with scrolling text no longer occasionally blink when a video is playing at the same time.
Calling the PlaySaticImage() method on two different instances of roVideoPlayer no longer causes the player to crash.
Performing more than one transform/rotation on a video window no longer causes video corruption.
Taking a screenshot of a presentation containing a transformed/rotated video no longer causes a brief glitch on screen.
When switching from HDMI Input to a video file, the player no longer displays a brief image of previous video playback.
If multiple videos are played sequentially on an HTML page, the player now respects the native aspect ratio of each video.
The player no longer sends a spurious MEDIA_ERR_NETWORK to the JavaScript console every time an HTML video ends.
Playback of multiscan .png images larger than 1280x1024 works again. This file type was not working on previous 5.1 versions of firmware.
The player will no longer crash if it attempts to display a corrupt .png file.
The player no longer has a chance of crashing when reading from a corrupt USB storage device.
When 4Kx42 players are booted up or rebooted, they no longer fail to connect to certain 4K display models.
Touch events no longer have a chance of causing a white bar to flash at the bottom of the screen. This problem only occurred when the mouse cursor was disabled.
Ticker zones with scrolling text no longer occasionally blink when a video is playing at the same time.
Playback of multiscan .png images larger than 1280x1024 works again. This file type was not working on previous 5.1 versions of firmware.
Improvements
You can now use the Diagnostic Web Server to set the time (in UTC or PST) of the player clock.
The Pause() and Resume() methods on the roVideoPlayer object now work with Enhanced Synchronization: Each method now accepts an associative array containing a SyncIsoTimestamp value.
HLS audio streams can now be cross-faded with the roAudioPlayerMx object.
When an HLS stream ends (whether naturally or due to network failure), the roVideoPlayer or roAudioPlayer instance will now generate a media-end event.
Instances of roMediaServer now include the esencoder: pipeline component, which can be used to encode elementary streams and stream them via RTSP.
The quality of video playback in the stream-the-display feature (via the display: component of the Media Server) has been greatly improved.
The roStorageInfo.GetStorageCardInfo() method now also returns the manufacturing date of an SD card (in "MM/YYYY" format).
You can now use the Diagnostic Web Server to set the time (in UTC or PST) of the player clock.
The Pause() and Resume() methods on the roVideoPlayer object now work with Enhanced Synchronization: Each method now accepts an associative array containing a SyncIsoTimestamp value.
5.1.33
New Features
Support for HDCP-protected content
Synchronized streaming video across multiple displays
Synchronized, multi-screen scrolling ticker (via BrightScript or JavaScript)
Synchronized HDMI input and streaming video across multiple displays
Closed captioning (CEA-608, CEA-708, and DVB) via HTML video
Support for the Elo 1523L multi-touch screen
Support for Huawei E173 and E156G USB 3G modems
New SetTimeServerIntervalSeconds() and GetTimeServerIntervalSeconds() methods for the roNetworkConfiguration object: Use these methods to configure how often the player checks in with NTP/HTTP time server to update its real-time clock (the default is 12 hours).
New ConfigureAsInput() and ConfigureAsOutput() functions for the BSControlPort JavaScript object: These functions allow for standard GPIO configuration.
Bug Fixes
It is again possible to rotate or transform videos that are 1920x1080.
Taking a screenshot of a transformed/rotated video no longer causes a momentary video glitch.
Performing more than one transform/rotation on a video window no longer causes video corruption.
The background bitmap displayed by a text zone no longer suffers from image corruption.
The Enable power saving mode command for monitors works again.
The real time clock on the HD222 and HD1022 no longer drifts by approximately 7 seconds every 24 hours. This problem only applied to non-networked units or units that did not communicate regularly with a time server.
JavaScript uses the correct local time zone again.
When connecting through a proxy, players can now use HTTPS to communicate to the BrightSign 
Network (or an HTTPS Simple File Network server) more than once.
Simple File Networking now works with servers that have SSLv3 completely disabled.
Players now correctly display the firmware update splash screen and video-mode test images. This fix applies to firmware updates from5.1.33 to a newer version.
The player will no longer crash if the Stop() method is called on an roAudioPlayerMx() instance.
roAudioEvent and roAudioEventMx messages are now delivered at correct intervals.
Calling the PlaySaticImage() method on two different instances of roVideoPlayer no longer causes the player to crash.
The player will no longer crash if it attempts to display a corrupt .png file.
Calling roHashGenerator.SetHmacKey() no longer makes it impossible to set the system clock.
The player no longer has a chance of crashing when reading from a corrupt USB storage device.
Players that utilize the HTML application cache no longer output false error messages to the system log.
Improvements
Strings now appear and disappear smoothly (without glitches or disappearing text) when modifications are made to the contents of a scrolling ticker.
The Info tab of the DWS now displays date, time, and timezone information.
The player can now display images taken by the screenshot feature.
At the BrightScript level, a media-end event is no longer sent when a video loops.Â
The DWS now includes any network neighborhood information (physical location and port/switch) gained via LLDP.
The DWS now indicates whether it is currently powered via PoE.
Instances of roMediaServer now include the esencoder: pipeline component, which can be used to encode elementary streams and stream them via RTSP.
If one player is acting as a streaming client and another player is acting as a Media Server, you can now use parenthesis to define the pipeline stages of the Media Server within the pipeline stages of the client. For example, the following client-side code would instruct the Media Server to decode HDMI input and stream it to the client, which would then save it as a file:Â (http://<BrightSign-Media-Server-IP>:<port>/hdmi:,encoder:),file:///hdmi.ts
The roStorageInfo.GetStorageCardInfo() method now also returns the manufacturing date of an SD card (in "MM/YYYY" format).
At the BrightScript level, a media-end event is no longer sent when a video loops.
Players can now display images taken by the screenshot feature.
Screenshots taken by the roVideoMode.Screenshot() method now use the EXIF container to include various information about the presentation and device.
It is now possible to display the full width of a portrait-mode HD (1080x1920) video at up to 4Kp24.
Playback now fails immediately if the device attempts to display a CMYK JPEG, which is not supported on BrightSign players.
5.1.16
New Features
New ConfigureAsInput() and ConfigureAsOutput() functions for the BSControlPort JavaScript object: These functions allow for standard GPIO configuration.
Bug Fixes
Playback of 10-bit H.265 videos now works.
Using roVideoPlayer.SetTransform() to rotate the video 180 degrees no longer causes the player to crash.
An roMediaServer instance with a default configuration now successfully streams files with the encryption=dtcp parameter.
The BSSerialPort, BSSyncManager, and BSControlPort JavaScript objects now use asynchronous callbacks. This prevents deadlocks caused by these objects.
Improvements
The DWS now includes any network neighborhood information (physical location and port/switch) gained via LLDP.
The DWS now indicates whether it is currently powered via PoE.
Screenshots taken by the roVideoMode.Screenshot() method now use the EXIF container to include various information about the presentation and device.
It is now possible to display the full width of a portrait-mode HD (1080x1920) video at up to 4Kp24.
Playback now fails immediately if the device attempts to display a CMYK JPEG, which is not supported on BrightSign players.
5.1.12 / 5.0.25
New Features
Support for the 960x960x60p video mode
Support for the .ogg container format
Support for the FLAC and Vorbis codecs
Support for the Franklin Wireless U600 3G modem
New GetFilePlayability() and GetProbePlayability() methods available for the roVideoPlayer object. These methods allow a script to determine if a media file is playable before attempting playback.
New roNetworkConfiguration.GetNeighborInformation() method, which allows players to retrieve location information from networked devices using the LLDP-MED protocol
New roIRReceiver and roIRTransmitter objects (for IR input/output over the 3.5mm IR port, DA15 GPIO port, and Iguanaworks USB IR transceivers). Note that the original roIRRemote object continues to work as before.
New roNetworkConfiguration.SetDialupInitString() method, which allows players to connect to an APN using a 3G modem
Â
Bug Fixes
Rather than returning Invalid, instances of roMediaStreamer now return an event when the file finishes streaming.
The performance measurement for HTTP downloads now reports correct figures for files that are 4GB or larger.
RTSP streaming now works when the server initializes with a connection address of 0.0.0.0.
Playing an HLS stream no longer causes a memory leak.
Streaming video that is played from an HTML page will no longer suffer from poor playback if it contains an audio track that the player can't decode. Note that this bug only occurs when there are two streaming videos on the page.
If the DHCP server is slow to respond when the player boots, players that are configured via Option 43 will now use the correct recovery URL, rather than running the default autorun.
The results of JavaScript console.log() commands are now correctly output to the WebKit Web Inspector.
The player will no longer crash if an invalid host name is passed to the BSDatagramSocket.SendTo() JavaScript function.
JavaScript BSIRReceiver events are no longer delayed if there are multiple key presses in a short succession.
Stream recording (i.e. writing an IP stream to a file) no longer fails if the PCR PID channel of the player is different from that of the audio/video file.
Players no longer fail to play MP3 files that are streamed using certain server configurations.
The POSIX strings for the CST2 and MST2 time zones are now formatted correctly.
Improvements
The Diagnostic Web Server now reports the IP address (or addresses) of the player, as well as any location, port, or switch information gained via LLDP.
It is now possible to specify the timeout period for connecting to a multicast streaming URL (e.g. "udp://239.192.0.0:1234/?timeout=200"). Specifying a shorter timeout period (the default is 500ms) can reduce delays in interactive events when the player is connecting to a multicast stream.
Drop-down lists are now supported in HTML pages.
Enabling the "HWZ" attribute for an HTML video element now positions that video in front of all images and graphics by default.
The "HWZ" attribute for HTML video elements can now include additional parameters that determine the z-index, luma key, and chroma key of the video.
The BSTicker JavaScript object now supports font customization using the SetFont() function.
JavaScript now has access to the functionality of the following BrightScript objects: roSyncManager, roMessagePort, roTextWidget, and roCecInterface (both sending and receiving).
In addition to sending arrays, the BSDatagramSocket JavaScript object can now send strings.
Different instances of roHtmlWidget no longer share security configurations for BrightScript JavaScript objects.
An index.html script that is used with the default autorun (i.e. placed in the root of the player storage without a presentation script) now has unrestricted access to BrightScript JavaScript objects.
The BrightSign implementation of WebKit now supports an SQL database API.
The roMediaServer object now raises an event whenever a client starts or stops streaming.
Multicast streaming from the player no longer has a delayed start if the network infrastructure is using IGMPv2.
Crash dumps are now sent using the proxy configuration settings of the player (if any).
5.0.27
Bug Fixes
If an HTML <video> element fails to play a specified multicast stream, it will now generate a "error" event that can then be handled by the JavaScript of the page.
Playing an HLS stream no longer causes a memory leak.
Opening a serial port via an roSerialPort instance will no longer cause serial console output, which is used for debugging scripts, to cascade to the right.
Â