application/oipfCapabilities object

The oipfCapabilities embedded object is designed for use in HbbTV applications to determine the capabilities of the terminal device (such as a smart TV or set-top box). This object provides a standardised interface for applications to query device capabilities, helping developers tailor their applications to the specific hardware and software features of the user’s device.

Example of its usage are in the ‘Device capabilities and configuration‘ section of the HbbTV developer guide.

Properties

readonly Document xmlCapabilities
Returns the terminal’s capability description as an XML Document object using the syntax as defined in Annex F of the OIPF specification without using any namespace definitions.

Details given in section 10.2.4.7 of the HbbTV specification.

Root element: <profilelist>

Contains child elements specifiying the capabilities of the terminal.

  • <ui_profile>
    • Lists the capabilities of the terminal
    • Attributes:
      • name: list of the terminal capabilities separate, starting with the display capabilities (i.e. OITF_HD_UIPROF) . Each following capability starts with a “+”. Full details are here. Examples include
        • +META_EIT
        • +META_SI
        • +HTML5_MEDIA
        • +DVB_S
        • +DVB_T
        • +DRM
    • Child element: <ext>
      • <parentalcontrol>: the scheme used for parental control
      • <clientMetadata>
      • <temporalClipping>
      • <drm>
  • <audio_profile>
    • Describes support audio only profiles
    • Attributes
      • name: identifies the audio profile codec
      • type: Specifies the audio
  • <video_profile>
    • Describes a video profile supported by the terminal
    • Attributes
      • name: identifies the video codec, in the form [transport]__[resolution]_[frame rate]__[subtitles]
      • type: video document type
      • transport: optional transport for broadband video (e.g. “dash”)
      • sync_tl: optional (e.g. “temi”)
  • <html5_media>
    • A boolean setting, indicating if HTML 5 media is supported. This will be true for HbbTV 2.0.1 onwards.
  • <video_display_format>

The <html5_media> and <drm> elements may appear either in the <ext> element or in the <profilelist> element or both. Applications should check both locations.

Example output:

<profilelist xmlns="urn:hbbtv:config:oitf:oitfCapabilities:2017-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hbbtv:config:oitf:oitfCapabilities:2017-1 config-hbbtv-oitfCapabilities.xsd">
  <ui_profile name="OITF_HD_UIPROF+DVB_S+TRICKMODE">
    <ext>
      <parentalcontrol schemes="dvb-si">true</parentalcontrol>       
      <clientMetadata type="dvb-si">true</clientMetadata> <temporalClipping />
    </ext>
  </ui_profile>
  <audio_profile name="MPEG1_L3" type="audio/mpeg"/>
  <audio_profile name="HEAAC" type="audio/mp4"/>
  <audio_profile name="MP4_HEAAC" type="audio/mp4" transport="dash" sync_tl="dash_pr"/> 
  <video_profile name="MP4_AVC_SD_25_HEAAC" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_HD_25_HEAAC" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_SD_25_HEAAC_EBUTTD" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_HD_25_HEAAC_EBUTTD" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="TS_AVC_SD_25_E-AC3" type="video/mpeg" sync_tl="temi" /> 
  <video_profile name="TS_AVC_HD_25_E-AC3" type="video/mpeg" sync_tl="temi" />
  <video_profile name="MP4_AVC_SD_25_E-AC3" type="video/mp4" />
  <video_profile name="MP4_AVC_HD_25_E-AC3" type="video/mp4" />
  <video_profile name="MP4_AVC_SD_25_E-AC3" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_HD_25_E-AC3" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_SD_25_E-AC3_EBUTTD" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="MP4_AVC_HD_25_E-AC3_EBUTTD" type="video/mp4" transport="dash" sync_tl="dash_pr" />
  <video_profile name="TS_AVC_SD_25_HEAAC" type="video/mpeg" sync_tl="temi" /> 
  <video_profile name="TS_AVC_HD_25_HEAAC" type="video/mpeg" sync_tl="temi" /> 
  <video_profile name="MP4_AVC_SD_25_HEAAC" type="video/mp4" />   
  <video_profile name="MP4_AVC_HD_25_HEAAC" type="video/mp4" />   
  <html5_media>true</html5_media>
