Jetson Linux API 参考文档

32.7.4 版本
NvDrmRenderer 类参考

详细描述

用于使用 LibDRM 进行渲染的辅助类。

渲染器需要缓冲区的文件描述符作为输入。调用者必须以每秒帧数 (FPS) 为单位设置渲染速率。

调用者指定宽度、高度连接器和 CRTC 索引。基于连接器和 CRTC 索引,渲染器找到合适的编码器并配置 CRTC 模式。

定义位于文件 67NvDrmRenderer.h

NvDrmRenderer 的继承关系图
NvDrmRenderer 的协作图

公共成员函数

 ~NvDrmRenderer ()
 
int enqueBuffer (int fd)
 将缓冲区文件描述符排队以进行渲染。 更多...
 
int dequeBuffer ()
 将先前渲染的缓冲区出队。 更多...
 
int setFPS (float fps)
 以每秒帧数设置渲染速率。 更多...
 
bool enableUniversalPlanes (int enable)
 启用/禁用 DRM 通用平面客户端功能,例如 DRM_CLIENT_CAP_UNIVERSAL_PLANES更多...
 
uint32_t createDumbFB (uint32_t width, uint32_t height, uint32_t drm_format, NvDrmFB *fb)
 分配大小为 (w, h) 的帧缓冲区。 更多...
 
int removeFB (uint32_t fb_id)
 销毁(释放)先前由 createDumbFB() 分配的帧缓冲区。 更多...
 
int drmUtilCloseGemBo (int fd, uint32_t bo_handle)
 关闭 GEM (图形执行管理器) 句柄。 更多...
 
int setPlane (uint32_t pl_index, uint32_t fb_id, uint32_t crtc_x, uint32_t crtc_y, uint32_t crtc_w, uint32_t crtc_h, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h)
 更改平面的帧缓冲区和位置。 更多...
 
int getPlaneCount ()
 获取可用平面的总数。 更多...
 
int getPlaneIndex (uint32_t crtc_index, int32_t *plane_index)
 获取给定 crtc 索引支持的平面索引。 更多...
 
int getCrtcCount ()
 获取可用 CRTC 的计数。 更多...
 
int getEncoderCount ()
 获取可用编码器的计数。 更多...
 
bool hdrSupported ()
 检查 DRM 渲染器是否支持 HDR 模式。 更多...
 
int setHDRMetadataSmpte2086 (struct drm_tegra_hdr_metadata_smpte_2086)
 设置从解码器检索的 HDR 元数据。 更多...
 
virtual int isInError ()
 指示元素在其操作期间是否遇到错误。 更多...
 
void getProfilingData (NvElementProfiler::NvElementProfilerData &data)
 获取元素的性能分析数据。 更多...
 
void printProfilingStats (std::ostream &out_stream=std::cout)
 将元素的性能分析数据打印到输出流。 更多...
 
virtual void enableProfiling ()
 启用元素的性能分析。 更多...
 
bool isProfilingEnabled ()
 检查是否为元素启用了性能分析。 更多...
 

静态公共成员函数

static NvDrmRenderercreateDrmRenderer (const char *name, uint32_t width, uint32_t height, uint32_t w_x, uint32_t w_y, uint32_t connector, uint32_t crtc, struct drm_tegra_hdr_metadata_smpte_2086 metadata, bool streamHDR)
 创建一个名为 name 的新 DRM 渲染器。 更多...
 

受保护的属性

int is_in_error
 指示元素操作期间是否遇到错误。 更多...
 
const char * comp_name
 指定组件的名称,用于调试。 更多...
 
NvElementProfiler profiler
 元素的性能分析器。 更多...
 

构造函数 & 析构函数文档

◆ ~NvDrmRenderer()

NvDrmRenderer::~NvDrmRenderer ( )

成员函数文档

◆ createDrmRenderer()

static NvDrmRenderer* NvDrmRenderer::createDrmRenderer ( const char *  name,
uint32_t  width,
uint32_t  height,
uint32_t  w_x,
uint32_t  w_y,
uint32_t  connector,
uint32_t  crtc,
struct drm_tegra_hdr_metadata_smpte_2086  metadata,
bool  streamHDR 
)
static

创建一个名为 name 的新 DRM 渲染器。

