This document records all changes made to the Starboard interface, up to the current version, but not including the experimental version. This file will be updated each time a new Starboard version is released. Each section in this file describes the changes made to the Starboard interface since the version previous to it.
NOTE: Starboard versions 3 and below are no longer supported.
An extra version agnostic ffmpeg dynamic dispatch layer is added in order to support multiple different versions of ffmpeg as may appear on user systems.
While common Cobalt code still targets EGL/GLES2, we now use Angle on linux-x64x11 builds to translate those calls to GLX/GL calls. Thus, from the perspective of the system, linux-x64x11 builds now appear to use GLX/GL. This change was made because GLX/GL was generally found to have better desktop support than EGL/GLES2. The logic for this is added in the Starboard enable_glx_via_angle.gypi file.
Up until now, both Cobalt-specific build configuration options as well as application-independent Starboard build configuration options were mixed together within base.gypi. They have now been split apart, and the application independent options have been moved into Starboard under base_configuration.gypi. The Cobalt-specific options have been left in Cobalt, though renamed to
Please see contrib/README.md for description of expectations for contents in this directory.
This should indicate the friendly name of the microphone type.
Instead of the single generic kSbSocketErrorFailed to indicate socket errors, the enum kSbSocketErrorConnectionReset has been introduced corresponding to various dropped TCP connection errors. This is particularly useful in identifying socket errors that can be retried.
Identical to OCAP's
For platform media players that rely on using a URL (like an m3u playlist URL) for playback, add
SbPlayerCreateWithUrl() which takes in a URL, no video or audio configs, and no DRM system. Allow the DRM system to be set on a running SbPlayer exactly once for SbPlayers created with a URL. Also, since URL players will not expose codec information, use a custom
SbPlayerOutputModeSupportedWithUrl() to query player output mode support.
An event indicating that an
SbWindow's size has changed. The event data is
SbEventWindowSizeChangedData, containing a
These methods show, hide, focus, and blur a native on screen keyboard, determine if the on screen keyboard is shown, and set whether focus is kept to the on screen keyboard. The on screen keyboard also handles
kSbInputEventTypeInput, which use a new field
Previously: Planes of type
kSbDecodeTargetFormat2PlaneYUVNV12 were assumed to have the luma mapped to the alpha channel (
GL_ALPHA) and the chroma mapped to blue and alpha (
GL_LUMINANCE_ALPHA). However, some graphics systems require that luma is on
GL_RED_EXT and the chroma is on
This extends the
SbStorage interface with the ability to open named
SbStorageDeleteRecord with a
name parameter provides access to the old “default” record.
This extends the
SbInput interface with some enum values and data members to allow mouse, wheel, and more generic pointer input.
SbMediaAudioHeader::audio_specific_config will be a pointer instead of an array.
SbTimeZoneGetDstName() -- The Daylight Savings Time version of the time zone.
SbTimeZoneGetName() to be more flexible in what it is allowed to return.
Adds the convenience inline function, SbDecodeTargetNumberOfPlanesForFormat() to
kSbEventTypePreload event, and modifies the application state machine to utilize it.
SbSystemPlatformErrorType values specific to user status.
Add support for UYVY decode targets (e.g. YUV 422) via the
This adds SbKey codes for:
Adds a new event type --
kSbEventTypeLowMemory -- to allow a platform to signal that the application may soon be terminated due to low memory availability.
const is added to
key_statuses_changed_callback parameter to
SbDrmCreateSystem() to support MediaKeySession::keyStatuses and MediaKeySession::onkeystatuseschange.
Change the meaning of negative values for thumbstick position from bottom right to upper left.
starboard/speech_recognizer.h. This newly-introduced
starboard/speech_recognizer.h adds the on-device speech recognizer feature.
kSbSystemPropertyUserAgentAuxField to the
SbSystemPropertyId enum to allow platform-specific User-Agent suffix.
The following unused enum values are removed from
Feature introducing support for decode-to-texture player output mode, and runtime player output mode selection and detection. In
SB_IS_PLAYER_COMPOSITED now no longer need to be defined (and should not be defined) by platforms. Instead, these capabilities are detected at runtime via
SbPlayerOutputMode is introduced.
SbPlayerOutputModeSupported() is introduced to let applications query for player output mode support.
SbPlayerCreate() now takes an additional parameter that specifies the desired output mode.
SbPlayerSetBounds() must now be defined on all platforms, even if they don't support punch out (in which case they can implement a stub).
SbPlayerGetCompositionHandle() is removed.
SbPlayerGetTextureId() is replaced by the new
SbPlayerGetCurrentFrame(), which returns a
SbDecodeTargetIsOpaque()) are now replaced with
SbDecodeTargetInfo structure is introduced and is the return value type of
SbDecdodeTargetCreate() is now responsible for creating all its internal planes, and so its
planes parameter is replaced by
SbDecdodeTargetCreate() has its EGL types (
EGLContext) replaced by
void* types, so that
decode_target.h can avoid #including EGL/GLES2 headers.
SbDecodeTargetDestroy() is renamed to
SbDecodeTarget creation and destruction code on the application‘s renderer’s thread with the application‘s renderer’s
EGLContext current, Starboard implementations can now run arbitrary code on the application‘s renderer’s thread with its
SbDecodeTarget creation is now an implementation detail to be dealt with in other Starboard API functions that create
Support for setting the playback rate on an SbPlayer. This allows for control of the playback speed of video at runtime.
SbInputVector structure to contain float members instead of ints.
Deleted the vestigal struct
Enables the SbPlayer implementation to provide instructions to its user on how to store audio/video data. Encoded audio/video data is cached once being demuxed and may occupy a significant amount of memory. Enabling this feature allows the SbPlayer implementation to have better control on where encoded audio/video data is stored.
Use a unified implementation of
SbMediaCanPlayMimeAndKeySystem() based on
ticket parameter to
SbDrmSessionUpdateRequestFunc to allow distinguishing between callbacks from multiple concurrent calls.
SbSocketGetInterfaceAddress() is introduced to let applications find out which source IP address and the associated netmask will be used to connect to the destination. This is very important for multi-homed devices, and for certain conditions in IPv6.
SbPlayerSetBounds to use an extra parameter to indicate the z-index of the video so multiple overlapping videos can be rendered.
Media source buffer settings in Starboard.
In particular, the functions
SbAccessibilityGetTextToSpeechSettings() have now been introduced.
Additionally, a new Starboard event,
kSbEventTypeAccessiblitySettingsChanged, has been defined in
SbMediaColorMetadata is now defined and it contains HDR metadata. The field
SbMediaColorMetadata color_metadata is now added to
A new device type,
kSbSystemDeviceTypeAndroidTV, is added to starboard/system.h.
SbSpeechSynthesisSetLanguage() has been deprecated.
SbSystemRequestSuspend() in particular can be hooked into a platform's “hide” or “minimize” window functionality.
kSbSystemPathFontConfigurationDirectory which can be optionally specified for platforms that want to provide system fonts to Starboard applications. The font and font configuration formats supported are application-specific.
Added attribute macro
SB_NORETURN to allow functions to be marked as noreturn.
SB_NORETURN to declaration of
SbSystemBreakIntoDebugger, to allow it to be used in a manner similar to