holoscan::ops::HolovizOp
holoscan::ops::HolovizOp
Operator class for data visualization.
This high-speed viewer handles compositing, blending, and visualization of RGB or RGBA images, masks, geometric primitives, text and depth maps. The operator can auto detect the format of the input tensors acquired at the receivers port. Else the input specification can be set at creation time using the tensors parameter or at runtime when passing input specifications to the input_specs port.
Depth maps and 3D geometry are rendered in 3D and support camera movement. The camera is controlled using the mouse:
- Orbit (LMB)
- Pan (LMB + CTRL | MMB)
- Dolly (LMB + SHIFT | RMB | Mouse wheel)
- Look Around (LMB + ALT | LMB + CTRL + SHIFT)
- Zoom (Mouse wheel + SHIFT) Or by providing new values at the
camera_eye_input,camera_look_at_inputorcamera_up_inputinput ports. The camera pose can be output at thecamera_pose_outputport whenenable_camera_pose_outputis set totrue.
Callbacks can be used to receive updates on key presses, mouse position and buttons, and window size.
==Named Inputs==
- receivers : multi-receiver accepting
nvidia::gxf::Tensorand/ornvidia::gxf::VideoBufferAny number of upstream ports may be connected to this receivers port. This port can accept either VideoBuffers or Tensors. These inputs can be in either host or device memory. Each tensor or video buffer will result in a layer. The operator autodetects the layer type for certain input types (e.g. a video buffer will result in an image layer). For other input types or more complex use cases, input specifications can be provided either at initialization time as a parameter or dynamically at run time (via input_specs). On each call to compute, tensors corresponding to all names specified in the tensors parameter must be found or an exception will be raised. Any extra, named tensors not present in the tensors parameter specification (or optional, dynamic input_specs input) will be ignored.- Any number of upstream ports may be connected to this
receiversport. This port can accept either VideoBuffers or Tensors. These inputs can be in either host or device memory. Each tensor or video buffer will result in a layer. The operator autodetects the layer type for certain input types (e.g. a video buffer will result in an image layer). For other input types or more complex use cases, input specifications can be provided either at initialization time as a parameter or dynamically at run time (viainput_specs). On each call tocompute, tensors corresponding to all names specified in thetensorsparameter must be found or an exception will be raised. Any extra, named tensors not present in thetensorsparameter specification (or optional, dynamicinput_specsinput) will be ignored.
- Any number of upstream ports may be connected to this
- input_specs :
std::vector<holoscan::ops::HolovizOp::InputSpec>(optional) A list of InputSpec objects. This port can be used to dynamically update the overlay specification at run time. No inputs are required on this port in order for the operator to compute. - render_buffer_input :
nvidia::gxf::VideoBuffer(optional) An empty render buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_RGBA and be in device memory. This input port only exists if enable_render_buffer_input was set to true, in which case compute will only be called when a message arrives on this input.- An empty render buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_RGBA and be in device memory. This input port only exists if
enable_render_buffer_inputwas set to true, in which casecomputewill only be called when a message arrives on this input.
- An empty render buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_RGBA and be in device memory. This input port only exists if
- depth_buffer_input :
nvidia::gxf::VideoBuffer(optional) An empty depth buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_D32F and be in device memory. This input port only exists if enable_depth_buffer_input was set to true, in which case compute will only be called when a message arrives on this input.- An empty depth buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_D32F and be in device memory. This input port only exists if
enable_depth_buffer_inputwas set to true, in which casecomputewill only be called when a message arrives on this input.
- An empty depth buffer can optionally be provided. The video buffer must have format GXF_VIDEO_FORMAT_D32F and be in device memory. This input port only exists if
- camera_eye_input :
std::array<float, 3>(optional) Camera eye position. The camera is animated to reach the new position.- Camera eye position. The camera is animated to reach the new position.
- camera_look_at_input :
std::array<float, 3>(optional) Camera look at position. The camera is animated to reach the new position.- Camera look at position. The camera is animated to reach the new position.
- camera_up_input : :
std::array<float, 3>(optional) Camera up vector. The camera is animated to reach the new vector.- Camera up vector. The camera is animated to reach the new vector.
==Named Outputs==
- render_buffer_output :
nvidia::gxf::VideoBuffer(optional) Output for a filled render buffer. If an input render buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_RGBA and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if enable_render_buffer_output was set to true.- Output for a filled render buffer. If an input render buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_RGBA and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if
enable_render_buffer_outputwas set to true.
- Output for a filled render buffer. If an input render buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_RGBA and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if
- depth_buffer_output :
nvidia::gxf::VideoBuffer(optional) Output for a filled depth buffer. If an input depth buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_D32F and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if enable_depth_buffer_output was set to true.- Output for a filled depth buffer. If an input depth buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_D32F and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if
enable_depth_buffer_outputwas set to true.
- Output for a filled depth buffer. If an input depth buffer is specified, it is using that one, else it allocates a new buffer. The video buffer will have format GXF_VIDEO_FORMAT_D32F and will be in device memory. This output is useful for offline rendering or headless mode. This output port only exists if
- camera_pose_output :
std::array<float, 16>ornvidia::gxf::Pose3D(optional) Output the camera pose. Depending on the value of camera_pose_output_type this outputs a 4x4 row major projection matrix (type std::array<float, 16>) or the camera extrinsics model (type nvidia::gxf::Pose3D). This output port only exists if enable_camera_pose_output was set to True.- Output the camera pose. Depending on the value of
camera_pose_output_typethis outputs a 4x4 row major projection matrix (typestd::array<float, 16>) or the camera extrinsics model (typenvidia::gxf::Pose3D). This output port only exists ifenable_camera_pose_outputwas set toTrue.
- Output the camera pose. Depending on the value of
==Parameters==
- receivers: List of input queues to component accepting
gxf::Tensororgxf::VideoBuffer. type: std::vector<gxf::Handle<gxf::Receiver>>- type:
std::vector<gxf::Handle<gxf::Receiver>>
- type:
- enable_render_buffer_input: Enable
render_buffer_input(default:false) type: bool- type:
bool
- type:
- enable_render_buffer_output: Enable
render_buffer_output(default:false) type: bool- type:
bool
- type:
- enable_depth_buffer_input: Enable
depth_buffer_input(default:false) type: bool- type:
bool
- type:
- enable_depth_buffer_output: Enable
depth_buffer_output(default:false) type: bool- type:
bool
- type:
- enable_camera_pose_output: Enable
camera_pose_output(default:false) type: bool- type:
bool
- type:
- tensors: List of input tensor specifications (default:
[]) type: std::vector<InputSpec> name: name of the tensor containing the input data to display type: std::string
type: input type (default “unknown”) type: std::string possible values: unknown: unknown type, the operator tries to guess the type by inspecting the tensor. color: RGB or RGBA color 2d image. color_lut: single channel 2d image, color is looked up. points: point primitives, one coordinate (x, y) per primitive. lines: line primitives, two coordinates (x0, y0) and (x1, y1) per primitive. line_strip: line strip primitive, a line primitive i is defined by each coordinate (xi, yi) and the following (xi+1, yi+1). triangles: triangle primitive, three coordinates (x0, y0), (x1, y1) and (x2, y2) per primitive. crosses: cross primitive, a cross is defined by the center coordinate and the size (xi, yi, si). rectangles: axis aligned rectangle primitive, each rectangle is defined by two coordinates (xi, yi) and (xi+1, yi+1). ovals: oval primitive, an oval primitive is defined by the center coordinate and the axis sizes (xi, yi, sxi, syi). text: text is defined by the top left coordinate and the size (x, y, s) per string, text strings are defined by InputSpec member text. depth_map: single channel 2d array where each element represents a depth value. The data is rendered as a 3d object using points, lines or triangles. The color for the elements can be specified through depth_map_color. Supported formats for the depth map: 8-bit unsigned normalized format that has a single 8-bit depth component 32-bit signed float format that has a single 32-bit depth component
depth_map_color: RGBA 2d image, same size as the depth map. One color value for each element of the depth map grid. Supported format: 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
opacity: layer opacity, 1.0 is fully opaque, 0.0 is fully transparent (default: 1.0) type: float
priority: layer priority, determines the render order, layers with higher priority values are rendered on top of layers with lower priority values (default: 0) type: int32_t
image_format: color image format, used if type is color, color_lut or depth_map_color. (default: auto_detect). type: std::string
color: RGBA color of rendered geometry (default: [1.F, 1.F, 1.F, 1.F]) type: std::vector<float>
line_width: line width for geometry made of lines (default: 1.0) type: float
point_size: point size for geometry made of points (default: 1.0) type: float
text: array of text strings, used when type is text. (default: []) type: std::vector<std::string>
depth_map_render_mode: depth map render mode (default: points) type: std::string possible values: points: render as points lines: render as lines triangles: render as triangles
-
type:
std::vector<InputSpec>name: name of the tensor containing the input data to display type: std::string
type: input type (default “unknown”) type: std::string possible values: unknown: unknown type, the operator tries to guess the type by inspecting the tensor. color: RGB or RGBA color 2d image. color_lut: single channel 2d image, color is looked up. points: point primitives, one coordinate (x, y) per primitive. lines: line primitives, two coordinates (x0, y0) and (x1, y1) per primitive. line_strip: line strip primitive, a line primitive i is defined by each coordinate (xi, yi) and the following (xi+1, yi+1). triangles: triangle primitive, three coordinates (x0, y0), (x1, y1) and (x2, y2) per primitive. crosses: cross primitive, a cross is defined by the center coordinate and the size (xi, yi, si). rectangles: axis aligned rectangle primitive, each rectangle is defined by two coordinates (xi, yi) and (xi+1, yi+1). ovals: oval primitive, an oval primitive is defined by the center coordinate and the axis sizes (xi, yi, sxi, syi). text: text is defined by the top left coordinate and the size (x, y, s) per string, text strings are defined by InputSpec member text. depth_map: single channel 2d array where each element represents a depth value. The data is rendered as a 3d object using points, lines or triangles. The color for the elements can be specified through depth_map_color. Supported formats for the depth map: 8-bit unsigned normalized format that has a single 8-bit depth component 32-bit signed float format that has a single 32-bit depth component
depth_map_color: RGBA 2d image, same size as the depth map. One color value for each element of the depth map grid. Supported format: 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
opacity: layer opacity, 1.0 is fully opaque, 0.0 is fully transparent (default: 1.0) type: float
priority: layer priority, determines the render order, layers with higher priority values are rendered on top of layers with lower priority values (default: 0) type: int32_t
image_format: color image format, used if type is color, color_lut or depth_map_color. (default: auto_detect). type: std::string
color: RGBA color of rendered geometry (default: [1.F, 1.F, 1.F, 1.F]) type: std::vector<float>
line_width: line width for geometry made of lines (default: 1.0) type: float
point_size: point size for geometry made of points (default: 1.0) type: float
text: array of text strings, used when type is text. (default: []) type: std::vector<std::string>
depth_map_render_mode: depth map render mode (default: points) type: std::string possible values: points: render as points lines: render as lines triangles: render as triangles
-
name: name of the tensor containing the input data to display type: std::string
- type:
std::string
- type:
-
type: input type (default
"unknown") type: std::string possible values: unknown: unknown type, the operator tries to guess the type by inspecting the tensor. color: RGB or RGBA color 2d image. color_lut: single channel 2d image, color is looked up. points: point primitives, one coordinate (x, y) per primitive. lines: line primitives, two coordinates (x0, y0) and (x1, y1) per primitive. line_strip: line strip primitive, a line primitive i is defined by each coordinate (xi, yi) and the following (xi+1, yi+1). triangles: triangle primitive, three coordinates (x0, y0), (x1, y1) and (x2, y2) per primitive. crosses: cross primitive, a cross is defined by the center coordinate and the size (xi, yi, si). rectangles: axis aligned rectangle primitive, each rectangle is defined by two coordinates (xi, yi) and (xi+1, yi+1). ovals: oval primitive, an oval primitive is defined by the center coordinate and the axis sizes (xi, yi, sxi, syi). text: text is defined by the top left coordinate and the size (x, y, s) per string, text strings are defined by InputSpec member text. depth_map: single channel 2d array where each element represents a depth value. The data is rendered as a 3d object using points, lines or triangles. The color for the elements can be specified through depth_map_color. Supported formats for the depth map: 8-bit unsigned normalized format that has a single 8-bit depth component 32-bit signed float format that has a single 32-bit depth component
depth_map_color: RGBA 2d image, same size as the depth map. One color value for each element of the depth map grid. Supported format: 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
-
type:
std::string -
possible values: unknown: unknown type, the operator tries to guess the type by inspecting the tensor. color: RGB or RGBA color 2d image. color_lut: single channel 2d image, color is looked up. points: point primitives, one coordinate (x, y) per primitive. lines: line primitives, two coordinates (x0, y0) and (x1, y1) per primitive. line_strip: line strip primitive, a line primitive i is defined by each coordinate (xi, yi) and the following (xi+1, yi+1). triangles: triangle primitive, three coordinates (x0, y0), (x1, y1) and (x2, y2) per primitive. crosses: cross primitive, a cross is defined by the center coordinate and the size (xi, yi, si). rectangles: axis aligned rectangle primitive, each rectangle is defined by two coordinates (xi, yi) and (xi+1, yi+1). ovals: oval primitive, an oval primitive is defined by the center coordinate and the axis sizes (xi, yi, sxi, syi). text: text is defined by the top left coordinate and the size (x, y, s) per string, text strings are defined by InputSpec member text. depth_map: single channel 2d array where each element represents a depth value. The data is rendered as a 3d object using points, lines or triangles. The color for the elements can be specified through depth_map_color. Supported formats for the depth map: 8-bit unsigned normalized format that has a single 8-bit depth component 32-bit signed float format that has a single 32-bit depth component
depth_map_color: RGBA 2d image, same size as the depth map. One color value for each element of the depth map grid. Supported format: 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
- unknown: unknown type, the operator tries to guess the type by inspecting the tensor.
- color: RGB or RGBA color 2d image.
- color_lut: single channel 2d image, color is looked up.
- points: point primitives, one coordinate (x, y) per primitive.
- lines: line primitives, two coordinates (x0, y0) and (x1, y1) per primitive.
- line_strip: line strip primitive, a line primitive i is defined by each coordinate (xi, yi) and the following (xi+1, yi+1).
- triangles: triangle primitive, three coordinates (x0, y0), (x1, y1) and (x2, y2) per primitive.
- crosses: cross primitive, a cross is defined by the center coordinate and the size (xi, yi, si).
- rectangles: axis aligned rectangle primitive, each rectangle is defined by two coordinates (xi, yi) and (xi+1, yi+1).
- ovals: oval primitive, an oval primitive is defined by the center coordinate and the axis sizes (xi, yi, sxi, syi).
- text: text is defined by the top left coordinate and the size (x, y, s) per string, text strings are defined by InputSpec member text.
- depth_map: single channel 2d array where each element represents a depth value. The data is rendered as a 3d object using points, lines or triangles. The color for the elements can be specified through
depth_map_color. Supported formats for the depth map: 8-bit unsigned normalized format that has a single 8-bit depth component 32-bit signed float format that has a single 32-bit depth component- 8-bit unsigned normalized format that has a single 8-bit depth component
- 32-bit signed float format that has a single 32-bit depth component
- depth_map_color: RGBA 2d image, same size as the depth map. One color value for each element of the depth map grid. Supported format: 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
- opacity: layer opacity, 1.0 is fully opaque, 0.0 is fully transparent (default:
1.0) type: float- type:
float
- type:
- priority: layer priority, determines the render order, layers with higher priority values are rendered on top of layers with lower priority values (default:
0) type: int32_t- type:
int32_t
- type:
- image_format: color image format, used if
typeiscolor,color_lutordepth_map_color. (default:auto_detect). type: std::string- type:
std::string
- type:
- color: RGBA color of rendered geometry (default:
[1.F, 1.F, 1.F, 1.F]) type: std::vector<float>- type:
std::vector<float>
- type:
- line_width: line width for geometry made of lines (default:
1.0) type: float- type:
float
- type:
- point_size: point size for geometry made of points (default:
1.0) type: float- type:
float
- type:
- text: array of text strings, used when
typeistext. (default:[]) type: std::vector<std::string>- type:
std::vector<std::string>
- type:
- depth_map_render_mode: depth map render mode (default:
points) type: std::string possible values: points: render as points lines: render as lines triangles: render as triangles- type:
std::string - possible values:
points: render as points
lines: render as lines
triangles: render as triangles
- points: render as points
- lines: render as lines
- triangles: render as triangles
- type:
- color_lut: Color lookup table for tensors of type ‘color_lut’, vector of four float RGBA values
type: std::vector<std::vector<float>>
- type:
std::vector<std::vector<float>>
- type:
- window_title: Title on window canvas (default:
"Holoviz") type: std::string- type:
std::string
- type:
- display_name: In exclusive display or fullscreen mode, name of display to use as shown with
xrandrorhwinfo --monitor(default:"") type: std::string- type:
std::string
- type:
- width: Window width or display resolution width if in exclusive display or fullscreen mode (default:
1920) type: uint32_t- type:
uint32_t
- type:
- height: Window height or display resolution height if in exclusive display or fullscreen mode (default:
1080) type: uint32_t- type:
uint32_t
- type:
- framerate: Display framerate if in exclusive display mode (default:
60) type: uint32_t- type:
uint32_t
- type:
- use_exclusive_display: Enable exclusive display mode (default:
false) type: bool- type:
bool
- type:
- fullscreen: Enable fullscreen window (default:
false) type: bool- type:
bool
- type:
- headless: Enable headless mode. No window is opened, the render buffer can be output to
render_buffer_outputand/ordepth_buffer_outputif enabled. (default:false) type: bool- type:
bool
- type:
- framebuffer_srgb: Enable sRGB framebuffer. If set to true, the operator will use an sRGB framebuffer for rendering. If set to false, the operator will use a linear framebuffer. (default:
false) type: bool- type:
bool
- type:
- vsync: Enable vertical sync. If set to true the operator waits for the next vertical blanking period of the display to update the current image. (default:
false) type: bool- type:
bool
- type:
- display_color_space: Set the display color space. Supported color spaces depend on the display setup. ‘ColorSpace::SRGB_NONLINEAR’ is always supported. In headless mode, only ‘ColorSpace::PASS_THROUGH’ is supported since there is no display. For other color spaces the display needs to be configured for HDR (default:
ColorSpace::AUTO) type: std::string- type:
std::string
- type:
- window_close_condition.: BooleanCondition on the operator that will cause it to stop executing if the display window is closed. By default, this condition is created automatically during HolovizOp::initialize. The user may want to provide it if, for example there are multiple
HolovizOpoperators and you want to share the same window close condition across both. By sharing the same condition, if one of the display windows is closed it would also close the other(s). - window_close_scheduling_term: This is a deprecated parameter name for
window_close_condition. Please usewindow_close_conditioninstead aswindow_close_scheduling_termwill be removed in a future release. type: gxf::Handle<gxf::BooleanSchedulingTerm>- type:
gxf::Handle<gxf::BooleanSchedulingTerm>
- type:
- allocator: Allocator used to allocate memory for
render_buffer_outputanddepth_buffer_outputtype: gxf::Handle<gxf::Allocator>- type:
gxf::Handle<gxf::Allocator>
- type:
- font_path: File path for the font used for rendering text (default:
"") type: std::string- type:
std::string
- type:
- cuda_stream_pool: Instance of gxf::CudaStreamPool
type: gxf::Handle<gxf::CudaStreamPool>
- type:
gxf::Handle<gxf::CudaStreamPool>
- type:
- camera_pose_output_type: Type of data output at
camera_pose_output. Supported values areprojection_matrixandextrinsics_model. Default value isprojection_matrix. type: std::string- type:
std::string
- type:
- camera_eye: Initial camera eye position.
type: std::array<float, 3>
- type:
std::array<float, 3>
- type:
- camera_look_at: Initial camera look at position.
type: std::array<float, 3>
- type:
std::array<float, 3>
- type:
- camera_up: Initial camera up vector.
type: std::array<float, 3>
- type:
std::array<float, 3>
- type:
- key_callback: The callback function is called when a key is pressed, released or repeated.
type: KeyCallbackFunction
- type:
KeyCallbackFunction
- type:
- unicode_char_callback: The callback function is called when a Unicode character is input.
type: UnicodeCharCallbackFunction
- type:
UnicodeCharCallbackFunction
- type:
- mouse_button_callback: The callback function is called when a mouse button is pressed or released.
type: MouseButtonCallbackFunction
- type:
MouseButtonCallbackFunction
- type:
- scroll_callback: The callback function is called when a scrolling device is used, such as a mouse scroll wheel or the scroll area of a touch pad.
type: ScrollCallbackFunction
- type:
ScrollCallbackFunction
- type:
- cursor_pos_callback: The callback function is called when the cursor position changes. Coordinates are provided in screen coordinates, relative to the upper left edge of the content area.
type: CursorPosCallbackFunction
- type:
CursorPosCallbackFunction
- type:
- framebuffer_size_callback: The callback function is called when the framebuffer is resized.
type: FramebufferSizeCallbackFunction
- type:
FramebufferSizeCallbackFunction
- type:
- window_size_callback: The callback function is called when the window is resized.
type: WindowSizeCallbackFunction
- type:
WindowSizeCallbackFunction
- type:
- window_close_callback: The callback function is called when the window is closed.
type: WindowCloseCallbackFunction
- type:
WindowCloseCallbackFunction
- type:
- interrupt_app_on_window_close: When false (default): on window close, the operator is placed in a NEVER state and the fragment will shutdown once deadlock is detected by the scheduler. If true, the local fragment executor is explicitly interrupted when the window is closed causing immediate shutdown. If
window_close_callbackis set, the execution interrupt occurs after that callback returns. This option is ignored for distributed applications. If true, interrupts the local fragment executor when the window is closed afterwindow_close_callbackcompletes. This is useful for prompt shutdown in single-fragment event-driven applications where background transport activity could otherwise keep the scheduler alive after the Holoviz operator itself entersNEVER. Ignored for distributed applications. (default:false) type: bool- type:
bool
- type:
- layer_callback: The callback function is called when
HolovizOpprocessed all layers defined by the input specification. It can be used to add extra layers. type: LayerCallbackFunction- type:
LayerCallbackFunction
- type:
==Device Memory Requirements==
If render_buffer_input or depth_buffer_input is enabled, the provided buffer is used and no memory block will be allocated. Otherwise, when using this operator with a BlockMemoryPool, a single device memory block is needed (storage_type = 1). The size of this memory block can be determined by rounding the width and height up to the nearest even size and then padding the rows as needed so that the row stride is a multiple of 256 bytes. C++ code to calculate the block size is as follows:
==Notes==
- Displaying Color Images
Image data can either be on host or device (GPU). Multiple image formats are supported
R 8 bit unsigned
R 16 bit unsigned
R 16 bit float
R 32 bit unsigned
R 32 bit float
RGB 8 bit unsigned
BGR 8 bit unsigned
RGBA 8 bit unsigned
BGRA 8 bit unsigned
RGBA 16 bit unsigned
RGBA 16 bit float
RGBA 32 bit float
- R 8 bit unsigned
- R 16 bit unsigned
- R 16 bit float
- R 32 bit unsigned
- R 32 bit float
- RGB 8 bit unsigned
- BGR 8 bit unsigned
- RGBA 8 bit unsigned
- BGRA 8 bit unsigned
- RGBA 16 bit unsigned
- RGBA 16 bit float
- RGBA 32 bit float
When the
typeparameter is set tocolor_lutthe final color is looked up using the values from thecolor_lutparameter. For color lookups these image formats are supported R 8 bit unsigned R 16 bit unsigned R 32 bit unsigned - R 8 bit unsigned
- R 16 bit unsigned
- R 32 bit unsigned
- Drawing Geometry
In all cases,
xandyare normalized coordinates in the range[0, 1]. Thexandycorrespond to the horizontal and vertical axes of the display, respectively. The origin(0, 0)is at the top left of the display. Geometric primitives outside of the visible area are clipped. Coordinate arrays are expected to have the shape(N, C)whereNis the coordinate count andCis the component count for each coordinate. Points are defined by a (x, y) coordinate pair. Lines are defined by a set of two (x, y) coordinate pairs. Lines strips are defined by a sequence of (x, y) coordinate pairs. The first two coordinates define the first line, each additional coordinate adds a line connecting to the previous coordinate. Triangles are defined by a set of three (x, y) coordinate pairs. Crosses are defined by (x, y, size) tuples. size specifies the size of the cross in the x direction and is optional, if omitted it’s set to 0.05. The size in the y direction is calculated using the aspect ratio of the window to make the crosses square. Rectangles (bounding boxes) are defined by a pair of 2-tuples defining the upper-left and lower-right coordinates of a box: (x1, y1), (x2, y2). Ovals are defined by (x, y, size_x, size_y) tuples. size_x and size_y are optional, if omitted they are set to 0.05. Texts are defined by (x, y, size) tuples. size specifies the size of the text in y direction and is optional, if omitted it’s set to 0.05. The size in the x direction is calculated using the aspect ratio of the window. The index of each coordinate references a text string from the text parameter and the index is clamped to the size of the text array. For example, if there is one item set for the text parameter, e.g. text=[“my_text”] and three coordinates, then my_text is rendered three times. If text=[“first text”, “second text”] and three coordinates are specified, then first text is rendered at the first coordinate, second text at the second coordinate and then second text again at the third coordinate. The text string array is fixed and can’t be changed after initialization. To hide text which should not be displayed, specify coordinates greater than (1.0, 1.0) for the text item, the text is then clipped away. 3D Points are defined by a (x, y, z) coordinate tuple. 3D Lines are defined by a set of two (x, y, z) coordinate tuples. 3D Lines strips are defined by a sequence of (x, y, z) coordinate tuples. The first two coordinates define the first line, each additional coordinate adds a line connecting to the previous coordinate. 3D Triangles are defined by a set of three (x, y, z) coordinate tuples.- Points are defined by a
(x, y)coordinate pair. - Lines are defined by a set of two
(x, y)coordinate pairs. - Lines strips are defined by a sequence of
(x, y)coordinate pairs. The first two coordinates define the first line, each additional coordinate adds a line connecting to the previous coordinate. - Triangles are defined by a set of three
(x, y)coordinate pairs. - Crosses are defined by
(x, y, size)tuples.sizespecifies the size of the cross in thexdirection and is optional, if omitted it’s set to0.05. The size in theydirection is calculated using the aspect ratio of the window to make the crosses square. - Rectangles (bounding boxes) are defined by a pair of 2-tuples defining the upper-left and lower-right coordinates of a box:
(x1, y1), (x2, y2). - Ovals are defined by
(x, y, size_x, size_y)tuples.size_xandsize_yare optional, if omitted they are set to0.05. - Texts are defined by
(x, y, size)tuples.sizespecifies the size of the text inydirection and is optional, if omitted it’s set to0.05. The size in thexdirection is calculated using the aspect ratio of the window. The index of each coordinate references a text string from thetextparameter and the index is clamped to the size of the text array. For example, if there is one item set for thetextparameter, e.g.text=["my_text"]and three coordinates, thenmy_textis rendered three times. Iftext=["first text", "second text"]and three coordinates are specified, thenfirst textis rendered at the first coordinate,second textat the second coordinate and thensecond textagain at the third coordinate. Thetextstring array is fixed and can’t be changed after initialization. To hide text which should not be displayed, specify coordinates greater than(1.0, 1.0)for the text item, the text is then clipped away. - 3D Points are defined by a
(x, y, z)coordinate tuple. - 3D Lines are defined by a set of two
(x, y, z)coordinate tuples. - 3D Lines strips are defined by a sequence of
(x, y, z)coordinate tuples. The first two coordinates define the first line, each additional coordinate adds a line connecting to the previous coordinate. - 3D Triangles are defined by a set of three
(x, y, z)coordinate tuples.
- Points are defined by a
- Displaying Depth Maps
When
typeisdepth_mapthe provided data is interpreted as a rectangular array of depth values. Additionally a 2d array with a color value for each point in the grid can be specified by settingtypetodepth_map_color. The type of geometry drawn can be selected by settingdepth_map_render_mode. Depth maps are rendered in 3D and support camera movement. - Output
By default a window is opened to display the rendering, but the extension can also be run in headless mode with the
headlessparameter. Using a display in exclusive mode is also supported with theuse_exclusive_displayparameter. This reduces the latency by avoiding the desktop compositor. The rendered framebuffer can be output torender_buffer_outputordepth_buffer_outputif enabled.
==Notes==
When render_buffer_output or depth_buffer_output are enabled, this operator may launch CUDA kernels that execute asynchronously on a CUDA stream. As a result, the compute method may return before all GPU work has completed. Downstream operators that receive data from this operator should either:
- Call
op_input.receive_cuda_stream(<port_name>)(after callingreceivefor that port) to synchronize the CUDA stream with the downstream operator’s dedicated internal stream before accessing the data. - Add a
CudaStreamConditionto delay scheduling until upstream GPU work has completed.
For more details on CUDA stream handling in Holoscan, see: https://docs.nvidia.com/holoscan/sdk-user-guide/holoscan_cuda_stream_handling.html
Example
Inherits from: holoscan::Operator (public)
Constructors
HolovizOp
Destructor
~HolovizOp
Methods
setup
Define the operator specification.
Parameters
The reference to the operator specification.
initialize
Initialize the component.
This method is called only once when the component is created for the first time, and use of light-weight initialization.
start
Implement the startup logic of the operator.
This method is called multiple times over the lifecycle of the operator according to the order defined in the lifecycle, and used for heavy initialization tasks such as allocating memory resources.
compute
Implement the compute method.
This method is called by the runtime multiple times. The runtime calls this method until the operator is stopped.
Parameters
The input context of the operator.
The output context of the operator.
The execution context of the operator.
stop
Implement the shutdown logic of the operator.
This method is called multiple times over the lifecycle of the operator according to the order defined in the lifecycle, and used for heavy deinitialization tasks such as deallocation of all resources previously assigned in start.
default_window_close_callback
Default window-close behavior executed by Holoviz.
This helper performs Holoviz’s built-in window-close handling. When the Holoviz window is requested to close:
- If the application is running in a distributed configuration, this method initiates a distributed application shutdown via
Application::initiate_distributed_app_shutdown(). - Otherwise, it performs no-op (normal single-fragment shutdown proceeds via the associated
window_close_condition).
This method is also exposed to Python so user-provided callbacks can easily preserve the default shutdown semantics by calling HolovizOp.default_window_close_callback() inside their custom window_close_callback.
operator_type
Get the operator type.
Returns: The operator type.
id
Mutable
Const
name
Mutable
Const
Set the name of the operator.
Returns: The reference to this operator.
Parameters
The name of the operator.
fragment
Set the fragment of the operator
Overload 2
Const
Set the fragment of the operator.
Returns: The reference to this operator.
Parameters
The pointer to the fragment of the operator.
spec
Set the operator spec
Get the operator spec
Set the operator spec.
Returns: The reference to this operator.
Parameters
The operator spec.
spec_shared
Get the shared pointer to the operator spec.
Returns: The shared pointer to the operator spec.
condition
Get a shared pointer to the Condition object.
Returns: The reference to the Condition object. If the condition does not exist, return the nullptr.
Parameters
The name of the condition.
conditions
Get the conditions of the operator.
Returns: The conditions of the operator.
resource
Get a shared pointer to the Resource object.
Returns: The reference to the Resource object. If the resource does not exist, returns the nullptr.
Parameters
The name of the resource.
resources
Get the resources of the operator.
Returns: The resources of the operator.
add_arg
Add a condition to the operator (1)
Add a condition to the operator (2)
Add a resource to the operator (1)
Add a resource to the operator (2)
Add an argument to the component (1)
Add an argument to the component (2)
Add a list of arguments to the component (1)
Add a list of arguments to the component (2)
Add a condition to the operator.
Parameters
The condition to add.
is_root
Returns whether the operator is a root operator based on its fragment’s graph.
Returns: True, if the operator is a root operator; false, otherwise
is_user_defined_root
Returns whether the operator is a user-defined root operator i.e., the first operator added to the graph.
Returns: True, if the operator is a user-defined root operator; false, otherwise
is_leaf
Returns whether the operator is a leaf operator based on its fragment’s graph.
Returns: True, if the operator is a leaf operator; false, otherwise
qualified_name
Returns the fully qualified name of the operator including the name of the fragment.
Returns: std::string fully qualified name of the operator in the format: “<fragment_name>.<operator_name>“
to_yaml_node
Get a YAML representation of the operator.
Returns: YAML node including type, specs, conditions and resources of the operator in addition to the base component properties.
graph_entity
Get the GXF GraphEntity object corresponding to this operator.
Returns: graph entity corresponding to the operator
get_data_flow_tracking_label
Get the current message label for a given input port.
This method retrieves the MessageLabel associated with data received on the specified input port. The MessageLabel contains timing and path information for data flow tracking.
This method should ideally be called after receiving data on the input port.
If the input_port_name is invalid (not found in the operator’s input ports), an error is logged and an empty MessageLabel is returned.
Returns: MessageLabel The current message label for the input port. Returns an empty MessageLabel if the port does not have a message label or if the port does not exist (logs an error in the latter case as well).
Throws: std::runtime_error If the operator backend is not GXF-compatible.
Throws: std::runtime_error If fragment is not set.
Throws: std::runtime_error If operator spec is not set.
Throws: std::runtime_error If fragment flow tracking is not enabled.
Parameters
The name of the input port.
metadata
Get a shared pointer to the dynamic metadata of this operator.
Note: currently this metadata dictionary is only active if explicitly enabled for the application by setting Fragment::is_metadata_enabled(true). When metadata is disabled the dictionary will not be populated by receive calls and will not be emitted on emit calls.
This metadata dictionary is always empty at the start of each compute call. It is populated by metadata received on input ports during InputContext::receive() calls and can be modified as desired by the operator during the compute call. Any metadata corresponding to this object will be sent on the output ports by any OutputContext::emit() calls.
Returns: The metadata dictionary for this operator.
is_metadata_enabled
Determine if metadata is enabled for this operator.
Returns: Boolean indicating if metadata is enabled (returns fragment()``->``is_metadata_enabled() if enable_metadata was not explicitly called for the operator.
enable_metadata
Enable or disable metadata for this operator.
If this method has not been used to explicitly enable or disable metadata, the value for is_metadata_enabled() will be determined by Fragment::is_metadata_enabled() when the operator is initialized.
Parameters
Boolean indicating if metadata should be enabled.
metadata_policy
Mutable
Const
Set the metadata update policy used by this operator.
The metadata policy determines how metadata is merged across multiple receive calls:
MetadataPolicy::kUpdate: Update the existing value when a key already exists.MetadataPolicy::kInplaceUpdate: Update the existing MetadataObject’s value in-place when a key already exists.MetadataPolicy::kReject: Do not modify the existing value if a key already exists.MetadataPolicy::kRaise: Raise an exception if a key already exists (default).
Parameters
The metadata update policy to be used by this operator.
receiver
If no CudaStreamPool parameter or argument already exists, add a default one.
This method is available to be called by derived classes to add a default CudaStreamPool in This method is available to be called by derived classes to add a default CudaStreamPool inthe case that the user did not pass one in as an argument tomake_operator`.
This function will not add an additional CUDA stream pool if one was already passed in as an argument to make_operator (i.e. it is in resources_) or if a “cuda_stream_pool” parameter already exists in the operator spec.
/** Return the Receiver corresponding to a specific input port.
Returns: The Receiver corresponding to the input port, if it exists. Otherwise, return nullopt.
Parameters
The name of the input port.
transmitter
Return the Transmitter corresponding to a specific output port.
Returns: The Transmitter corresponding to the output port, if it exists. Otherwise, return nullopt.
Parameters
The name of the output port.
bind_input_topic
Bind an input port to a Pub/Sub topic.
This is the programmatic override path for topic-mapped ports and takes precedence over any lower-priority IOSpec::topic() default configured in setup().
Parameters
The input port to bind.
The topic name to subscribe to.
Optional QoS profile override. When nullopt, any QoS already configured on the port (e.g. in setup()) is preserved.
If true, replace an explicitly non-PubSub connector on this port with a Pub/Sub connector.
bind_output_topic
Bind an output port to a Pub/Sub topic.
This is the programmatic override path for topic-mapped ports and takes precedence over any lower-priority IOSpec::topic() default configured in setup().
Parameters
The output port to bind.
The topic name to publish to.
Optional QoS profile override. When nullopt, any QoS already configured on the port (e.g. in setup()) is preserved.
If true, replace an explicitly non-PubSub connector on this port with a Pub/Sub connector.
input_topic
Get the configured topic name for an input port, if any.
output_topic
Get the configured topic name for an output port, if any.
input_qos
Get the effective QoS profile for an input port, if it is topic-mapped.
output_qos
Get the effective QoS profile for an output port, if it is topic-mapped.
queue_policy
Set the queue policy to be used by an input or output port.
The following IOSpec::QueuePolicy values are supported:
- QueuePolicy::kPop - If the queue is full, pop the oldest item, then add the new one.
- QueuePolicy::kReject - If the queue is full, reject (discard) the new item.
- QueuePolicy::kFault - If the queue is full, log a warning and reject the new item.
Parameters
The name of the port.
Enum flag indicating whether port_name specifies an input or output port.
The queue policy to set for the port.
input_exec_spec
output_exec_spec
dynamic_flow_func
self_shared
next_flows
Get the list of next flows connected to this operator.
Returns: A vector of FlowInfo objects representing the flows to downstream operators.
add_dynamic_flow
Overload 1
Overload 2
Overload 3
Overload 4
Add a dynamic flow from this operator to another operator using a FlowInfo object.
Parameters
The flow information object describing the connection between operators.
dynamic_flows
Get the list of dynamic flows that have been added to this operator.
Returns: A shared pointer to a vector of FlowInfo objects representing the dynamic flows.
find_flow_info
Locate a flow info in the operator’s next flows based on a given predicate.
Returns: Shared pointer to the matching FlowInfo, or nullptr if not found.
Parameters
Lambda function that takes a FlowInfo shared pointer and returns a boolean.
find_all_flow_info
Find all FlowInfo objects in the operator’s next flows that match a given condition.
Returns: A vector of shared pointers to the matching FlowInfo objects.
Parameters
A lambda function that takes a shared pointer to a FlowInfo object and returns a boolean.
async_condition
Get the internal asynchronous condition for the operator.
Note: This object is only accessible after the executor has called Operator::initialize() via run() or run_async(). If accessed during Application::compose(), it will return nullptr.
Returns: A shared pointer to the internal asynchronous condition.
stop_execution
Stop the execution of the operator.
This method is used to stop the execution of the operator by setting the internal async condition to EVENT_NEVER state, which sets the scheduling condition to NEVER. Once stopped, the operator will not be scheduled for execution (the compute() method will not be called).
Note that executing this method does not trigger the operator’s stop() method. The stop() method is called only when the scheduler deactivates all operators together.
execution_context
Get the ExecutionContext object.
Returns: The shared pointer to the ExecutionContext object.
ensure_contexts
Ensure the contexts (input/output/execution) for the operator.
This method is called by the GXFExecutor when the operator is initialized.
release_internal_resources
Internal method to clean up operator resources and prevent circular references.
This is an internal method called automatically by the GXFWrapper during operator shutdown (in GXFWrapper::stop() method). It resets std::shared_ptr fields and std::function objects such as input_exec_spec_, output_exec_spec_, next_flows_, dynamic_flows_, and dynamic_flow_func_ to break potential circular references between connected Operator objects.
This is an internal method that should never be called directly by user code. Improper use can lead to undefined behavior.
operator
defaults
is_gxf_compatible_operator_type
Check if the operator is a GXF compatible operator type.
This checks the OperatorType and returns true if it is one of {kNative, kGXF, kVirtual}.
Returns: True if the operator is a GXF compatible operator type, false otherwise.
operator std::shared_ptr< Executor > executor
has_pubsub_connector
Check if the operator has any UCX connectors.
Check if the operator has any PubSub connectors.
has_network_connector
Check if the operator has any network (UCX or PubSub) connectors.
args
Get the list of arguments.
Returns: The vector of arguments.
description
Get a description of the component.
Returns: YAML string.
See also: to_yaml_node()
service
Retrieve a registered fragment service or resource.
Retrieves a previously registered fragment service or resource by its type and optional identifier. Returns nullptr if no service/resource is found with the specified type and identifier.
Note that any changes to the service retrieval logic in this method should be synchronized with the implementation in Fragment::service() method to maintain consistency.
Returns: The shared pointer to the service/resource, or nullptr if not found or if type casting fails.
Template parameters
The type of the service/resource to retrieve. Must inherit from either Resource or FragmentService. Defaults to DefaultFragmentService if not specified.
Parameters
The identifier of the service/resource. If empty, retrieves by type only.
get_service_by_type_info
Retrieve a registered fragment service or resource for Python bindings.
This is a helper method for Python bindings to retrieve a service by its C++ type info.
Returns: The shared pointer to the base service, or nullptr if not found.
Parameters
The type info of the service/resource to retrieve.
The identifier of the service/resource. If empty, retrieves by type only.
reset_backend_objects
Reset any backend-specific objects (e.g. GXF GraphEntity).
disable_via_window_close
initialize_graph_entity
This function creates a GraphEntity corresponding to the operator.
Returns: The GXF entity eid corresponding to the graph entity.
Parameters
The GXF context.
Prefix to add to the operator’s name when creating the GraphEntity.
initialize_async_condition
Initialize the internal asynchronous condition to control the operator execution.
This method is called by the GXFExecutor when the operator is initialized.
add_codelet_to_graph_entity
Add this operator as the codelet in the GXF GraphEntity.
Returns: The codelet component id corresponding to GXF codelet.
initialize_conditions
initialize_resources
update_params_from_args
Overload 1
Update parameters based on the specified arguments
update_connector_arguments
Replace any “receiver” supplied as a string with the actual receiver of that name.
Can only be called after GXFExecutor::create_input_port so the input ports (receivers) exist.
find_ports_used_by_condition_args
Determine ports whose transmitter or receiver are associated with an Arg for a Condition.
Should be called before GXFExecutor::create_input_port or GXFExecutor::create_output_port.
get_consolidated_input_label
This function returns a consolidated MessageLabel for all the input ports of an Operator.
If there is no input port (root Operator), then a new MessageLabel with the current Operator and default receive timestamp is returned.
Returns: The consolidated MessageLabel
update_input_message_label
Update the input_message_labels map with the given MessageLabel a corresponding input_name.
Parameters
The input port name for which the MessageLabel is updated
The new MessageLabel that will be set for the input port
delete_input_message_label
Delete the input_message_labels map entry for the given input_name.
Parameters
The input port name for which the MessageLabel is deleted
reset_input_message_labels
Reset the input message labels to clear all its contents.
This is done for a leaf operator when it finishes its execution as it is assumed that all its inputs are processed.
has_input_message_labels
Check if the operator has any input message labels.
num_published_messages_map
Get the number of published messages for each output port indexed by the output port name.
The function is utilized by the DFFTCollector to update the DataFlowTracker with the number of published messages for root operators.
Returns: The map of the number of published messages for every output name.
update_published_messages
This function updates the number of published messages for a given output port.
Parameters
The name of the output port
operator.void initialize_next_flows
non_default_input_ports
non_default_output_ports
set_input_exec_spec
set_output_exec_spec
set_dynamic_flows
set_self_shared
initialize_execution_context
service_provider
Set the service provider that owns this component.
enable_conditional_port
set_input_spec
set_input_spec_geometry
read_frame_buffer
render_color_image
render_geometry
render_depth_map
wait_for_present
Block until either the present_id is greater than or equal to the presentation index, or timeout_ns nanoseconds passes.
The present ID is initially zero and increments after each present.
This function is thread-safe and can be called asynchronously to the operator execution.
Returns: true if the present_id is greater than or equal to the presentation index, false if timeout_ns nanoseconds passes
Parameters
The presentation presentId to wait for
Timeout in nanoseconds
wait_for_first_pixel_out
Block until either the first pixel of the next display refresh cycle leaves the display engine for the display or timeout_ns nanoseconds passes.
This function is thread-safe and can be called asynchronously to the operator execution.
Returns: true if the first pixel out event is detected, false if timeout_ns nanoseconds passes
Parameters
Timeout in nanoseconds
Static methods
inputTypeFromString
Convert a string to a input type enum.
Returns: input type enum
Parameters
Input type string
inputTypeToString
Convert a input type enum to a string.
Returns: input type string
Parameters
Input type enum
imageFormatFromString
Convert a string to a image format enum.
Returns: image format enum
Parameters
Image format string
imageFormatToString
Convert a image format enum to a string.
Returns: image format string
Parameters
Image format enum
depthMapRenderModeFromString
Convert a string to a depth map render mode enum.
Returns: depth map render mode enum
Parameters
Depth map render mode string
depthMapRenderModeToString
Convert a depth map render mode enum to a string.
Returns: depth map render mode string
Parameters
Depth map render mode enum
yuvModelConversionFromString
Convert a string to a yuv model conversion enum.
Returns: yuv model conversion enum
Parameters
Yuv model conversion string
yuvModelConversionToString
Convert a yuv model conversion enum to a string.
Returns: depth map render mode string
Parameters
Yuv model conversion enum
yuvRangeFromString
Convert a string to a yuv range enum.
Returns: yuv range enum
Parameters
Yuv range string
yuvRangeToString
Convert a yuv range enum to a string.
Returns: yuv range string
Parameters
Yuv range enum
chromaLocationFromString
Convert a string to a chroma location enum.
Returns: chroma location enum
Parameters
Chroma location string
chromaLocationToString
Convert a chroma location enum to a string.
Returns: chroma location string
Parameters
Chroma location enum
colorSpaceFromString
Convert a string to a color space enum.
Returns: color space enum
Parameters
Color space string
colorSpaceToString
Convert a color space enum to a string.
Returns: color space string
Parameters
Color space enum
is_all_operator_successor_virtual
Returns whether all the successors of an operator are virtual operators.
Returns: true if the operator has all virtual operator successors, false otherwise
Parameters
The shared_ptr to the operator for which the check is to be performed
The graph of operators. fragment()->graph() can usually be used to get this graph.
is_all_operator_predecessor_virtual
Returns whether all the predecessors of an operator are virtual operators.
Returns: true if the operator has all virtual operator predecessors, false otherwise
Parameters
The shared_ptr to the operator for which the check is to be performed
The graph of operators. fragment()->graph() can usually be used to get this graph.
parse_port_name
Return operator name and port name from a string in the format of “<op_name>[.<port_name>]“.
parse_operator_port_key
Return operator name and port name from a string in the format of “<op_name>-<port_name>“.
register_codec
Register the codec for serialization/deserialization of a custom type.
Deprecated
Use holoscan::gxf::GXFExecutor::register_codec instead.
validate_operator_name
Validate operator name against restricted keywords and patterns.
Throws: std::invalid_argument if the name contains restricted patterns.
Parameters
The name to validate.
register_converter
Register the argument setter for the given type.
If an operator or resource has an argument with a custom type, the argument setter must be registered using this method.
The argument setter is used to set the value of the argument from the YAML configuration.
This method can be called in the initialization phase of the operator/resource (e.g., initialize()). The example below shows how to register the argument setter for the custom type (Vec3):
It is assumed that YAML::convert<T>::encode and YAML::convert<T>::decode are implemented for the given type. You need to specialize the YAML::convert<> template class.
For example, suppose that you had a Vec3 class with the following members:
You can define the YAML::convert<Vec3> as follows in a ‘.cpp’ file:
Please refer to the yaml-cpp documentation for more details.
Template parameters
The type of the argument to register.
Example
Example
Example
register_argument_setter
Register the argument setter for the given type.
Please refer to the documentation of register_converter() for more details.
Template parameters
The type of the argument to register.
Types
Typedefs
InputType
Input type.
ImageFormat
Image formats.
YuvModelConversion
Defines the conversion from the source color model to the shader color model.
YuvRange
Specifies the YUV range.
ChromaLocation
Defines the location of downsampled chroma component samples relative to the luma samples.
DepthMapRenderMode
Depth map render mode.
ColorSpace
The color space specifies how the surface data is interpreted when presented on screen.
OperatorType
Operator type used by the executor.
RunningState
Member variables
Inner classes
InputSpec
Input specification.