参数
[in]name标识元素实例的唯一名称。
[in]width窗口的宽度(像素)。
[in]height窗口的高度(像素)。
[in]w_x窗口位置的 x 偏移量。
[in]w_y窗口位置的 y 偏移量。
[in]connector要使用的连接器的索引。
[in]crtc要使用的 CRTC 的索引。
[in]metadata包含 HDR 元数据。
[in]streamHDR指示当前流是否具有 HDR 元数据的标志,因此设置了 metadata
返回值
如果成功,则返回对新创建的渲染器对象的引用;如果初始化失败,则返回 NULL。

◆ createDumbFB()

uint32_t NvDrmRenderer::createDumbFB ( uint32_t  width,
uint32_t  height,
uint32_t  drm_format,
NvDrmFB fb 
)

分配大小为 (w, h) 的帧缓冲区。

后置条件
如果调用成功,应用程序必须通过调用 removeFB() 来移除(释放)帧缓冲区。
参数
[in]width帧缓冲区的宽度(像素)。
[in]height帧缓冲区的高度(像素)。
[in]drm_format*fb_NvDrmBO::bo_handle 的 DRM 格式。
[out]fb指向 NvDrmFB 结构的指针,该结构包含帧缓冲区 ID 和缓冲区映射。
返回值
如果成功,则为 1,否则为 0。

◆ dequeBuffer()

int NvDrmRenderer::dequeBuffer ( )

将先前渲染的缓冲区出队。

这是一个阻塞函数,它等待直到有可用的空闲缓冲区。渲染器保留一个缓冲区,该缓冲区不得被任何其他组件覆盖。当渲染器关闭或在向组件发送 EOS 后,可以使用此缓冲区。

返回值
先前渲染的缓冲区的文件描述符。

◆ drmUtilCloseGemBo()

int NvDrmRenderer::drmUtilCloseGemBo ( int  fd,
uint32_t  bo_handle 
)

关闭 GEM (图形执行管理器) 句柄。

参数
fd缓冲区的 FD。
bo_handle要关闭的 gem 句柄。
返回值
成功为 1,失败为 0。

◆ enableProfiling()

virtual void NvElement::enableProfiling ( )
virtualinherited

启用元素的性能分析。

NvV4l2Element 中重新实现。

◆ enableUniversalPlanes()

bool NvDrmRenderer::enableUniversalPlanes ( int  enable)

启用/禁用 DRM 通用平面客户端功能,例如 DRM_CLIENT_CAP_UNIVERSAL_PLANES

参数
[in]enable1 表示启用这些功能,0 表示禁用它们。
返回值
如果成功,则为 true,否则为 false。

◆ enqueBuffer()

int NvDrmRenderer::enqueBuffer ( int  fd)

将缓冲区文件描述符排队以进行渲染。

这是一个非阻塞调用。该函数等待下一个缓冲区的估计渲染时间。估计的渲染时间是根据上一个缓冲区的渲染时间和渲染速率计算得出的。

参数
[in]fd要渲染的导出缓冲区的文件描述符。
返回值
成功为 0,否则为 -1。

◆ getCrtcCount()

int NvDrmRenderer::getCrtcCount ( )

获取可用 CRTC 的计数。

返回值
可用 CRTC 的计数。

◆ getEncoderCount()

int NvDrmRenderer::getEncoderCount ( )

获取可用编码器的计数。

返回值
可用编码器的计数。

◆ getPlaneCount()

int NvDrmRenderer::getPlaneCount ( )

获取可用平面的总数。

默认情况下,返回的计数仅包括“Overlay”类型(常规)平面,而不包括“Primary”和“Cursor”平面。如果已使用 enableUniversalPlanes() 启用了 DRM_CLIENT_CAP_UNIVERSAL_PLANES,则返回的计数也包括“Primary”和“Cursor”平面。

返回值
可用平面的总数计数。

◆ getPlaneIndex()

int NvDrmRenderer::getPlaneIndex ( uint32_t  crtc_index,
int32_t *  plane_index 
)

获取给定 crtc 索引支持的平面索引。

参数
[in]crtc_index要查找平面索引的 crtc 的索引。
[in,out]plane_index指向包含平面索引的数组的指针。此数组应由调用者根据 getPlaneCount() API 返回的平面计数大小进行分配。
返回值
写入给定数组的索引计数。

