WO2020024152A1 - 视频处理设备和方法 - Google Patents
视频处理设备和方法 Download PDFInfo
- Publication number
- WO2020024152A1 WO2020024152A1 PCT/CN2018/098044 CN2018098044W WO2020024152A1 WO 2020024152 A1 WO2020024152 A1 WO 2020024152A1 CN 2018098044 W CN2018098044 W CN 2018098044W WO 2020024152 A1 WO2020024152 A1 WO 2020024152A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cache
- search range
- read
- image block
- search
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Definitions
- Embodiments of the present application relate to the field of video processing. More specifically, embodiments of the present application relate to a video codec / decoder and a corresponding method.
- the encoding compression process includes prediction, transformation, quantization, and entropy encoding processes.
- prediction includes two types of intra prediction and inter prediction, the purpose of which is to remove redundant information of the current image block to be encoded by using prediction block information.
- the intra prediction uses the information of the frame image to obtain the prediction block data
- the inter prediction uses the information of the reference frame to obtain the prediction block data.
- inter prediction requires a large amount of bandwidth resources, and at the same time causes huge external memory access power consumption.
- bandwidth resources are limited and are usually shared by multiple modules (for example, including CPU, GPU, image processor, etc.). Therefore, the huge bandwidth requirements of video encoders will inevitably compress the bandwidth requirements of other modules, and a large amount of occupied bandwidth may also cause the external memory to fail to respond to other real-time processing modules in real time.
- video resolution is gradually popularized from high-definition to ultra-high-definition, the inter-predicted bandwidth consumption of video encoders will multiply.
- the embodiments of the present application propose a bandwidth control technology for a video encoder / decoder circuit, which can effectively control the video encoder / decoder to consume the limited bandwidth of the on-chip system, and ensure the bandwidth requirements and energy of the video encoder / decoder circuit. Consumption is within the controllable range.
- a first aspect of the embodiments of the present application provides a method in a video encoder / decoder, including:
- a video encoder / decoder includes a memory and one or more processors communicatively coupled with the memory. Instructions are stored on the memory, and when the instructions are executed by the one or more processors, cause the video codec to:
- a drone including the video encoder / decoder according to the second aspect of the embodiments of the present application.
- a computer program that, when the computer program is run by at least one processor, causes the at least one processor to execute the method according to the first aspect of the embodiment of the application. method.
- a computer-readable storage medium storing the computer program according to the fourth aspect of the embodiments of the present application.
- the bandwidth consumption of the video codec / decoder to the on-chip system can be adjusted according to the bandwidth requirements of the video codec, ensuring that the energy consumption of the video codec circuit is within a controllable range.
- FIG. 1 is a schematic diagram showing a video encoding and decoding scheme.
- FIG. 2 is a schematic diagram illustrating a video codec scheme according to an embodiment of the present application.
- FIG. 3 is a flowchart illustrating a video encoding and decoding method according to an embodiment of the present application.
- FIG. 4 is a block diagram illustrating a video encoder / decoder according to an embodiment of the present application.
- FIG. 5 is a schematic diagram illustrating a computer-readable storage medium according to an embodiment of the present application.
- FIG. 6 is a schematic diagram illustrating a search range according to an embodiment of the present application.
- FIG. 7 is a schematic diagram illustrating reference frame compression according to an embodiment of the present application.
- the encoding compression process includes prediction, transformation, quantization, and entropy encoding processes.
- prediction uses the information of the frame image to obtain prediction block data
- inter prediction uses the information of the reference frame to obtain prediction block data.
- the inter prediction process includes: dividing an image block to be encoded into several sub-image blocks; for each sub-image block, searching in a reference image for an image block that most closely matches the current sub-image block as a prediction block; the sub-image Subtract the corresponding pixel values of the block and the prediction block to obtain the residuals; and combine the obtained residuals corresponding to the sub-image blocks to obtain the residuals of the image blocks.
- Residuals can use the transformation matrix to remove the correlation of the residuals of the image blocks (that is, remove the redundant information of the image blocks) in order to improve the coding efficiency.
- the transformation of the data block in the image block usually uses two-dimensional transformation, that is, the residual information of the data block is multiplied with a transformation matrix and its transposition matrix at the encoding end to obtain the transformation coefficient.
- the transform coefficient is quantized to obtain a quantized coefficient.
- the quantized coefficients are subjected to entropy coding, and the bit stream obtained by entropy coding and the coding mode information (such as intra prediction mode, motion vector information, etc.) after coding are stored or sent to the decoding end.
- the entropy-encoded bitstream is first obtained, and then the entropy decoding is performed to obtain the corresponding residual.
- the predicted image block corresponding to the information image block such as the motion vector or intra prediction obtained by decoding The residual of the block and the image block obtains the value of each pixel in the current sub-image block.
- search and match are performed within a search area (Search Area, SA) at a corresponding position of the reference frame.
- SA Search Area
- a search is generally performed within a search range centered on a plurality of candidate motion vectors (MVs). These MVs are from the MV of the encoded prediction unit of the current frame or the reference frame.
- MVs candidate motion vectors
- SA a larger search range also means more accurate inter prediction. Therefore, inter prediction requires the use of a large amount of reference frame data for image block matching.
- FIG. 1 shows a schematic diagram of a video encoder / decoder 10. It can be seen from FIG. 1 that reference frame data required for inter prediction is stored in the external memory 160 and is loaded into the on-chip buffer 120 when needed.
- one approach includes a way to design the on-chip cache 120 as a line cache.
- the line buffer may buffer reference frame data of an entire line. Therefore, in the encoding process of the current frame from left to right and from top to bottom.
- the line cache may consume a large number of storage units, and may limit the range of the inter prediction search, which may affect the prediction accuracy.
- Another solution includes using a reference frame compression module (for example, see the decompression unit 140 and the compression unit 150 shown in FIG. 1) to compress the reference frame data to reduce the amount of data accessed to external memory, thereby reducing bandwidth requirements and reading Write power. Reference frame compression can ease the bandwidth requirements for inter prediction.
- FIG. 2 is a schematic diagram showing a video codec scheme according to an embodiment of the present application.
- a cache cache 220 is used to cache reference frame data to ensure an unrestricted inter-frame prediction search range, thereby ensuring prediction accuracy in a severe motion video scene.
- the main features of the cache cache 220 include: (1) the cache cache is composed of cache lines, the reference frame image is divided into the size of the cache line, and corresponds to the cache cache in a certain mapping manner; (2) the cache cache not only caches images A piece of cache line data in the cache, and also its position coordinates, can be used to determine whether the currently required cache line size data is in the cache cache when reading.
- the circuit of the video encoder / decoder usually adopts pipeline design, for the current coding unit (for example, the coding tree unit CTU, Coding Tree Unit) to perform inter prediction, it is necessary to prepare the corresponding search range data in advance.
- the required search range data is read from the external memory 260 into the cache cache 220.
- the number and size of the search range of the current coding unit may be determined by counting the amount of bandwidth consumed by the previous coding unit to read data.
- the bandwidth control module 270 may control the number or size of SAs read, and for each SA or its sub-range SA_small that needs to be read, one by one, it is detected whether the data in the cache behavior unit in the SSA is in the cache cache 220. Only data that is not present is read from the external memory 260. In this process, the statistical bandwidth consumption can be used for bandwidth control of the next read.
- the reference frame data for matching image blocks does not need to be obtained from the external memory 260, and some of the data can be obtained.
- the position pointed by a candidate motion vector can be used as a starting point to compare the data with the data already stored in the cache cache 220. Only when the comparison result indicates that the cache 220 does not store the data, the external memory 260 needs to be obtained. Therefore, the total amount of data to be read from the external memory 260 can be determined, and the total amount of data actually read from the external memory 260 can be controlled according to a predetermined upper limit value.
- the amount of data read from the external memory 260 reaches a predetermined upper limit value, even if the amount of data has not reached the total amount of data, the reading of data from the external memory 260 will stop. In other words, the amount of bandwidth consumption is reduced by appropriately reducing the amount of reference frame data for matching image blocks.
- FIG. 6 is a schematic diagram illustrating a search range according to an embodiment of the present application.
- each small gray box represents the mapping range of a cache line. Since the reference data of the search range is usually read at the size of one cache line, the search range is preferably aligned to the size of the cache line, that is, the search range is guaranteed to be an integer multiple of the size of the cache line. This application does not limit the number of SAs and the size of SAs.
- SAn_small scale_factor * SAn can be defined within it, where scale_factor is a scale parameter from 0 to 1. By controlling the size of the scale_factor, sub-search ranges of different sizes can be obtained.
- each SAn is not necessarily the same, and the size of SAn_small is preferably an integer multiple of the size of the cache line.
- the cache read process is to check whether the image area corresponding to each cache line in SAn or SAn_small is in the cache cache in the order from left to right and from top to bottom. If it is, it is called a cache hit, and no operation is performed at this time; if it is not, it is called a cache miss. At this time, the image area needs to be read from external memory and stored in the cache cache.
- FIG. 3 is a flowchart illustrating a video encoding and decoding method according to an embodiment of the present application. This method can be applied to a video encoder / decoder that uses a cache as an on-chip cache.
- step S310 the amount of data to be read into the cache of the video codec is adjusted according to the bandwidth usage consumption.
- step S320 at least a part of the image blocks of the reference frame are read into the cache based on the data amount.
- search matching is performed on the target image block in the current image based on the image data in the cache.
- inter-frame encoding / decoding is performed on the target image block based on the result of the search match.
- the target image block may refer to an image block that is encoded / decoded after the current encoding / decoding block in the current image.
- the search range corresponding to the target image block can be determined in the reference frame, the proportion of the search range to be read is determined according to the bandwidth usage consumption, and the sub-search range in the search range is read in the reference frame according to the to be read ratio Into the cache.
- the cache can include multiple cache lines. You can read one search range or one sub-search range in one search range from the reference frame at a time, and read each read data into at least one cache line of the cache, so that at least one reference frame is read. Part of the image block is read into the cache.
- the amount of data in the search range for different reads may be the same or different.
- the data amount of the sub search range in the search range read different times may be the same or different.
- a data amount of the one search range or a sub-search range in the one search range is an integer multiple of a size of the cache line.
- the image block is read into the cache only when it is determined that the image block to be read does not exist in the cache. If it is determined that the image block to be read already exists in the cache, the reading of the image block into the cache is discarded.
- the cache may further store position coordinates of the at least part of the image blocks.
- each N-line image block in the current image may be used as a cycle. After the first M image blocks in one cycle are subjected to inter-frame encoding / decoding, the adjustment of the to-be-read-in according to the bandwidth usage consumption may be started. The amount of data in the video codec's cache.
- N and M are positive integers. For example, N may be equal to 1.
- N-line image blocks may be N-line encoding / decoding tree units.
- calculating when performing a cache read on one or more image blocks in the current image before the current encoding / decoding block The total number of cache misses that have occurred, and bandwidth usage consumption is determined based at least on the total number of cache misses.
- the search range corresponding to the target image block includes one or more search ranges and / or one or more sub search ranges. Each sub search range can be defined in a corresponding search range. For example, if the total number of cache misses is greater than a first threshold, a cache read is performed in the search range at a first read ratio.
- a cache read is performed on the search range.
- determining to read into the high speed from the at least two search ranges to be read The search scope or sub-search scope of the buffer.
- the search range in the reference frame or the sub-search range in the search range may be selected in order of priority from high to low. For example, suppose there is a first search range and a second search range, where the priority of the first search range is higher than the priority of the second search range. If the total number of cache misses is greater than the first threshold, a portion of the first search range is read into the cache. If the total number of cache misses is less than or equal to the first threshold and greater than the second threshold, the first search range is read into the cache. If the total number of cache misses is less than or equal to a second threshold, it is determined that a cache read is performed in the first search range and the second search range.
- the bandwidth control module performs control in units of one line of CTU. If the currently read CTU is not the first L CTUs, then bandwidth control is performed on it. The specific way is:
- the meaning of the parameter L is that at the beginning of each line, the video content changes significantly from the end of the previous line, and the reference frame data stored in the cache needs to be updated a lot. Therefore, it is assumed that the cache reading of the first L coding units may not be limited in bandwidth.
- the parameter TH0 or TH1 can directly control the number of cache misses. When these two thresholds are exceeded, it means that more bandwidth is consumed.
- scale_factor is a scaling factor, the purpose of which is to reduce the pre-fetch range, thereby reducing bandwidth.
- the parameter scale_factor1 can be set to 0.5.
- the at least two search ranges have the same priority
- cache reads are performed in the first search range according to the third read ratio, and A cache read is performed in a second search range, wherein the third read ratio is greater than the first read ratio and the fourth read ratio is greater than the second read ratio. If the total number of cache misses is less than or equal to a second threshold, the first search range and the second search range are read into the cache.
- the bandwidth control module performs control in units of one line of CTU. If the currently read CTU is not the first L CTUs, then bandwidth control is performed on it. The specific way is:
- the meaning of the parameter L is that at the beginning of each line, the video content changes significantly from the end of the previous line, and the reference frame data stored in the cache needs to be updated a lot. Therefore, it is assumed that the cache reading of the first L coding units may not be limited in bandwidth.
- the parameter TH0 or TH1 can directly control the number of cache misses. When these two thresholds are exceeded, it means that more bandwidth is consumed.
- scale_factor is a scaling factor, the purpose of which is to reduce the pre-fetch range, thereby reducing bandwidth.
- One of the parameters N may be set to 10. The larger N is, the larger TH0 and TH1 are.
- the above bandwidth control method is mainly aimed at a video encoder / decoder system without a reference frame compression and decompression module.
- a video encoder system having a reference frame compression and decompression module such as the decompression unit 240 and the compression unit 250 shown in FIG. 2
- the main feature of a video codec system with reference frame compression is that the reference video frame is compressed before being stored in the external memory, and is usually compressed in a cache line or slice unit. As shown in Figure 7, the amount of data corresponding to a cache line becomes smaller, so the amount of bandwidth occupied when a cache miss needs to be read is also proportionally reduced.
- m is the number of cache misses
- CR (i) is the compression ratio of the image block corresponding to the ith cache miss.
- the compression rate is defined as the amount of compressed data divided by the amount of original data.
- the compression ratio value can usually be provided directly by the reference frame decompression module or obtained by simple calculation.
- the actual search range when performing a cache read on the current image block can be determined based on the compression ratio of one or more image blocks before the current image block.
- the number of cache misses that occur when reading is performed for each image block can be multiplied by the compression rate of the image block, and the product result can be summed to obtain the total number of cache misses.
- the target image block is an image block that is encoded / decoded after the current encoding / decoding block in the current image.
- Bandwidth control combined with reference frame compression rate information has greater advantages. For example, with the same number of cache misses, sum has a smaller value. Therefore, a video encoder with reference frame compression will read more search range data for subsequent inter-frame prediction, which can result in better encoding efficiency.
- FIG. 4 is a block diagram illustrating a video encoder / decoder according to an embodiment of the present application.
- the video codec can be applied to a variety of platforms, such as drones, drones, or robots.
- the video codec 40 includes a memory 410 and a processor 420.
- the memory 410 stores program instructions.
- the memory 410 may be a random access memory (RAM) or a read-only memory (ROM), or any combination thereof.
- the memory 410 may also include persistent storage devices, such as any one or a combination of magnetic, optical, solid-state, or even remotely mounted memory.
- the processor 420 may include any combination of one or more of a central processing unit (CPU), a multi-processor, a microcontroller, a digital signal processor (DSP), an application specific integrated circuit, and the like.
- CPU central processing unit
- DSP digital signal processor
- the processor 420 may call a program instruction stored in the memory 410.
- the processor 420 may perform the following operations: adjust the amount of data to be read into the cache of the video codec according to the bandwidth usage consumption; and read at least a part of the image blocks of the reference frame based on the data amount Enter the cache; perform search matching on a target image block in the current image based on the image data in the cache; and perform inter-frame encoding / decoding on the target image block based on a result of the search match.
- the target image block may refer to an image block in the current image that is encoded / decoded after the current encoding / decoding block.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: determine the search range corresponding to the target image block in the reference frame; determine the ratio to be read of the search range according to the bandwidth usage consumption; The to-be-read ratio reads a sub-search range in the search range into the cache in the reference frame.
- the cache includes multiple cache lines.
- the processor 420 may call a program instruction stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: reading a search range or a sub-search range in a search range each time from the reference frame, the at least part of the image block including the one The search range or a sub-search range in one search range is read; the data read each time is read into at least one cache line of the cache.
- a position coordinate of the at least part of the image block is also stored in the cache.
- an amount of data of the one search range or a sub-search range in the one search range is an integer multiple of the cache line.
- the amount of data in the search range for different reads may be the same or different.
- the data amounts of the sub-search ranges in the search ranges read at different times may be the same or different.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: when it is determined that the image block to be read does not exist in the cache, read the image block into the cache; or, determine When the image block to be read already exists in the cache, the read of the image block into the cache is discarded.
- the N-line image block may be an N-line encoding / decoding tree unit.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: before adjusting the amount of data to be read into the cache according to the bandwidth usage consumption, calculate one of the current image before the current codec block The total number of cache misses that occur when a cache read is performed on one or more image blocks, and the bandwidth usage consumption is determined based at least on the total number of cache misses.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: if the total number of cache misses is greater than a first threshold, perform a cache read in the search range according to a first read ratio; If the total number of cache misses is less than or equal to a first threshold and greater than a second threshold, performing a cache read in the search range according to a second read ratio, the second read ratio Greater than the first read ratio; if the total number of cache misses is less than or equal to a second threshold, performing a cache read in the search range.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: based on the total number of cache misses and the priorities of at least two search ranges to be read, from the at least two searches to be read A search range or a sub-search range to be read into the cache is determined from the range. If the search ranges have different priorities, the search range in the reference frame or the sub-search range in the search range may be selected in order of priority from high to low.
- the first search range has a higher priority than the second search range. If the total number of cache misses is greater than the first threshold, a portion of the first search range is read into the cache; if the total number of cache misses is less than or equal to the first threshold and greater than the first threshold Two thresholds, read the first search range into the cache; if the total number of cache misses is less than or equal to the second threshold, determine to execute in the first search range and the second search range Cache read.
- the priority of the first search range is the same as that of the second search range. If the total number of cache misses is greater than the first threshold, cache reads are performed in the first search range according to the first read ratio, and high-speed is performed in the second search range according to the second read ratio.
- Cache reads if the total number of cache misses is less than or equal to the first threshold and greater than the second threshold, performing a cache read in the first search range according to a third read ratio, and Four read ratios perform cache reads in a second search range, wherein the third read ratio is greater than the first read ratio and the fourth read ratio is greater than the second read ratio ; If the total number of cache misses is less than or equal to a second threshold, reading the first search range and the second search range into the cache.
- the processor 420 may call program instructions stored in the memory 410. When the program instructions are executed, the processor 420 may perform the following operations: determine an actual when performing a cache read on the current image block based on a compression rate of one or more image blocks before the current image block Search scope. For example, the number of cache misses that occur when reading is performed for each image block can be multiplied by the compression rate of the image block, and the product result can be summed to obtain the total number of cache misses.
- the embodiments of the present application may be implemented by means of a computer program product.
- the computer program product may be a computer-readable storage medium.
- a computer program is stored on a computer-readable storage medium.
- FIG. 5 is a block diagram illustrating a computer-readable storage medium 50 according to an embodiment of the embodiment of the present application.
- the computer-readable storage medium 50 includes a computer program 510.
- the computer program 510 when executed by at least one processor, causes the at least one processor to perform various steps of, for example, the method described above in connection with FIG. 3.
- the computer program 510 stored on the computer-readable storage medium 50 may be loaded into the memory 410 of the video codec 40 shown in FIG. 4, for example, so that the processor 420 of the video codec 40 performs a corresponding operation.
- examples of the computer-readable storage medium 50 include, but are not limited to, a semiconductor storage medium, an optical storage medium, a magnetic storage medium, or any other form of computer-readable storage medium.
- each functional module or individual feature of the device used in each of the above embodiments may be implemented or performed by a circuit, which is typically one or more integrated circuits.
- Circuits designed to perform the functions described in this specification may include general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs) or general-purpose integrated circuits, field-programmable gate arrays (FPGAs), or other Programming logic devices, discrete gate or transistor logic, or discrete hardware components, or any combination of the above.
- a general-purpose processor may be a microprocessor, or the processor may be an existing processor, controller, microcontroller, or state machine.
- the above-mentioned general-purpose processor or each circuit may be configured by a digital circuit, or may be configured by a logic circuit.
- the embodiments of the present application may also use integrated circuits obtained using the advanced technologies.
- the program running on the device may be a program that causes a computer to realize the functions of the embodiment of the present application by controlling a central processing unit (CPU).
- the program or information processed by the program may be temporarily stored in volatile memory (such as random access memory RAM), hard disk drive (HDD), non-volatile memory (such as flash memory), or other memory systems.
- a program for implementing the functions of the embodiments of the present application may be recorded on a computer-readable recording medium. Corresponding functions can be realized by causing a computer system to read programs recorded on the recording medium and execute the programs.
- the so-called "computer system” herein may be a computer system embedded in the device, and may include an operating system or hardware (such as a peripheral device).
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供了一种视频编/解码器和相应的方法。该方法包括:根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。从而,能够根据视频编/解码器的带宽需求来调整视频编/解码器对片上***的带宽的消耗,保证视频编/解码器的能源消耗在可控范围内。
Description
本申请的实施例涉及视频处理领域。更具体地,本申请的实施例涉及一种视频编/解码器和相应的方法。
为了减少视频存储和传输所占用的带宽,通常需要对视频数据进行编码压缩处理。编码压缩处理过程包括预测、变换、量化和熵编码过程。其中,预测包括帧内预测和帧间预测两种类型,其目的在于利用预测块信息去除当前待编码图像块的冗余信息。其中,帧内预测利用本帧图像的信息获得预测块数据,而帧间预测利用参考帧的信息获得预测块数据。
然而,在视频编码器电路中,帧间预测需要占据大量的带宽资源,同时引发巨大的外部存储器访问功耗。特别是在片上***(SoC)中,带宽资源是有限的,并且通常被多个模块共享(例如包括CPU、GPU、图像处理器等)。因此,视频编码器巨大的带宽需求将不可避免的压缩其它模块的带宽需求,大量占据带宽也可能导致外部存储器无法即时响应其它实时处理模块。随着视频分辨率由高清逐渐普及为超高清,视频编码器的帧间预测的带宽消耗将成倍增加。
发明内容
本申请的实施例提出了一种用于视频编/解码器电路的带宽控制技术,可有效控制视频编/解码器对片上***有限带宽的消耗,保证视频编/解码器电路的带宽需求和能源消耗在可控范围内。
本申请的实施例的第一方面,提供了一种视频编/解码器中的方法,包括:
根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;
基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;
基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;
基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。
本申请的实施例的第二方面,提供了一种视频编/解码器。该视频编/解码器包括存储器以及与所述存储器通信耦合的一个或更多个处理器。所述存储器上存储有指令,当所述指令由所述一个或更多个处理器执行时,使所述视频编/解码器:
根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;
基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;
基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;
基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。
根据本申请的实施例的第三方面,提供了一种无人机,该无人机包括根据本申请的实施例的第二方面所述的视频编/解码器。
根据本申请的实施例的第四方面,提供了一种计算机程序,当所述计算机程序由至少一个处理器运行时,使至少一个处理器执行根据本申请的实施例的第一方面所述的方法。
根据本申请的实施例的第五方面,提供了一种计算机可读存储介质,存储有根据本申请的实施例的第四方面所述的计算机程序。
采用本申请的实施例,能够根据视频编/解码器的带宽需求来调整视频编/解码器对片上***的带宽的消耗,保证视频编/解码器电路的能源消耗在可控范围内。
通过下文结合附图的详细描述,本申请的实施例的上述和其它特征将会变得更加明显,其中:
图1是示出了一种视频编解码方案的示意图。
图2是示出了根据本申请的实施例的视频编解码方案的示意图。
图3是示出了根据本申请的实施例的视频编解码方法的流程图。
图4是示出了根据本申请的实施例的视频编/解码器的框图。
图5是示出了根据本申请的实施例的计算机可读存储介质的示意图。
图6是示出了根据本申请的实施例的搜索范围的示意图。
图7是示出了根据本申请的实施例的参考帧压缩的示意图。
需要注意的是,附图不一定按比例绘制,重点在于示出本申请的实施例的技术的原理。另外,为了清楚起见,贯穿附图中的相似的附图标记指代相似的元素。
下面将结合本申请的实施例中的附图,对本申请的实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
如上所述,为了减少视频存储和传输所占用的带宽,通常需要对视频数据进行编码压缩处理。编码压缩处理过程包括预测、变换、量化和熵编码过程。预测包括帧内预测和帧间预测两种类型,其中帧内预测利用本帧图像的信息获得预测块数据,而帧间预测利用参考帧的信息获得预测块数据。具体地,帧间预测过程包括:将待编码图像块划分成若干个子图像块;针对每个子图像块,在参考图像中搜索与当前子图像块最匹配的图像块作为预测块;将该子图像块与预测块的相应像素值相减得到残差;以及将得到的各子图像块对应的残差组合在一起以获得图像块的残差。
残差可以使用变换矩阵去除图像块的残差的相关性(即去除图像块的冗余信息)以便提高编码效率。图像块中的数据块的变换通常采用二维变换,即在编码端将数据块的残差信息分别与一个变换矩阵及其转置矩阵相乘,得到变换系数。变换系数经量化可得到量化后的系数。最后,将量化后的系数进行熵编码,并且将熵编码得到的比特流及进行编码后的编码模式信息(如帧内预测模式、运动矢量信息等)进行存储或发送到解码端。
相应地,在图像的解码端,首先获得熵编码比特流后进行熵解码,得到相应的残差,根据解码得到的运动矢量或帧内预测等信息图像块对应的预测图像块,并且根据预测图像块与图像块的残差得到当前子图像块中各像素点的值。
在进行帧间预测时,针对当前帧的每一个预测单元,在参考帧相应位置的一个搜索范围(Search Area,SA)内进行搜索匹配。为了使得预测更加精确,通常会在多个候选运动向量(Motion Vector,MV)为中心的搜索范围内进行搜索,这些MV来自于当前帧或者参考帧的已编码预测单元的MV。同时,对于每一个SA,更大的搜索范围也意味着更精确的帧间预测。因此,帧间预测需要利用大量的参考帧数据进行图像块的匹配。
考虑到片上存储器较为昂贵,可以将参考帧数据存放到外部存储器中,并且仅在需要时将对应的参考帧数据读入到片上缓存中进行帧间预测。图1示出了一种视频编/解码器10的示意图。从图1中可见,帧间预测所需的参考帧数据存储于外部存储器160中,在需要时被载入片上缓存120中。
为了缓解帧间预测大量的带宽和能源消耗,可以采用若干不同方案。例如,一种方案包括将片上缓存120设计成行缓存的方式。具体地,行缓存可以缓存一整行的参考帧数据。因此,在当前帧从左至右、从上至下的编码过程中。然而,行缓存可能会消耗大量存储单元,并且可能会限制帧间预测搜索范围,从而可能对预测精度有影响。另一种方案包括采用参考帧压缩模块(例如,参见图1中所示的解压单元140和压缩单元150)对参考帧数据进行压缩,减少访问外部存储器的数据量,从而降低带宽需求并降低读写功耗。参考帧压缩可以缓解帧间预测的带宽需求,然而由于参考帧压缩通常是无损压缩,其压缩率是随着视频内容动态变化的。尽管平均意义上来说帧间预测的带宽需求降低了,但是最大需求或者最坏情况下的瞬时需求仍然不可控,这对于SoC***设计来说需要按照最坏情况去考虑带宽分配。
为了提高编码效率,可以考虑采用cache架构来保证搜索范围不受限制。cache缓存的主要特性为可以映射到图像的任何区域,因而理论上可以缓存任意位置的参考帧数据,不会限制搜索范围。图2是示出了根据本申 请的实施例的视频编解码方案的示意图。如图2所示,采用cache缓存220来缓存参考帧数据以保证不受限制的帧间预测搜索范围,从而保障了在剧烈运动视频场景下的预测精度。cache缓存220的主要特点包括:(1)cache缓存由高速缓存行组成,参考帧图像被划分为高速缓存行的大小,以某种映射方式对应到cache缓存中;(2)cache缓存不仅缓存图像中的一条高速缓存行数据,而且同时也缓存其位置坐标,可用于读取时判断当前所需的高速缓存行大小的数据是否在cache缓存中。
由于视频编/解码器的电路通常采用流水设计,对于当前编码单元(例如,编码树单元CTU,Coding Tree Unit)进行帧间预测时,需要提前准备好对应的搜索范围的数据,也即是将所需搜索范围数据从外部存储器260中读入到cache缓存220中。搜索范围由当前帧或参考帧中的相邻已编码位置的MV为中心的一片区域,其对应的搜索范围分别命名为SAn(n=1,2,3…)。一般来说,从外部存储器260中全部读入所有的SAn将会超过设定的带宽限制。尽管由于图像相关性,cache缓存220中可能已经存有了部分所需参考帧数据,因而SAn不需要全部从外部存储器260获取,但是cache缓存220中的有用数据的比例是随着图像内容动态变化的,在实际应用中需要考虑最坏情况。
在本申请的一个实施例中,可以通过统计以前编码单元读取数据消耗的带宽量来决定当前编码单元的搜索范围的个数以及大小。带宽控制模块270可以控制读取的SA的个数或者大小,而对于每一个需要读取的SA或者其子范围SA_small,逐个检测SSA内的以高速缓存行为单位的数据是否在cache缓存220中。仅对于不存在的数据才从外部存储器260中读入。在此过程中,统计带宽消耗量可以用于下次读取的带宽控制。
如图2所示,在采用cache缓存220的方案中,由于cache缓存220中已经存有一些参考帧数据,因此用于匹配图像块的参考帧数据不需要全部从外部存储器260获取,部分数据可以直接从cache缓存220中读取。例如,可以以一个候选运动矢量指向的位置为起点,将数据分别与cache缓存220中已存有的数据进行比较。只有比较结果表明cache缓存220不存有该数据,才需要去外部存储器260获取该数据。因此,可以确定需要从外部存储器260读取的数据总量,并根据预定的上限值来控制实际从外 部存储器260所读取的数据总量。当从外部存储器260读取进来的数据量达到预定的上限值时,即使这个数据量还没达到数据总量,也会停止从外部存储器260读取数据。换句话说,通过适当减少用于匹配图像块的参考帧数据的数量来减少带宽消耗量。
图6是示出了根据本申请的实施例的搜索范围的示意图。在图6中,每个灰色小方框表示一个高速缓存行的映射范围。由于搜索范围的参考数据通常以一个高速缓存行的大小进行读取,优选地将搜索范围对齐到高速缓存行的大小,即保证搜索范围是高速缓存行的大小的整数倍。本申请不限制SA的个数以及SA的大小。对于每一个SAn,都可以在其内部定义一个更小的子搜索范围SAn_small=scale_factor*SAn,其中scale_factor为从0到1的一个比例参数。通过控制scale_factor的大小可以得到不同大小的子搜索范围,可通过只读取子搜索范围的数据来减少带宽占用。需要说明的是,各个SAn的大小不一定相同,并且SAn_small的大小优选地是高速缓存行的大小的整数倍。对每一个SAn或SAn_small,cache读取的过程为按照从左至右、从上至下的顺序查看SAn或SAn_small中的每一个高速缓存行对应的图像区域是否在cache缓存中。如果在,被称为cache命中,此时不进行任何操作;如果不在,被称为cache缺失,此时需要从外部存储器中读入该图像区域并存入cache缓存中。
图3是示出了根据本申请的实施例的视频编解码方法的流程图。该方法可以应用于采用cache作为片上缓存的视频编/解码器中。如图3所示,在步骤S310,根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量。在步骤S320,基于该数据量将参考帧的至少部分图像块读入高速缓存器。在步骤S330,基于高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配。在步骤S340,基于搜索匹配的结果对目标图像块进行帧间编/解码。在本申请的实施例中,目标图像块可以是指当前图像中在当前编/解码块之后进行编/解码的图像块。
下面,通过若干详细示例来说明图3中各个步骤的操作。
例如,可以在参考帧中确定目标图像块对应的搜索范围,根据带宽使用消耗确定所述搜索范围的待读取比例,并且根据待读取比例在参考帧中将搜索范围中的子搜索范围读入高速缓存器。高速缓存器可以包括多个缓 存行。可以从参考帧中每一次读取一个搜索范围或者读取一个搜索范围中的子搜索范围,并将每次读取的数据读入高速缓存器的至少一个缓存行中,从而将参考帧的至少部分图像块读入高速缓存器。不同次读取的搜索范围的数据量可以相同或者不同。不同次读取的搜索范围中的子搜索范围的数据量可以相同或者不同。优选地,所述一个搜索范围或者所述一个搜索范围中的子搜索范围的数据量为所述高速缓存行的大小的整数倍。
优选地,当确定要读入的图像块不存在于所述高速缓存器中时,才将所述图像块读入高速缓存器中。如果确定要读入的图像块已经存在于高速缓存器中时,放弃将所述图像块读入高速缓存器中。
在一个示例中,高速缓存器中还可以存储上述至少部分图像块的位置坐标。
在一个示例中,可以以当前图像中的每N行图像块为一个周期,在一个周期内的前M个图像块进行帧间编/解码之后,开始执行所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量。其中,N和M为正整数。例如,N可以等于1。例如,N行图像块可以是N行编/解码树单元。
在一个示例中,在根据带宽使用消耗调整待读入所述高速缓存器的数据量之前,计算对当前图像中在当前编/解码块之前的一个或多个图像块执行高速缓存器读取时发生的高速缓存器缺失的总数量,并且至少基于所述高速缓存器缺失的总数量确定带宽使用消耗。目标图像块对应的搜索范围包括一个或更多个搜索范围和/或一个或更多个子搜索范围。每一个子搜索范围可以在相对应的一个搜索范围中定义。例如,如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在所述搜索范围中执行高速缓存器读取。如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第二读取比例在所述搜索范围中执行高速缓存器读取,所述第二读取比例比例大于所述第一读取比例。如果所述高速缓存器缺失的总数量小于或等于第二阈值,则对所述搜索范围中执行高速缓存器读取。
在另一个示例中,基于所述高速缓存器缺失的总数量以及待读取的至少两个搜索范围的优先级,从所述待读取的至少两个搜索范围中确定待读入所述高速缓存器的搜索范围或者子搜索范围。
在所述至少两个搜索范围具有不同的优先级的情况下,可以按照优先 级从高到低的顺序来选择参考帧中的搜索范围或搜索范围中的子搜索范围。例如,假设存在第一搜索范围和第二搜索范围,其中第一搜索范围的优先级高于第二搜索范围的优先级。如果高速缓存器缺失的总数量大于第一阈值,则将第一搜索范围的一部分读入所述高速缓存器。如果高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则将第一搜索范围读入所述高速缓存器。如果所述高速缓存器缺失的总数量小于或等于第二阈值,则确定在第一搜索范围和第二搜索范围中执行高速缓存器读取。
举例来说,假设第一搜索范围SA1的优先级大于第二搜索范围SA2的优先级。带宽控制模块以一行CTU为单位进行控制。若当前读取CTU不是前L个CTU,则对其进行带宽控制。具体方式为:
1)统计前N个CTU的预取时的cache缺失数量,记为sum;
2)比较sum与阈值TH0的大小。如果sum>TH0,则只读取SA1_small=scale_factor1*SA1,其中scale_factor1为参数;
3)如果sum<=TH0,则比较sum与阈值TH1的大小。如果sum>TH1,则只读取SA1;
4)如果sum<=TH1,则读取SA1和SA2。
5)对上述过程中产生的cache缺失数量进行统计,用于针对下一个CTU的带宽控制。
参数L的意义在于:在每行开始,视频内容与上一行结尾发生显著变化,cache中存放的参考帧数据需要大量更新。因此,假设可以不对前L个编码单元的cache读取进行带宽限制。L的选取和硬件流水设计有关,例如L=8。而参数TH0或者TH1可以直接控制cache缺失的数量。当超过这两个阈值时,表示消耗了较多的带宽。scale_factor为缩放因子,目的是减少预取范围,从而减小带宽。参数N的一个可能设置为10。N越大,TH0和TH1越大。例如,当N=10时,TH0和TH1的一种可能设置为TH0=500,TH1=300。参数scale_factor1可设为0.5。
在所述至少两个搜索范围具有相同的优先级的情况下,假设存在第一搜索范围和第二搜索范围,其中第一搜索范围的优先级等于第二搜索范围的优先级。那么,如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在第一搜索范围中执行高速缓存器读取,以及按第二读取比 例在第二搜索范围中执行高速缓存器读取。如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第三读取比例在第一搜索范围中执行高速缓存器读取,以及按第四读取比例在第二搜索范围中执行高速缓存器读取,其中,所述第三读取比例大于所述第一读取比例,所述第四读取比例大于所述第二读取比例。如果所述高速缓存器缺失的总数量小于或等于第二阈值,则将所述第一搜索范围和所述第二搜索范围读入所述高速缓存器。
举例来说,假设第一搜索范围SA的优先级等于第二搜索范围SA2的优先级。带宽控制模块以一行CTU为单位进行控制。若当前读取CTU不是前L个CTU,则对其进行带宽控制。具体方式为:
6)统计前N个CTU的cache读取时的cache缺失数量,记为sum;
7)比较sum与阈值TH0的大小。如果sum>TH0,则只读取SA1_small=scale_factor1*SA1和SA2_small=scale_factor2*SA2之和,其中scale_factor1和scale_factor2为参数;
8)如果sum<=TH0,则比较sum与阈值TH1的大小。如果sum>TH1,则只读取SA1_small=scale_factor3*SA1和SA2_small=scale_factor4*SA2之和,其中scale_factor3和scale_factor4为参数,scale_factor1<scale_factor3且scale_factor2<scale_factor4;
9)如果sum<=TH1,则读取SA1和SA2。
10)对上述过程中产生的cache缺失数量进行统计,用于针对下一个CTU的带宽控制。
参数L的意义在于:在每行开始,视频内容与上一行结尾发生显著变化,cache中存放的参考帧数据需要大量更新。因此,假设可以不对前L个编码单元的cache读取进行带宽限制。L的选取和硬件流水设计有关,例如L=8。而参数TH0或者TH1可以直接控制cache缺失的数量。当超过这两个阈值时,表示消耗了较多的带宽。scale_factor为缩放因子,目的是减少预取范围,从而减小带宽。参数N的一个可能设置为10。N越大,TH0和TH1越大。例如,当N=10时,TH0和TH1的一种可能设置为TH0=500,TH1=300。在一个示例中,参数scale_factor1=0.3,scale_factor2=0.3,scale_factor3=0.6,scale_factor4=0.6。
上述带宽控制方法主要针对的是不具有参考帧压缩和解压模块的视频编/解码器***。在具有参考帧压缩和解压模块(例如图2所示的解压单元240和压缩单元250)的视频编码器***中,可以进一步利用参考帧压缩的压缩率信息更加精确地控制带宽。具有参考帧压缩的视频编/解码器***的主要特征是,参考视频帧在存入外部存储器前经过了压缩,并且通常以一个高速缓存行或者条带为单位进行压缩。如图7所示,一个高速缓存行对应的数据量变少,因此在发生cache缺失需要读取时所占据的带宽量也成比例的减少。为了体现上述带宽的减小,在计算上述sum时需要修改为:
上式中m为cache缺失的数量,CR(i)为与第i个cache缺失对应的图像块的压缩率,压缩率定义为压缩后数据量除以原始数据量。压缩率数值通常可以直接由参考帧解压模块提供或者通过简单计算获得。此外,通过上述公式可以看到,带宽控制针对是否具有参考帧压缩和解压模块具有相同的形式,即当没有参考帧压缩时,CR(i)=1;当有参考帧压缩时,CR(i)即表示为对应图像块数据的压缩率。
因此,可以基于当前图像块之前的一个或更多个图像块的压缩率来确定对所述当前图像块执行高速缓存器读取时的实际搜索范围。其中,可以将针对每一个图像块执行读取时发生的高速缓存器缺失数量与该图像块的压缩率相乘,并对乘积结果求和以得到所述高速缓存器缺失的总数量。所述目标图像块为所述当前图像中在当前编/解码块之后进行编/解码的图像块。
结合参考帧压缩率信息的带宽控制具有更大的优势。例如,在相同的cache缺失数量的情况下,sum具有更小的数值。因此,具有参考帧压缩的视频编码器将读取更多的搜索范围数据进行后续的帧间预测,从而可以得到更好的编码效率。
图4是示出了根据本申请的实施例的视频编/解码器的框图。该视频编/解码器可以应用于多种平台中,例如无人机、无人车或机器人等。如图4所示,视频编/解码器40包括存储器410和处理器420。
存储器410存储有程序指令。例如,存储器410可以是随机存取存储器(RAM)或只读存储器(ROM),或者它们的任意组合。存储器410还可以 包括持久存储设备,例如磁存储器、光存储器、固态存储器或甚至远程安装存储器中的任意单独一个或其组合。
处理器420可以包括中央处理单元(CPU)、多处理器、微控制器、数字信号处理器(DSP)、专用集成电路等中的一个或多个的任意组合。
处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。所述目标图像块可以是指所述当前图像中在当前编/解码块之后进行编/解码的图像块。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:在所述参考帧中确定所述目标图像块对应的搜索范围;根据所述带宽使用消耗确定所述搜索范围的待读取比例;根据所述待读取比例在所述参考帧中将所述搜索范围中的子搜索范围读入所述高速缓存器。
在一个示例中,高速缓存器包括多个缓存行。处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:从所述参考帧中每一次读取一个搜索范围或者读取一个搜索范围中的子搜索范围,所述至少部分图像块包括所述一个搜索范围或者读取一个搜索范围中的子搜索范围;将每次读取的数据读入所述高速缓存器的至少一个缓存行中。
在一个示例中,高速缓存器中还存储所述至少部分图像块的位置坐标。
在一个示例中,所述一个搜索范围或者所述一个搜索范围中的子搜索范围的数据量为所述缓存行的整数倍。
在一个示例中,不同次读取的搜索范围的数据量可以相同或者不同。或者,不同次读取的搜索范围中的子搜索范围的数据量可以相同或者不同。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:确定要读入的图像块不存在于所述高速缓存器中时,将所述图像块读入所述高速缓存器中; 或者,确定要读入的图像块已经存在于所述高速缓存器中时,放弃将所述图像块读入所述高速缓存器中。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:以当前图像中的每N行图像块为一个周期,在一个周期内的前M个图像块进行帧间编/解码之后,开始执行所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量,其中,N和M为正整数。例如,所述N=1。此外,所述N行图像块可以是N行编/解码树单元。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:在所述根据带宽使用消耗调整待读入所述高速缓存器的数据量之前,计算对当前图像中在当前编/解码块之前的一个或多个图像块执行高速缓存器读取时发生的高速缓存器缺失的总数量,以及至少基于所述高速缓存器缺失的总数量确定带宽使用消耗。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在所述搜索范围中执行高速缓存器读取;如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第二读取比例在所述搜索范围中执行高速缓存器读取,所述第二读取比例比例大于所述第一读取比例;如果所述高速缓存器缺失的总数量小于或等于第二阈值,则对所述搜索范围中执行高速缓存器读取。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:基于所述高速缓存器缺失的总数量以及待读取的至少两个搜索范围的优先级,从所述待读取的至少两个搜索范围中确定待读入所述高速缓存器的搜索范围或者子搜索范围。如果搜索范围具有不同的优先级,可以按照优先级从高到低的顺序来选择所述参考帧中的搜索范围或所述搜索范围中的子搜索范围。
例如,假设至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级高于第二搜索范围的优先级。如果所述高速缓存器缺 失的总数量大于第一阈值,则将第一搜索范围的一部分读入所述高速缓存器;如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则将所述第一搜索范围读入所述高速缓存器;如果所述高速缓存器缺失的总数量小于或等于第二阈值,则确定在第一搜索范围和第二搜索范围中执行高速缓存器读取。
例如,假设至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级与第二搜索范围的优先级相同。如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在第一搜索范围中执行高速缓存器读取,以及按第二读取比例在第二搜索范围中执行高速缓存器读取;如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第三读取比例在第一搜索范围中执行高速缓存器读取,以及按第四读取比例在第二搜索范围中执行高速缓存器读取,其中,所述第三读取比例大于所述第一读取比例,所述第四读取比例大于所述第二读取比例;如果所述高速缓存器缺失的总数量小于或等于第二阈值,则将所述第一搜索范围和所述第二搜索范围读入所述高速缓存器。
在一个示例中,处理器420可以调用存储器410中存储的程序指令。当程序指令被执行时,处理器420可以执行以下操作:基于所述当前图像块之前的一个或更多个图像块的压缩率来确定对所述当前图像块执行高速缓存器读取时的实际搜索范围。例如,可以将针对每一个图像块执行读取时发生的高速缓存器缺失数量与该图像块的压缩率相乘,并对乘积结果求和以得到所述高速缓存器缺失的总数量。
此外,本申请的实施例可以借助于计算机程序产品来实现。例如,该计算机程序产品可以是计算机可读存储介质。计算机可读存储介质上存储有计算机程序,当在计算设备上执行该计算机程序时,能够执行相关的操作以实现本申请的实施例的上述技术方案。
例如,图5是示出了根据本申请的实施例一个实施例的计算机可读存储介质50的框图。如图5所示,计算机可读存储介质50包括计算机程序510。计算机程序510在由至少一个处理器运行时,使得至少一个处理器执行例如上文结合图3所描述的方法的各个步骤。
计算机可读存储介质50上存储的计算机程序510例如可以被加载到图 4所示的视频编/解码器40的存储器410中,使得视频编/解码器40的处理器420执行相应的操作。
本领域技术人员可以理解,计算机可读存储介质50的示例包括但不限于:半导体存储介质、光学存储介质、磁性存储介质、或任何其他形式的计算机可读存储介质。
上文已经结合优选实施例对本申请的实施例的方法和涉及的设备进行了描述。本领域技术人员可以理解,上面示出的方法仅是示例性的。本申请的实施例的方法并不局限于上面示出的步骤和顺序。例如,上述步骤可以按照与发明实施例的实施例中的不同步骤执行,或者并行执行。
应该理解,本申请的实施例的上述实施例可以通过软件、硬件或者软件和硬件两者的结合来实现。本申请的实施例的这种设置典型地提供为设置或编码在例如光介质(例如CD-ROM)、软盘或硬盘等的计算机可读介质上的软件、代码和/或其他数据结构、或者诸如一个或多个ROM或RAM或PROM芯片上的固件或微代码的其他介质、或一个或多个模块中的可下载的软件图像、共享数据库等。软件或固件或这种配置可安装在计算设备上,以使得计算设备中的一个或多个处理器执行本申请的实施例实施例所描述的技术方案。
此外,上述每个实施例中所使用的设备的每个功能模块或各个特征可以由电路实现或执行,所述电路通常为一个或多个集成电路。设计用于执行本说明书中所描述的各个功能的电路可以包括通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)或通用集成电路、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、或分立的硬件组件、或以上器件的任意组合。通用处理器可以是微处理器,或者所述处理器可以是现有的处理器、控制器、微控制器或状态机。上述通用处理器或每个电路可以由数字电路配置,或者可以由逻辑电路配置。此外,当由于半导体技术的进步,出现了能够替代目前的集成电路的先进技术时,本申请的实施例也可以使用利用该先进技术得到的集成电路。
运行在根据本申请的实施例的设备上的程序可以是通过控制中央处理单元(CPU)来使计算机实现本申请的实施例功能的程序。该程序或由该程序处理的信息可以临时存储在易失性存储器(如随机存取存储器RAM)、硬 盘驱动器(HDD)、非易失性存储器(如闪速存储器)、或其他存储器***中。用于实现本申请的实施例各实施例功能的程序可以记录在计算机可读记录介质上。可以通过使计算机***读取记录在所述记录介质上的程序并执行这些程序来实现相应的功能。此处的所谓“计算机***”可以是嵌入在该设备中的计算机***,可以包括操作***或硬件(如***设备)。
如上,已经参考附图对本申请的实施例进行了详细描述。但是,具体的结构并不局限于上述实施例,本申请的实施例也包括不偏离本申请的实施例主旨的任何设计改动。另外,可以在权利要求的范围内对本申请的实施例的记载进行多种改动,通过适当地组合不同实施例的技术手段所得到的实施例也包含在本申请的实施例的技术范围内。此外,上述实施例中所描述的具有相同效果的组件可以相互替代。
Claims (51)
- 一种视频编/解码器中的方法,包括:根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。
- 根据权利要求1所述的方法,其中,所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量,包括:在所述参考帧中确定所述目标图像块对应的搜索范围;根据所述带宽使用消耗确定所述搜索范围的待读取比例;根据所述待读取比例在所述参考帧中将所述搜索范围中的子搜索范围读入所述高速缓存器。
- 根据权利要求1所述的方法,其中,所述高速缓存器包括多个缓存行;所述将参考帧的至少部分图像块读入所述高速缓存器包括:从所述参考帧中每一次读取一个搜索范围或者读取一个搜索范围中的子搜索范围,所述至少部分图像块包括所述一个搜索范围或者读取一个搜索范围中的子搜索范围;将每次读取的数据读入所述高速缓存器的至少一个缓存行中。
- 根据权利要求3所述的方法,其中,所述高速缓存器中还存储所述至少部分图像块的位置坐标。
- 根据权利要求3所述的方法,其中,所述一个搜索范围或者所述一个搜索范围中的子搜索范围的数据量为所述缓存行的整数倍。
- 根据权利要求3所述的方法,其中,不同次读取的搜索范围的数据量相同或者不同;或者,不同次读取的搜索范围中的子搜索范围的数据量相同或者不同。
- 根据权利要求1所述的方法,其中,基于所述数据量将参考帧的至 少部分图像块读入所述高速缓存器包括:确定要读入的图像块不存在于所述高速缓存器中时,将所述图像块读入所述高速缓存器中。
- 根据权利要求1所述的方法,其中,确定要读入的图像块已经存在于所述高速缓存器中时,放弃将所述图像块读入所述高速缓存器中。
- 根据权利要求1所述的方法,其中,以当前图像中的每N行图像块为一个周期,在一个周期内的前M个图像块进行帧间编/解码之后,开始执行所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量,其中,N和M为正整数。
- 根据权利要求9所述的方法,其中,所述N=1。
- 根据权利要求9所述的方法,其中,所述N行图像块为N行编/解码树单元。
- 根据权利要求1所述的方法,其中,还包括:在所述根据带宽使用消耗调整待读入所述高速缓存器的数据量之前:计算对当前图像中在当前编/解码块之前的一个或多个图像块执行高速缓存器读取时发生的高速缓存器缺失的总数量;以及至少基于所述高速缓存器缺失的总数量确定带宽使用消耗。
- 根据权利要求12所述的方法,其中,如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在所述搜索范围中执行高速缓存器读取。
- 根据权利要求13所述的方法,其中,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第二读取比例在所述搜索范围中执行高速缓存器读取,所述第二读取比例比例大于所述第一读取比例。
- 根据权利要求14所述的方法,其中,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则对所述搜索范围中执行高速缓存器读取。
- 根据权利要求2所述的方法,其中,所述目标图像块对应的搜索范围包括一个或更多个搜索范围和/或一个或更多个子搜索范围。
- 根据权利要求16所述的方法,其中,每一个子搜索范围是在相对应的一个搜索范围中定义的。
- 根据权利要求12所述的方法,所述方法还包括:基于所述高速缓存器缺失的总数量以及待读取的至少两个搜索范围的优先级,从所述待读取的至少两个搜索范围中确定待读入所述高速缓存器的搜索范围或者子搜索范围。
- 根据权利要求18所述的方法,其中,所述搜索范围具有不同的优先级,并且按照优先级从高到低的顺序来选择所述参考帧中的搜索范围或所述搜索范围中的子搜索范围。
- 根据权利要求18所述的方法,其中,所述至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级高于第二搜索范围的优先级;如果所述高速缓存器缺失的总数量大于第一阈值,则将第一搜索范围的一部分读入所述高速缓存器;和/或,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则将所述第一搜索范围读入所述高速缓存器;和/或,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则确定在第一搜索范围和第二搜索范围中执行高速缓存器读取。
- 根据权利要求18所述的方法,其中,所述至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级与第二搜索范围的优先级相同;如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在第一搜索范围中执行高速缓存器读取,以及按第二读取比例在第二搜索范围中执行高速缓存器读取;和/或,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第三读取比例在第一搜索范围中执行高速缓存器读取,以及按第四读取比例在第二搜索范围中执行高速缓存器读取,其中,所述第三读取比例大于所述第一读取比例,所述第四读取比例大于所述第二读取比例;和/或,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则将所述第一搜索范围和所述第二搜索范围读入所述高速缓存器。
- 根据权利要求1-21中任意一项所述的方法,还包括:基于所述当前图像块之前的一个或更多个图像块的压缩率来确定对所述当前图像块执行高速缓存器读取时的实际搜索范围。
- 根据权利要求22所述的方法,其中,将针对每一个图像块执行读取时发生的高速缓存器缺失数量与该图像块的压缩率相乘,并对乘积结果求和以得到所述高速缓存器缺失的总数量。
- 根据权利要求1所述的方法,其中,所述目标图像块为所述当前图像中在当前编/解码块之后进行编/解码的图像块。
- 一种视频编/解码器,包括:存储器;以及与所述存储器通信耦合的一个或更多个处理器,其中,所述存储器上存储有指令,当所述指令由所述一个或更多个处理器执行时,使所述视频编/解码器:根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量;基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器;基于所述高速缓存器中的图像数据来对当前图像中的目标图像块执行搜索匹配;基于所述搜索匹配的结果对所述目标图像块进行帧间编/解码。
- 根据权利要求25所述的视频编/解码器,其中,所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量,包括:在所述参考帧中确定所述目标图像块对应的搜索范围;根据所述带宽使用消耗确定所述搜索范围的待读取比例;根据所述待读取比例在所述参考帧中将所述搜索范围中的子搜索范围读入所述高速缓存器。
- 根据权利要求25所述的视频编/解码器,其中,所述高速缓存器包括多个缓存行;所述将参考帧的至少部分图像块读入所述高速缓存器包括:从所述参考帧中每一次读取一个搜索范围或者读取一个搜索范围中的 子搜索范围,所述至少部分图像块包括所述一个搜索范围或者读取一个搜索范围中的子搜索范围;将每次读取的数据读入所述高速缓存器的至少一个缓存行中。
- 根据权利要求27所述的视频编/解码器,其中,所述高速缓存器中还存储所述至少部分图像块的位置坐标。
- 根据权利要求27所述的视频编/解码器,其中,所述一个搜索范围或者所述一个搜索范围中的子搜索范围的数据量为所述缓存行的整数倍。
- 根据权利要求27所述的视频编/解码器,其中,不同次读取的搜索范围的数据量相同或者不同;或者,不同次读取的搜索范围中的子搜索范围的数据量相同或者不同。
- 根据权利要求25所述的视频编/解码器,其中,基于所述数据量将参考帧的至少部分图像块读入所述高速缓存器包括:确定要读入的图像块不存在于所述高速缓存器中时,将所述图像块读入所述高速缓存器中。
- 根据权利要求25所述的视频编/解码器,其中,确定要读入的图像块已经存在于所述高速缓存器中时,放弃将所述图像块读入所述高速缓存器中。
- 根据权利要求25所述的视频编/解码器,其中,以当前图像中的每N行图像块为一个周期,在一个周期内的前M个图像块进行帧间编/解码之后,开始执行所述根据带宽使用消耗调整待读入视频编/解码器的高速缓存器的数据量,其中,N和M为正整数。
- 根据权利要求33所述的视频编/解码器,其中,所述N=1。
- 根据权利要求33所述的视频编/解码器,其中,所述N行图像块为N行编/解码树单元。
- 根据权利要求25所述的视频编/解码器,其中,还包括:在所述根据带宽使用消耗调整待读入所述高速缓存器的数据量之前:计算对当前图像中在当前编/解码块之前的一个或多个图像块执行高速缓存器读取时发生的高速缓存器缺失的总数量;以及至少基于所述高速缓存器缺失的总数量确定带宽使用消耗。
- 根据权利要求36所述的视频编/解码器,其中,如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在所述搜索范围中执行高速缓存器读取。
- 根据权利要求37所述的视频编/解码器,其中,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第二读取比例在所述搜索范围中执行高速缓存器读取,所述第二读取比例比例大于所述第一读取比例。
- 根据权利要求38所述的视频编/解码器,其中,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则对所述搜索范围中执行高速缓存器读取。
- 根据权利要求26所述的视频编/解码器,其中,所述目标图像块对应的搜索范围包括一个或更多个搜索范围和/或一个或更多个子搜索范围。
- 根据权利要求40所述的视频编/解码器,其中,每一个子搜索范围是在相对应的一个搜索范围中定义的。
- 根据权利要求36所述的视频编/解码器,所述方法还包括:基于所述高速缓存器缺失的总数量以及待读取的至少两个搜索范围的优先级,从所述待读取的至少两个搜索范围中确定待读入所述高速缓存器的搜索范围或者子搜索范围。
- 根据权利要求42所述的视频编/解码器,其中,所述搜索范围具有不同的优先级,并且按照优先级从高到低的顺序来选择所述参考帧中的搜索范围或所述搜索范围中的子搜索范围。
- 根据权利要求42所述的视频编/解码器,其中,所述至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级高于第二搜索范围的优先级;如果所述高速缓存器缺失的总数量大于第一阈值,则将第一搜索范围的一部分读入所述高速缓存器;和/或,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则将所述第一搜索范围读入所述高速缓存器;和/或,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则确定在第一搜索范围和第二搜索范围中执行高速缓存器读取。
- 根据权利要求42所述的视频编/解码器,其中,所述至少两个搜索范围包括第一搜索范围和第二搜索范围,第一搜索范围的优先级与第二搜索范围的优先级相同;如果所述高速缓存器缺失的总数量大于第一阈值,则按第一读取比例在第一搜索范围中执行高速缓存器读取,以及按第二读取比例在第二搜索范围中执行高速缓存器读取;和/或,如果所述高速缓存器缺失的总数量小于或等于第一阈值并且大于第二阈值,则按第三读取比例在第一搜索范围中执行高速缓存器读取,以及按第四读取比例在第二搜索范围中执行高速缓存器读取,其中,所述第三读取比例大于所述第一读取比例,所述第四读取比例大于所述第二读取比例;和/或,如果所述高速缓存器缺失的总数量小于或等于第二阈值,则将所述第一搜索范围和所述第二搜索范围读入所述高速缓存器。
- 根据权利要求25-45中任意一项所述的视频编/解码器,还包括:基于所述当前图像块之前的一个或更多个图像块的压缩率来确定对所述当前图像块执行高速缓存器读取时的实际搜索范围。
- 根据权利要求46所述的视频编/解码器,其中,将针对每一个图像块执行读取时发生的高速缓存器缺失数量与该图像块的压缩率相乘,并对乘积结果求和以得到所述高速缓存器缺失的总数量。
- 根据权利要求25所述的视频编/解码器,其中,所述目标图像块为所述当前图像中在当前编/解码块之后进行编/解码的图像块。
- 一种无人机,包括根据权利要求25-48中任意一项所述的视频编/解码器。
- 一种计算机程序,包括指令,所述指令用于在一个或更多个处理器上运行时执行根据权利要求1-24中任意一项所述的方法。
- 一种计算机可读存储介质,存储有根据权利要求50所述的计算机 程序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201880042827.5A CN110945872A (zh) | 2018-08-01 | 2018-08-01 | 视频处理设备和方法 |
PCT/CN2018/098044 WO2020024152A1 (zh) | 2018-08-01 | 2018-08-01 | 视频处理设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/098044 WO2020024152A1 (zh) | 2018-08-01 | 2018-08-01 | 视频处理设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020024152A1 true WO2020024152A1 (zh) | 2020-02-06 |
Family
ID=69230795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/098044 WO2020024152A1 (zh) | 2018-08-01 | 2018-08-01 | 视频处理设备和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110945872A (zh) |
WO (1) | WO2020024152A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022206217A1 (zh) * | 2021-04-01 | 2022-10-06 | Oppo广东移动通信有限公司 | 在视频编码装置中进行图像处理的方法、装置、介质及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663899A (zh) * | 2007-04-26 | 2010-03-03 | 松下电器产业株式会社 | 运动检测装置、运动检测方法、以及运动检测程序 |
CN103763555A (zh) * | 2014-01-19 | 2014-04-30 | 林雁 | 一种减少存储带宽需求的运动估计方法 |
CN105376586A (zh) * | 2015-11-17 | 2016-03-02 | 复旦大学 | 一种适用于hevc标准中整数运动估计的三级流水线硬件架构 |
CN107615765A (zh) * | 2015-06-03 | 2018-01-19 | 联发科技股份有限公司 | 视频编解码***中在帧内块复制模式和帧间预测模式之间的资源共享的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257628B (zh) * | 2008-03-20 | 2010-06-02 | 武汉大学 | 一种实现视频码流帧率可调整的压缩方法 |
JP5012647B2 (ja) * | 2008-04-30 | 2012-08-29 | ソニー株式会社 | 画像処理装置およびその方法、並びにプログラム |
CN101272497B (zh) * | 2008-05-07 | 2011-06-08 | 北京数码视讯科技股份有限公司 | 一种视频编码方法 |
CN102647586B (zh) * | 2011-02-16 | 2015-07-08 | 富士通株式会社 | 用在视频编码***中的码率控制方法和装置 |
-
2018
- 2018-08-01 CN CN201880042827.5A patent/CN110945872A/zh active Pending
- 2018-08-01 WO PCT/CN2018/098044 patent/WO2020024152A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663899A (zh) * | 2007-04-26 | 2010-03-03 | 松下电器产业株式会社 | 运动检测装置、运动检测方法、以及运动检测程序 |
CN103763555A (zh) * | 2014-01-19 | 2014-04-30 | 林雁 | 一种减少存储带宽需求的运动估计方法 |
CN107615765A (zh) * | 2015-06-03 | 2018-01-19 | 联发科技股份有限公司 | 视频编解码***中在帧内块复制模式和帧间预测模式之间的资源共享的方法和装置 |
CN105376586A (zh) * | 2015-11-17 | 2016-03-02 | 复旦大学 | 一种适用于hevc标准中整数运动估计的三级流水线硬件架构 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022206217A1 (zh) * | 2021-04-01 | 2022-10-06 | Oppo广东移动通信有限公司 | 在视频编码装置中进行图像处理的方法、装置、介质及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110945872A (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9351003B2 (en) | Context re-mapping in CABAC encoder | |
KR100952861B1 (ko) | 디지털 비디오 데이터 처리 | |
US9224187B2 (en) | Wavefront order to scan order synchronization | |
US7965773B1 (en) | Macroblock cache | |
KR102274747B1 (ko) | 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템 | |
US11223838B2 (en) | AI-assisted programmable hardware video codec | |
KR102365685B1 (ko) | 인코더의 작동 방법과 상기 인코더를 포함하는 장치들 | |
TW201914302A (zh) | 視訊編碼設備 | |
TWI637631B (zh) | 影像處理裝置、影視子系統與影視處理電路 | |
US11470327B2 (en) | Scene aware video content encoding | |
TWI816684B (zh) | 視訊編碼器件以及編碼器 | |
KR102212762B1 (ko) | 코덱과 이를 포함하는 장치들 | |
TWI791578B (zh) | 視訊編碼裝置 | |
US8963809B1 (en) | High performance caching for motion compensated video decoder | |
WO2020024152A1 (zh) | 视频处理设备和方法 | |
US10009617B2 (en) | Method of operating encoder and method of operating system on chip including the encoder | |
US9363524B2 (en) | Method and apparatus for motion compensation reference data caching | |
US20150092841A1 (en) | Method and Apparatus for Multi-core Video Decoder | |
KR20170007665A (ko) | 스킵 모드 정보를 이용한 레이트 조절 인코딩 방법 및 그에 따른 인코딩 장치 | |
TW201918069A (zh) | 多重編碼器及多重編碼器編碼系統 | |
US20130278775A1 (en) | Multiple Stream Processing for Video Analytics and Encoding | |
US6873735B1 (en) | System for improved efficiency in motion compensated video processing and method thereof | |
WO2020024160A1 (zh) | 视频处理设备和方法 | |
US20200192671A1 (en) | Device and method for cache utilization aware data compression | |
US20090201989A1 (en) | Systems and Methods to Optimize Entropy Decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18928511 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18928511 Country of ref document: EP Kind code of ref document: A1 |