Drivers Portrait Displays



After you've connected your Windows 10 PC to external displays, you can adjust the settings for each one.

Video: Connecting a monitor

Here's a video on the basics of connecting to an external monitor.

  1. N VIDIA®'s NVRotate™ -bundled with all NVIDIA WinXP Drivers for desktop, workstation, platform, and mobile solutions-allows users to pivot any display connected to an NVIDIA GPU from landscape to portrait mode, for easier information and application viewing.
  2. Portrait Displays branded C6 HDR2000 not connecting to Calman Panasonic AutoCal: ISFCCC Network option not shown in Lock (Picture) Settings menu Taking screenshots of CalMAN.

Before you start

About Portrait Displays Portrait Displays, Inc., since 1993, is a leading application software provider (ASP) for PC, smartphone, and tablet displays. The Portrait Displays team now includes SpectraCal, the world’s leading provider of video display calibration software. The combined companies offer value-added, feature-rich solutions. Calman Display Calibration Software directly controls many hardware devices, including light meters, pattern sources, LUT processors, and display devices. The control interface to these devices may be USB, RS-232 serial, or wired or wireless network IP connections. HP VH240a 23.8-Inch Full HD 1080p IPS LED Monitor with Built-In Speakers and VESA Mounting, Rotating Portrait & Landscape, Tilt, and HDMI & VGA Ports (1KL30AA) - Black 4.7.

Before changing settings for your external displays, make sure everything is connected properly. Here's what you can do:

  • Make sure your cables are properly connected to your PC or dock.

  • Check for Windows updates. To check for updates, select Start > Settings > Updates & Security > Windows Update > Check for updates.

Tip: If you're using a wireless display adapter, connect to an HDMI port on newer TVs, then wirelessly connect your PC to it. After connecting your wireless display adapter to your TV, go to your Windows 10 PC and select Start > Settings > System > Display, then select Connect to a wireless display.

Rearrange your displays

Portrait

You'll see this option when Windows detects more than one display. Each display will be numbered to help you identify them more easily.

Identify a display

To see which number corresponds to a display, select Start > Settings > System > Display > Rearrange your displays, then select Identify. A number appears on the screen of the display it's assigned to.

Detect a display

If you connected another display and it isn't showing in Settings, select Start > Settings > System > Display > Rearrange your displays, then select Detect.

Arrange your displays

If you have multiple displays, you can change how they're arranged. This is helpful if you want your displays to match how they're set up in your home or office. In Display settings, select and drag the display to where you want. Do this with all the displays you want to move. When you're happy with the layout, select Apply. Test your new layout by moving your mouse pointer across the different displays to make sure it works like you expect.

Change display options

After you're connected to your external displays, you can change settings like your resolution, screen layout, and more. To see available options, select Start > Settings > System > Display.

Change orientation

Windows will recommend an orientation for your screen. To change it in Display settings, go to Scale and Layout, then choose your preferred Display orientation. If you change the orientation of a monitor, you'll also need to physically rotate the screen. For example, you'd rotate your external display to use it in portrait instead of landscape.

Choose a display option

To change what shows on your displays, press Windows logo key + P. Here's what you can choose.

If you want to

Choose

See things on one display only.

PC screen only

See the same thing on all your displays.

Duplicate

See your desktop across multiple screens. When you have displays extended, you can move items between the two screens.

Extend

See everything on the second display only.

Second screen only

Related topics

  • Simply Windows on Youtube - These videos are only available in English

-->

Important

The Auto-correct method discussed later in this topic is the recommended solution to non-reference orientation mounting of camera sensors. This is to ensure app compatibility since the majority of the applications already written to use camera feeds do not know to check for, nor correct for rotation information. Please carefully review the information in the auto-correct section below.

As different form factors computing devices are introduced, some of the physical constraints result in camera sensors being mounted in a non-traditional orientation. Because of this, it is necessary to properly describe to the OS and application, how the sensors are mounted so the resulting video can be rendered/recorded properly.

