For consistency, resolution now always refers to a resolution defined in pixels as width/height (e.g. [1920, 1080])
For consistency, video mode now always refers to the shorthand resolution and optional frame rate (e.g. 1080p60)
Some methods have been added to directly support the immediate need of Netflix's Firebolt implementation
These are marked below with asterisk *
Newly added methods
Device
audioFormatPossible: Check whether content of a given audio format and channel output is supported by the device regardless of its configuration, e.g. bool
audioFormatSupported: Check whether content of a given audio format is supported by the device's current configuration, e.g. bool
*bluetoothController: Get details about the device's Bluetooth controller, returns BluetoothController
*chipset: Get the device's chipset, returns string
currentHDCPStatus: Get the current HDCP status used for content transmission, returns HDCPStatus
currentHDRProfile: Returns the current HDR profile set on the device, e.g. hdr10
currentVideoOutputMode: Returns the current video output mode of the device, e.g. 1080p60
defaultNetworkInterface: Get the device's default network interface, returns NetworkInterface
*forceHDRMode: Sets whether the HDR mode currently configured on the device is used, returns bool
*hdmiOutputPort: Get the name of the device's HDMI output port, e.g. HDMI0
*networkInterfaces: Get a list of the device's network interfaces and statuses, returns [NetworkInterface]
*networkSettings: Get an interface's network settings, returns NetworkSettings
*rf4ceController: Get details about the device's RF4CE controller, returns RF4CEController
supportedAudioOutputModes: Returns an array of valid audio output modes that the device supports, regardless of any connected peripherals, e.g. [mono, stereo]
supportedHDCPVersion: Get the HDCP version supported by the device, e.g. 2.2
supportedHDRProfiles: Returns the HDR profiles supported by the device, e.g. [hdr10, hdr10plus, hlg]
supportedVideoOutputModes: Returns an array of valid video output modes that the device supports, regardless of any connected display, e.g. [1080p50, 1080p60]. Previously referred to Device.supportedResolutions in the requirements doc.
videoFormatPossible: Check whether video content of the given format is supported by the device regardless of its configuration, returns bool
videoFormatSupported: Whether video content of the given format is supported by the device's current configuration, returns bool
Display
*edid: Get the display's Extended Display Identification Data (EDID), returns string
*refreshRate: Get the native refresh rate of the display device (in Hz), e.g. 60
supportedColorDepths: Get the supported color depth of the display device in bits, e.g. [8, 10]
supportedHDRProfiles: Returns an array of valid HDR profiles that the display supports, e.g. [dolbyVision,hdr10,hdr10plus,hlg]
HDMI CEC
*activeHDMISource: Whether or not the device is currently the active HDMI source, returns bool
*onActiveSourceStatusChanged: Get notified when active HDMI source changes, returns bool
Media Info
These methods accept a single param, the pipeline ID:
audioChannels: Get the number of audio channels currently used by the specified media pipeline, e.g. 2
audioCodec: Get the audio codec currently used by the specified media pipeline, e.g. ac3
audioCodecLevel: Get the audio codec level currently used by the specified media pipeline, e.g. 5.1
audioCodecProfile: Get the audio codec profile currently used by the specified media pipeline, e.g. high
audioContainer: Get the audio container currently used by the specified media pipeline, e.g. m4a
audioSampleRate: Get the audio sample rate in kHz currently used by the specified media pipeline, e.g. 48
videoCodec: Get the video codec currently used by the specified media pipeline, e.g. h265
videoCodecLevel: Get the video codec level currently used by the specified media pipeline, e.g. 5.1
videoCodecProfile: Get the video codec profile currently used by the specified media pipeline, e.g. high
videoContainer: Get the video container currently used by the specified media pipeline, e.g. mp4
videoHDRProfile: Get the High Dynamic Range (HDR) profile currently used by the specified media pipeline, e.g. hdr10plus
videoResolution: Get the video resolution currently used by the specified media pipeline, e.g. [1920, 1080]
The following are similar to above, but return a list of values for all media pipelines:
activeAudioChannels
activeAudioCodecs
activeAudioCodecLevels
activeAudioCodecProfiles
activeAudioContainers
activeAudioSampleRates
activeVideoCodecs
activeVideoCodecLevels
activeVideoCodecProfiles
activeVideoContainers
activeVideoHDRProfiles
activeVideoResolutions
TTS (Text-to-Speech)
cancel: Cancels the in-progress speech action. Triggers the onSpeechInterrupted event, returns bool
configuration: Get the current TTS (Text-To-Speech) configuration
onNetworkError: Triggered when a network error occurs while fetching audio from the endpoint, returns bool
onPlaybackError: Triggered when an error occurs during playback, returns bool
onSpeechComplete: Triggered when the speech attempt is complete, returns bool
onSpeechInterrupted: Triggered when the in-progress speech is interrupted, returns bool
onTTSStateChanged: Triggered when the TTS feature is enabled or disabled, returns bool
speak: Converts the input text to speech when TTS is enabled, returns a speechID
status: Returns the status of the TTS (Text-To-Speech) feature, returns TTSStatus
Deprecated Methods
Device.audio: Get the supported audio profiles. Team decided to deprecate boolean map methods
Device.hdcp: Get the supported HDCP versions available for content transmission. Team decided to deprecate boolean map methods. Superceded by Device.supportedHDCPVersions
Device.hdr: Returns an array of valid HDR profiles that the device supports. Team decided to deprecate booleanMap methods. Superceded by Device.supportedHDRProfiles
Device.screenResolution: Removed in favor of the more descriptive Device.videoResolution or Display.currentResolution
Open questions
Do we need both Display.currentResolution and Display.optimalResolution?
Isn't the display resolution the optimal/max resolution possible?
I can see aspect ratio being configurable on a display, but not the resolution
There's an AudioOutput module for getting information on the available audio system
Should we have a similar VideoOutput module, and move some of the video-centric methods from Device there?
For the MediaInfo methods, is the default pipeline value 0 or 1? And is the range still 0...15?
Since we want to avoid returning objects, what should the media info activeAudioFormats and activeVideoFormats methods return? The spec says to return an object, but offline discussions suggest we don't do that. Until that's resolved, the following methods are not yet added:
MediaInfo.activeAudioFormats
MediaInfo.onActiveAudioFormatsChanged
MediaInfo.activeVideoFormats
MediaInfo.onActiveVideoFormatsChanged
TTS.onTTSStateChanged: why does the thunder event take a bool param?
Do the TTS methods need to respond with the TTSStatus each time? Can we omit that, as its availabe through getTTSConfiguration?
What capabilities should we use for the TTS methods? Might need to create them.
To merge into #141
Adds some new methods per the requirements doc.
The highlights are:
[1920, 1080]
)1080p60
)*
Newly added methods
Device
audioFormatPossible
: Check whether content of a given audio format and channel output is supported by the device regardless of its configuration, e.g.bool
audioFormatSupported
: Check whether content of a given audio format is supported by the device's current configuration, e.g.bool
*bluetoothController
: Get details about the device's Bluetooth controller, returnsBluetoothController
*chipset
: Get the device's chipset, returnsstring
currentHDCPStatus
: Get the current HDCP status used for content transmission, returnsHDCPStatus
currentHDRProfile
: Returns the current HDR profile set on the device, e.g.hdr10
currentVideoOutputMode
: Returns the current video output mode of the device, e.g.1080p60
defaultNetworkInterface
: Get the device's default network interface, returnsNetworkInterface
*forceHDRMode
: Sets whether the HDR mode currently configured on the device is used, returnsbool
*hdmiOutputPort
: Get the name of the device's HDMI output port, e.g.HDMI0
*networkInterfaces
: Get a list of the device's network interfaces and statuses, returns[NetworkInterface]
*networkSettings
: Get an interface's network settings, returnsNetworkSettings
*rf4ceController
: Get details about the device's RF4CE controller, returnsRF4CEController
supportedAudioOutputModes
: Returns an array of valid audio output modes that the device supports, regardless of any connected peripherals, e.g.[mono, stereo]
supportedHDCPVersion
: Get the HDCP version supported by the device, e.g.2.2
supportedHDRProfiles
: Returns the HDR profiles supported by the device, e.g.[hdr10, hdr10plus, hlg]
supportedVideoOutputModes
: Returns an array of valid video output modes that the device supports, regardless of any connected display, e.g.[1080p50, 1080p60]
. Previously referred toDevice.supportedResolutions
in the requirements doc.videoFormatPossible
: Check whether video content of the given format is supported by the device regardless of its configuration, returnsbool
videoFormatSupported
: Whether video content of the given format is supported by the device's current configuration, returnsbool
Display
*edid
: Get the display's Extended Display Identification Data (EDID), returnsstring
*refreshRate
: Get the native refresh rate of the display device (in Hz), e.g.60
supportedColorDepths
: Get the supported color depth of the display device in bits, e.g.[8, 10]
supportedHDRProfiles
: Returns an array of valid HDR profiles that the display supports, e.g.[dolbyVision,hdr10,hdr10plus,hlg]
HDMI CEC
*activeHDMISource
: Whether or not the device is currently the active HDMI source, returnsbool
*onActiveSourceStatusChanged
: Get notified when active HDMI source changes, returnsbool
Media Info
These methods accept a single param, the pipeline ID:
audioChannels
: Get the number of audio channels currently used by the specified media pipeline, e.g.2
audioCodec
: Get the audio codec currently used by the specified media pipeline, e.g.ac3
audioCodecLevel
: Get the audio codec level currently used by the specified media pipeline, e.g.5.1
audioCodecProfile
: Get the audio codec profile currently used by the specified media pipeline, e.g.high
audioContainer
: Get the audio container currently used by the specified media pipeline, e.g.m4a
audioSampleRate
: Get the audio sample rate in kHz currently used by the specified media pipeline, e.g.48
videoCodec
: Get the video codec currently used by the specified media pipeline, e.g.h265
videoCodecLevel
: Get the video codec level currently used by the specified media pipeline, e.g.5.1
videoCodecProfile
: Get the video codec profile currently used by the specified media pipeline, e.g.high
videoContainer
: Get the video container currently used by the specified media pipeline, e.g.mp4
videoHDRProfile
: Get the High Dynamic Range (HDR) profile currently used by the specified media pipeline, e.g.hdr10plus
videoResolution
: Get the video resolution currently used by the specified media pipeline, e.g.[1920, 1080]
The following are similar to above, but return a list of values for all media pipelines:
activeAudioChannels
activeAudioCodecs
activeAudioCodecLevels
activeAudioCodecProfiles
activeAudioContainers
activeAudioSampleRates
activeVideoCodecs
activeVideoCodecLevels
activeVideoCodecProfiles
activeVideoContainers
activeVideoHDRProfiles
activeVideoResolutions
TTS (Text-to-Speech)
cancel
: Cancels the in-progress speech action. Triggers the onSpeechInterrupted event, returnsbool
configuration
: Get the current TTS (Text-To-Speech) configurationonNetworkError
: Triggered when a network error occurs while fetching audio from the endpoint, returnsbool
onPlaybackError
: Triggered when an error occurs during playback, returnsbool
onSpeechComplete
: Triggered when the speech attempt is complete, returnsbool
onSpeechInterrupted
: Triggered when the in-progress speech is interrupted, returnsbool
onTTSStateChanged
: Triggered when the TTS feature is enabled or disabled, returnsbool
speak
: Converts the input text to speech when TTS is enabled, returns aspeechID
status
: Returns the status of the TTS (Text-To-Speech) feature, returnsTTSStatus
Deprecated Methods
Device.audio
: Get the supported audio profiles. Team decided to deprecate boolean map methodsDevice.hdcp
: Get the supported HDCP versions available for content transmission. Team decided to deprecate boolean map methods. Superceded byDevice.supportedHDCPVersions
Device.hdr
: Returns an array of valid HDR profiles that the device supports. Team decided to deprecatebooleanMap
methods. Superceded byDevice.supportedHDRProfiles
Device.screenResolution
: Removed in favor of the more descriptiveDevice.videoResolution
orDisplay.currentResolution
Open questions
Display.currentResolution
andDisplay.optimalResolution
?Display.resolution
=>[w, h]
Display.currentAspectRatio
=>16:9
Device.currentVideoOutputResolution
=>[w, h]
Device.currentVideoOutputMode
=>1080p60
Device.supportedVideoOutputModes
=>[1080p60, ...]
(already specced)AudioOutput
module for getting information on the available audio systemVideoOutput
module, and move some of the video-centric methods fromDevice
there?MediaInfo
methods, is the default pipeline value0
or1
? And is the range still0...15
?activeAudioFormats
andactiveVideoFormats
methods return? The spec says to return an object, but offline discussions suggest we don't do that. Until that's resolved, the following methods are not yet added:MediaInfo.activeAudioFormats
MediaInfo.onActiveAudioFormatsChanged
MediaInfo.activeVideoFormats
MediaInfo.onActiveVideoFormatsChanged
TTS.onTTSStateChanged
: why does the thunder event take abool
param?TTSStatus
each time? Can we omit that, as its availabe throughgetTTSConfiguration
?