◆ getProfilingData()

void NvElement::getProfilingData ( NvElementProfiler::NvElementProfilerData data)
inherited

获取元素的性能分析数据。

返回值
对元素的性能分析数据的常量引用。

◆ hdrSupported()

bool NvDrmRenderer::hdrSupported ( )

检查 DRM 渲染器是否支持 HDR 模式。

返回值
如果 DRM 渲染器支持 HDR 模式,则为 True,否则为 FALSE。

◆ isInError()

virtual int NvElement::isInError ( )
inlinevirtualinherited

指示元素在其操作期间是否遇到错误。

返回值
如果没有遇到错误,则为 0;如果遇到错误,则为非零值。

NvV4l2Element 中重新实现。

定义位于文件 72NvElement.h

参考 NvElement::is_in_error

◆ isProfilingEnabled()

bool NvElement::isProfilingEnabled ( )
inherited

检查是否为元素启用了性能分析。

返回值
指示是否启用性能分析的布尔值。

◆ printProfilingStats()

void NvElement::printProfilingStats ( std::ostream &  out_stream = std::cout)
inherited

将元素的性能分析数据打印到输出流。

参数
[in]out_stream要将数据打印到的 std::ostream 类型的输出流。如果未指定,则采用默认值 std::cout。

◆ removeFB()

int NvDrmRenderer::removeFB ( uint32_t  fb_id)

销毁(释放)先前由 createDumbFB() 分配的帧缓冲区。

参数
fb_id要销毁的帧缓冲区的 ID。
返回值
如果帧缓冲区成功销毁,则为 0;如果未找到帧缓冲区,则为 -ENOENT

◆ setFPS()

int NvDrmRenderer::setFPS ( float  fps)

以每秒帧数设置渲染速率。

Warning
fps 不得设置为零。
参数
[in]fps每秒帧数的渲染速率。
返回值
成功为 0,否则为 -1。

◆ setHDRMetadataSmpte2086()

int NvDrmRenderer::setHDRMetadataSmpte2086 ( struct drm_tegra_hdr_metadata_smpte_2086  )

设置从解码器检索的 HDR 元数据。

返回值
成功为 0,否则为 -1。

◆ setPlane()

int NvDrmRenderer::setPlane ( uint32_t  pl_index,
uint32_t  fb_id,
uint32_t  crtc_x,
uint32_t  crtc_y,
uint32_t  crtc_w,
uint32_t  crtc_h,
uint32_t  src_x,
uint32_t  src_y,
uint32_t  src_w,
uint32_t  src_h 
)

更改平面的帧缓冲区和位置。

Note
crtc_... 和 src_... 参数接受特殊输入值 -1,这表示硬件偏移值不会更改。(当给定此值时,基于内核的 DRM 驱动程序返回错误代码 -ERANGE。)
所有 setPlane() 操作都同步到垂直消隐并进行阻塞。
参数
pl_index要更改的平面的平面索引。
fb_id要在平面上显示的帧缓冲区的帧缓冲区 ID,或 -1 以保持帧缓冲区不变。
crtc_x从活动显示区域的左侧到显示平面的偏移量。
crtc_y从活动显示区域的顶部到显示平面的偏移量。
crtc_w显示器上输出矩形的宽度。
crtc_h显示器上输出矩形的高度。
src_x从源帧缓冲区的左侧裁剪偏移量(Q16.16 定点)。
src_y从源帧缓冲区的顶部裁剪偏移量(Q16.16 定点)。
src_w源矩形的宽度(Q16.16 定点)。
src_h源矩形的高度(Q16.16 定点)。
返回值
0如果成功。
-EINVAL如果 pl_index 无效。
-errno否则。

字段文档

◆ comp_name

const char* NvElement::comp_name
protectedinherited

指定组件的名称,用于调试。

定义位于文件 122NvElement.h

◆ is_in_error

int NvElement::is_in_error
protectedinherited

指示元素操作期间是否遇到错误。

定义位于文件 120NvElement.h

NvElement::isInError() 引用。

◆ profiler

NvElementProfiler NvElement::profiler
protectedinherited

元素的性能分析器。

定义位于文件 124NvElement.h


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