FrameSkipperOp
🚧 Documentation is under development
The Holoscan SDK guide is currently under active development. Some sections may be incomplete or change without notice.
Questions? Contact RidgeRun or email to support@ridgerun.com.
-
Overview
-
Build, Run, and Validate
-
Core Concepts
-
Operators and Graphs
-
Tensor Data and Memory
-
Interprocess Communication
-
-
Application and Operator Development
- Building an HSDK Application
- Writing a Minimal Operator
- Typed Parameters and Configuration
- Reading, Writing, and Forwarding Data
- Writing Tensor Operators
- Complete Operator Patterns
- Authoring Runtime Behavior
- Runtime Parameter Updates
- Lifecycle Callbacks and Restart Control
- Performance and Debugging
- SDK Source Map
-
Operator Reference
-
Core Operators
-
Holoscan Camera
-
Holoscan RidgeRun
- Overview
- Build and Installation
- ArgusCameraOp
- V4L2SourceOp
- V4L2UserPtrSourceOp
- BgraToPlanarTensorOp
- RawBayerToBgraOp
- RawBayerToYoloTensorOp
- YuyvToBgraOp
- TensorRtInferenceOp
- DrmDisplayOp
- DrmBgraDisplayOp
- X11DisplayOp
- CudaCompositorOp
- DepthColorizerOp
- FakesinkOp
- FrameSkipperOp
- InterprocessSrcOp
- TestPatternOp
-
-
Migration from Holoscan 4.x
-
Examples
-
Core
-
Holoscan Camera
-
Holoscan RidgeRun
-
-
Benchmark and Use Cases
-
Holoscan vs GStreamer
- Overview
-
Capture and Display
-
Capture and Inference
- Compare the workloads
- Implemented Applications
- Framework Selection
- Interprocess
-
FrameSkipperOp
FrameSkipperOp decimates a CUDA tensor stream while preserving the complete retained sample. It receives every input so the upstream queue continues to drain, but forwards only one sample out of each configured group.
Input arguments
The constructor takes keep_one_in_n. It must be greater than zero. With keep_one_in_n = 1, every sample is forwarded; with keep_one_in_n = 3, samples 3, 6, 9 and so on are emitted.
Ports and data contract
| Port | Memory | Queue | Trigger | Contract |
|---|---|---|---|---|
input
|
CUDA device | 1 | OnEach
|
U8 rank-3 tensor. The operator does not impose a fixed width or height. |
output
|
Same backing as input | 1 | Same activation | The retained input tensor is forwarded without allocating or copying a new payload. |
The operator counts every activation, drops non-retained samples and emits the selected sample with its capture time, frame ID, trace context and semantic flags unchanged.
Camera or generator -> FrameSkipperOp -> inference or display
Build
Follow Holoscan RidgeRun Build and Installation for the module build and installation. The operator-specific include, target, and runtime requirements are listed below.
Include frame_skipper/frame_skipper.hpp and link holoscan::frame_skipper.
Example
The counter starts at zero and increments after every received sample. A sample is emitted when the one-based count is divisible by keep_one_in_n; therefore keep_one_in_n=3 forwards samples 3, 6, 9 and so on. The operator consumes discarded samples immediately instead of retaining them in a second queue. The input and output declarations use queue depth one and a device-byte-image contract, keeping the decimation stage bounded.
auto skip = graph.op<FrameSkipperOp>("skip", 3U);
graph.add_flow(camera->frame, skip->input);
graph.add_flow(skip->output, inference->input);
The retained sample is emitted with output.emit(std::move(sample)), so its Tensor storage and metadata are transferred without a payload copy. This includes capture time, clock information, frame ID, trace data and semantic flags. Setting the factor to zero throws during construction; it is not interpreted as "drop everything".