Introduction

There are a number of functional areas that are defined by and that interact with Device Settings, focusing primarily on resolution (or factors that impact resolution) including:

  • Video Output Ports and Video Output Port Configurations
  • HAVi HScreen Devices (Graphics, Background, Video), and associated coherent device resolution configurations (coherent configurations)
  • The display device (Television), it's resolution capabilities, and its ability to communicate with the OCAP stack
  • DFC transforms (??) for final display

Detailed Architecture Diagrams can be found here.

A DS Diags Test Xlet has been developed, more information can be found here

This remainder if this page describes these various areas, and how they interact with and impact each other

Video Output Ports

  • Represents a physical port on the STB
  • w/o DS extensions, several simple queries/actions are available, via the VideoOutputPort class, including the following
    • enable(); disable(); status()
    • queryCapability(int) // DTCP. HDCP, rez restricted
    • getType()
    • getResolution(int) // VOP pix rez
  • The Device Settings specification defines the interface VideoOutputPortSettings (implementation required by all instances of VideoOutputPort), which adds the ability to configure the resolution of video output ports.  The methods defined by this interface include:
    • VideoOutputConfiguration [] getSupportedConfigurations()
    • isDynamicConfigurationSupported()
    • VideoOutputConfiguration  getOutputConfiguration()
    • setOutputConfiguration(VideoOutputConfiguration)
    • getAudioOutputPort()
    • addListener(VideoOutputPortListener)
    • removeListener(VideoOutputPortListener)
    • bool isContentProtected()
    • getDisplayAttributes()
    • bool isDisplayConnected()
    • getDisplayAspectRatio()

The Main Video Output Port

When an application sets the output video resolution for a main video output port or changes the main video output port such that the output video configuration changes, the implementation SHALL ensure that the aspect ratio of the HScreen associated with the video output port matches the aspect ratio of the video output resolution of the video output port. A change in HScreen aspect ratio SHALL be reflected in configuration changes for each component full-screen HScreenDevice, and any change in configuration SHALL be signaled by delivery of appropriate HScreenConfigurationEvents. HScreenDevice configuration changes due to video output configuration changes for the main video output port are implementation-dependant beyond the requirement that they reflect the aspect ratio of the video output port. If one or more applications has reserved any of the screen devices, the implementation SHALL release those reservations by calling the release() method on the respective ResourceClients, prior to changing any of the HScreenConfigurations.

Note that the converse is not implicitly true. There is no requirement that HScreenDevice configuration changes implicitly affect video output configuration.

Video Output Port Configuration

  • A video output port will have one or more associated resolution configurations (array of classes that implement the VideoOutputPortConfiguration interface). 
  • All of the configurations associated with a particular port represent valid configurations relative to the capabilities of that particular port.
  • Only one VideoOutputPortConfiguration is active for a VOP at any point in time.  The active configuration for a particular port can be set and queried via the VideoOutputPortSettings interface.
  • Every configuration has an associated name, which can be queried via the getName() method (the only method defined by the VideoOutputPortConfiguration interface.
  • An implementation of VideoOutputPortConfiguration may be either a fixed or a dynamic configuration
  • FixedVideoOutputConfiguration: an interface that extends the VideoOutputPortConfiguration interface.
    • defines the following single method getVideoResolution() SPS: how is rsln set?
  • DynamicVideoOutputConfiguration: a class that implements the FixedVideoOutputConfiguration interface.
    • Represents a set of mapped configurations that provide the ability to dynamically select an output resolution based on the resolution of the current input video
    • “An instance of DynamicVideoOutputConfiguration would mainly be used to allow for the HScreen resolution and the video output port resolution to closely match the resolution of the input video, generally with the intention of letting the display monitor connected to the output port manage aspect ratio conversions”
    • DynamicVideoOutputConfiguration’s are only valid for the current main video output port for a given HScreen. If a video output port is not the current main output port or ceases to be the main, then this configuration setting SHALL be effectively ignored and output resolution settings SHALL revert to an implementation-specific configuration.
    • Application of the input-to-output video resolution mapping described by an instance of DynamicVideoOutputConfiguration MAY result in configuration changes for the component HScreenDevices of the relevant HScreen as if the output resolution were selected via a static configuration.

The following diagram provides a graphical view of the video output port configuration environement.  This particular example show two VOPs. 

The VOP on the left is NOT the main VOP, it has 3 configurations associated with it (2 static, one dynamic), and the active configuration is #2.  If you queried the resolution of this VOP via VideoOutputPortConfiguration->getResolution(), 720x1080 would be returned.

The VOP on the right IS the main VOP, and thus the port through which video is currently being displayed.  This VOPs active configuration is #3 and is dynamic.  The example below involves an input video of resolution of 720x1080, which maps to a video output port resolution of 1080x1920.  If you queried the resolution of this VOP via VideoOutputPortConfiguration->getResolution(),1080x1920 would be returned.

Classes & Methods Associated with Video Output Configuration

Class
 

Config Methods and/or
Related Configuration Classes
 

Config Methods
 

Hscreen.HGraphicsDevice

  HgraphicsConfiguration

getPixelAspectRatio()
getPixelResolution()
getScreenArea()

Hscreen.HVideoDevice

HvideoConfiguration

Hscreen.HbackgroundDevice

HbackgroundConfiguration

VideoOutputPort

enable(); disable(); status()
queryCapability(int) // DTCP. HDCP, rez restricted
getType()
getResolution(int) // VOP pix rez

VideoOutputPortSettings

getSupportedConfigurations()
isDynamicConfigurationSupported()
VideoOutputConfiguration  getOutputConfiguration()
setOutputConfiguration(VideoOutputConfiguration)
getAudioOutputPort()
addListener(VideoOutputPortListener)
removeListener(VideoOutputPortListener)
isContentProtected()

                                     Implied:Display

getDisplayAttributes()
isDisplayConnected()
getDisplayAspectRatio()

VidioOutputPortConfiguartion()

getName()

<FixedVideoOutputConfiguration()

VideoResolution  getVideoResolution()

<DynamicVideoOutputConfiguration()

addOutputResolution( VideoResolution inRsln,
                                    FixedVideoOutputConfiguration outRsln)
FixedVideoOutputConfiguration  
      getOutputResolution(VideoResolution inputRsln)
Enumeration getInputResolutions()

Interaction HAVi Devices, Device Configurations, and Coherent Configurations

TBD

Video Output Port Runtime Configuration Changes

  • The configuration a VOP may change in one of two way’s
    • Explicit change to the currently active configuration associated with a VOP
    • A VOP with a Dynamic Configuration active, that experiences a change in the resolution in the input video

Effect on HAVi Devices

  • A change in VOP output characteristic (static or dynamic) may result in the need to adjust the aspect ratio of the HScreen
    • 5.2.3 Main Video Output Port: “the implementation SHALL ensure that the aspect ratio of the HScreen associated with the video output port matches the aspect ratio of the video output resolution of the video output port
    • 5.2.3 Main Video Output Port: A change in HScreen aspect ratio SHALL be reflected in configuration changes for each component full-screen HScreenDevice, and any change in configuration SHALL be signaled by delivery of appropriate HScreenConfigurationEvents.
  • The converse in not true: a change in the HScreen configuration does not imply a forced changed for the VOP configuration
    • 5.2.3 Main Video Output Port: “Note that the converse is not implicitly true. There is no requirement that HScreenDevice configuration changes implicitly affect video output configuration.”

Fixed Configuration Changes

5.2.5 Output Port Status

Applications MAY subscribe to receive notification of changes to the status of a given video output port. Subscribed listeners SHALL be notified of status changes after the Host recognizes such changes. Where status changes cannot be recognized (for example, connection status may not be available depending upon the port type), listeners SHALL not be notified.

 Automatic Dynamic Configuration Changes

 5.2.4 Dynamic configuration of video output port setting

An OCAP host MAY support automatically setting the video output resolution for a video output port based on the video resolution/aspect ratio of the input video. This functionality MAY be used by applications to use the zoommode settings of a TV connected to the video output port instead of using the zoom-mode settings of the STB. This functionality is available only on a main Video Output Port. When resolution of the video output port is dynamically changed, the aspect ratio of the HScreen and the resolution of HScreen devices are also changed, according to the rules specified in Section 5.2.3 of this specification.

Impact of the Display Device (i.e Television) Capabilities

TBD

DFC Transforms

TBD

  • No labels