Operator Overflow

运算符 Library: Synchronization

运算符 Overflow 将不可停止的输入 2D 数据流与可能偶尔阻塞的后续图像处理管道解耦。 当输出数据受阻导致内部小型缓冲区被填满时,它会识别出溢出情况。如果发生溢出, 则通过立即附加行尾和帧尾标记来裁剪正在传输的帧。 相应的帧将被视为已损坏,并会相应地生成一个事件。 当新帧进入输入端 I 且输出端仍然处于阻塞状态时, 这些帧将被跳过。随后,将生成关于丢失帧的事件。

请参阅 Stoppable and Non-Stoppable Data Streams 教程主题 以获取实用指导。

[Caution] 溢出会导致非矩形帧

当输入帧由于溢出情况而被裁剪时,输出帧的最后一行通常比其他行短 。请确保后续的图像处理能够处理这种情况。

对于每个损坏或丢失的帧,都会生成一个溢出事件。溢出事件传输包含 帧号和溢出类型的数据有效负载。事件有效负载以三个 16 位数据字的形式提供。前两个字表示 一个 32 位的帧号值,其中最低有效位存储在第一个字中。第三个 16 位字提供 一个溢出掩码,其掩码位定义如下:

  • [0]:帧已损坏

  • [1]:帧已丢失

  • [2]:之前发生过事件丢失

  • [3]:帧正常

  • [4] .. [15]:保留

请注意,帧号在 Acquisition Start 时重置。还要注意,第一帧的帧号将为零,而 DMA 传输从帧号一开始。 帧号是一个 32 位值。如果达到其最大值,它将重新从零开始。在 64 位目标运行时上, DMA 传输编号将是一个 64 位值。 如果设置了 frame corrupted,则事件中具有该帧号的帧已损坏,即它将不具备完整长度,因此后续处理 可能会产生无效结果。 如果设置了 frame lost 标志,则事件中具有该帧号的帧已被完全丢弃,因此后续处理管道 未接收到来自该帧的任何数据。 corrupted frame 标志和 frame lost 标志绝不会在同一个事件中同时出现。标志 event loss occured before 是一种附加的安全机制。这意味着某个事件已丢失。 这仅在极高的事件速率下发生,在正常条件下不应发生。

I/O Property

Property 值
Operator Type M
Input Link I,不可停止的数据输入
Output Link O,数据输出

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64] as I
Arithmetic {unsigned, signed} as I
Parallelism any as I
Kernel Columns any as I
Kernel Rows any as I
Img Protocol VALT_IMAGE2D VALT_IMAGE2D
Color Format any as I
Color Flavor any as I
Max. Img Width any as I
Max. Img Height any as I

参数

EventsForSuccessfulFrame
键入 动态读/写参数
默认 OFF
范围 [OFF, ON]

定义是否应为通过的任何帧生成事件。

OverflowOccurred
键入 动态只读参数
默认 0
范围 [0, 1]

通知是否发生了溢出事件。

该参数在读访问后重置,因此它显示在上次读访问 和当前读访问之间是否发生了溢出情况。

使用示例

以下示例展示了 Overflow 运算符的使用: