Jetson Linux API 参考文档

32.7.4 Release
Argus::IEGLSync 类参考抽象类

详细描述

Buffer 提供 EGLSync 输入和输出方法的接口

定义于文件 EGLSync.h 的第 62 行。

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

公共成员函数

virtual Status getAcquireSync (EGLDisplay eglDisplay, EGLSyncKHR *eglSync)=0
 创建并返回一个新的 EGLSync 对象,该对象在先前 libargus 捕获请求中对 Buffer 的所有操作完成后发出信号。更多...
 
virtual Status setReleaseSync (EGLDisplay eglDisplay, EGLSyncKHR eglSync)=0
 Buffer 释放之前,为其设置客户端提供的 EGLSync。更多...
 

静态公共成员函数

static const InterfaceIDid ()
 

保护成员函数

 ~IEGLSync ()
 

构造函数和析构函数文档

◆ ~IEGLSync()

Argus::IEGLSync::~IEGLSync ( )
inlineprotected

定义于文件 EGLSync.h 的第 139 行。

成员函数文档

◆ getAcquireSync()

virtual Status Argus::IEGLSync::getAcquireSync ( EGLDisplay  eglDisplay,
EGLSyncKHR *  eglSync 
)
pure virtual

创建并返回一个新的 EGLSync 对象,该对象在先前 libargus 捕获请求中对 Buffer 的所有操作完成后发出信号。

当为 Stream 启用同步支持时,即使硬件操作仍在 Buffer 的图像数据上挂起,libargus 也可以将 Buffer 输出到该流。在这种情况下,当客户端获取 Buffer 时,libargus 会将同步信息附加到 Buffer,客户端必须使用该同步信息来阻止对图像数据执行任何客户端操作,直到所有先前的 libargus 操作完成。未能阻止此同步信息可能会导致未定义的缓冲区内容。

此方法将创建并输出一个新的 EGLSync 对象,一旦 libargus 对 Buffer 的所有操作完成,该对象将发出信号。此 EGLSync 对象的所有权将赋予调用者,调用者必须根据需要等待同步对象,然后再使用 eglDestroySyncKHR 销毁它。允许多次调用此方法,并且每次调用都将创建并返回一个新的 EGLSync 对象。

此方法应仅在 Buffer 处于 acquired 状态时调用;即,在 BufferIBufferOutputStream::acquireBuffer 获取和被 IBufferOutputStream::releaseBuffer 释放之间的时间。如果在 acquired 状态之外调用,将返回 STATUS_UNAVAILABLE。

成功时,将返回 STATUS_OK,并且 'eglSync' 将写入新的 EGLSync 对象。请注意,即使返回 STATUS_OK,EGL_NO_SYNC_KHR 仍然是 'eglSync' 的有效输出;这表示 libargus 没有对 Buffer 执行任何挂起的操作,因此客户端在访问图像数据之前无需采取任何同步预防措施。因此,返回的 Status 代码应用于检测故障,而不是检查 EGL_NO_SYNC_KHR 输出。

参数
[in]eglDisplay将拥有返回的 EGLSync 对象的 EGLDisplay。
[out]eglSync新创建的 EGLSync 对象的输出。此对象的所有权赋予客户端。
返回值
此调用的成功/状态。

◆ id()"

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

定义于文件 EGLSync.h 的第 65 行。

◆ setReleaseSync()"

virtual Status Argus::IEGLSync::setReleaseSync ( EGLDisplay  eglDisplay,
EGLSyncKHR  eglSync 
)
pure virtual

Buffer 释放之前,为其设置客户端提供的 EGLSync。

当为 Stream 启用同步支持时,即使客户端在 Buffer 的图像数据上挂起了硬件操作,客户端也可以将 Buffer 释放回 libargus 以供将来捕获使用。在这种情况下,客户端必须向 libargus 提供一个 EGLSync 对象,该对象将在客户端的挂起操作完成时发出信号。然后,libargus 将等待此同步对象,以防止在客户端同步信号发出之前发生任何缓冲区操作。

此方法应仅在 Buffer 处于 acquired 状态时调用;即,在 BufferIBufferOutputStream::acquireBuffer 获取和被 IBufferOutputStream::releaseBuffer 释放之间的时间。如果在此期间之外调用,将返回 STATUS_UNAVAILBLE 且不会进行对象更新。否则,在 acquired 状态下调用时,此方法将设置将在 BufferIBufferOutputStream::releaseBuffer 释放时提供给 libargus 的 EGLSync,并将返回 STATUS_OK。成功后,EGLSync 对象的所有权将传递给 libargus;此后客户端对此 EGLSync 的进一步使用可能会导致未定义的结果或异常终止。如果在 acquired 状态下多次调用,则将替换任何先前设置的 EGLSync;libargus 将仅等待调用 releaseBuffer 之前最后设置的 EGLSync。

如果客户端在调用 releaseBuffer 时在 Buffer 上没有任何挂起的操作,则允许客户端跳过调用此方法,或者使用 EGL_NO_DISPLAY 和 EGL_NO_SYNC_KHR 调用它,以便 libargus 不必考虑任何同步要求,并且可以立即使用 Buffer

参数
[in]eglDisplay创建所提供 EGLSync 对象的 EGLDisplay。
[in]eglSynclibargus 在访问缓冲区之前必须等待的 EGLSync。
返回值
此调用的成功/状态。

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