</profilelist>
readonly Number extraSDVideoDecodes
This property holds the number of possible additional decodes for SD video. Depending on the current usage of system resources this value may vary. The value of this property is likely to change if an HD video is started. Adding an A/V Control object or video/broadcast object may still fail, even if extraSDVideoDecodes is larger than 0. For A/V Control objects, in case of failure the play state for the A/V Control object shall be set to 6 (‘error’) with a detailed error code of 3 (‘insufficient resources’). For video/broadcast objects, in case of failure the play state of the video/broadcast object shall be set to 0 (‘unrealized’) with a detailed error code of 11 (‘insufficient resources’).

The values returned shall reflect the number of additional streams containing video accompanied by audio that are possible to decode and present. If decoding a video stream is possible but not accompanied by an audio stream then the decoding of that video stream shall not be included in the value returned. Video streams that can be decoded but not presented shall not be included in the value returned.

If the value returned is non zero then a call to play an A/V Control object or video/broadcast object or an HTML5 video element shall not fail due to lack of availability of media decoding resources if the call is made in that same spin of the event loop and if the video to be played is SD (for extraSDVideoDecodes) or HD (for extraHDVideoDecodes).
readonly Number extraHDVideoDecodes
This property holds the number of possible additional decodes for HD video. Depending on the current usage of system resources this value may vary. The value of this property is likely to change if an SD video is started. Adding an A/V Control object or video/broadcast object may still fail, even if extraHDVideoDecodes is larger than 0. For A/V Control objects, in case of failure the play state for the A/V Control object shall be set to 6 (‘error’) with a detailed error code of 3 (‘insufficient resources’). For video/broadcast objects, in case of failure the play state of the video/broadcast object shall be set to 0 (‘unrealized’) with a detailed error code of 11 (‘insufficient resources’).

The values returned shall reflect the number of additional streams containing video accompanied by audio that are possible to decode and present. If decoding a video stream is possible but not accompanied by an audio stream then the decoding of that video stream shall not be included in the value returned. Video streams that can be decoded but not presented shall not be included in the value returned.

If the value returned is non zero then a call to play an A/V Control object or video/broadcast object or an HTML5 video element shall not fail due to lack of availability of media decoding resources if the call is made in that same spin of the event loop and if the video to be played is SD (for extraSDVideoDecodes) or HD (for extraHDVideoDecodes)
readonly Number extraUHDVideoDecodes
This property holds the number of additional streams containing UHD video accompanied by audio that are possible to decode. Depending on the current usage of system resources this value may vary. The value of this property is likely to change if an SD or HD video is started. If decoding a video stream is possible but not accompanied by decoding an audio stream then the decoding of that video stream shall not be included in the value returned. Video streams that can be decoded but not presented shall not be included in the value returned.

If the value returned is non zero then a call to play an A/V Control object or video/broadcast object or an HTML5 video element shall not fail due to lack of availability of media decoding resources if the call is made in that same spin of the event loop. Otherwise playing an A/V Control object or video/broadcast object or an HTML5 video element may still fail, even if extraUHDVideoDecodes was larger than 0 when last read. For A/V Control objects, in case of failure the play state for the A/V Control object shall be set to 6 (‘error’) with a detailed error code of 3 (‘insufficient resources’). For video/broadcast objects, in case of failure the play state of the video/broadcast object shall be set to 0 (‘unrealized’) with a detailed error code of 11 (‘insufficient resources’). For an HTML5 video element, the request to present media through the media element shall have the error attribute set to a MediaError with code MEDIA_ERR_DECODE.

Methods

Boolean hasCapability (String profileName)
Checks if the HbbTV device supports the passed capability.

Returns true if the device supports the passed capability, false otherwise.

profileName valid values given in the table below.

Values for profileName are:

profileNameMeaning
+DLSupport for file download feature.
+PVRSupport for PVR feature.
+DRMSupport for the DRM feature – specifically that the XML capabilities include a <drm> element.
+IPCSupport for the “IP delivery CICAM player mode” as defined in the DVB Extensions to CI Plus ETSI TS 103 205 [37]. This is not support by HbbTV 2.0.4 and above.
+AFSSupport for the CICAM Auxiliary File System as defined in the DVB Extensions to CI Plus ETSI TS 103 205 [37].

NOTE: “+DRM” has a specific meaning in OIPF which it does not have in HbbTV.