CN108024112A - 一种视频编码方法及装置 - Google Patents

一种视频编码方法及装置 Download PDF

Info

Publication number
CN108024112A
CN108024112A CN201610945957.2A CN201610945957A CN108024112A CN 108024112 A CN108024112 A CN 108024112A CN 201610945957 A CN201610945957 A CN 201610945957A CN 108024112 A CN108024112 A CN 108024112A
Authority
CN
China
Prior art keywords
unit group
task
coding unit
priority
video frame
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.)
Granted
Application number
CN201610945957.2A
Other languages
English (en)
Other versions
CN108024112B (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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co 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 Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201610945957.2A priority Critical patent/CN108024112B/zh
Publication of CN108024112A publication Critical patent/CN108024112A/zh
Application granted granted Critical
Publication of CN108024112B publication Critical patent/CN108024112B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明实施例公开了一种视频编码方法及装置,方法包括:监测是否存在空闲线程;若存在,将空闲线程分配给任务队列中的第一个任务,其中,任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;通过空闲线程执行第一个任务,对第一个任务对应的目标编码单元组进行编码,并从任务队列中删除第一个任务,将剩余的任务向任务队列的队列头移动。应用本发明实施例,能够一定程度地减少编码单元组在分配到线程后的编码等待时间,进而提高整体编码效率。

Description

一种视频编码方法及装置
技术领域
本发明涉及视频处理技术领域,特别涉及一种视频编码方法及装置。
背景技术
随着数字电视、网络视频的普及,人们对视频信息的需求与日俱增,未经压缩的原始视频数据,其数据量之大对于有限的传输带宽或存储空间都是难以承受的,这就使得视频压缩成为国内外研究和应用的热点。视频编码(也称视频压缩)是消除视频信号中各种冗余数据的视频处理方式,将视频信息压缩,以便更有效地被传输和存储。
在视频编码过程中,会将每一视频帧划分成编码单元组进行编码,编码单元组包括基于特定规则划分的至少一个编码块,其中,编码块可以理解为视频帧对应的最小编码单位。为了能够快速进行编码,现有技术中,采用多线程的形式进行帧内帧间混合并行编码。
从多帧的角度来讲,各帧之间可以并行,由于视频编码过程中,帧间往往存在参考关系,帧间的参考关系往往会具体到参考帧的某些编码单元组参考被参考帧的某些编码单元组,而且这两部分的编码单元组通常处于各自帧的相同或相近位置处。现有技术中通常以帧为单位为多个视频帧分配线程,经常存在一对被参考帧与参考帧并行编码,这就使得有参考关系的一对视频帧中,由于编码速度不同,容易造成视频帧间的参考编码单元组被分配线程的时间早于被参考编码单元组被分配线程的时间,从而使优先给参考编码单元组分配的线程等待较长的时间。
从单帧的角度来讲,如果视频帧中存在多个编码单元组,在相邻的两个编码单元组中,下方的编码单元组需参考上方的编码单元组或右侧的编码单元组需参考左侧的编码单元组。为了实现各个编码单元组可以并行编码,现有技术中往往是给一帧视频帧对应分配多个线程,使这多个线程对这个视频帧的编码单元组进行并行编码。这样可能会造成存在参考关系的一对编码单元组对应的任务中,参考编码单元组对应的任务先于被参考编码单元组对应任务被分配线程,从而容易造成线程空等。
鉴于上述两种情况,帧内的各个编码单元组在分配了线程之后,对应的线程可能会存在等待现象,视频帧在分配了线程之后,也可能会存在线程等待的现象,进而可能会导致整个编码过程中等待时间较长,也就是消耗较多的时间,使得编码效率不高。
发明内容
本发明实施例的目的在于提供一种视频编码方法及装置,用于帧内帧间并行混合编码时,以使能够减少编码单元组在分配到线程后的编码等待时间,进而提高整体编码效率。
为达到上述目的,本发明实施例公开了一种视频编码方法及装置。技术方案如下:
第一方面,本发明实施例提供的一种视频编码方法,包括:
监测是否存在空闲线程;
若存在,将所述空闲线程分配给任务队列中的第一个任务,其中,所述任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,并从所述任务队列中删除所述第一个任务,向所述任务队列的队列头移动剩余的任务。
优选地,所述方法还包括:
判断所述任务队列是否满足预设的队列更新条件;
若满足,获取第一预设数量个目标视频帧;
根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对所述任务队列中任务对应的编码单元组以及所述目标视频帧的编码单元组,确定编码单元组之间的参考关系;
根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中。
优选地,所述根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中,包括:
根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
根据所确定的编码单元组的优先级以及所述任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一所述目标视频帧的对应的任务加入到任务队列中。
优选地,所述根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级,包括:
根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定所述目标视频帧的优先级;
按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级。
优选地,每一所述目标视频帧包括至少两个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块;
所述按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级,包括:
按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级;根据每一所述目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一所述目标视频帧的其余编码单元组的优先级。
优选地,所述根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级,包括:
判断每一所述目标视频帧是否为独立编码的目标视频帧;
如果是,确定该目标视频帧的第一个编码单元组的优先级为所述任务队列中任务对应编码单元组的最高优先级;
如果否,确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
优选地,一个编码单元组包括至少一个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
所述通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,包括:
按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过所述第二预设数量个所述空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照所述排列顺序执行下一编码块中的子任务。
第二方面,本发明实施例提供了一种视频编码装置,包括:
监测模块,用于监测是否存在空闲线程;
分配模块,用于所述监测模块监测到空闲线程后,将所述空闲线程分配给任务队列中的第一个任务,其中,所述任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
执行模块,用于通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,并从所述任务队列中删除所述第一个任务,向所述任务队列的队列头移动剩余的任务。
优选地,所述装置还包括:
判断模块,用于判断所述任务队列是否满足预设的队列更新条件;
获取模块,用于当所述判断模块的判断结果为满足时,获取第一预设数量个目标视频帧;
确定模块,用于根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对所述任务队列中任务对应的编码单元组以及所述目标视频帧的编码单元组,确定编码单元组之间的参考关系;
添加模块,用于根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中。
优选地,所述添加模块,包括:
第一确定子模块,用于根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
添加子模块,用于根据所确定的编码单元组的优先级以及所述任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一所述目标视频帧的对应的任务加入到任务队列中。
优选地,所述第一确定子模块,包括:
第一确定单元,用于根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定所述目标视频帧的优先级;
第二确定单元,用于按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级。
优选地,每一所述目标视频帧包括至少两个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块;
所述第二确定单元,具体用于:按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级;根据每一所述目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一所述目标视频帧的其余编码单元组的优先级。
优选地,所述第二确定单元,包括:
判断子单元,用于判断每一所述目标视频帧是否为独立编码的目标视频帧;
第一确定子单元,用于当判断子单元的判断结果为是时,确定该目标视频的第一个编码单元组的优先级为所述任务队列中任务对应编码单元组的最高优先级;
第二确定子单元,用于当判断子单元的判断结果为否时,确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
优选地,一个编码单元组包括至少两个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
所述执行模块,具体用于按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过所述第二预设数量个所述空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照所述排列顺序执行下一编码块中的子任务。
应用本发明实施例提供的技术方案,通过监测是否存在空闲线程,将监测到的空闲线程分配给任务队列中的第一个任务,其中,任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;通过空闲线程执行第一个任务,对第一个任务对应的编码单元组进行编码,并从任务队列中删除第一个任务,向任务队列的队列头移动剩余的任务。现有技术中,帧内帧间混合并行编码时,以帧为单位进行线程分配,会造成帧间部分对存在参考关系的编码单元组中,先给参考编码单元组对应的任务分配线程,以致部分线程空等;而本发明实施例的技术方案,应用于帧内帧间混合并行编码时,在帧间的每对具有参考关系的编码单元组中,优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。对于单帧来说,帧内每对具有参考关系的编码单元组中,严格按照优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。因此,应用本发明实施例,在帧间帧内混合编码时,从整体上来说,可以一定程度的减少任务分配到线程后的等待时间,从而可以提高编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的视频编码方法的第一种流程示意图;
图2为本发明实施例提供的视频编码方法的第二种流程示意图;
图3为本发明实施例提供的视频编码装置的第一种结构示意图;
图4为本发明实施例提供的视频编码装置的第二种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了能够提高帧间帧内混合并行编码时的整体编码效率,本发明实施例提供了一种视频编码方法及装置。
需要说明的是,本发明实施例提供的方案中所采用的视频压缩标准可以是H.264,还可以是高效率视频编码(High Efficiency Video Coding,简称HEVC)等等,本申请并不对所采用的视频压缩标准进行限定。其中,采用HEVC视频压缩标准来编码时,每个编码单元组均对应基于特定规则划分的若干编码块,对视频帧进行划分形成编码单元组的形式有多种,例如,将单个视频帧图像按照横向划分,形成上下排列的至少一个Slice,一个Slice即可作为一个编码单元组;将单个视频帧图像按纵向划分,形成左右排列的至少一个Tile,一个Tile即可作为一个编码单元组,当然,也可以直接将一整帧作为一个编码单元组。
下面首先对本发明实施例提供的一种视频编码方法进行说明。
参照图1,图1为本发明实施例提供的视频编码方法的第一种流程示意图,该视频编码方法,具体包括以下四个步骤:
S101、监测是否存在空闲线程;当监测到空闲线程时,执行S102。
空闲线程是没有被占用以执行任务的线程,将其分配给任务后,能够被启用执行任务。采用多线程并行执行编码任务,一个线程执行完一次任务,被释放后成为空闲线程,空闲线程的情况能被监测到。为了能够及时的将空闲线程分配给任务,避免耽误任务的执行,可以对线程实行实时监测。
S102、将空闲线程分配给任务队列中的第一个任务,其中,任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
本步骤中,任务队列是由编码单元组对应的任务排列形成的,将空闲线程分配给任务队列中的第一个任务,这样就使得任务队列中前面的任务优先被分配线程,从而使得靠近任务队列前面的任务对应的编码单元组优先被编码。任务队列的设置,意味着任一对有参考关系的两个编码单元组对应的两个任务在任务队列中保持了一定的距离,即能够保证任一对具有参考关系的两个编码单元组对应的两个任务被分配到线程的时间差。按照任务队列中任务的顺序进行分配线程,有利于保证有参考关系的一对编码单元组中,参考编码单元组被分配空闲线程时,被参考编码单元组对应的任务已经被执行完成或接近完成,可以减少等待时间或不需要等待,即可执行参考编码单元组对应的编码任务。
由于计算资源的限制,任务队列中仅是目标视频的部分视频帧的编码单元组,本领域技术人员可以理解的是,任务队列应该是动态的,不断更新的。
S103、通过空闲线程执行第一个任务,对第一个任务对应的目标编码单元组进行编码,并从任务队列中删除第一个任务,向任务队列的队列头移动剩余的任务。
具体实施时,刚分配到空闲线程时,如果正在对这个任务对应的编码单元组所参考的编码单元组进行编码,则分配到的线程需要等待;如果针对这个任务对应的编码单元组所参考的编码单元组的编码已经完成,则分配到的线程不需要等待,可以直接进行编码。针对任一对具有参考关系的两个编码单元组所对应的两个任务,在分配线程时,按照先后顺序,能够保证这两个任务被分配到空闲线程的时间差,因此,对于分配到线程的任一个任务来说,在刚分配到线程时,该任务对应的编码单元组所参考的编码单元组的编码任务已被完成的可能性较大,或至少已经开始了一定的时间,从而使得该线程不等待或等待较少的时间就可以执行任务。
分配到空闲线程的任务可以从任务队列中删除,并且删除后的空位可以由后面的任务向前推动替补上来,这样可以避免重复对同一编码单元组进行编码。
示例性的,如果任务队列中有3个视频帧的编码单元组对应的任务,依次对应第一视频帧、第二视频帧、第三视频帧,其中,第二视频帧参考第一视频帧。一个视频帧被划分为三行,对应三个编码单元组,并且帧内相邻的编码单元组之间,下方的编码单元组参考上方的编码单元组。采用nij表示从上至下的第i个视频帧的第j个编码单元组,对应的任务表示为mij,具体地,第二视频帧的第一行参考第一视频帧的第一行,则任务队列中从前到后的顺序可以是:m11、m31、m21、m12、m32、m22、m13、m33、m23
针对上述示例中三个视频帧的并行编码,现有技术中分配线程的任务队列相当于是三个并行的任务子队列:第一子队列是:m11、m12、m13;第二个子队列:m21、m22、m23;第三个子队列:m31、m32、m33。任务队列:m11、m31、m21、m12、m32、m22、m13、m33、m23中,如果m11的任务没有执行完,给m31分配线程,则给m31分配到的空闲线程不需要等待,可以直接对m31对应的编码单元组进行编码;而现有技术的任务队列的任一子队列中,如果前一个任务没有执行完,给后一个任务分配线程,则分配到的空闲线程需要空等,等到前一个任务被执行完之后,才可以对后一个任务对应的编码单元组进行编码,又由于m11、m12、m13中相邻两个任务之间,m21、m22、m23中相邻两个任务之间,m31、m32、m33中相邻两个任务之间,都存在参考关系,空闲线程需要等待的可能性比较大。进一步地,前一任务队列中分配线程严格按照从前到后的顺序依次分配,针对任一对具有参考关系的两个编码单元组所对应的两个任务,在分配线程时,能够保证这两个任务被分配到空闲线程的时间差;而后一任务队列中,三个子任务队列并行分配线程,无法保证任务m11比任务m31优先分配线程,任务m31被分配线程后等待的可能性较大。
应用图1所示实施例,应用本发明实施例,通过监测是否存在空闲线程,将监测到的空闲线程分配给任务队列中的第一个任务,其中,任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;通过空闲线程执行第一个任务,对第一个任务对应的目标编码单元组进行编码,并从任务队列中删除第一个任务,向任务队列的队列头移动剩余的任务。现有技术中,帧内帧间混合并行编码时,以帧为单位进行线程分配,会造成帧间部分对存在参考关系的编码单元组中,先给参考编码单元组对应的任务分配线程,以致部分线程空等;而本发明实施例的技术方案,应用于帧内帧间混合并行编码时,在帧间的每对具有参考关系的编码单元组中,优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。对于单帧来说,帧内每对具有参考关系的编码单元组中,严格按照优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。因此,应用本发明实施例,在帧间帧内混合编码时,从整体上来说,可以一定程度的减少任务分配到线程后的等待时间,从而可以提高编码效率。
因此,相比于现有技术,能够保证分配给任务的空闲线程不等待或等待较少时间即可执行编码任务,从而能够保证整体的编码效率。
参照图2,图2为本发明实施例提供的视频编码方法的第二种流程示意图,基于图1所示实施例,该方法增加以下四个步骤:
S201、判断任务队列是否满足预设的队列更新条件;
如果本步骤的判断结果为满足,则执行S202;具体实施时,判断任务队列是否满足预设的队列更新条件,可以通过以下方式实现:
可以预先设置多个预设时间点,具体地,根据播放目标视频的起始时间点,以及在起始时间点之后的每隔预设时间间隔(如,1秒)的多个时间点,判断是否达到预设时间点,每次到达预设时间点都表示任务队列满足预设的队列更新条件,未到达预设时间点表示任务队列不满足预设的队列更新条件。
或,可以根据播放目标视频的起始时间点,以及在起始时间点之后的每编码完第三预设数量个编码单元组的每个时间点,可以设置计数器用于记录编码完成的编码单元组数量,每编码完成第三预设数量个编码单元组,计数器清零,通过判断计数器的计数是否达到第三预设数量,如果达到,表示任务队列满足预设的队列更新条件;如果未达到,表示任务队列不满足预设的队列更新条件。
S202、获取第一预设数量个目标视频帧;
本步骤是为了能够获得第一预设数量个未编码的目标视频帧,这些目标视频帧的编码单元组对应的任务将被加入任务队列,以使任务队列更新,并使任务队列中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前。
本领域技术人员可以理解的是,按照编码的最基本要求,在获取的第一预设数量个目标视频帧中,不应该存这样的视频帧,即其所参考的编码单元组对应的任务未进入过任务队列中,也没有在这一次获得目标视频帧中。
S203、根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对任务队列中任务对应的编码单元组以及目标视频帧的编码单元组,确定编码单元组之间的参考关系;
这里要确定的编码单元组之间的参考关系所涉及的编码单元组包括任务队列中任务对应的编码单元组以及目标视频帧的编码单元组,不仅包括帧间的编码单元组之间的参考关系,还包括帧内编码单元组之间的参考关系。视频帧间的参考关系是表示视频帧间的谁参考谁,谁不参考谁的关系,编码单元组之间的参考关系表示编码单元组之间的谁参考谁,谁不参考谁的关系。运动矢量搜索范围是预先设定的,根据视频帧间的参考关系、运动矢量的搜索范围能够确定出帧间的编码单元组之间的参考关系。视频帧内参考规则是预先设置的,包括帧内的编码单元组之间是如何参考的,例如,视频帧内参考规则包括:视频帧内位置相邻的两个编码单元组,下方的编码单元组参考上方的编码单元组,或右侧的编码单元组参考左侧的编码单元中组。当然,也可以包括规定视频帧内部分相邻的编码单元组之间,下方的编码单元组参考上方的编码单元组,或右侧的编码单元组参考左侧的编码单元中组。
本步骤中,视频帧间的参考关系所涉及的视频帧包括正在编码的视频帧、编码单元组对应任务全部处于任务队列中的视频帧、本轮更新所获取的目标视频帧。根据视频帧间的参考关系、运动矢量的搜索范围能够确定出帧间编码单元组之间的参考关系,例如,视频帧A包括编码单元组A1、A2、A3,视频帧B包括编码单元组B1、B2、B3,视频帧A参考视频帧B,根据运动矢量搜索范围最终能够确定出,视频帧A的编码单元组A1、编码单元组A2和编码单元组A3参考视频帧B的编码单元组B1、编码单元组B2,这样就可以确定编码单元组A1和B1,A2和B1,A3和B1,A1和B2,A2和B2,A3和B2等六对编码单元组均具有参考关系,其中每一对都是前者参考后者。根据预设的视频内参考规则,可以确定出,视频帧A的编码单元组A1、编码单元组A2、编码单元组A3之间依次有参考关系,视频帧B的编码单元组B1、编码单元组B2、编码单元组B3之间依次有参考关系;
S204、根据所确定的参考关系,将每一目标视频帧的每一编码单元组对应的任务加入到任务队列中。
具体实施时,本步骤包括以下两个子步骤:
(1)、根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
由于编码单元组之间的参考关系较为复杂,如果仅仅通过编码单元组之间的参考关系来将编码单元组加入到任务队列中,不容易设定操作。通过简单的优先级可以确定出每个编码单元组对应任务在任务队列中的具体位置,这样容易将编码单元组对应的任务加入到任务队列中,以排队等候分配空闲线程。具体实施,针对任一对具有参考关系的两个编码单元组,可以确保被参考编码单元组的优先级高于参考编码单元组的优先级,没有参考关系的两个编码单元组的优先级相对大小确定可随意设定,但要保证使任务队列中,相邻任务对应的编码单元组之间尽可能没有参考关系,存在参考关系的编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前。这就使得编码单元组的优先级存在高低的情况,同时,也存在优先级相同的多个编码单元组。
(2)、根据所确定的编码单元组的优先级以及任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一目标视频帧的对应的任务加入到任务队列中;
在给编码单元组设定优先级时,可以存在优先级相同的多个编码单元组,在将编码单元组对应的任务加入到任务队列中时,只要保证优先级高的编码单元组对应的任务在优先级低的编码单元组对应的任务前面即可。针对优先级相同的多个编码单元组对应的任务,可以按照先进入队列的放置在前面,后进入队列中放置在后面的方式来执行,当然,它们之间的顺序也可以随意,即先进入任务队列的,同一优先级的编码单元组对应的任务可以放置在任务队列中与其优先级相同的编码单元组对应的任务前面,也可以放置在任务队列中与其优先级相同的编码单元组对应的任务后面。
可以理解的是,任务队列中同一优先级的编码单元组对应的任务会连续排列,而这些编码单元组互相之间是不存在参考关系的,因此,这些任务并行执行时,相互之间无需等待,可以提高编码效率。
确定了编码单元组之间的参考关系之后,编码单元组对应的任务的前后关系,以及参考编码单元组和被参考编码单元组的对应关系都能够被确定,容易使得遵循着被参考编码单元组对应的任务在参考编码单元组对应的任务的前端。根据所确定的编码单元组的优先级以及任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,就能够确定出每一目标视频帧的编码单元组的优先级,即确定了每一目标视频帧的编码单元组对应任务在任务队列中的位置。
需要说明的是,图2所示实施例相对于图1所示实施例增加的4个四个步骤,只是用于任务队列更新的一种方法,在其他实施例中,也可以采用其他方式进行更新。
本实施例中,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一目标视频帧的编码单元组的优先级,包括:
(1)、根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定目标视频帧的优先级;
由于实际使用时,采用谁参考谁的记录方式来表示参考关系比较复杂,导致直接采用视频帧间的参考关系来确定视频帧的编码单元组之间的参考关系的过程变得复杂,将视频帧间的参考关系转化为视频帧的优先级,用于简化视频帧间的参考关系,其中,被参考帧的优先级高于参考帧的优先级。例如,获得的目标视频帧有P1、P2、P3、P4、P5、P6、P7、P8,其中,下标代表视频帧标号,这些视频帧间的参考关系有P2和P3参考P1,P4参考P3,P5参考P4,P6参考P5,P7参考P8,确定的优先级从高到低的顺序如:P11、P22、P32、P43、P54、P65、P86、P77,也可以如:P11、P22、P33、P44、P55、P66、P87、P78,只要保证被参考帧的优先级高于参考帧的优先级即可,其中,下标中的前一个数字代表视频帧的标号,后一个数字代表这一帧的优先级。
(2)、按照目标视频帧的优先级从高到低的顺序,针对每一目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一目标视频帧的编码单元组的优先级。
由于视频帧间的参考关系较为复杂,不利于对编码单元组定优先级的操作。被参考视频帧的优先级高于参考视频帧的优先级,被参考视频帧内存在参考视频帧内编码单元组所参考的编码单元组,而参考编码单元组的优先级依赖于被参考编码单元组的优先级,因此,按照目标视频帧的优先级从高到低的顺序,针对目标视频帧的编码单元组进行定优先级,简单方便。
本实施例中,在每一目标视频帧包括至少两个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块的情况下,
按照目标视频帧的优先级从高到低的顺序,针对每一目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一目标视频帧的编码单元组的优先级,包括:
按照目标视频帧的优先级从高到低的顺序,针对每一目标视频帧,根据所确定的参考关系,确定每一目标视频帧的第一个编码单元组的优先级;根据每一目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一目标视频帧的其余编码单元组的优先级。
需要说明的是,具体使用中,有的视频帧可能包括至少两个编码单元组,有的目标视频帧可能只包括一个编码单元组,针对包括至少两个编码单元组的目标视频帧,按照上述方式定每个编码单元组的优先级;针对只包括一个编码单元组的目标视频帧,只要按照上述方式定出第一个编码单元组的优先级即可。帧内相邻两个编码单元组的优先级差均相等,这样有利于尽可能多地将帧间不具有参考关系的编码单元组设置成同一优先级,有利于提并行编码的效率。
具体实施时,例如,按照目标视频帧的优先级从高到低的顺序,目标优先级为:P11、P22、P33,P11、P22、P33的每个视频帧中,从上至下或从左至右分割成多个编码单元组,假如每帧都有3个编码单元组,P22参考P11,P33参考P22,当P11不参考任一帧时,则可以直接定P11帧内第一个编码单元组的优先级;当P11参考的编码单元组对应的任务正在任务队列中排列,则根据任务队列中的这个任务对应的编码单元组的优先级,确定出P11的第一个编码单元组的优先级,P11中第一个编码单元组的优先级是1,则其第二编码单元组、第三个编码单元组可分别设置优先级为2、3。P22参考P11,具体参考P11的第二个编码单元组,则可以定P22的第一个编码单元组的优先级为3,则P22的第二编码单元组、第三个编码单元组的优先级分别为4、5。P33参考P22,具体参考P22的第一个编码单元组,则可以定P33的第一个编码单元组的优先级为4,则P33的第二编码单元组、第三个编码单元组的优先级分别为5、6。
本实施例中,根据所确定的参考关系,确定每一目标视频帧的第一个编码单元组的优先级,具体包括以下几个步骤:
(1)、判断每一目标视频帧是否为独立编码的目标视频帧;如果是执行步骤(2),如果否,执行步骤(3);
需要说明的是,独立编码的目标视频帧是指不需要参考其他视频帧的目标视频帧或者是该目标视频帧所参考的视频帧的编码已经完成,这一个目标视频帧的编码单元组在分配到空闲线程后,可以进考虑帧内编码单元组的编码任务,不需要考虑帧间的编码单元组的编码任务。
(2)、确定该目标视频帧的第一个编码单元组的优先级为任务队列中任务对应编码单元组的最高优先级;
该目标视频帧为独立编码的目标视频帧,虽然这个目标视频帧不参考其他视频帧或所参考的视频帧的编码已经完成,但有可能会被其他视频帧进行编码参考。这个目标视频帧可以尽早被编码,这样才不会影响其他视频帧的编码工作。确定任务队列中的任务对应的编码单元组的最高优先级为该目标视频帧的第一个编码单元组的优先级,这样可以实现将目标视频帧的编码单元组对应的任务尽量的加入到任务队列的前端,有利于保证位于任务队列前面的任务中,具有参考关系的两个编码单元组对应的两个任务在任务队列中的位置尽量被拉开,有利于提高编码效率。
(3)、确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
该目标视频帧不是独立编码的目标视频帧,则就根据该目标视频帧所参考的编码单元组的优先级,确定该目标视频帧的第一个编码单元组的优先级。
本实施例中,为了进一步提高并行编码的效率,设置以下:一个编码单元组包括至少一个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
通过空闲线程执行第一个任务,对第一个任务对应的目标编码单元组进行编码,包括:
按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过第二预设数量个空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照排列顺序执行下一编码块中的子任务。
本领域技术人员可以理解的是,每一个编码块的前一个子任务没有编码完成时,这个编码块的后一个子任务不能执行,因此,编码块对应的子任务的并行方式是,第二预设数量个空闲线程用于分别执行小于或等于第二预设数量的编码块的不同的子任务,这样可以提高一个编码单元组的编码效率,还能够减少参考该编码单元组的编码单元组的空闲线程等待的时间,从而能够大大提高编码效率。
相应于方法实施例,本发明实施例还提供了一种视频编码装置,下面将对视频编码装置进行说明。
参照图3,图3为本发明实施例提供的视频编码装置的第一种结构示意图,包括:
监测模块31,用于监测是否存在空闲线程;
分配模块32,用于所述监测模块31监测到空闲线程后,将所述空闲线程分配给任务队列中的第一个任务,其中,所述任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
执行模块33,用于通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,并从所述任务队列中删除所述第一个任务,向所述任务队列的队列头移动剩余的任务。
应用图3所示实施例,通过监测是否存在空闲线程,将监测到的空闲线程分配给任务队列中的第一个任务,其中,任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;通过空闲线程执行第一个任务,对第一个任务对应的编码单元组进行编码,并从任务队列中删除第一个任务,向任务队列的队列头移动剩余的任务。现有技术中,帧内帧间混合并行编码时,以帧为单位进行线程分配,会造成帧间部分对存在参考关系的编码单元组中,先给参考编码单元组对应的任务分配线程,以致部分线程空等;而本发明实施例的技术方案,应用于帧内帧间混合并行编码时,在帧间的每对具有参考关系的编码单元组中,优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。对于单帧来说,帧内每对具有参考关系的编码单元组中,严格按照优先给被参考编码单元组对应的任务分配线程,可以一定程度上减少分配的线程等待的时间。因此,应用本发明实施例,在帧间帧内混合编码时,从整体上来说,可以一定程度的减少任务分配到线程后的等待时间,从而可以提高编码效率。
因此,相比于现有技术,能够保证分配给任务的空闲线程不等待或等待较少时间即可执行编码任务,从而能够保证整体的编码效率。
参照图4,图4为本发明实施例提供的视频编码装置的第二种结构示意图,基于图3所示实施例,增加了以下四个模块:
判断模块41,用于判断所述任务队列是否满足预设的队列更新条件;
获取模块42,用于当所述判断模块41的判断结果为满足时,获取第一预设数量个目标视频帧;
确定模块43,用于根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对所述任务队列中任务对应的编码单元组以及所述目标视频帧的编码单元组,确定编码单元组之间的参考关系;
添加模块44,用于根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中。
本实施例中,所述添加模块44,包括:
第一确定子模块(图中未示出),用于根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
添加子模块(图中未示出),用于根据所确定的编码单元组的优先级以及所述任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一所述目标视频帧的对应的任务加入到任务队列中。
本实施例中,第一确定子模块,包括:
第一确定单元(图中未示出),用于根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定目标视频帧的优先级;
第二确定单元(图中未示出),用于按照目标视频帧的优先级从高到低的顺序,针对每一目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一目标视频帧的编码单元组的优先级。
本实施例中,每一目标视频帧包括至少一个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块;
第二确定单元(图中未示出),具体用于:按照目标视频帧的优先级从高到低的顺序,针对每一目标视频帧,根据所确定的参考关系,确定每一目标视频帧的第一个编码单元组的优先级;根据每一目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一目标视频帧的其余编码单元组的优先级。
本实施例中,第二确定单元,包括:
判断子单元(图中未示出),用于判断每一目标视频帧是否为独立编码的目标视频帧;
第一确定子单元(图中未示出),用于当判断子单元的判断结果为是时,确定该目标视频的第一个编码单元组的优先级为任务队列中任务对应编码单元组的最高优先级;
第二确定子单元(图中未示出),用于当判断子单元的判断结果为否时,确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
本实施例中,一个编码单元组包括至少一个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
执行模块(图中未示出),具体用于按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过第二预设数量个空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照排列顺序执行下一编码块中的子任务。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (14)

1.一种视频编码方法,其特征在于,包括:
监测是否存在空闲线程;
若存在,将所述空闲线程分配给任务队列中的第一个任务,其中,所述任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,并从所述任务队列中删除所述第一个任务,向所述任务队列的队列头移动剩余的任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述任务队列是否满足预设的队列更新条件;
若满足,获取第一预设数量个目标视频帧;
根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对所述任务队列中任务对应的编码单元组以及所述目标视频帧的编码单元组,确定编码单元组之间的参考关系;
根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中。
3.根据权利要求2所述的方法,其特征在于,所述根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中,包括:
根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
根据所确定的编码单元组的优先级以及所述任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一所述目标视频帧的对应的任务加入到任务队列中。
4.根据权利要求3所述的方法,其特征在于,所述根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级,包括:
根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定所述目标视频帧的优先级;
按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级。
5.根据权利要求4所述的方法,其特征在于,每一所述目标视频帧包括至少两个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块;
所述按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级,包括:
按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级;根据每一所述目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一所述目标视频帧的其余编码单元组的优先级。
6.根据权利要求5所述的方法,其特征在于,所述根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级,包括:
判断每一所述目标视频帧是否为独立编码的目标视频帧;
如果是,确定该目标视频帧的第一个编码单元组的优先级为所述任务队列中任务对应编码单元组的最高优先级;
如果否,确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
7.根据权利要求1所述的方法,其特征在于,一个编码单元组包括至少一个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
所述通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,包括:
按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过所述第二预设数量个所述空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照所述排列顺序执行下一编码块中的子任务。
8.一种视频编码装置,其特征在于,包括:
监测模块,用于监测是否存在空闲线程;
分配模块,用于所述监测模块监测到空闲线程后,将所述空闲线程分配给任务队列中的第一个任务,其中,所述任务队列中的每个任务为:一个编码单元组对应的编码任务,存在参考关系的两个编码单元组对应的任务中,被参考编码单元组对应的任务排列在参考编码单元组对应的任务之前;
执行模块,用于通过所述空闲线程执行所述第一个任务,对所述第一个任务对应的目标编码单元组进行编码,并从所述任务队列中删除所述第一个任务,向所述任务队列的队列头移动剩余的任务。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述任务队列是否满足预设的队列更新条件;
获取模块,用于当所述判断模块的判断结果为满足时,获取第一预设数量个目标视频帧;
确定模块,用于根据视频帧间的参考关系、运动矢量的搜索范围及预设的视频帧内参考规则,针对所述任务队列中任务对应的编码单元组以及所述目标视频帧的编码单元组,确定编码单元组之间的参考关系;
添加模块,用于根据所确定的参考关系,将每一所述目标视频帧的每一编码单元组对应的任务加入到所述任务队列中。
10.根据权利要求9所述的装置,其特征在于,所述添加模块,包括:
第一确定子模块,用于根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级;
添加子模块,用于根据所确定的编码单元组的优先级以及所述任务队列中任务对应编码单元组的优先级,按照优先级由高到低的顺序,将每一所述目标视频帧的对应的任务加入到任务队列中。
11.根据权利要求10所述的装置,其特征在于,所述第一确定子模块,包括:
第一确定单元,用于根据视频帧间的参考关系,以及被参考帧的优先级高于参考帧的优先级的规则,确定所述目标视频帧的优先级;
第二确定单元,用于按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,以及被参考编码单元组的优先级高于参考编码单元组的优先级的规则,确定每一所述目标视频帧的编码单元组的优先级。
12.根据权利要求11所述的装置,其特征在于,每一所述目标视频帧包括至少两个编码单元组,每个编码单元组均对应至少一行编码块,或每个编码单元组均对应至少一列编码块;
所述第二确定单元,具体用于:按照所述目标视频帧的优先级从高到低的顺序,针对每一所述目标视频帧,根据所确定的参考关系,确定每一所述目标视频帧的第一个编码单元组的优先级;根据每一所述目标视频帧的第一个编码单元组的优先级,按照从上至下或从左至右优先级逐渐降低的规则,确定每一所述目标视频帧的其余编码单元组的优先级。
13.根据权利要求12所述的装置,其特征在于,所述第二确定单元,包括:
判断子单元,用于判断每一所述目标视频帧是否为独立编码的目标视频帧;
第一确定子单元,用于当判断子单元的判断结果为是时,确定该目标视频的第一个编码单元组的优先级为所述任务队列中任务对应编码单元组的最高优先级;
第二确定子单元,用于当判断子单元的判断结果为否时,确定该目标视频帧的第一个编码单元组的优先级为低于该目标视频帧所参考的编码单元组的优先级。
14.根据权利要求8所述的装置,其特征在于,一个编码单元组包括至少两个编码块;各个编码块对应的任务由第二预设数量个子任务组成,且各个编码块对应的子任务的任务类型一致;
所述执行模块,具体用于按照一个编码块中各个子任务对应的编码顺序和编码块在编码单元组中的排列顺序,通过所述第二预设数量个所述空闲线程执行每一编码块对应的子任务,其中,一个空闲线程执行一种任务类型的子任务,一个空闲线程执行完毕一个编码块中的子任务后,按照所述排列顺序执行下一编码块中的子任务。
CN201610945957.2A 2016-11-02 2016-11-02 一种视频编码方法及装置 Active CN108024112B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610945957.2A CN108024112B (zh) 2016-11-02 2016-11-02 一种视频编码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610945957.2A CN108024112B (zh) 2016-11-02 2016-11-02 一种视频编码方法及装置

Publications (2)

Publication Number Publication Date
CN108024112A true CN108024112A (zh) 2018-05-11
CN108024112B CN108024112B (zh) 2020-02-28

Family

ID=62070747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610945957.2A Active CN108024112B (zh) 2016-11-02 2016-11-02 一种视频编码方法及装置

Country Status (1)

Country Link
CN (1) CN108024112B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063091A (zh) * 2018-07-26 2018-12-21 成都大学 混合编码的数据迁移方法、数据迁移装置和存储介质
CN109218722A (zh) * 2018-11-22 2019-01-15 北京金山云网络技术有限公司 一种视频编码方法、装置及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101466041A (zh) * 2009-01-16 2009-06-24 清华大学 一种用于多核处理器的多视点视频编码的任务调度方法
CN102387358A (zh) * 2010-08-27 2012-03-21 无锡中星微电子有限公司 帧内宏块编码方法、解码方法及其编码器、解码器
US20140286425A1 (en) * 2004-04-28 2014-09-25 Hitachi Consumer Electronics, Co. Ltd. Image decoding device and method thereof using inter-coded predictive encoding code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140286425A1 (en) * 2004-04-28 2014-09-25 Hitachi Consumer Electronics, Co. Ltd. Image decoding device and method thereof using inter-coded predictive encoding code
CN101466041A (zh) * 2009-01-16 2009-06-24 清华大学 一种用于多核处理器的多视点视频编码的任务调度方法
CN102387358A (zh) * 2010-08-27 2012-03-21 无锡中星微电子有限公司 帧内宏块编码方法、解码方法及其编码器、解码器

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063091A (zh) * 2018-07-26 2018-12-21 成都大学 混合编码的数据迁移方法、数据迁移装置和存储介质
CN109218722A (zh) * 2018-11-22 2019-01-15 北京金山云网络技术有限公司 一种视频编码方法、装置及设备
CN109218722B (zh) * 2018-11-22 2020-10-02 北京金山云网络技术有限公司 一种视频编码方法、装置及设备

Also Published As

Publication number Publication date
CN108024112B (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
CN106407408B (zh) 一种海量点云数据的空间索引构建方法及装置
CN106454395B (zh) 在服务器中用于自适应提供多码率流媒体的方法及装置
DE60021745T2 (de) Datenkompression
CN103460253B (zh) 用于图形处理的像素值精简
CN103703785B (zh) 视频数据生成单元、图像显示设备、视频数据生成方法、视频图像显示方法、以及视频图像文件数据结构
CN106776963A (zh) 轻量化的bim大数据在线可视化方法和系统
CN101466041B (zh) 一种用于多核处理器的多视点视频编码的任务调度方法
CN111654720B (zh) 视频编码方法、装置、设备及可读存储介质
CN105872595A (zh) 转码任务分配方法及装置
CN105245960A (zh) 视频的弹幕显示方法及装置
CN105992008A (zh) 一种在多核处理器平台上的多层次多任务并行解码算法
CN104394345B (zh) 一种安防监控视频存储与回放方法
CN108769824A (zh) 一种视频混流方法、装置、系统、设备及介质
CN104219532B (zh) 确定小物体区域的方法、视频帧之间插补帧的方法和装置
CN104623898A (zh) 一种进入游戏副本场景的方法和游戏服务器
CN105912234A (zh) 虚拟场景的交互方法和装置
CN110134355A (zh) 多屏共享方法、智能投屏盒子及多屏共享系统
CN105262960B (zh) 一种基于集群渲染的立体电视信号编辑方法
CN108024112A (zh) 一种视频编码方法及装置
CN108848384A (zh) 一种面向多核平台的高效并行转码方法
CN104219522A (zh) 一种视频图像编码中的码率控制方法及装置
CN106303724B (zh) 智能电视自动添加动态表情的方法和装置
CN111737015B (zh) 基于多gpu提高大幅面非线性编辑实时层数的方法
CN110324615A (zh) 一种码率分配方法及装置
CN104253807B (zh) 一种媒体资源控制方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant