Jetson Linux API 参考文档

32.7.4 版本
Argus::IBufferOutputStream 类参考抽象类

详细描述

Interface,提供用于基于 Buffer 的 OutputStreams 的方法。

定义于文件 221 行,BufferStream.h

Argus::IBufferOutputStream 的继承关系图
Argus::IBufferOutputStream 的协作图

公共成员函数

virtual BufferType getBufferType () const =0
 返回流的 BufferType。 更多...
 
virtual SyncType getSyncType () const =0
 
virtual BufferSettingscreateBufferSettings (Status *status=NULL)=0
 创建一个 BufferSettings 对象。 更多...
 
virtual BuffercreateBuffer (const BufferSettings *settings, Status *status=NULL)=0
 创建一个 Buffer 对象。 更多...
 
virtual BufferacquireBuffer (uint64_t timeout=TIMEOUT_INFINITE, Status *status=NULL)=0
 从流中获取一个 Buffer,该 Buffer 已被 libargus 捕获请求写入。 更多...
 
virtual Status releaseBuffer (Buffer *buffer)=0
 Buffer 释放回流,使其可用于未来的捕获请求。 更多...
 
virtual Status endOfStream ()=0
 发出流结束信号。 更多...
 

静态公共成员函数

static const InterfaceIDid ()
 

受保护成员函数

 ~IBufferOutputStream ()
 

构造函数 & 析构函数 文档

◆ ~IBufferOutputStream()

Argus::IBufferOutputStream::~IBufferOutputStream ( )
inlineprotected

定义于文件 343 行,BufferStream.h

成员函数文档

◆ acquireBuffer()

virtual Buffer* Argus::IBufferOutputStream::acquireBuffer ( uint64_t  timeout = TIMEOUT_INFINITE,
Status status = NULL 
)
pure virtual

从流中获取一个 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()

virtual Buffer* Argus::IBufferOutputStream::createBuffer ( const BufferSettings settings,
Status status = NULL 
)
pure virtual

创建一个 Buffer 对象。

用于配置 Buffer 创建的所有设置都由 BufferSettings 对象提供(该对象继续由应用程序拥有,并且可以重复使用直到被销毁)。

新的 Buffer 对象以“已获取”状态返回给应用程序,这意味着应用程序必须在 Buffer 可被 libargus 使用之前调用 releaseBuffer。

参数
[输入]settings用于 Buffer 创建的缓冲区设置。
[输出]status一个可选的指针,用于返回成功/状态。
返回值
一个新的 BufferSettings,如果失败则为 NULL(错误代码写入 'status')。

◆ createBufferSettings()

virtual BufferSettings* Argus::IBufferOutputStream::createBufferSettings ( Status status = NULL)
pure virtual

创建一个 BufferSettings 对象。

Destructable 对象用于配置新 Buffer 对象的设置,包括要由 Buffer 包装的本机缓冲区句柄。BufferSettings 对象支持的接口和设置由创建 OutputStream 的 BufferType 和 SyncType 决定。

参数
[输出]status一个可选的指针,用于返回成功/状态。
返回值
一个新的 BufferSettings,如果失败则为 NULL(错误代码写入 'status')。

◆ 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

返回流的 BufferType。

◆ getSyncType()

virtual SyncType Argus::IBufferOutputStream::getSyncType ( ) const
pure virtual
返回值
流的 SyncType。

◆ id()

static const InterfaceID& Argus::IBufferOutputStream::id ( )
inlinestatic

定义于文件 224 行,BufferStream.h

◆ 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 使用或返回。

参数
[输入]buffer要释放回流的 Buffer

此类文档生成自以下文件
. All rights reserved.