4.5 【共享源】流详解

一,什么是流?

流是屏幕API提供的屏幕外多缓冲渲染目标。

流由应用程序而不是Screen本身的使用者使用。在窗口的情况下,最常见的是消费者是Screen,因为内容的存在就是为了在显示器上显示。然而,流的内容则被其他应用程序使用。这些应用程序可以与产生流内容的应用程序分开,可以在同一进程中,也可以在不同的进程中。使用流的常见情况是显示来自摄像机(或视频)的输出,在显示之前需要对摄像机的输出进行某种形式的图像处理。

生产者流的缓冲区是通过调用 screen_create_stream_buffers() 创建的。这些缓冲区用于渲染或发布。最初,所有创建的缓冲区都可以用于渲染。随着缓冲区的发布,它们成为前缓冲区。当所有消费者释放它们时,前缓冲区再次可用作渲染缓冲区。渲染缓冲区可用于生产者流安全地渲染。这些缓冲区是使用流的 SCREEN_PROPERTY_RANGE_BUFFERS 属性检索的。前缓冲区已由流发布(即,使用这些缓冲区调用 screen_post_stream())。这些缓冲区是使用流的 SCREEN_PROPERTY_FRONT_BUFFERS 属性检索的。消费者在消费内容时使用生产者流的前缓冲区。我们不建议渲染到 SCREEN_PROPERTY_RANGE_BUFFERS 中不可用的任何缓冲区,因为存在一个风险,即不在此列表中的缓冲区正在被积极使用。

使用流通常意味着生产者和消费者都有一套基本的过程。内容可以被多个应用程序或进程访问,因此每个生产者和消费者都了解如何提供和访问内容是很重要的。Screen API提供了执行生产者和消费者各自负责的功能。

下面简单描述了一组生产者-消费者函数和交互,以提供对流如何用于共享内容的基本理解。以下步骤不包括细节和具体内容;这些将在后面的章节中提供。

二,流的生产者和消费者

2.1开始&#

你可能感兴趣的:(QNX,Screen图形子系统开发指南,座舱虚拟化QNX,Screen,QNX,qnx,screen)