CN105306949B - 视频编码方法和装置 - Google Patents

视频编码方法和装置 Download PDF

Info

Publication number
CN105306949B
CN105306949B CN201510883867.0A CN201510883867A CN105306949B CN 105306949 B CN105306949 B CN 105306949B CN 201510883867 A CN201510883867 A CN 201510883867A CN 105306949 B CN105306949 B CN 105306949B
Authority
CN
China
Prior art keywords
coding
encoding
application layer
thread
channels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510883867.0A
Other languages
English (en)
Other versions
CN105306949A (zh
Inventor
王大治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongxing Technology Co Ltd
Original Assignee
Mid Star Technology Ltd By Share Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mid Star Technology Ltd By Share Ltd filed Critical Mid Star Technology Ltd By Share Ltd
Priority to CN201510883867.0A priority Critical patent/CN105306949B/zh
Publication of CN105306949A publication Critical patent/CN105306949A/zh
Application granted granted Critical
Publication of CN105306949B publication Critical patent/CN105306949B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视频编码方法和装置,利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码。该方法包括:将多个应用层编码线程中的至少一个应用层编码线程与多个编码通道中的一个编码通道相绑定;激活被绑定的编码通道,以便对视频进行编码;以及在一个编码通道完成编码后,唤醒与所述一个编码通道相绑定的至少一个应用层编码线程。根据本发明的实施方式,能够在编码通道完成编码后,精确地唤醒该次编码所对应的应用线程,而不影响其他线程。

Description

视频编码方法和装置
技术领域
本发明的实施方式涉及视频编码,并且具体而言,涉及支持多路编码通道的视频编码中的应用层编码线程唤醒。
背景技术
当前,硬件编码器件能够支持多个独立的编码通道,从而实现了多路并行编码,满足了不同应用层编码线程同时需要进行视频编码的需求。
当完成了一个编码通道上的数据编码后,该编码通道会产生中断通知,以通知其驱动模块,驱动模块需要唤醒应用层编码线程,以读取该编码通道的码流。当前,对于多路编码,多采用线程唤醒后查询的方式。当一次编码成功后,所有的应用层编码线程都被唤醒,然后通过查询可以得知分配给自己的编码通路没有编码数据,然后再次进入休眠等待。这样使***浪费在了很多无谓的工作上,使***效率下降。
例如,图1示出了根据现有技术的在一个编码通道编码完成后、唤醒应用层编码线程的示意图。硬件编码器件120可以支持多个编码通道122-1、122-2、……122-n。硬件编码器件120的驱动模块124针对应用层110的编码线程1 112分配编码通道1 122-1,针对应用层110的编码线程2 114分配编码通道2 122-2,并且维持了这样的分配关系。如图1所示,假如在编码通道1完成数据编码,则编码通道1将产生中断以通知驱动模块124,如图中的箭头130所示,驱动模块124将唤醒所有的应用层编码线程,即112和114,如图中的箭头132和134所示。之后,应用层编码线程112和114都将向驱动模块124查询分配给它自己的编码通路有没有编码数据。如图1所示,编码线程2 114在被唤醒后,经过查询,发现在分配给自己的编码通道上尚无可用编码码流,再次进入休眠等待状态。编码线程2 114的此次唤醒和再次休眠,无疑是***资源的浪费。
举例而言,在硬件编码器件120的驱动模块采用Linux***进行开发的情形下,对于多路编码,多采用select函数查询,当该函数被唤醒返回后,通过***调用来查询该路是否有编码好的数据产生,如果有,则将数据读走处理,如果没有,则将继续休眠等待。在驱动程序中的处理一般为当有一路编码生成后,通过poll函数唤醒所有在该器件上等待的线程,对于所有的n路编码,只有一路是真正能获取数据的,其他n-1路都被唤醒,查询无数据后再次休眠。这样,其他n-1路的被唤醒和查询都是无效率的和无谓的,加重的***的负载而没有实际的效率。
发明内容
因此,本发明的目的在于解决前述的一个或多个问题,提供一种创新性的支持多路编码通道的视频编码中的应用层编码线程唤醒。
根据本发明的一个方面,提供一种视频编码方法,利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码。该方法包括:将所述多个应用层编码线程中的至少一个应用层编码线程与所述多个编码通道中的一个编码通道相绑定;激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码;以及在所述多个编码通道中的一个编码通道完成编码后,唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程。
根据本发明的有一个方面,提供一种视频编码装置,利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码。所述视频编码装置包括:绑定模块,用于将所述多个应用层编码线程中的至少一个应用层编码线程与所述多个编码通道中的一个编码通道相绑定;编码模块,用于激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码;以及唤醒模块,用于在所述多个编码通道中的一个编码通道完成编码后,唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程。
根据本发明的实施方式,能够在硬件编码器件的编码通道完成编码后,精确地唤醒该次编码所对应的应用层编码线程,而不影响其他线程。
附图说明
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显。在附图中:
图1示出了根据现有技术的唤醒应用层编码线程的示意图;
图2示出了根据本发明的实施方式的唤醒应用层编码线程的示意图;
图3示出了根据本发明的实施方式的视频编码方法的流程图;以及
图4示出了根据本发明的实施方式的视频编码装置的方框图。
具体实施方式
下文将结合附图参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
图2示出了根据本发明的实施方式的在一个编码通道编码完成后应用层编码线程被唤醒的示意图。与图1所示的现有技术的处理方式不同,本发明的实施方式在为一个应用层编码线程打开一个编码通道时,建立应用层编码线程和硬件编码通道的绑定关系。这样,当硬件编码器件完成一帧码流的编码后,驱动程序根据该绑定关系,可以精确地唤醒等待在该路上的线程,以便该编码线程可以获取编好的码流。
如图2所示,驱动模块124例如可以在接收到应用层编码线程1 112的编码请求时,为该编码线程分配并打开编码通道1 122-1,并且记录与应用层编码线程1 112的绑定关系。假如在编码通道1完成数据编码,则编码通道1将产生中断以通知驱动模块124,如图中的箭头130所示。驱动模块124获悉编码通道1与应用层编码线程1 112的绑定关系,则只唤醒该应用层编码线程1 112,而不会去唤醒应用层编码线程2 114。与图1的现有技术的唤醒方案相比,也有可能省略应用层编码线程1和2对驱动模块124的查询过程。
图3示出了根据本发明的实施方式的视频编码方法300的流程图。该方法开始于步骤S300。
步骤S310,将多个应用层编码线程中的一个应用层编码线程与多个编码通道中的一个编码通道相绑定。通常,硬件编码器件所能支持的最大编码路数是固定,例如,如果同时支持16路编码,那么就有16个编码通道,一个通道可以支持一个应用线程获取码流。可以在驱动模块为一个应用层编码线程打开硬件编码器件中的一个编码通道时,建立该应用层编码线程与该编码通道的绑定关系。
步骤S320,激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码。
步骤S330,在所述多个编码通道中的一个编码通道完成编码后,根据所述绑定,唤醒与所述多个编码通道中的所述一个编码通道相绑定的应用层编码线程。
至此,方法300在步骤S340结束。
在一个实施例中,一个编码通道只与一个应用层编码线程绑定,在该编码通道完成编码后,解除其与该应用层编码线程的绑定。这特别适合于期望同时编码的应用层编码线程的数量小于硬件编码器件所能支持的编码通道的数量的情形。
在一个实施例中,可以针对一个编码通道建立编码线程队列,该编码通道与多个应用层编码线程绑定,该多个应用层编码线程构成了该编码线程队列。这特别适合于存活的应用层编码线程的数量大于硬件编码器件所能支持的编码通道的数量的情形。在此情形下,可以在一个编码通道上的编码完成之后,唤醒针对该编码通道的编码线程队列中的所有应用层编码线程。
编码线程队列可以采用先入先出队列,在队列头的应用层编码线程读取出编码通道的码流中,可以将该应用层编码线程从编码线程队列中删除。
下面描述根据本发明实施方式的一个例子,其驱动模块采用Linux***进行开发。但是,应当理解,本发明的实施方式还可以适用于采用其他操作***或者编程环境进行开发的硬件编码器件的驱动模块。
硬件编码器件的驱动工作在Linux内核(kernel)部分。硬件编码器件底层能够提供多路同时编码,比如,出16路不同分辨率的码流。而编码线程是工作在应用层的程序,对应于硬件的16路编码,可以有16个应用线程同时运行,来获取不同分辨率的16路码流。举例而言,用户A启动了一个应用,需要编码一路640×480的码流,这算一个编码线程;用户B又启动了一个应用,需要编码一路720×576的码流,这也算一个编码线程。这两个线程看上去是同时在获取码流的,它们工作在应用层,所以称为应用层的编码线程。而这两路编码都是由底层的编码驱动模块通过一个硬件来完成。
当用户A启动应用开始编码时,用户A的编码线程需要调用底层硬件编码器件,并且从底层硬件编码器件获取编码完毕的码流。用户A的编码线程通过***调用函数Open()来获取硬件编码器件的驱动模块分配的句柄,该句柄用于编码线程和驱动模块之间的交互信息,然后,用户A的编码线程调用其自己的select函数进行等待。例如,驱动模块把句柄a分配给用户A的编码线程,并且把16路编码通道中的编码通道1分配给它。这样,在驱动模块中建立了句柄a和编码通道1的绑定。换而言之,对于驱动模块而言,句柄a就代表了用户A的应用层编码线程,而硬件编码器件的编码通道1就是句柄a绑定的通道。同样,用户B的编码线程所分配的句柄b和编码通道2也可以被绑定。
进行绑定后,所有编码通道1的数据只和句柄a相关,而所有编码通道2的数据只和句柄b相关。
当有一个编码通道上的数据压缩好了之后,驱动模块根据编码通道发送的编码完毕的中断信号可以判断出是那个物理通道的数据。比如,如果判断出编码通道1的数据已经压缩好了,则通过绑定可以得知是句柄a的数据,那么驱动模块将只唤醒句柄a对应的select函数。这样,只有用户A的编码线程会被唤醒以便获取数据,而其他用户的应用层编码线程不被唤醒。
当用户A的应用层编码线程因其select函数被调用而被唤醒后,其可以向驱动模块查询分配给其的编码通道的完成状况,并且调用***函数Read()来读取所分配的编码通道上的数据。
在上述用户A和用户B的应用层编码线程的实施例中,硬件编码器件所支持的一个编码通道仅被分配给一个应用层编码线程。可选地,例如,用户A的应用层编码线程在被唤醒后,也可以直接调用***函数Read()来读取所分配的编码通道上的码流。
在另一个实施例中,也可以针对多个应用层编码线程分配一个编码通道。这样,可以针对该编码通道建立与其绑定的应用层编码线程队列。每当该编码通道完成编码后,唤醒与该编码通道绑定的所有应用层编码线程。每个被唤醒的应用层编码线程可以查询驱动模块,获取分配给其的句柄在队列中的位置,以便获得此次完成的编码码流是否是针对自己的。如果是,则可以调用***函数Read()来读取该编码通道上的码流,并且,将该应用线程的句柄a移出队列。
现在参考图4,其示意性示出了根据本发明一个实施方式的视频编码装置400,能够利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码。装置400包括:绑定模块410,用于将所述多个应用层编码线程中的至少一个应用层编码线程与所述多个编码通道中的一个编码通道相绑定;编码模块420,用于激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码;以及唤醒模块430,用于在所述多个编码通道中的一个编码通道完成编码后,唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程。
在一个实施例中,装置400可以进一步包括解除模块,用于在所述多个编码通道中的一个编码通道完成编码后,解除其与所述多个应用层编码线程中的一个应用层编码线程的绑定。
在一个实施例中,装置400可以进一步包括编码线程队列建立模块,用于针对所述多个编码通道中的每个编码通道建立编码线程队列。唤醒模块420还可以包括:编码线程队列唤醒模块,用于唤醒与所述多个编码通道中的所述一个编码通道相绑定的编码线程队列的所有应用层编码线程。
装置400可以进一步包括:读取模块,用于使得与完成编码的所述多个编码通道中的一个编码通道相绑定的位于所述编码线程队列头的应用层编码线程读取完成编码的所述一个编码通道中码流;以及删除模块,用于将所述位于所述编码线程队列头的应用层编码线程从所述应用层编码线程中删除。
应当理解,装置400中记载的每个单元与参考图3描述的方法300中的每个步骤相对应。由此,上文针对图3描述的操作和特征同样适用于装置40及其中包含的单元,在此不再赘述。
还应当理解,可以利用各种方式来实现装置400,例如,在某些实施方式中,装置400可以利用软件和/或固件模块来实现。此外,装置400也可以利用硬件模块来实现。现在已知或者将来开发的其他方式也是可行的,本发明的范围在此方面不受限制。
本领域技术人员理解,附图中的流程图和框图,仅仅是按照本发明各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作的示意性图示。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现预定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
根据本发明的实施方式,当硬件编码器件编好了一帧码流后,其驱动模块可以精确的唤醒等待在该路上的应用层编码线程,以便该线程可以获取编好的码流而不影响其他编码通路。
已经出于示出和描述的目的给出了本发明的说明书,但是其并不意在是穷举的或者限制于所公开形式的发明。本领域技术人员可以想到很多修改和变体。在不脱离本发明精神的前提下,做出的所有修改和替换都将落入所附权利要求定义的本发明保护范围内。

Claims (8)

1.一种视频编码方法,利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码,其特征在于,所述方法包括:
将所述多个应用层编码线程中的至少一个应用层编码线程与所述多个编码通道中的一个编码通道相绑定,得到绑定关系;
激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码;以及
在所述多个编码通道中的一个编码通道完成编码后,根据所述绑定关系,唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程;
其中,针对所述多个编码通道中的每个编码通道建立编码线程队列,其中,所述唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程包括:
唤醒与所述多个编码通道中的所述一个编码通道相绑定的编码线程队列的所有应用层编码线程。
2.根据权利要求1所述的视频编码方法,其特征在于,进一步包括:
在所述多个编码通道中的一个编码通道完成编码后,解除其与所述多个应用层编码线程中的一个应用层编码线程的绑定。
3.根据权利要求1所述的视频编码方法,其特征在于,进一步包括:
使得与完成编码的所述多个编码通道中的一个编码通道相绑定的位于所述编码线程队列头的应用层编码线程读取完成编码的所述一个编码通道中码流;以及
将所述位于所述编码线程队列头的应用层编码线程从所述应用层编码线程中删除。
4.根据权利要求1-3中任一项所述的视频编码方法,其特征在于,所述唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程包括:
唤醒所述至少一个应用层编码线程的select函数。
5.一种视频编码装置,利用硬件编码器件的多个编码通道支持对多个应用层编码线程的同时编码,其特征在于,所述装置包括:
绑定模块,用于将所述多个应用层编码线程中的至少一个应用层编码线程与所述多个编码通道中的一个编码通道相绑定,得到绑定关系;
编码模块,用于激活所述多个编码通道中的所述被绑定的编码通道,以便对视频进行编码;以及
唤醒模块,用于在所述多个编码通道中的一个编码通道完成编码后,根据所述绑定关系,唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程;
编码线程队列建立模块,用于针对所述多个编码通道中的每个编码通道建立编码线程队列,其中,所述唤醒模块还包括:
编码线程队列唤醒模块,用于唤醒与所述多个编码通道中的所述一个编码通道相绑定的编码线程队列的所有应用层编码线程。
6.根据权利要求5所述的视频编码装置,其特征在于,进一步包括:
解除模块,用于在所述多个编码通道中的一个编码通道完成编码后,解除其与所述多个应用层编码线程中的一个应用层编码线程的绑定。
7.根据权利要求5所述的视频编码装置,其特征在于,进一步包括:
读取模块,用于使得与完成编码的所述多个编码通道中的一个编码通道相绑定的位于所述编码线程队列头的应用层编码线程读取完成编码的所述一个编码通道中码流;以及
删除模块,用于将所述位于所述编码线程队列头的应用层编码线程从所述应用层编码线程中删除。
8.根据权利要求5-7中任一项所述的视频编码装置,其特征在于,所述唤醒与所述多个编码通道中的所述一个编码通道相绑定的至少一个应用层编码线程包括:
唤醒所述至少一个应用层编码线程的select函数。
CN201510883867.0A 2015-12-04 2015-12-04 视频编码方法和装置 Active CN105306949B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510883867.0A CN105306949B (zh) 2015-12-04 2015-12-04 视频编码方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510883867.0A CN105306949B (zh) 2015-12-04 2015-12-04 视频编码方法和装置

Publications (2)

Publication Number Publication Date
CN105306949A CN105306949A (zh) 2016-02-03
CN105306949B true CN105306949B (zh) 2020-05-26

Family

ID=55203624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510883867.0A Active CN105306949B (zh) 2015-12-04 2015-12-04 视频编码方法和装置

Country Status (1)

Country Link
CN (1) CN105306949B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801969A (zh) * 2012-07-25 2012-11-28 华为技术有限公司 处理多媒体数据的方法、装置及***
CN103955408A (zh) * 2014-04-24 2014-07-30 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298157C (zh) * 2004-11-30 2007-01-31 北京中星微电子有限公司 Ip网络会议视音频同步的方法
CN101198049B (zh) * 2007-12-29 2010-06-09 北京中企开源信息技术有限公司 一种视频数据处理方法和装置
US9143788B2 (en) * 2008-11-13 2015-09-22 Thomson Licensing Multiple thread video encoding using HRD information sharing and bit allocation waiting
CN102724561A (zh) * 2012-05-16 2012-10-10 昆山日通电脑科技办公设备有限公司 一种嵌入式实时流媒体网络传输方法及其实现***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801969A (zh) * 2012-07-25 2012-11-28 华为技术有限公司 处理多媒体数据的方法、装置及***
CN103955408A (zh) * 2014-04-24 2014-07-30 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置

Also Published As

Publication number Publication date
CN105306949A (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
US20200358979A1 (en) System and method for supporting selective backtracking data recording
CN110769278B (zh) 一种分布式视频转码方法及***
JP5379122B2 (ja) マルチプロセッサ
WO2003084164A1 (en) Stream data processing device, stream data processing method, program, and medium
CN110602122A (zh) 视频处理方法、装置、电子设备及存储介质
CN104185062A (zh) 一种终端处理视频流的方法及终端
CN105630588A (zh) 一种分布式作业调度方法和***
KR20210150611A (ko) 메모리 액세스 기술 및 컴퓨터 시스템
JP2009237888A (ja) データ処理装置、画像符号化復号装置及びデータ処理システム
EP1747513A1 (en) Hierarchical processor architecture for video processing
CN102117308A (zh) 一种数据处理方法和数据处理***
KR20100042629A (ko) 멀티미디어 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
CN105306949B (zh) 视频编码方法和装置
CN113395523B (zh) 基于并行线程的图像解码方法、装置、设备及存储介质
CN107566543B (zh) 一种节点标识设置方法和装置
CN102447965B (zh) 支持视频插件接入的视频快速平滑显示的方法及装置
CN112035066A (zh) 日志保留时长的计算方法及装置
US20160112480A1 (en) Streaming data on data processes
US11736700B2 (en) Multi-threading in a video hardware engine
CN111158885B (zh) 作业调度***中并发度控制方法及装置
CN101090470B (zh) 信息处理设备和信息处理方法
WO2006070299A1 (en) Method and apparatus for synchronization control of digital signals
CN113824955B (zh) 一种多路视频分时复用编码方法和***
CN102868881A (zh) 视频编码***和方法
CN106375777B (zh) 一种音视频收录方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171211

Address after: 519000 Guangdong city of Zhuhai province Hengqin Baohua Road No. 6, room 105, -23898 (central office)

Applicant after: Zhongxing Technology Co., Ltd.

Address before: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Applicant before: Beijing Vimicro Corporation

TA01 Transfer of patent application right
CB02 Change of applicant information

Address after: 519031 Guangdong city of Zhuhai province Hengqin Baohua Road No. 6, room 105, -23898 (central office)

Applicant after: Mid Star Technology Limited by Share Ltd

Address before: 519000 Guangdong city of Zhuhai province Hengqin Baohua Road No. 6, room 105, -23898 (central office)

Applicant before: Zhongxing Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant