Interface,提供用于基于 Buffer 的 OutputStreams 的方法。
定义于文件 221 行,BufferStream.h。
◆ ~IBufferOutputStream()
Argus::IBufferOutputStream::~IBufferOutputStream |
( |
| ) |
|
|
inlineprotected |
◆ acquireBuffer()
从流中获取一个 Buffer,该 Buffer 已被 libargus 捕获请求写入。
Buffer 以 FIFO 顺序从流中获取,相对于它们被 libargus 生成的时间(可能与原始请求提交顺序不匹配)。如果提供了非零超时,则此操作将阻塞,直到 libargus 生成新的 Buffer 或超过超时时间段。
一旦 Buffer 被获取,应用程序将独占访问 Buffer 的图像数据,它将保留该访问权限,直到 Buffer 通过 releaseBuffer 释放回流以供进一步捕获请求使用。 Buffer 也可能在被获取时被销毁;这样做会阻止在 Stream 中进一步使用 Buffer 对象,并释放 Buffer 对象持有的任何缓冲区资源或引用。
如果已为此 Stream/Buffer 启用同步支持(即 SyncType 不是 STREAM_TYPE_NONE),则硬件同步功能可用于允许对 Buffer 的硬件操作在从 libargus 获取或释放回 libargus 时仍然处于挂起状态。在这种情况下,返回的 Buffer 将包含 libargus 提供的输出同步信息,应用程序必须遵守该信息才能访问 Buffer 的图像数据。 类似地,应用程序可能需要在调用 releaseBuffer 之前将输入同步信息写入 Buffer,以便 libargus 在 Buffer 被新的捕获请求写入之前遵守同步。 用于读取和写入此同步状态的确切机制取决于各种 SyncType 及其相应的接口,并在其中记录。
- 参数
-
[输入] | timeout | 允许获取操作的时间量。 |
[输出] | status | 一个可选的指针,用于返回成功/状态。 |
- 返回值
- 已被捕获请求写入的 Buffer
◆ createBuffer()
◆ createBufferSettings()
◆ endOfStream()
virtual Status Argus::IBufferOutputStream::endOfStream |
( |
| ) |
|
|
pure virtual |
发出流结束信号。
一旦在流上发出流结束信号,当满足以下条件时,任何对 acquireBuffer 的调用都将立即(忽略 timeout 参数)返回 NULL 和 STATUS_END_OF_STREAM 状态:1) 没有立即可用的 Buffer 可供获取,并且 2) 没有捕获请求正在等待写入流。 这意味着不会丢失任何挂起或已完成的帧,并且所有挂起或已完成的帧都必须在返回 END_OF_STREAM 状态之前获取。
如果在发出流结束信号时,并且满足上述条件,任何线程在 acquireBuffer 中被阻塞,则该线程将解除阻塞并立即返回 END_OF_STREAM。
◆ getBufferType()
virtual BufferType Argus::IBufferOutputStream::getBufferType |
( |
| ) |
const |
|
pure virtual |
◆ getSyncType()
virtual SyncType Argus::IBufferOutputStream::getSyncType |
( |
| ) |
const |
|
pure virtual |
◆ id()
static const InterfaceID& Argus::IBufferOutputStream::id |
( |
| ) |
|
|
inlinestatic |
◆ releaseBuffer()
virtual Status Argus::IBufferOutputStream::releaseBuffer |
( |
Buffer * |
buffer | ) |
|
|
pure virtual |
将 Buffer 释放回流,使其可用于未来的捕获请求。
一旦 Buffer 被释放到 Stream,libargus 将独占访问 Buffer 的图像资源,直到它再次被应用程序通过 acquireBuffer 获取。 在此期间,在 libargus 之外对缓冲区的任何访问都可能导致未定义的后果。
虽然通常情况下,Buffer 可能会按照它们被释放的顺序被 libargus 使用,但这不是必需的; libargus 可以在释放后以任何顺序重用 Buffer。
如果已为此 StreamBuffer 启用同步支持(即 SyncType 不是 STREAM_TYPE_NONE),则客户端可能需要在调用 releaseBuffer 之前将同步信息写入 Buffer。 用于写入此同步状态的确切机制取决于各种 SyncType 及其相应的接口,并在其中记录。
请注意,虽然在 Buffer 对象已释放到 libargus 后销毁它是安全的,但挂起的请求可能正在使用此 Buffer,并且可能仍会输出引用 Buffer 对象的 Events,因此应用程序有责任确保它不使用任何先前销毁的 Buffer 对象。 如果没有挂起的请求使用特定的 Stream,则销毁其任何已释放的 Buffer 将阻止它们再次被 libargus 使用或返回。
- 参数
-
此类文档生成自以下文件