Starting with Window 10, version 1607, all camera drivers are required to explicitly specify the camera orientation regardless if the camera is mounted in accordance with the Minimum hardware requirements.Specifically, a camera driver must set a newly introduced field, Rotation, in the ACPI _PLD structure associated with a capture device interface:

For camera, the Rotation field in an ACPI _PLD structure specifies the number of degrees ('0' for 0°, '2' for 90°, '4' for 180°, and '6' for 270°) a captured frame is rotated relative to the screen while the display is in its native orientation.

Based on the value in the Rotation field, an application can perform additional rotation, if necessary, in order to render captured frames correctly.

Rotation Values

For those devices whose cameras and displays share the same housing (or enclosure/casing), it is possible to have these peripherals be mounted on different surfaces with each of them being rotated by a fixed yet arbitrary degrees on its respective plane. Consequently, an application needs a mechanism to describe the spatial relationship between the two peripherals such that a captured frame can be transposed onto the rendering surface in the correct orientation.

One way to solve the problem is to use the ACPI _PLD structure which already has the concepts of surface and degrees of rotation defined. For example, the _PLD structure already has panel field which specifies the surface on which a peripheral reside:

Definition of ACPI _PLD Panel field (Rev. 5.0a)

Drivers Portrait Displays

The next two diagrams illustrate the definition of each panel visually:

Panel definitions for desktop PCs and most devices

Panel definitions for foldable devices

In fact, the concept of an ACPI 'panel' is already adopted by Windows where:

  • A camera device interface is associated with a _PLD structure with the Panel field being set accordingly if a capture device is statically mounted at a fixed location.

  • An application can retrieve the panel on which a capture device resides by calling the Windows.Devices.Enumeration.DeviceInformation.EnclosureLocation.Panel property.

The ACPI _PLD structure also has a Rotation field defined as follow:

Definition of ACPI _PLD Rotation field (Rev 5.0a)

Instead of using the definition above as is, we further refine it to avoid ambiguity:

  • For camera, the Rotation field in an ACPI _PLD structure specifies the number of degrees (‘0’ for 0°, ‘2’ for 90°, ‘4’ for 180°, and ‘6’ for 270°) a captured frame is rotated relative to the screen while the display is in its native orientation.

Landscape Primary vs Portrait Primary

In Windows, one can query the native display orientation by calling the property, Windows.Graphics.Display.DisplayInformation.NativeOrientation, which returns either Landscape or Portrait:

No matter which value NativeOrientation returns, the logical display scanning pattern starts from the top-left corner of the display moving from left to right downwards (see Figure 5). For those devices whose default physical orientation is inexplicit, this property not only implies the location of an ACPI Top panel but also provides the spatial relationship between a camera output buffer and the rendering surface.

Note that, unlike camera, the NativeOrientation property is not based on ACPI and thus does not have a _PLD structure. This is true even if a display is statically mounted to a device.

When mounting on a Portrait Primary device, camera drivers must be aware that most applications will treat the device as outputting a landscape camera output buffer regardless of the actual camera output buffer orientation. Because of this, we recommend that camera drivers output a camera buffer that has a 90 degree orientation offset from the NativeOrientation Portrait when on a Portrait Primary device. This will then allow applications that are performing this additional rotation on portrait devices to correct the rotation to the expected orientation. This can be verified using the Camera Application with Rotation Sample.

Offset Mounting

IHV/OEMs are strongly encouraged to avoid mounting the sensor in a non-0 degree offset to maintain app compatibility. Many existing and legacy apps do not know to look for the ACPI’s PLD table, nor will attempt to correct the non-0 degree offset. Consequently, for such apps the resulting video will be rendered incorrectly.

In cases where IHV/OEMs are unable to mount the sensor in 0 degree orientation as described above, the following mitigation steps are recommended in the order of preference:

  1. Auto-Correct the non-0 degree orientation within the Camera Driver (either in kernel mode with the AV stream miniport driver or in user mode using a plug in such as Device MFT or MFT0) so the resulting output frames are in the 0 degree orientation.

  2. Declare the non-0 degree orientation via FSSensorOrientation tag so the Camera Pipeline can correct the captured image.

  3. Declare the non-0 degree orientation in the ACPI’s PLD table as described above.

Compressed/Encoded Media Types

For Compressed and/or Encoded Media Types (such as MJPG, JPEG, H264, HEVC), pipeline correct cannot be used. Because of this, Compressed/Encoded Media Types will be filtered out if the FSSensorOrientation is set to a non-zero value.

In the case of MJPG media types (such as those from a UVC camera), the Frame Server pipeline provides an auto-decoded media type (NV12 or YUY2 for DShow based applications). The auto-decoded and corrected media type will be presented, but the original MJPG format will not.

[!NOTE!]If Compressed/Encoded Media Types must be exposed to applications, IHV/ODMs must not utilize the FSSensorOrientation correction. Instead, the correction must be done by the camera driver (either in kernel mode via the AV Stream driver or in user mode via DMFT/MFT0).

Auto-Correct via AV Stream Miniport/Device MFT/MFT0

The recommended scenario if the sensors cannot be mounted with a 0 degree offset, is to have the AV Stream miniport driver (or the user mode plug ins in the form of either DMFT or MFT0) correct the resulting captured frame so it is exposed to the pipeline in a 0 degree offset.

When correcting the video frame from the AV Stream Miniport and/or the Device MFT/MFT0 plug in, the resulting media type declaration must be based on the corrected frame. If the sensor is mounted at a 90 degree offset so the resulting video is 9:16 aspect ratio from the sensor, but the corrected video would be 16:9, the media type must declare the 16:9 aspect ratio.

This includes the resulting stride information. This is necessary as the component responsible for doing the correction is controlled by the IHV/OEM and the camera pipeline does not have visibility into the video frame except after it has been corrected.

It is strongly encouraged that the correction be done in user mode and the API contract between the pipeline and the user mode plugin must be followed. Specifically, when using either the DMFT or MFT0, when the IMFDeviceTransform::ProcessMessage or IMFTransform::ProcessMessage is invoked with a MFT_MESSAGE_SET_D3D_MANAGER message, the user mode plugin must adhere to the following guideline:

Drivers Portrait displaysDrivers portrait displays near me
  • If no D3D manager is provided (the ulParam of the message is 0), the user mode plugin must NOT invoke any GPU operations to handle the Rotation correction. And the resulting frame must be provided in system memory.
  • If D3D manager is provided (the ulParam of the message is the IUnknown of a DXGI Manager), that DXGI Manager must be used for Rotation correction and the resulting frame must be GPU memory.
  • The user mode plugin must also handle the D3D manager message during runtime. When the MFT_MESSAGE_SET_D3D_MANAGER message is issued, the next frame produced by the plugin must correspond to the requested type of memory (i.e., GPU if DXGI Manager was provided, CPU otherwise).
  • When the AV Stream driver (or the user mode plugin) handles the Rotation correction, the ACPI’s PLD structure’s Rotation field must be set to 0.

Note

When Auto Correct is used, OEMs and IHVs must NOT advertise the actual orientation of the sensor via the _PLD Rotation field. In this case, the Rotation field must indicate the orientation after the correction: 0 degrees.

Declare via FSSensorOrientation

By declaring the non-0 degree orientation of the sensor via the FSSensorOrientation registry tag, the camera pipeline can correct the captured frame before presenting it to the application.

The pipeline will optimize the rotation logic by leveraging GPU or CPU resources based on the use case and app request/scenario.

ACPI PLD Rotation

ACPI PLD structure’s Rotation field must be 0. This is to avoid confusing applications which may use the PLD information to correct the frame.

Media Type Information

Media Type presented by the driver must be the uncorrected media type. When informing the camera pipeline of the non-0 degree offset using the FSSensorOrientation entry, the media type information presented by the sensor must be the uncorrected media type. For example, if the sensor is mounted 90 degree clockwise offset, so instead of 16:9 aspect ratio, the resulting video is 9:16, the 9:16 aspect ratio media type must be presented to the camera pipeline.

