PDS-062491_SDVoE_Developers_API_Application_Note_Library_rev2p5
PDS-062491_SDVoE_Developers_API_Application_Note_Library_rev2p5
List of Figures
Figure 1: Multiview Mode in Relation to Quantization .............................................................................. 23
Figure 2: Quantization Management .......................................................................................................... 25
Figure 3 Block Diagram of Multiview Receiver Processing ......................................................................... 27
Figure 4: Example Multiview Layouts ......................................................................................................... 28
Figure 5: Multiview Example Use Case with 3 Sources and 2 Layouts ....................................................... 29
Figure 6: Two-Source Multiview Layout ..................................................................................................... 29
Figure 7: Two Video Source Layout – Illustrates Window Overlap in 5x5 tile grid (25 Tiles) ..................... 33
Figure 8: Illustration of Default Frame Buffer Surface Configuration......................................................... 34
Figure 9: Example of Surface Assignments ................................................................................................. 35
Figure 10: Example 4x4 Multiview Layout with a PiP Overlay .................................................................... 66
Figure 11: MV Transitions Use Case 1 - Single_Layout and Surface Usage ................................................ 68
Figure 12: MV Transitions Use Case 1 - Quad_Layout and Surface Usage ................................................. 69
Figure 13: MV Transitions Use Case 1 – Illustration of Memory Allocation Overlap.................................. 70
Figure 14: MV Transitions Use Case 2 – Illustration of Memory Allocation of Current Layout .................. 70
Figure 15: MV Transitions Use Case 2 – Illustration of Memory Allocation of the Quad Layout ............... 71
Figure 16: MV Transitions Use Case 2 – Illustration of Memory Allocation during the Transition ............ 72
Figure 17: MV Transitions Use Case 3 – Illustration of Memory Allocation of Current Layout .................. 73
Figure 18: MV Transitions Use Case 3 – Illustration of Memory Allocation of New Layout ....................... 74
Figure 19: MV Transitions Use Case 3 – Illustration of Memory Reallocation ........................................... 75
Figure 20: MV Transitions Use Case 4 – Current Memory Allocation of Single_Layout ............................. 76
Figure 21: MV Transitions Use Case 4 –Memory Allocation of PiP_Layout................................................ 77
Figure 22: MV Transitions Use Case 4 –Memory Allocation of PiPCorner_Layout..................................... 78
Figure 23: MV Transitions Use Case 4 –Memory Allocation of Quad5_Layout .......................................... 79
Figure 24: MV Transitions Use Case 4 –Memory Allocation of PaP_Layout ............................................... 80
Figure 25: MV Transitions Use Case 5 –Memory Allocation of Initial Quad_Layout .................................. 82
Figure 26: MV Transitions Use Case 5 –Memory Allocation of Quad7_Layout .......................................... 83
Figure 27: MV Transitions Use Case 5 –Memory Allocation of Quad8_Layout .......................................... 84
Figure 28: Illustration of Solution 1 ............................................................................................................ 85
Figure 29: Illustration Initial Layout of Solution 2....................................................................................... 87
Figure 30: Illustration the Second Layout Configuration for Solution 2 ..................................................... 88
Figure 31: Illustration of Window Reshuffling ............................................................................................ 89
Figure 32: Window Repositioning Solution -- Memory Allocation of Current Layout ................................ 90
Figure 33: Window Repositioning Solution -- Memory Allocation of New Layout ..................................... 91
PDS-062491 Rev 2.5 Page 7 of 224
SDVoE Developers API Application March 2023 The information contained herein is the exclusive property of Semtech and shall not
Note Library be distributed, copied, reproduced or disclosed in whole or in part without prior
written permission of Semtech or its licensees.
Figure 34: Block View of Decoder Processing ............................................................................................. 94
Figure 35: Illustration of Grid Indexes for a 3x2 Video Wall ....................................................................... 98
Figure 36: Original 16:9 Source Example .................................................................................................... 99
Figure 37: SI Wall KEEP Illustration ............................................................................................................. 99
Figure 38: SI Wall STRETCH Illustration....................................................................................................... 99
Figure 39: SI Wall CROP Illustration .......................................................................................................... 100
Figure 40: Illustration of Wall Tearing ...................................................................................................... 106
Figure 41: "Per Row Delay" to Reduce Wall Tearing ................................................................................ 106
Figure 42: Example of a 2x2 Wall Grid ...................................................................................................... 107
Figure 43: Illustration of set video Arguments Applied to RX4 of 2x2 Wall....................................... 109
Figure 44: Example without Bezel Compensation .................................................................................... 110
Figure 45: Example with Bezel Compensation.......................................................................................... 110
Figure 46: Example of Bezel Borders to Consider for a 3x3 Wall Grid ...................................................... 111
Figure 47: 2x2 Example of Rectangular Wall Grid with Bezel Compensation Applied ............................. 111
Figure 48: Example with AOI Size and x/y Coordinates Applied ............................................................... 112
Figure 49: Example of Source Different than Wall Aspect Ratio .............................................................. 112
Figure 50: Horizontal Example of Stretching Source to Fit Wall ............................................................... 113
Figure 51: Example of Cropping the Source.............................................................................................. 113
Figure 52: Example of Viewport Option Applied ...................................................................................... 118
Figure 53: Viewport Regions Illustrated for Example 3x2 16:9 Wall Grid................................................. 118
Figure 54: Viewport Wall Size ................................................................................................................... 120
Figure 55: Illustration of the Location for Viewport Parameters.............................................................. 121
Figure 56: Illustration of Addition Viewport Parameters ......................................................................... 121
Figure 57: Individual Viewport Areas Highlighted for the Sample 3x2 Wall Grid ..................................... 122
Figure 58: Example of Decoder 1 (RX1) Viewport and AOI ....................................................................... 122
Figure 59: Example of Decoder 2 (RX2) Viewport and AOI ....................................................................... 122
Figure 60: Example of Decoder 3 (RX3) Viewport and AOI ....................................................................... 123
Figure 61: 3x2 Wall Grid 16:9 Source Shown with Viewport Applied....................................................... 143
Figure 62: Example of 2x2 Wall Grid and Two Source Layout .................................................................. 143
Figure 63: Scenario 1 Multiview Layout as Wall Source ........................................................................... 144
Figure 64: Scenario 2 Multiview Layouts Applied ..................................................................................... 145
Figure 65: Block Diagram of an Encoder (TX) Illustrating Frame Division ................................................ 150
Figure 66: Flow Chart of HDMI TX 5V Behavior ........................................................................................ 161
Figure 67: Available Audio Routing for AVP2000T .................................................................................... 163
Figure 68: Communication between an API Server and Bound-Authenticated Endpoint Device ............ 171
Figure 69: Endpoint Device Authentication .............................................................................................. 171
Figure 70: Network Setup with Single API Server Instance ...................................................................... 175
Figure 71: Use Case: Backup API Server.................................................................................................... 176
Figure 72: Example of API Server/Endpoint Device Segmentation using API Claim Feature ................... 177
Figure 73: GStreamer System Variable ..................................................................................................... 211
Figure 74: Example of verifying GStreamer .............................................................................................. 211
Figure 75: Example of a Thumbnail preview............................................................................................. 219
Figure 76: Thumbnail resolution change .................................................................................................. 220
Figure 77: Video size changes with GStreamer......................................................................................... 221
SDVoE Approach
When a decoder (RX) is operating in Fast Switch, Genlock Scaling or Wall processing modes, the
quantization range is programmed according to a series of rules. This section outlines the behavior of
quantization in relation to the SDVoE endpoint devices.
Color ranges:
Limited Range = 16 - 235
Full Range = 0 - 255
Definition of quantization modes (CEA-861-F standard) in relation to the API:
STANDARD
The output quantization range is set according to the video format (as per CEA-861-F
standard section 5.1). The AVI InfoFrame is set to DEFAULT(0) as per the same standard.
AUTO
The output quantization range is set according to video format (as per CEA-861-F standard section
5.1) but the AVI InfoFrame is set explicitly to LIMITED(1) or FULL(2) depending on the output
quantization for this output format.
Native Stream
(Stream 0)
HDMI Source
• BT.2020/BT.709
• HDR/SDR
• RGB/YCbCr
• Limited/Full Stream 1 output
Scaled Stream (Stream 1) • BT.709
• SDR
• RGB
Color Converter
• Limited or Full (if source
configured as FULL and
not DEFAULT, refer to
note.)
10GbE
Network
Decoder (RX)
RGB stream
Multiview Layout converted
Compositor RX Scaler • Full HDMI Out
• Limited or
• Auto
Stream
API controlled
• RGB
• Full
After processing but prior to sending the pixel out on HDMI, it is possible to restore the LIMITED range
by forcing the LIMITED range through the API. At this point the SUPER BLACK and the SUPER WHITE is
removed, which is the intended behavior. When set to LIMITED mode, source devices (except perhaps a
test pattern generator) do not use codes 0-15 and 236-255.
TIPS:
i. The difference between the quantization AUTO and STANDARD modes is that, while STANDARD
puts the value DEFAULT (Q=0) in the AVI InfoFrame, AUTO instead puts either LIMITED or FULL
in the AVI InfoFrame depending on whether the video format is a CE format or not. AUTO is
intended as a workaround for displays that take the wrong decision when they see DEFAULT in
the AVI InfoFrame.
ii. The decoder always sends the AVI InfoFrame.
• Unless specified otherwise through the API (LIMITED, FULL or AUTO values of the
quantization argument using set video request), the Q field is set to value 0 “DEFAULT”.
• This indicates to the monitor/sink that the quantization range is the default one
(depending on whether the video format is a CE format or not).
iii. Since scaling is supported, it enables use cases where the input is an IT format but the output is
a CE format.
• On the decoder side, CEA-861 default operation means deciding on the quantization
range based on the requested output format (CE or IT) and then converting it if the
source has a different quantization range.
Video Stream 2
Frame Black
10G Scaler Display
Buffer Generator
Video Stream 32
Compositor
(layout generator)
Source 2 Source 1
Source 1
Source 2
PiP PaP
Source 1
Source 2 Source 3
Grid Arbitrary
Figure 4: Example Multiview Layouts
Note: An SDVoE multiview implementation supports any layout style, so long as the total
subscribed bandwidth on any network link does not exceed the 10GbE network pipe. This is
the implicit bandwidth restriction for any 10GbE network.
Picture-in-Picture
Encoder
10GbE Switch
Security Camera
Decoder
Encoder
Security Camera Arbitrary Layout
6.4.2 Layout
A layout represents the multiview configuration that is to be composited by a decoder (RX). It has an
assigned name which is used to identify it when a multiview API request is issued. It also specifies the
total output resolution of the layout.
6.4.3 Window
A window is a high-level abstraction provided by the API. It is a rectangular area on the screen that
contains either the rectangular area of a surface or black. Windows can overlap, when this occurs the
content of the window with the lowest index is shown in the overlapping area.
6.4.4 Surface
A surface is a rectangular area within a decoder’s (RX) frame buffer reserved for use by a specific video
source. Each decoder (RX) running in multiview mode, supports up to 32 surfaces and each surface is
associated with the HDMI subscription with the same index.
Example, the video from HDMI subscription 4 is forwarded into surface 4.
6.4.5 Tiles
The chipset divides a screen into tiles, which represent the smallest unit on the screen to which content
can be assigned. Each tile contains either a rectangular area of a surface or is black.
Multiple tiles may be required to represent an individual window (example when windows overlap), as
well as black areas that are not directly a part of any window. Refer to the Figure 7: Two Video Source
Layout – Illustrates Window Overlap in 5x5 tile grid (25 Tiles for an illustration of tiles.
Figure 7: Two Video Source Layout – Illustrates Window Overlap in 5x5 tile grid (25 Tiles)
Illustrated here is a quad layout example, where the layout contains four windows. Each window is
assigned to an individual surface. In this example, surfaces 0 through 3 are assigned to the windows
contained within the layout.
For situations where the default configuration is not adequate, the allocation of the surfaces in a
decoder (RX) frame buffer can be customized using layout surface requests. Refer to section 6.8.8
Managing Surfaces for more information on adding or removing surfaces.
{
"status" : "SUCCESS",
"request_id" : null,
"result" : {
"layout_surface" : {
"index" : 23,
"horizontal_position" : 3872,
"vertical_position" : 0,
"width" : 1920,
"height" : 1080
}
},
"error" : null
}
This second example deletes surface 23 from the layout named some_layout.
DELETE /api/multiview/layout/some_layout/surface/23
{
"status" : "SUCCESS",
"request_id" : null,
"result" : null,
"error" : null
}
Refer to the SDVoE Developers API Reference Guide for more information on the surface command.
Video Sources
The above case study reviewed the steps involved in creating and loading a PiP layout and applying it to
a decoder (RX).
To manage the multiview mode, there are conditions that relate to video sources that need to be kept in
mind when working with and configuring multiview layouts. This section reviews these conditions in
relation to:
• Interlaced sources
• Chroma sub-sampled sources (YCbCr)
• 10-bit and 12-bit sources
When establishing subscriptions for the sources to be composited within a layout, this task can be
completed using one of two methods.
1. The first method is to send independent requests, one request to set the decoder to operate in
multiview mode and then a separate join request for each required source subscription.
For example, if loading an existing picture-in-picture layout, three API requests are required.
One to set the decoder into multiview mode and two join requests, one for each of the sources
to be included in the composited layout.
2. The second option, outlined in this application note, is to include a request for each required
source subscription with the set video request.
• Subscriptions can be added with a set multiview request, allowing for a layout to loaded
quicker than when individual requests are sent.
• Refer to section 6.8.6 Setting a Decoder to Multiview Mode for details on loading a
layout and establishing subscriptions in a single step.
Note: If there are unassigned windows in the layout that is loaded, the windows will contain
black until video subscriptions are established.
Figure 14: MV Transitions Use Case 2 – Illustration of Memory Allocation of Current Layout
Figure 15: MV Transitions Use Case 2 – Illustration of Memory Allocation of the Quad Layout
Figure 16: MV Transitions Use Case 2 – Illustration of Memory Allocation during the Transition
Figure 17: MV Transitions Use Case 3 – Illustration of Memory Allocation of Current Layout
Figure 18: MV Transitions Use Case 3 – Illustration of Memory Allocation of New Layout
During the multiview transition, there is no overlap and all requested surfaces were not previously in
use, however, surfaces 17 and 19 were moved within the decoder’s frame buffer, preventing a
seamless transition.
Summary: This series of layout changes transition cleanly as the constraints outlined previously are
avoided and the update of required subscriptions are established when the new layout is
loaded as part of the set multiview request. Refer to section 6.8.6.1 Managing
Decoder Subscriptions for details on managing stream subscriptions.
6.13.3.6 Use Case 5: Simultaneous Source Change
It is possible to simultaneously change more than one video subscription by applying the same
multiview layout configuration while specifying different subscriptions.
This is particularly useful when a visually sequential transition is not acceptable. For example, when the
video stream subscription requests are sent individually using a join request, each change takes an
interval of approximately 150-200ms.
The second layout in this series, Quad7_Layout, again has new surface allocations and subscriptions.
Details of the layout itself are as follows:
Total size 3840 2160
Window 0 position 0 0 size 1920 1080 target surface 1
Window 1 position 0 1080 size 1920 1080 target surface 2
Window 2 position 1920 0 size 1920 1080 target surface 4
Window 3 position 1920 1080 size 1920 1080 target surface 5
When the set multiview request is sent to load the above Quad7_Layout, it requested the
output resolution of 3840 2160 fps 30 and established subscriptions as follows:
Encoder E: stream index 1 subscription_index (surface) 1
Encoder F: stream index 1 subscription_index (surface) 2
Encoder G: stream index 1 subscription_index (surface) 4
Encoder H: stream index 1 subscription_index (surface) 5
Example of the decoder output stream:
The next layout, Quad8_Layout, changes two of the four current surface allocations and
subscriptions.
Details of the layout itself are as follows:
Total size 3840 2160
Window 0 position 0 0 size 1920 1080 target surface 1
Window 1 position 0 1080 size 1920 1080 target surface 17
Window 2 position 1920 0 size 1920 1080 target surface 4
Window 3 position 1920 1080 size 1920 1080 target surface 19
When the set multiview request is sent to load the Quad8_Layout, it requests the output
resolution of 3840 2160 fps 30 with the following subscriptions:
Encoder E: stream index 1 subscription_index (surface) 1
Encoder J: stream index 1 subscription_index (surface) 17
Encoder G: stream index 1 subscription_index (surface) 4
Encoder K: stream index 1 subscription_index (surface) 19
Example of the decoder output stream, note the windows 1 and 3 subscriptions were modified:
Area of
Frame Black
Interest Scaler Display
Buffer Generator
Crop
Illustration of the KEEP aspect ratio applied to a 3x2 Video Wall grid. Advantage is that the original
source is shown in its entirety without distortion. Black pillar bars have been added.
The second example illustrates the STRETCH option where the wall content is stretched to fill the wall
without regard for maintaining the aspect ratio. The advantage is that the entire wall displays video
content, however the user experience may be impacted by the distortion that is present.
Hidden Pixels
Hidden Pixels
Term/Concept Definition
Frame Rate The frequency (rate) that consecutive images, called frames, appear on a
display. Expressed in frames per second (fps).
Area of Represents the source Area of Interest (AOI) for a decoder (RX) to output.
Interest (AOI) The AOI is defined using two arguments:
Offset defining the upper left corner of the AOI (horizontal/vertical).
Size defines the width/height of the AOI.
Display Bezel This is the area of a display (frame) that surrounds the screen.
Bezel Hides a portion of the source image behind the bezel. This creates a better
Compensation viewing experience for the end user.
Viewport A defined rectangular area of a display, where source AOI is shown.
• Used when displaying a source on a wall that has a different aspect
ratio between the source aspect ratio and the wall aspect ratio.
Viewport is also defined in display pixel coordinates using two parameters:
• Viewport offset defining upper left corner of viewport
(horizontal/vertical).
• Viewport size of viewport (width/height).
Output Refers to the resolution received by a display connected to a decoder (RX).
resolution It is specified per decoder (RX).
Columns and rows In this document, the wall grid is referred to in columns and rows:
x-axis of wall is defined as columns.
y-axis of the wall is defined as rows.
• The number of columns refers to number of horizontal (x-axis)
displays that make up a given video wall.
• The number of rows refers to number of vertical displays (y-axis)
that make up a given video wall.
Wall tearing Horizontal visual artifact seen between wall rows.
Refer to Figure 40: Illustration of Wall Tearing for an example of wall
tearing and to Figure 41: "Per Row Delay" to Reduce Wall Tearing for the
solution applied by BlueRiver chipsets to reduce it.
Decoders (RX) apply “per row delay” to reduce Wall Tearing. This advanced function is usually found
only in dedicated high end video wall processors.
WARNING! It is critical that the correct Area of Interest (AOI) offset value be assigned to the
appropriate decoder. If applied incorrectly, it will result in an incorrect position of an
image segment in the displayed video wall grid.
Argument Description
device_ID The decoder ID that the specified arguments are to be applied to, including the
offset, keep and if appropriate, the viewport.
Reminder: A separate set video request is sent to each decoder (RX) of the wall,
specifying the appropriate values for the part of the grid.
display_mode Specify the display mode that the decoder is to operate in. As described earlier in
the wall mode introduction, two wall modes are supported, genlock
(WALL_GENLOCKED) and fast switch (WALL_FAST_SWITCHED). Refer to
section 7.1 Introduction to the Video Wall Mode for more information.
Note: The genlock wall mode is used in the case studies provided.
width/height Specifies the output resolution (size) of a specified decoder (RX).
Fps fps is the frame rate per second to be applied to the specified decoder (RX).
• Can be either integer (e.g. 60) or real number (e.g. 60.000).
• Optionally if it is a fractional frame rate (i.e. multiplied by 1000/1001)
follow it with letter “m” (e.g. 60m or 30.00m).
Reminder: In genlock wall mode, the frame rate specified must be equal to
source’s frame rate.
Alternately, a VIC or HDMI_VIC code can replace the size and fps arguments.
TIP: Refer to the SDVoE Developers API Reference Guide for a list of the
supported VIC and HDMI_VIC codes.
Figure 43: Illustration of set video Arguments Applied to RX4 of 2x2 Wall
To resolve the discrepancy to the video caused by the display bezels while maintaining the aspect ratio
of the source, the adjustment of the bezel is applied to all “inside” borders of the video wall grid.
Bezel compensation is supported by using the set video command to adjust the size (keep) and/or
location (offset) of the area of interest (AOI) for each of the decoders (RX) involved in a given wall grid.
The adjustment applied compensates for the pixel thickness of these borders.
Reminder: The area of interest (AOI) is defined in source pixels.
Tip: Wall bezels are determined by measuring the display bezel, then calculating and applying the
display pixel density.
For example, if the display’s bezel equals 0.2 inches and the display pixel density is 120 pixels
per inch, then the bezel thickness would be: 120*0.2 = 24 pixels
Pixel density varies depending on the display manufacturer and model. Be sure to confirm the
correct pixel density to apply when calculating the bezel thickness.
Measure the display borders located within the inside of the wall grid. Also, keep in mind the
thickness of a display border could vary. For example, the bottom border of a display could be
wider in relation to the top border if it has a manufacturer logo present.
The figure below shows an example of bezel compensation using a 2x2 wall, with the source resolution
of 3840x2160 and applying a 20-pixel bezel compensation to both the horizontal and vertical borders.
Figure 47: 2x2 Example of Rectangular Wall Grid with Bezel Compensation Applied
Figure 48: Example with AOI Size and x/y Coordinates Applied
In this section, details of computing the parameters needed to configure a device in wall mode when the
source picture is cropped to preserve the picture aspect ratio is reviewed.
Parameter Description
C Represents the number of columns of displays (horizontal) in the wall grid.
R Represents the number of rows of displays (vertical) in the wall grid.
W Represents each display's horizontal output resolution (aka. output width).
H Represents each display's vertical output resolution (aka. output height).
Bw Represents the width of the bezel, in equivalent pixels of the output resolution.
Bh Represents the height of the bezel, in equivalent pixels of the output resolution.
Sh Represents the horizontal scaling ratio.
Sv Represents the vertical scaling ratio.
Ws Represents the horizontal resolution of the source.
Hs Represents the vertical resolution of the source.
Fs Represents the frame rate of the source.
Wtot Represents the total width of the wall, including all displays and their bezel.
Htot Represents the total height of the wall, including all displays and their bezel.
S The scaling ratio.
i The row in which a display is located in the wall grid, with the displays in the first row
being numbered i=0
j The column in which a display is located in the wall grid, with the displays in the first
column being numbered j=0
Kw The width or a display's area of interest (AOI) in the source's coordinates system
(i.e. the horizontal keep)
Each decoder has a set of arguments added to the API set video wall request to manage not only the
size, keep and offset (AOI) but also to specify the viewport. Adding the viewport argument prevents
sections of the wall from being stretched incorrectly. Instead, the AOI video is contained in the viewport
region and the areas outside of the viewport are filled with black pixels.
Figure 53: Viewport Regions Illustrated for Example 3x2 16:9 Wall Grid
The API set command syntax with the viewport arguments added:
POST /api/device/{target}
{
"op" : "set:video",
"display_mode" : "{WALL_GENLOCKED/WALL_FAST_SWITCHED}",
"video" : {
"width" : integer,
"height" : integer,
"fps" : integer,
"horiz_offset" : integer,
"vert_offset" : integer,
"keep_width" : integer,
"keep_height" : integer,
Before proceeding to investigate calculating the required argument values, it is first necessary to know
some information related to a wall grid.
Note: It is assumed some of this data is known, such as number of columns and rows as well as the
source and output resolutions.
The table provided below outlines some of the definitions referred to in the sample formulas provided.
Table 8: Definition of Parameters Used in Wall Calculations
Parameter Description
C Represents the number of columns of displays (horizontal) in the wall grid.
R Represents the number of rows of displays (vertical) in the wall grid.
W Represents each display's horizontal output resolution (aka. output width).
H Represents each display's vertical output resolution (aka. output height).
Wtot Represents the total width of the wall, including all displays and their bezel.
Htot Represents the total height of the wall, including all displays and their bezel.
Bw Represents the width of the bezel, in equivalent pixels of the output resolution.
Bh Represents the height of the bezel, in equivalent pixels of the output resolution.
Sh Represents the horizontal scaling ratio.
Sv Represents the vertical scaling ratio.
Ws Represents the horizontal resolution of the source.
Hs Represents the vertical resolution of the source.
S The scaling ratio.
WB The width, in pixels, of each of the black bars on both sides of the wall that are added
to preserve the aspect ratio, if applicable.
HB The height, in pixels, of each of the black bars on the top and bottom of the wall,
if applicable.
Vhp The horizontal position of the viewport on a specific display.
Vvp The vertical position of the viewport on a specific display.
Vw The width of the viewport on a specific display.
Vh The height of the viewport on a specific display.
Fs Represents the frame rate of the source.
To gain a solid understanding of the concepts of viewports and the area of interest (AOI) using the top
row of the example 3x2 wall grid shown earlier, RX1, RX2 and RX3, we’ll look closer at the regions that
apply to a video wall. Refer to Figure 57: Individual Viewport Areas Highlighted for the Sample 3x2 Wall
. The following concepts shown for row one would apply to the second row of displays as well.
In this example, the wall aspect ratio is larger than the source aspect ratio (Aw>As), therefore black
pillars are added to the left and right displays.
Reminder: With the exception of size, each set of values to be applied to video set command is
calculated for each individual decoder (RX). The offset, keep and viewport values are
different for each display.
In the following figure, each viewport area is outlined by orange dashes, for this sample 3x2 wall grid
there is six decoders (RX) involved that require their values to be calculated.
For the first row looking at the display located in the upper left corner, the figures below show the
viewport and area of interest (AOI) for decoder 1 (RX1). The source is displayed to the right and a black
pillarbox fills the remaining pixels of the display on the left.
For the second (middle) display of the first row, the viewport covers the entire display.
Therefore, it is possible to either:
• Not specify the viewport arguments in the set command (recommended).
• Specify the viewport with the size equal to the display size and viewport offset set to 0.
For the third display (RX3) on the top row of the sample wall grid of 3x2, the source is displayed on the
left side of display with the black pillarbox filling the remaining pixels to the right. Therefore, there is no
viewport offset adjustment required.
Now that we’ve introduced the concepts involved in applying a viewport, example computations of the
wall values required for a set video request in relation to the wall mode will be reviewed.
7.3.9.3 Wall Parameter Computations
The following sub-sections review calculating each of the required five items: wall size, scaling ratios,
borders, viewport and area of interest.
Once these values are calculated, then the final step is to apply the values to the API set video wall
request arguments for each of the decoders (RX) used in the wall grid.
Note: These are sample formulas only and not necessarily the only formulas available to calculate
the values needed for the video set command arguments.
Step 1: Total Wall Size
It is first necessary to calculate the total wall size. This can be done using the formulas shown below to
compute the total wall size for the width and height respectively.
Wtot = C * W + (C - 1) * Bw
Htot = R * H + (R - 1) * Bh
Step 2: Horizontal and Vertical Scaling Ratios
Although not yet known, it is possible that the aspect ratio will need to be preserved. That is black
borders, pillars or envelope, will need to be added to the wall grid.
This is determined in the next step but in the event black borders are required, proceed to compute the
following horizontal and vertical scaling ratios:
Calculate the horizontal and vertical scaling ratios as follows:
Sh = Wtot / Ws
Sv = Htot / Hs
Reminder: Refer to Table 8: Definition of Parameters Used in Wall Calculations for description of
parameters used in these formulas.
Step 3: Scaling Ratio and Borders
To calculate if black borders are required, black pillarbox or an envelope, the scaling ratio needs to be
calculated along with the width or height of the black borders, in pixels. If calculation result equals 0,
then no border is required.
Parameter Description
i The row in which a display is located in the wall grid, with the displays in the first row
being numbered i=1.
j The column in which a display is located in the wall grid, with the displays in the first
column being numbered j=1.
Oh The horizontal position of a display area of interest origin in the source coordinates
system. That is the horizontal offset.
Ov The vertical position of a display area of interest origin in the source coordinates
system. That is the vertical offset.
Kw The width of a display area of interest in the source coordinates system. That is
the horizontal keep.
Kh The height of a display area of interest in the source coordinates system. That is the
horizontal keep.
Using the row and column index, it is necessary to compute the following:
horizontal keep (width)
vertical keep (height)
horizontal offset
vertical offset
The keep parameters are calculated as follows:
Kw = Vw / S
Kh = Vh / S
When calculating the keep, the appropriate viewport value (Vw or Vh) must be inserted based on the
special case column, row or default that applies. Refer to the Step 4: Viewport.
Display 1 Display 2
Source 1
Source 2
Display 3 Display 4
Figure 62: Example of 2x2 Wall Grid and Two Source Layout
The Multiview and Wall mode sections of this application note library supply details on the use of these
respective processing modes. An understanding of these sections is a prerequisite to applying either of
the scenarios outlined below.
Multiview
Source
layout
1
RX1 RX2
Display 3 Display 4
The figure above illustrates our example, where the decoder (RX) labeled in the above figure as
“Multiview layout” subscribes to the two sources assigned in the multiview layout. Based on the API
multiview layout requests issued, it creates the output multiview composite.
This decoder’s output is then fed to the encoder labeled as “Wall source”.
The four decoders that are involved directly in the wall grid then subscribe to this stream. API requests
are then applied to each of the decoders (RX) specifying the area of interest (AOI) that each is to display.
Source 1
RX1 RX2
Display 3 Display 4
The setup above illustrates that the two HDMI sources required for our example are fed to two encoder
devices (TX). As mentioned previously, the decoder devices (RX) must be operating in multiview mode
and be joined/subscribed to the appropriate sources.
Each decoder is sent a multiview API request containing details on the layout it is to display, including
the size, offset and position information appropriate for the layout. The source will then be cropped to
the values specified, resulting in the wall grid being output as shown in Figure 62: Example of 2x2 Wall
Grid and Two Source Layout.
{
"status" : "PROCESSING",
"request_id" : 9,
"result" : null,
"error" : null
}
A SETTINGS_CHANGED event is received from the API to indicate that the first device's settings have
been modified. Also, a REQUEST_COMPLETED event is generated once the request is complete. If
other API clients are connected to the API server, monitoring SETTINGS_CHANGED events allows
clients to stay up to date with device settings.
{
"status": "SUCCESS",
"request_id": null,
"result": {
"events": [
{
"device_id": "801f124389e7",
"event_id": 1,
"event_type": "DEVICE_CONNECTED",
"timestamp": 1610735915,
"request_id": 1
},
{
"device_id": "801f124389e7",
"event_id": 2,
"event_type": "DEVICE_INFO_AVAILABLE",
"timestamp": 1610735915,
"request_id": 2
},
{
PDS-062491 Rev 2.5 Page 151 of 224
SDVoE Developers API Application March 2023 The information contained herein is the exclusive property of Semtech and shall not
Note Library be distributed, copied, reproduced or disclosed in whole or in part without prior
written permission of Semtech or its licensees.
"device_id": "801f124307b7",
"event_id": 3,
"event_type": "DEVICE_CONNECTED",
"timestamp": 1610735916,
"request_id": 3
},
{
"device_id": "801f124307b7",
"event_id": 4,
"event_type": "DEVICE_INFO_AVAILABLE",
"timestamp": 1610735916,
"request_id": 4
},
{
"device_id": "801f124307b7",
"event_id": 7,
"event_type": "SETTINGS_CHANGED",
"timestamp": 1610736876,
"request_id": 8
},
{
"device_id": null,
"event_id": 9,
"event_type": "REQUEST_COMPLETE",
"timestamp": 1610737063,
"request_id": 9
}
]
},
"error": null
}
TIP: If a device does not support frame rate conversion, there is an entry in the error array of the
result with a reason of DEVICE_TYPE, indicating that the request failed for the device because
it does not support this feature. For example, the device does not include a chipset such as an
AVP2000T or NT2000 supporting the feature or the device ID entered was a decoder.
However, if the endpoint device includes an NT1000 or AVP1000 chipset, it does not include the
AV Processor Engine and so a black output stream is generated by enabling the Black Video
Generator property. This feature allows a dummy black video signal to be generated, it enables the
selected audio stream to be embedded into a dummy stream for HDMI playout. For example, audio
player functionality or for transitions/temporary audio transitions.
The black generator supports two modes:
• Maintain Output
• Force Output
When set property key nodes[COLOR_GENERATOR:0].configuration.force_output
is specified with the value set as true, then a blank video output with a uniform color and a fixed
resolution video signal of 720P60 is output.
The API request to enable the forced output is as follows:
POST /api/device/{target}
{
"op" : "set:property",
"key" :
"nodes[COLOR_GENERATOR:0].configuration.force_output",
"value" : true
}
When the black generator is disabled, set to false, value equal to false, the device returns to the
default video display mode, Genlock.
Reminder: This feature supported only for devices that do not support the AV Processor Engine, such
as AVP1000 based devices.
HDCP Encryption
On decoder (RX) devices operating in fast switch or multiview mode changing from one HDCP encryption
level to another, causes either a glitch in the sink or a short black period during the authentication of the
HDCP keys.
To limit such glitches and black periods, it is best to authenticate at the highest HDCP level supported by
the sink. For example, if the sink supports HDCP 2.2 and the authentication with the sink is done with
HDCP 2.2 then switching between NO HDCP and/or HDCP 1.4 sources to a source with HDCP 2.2 does
not cause a glitch. If the sink only supports HDCP 1.4, it is still best to output HDCP 1.4 when possible to
prevent glitches when switching from a source with NO HDCP to a source with HDCP 1.4. Note that in
such a case, sources with HDCP 2.2 will fail the authentication with the sink and black is displayed
on the sink.
The HDCP output modes outlined in this section are only applicable to decoders (RX) operating in one of
the following video processing modes:
Fast Switch
Multiview
Fast Switch Wall
There are three (3) HDCP output modes supported:
• Follow Sink 1
If the monitor supports HDCP 2.2, this mode tries to negotiate HDCP 2.2. If HDCP 2.2
authentication fails, it automatically tries HDCP 1.4 or NO HDCP based on the sink capabilities.
This mode is the default HDCP encryption mode of operation and covers most use cases.
• Follow Sink 2
This mode is similar to the “Follow Sink 1” outlined above but limits the HDCP level requirement
to HDCP 1.4 when possible.
It is applicable in special cases when there is equipment located between the decoder and an
output display, such as an AVR that does not expose the HDCP capability of the display. For
example, the AVR is HDCP 2.2 capable but is connected to a display capable only of HDCP 1.4.
• Follow Source
In this mode, the output encryption follows the HDCP mode of the source.
In all HDCP output modes, the HDCP encryption level at the output cannot be lower than the HDCP
encryption level of the source (which in multiview is the highest HDCP encryption level out of all current
subscriptions). If it surpasses the maximum capability of the sink, the video output is black.
As mentioned, when managing audio routing one needs to consider the device type that is to be
managed as well as the audio type to be routed. The table below summarizes the supported audio
routing for AVP devices referencing the audio indexes for encoders (TX), decoders (RX) and transceiver
(TR).
Table 12: Summary of Audio Output Routing
Terms Definition
bound-authenticated When a device is "bound-authenticated", it communicates with a
specific API server, securing communication between the API server
and the device.
friend API servers A pair of API servers configured with the same secure API key. When
one API server is bound-authenticated to an endpoint device(s), the
other API server is also authenticated to the same endpoint device(s).
Auth An API request that enables an endpoint device(s) to be bound-
authenticated to the API server that the request initiated from.
unauth Disables a device from being bound-authenticated to the API server.
Claim Useful to implement when it is desired to segment devices within a
given network, such as group resources for a classroom or operating
room. Also, prevents an adversary from using an unauthorized API
server instance — for example running on a laptop connected to a
network port in an installation—to control devices. When a device is
claimed, it is controlled exclusively by the API server instance from
which the request was issued.
release Used to release an endpoint device to an unclaimed state.
Key Exchanges
The bound-authentication process dynamically exchanges a security key between the API server and its
authenticated endpoints. When bound authentication is enabled by an API auth request, the security
key is saved on endpoint devices in nonvolatile memory. If the option is disabled using an API unauth
request or a factory reset is applied to an endpoint device, authentication needs to be re-enabled.
The figure below shows the relationship of an endpoint device that has been bound-authenticated and
when a device has had an API unauth or factory request applied.
Endpoint RX
Endpoint RX
Endpoint RX
Clients
10GbE Network
Endpoint TX
Endpoint TX
Endpoint TX
Endpoint RX
Endpoint RX
Endpoint RX
Clients
10GbE Network
Endpoint TX
Endpoint TX
X
Endpoint TX
Primary API
Endpoint TX Server
Backup API
Server
POST /api/device/{target}
{
"op" : "release"
}
The target argument must be either the device ID of a single device or the name of a device group.
The supported device groups are:
ALL All devices
ALL_TX All transmitter devices
ALL_RX All receiver devices
Endpoint RX
Endpoint RX
Endpoint TX
Endpoint TX
10GbE Network
Endpoint RX
Endpoint RX
API Sever A
CLAIMED SEGMENT A
Figure 72: Example of API Server/Endpoint Device Segmentation using API Claim Feature
#usb_hid_encryption_default_key = nRAENMxzHhzZe!!22sr<`DTejvCT%z
POST /api/device/010203040506
{
"op" : "set:usb",
"security” :
"level" : “DISABLED”
}
}
Request below sets the extender role to REMOTE and enables USB HID security encryption for a
specific device.
POST /api/device/010203040506
{
"op" : "set:usb",
"role" : REMOTE
"security” : {
"level" : “ENABLED”
}
}
The target argument must be either the device ID of a single device or the name of a device group.
The supported device groups are:
ALL All devices
ALL_TX All transmitter devices
ALL_RX All receiver devices
The role argument sets role of device when acting as a USB HID extender, can be one of the following:
DISABLED USB HID support is disabled.
OTG The device automatically detects the type of the connected USB HID device and
set its role to LOCAL or REMOTE accordingly.
LOCAL The device acts as USB device that connects to a USB host (e.g. a PC).
REMOTE The device acts as USB host to which USB HID devices connect (keyboard,
mouse, etc.)
"mac_address": "123123123123",
"device_id": "",
"linked": false
},
]
},
POST /api/device/{target}
…
{
"op" : "set:overlay:off"
}
Two forms of the command are supported with the first being used to enable and configure the bitmap
overlay and the second to disable it. A bitmap overlay is supported on the scaled stream (stream 1)
of an encoder and on the HDMI output of a receiver device.
Reminders:
i. This command is only applicable to endpoint devices utilizing BlueRiver NT2000 chipsets and
that include the AV Processor Engine.
ii. Refer to the following sources for information about the BMP file format:
Bitmaps: https://docs.microsoft.com/en-
ca/windows/desktop/gdi/bitmaps
BMP file format: https://en.wikipedia.org/wiki/BMP_file_format
Thumbnail Preview
The SDVoE solution supports the ability to stream an unencrypted source as a thumbnail from a
BlueRiver NT2000 or NT1000 encoder device (TX) to a host computer.
For details on setup of this feature please refer to section 14.2.2 Thumbnail Configuration and Setup
which includes setting up GStreamer which can be used as the pipeline-based multimedia framework to
implement thumbnails as well as the configuration and setup of thumbnail streams through the API.
Should be noted that the thumbnail streams propagate through the 10GbE port.
Reminder: This feature is available to encoder devices that include either a BlueRiver NT1000 or
NT2000 chipset only, it is not available to devices based on the AVP chipset series.
3. Once the installation is completed and the variable is configured, verify that the gst-launch-
1.0.exe executable can be launched from any directory location using a Windows command line.
To verify the installation:
a. Open a Windows command line.
b. At the prompt type:
gst-launch-1.0.exe -help
c. The gstreamer help should then be displayed.
Start
No Video Stable
Yes
Thumbnail resolution
No
changed?
Yes
Start
No Video Stable
Yes
Thumbnail resolution
No
changed?
Yes