欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 编码方法及装置独创技术33782字

编码方法及装置

2021-03-30 17:17:12

编码方法及装置

  技术领域

  本公开涉及图像编码技术领域,尤其涉及编码方法及装置。

  背景技术

  计算机图像有自然图像和计算机合成图像两大类。自然图像指的是自然界真实存在的景色,人们生活中看到的电影、电视内容均为自然图像。计算机合成图像是采用计算机图形学技术,通过计算机上显卡计算得到的人造图像。在对图像进行传输时,通常需要对图像进行编解码。

  相关技术中,通常编码过程为:采集芯片将采集好的图像数据保存在缓存区中,并将该缓存区的地址发送给主控模块,由主控模块将该缓存区中保存的图像数据拷贝至编码端的缓存,编码端从编码端的缓存中读取图像数据进行编码。

  但上述编码过程中,存在一次将采集的图像数据从采集芯片的缓存区到编码端的缓存区的数据搬运,而数据搬运较为耗费主控模块的资源,因此,数据搬运可能会引入编码延迟,从而降低了图像传输的效率。

  发明内容

  本公开实施例提供一种编码方法及装置,能够解决现有技术中图像传输效率降低的问题。所述技术方案如下:

  根据本公开实施例的第一方面,提供一种编码方法,应用于编码端,所述方法包括:

  接收采集完成事件;所述采集完成事件中携带目标空闲缓存区的标识信息和预备队列的标识信息;

  根据所述预备队列的标识信息确定对应的预备队列;所述预备队列中包括至少一个所述目标空闲缓存区;

  从所述预备队列中确定待编码的目标空闲缓存区;

  从所述待编码的目标空闲缓存区中获取所述待传输图像数据;

  对所述待传输图像数据进行编码,生成目标编码码流。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  在一个实施例中,在所述预备队列中包括至少两个所述目标空闲缓存区时,所述从所述预备队列中确定待编码的目标空闲缓存区包括:

  从所述预备队列中摘取所有的所述目标空闲缓存区;

  从所述所有的所述目标空闲缓存区中确定加入所述预备队列时间最晚的目标空闲缓存区;

  将加入所述预备队列时间最晚的目标空闲缓存区确定为所述待编码的目标空闲缓存区。

  本实施例中,将加入预备队列时间最晚的目标空闲缓存区确定为待编码的目标空闲缓存区,这样,编码端就可以只对存入预备队列中时间最晚的目标空闲缓存区中的待传输图像数据进行编码,以保证编码的实时性。

  在一个实施例中,还包括:

  将所述预备队列中除所述待编码的目标空闲缓存区之外的目标空闲缓存区加入空闲队列。

  本实施例中,将存入预备队列中时间较早的目标空闲缓存区重新加入空闲队列,以便采集端将新采集的待传输图像数据加入空闲队列中。

  在一个实施例中,在所述生成目标编码码流之后,还包括:

  将所述待编码的目标空闲缓存区加入空闲队列。

  本实施例中,将该待编码的目标空闲缓存区从预备队列转移至空闲队列中,以便采集端能够继续将采集到的后续的待传输图像数据保存至该待编码的目标空闲缓存区中,实现了缓存区的重复利用,节约资源。

  根据本公开实施例的第二方面,提供一种编码方法,应用于采集端,所述方法包括:

  采集待传输图像数据;

  从空闲队列中确定目标空闲缓存区;所述空闲队列包括至少一个空闲缓存区;

  将所述待传输图像数据写入所述目标空闲缓存区;

  将所述目标空闲缓存区添加至预备队列;

  向编码端发送采集完成事件;所述采集完成事件中携带所述预备队列的标识信息,使得编码端根据所述预备队列的标识信息确定对应的预备队列,从所述预备队列中确定待编码的目标空闲缓存区,并对所述待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  根据本公开实施例的第三方面,提供一种编码装置,应用于编码端,所述装置包括:

  第一接收模块,用于接收采集完成事件;所述采集完成事件中携带预备队列的标识信息;

  第一确定模块,用于根据所述预备队列的标识信息确定对应的预备队列;所述预备队列中包括至少一个所述目标空闲缓存区;

  第二确定模块,用于从所述预备队列中确定待编码的目标空闲缓存区;

  第三确定模块,用于从所述待编码的目标空闲缓存区中获取所述待传输图像数据;

  生成模块,用于对所述待传输图像数据进行编码,生成目标编码码流。

  在一个实施例中,在所述预备队列中包括至少两个所述目标空闲缓存区时,所述第二确定模块包括获取子模块、第一确定子模块和第二确定子模块;

  所述获取子模块,用于从所述预备队列中摘取所有的所述目标空闲缓存区;

  所述第一确定子模块,用于从所述所有的所述目标空闲缓存区中确定加入所述预备队列时间最晚的目标空闲缓存区;

  所述第二确定子模块,用于将加入所述预备队列时间最晚的目标空闲缓存区确定为所述待编码的目标空闲缓存区。

  在一个实施例中,还包括:

  第一加入模块,用于将所述预备队列中除所述待编码的目标空闲缓存区之外的目标空闲缓存区加入空闲队列。

  在一个实施例中,还包括:

  第二加入模块,用于将所述待编码的目标空闲缓存区加入空闲队列。

  根据本公开实施例的第四方面,提供一种编码装置,应用于采集端,所述装置包括:

  采集模块,用于采集待传输图像数据;

  第四确定模块,用于从空闲队列中确定目标空闲缓存区;所述空闲队列包括至少一个空闲缓存区;

  写入模块,用于将所述待传输图像数据写入所述目标空闲缓存区;

  添加模块,用于将所述目标空闲缓存区添加至预备队列;

  发送模块,用于向编码端发送采集完成事件;所述采集完成事件中携带所述预备队列的标识信息,使得编码端根据所述预备队列的标识信息确定对应的预备队列,从所述预备队列中确定待编码的目标空闲缓存区,并对所述待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流。

  应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

  附图说明

  此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

  图1是本公开实施例提供的一种编码方法的流程图;

  图2是本公开实施例提供的一种编码方法的流程图;

  图3是本公开实施例提供的一种编码方法的流程图;

  图4是本公开实施例提供的一种编码方法的交互图;

  图5是本公开实施例提供的一种编码方法的交互图;

  图6a是本公开实施例提供的一种编码装置的结构图;

  图6b是本公开实施例提供的一种编码装置的结构图;

  图6c是本公开实施例提供的一种编码装置的结构图;

  图6d是本公开实施例提供的一种编码装置的结构图;

  图7是本公开实施例提供的一种编码装置的结构图。

  具体实施方式

  这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

  本公开实施例提供一种编码方法,应用于编码端,如图1所示,该方法包括以下步骤:

  步骤101、接收采集完成事件。

  其中,所述采集完成事件中携带预备队列的标识信息。

  示例的,编码端包括控制单元和编码单元,控制单元接收采集端发送的采集完成事件,并将接收到的采集完成事件进行解析,得到预备队列的标识信息。

  需要说明的是,控制单元在等待采集端采集的待传输图像数据时,会进入睡眠状态,当采集端采集好一帧待传输图像数据时,会唤醒因等待待传输图像数据而睡眠的控制单元。控制单元在接收到采集完成事件时,从睡眠状态被唤醒。

  步骤102、根据所述预备队列的标识信息确定对应的预备队列。

  其中,所述预备队列中包括至少一个所述目标空闲缓存区,目标空闲缓存区是按照进入预备队列的先后顺序进行排队的,可以理解的,若目标空闲缓存区是从预备队列的前端开始进入,则位于预备队列前端的目标空闲缓存区进入队列的时间较早,位于预备队列后端的目标空闲缓存区进入队列的时间较晚。

  示例的,控制单元根据预备队列的标识信息在缓存中查找对应的预备队列,预备队列中包括至少一个目标空闲缓存区,该目标空闲缓存区中存储有待传输图像数据。

  步骤103、从所述预备队列中确定待编码的目标空闲缓存区。

  示例的,若预备队列中只包括一个目标空闲缓存区,则将该目标空闲缓存区确定为待编码的目标空闲缓存区。

  若预备队列中包括至少两个目标空闲缓存区,则从所述预备队列中摘取所有的所述目标空闲缓存区;从所述所有的所述目标空闲缓存区中确定加入所述预备队列时间最晚的目标空闲缓存区;将加入所述预备队列时间最晚的目标空闲缓存区确定为所述待编码的目标空闲缓存区。

  示例的,由于编码单元编码一帧图像数据的时间取决于图像画面的变化程度,所以编码单元编码每帧图像数据的时间可能是不等长的。而采集端采集一帧图像数据所花费的时间是固定的,因此,预备队列中可能会同时存在多个目标空闲缓存区。这样,控制单元在接收到采集完成事件之后,可以将预备队列中的所有目标空闲缓存区取出,对这些目标空闲缓存区进行筛选,将存入预备队列中时间最晚的目标空闲缓存区确定为待编码的目标空闲缓存区,这样,编码单元就可以只对存入预备队列中时间最晚的目标空闲缓存区中的待传输图像数据进行编码,以保证编码的实时性。

  进一步的,将所述预备队列中除所述待编码的目标空闲缓存区之外的目标空闲缓存区加入空闲队列。

  示例的,控制单元还将预备队列中除待编码的目标空闲缓存区之外的目标空闲缓存区,也就是将存入预备队列中时间较早的目标空闲缓存区重新加入空闲队列,将时间较早的目标空闲缓存区中的待传输图像数据丢弃,以便采集端将新采集的待传输图像数据加入空闲队列中;只保留预备队列中时间最晚存入的目标空闲缓存区,也即最新的目标空闲缓存区,这样,编码单元只对最新的目标空闲缓存区中的待传输图像数据进行编码,以保证编码的实时性。

  步骤104、从所述待编码的目标空闲缓存区中获取所述待传输图像数据。

  示例的,控制单元在确定待编码的目标空闲缓存区时,根据采集完成事件中携带的每个目标空闲缓存区的标识信息确定待编码的目标空闲缓存区的标识信息,并调用编码端接口将待编码的目标空闲缓存区的标识信息打包在编码请求中发送至编码单元,用于告知编码单元待传输图像数据所在的目标空闲缓存区;使得编码单元解析编码请求,得到待编码的目标空闲缓存区的标识信息,并根据标识信息与空闲缓存区的对应关系,查找到与待编码的目标空闲缓存区的标识信息对应的待编码的目标空闲缓存区,进而读取该待编码的目标空闲缓存区中存储的待传输图像数据。可以理解的,在待编码的目标空闲缓存区中存储有最新的待传输图像数据。

  步骤105、对所述待传输图像数据进行编码,生成目标编码码流。

  示例的,编码单元对待传输图像数据进行编码,生成目标编码码流,并将生成的目标编码码流发送到传输层,目标编码码流经传输层到达解码端,实现了对待传输图像的编码。

  进一步的,如图2所示,在执行完步骤105之后,还包括以下步骤106:

  步骤106、将所述待编码的目标空闲缓存区加入空闲队列。

  示例的,编码单元在将生成的目标编码码流发送至解码端时,向控制单元发送编码完成事件,控制单元在接收到编码单元发送的编码完成事件时,确定编码单元已将待编码的目标空闲缓存区中的待传输图像数据编码完成,此时将该待编码的目标空闲缓存区从预备队列转移至空闲队列中,以便采集端能够继续将采集到的后续的待传输图像数据保存至该待编码的目标空闲缓存区中,实现了缓存区的重复利用,节约资源;同时也释放了预备队列的存储空间,便于后续存入待传输图像数据的待编码的目标空闲缓存区重新加入该预备队列。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  本公开实施例提供一种编码方法,应用于采集端,如图3所示,该方法包括以下步骤:

  步骤301、采集待传输图像数据。

  示例的,采集端采集图像数据帧,即为待传输图像数据。

  需要说明的是,待传输图像数据为YUV数据,YUV是一种颜色空间,基于YUV的颜色编码是流媒体的常用编码方式,其中,Y表示每个像素单元的明亮度,明亮度也可以表示为Luminance或Luma,也可以理解为灰度值;而U和V表示是每个像素单元的色度,色度也可以表示为Chrominance或Chroma。

  步骤302、从空闲队列中确定目标空闲缓存区。

  其中,所述空闲队列包括至少一个空闲缓存区。

  示例的,采集端在采集到待传输图像数据时,从预先设置的空闲队列的空闲缓存区中,选取一个空闲缓存区,将该空闲缓存区确定为目标空闲缓存区,具体选取方法可以按照空闲队列中多个空闲缓存区的存储位置选取,可以选取最左端的空闲缓存区,也可以选取最右端的空闲缓存区,还可以选取中间的空闲缓存区,本公开实施例对此不做限定。

  需要说明的是,空闲队列为预先设置的,该空闲队列可以基于DMA-BUF,可以由采集端和编码端共享。DMA-BUF是一种在不同外设硬件之间共享DMA缓冲区的通用机制。典型使用场景:生产者消费者问题。一个设备作为DMA缓冲区的生产者(例如采集芯片、解码端),向缓冲区填写数据。另一个设备作为DMA缓冲区的消费者,使用缓冲区中的数据(例如编码端、显示端),待传输图像数据通过DMA(Direct Memory Access,直接存储器访问)传输;且该空闲队列中设定的空闲缓存区的数量可根据采集芯片、解码端和编码端等各自的事件处理速度来确定,例如,空闲队列包括10个DRM(Direct Render Management,直接渲染管理)缓存区,具体可参考现有技术,在此不再赘述。另外,每个空闲缓存区的大小可根据解码端和编码端协商的分辨率尺寸、以及解码端要求的图像边界延拓计算得出。

  需要说明的是,本公开中是重新设计编码端的缓冲区使用机制,使得编码端使用外部的DMA-BUF功能,也就是说,将编码端伪装成一个硬件外设,使得编码端和采集端共享DMA-BUF。具体的,编码端需要能够支持使用采集端的DMA-BUF,即采集端通过DMA将图像数据存入目标空闲缓存区时,编码端能够直接使用采集端的DMA-BUF进行图像数据的读取。

  步骤303、将所述待传输图像数据写入所述目标空闲缓存区。

  示例的,采集端在确定目标空闲缓存区时,将采集到的待传输图像数据进行DMA操作,其中,DMA操作是指采集端通过DMA将待传输图像数据送入目标空闲缓存区,DMA是一种数据传输方法,用该方法传输图像数据时编码端的CPU(Central Processing Unit,中央处理器)不需要访问内存,CPU可以做其他的事情。通常外设和编码端之间的数据传输通过DMA完成。也就是将采集到的待传输图像数据保存至该目标空闲缓存区中,实现对待传输图像数据的缓存。

  步骤304、将所述目标空闲缓存区添加至预备队列。

  示例的,采集端在将待传输图像数据存入目标空闲缓存区时,将该目标空闲缓存区加入预备队列,目的是为了将已存入待传输图像数据的目标空闲缓存区与未存入待传输图像数据的空闲缓存区进行分离,使得采集端在写入待传输图像数据时,不会与编码端读取待传输图像数据发生冲突,可以提高缓存的读写效率。

  步骤305、向编码端发送采集完成事件;所述采集完成事件中携带所述预备队列的标识信息,使得编码端根据所述预备队列的标识信息确定对应的预备队列,从所述预备队列中确定待编码的目标空闲缓存区,并对所述待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流。

  示例的,采集端在将目标空闲缓存区加入预备队列之后,向控制单元发送携带目标空闲缓存区的标识信息和预备队列的标识信息的采集完成事件,使得控制单元将从预备队列中确定的待编码的目标空闲缓存区对应的标识信息携带在编码请求中发送至编码单元,以使编码单元根据编码请求确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成待传输图像数据的编码。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率;另外,采集端还将已存入待传输图像数据的目标空闲缓存区与未存入待传输图像数据的空闲缓存区进行分离,使得采集端在写入待传输图像数据时,不会与编码端读取待传输图像数据发生冲突,可以提高缓存的读写效率。而相关技术中,采集芯片将采集到的图像数据写入采集芯片的DMA-BUF,主控模块从采集芯片的DMA-BUF中读取图像数据,由于DMA-BUF正在被写的同时不能被读,因此存在DMA-BUF中读写冲突问题,导致相关技术中的DMA-BUF的读写效率较低。

  本公开实施例提供一种编码方法,应用于采集端和编码端,如图4所示,该方法包括以下步骤:

  步骤401、采集端采集待传输图像数据。

  步骤402、采集端从空闲队列中确定目标空闲缓存区。

  其中,所述空闲队列包括至少一个空闲缓存区。

  步骤403、采集端将所述待传输图像数据写入所述目标空闲缓存区。

  步骤404、采集端将所述目标空闲缓存区添加至预备队列。

  步骤405、采集端向编码端发送采集完成事件。

  其中,所述采集完成事件中携带预备队列的标识信息。

  步骤406、编码端根据所述预备队列的标识信息确定对应的预备队列。

  其中,所述预备队列中包括至少一个所述目标空闲缓存区。

  步骤407、编码端从所述预备队列中确定待编码的目标空闲缓存区。

  步骤408、编码端从所述待编码的目标空闲缓存区中获取所述待传输图像数据。

  步骤409、编码端对所述待传输图像数据进行编码,生成目标编码码流。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  本公开实施例提供一种编码方法,应用于采集端和编码端,如图5所示,该方法包括以下步骤:

  步骤501、采集端采集待传输图像数据。

  步骤502、采集端从空闲队列中确定目标空闲缓存区。

  其中,所述空闲队列包括至少一个空闲缓存区。

  步骤503、采集端将所述待传输图像数据写入所述目标空闲缓存区。

  步骤504、采集端将所述目标空闲缓存区添加至预备队列。

  步骤505、采集端向编码端发送采集完成事件。

  其中,所述采集完成事件中携带预备队列的标识信息。

  步骤506、编码端根据所述预备队列的标识信息确定对应的预备队列。

  其中,所述预备队列中包括至少一个所述目标空闲缓存区。

  步骤507、编码端在所述预备队列中包括至少两个所述目标空闲缓存区时,从所述预备队列中摘取所有的所述目标空闲缓存区。

  步骤508、编码端从所述所有的所述目标空闲缓存区中确定加入所述预备队列时间最晚的目标空闲缓存区。

  步骤509、编码端将加入所述预备队列时间最晚的目标空闲缓存区确定为所述待编码的目标空闲缓存区。

  步骤510、编码端将所述预备队列中除所述待编码的目标空闲缓存区之外的目标空闲缓存区加入空闲队列。

  步骤511、编码端从所述待编码的目标空闲缓存区中获取所述待传输图像数据。

  步骤512、编码端对所述待传输图像数据进行编码,生成目标编码码流。

  步骤513、编码端将所述待编码的目标空闲缓存区加入空闲队列。

  本公开实施例提供一种编码方法,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率;另外,采集端还将已存入待传输图像数据的目标空闲缓存区与未存入待传输图像数据的空闲缓存区进行分离,使得采集端在写入待传输图像数据时,不会与编码端读取待传输图像数据发生冲突,可以提高缓存的读写效率。

  基于上述实施例中所描述的编码方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

  本公开实施例提供一种编码装置,应用于编码端,如图6a所示,该编码端60包括:第一接收模块601、第一确定模块602、第二确定模块603、第三确定模块604和生成模块605。

  其中,第一接收模块601,用于接收采集完成事件;所述采集完成事件中携带预备队列的标识信息。

  第一确定模块602,用于根据所述预备队列的标识信息确定对应的预备队列;所述预备队列中包括至少一个所述目标空闲缓存区。

  第二确定模块603,用于从所述预备队列中确定待编码的目标空闲缓存区。

  第三确定模块604,用于从所述待编码的目标空闲缓存区中获取所述待传输图像数据。

  生成模块605,用于对所述待传输图像数据进行编码,生成目标编码码流。

  在一个实施例中,如图6b所示,在所述预备队列中包括至少两个所述目标空闲缓存区时,所述第二确定模块603包括获取子模块6031、第一确定子模块6032和第二确定子模块6033。

  其中,所述获取子模块6031,用于从所述预备队列中摘取所有的所述目标空闲缓存区。

  所述第一确定子模块6032,用于从所述所有的所述目标空闲缓存区中确定加入所述预备队列时间最晚的目标空闲缓存区。

  所述第二确定子模块6033,用于将加入所述预备队列时间最晚的目标空闲缓存区确定为所述待编码的目标空闲缓存区。

  在一个实施例中,如图6c所示,所述装置60还包括第一加入模块606。

  其中,所述第一加入模块606,用于将所述预备队列中除所述待编码的目标空闲缓存区之外的目标空闲缓存区加入空闲队列。

  在一个实施例中,如图6d所示,所述装置60还包括第二加入模块607。

  其中,所述第二加入模块607,用于将所述待编码的目标空闲缓存区加入空闲队列。

  本公开实施例提供一种编码装置,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  本公开实施例提供一种编码装置,应用于采集端,如图7所示,该采集端70包括采集模块701、第四确定模块702、写入模块703、添加模块704和发送模块705。

  其中,采集模块701,用于采集待传输图像数据。

  第四确定模块702,用于从空闲队列中确定目标空闲缓存区;所述空闲队列包括至少一个空闲缓存区。

  写入模块703,用于将所述待传输图像数据写入所述目标空闲缓存区。

  添加模块704,用于将所述目标空闲缓存区添加至预备队列。

  发送模块705,用于向编码端发送采集完成事件;所述采集完成事件中携带所述预备队列的标识信息,使得编码端根据所述预备队列的标识信息确定对应的预备队列,从所述预备队列中确定待编码的目标空闲缓存区,并对所述待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流。

  本公开实施例提供一种编码装置,在接收到采集端发送的采集完成事件时,根据采集完成事件中携带的预备队列的标识信息确定对应的预备队列,从预备队列中确定待编码的目标空闲缓存区,并对待编码的目标空闲缓存区中的待传输图像数据进行编码,生成目标编码码流,以完成编码。这样,采集端只需将预备队列的标识信息发送至编码端,编码端可直接在待编码的目标空闲缓存区中获取待传输图像数据,并对待传输图像数据进行编码,实现了采集端和编码端对待编码的目标空闲缓存区的共享,无需对待传输图像数据进行搬运,不会因搬运待传输图像而导致编码延迟,从而提高了图像传输的效率。

  基于上述图1对应的实施例中所描述的编码方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read OnlyMemory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的编码方法,此处不再赘述。

  本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

  本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

《编码方法及装置.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)