Drivers

This is necessary to ensure the pipeline can correctly configure the counter rotation process: The pipeline needs the input media type and the desired output media type of the application.

This includes the stride information. The stride information must be presented for the uncorrected media type to the camera pipeline.

Registry Subkey

The FSSensorOrientation registry entry must be published on the Device Interface node. The recommended approach is to declare this as an AddReg directive during the AddInterface directive declaration in the camera driver’s INF.

The data presented in the FSSensorOrientation must be a REG_DWORD and the only valid values accepted will be 90, 180, and 270. Any other value will be treated as 0 degrees offset (i.e., ignored).

Each value represents the sensor orientation in degrees clockwise. The camera pipeline will correct the resulting video frame by counter rotating the video by the same amount counter clockwise: i.e., a 90 degree clockwise declaration will result in a 90 degree counter clockwise rotation to bring the resulting video frame back to 0 degree offset.

MS OS Descriptor 1.0

For USB based cameras, FSSensorOrientation may also be published via MSOS descriptors.

MS OS Descriptor 1.0 has two components:

  • A fixed-length header section
  • One or more variable length custom properties sections, which follows the header section

MS OS DESCRIPTOR 1.0 Header Section

The Header Section describes a single custom property (Face Auth Profile).

OffsetFieldSize (bytes)ValueDescription
0dwLength4<>
4bcdVersion20x0100Version 1.0
6wIndex20x0005Extended property OS descriptor
8wCount20x0001One custom property

Custom MS OS DESCRIPTOR 1.0 Property Section

OffsetFieldSize (bytes)ValueDescription
0dwSize40x00000036 (54)Total size (in bytes) for this property.
4dwPropertyDataType40x00000004REG_DWORD_LITTLE_ENDIAN
8wPropertyNameLength20x00000024 (36)Size (in bytes) of the property name.
10bPropertyName50UVC-FSSensorOrientation“UVC-FSSensorOrientation” string in Unicode.
60dwPropertyDataLength40x000000044 bytes for property data (sizeof(DWORD)).
64bPropertyData4Offset angle in degrees clockwise.Valid values are 90, 180, and 270.

Drivers Portrait Displays Software

MS OS Descriptor 2.0

MSOS Extended Descriptor 2.0 can be used to define the registry values to add FSSensorOrientation support. This is done using the Microsoft OS 2.0 Registry Property Descriptor.

Drivers Portrait Displays Near Me

For the UVC-FSSensorOrientation registry entry, the following shows a sample MSOS 2.0 descriptor set:

Declare via ACPI PLD Information

As an option of last resort, PLD information can be leveraged as described above to indicate to the application that the video frame must be corrected before being rendered/encoded. However, as stated, many existing applications do not use the PLD information nor handle the frame rotation, so there will be scenarios where apps may not be able to render the resulting video properly.

The following figures illustrate the values of the _PLD Rotation field for each hardware configuration:

Drivers Portrait Displays

Rotation: 0 degree clockwise

In the figure above:

  • The picture on the left illustrates the scene to capture.

  • The picture in the middle depicts how a scene is viewed by a CMOS sensor whose physical readout order starts from the bottom-left corner moving from left to right upwards.

  • The picture on the right represents the output of the camera driver. In this example, the content of the media buffer can be rendered directly while the display is its native orientation without additional rotation. Consequently, the ACPI _PLD Rotation field has a value of 0.

Drivers Portrait Displays Images

Rotation: 90 degrees clockwise

In this case, the content of the media buffer is rotated by 90 degrees clockwise compared to the original scene. As a result, the ACPI _PLD Rotation field has a value of 2.

Drivers Portrait Displays Display

Rotation: 180 degrees clockwise

In this case, the content of the media buffer is rotated by 180 degrees clockwise compared to the original scene. As a result, the ACPI _PLD Rotation field has a value of 4.

Rotation: 270 degrees clockwise

In this case, the content of the media buffer is rotated by 270 degrees clockwise compared to the original scene. As a result, the ACPI _PLD Rotation field has a value of 6.