CN117651139B - 一种动态计算宏块相对索引位置的视频编码方法及系统 - Google Patents
一种动态计算宏块相对索引位置的视频编码方法及系统 Download PDFInfo
- Publication number
- CN117651139B CN117651139B CN202410116687.9A CN202410116687A CN117651139B CN 117651139 B CN117651139 B CN 117651139B CN 202410116687 A CN202410116687 A CN 202410116687A CN 117651139 B CN117651139 B CN 117651139B
- Authority
- CN
- China
- Prior art keywords
- macroblock
- video
- idx
- slice
- macro block
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000009825 accumulation Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本发明公开了一种动态计算宏块相对索引位置的视频编码方法及系统,涉及视频处理技术领域。该方法包括:获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置;依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;根据mb_idx_in_x判断每个宏块的可用状态;根据每个宏块的可用状态进行视频编码处理。通过本发明的方法,可在任意分辨率视频的编解码中,灵活高效的计算片中第一个宏块及后续所有宏块在视频帧中的相对索引位置,提高了编码的灵活性。
Description
技术领域
本发明涉及视频处理技术领域,具体涉及一种动态计算宏块相对索引位置的视频编码方法及系统。
背景技术
视频编解码技术中,一个视频帧(frame)可能会被分割为一个或多个片(slice),每个片包含整数个宏块(macroblock)。宏块作为视频编码中的一个基本单位,通常包含一定数量的像素数据,视频编码器会将片中的所有宏块逐个进行编码,这样可以更高效地利用编码资源,提高编码效率。
一个片中第一个宏块可能出现在视频帧的任意位置,同时,宏块编码时可能依赖到当前宏块左侧、左上侧、上侧、右上侧宏块的编码结果,对当前宏块进行编码需要获取其相邻宏块的可用状态。因此,获取视频片中第一个宏块在视频帧中的绝对索引位置(first_mb_in_slice),进而计算片中后续每个宏块在视频帧中的相对索引位置(mb_idx_in_x),是正确进行视频编解码的必要条件。
在现有的视频技术标准中,分辨率多达数十种,不同的分辨率和帧率会导致视频的像素布局和宏块位置有所不同,常规的做法是对每一个分辨率下每个可能的宏块位置,根据行数及列数的配置,通过条件语句的方式进行查找和计算,输出其相对位置。这需要处理大量的条件语句,以确定每个宏块在视频帧中的位置,不仅分支条件众多,还需要耗费大量的运算时间和资源,在软硬件实现中都缺乏灵活性,也不利于后续的升级和维护。
发明内容
针对以上问题,本发明提出一种动态计算宏块相对索引位置的视频编码方法及系统,可在任意分辨率视频的编解码中,灵活高效的计算片中第一个宏块及后续所有宏块在视频帧中的相对索引位置。
为了实现上述目的,本发明通过如下的技术方案来实现:
一种动态计算宏块相对索引位置的视频编码方法,所述方法包括:
获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;
定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置,具体包括:
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置;
依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;
根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态;
根据每个宏块的可用状态进行视频编码处理。
作为本发明的一种优选方案,所述获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_ slice,具体包括:
解析视频流的元数据,包括序列参数集SPS和图像参数集PPS;
根据解析出的元数据,确定第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
作为本发明的一种优选方案,所述依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x,具体包括:
应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;
判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;
若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
作为本发明的一种优选方案,所述根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态,具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧及上侧的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧的宏块状态均为可用。
一种动态计算宏块相对索引位置的视频编码系统,所述系统包括:
绝对索引获取模块,用于获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;
起始宏块计算模块,用于计算视频片中起始宏块在视频行中的相对索引位置;
宏块索引递增模块,用于依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;
宏块状态判断模块,用于根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态;
宏块编码处理模块,用于根据每个宏块的可用状态进行视频编码处理。
作为本发明的一种优选方案,所述绝对索引获取模块中,通过解析视频流的元数据,包括序列参数集SPS和图像参数集PPS,根据解析出的元数据,确定视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
作为本发明的一种优选方案,所述起始宏块计算模块中,通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置,具体包括:
定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置。
作为本发明的一种优选方案,所述宏块索引递增模块中,通过应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;并判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
作为本发明的一种优选方案,所述宏块状态判断模块中,根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态,具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧及上侧的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧的宏块状态均为可用。
一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如上所述的一种动态计算宏块相对索引位置的视频编码方法。
与现有技术相比,本发明的有益效果是:可以在有限的时钟周期内,快速计算出当前视频片起始宏块的相对索引位置,并根据宏块的顺序动态计算出其他宏块的相对索引位置,提高了编码的灵活性,并为后续计算邻块可用状态打下基础;通过使用加法器和累加器能够快速地为每个宏块分配唯一的索引值,减少了计算量;通过判断宏块的相对位置,系统能够实时准确确定其相邻宏块的可用状态,确保数据的准确传输和编码。本发明的方法可以有效减少芯片中的逻辑门电路数量,降低芯片功耗,减少芯片面积并节约成本,适用于大多数视频编码标准和格式,具有较强的通用性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。其中:
图1为本发明实施例中的方法流程图;
图2为本发明实施例中的系统模块化结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明的一个实施例,该实施例提供了一种动态计算宏块相对索引位置的视频编码方法,具体包括以下步骤:
S1:获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;
第一个宏块在视频帧中的绝对索引位置是一个固定的值,不依赖于其他宏块或slice的位置。由于视频编码的复杂性,确定第一个宏块在视频帧中的绝对索引位置可能需要综合考虑多个因素,在实际应用中,需要根据具体的视频编码标准和编码器实现来确定。序列参数集(SPS)是一个包含序列级别的信息的单元,其中包含了关于分辨率、帧率和编码参数的信息,解码器可以通过解析SPS来确定第一个宏块的绝对索引位置;图像参数集(PPS)包含了关于图像级别的信息,如图像的尺寸、帧率等,与SPS类似,解码器也可以通过解析PPS来确定第一个宏块的索引位置;在某些情况下,编码器按照特定的顺序对宏块进行编码,此时解码器可以按照与编码器相同的顺序来解析宏块索引位置。关于序列参数集(SPS)和图像参数集(PPS)的详细参数信息参见《新一代视频压缩编码标准——H.264/AVC》,作者:毕厚杰 出版社:人民邮电出版社。在此不再赘述。
在一个实施例中,步骤S1具体包括:
解析视频流的元数据,包括序列参数集SPS和图像参数集PPS;
根据解析出的元数据,确定第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
S2:定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置;
切片(slice)是编码的重要概念之一。一个视频片是指一组连续的宏块,通常用于表示一个图像序列中的一个独立片段,可以作为单独的目标来处理。片的概念是为了限制误码的扩散和传输,使编码片相互间保持独立。这里的起始宏块是从视频片本身的角度来看的,它是一个相对值,表示当前片中宏块之间的相对位置关系。通过计算第一个宏块的索引位置与累加的视频帧中每行的宏块个数之差,可以得到当前片中起始宏块在视频行中的相对索引位置;
步骤S2具体包括:
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置。
每个宏块都有一个唯一的索引值,用于标识它在视频帧中的位置。当减法器的结果小于每行的宏块个数时,意味着当前宏块是该行中的第一个宏块,即起始宏块。因此,减法器的结果即为起始宏块在视频行中的相对索引位置,这个相对索引位置对于后续的编码和解码过程非常重要,它可以帮助确定宏块之间的关系和参考信息。通过这个相对索引位置,编码器可以确定宏块的位置信息,并将其编码到压缩数据流中。在解码过程中,解码器可以根据这个相对索引位置正确地还原宏块的位置信息,从而重建原始图像帧。
S3:依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;
宏块索引递增是指在视频编码过程中,随着图像帧中宏块的处理顺序,宏块的索引值按顺序递增的过程。具体来说,在编码每一帧图像时,首先处理第一个宏块,然后是第二个宏块,以此类推。每个宏块都有一个唯一的索引值,用于标识它在图像帧中的位置。随着宏块的处理顺序,这些索引值会按顺序递增。通过宏块索引递增,编码器可以追踪每个宏块的处理状态,并正确地组织编码数据流。此外,宏块索引递增还有助于解码器正确地还原图像帧,因为它可以根据索引值确定每个宏块的位置和顺序。因此,宏块索引递增是视频编码过程中的一个重要步骤,它确保了编码数据的正确组织和解码图像的正确还原。
在一个具体的实施例中,步骤S3具体包括:应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;
判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;
若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
通过使用加法器为每个宏块分配一个唯一的标识符,即相对索引位置mb_idx_in_x。处理第一个宏块时,会得到它的mb_idx_in_x;对于后续的宏块,其mb_idx_in_x会比前一个宏块的mb_idx_in_x大1,这样每个宏块都有一个唯一的标识。当编码器到达一行的最后一个宏块时,为了开始新的一行,需要重置mb_idx_in_x为0。当编码器处理完一个片中的所有宏块后,它就完成了该视频片的所有计算,可以开始下一个片。
S4:根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态;
当宏块所在行是视频片的第一行时,宏块的左上侧、上侧及右上侧的宏块状态均为不可用。当宏块所在行不是视频片的第一行时,若宏块是所在行的第一个,它的左侧和左上侧的宏块不在当前图像的范围内,因此是不可用的,而它的上侧和右上侧的宏块是可用的;若宏块是所在行的最后一个,它的左侧宏块仍然在当前行的范围内,以及上侧和左上侧的宏块都是可用的,但右上侧的宏块不在当前图像的范围内,因此是不可用的;对于既不在第一行也不在其他行首尾的其他宏块,它们的左侧宏块在当前行范围内,因此是可用的,左上侧、上侧和右上侧的宏块也都在当前视频片的范围内,因此都是可用的。
在其中一个实施例中,步骤S4具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧(如果有的话)的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧及上侧(如果有的话)的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧(如果有的话)的宏块状态均为可用。
S5:根据每个宏块的可用状态进行视频编码处理。
对于每个宏块,根据其可用状态进行相应的编码处理。例如,如果一个宏块左侧的宏块不可用,则可能需要采用某种特殊的编码策略或考虑其右侧宏块的信息。对于每一行和每个片的最后一个宏块,可能需要采用特殊的编码策略或额外的信息编码。
解码器在接收到编码后的视频数据后,首先根据宏块的可用状态进行相应的解码操作,解码后的视频数据可以直接用于播放,但需要注意处理宏块的可用状态以正确显示视频内容。考虑到不同设备和编解码器的兼容性,也可能需要对特殊情况进行错误处理或兼容性处理。对于不支持某些特定编码策略的设备或编解码器,可能需要提供备选方案或简化版本的编码策略。
如图2所示,为本发明的另一实施例,该实施例提供了一种动态计算宏块相对索引位置的视频编码系统,包括绝对索引获取模块、起始宏块计算模块、宏块索引递增模块、宏块状态判断模块和宏块编码处理模块;
绝对索引获取模块用于获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice,绝对索引获取模块中,通过解析视频流的元数据,包括序列参数集SPS和图像参数集PPS,根据解析出的元数据,确定视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
起始宏块计算模块用于计算视频片中起始宏块在视频行的相对索引位置。起始宏块计算模块中,通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置,具体包括:
定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置。
宏块索引递增模块用于依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x。宏块索引递增模块中,通过应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;并判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
宏块状态判断模块用于根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态,具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧(如果有的话)的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧,及上侧(如果有的话)的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧(如果有的话)的宏块状态均为可用。
宏块编码处理模块用于根据每个宏块的可用状态进行视频编码处理。编码处理的方法在实际应用中可以根据特定的应用场景和需要进行选择和优化,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。该存储介质可以是只读存储器,磁盘或光盘等。因此,本发明的实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如上所述的一种动态计算宏块相对索引位置的视频编码方法。
综上所述,本发明可以在有限的时钟周期内,快速计算出当前视频片起始宏块的相对索引位置,并根据宏块的顺序动态计算出其他宏块的相对索引位置,提高了编码的灵活性,并为后续计算邻块可用状态打下基础;通过使用加法器和累加器能够快速地为每个宏块分配唯一的索引值,减少了计算量;通过判断宏块的相对位置,系统能够实时准确确定其相邻宏块的可用状态,确保数据的准确传输和编码。通过本发明的方法及系统,可以有效减少芯片中的逻辑门电路数量,降低芯片功耗,减少芯片面积并节约成本,适用于大多数视频编码标准和格式,具有较强的通用性。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种动态计算宏块相对索引位置的视频编码方法,其特征在于,所述方法包括:
获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;
定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置,具体包括:
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置;
依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;
根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态,具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧及上侧的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧的宏块状态均为可用;
根据每个宏块的可用状态进行视频编码处理。
2. 根据权利要求1所述的一种动态计算宏块相对索引位置的视频编码方法,其特征在于,所述获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_ slice,具体包括:
解析视频流的元数据,包括序列参数集SPS和图像参数集PPS;
根据解析出的元数据,确定第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
3.根据权利要求1所述的一种动态计算宏块相对索引位置的视频编码方法,其特征在于,所述依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x,具体包括:
应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;
判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;
若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
4.一种动态计算宏块相对索引位置的视频编码系统,其特征在于,所述系统包括:
绝对索引获取模块,用于获取视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice;
起始宏块计算模块,用于计算视频片中起始宏块在视频行中的相对索引位置;
所述起始宏块计算模块中,通过视频帧每行的宏块个数PicWidthInMbs计算视频片中起始宏块在视频行中的相对索引位置,具体包括:
定义变量mb_idx_in_x作为视频片中每个宏块在视频帧中的相对索引位置;
初始化变量mb_idx_in_x为0;
视频帧中每行的宏块个数PicWidthInMbs=ceil(视频帧宽度/16),ceil( )为向顶舍入函数;
应用一个加法器,对视频帧中每行的宏块个数PicWidthInMbs进行累加计算;
应用一个减法器,将视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice减去加法器的结果;
判断减法器的结果是否小于视频帧中每行的宏块个数PicWidthInMbs,若否,则返回加法器累加计算的步骤重复计算;若是,则减法器结果即mb_idx_in_x,为视频片中起始宏块在视频行中的相对索引位置;
宏块索引递增模块,用于依次进行宏块索引递增,计算视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x;
宏块状态判断模块,用于根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态;
所述宏块状态判断模块中,根据视频片中每个宏块在视频帧中的相对索引位置mb_idx_in_x判断每个宏块的可用状态,具体包括:
若mb_idx_in_x表示的宏块位于视频片的第一行,则该宏块的左上侧、上侧及右上侧的宏块状态均为不可用;
若mb_idx_in_x表示的宏块不在视频片的第一行,则分为以下三种情况判断:
当mb_idx_in_x表示的宏块为视频片一行的第一个宏块时,mb_idx_in_x的值为0,则该宏块的左侧及左上侧的宏块状态为不可用,上侧及右上侧的宏块状态为可用;
当mb_idx_in_x表示的宏块为视频片中一行的最后一个宏块时,该宏块的左侧、左上侧及上侧的宏块状态为可用,右上侧的宏块状态为不可用;
当mb_idx_in_x表示的宏块不属于以上两种情况时,该宏块的左侧、左上侧、上侧及右上侧的宏块状态均为可用;
宏块编码处理模块,用于根据每个宏块的可用状态进行视频编码处理。
5.根据权利要求4所述的一种动态计算宏块相对索引位置的视频编码系统,其特征在于,所述绝对索引获取模块中,通过解析视频流的元数据,包括序列参数集SPS和图像参数集PPS,根据解析出的元数据,确定视频片中第一个宏块在视频帧中的绝对索引位置first_mb_in_slice。
6.根据权利要求4所述的一种动态计算宏块相对索引位置的视频编码系统,其特征在于,所述宏块索引递增模块中,通过应用一个加法器,将视频片中起始宏块在视频行中的相对索引位置mb_idx_in_x按1依次进行累加计算,计算出视频片中其他宏块在视频帧中的相对索引位置mb_idx_in_x;并判断当前宏块是否为视频片中一行的最后一个宏块,若否,则继续通过加法器累加计算;若是,则进一步判断当前宏块是否为视频片的最后一个宏块,若是视频片的最后一个宏块,则结束运算,若否,则将mb_idx_in_x清零后,继续通过加法器累加计算。
7.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-3中任一项所述的一种动态计算宏块相对索引位置的视频编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410116687.9A CN117651139B (zh) | 2024-01-29 | 2024-01-29 | 一种动态计算宏块相对索引位置的视频编码方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410116687.9A CN117651139B (zh) | 2024-01-29 | 2024-01-29 | 一种动态计算宏块相对索引位置的视频编码方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117651139A CN117651139A (zh) | 2024-03-05 |
CN117651139B true CN117651139B (zh) | 2024-04-02 |
Family
ID=90049913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410116687.9A Active CN117651139B (zh) | 2024-01-29 | 2024-01-29 | 一种动态计算宏块相对索引位置的视频编码方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117651139B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095360A (zh) * | 2004-12-30 | 2007-12-26 | 英特尔公司 | 用于数字视频的内部预测的偏移量缓冲器 |
CN101617538A (zh) * | 2007-01-08 | 2009-12-30 | 诺基亚公司 | 用于视频编码中扩展空间可分级性的改进层间预测 |
CN101924938A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 视频解码宏块预测与边界滤波中相邻块信息的处理方法 |
CN102238378A (zh) * | 2010-05-06 | 2011-11-09 | 北京科迪讯通科技有限公司 | 一种3d视频图像编码中的快速运动搜索方案 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8170096B1 (en) * | 2003-11-18 | 2012-05-01 | Visible World, Inc. | System and method for optimized encoding and transmission of a plurality of substantially similar video fragments |
-
2024
- 2024-01-29 CN CN202410116687.9A patent/CN117651139B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095360A (zh) * | 2004-12-30 | 2007-12-26 | 英特尔公司 | 用于数字视频的内部预测的偏移量缓冲器 |
CN101617538A (zh) * | 2007-01-08 | 2009-12-30 | 诺基亚公司 | 用于视频编码中扩展空间可分级性的改进层间预测 |
CN102238378A (zh) * | 2010-05-06 | 2011-11-09 | 北京科迪讯通科技有限公司 | 一种3d视频图像编码中的快速运动搜索方案 |
CN101924938A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 视频解码宏块预测与边界滤波中相邻块信息的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117651139A (zh) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7231587B2 (en) | Embedded picture PSNR/CRC data in compressed video bitstream | |
US20220295047A1 (en) | Image prediction method and device | |
US10397597B2 (en) | Mode identification data reducing method for intra-prediction coding | |
CN103220508B (zh) | 编解码方法和装置 | |
CN107886560B (zh) | 动画资源的处理方法及装置 | |
Pescador et al. | Complexity analysis of an HEVC decoder based on a digital signal processor | |
WO2021082667A1 (zh) | 视频数据编码方法、装置、设备和存储介质 | |
US20100189184A1 (en) | Coding apparatus, coding method, and coding circuit | |
US20110058613A1 (en) | Method and apparatus for generating bitstream based on syntax element | |
CN105847871B (zh) | 视频编解码方法及其装置 | |
CN105208394B (zh) | 一种实时数字图像压缩预测方法与系统 | |
CN102196253B (zh) | 一种帧类型自适应选择的视频编码方法及装置 | |
CN113079375B (zh) | 基于相关度比较确定视频编解码优先顺序的方法及装置 | |
CN117651139B (zh) | 一种动态计算宏块相对索引位置的视频编码方法及系统 | |
CN111654696B (zh) | 一种帧内的多参考行预测方法、装置、存储介质及终端 | |
EP3829167A1 (en) | Decoding prediction method and apparatus, and computer storage medium | |
CN112822488B (zh) | 基于块重组的视频编解码系统、方法、装置、终端及介质 | |
CN102547260B (zh) | 基于上下文自适应的可变长编码的解码方法及系统 | |
US20160373786A1 (en) | Motion video predict coding method, motion video predict coding device, motion video predict coding program, motion video predict decoding method, motion predict decoding device, and motion video predict decoding program | |
CN111327898A (zh) | 一种视频编码的方法、装置、电子设备及存储介质 | |
CN102595117B (zh) | 一种编解码方法和装置 | |
Gilvarry | Extraction of motion vectors from an MPEG stream | |
CN109803147B (zh) | 基于视频纹理特征的变换处理方法及装置 | |
CN111212288A (zh) | 视频数据的编解码方法、装置、计算机设备和存储介质 | |
CN109246434B (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 |