RU2481727C2 - Advanced interpolation techniques for motion compensation in video coding - Google Patents

Advanced interpolation techniques for motion compensation in video coding Download PDF

Info

Publication number
RU2481727C2
RU2481727C2 RU2010145537A RU2010145537A RU2481727C2 RU 2481727 C2 RU2481727 C2 RU 2481727C2 RU 2010145537 A RU2010145537 A RU 2010145537A RU 2010145537 A RU2010145537 A RU 2010145537A RU 2481727 C2 RU2481727 C2 RU 2481727C2
Authority
RU
Russia
Prior art keywords
pixel values
pixel
video
quarter
values
Prior art date
Application number
RU2010145537A
Other languages
Russian (ru)
Other versions
RU2010145537A (en
Inventor
Янь Е
Пэйсун ЧЭНЬ
Марта КАРЧЕВИЧ
Original Assignee
Квэлкомм Инкорпорейтед
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
Priority claimed from US12/420,256 external-priority patent/US8971412B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2010145537A publication Critical patent/RU2010145537A/en
Application granted granted Critical
Publication of RU2481727C2 publication Critical patent/RU2481727C2/en

Links

Images

Abstract

FIELD: radio engineering, communication.
SUBSTANCE: encoder interpolates pixel values of reference video data based on a plurality of different predefined interpolation filters. The decoder receives a syntax element which identifies an interpolation filter, and interpolates pixel values of reference video data based on the interpolation filter identified by the syntax element. In another example, a method of interpolating predictive video data includes generating half-pixel values based on integer pixel values, rounding the half-pixel values to generate half-pixel interpolated values, storing the half-pixel values as non-rounded versions of the half-pixel values and generating quarter-pixel values based on the non-rounded versions of the half-pixel values and the integer pixel values.
EFFECT: interpolation technique which is executable by an encoder and a decoder during the motion compensation process of video coding.
26 cl, 11 dwg, 8 tbl

Description

Данная заявка притязает на приоритет предварительной заявки на патент (США) 61/044023, поданной 10 апреля 2008 года, предварительной заявки на патент (США) 61/044240, поданной 11 апреля 2008 года, и предварительной заявки на патент (США) номер 61/057373, поданной 30 мая 2008 года, все содержимое которых содержится в данном документе по ссылке.This application claims the priority of provisional patent application (US) 61/044023, filed April 10, 2008, provisional patent application (US) 61/044240, filed April 11, 2008, and provisional patent application (US) number 61 / 057373, filed May 30, 2008, the entire contents of which are contained in this document by reference.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF THE INVENTION

Данное раскрытие сущности относится к кодированию цифрового видео, а более конкретно, к дробным интерполяциям прогнозирующих данных, используемым при кодировании видео.This disclosure relates to digital video coding, and more specifically to fractional prediction data interpolations used in video coding.

УРОВЕНЬ ТЕХНИКИBACKGROUND

Возможности цифрового видео могут быть встроены в широкий диапазон устройств, в том числе в цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, консоли видеоигр, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видеоизображения, как MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), чтобы более эффективно передавать и принимать цифровую видеоинформацию. Технологии сжатия видео могут выполнять пространственное прогнозирование и/или временное прогнозирование, чтобы уменьшать или удалять избыточность, внутренне присутствующую в видеопоследовательностях.Digital video capabilities can be embedded in a wide range of devices, including digital TVs, digital direct broadcast systems, wireless broadcasting systems, personal digital devices (PDAs), portable or desktop computers, digital cameras, digital recording devices, video game devices, video game consoles, cellular or satellite radiotelephones, etc. Digital video devices implement video compression technologies such as MPEG-2, MPEG-4, or ITU-T H.264 / MPEG-4, part 10, advanced video coding (AVC) to more efficiently transmit and receive digital video information. Video compression technologies may perform spatial prediction and / or temporal prediction to reduce or remove redundancy internally present in video sequences.

Взаимное кодирование на основе блоков является очень полезной технологией кодирования, которая основана на временном прогнозировании для того, чтобы уменьшать или удалять временную избыточность между видеоблоками последовательных кодированных единиц видеопоследовательности. Кодированные единицы могут содержать видеокадры, серии последовательных макроблоков видеокадров, группы изображений или другую заданную единицу видеоблоков. Для взаимного кодирования видеокодер выполняет оценку движения для того, чтобы отслеживать перемещение соответствующих видеоблоков между двумя или более смежных кодированных единиц. Оценка движения формирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих прогнозных видеоблоков в одном или более опорных кадров или других кодированных единиц. Компенсация движения использует векторы движения, чтобы формировать прогнозные видеоблоки из опорного кадра или другой кодированной единицы. После компенсации движения остаточные видеоблоки формируются посредством вычитания прогнозных видеоблоков из кодируемых исходных видеоблоков.Block-based cross-coding is a very useful coding technology that is based on temporal prediction in order to reduce or remove temporal redundancy between video blocks of consecutive coded units of a video sequence. Coded units may comprise video frames, a series of consecutive macroblocks of video frames, image groups, or another specified unit of video blocks. For inter-coding, the video encoder performs motion estimation in order to track the movement of respective video blocks between two or more adjacent coded units. The motion estimation generates motion vectors that indicate the displacement of the video blocks relative to the corresponding predicted video blocks in one or more reference frames or other coded units. Motion compensation uses motion vectors to form predictive video blocks from a reference frame or other coded unit. After motion compensation, residual video blocks are formed by subtracting the predicted video blocks from the encoded source video blocks.

Видеокодер также может применять процессы преобразования, квантования и энтропийного кодирования для того, чтобы дополнительно уменьшать скорость передачи битов, ассоциированную с передачей остаточных блоков. Технологии преобразования могут содержать дискретные косинусные преобразования (DCT) или концептуально аналогичные процессы. Альтернативно, вейвлет-преобразования, целочисленные преобразования или другие типы преобразований могут использоваться. В процессе DCT в качестве примера набор пиксельных значений преобразуется в коэффициенты преобразования, которые могут представлять энергию пиксельных значений в частотном домене. Квантование применяется к коэффициентам преобразования и, в общем, заключает в себе процесс, который ограничивает число битов, ассоциированных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или более процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования. Примеры энтропийного кодирования включают в себя, но не только, контекстно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).The video encoder may also apply transform, quantization, and entropy coding processes to further reduce the bit rate associated with the transmission of residual blocks. Transformation technologies may include discrete cosine transforms (DCT) or conceptually similar processes. Alternatively, wavelet transforms, integer transforms, or other types of transforms may be used. In the DCT process, as an example, a set of pixel values is converted into transform coefficients, which can represent the energy of the pixel values in the frequency domain. Quantization is applied to transform coefficients and, in general, encompasses a process that limits the number of bits associated with any given transform coefficient. Entropy coding comprises one or more processes that together compress a sequence of quantized transform coefficients. Examples of entropy coding include, but are not limited to, context-adaptive variable-length coding (CAVLC) and context-adaptive binary arithmetic coding (CABAC).

Кодированный видеоблок может представляться посредством информации прогнозирования, которая может использоваться для того, чтобы создавать или идентифицировать прогнозный блок и остаточный блок данных, указывающий разности между кодируемым блоком и прогнозным блоком. Информация прогнозирования может содержать один или более векторов движения, которые используются для того, чтобы идентифицировать прогнозный блок данных. С учетом векторов движения декодер может восстанавливать прогнозные блоки, которые использованы для того, чтобы кодировать остаток. Таким образом, с учетом набора остаточных блоков и набора векторов движения (и, возможно, некоторого дополнительного синтаксиса) декодер может иметь возможность восстанавливать видеокадр, который первоначально кодирован. Взаимное кодирование на основе оценки движения и компенсации движения позволяет достигать очень хорошего сжатия, поскольку последовательные видеокадры или другие типы кодированных единиц зачастую являются в значительной степени аналогичными. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения и, возможно, другие типы синтаксиса.An encoded video block may be represented by prediction information that can be used to create or identify a prediction block and a residual data block indicating differences between the encoded block and the prediction block. The prediction information may comprise one or more motion vectors that are used to identify the predictive data block. Given the motion vectors, the decoder can reconstruct the prediction blocks that are used to encode the remainder. Thus, given the set of residual blocks and the set of motion vectors (and possibly some additional syntax), the decoder may be able to recover the video frame that was originally encoded. Mutual coding based on motion estimation and motion compensation makes it possible to achieve very good compression, since sequential video frames or other types of coded units are often pretty much the same. An encoded video sequence may contain blocks of residual data, motion vectors, and possibly other types of syntax.

Технологии интерполяции разработаны, чтобы повышать уровень сжатия, который может достигаться при взаимном кодировании. В этом случае прогнозирующие данные, сформированные в ходе компенсации движения, которая используется для того, чтобы кодировать видеоблок, могут быть интерполированы из пикселов видеоблоков видеокадра или другой кодированной единицы, используемой при оценке движения. Интерполяция зачастую выполняется для того, чтобы формировать прогнозирующие полупиксельные значения (в половину пиксела) и прогнозирующие четвертьпиксельные значения (в четверть пиксела). Такая интерполяция зачастую формирует прогнозные блоки, которые являются даже в большей степени аналогичными кодируемым видеоблокам, чем фактическим видеоблокам прогнозирующего кадра или другой кодированной единицы, используемой при кодировании видео.Interpolation technologies are designed to increase the level of compression that can be achieved with cross-coding. In this case, the predictive data generated during the motion compensation, which is used to encode the video block, can be interpolated from the pixels of the video blocks of the video frame or other coded unit used in the motion estimation. Interpolation is often performed in order to generate predictive half-pixel values (at half a pixel) and predictive quarter-pixel values (at a quarter of a pixel). Such interpolation often forms predictive blocks, which are even more similar to the encoded video blocks than the actual video blocks of the predictive frame or other coded unit used in video encoding.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

В общем, это раскрытие сущности описывает технологии интерполяции, выполняемые посредством кодера и декодера в ходе процесса компенсации движения кодирования видео. Согласно технологиям этого раскрытия сущности, кодер может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных. Интерполированные прогнозирующие данные, которые достигают наивысших уровней сжатия, могут выбираться, и интерполяционный фильтр, который использован, может кодироваться как синтаксис и передаваться в устройство декодирования как часть кодированных видеоданных. Интерполяционный фильтр может быть задан один раз в расчете на прогнозирующую единицу (к примеру, один раз в расчете на прогнозный кадр) или может быть задан на основе блоков (к примеру, различная фильтрация может применяться к различным видеоблокам в рамках прогнозирующей единицы). Альтернативно, интерполяционный фильтр может быть задан на основе выборок или может быть задан на основе подвыборок.In general, this disclosure describes interpolation techniques performed by an encoder and a decoder during a video encoding motion compensation process. According to the techniques of this disclosure, an encoder may apply a plurality of predetermined interpolation filters to generate a plurality of different interpolated prediction data. Interpolated predictive data that reaches the highest levels of compression can be selected, and the interpolation filter that is used can be encoded as syntax and transmitted to the decoding device as part of the encoded video data. An interpolation filter can be set once per predictive unit (for example, once per predictive frame) or can be set based on blocks (for example, different filtering can be applied to different video blocks within a predictive unit). Alternatively, the interpolation filter may be specified based on samples or may be defined based on subsamples.

Декодер принимает кодированные видеоданные и может интерпретировать синтаксис, чтобы идентифицировать интерполяционный фильтр, который использован посредством кодера. Таким образом, декодер может идентифицировать и использовать идентичные интерполяционные фильтры в ходе процессов компенсации движения, которые использованы в ходе процесса кодирования. Посредством рассмотрения нескольких различных интерполяционных фильтров в кодере сжатие может улучшаться относительно технологий, которые имеют неперестраиваемый интерполяционный фильтр. Вместе с тем технологии могут быть значительно менее сложными, чем традиционная адаптивная интерполяционная фильтрация, которая адаптивно задает коэффициенты интерполяционной фильтрации как часть процесса кодирования. Различные интерполяционные фильтры, согласно некоторым аспектам этого раскрытия сущности, могут быть заранее заданы посредством реализации адаптивной интерполяционной фильтрации или других технологий для тестовых видеопоследовательностей, чтобы заранее задавать наборы коэффициентов интерполяционной фильтрации, которые с большой вероятностью приводят к хорошему сжатию. Альтернативно, различные числа коэффициентов фильтрации (различное число отводов) или различные типы фильтров, в общем, могут заранее задаваться и затем выбираться и использоваться в ходе процессов кодирования и декодирования.The decoder receives encoded video data and can interpret the syntax to identify the interpolation filter that is used by the encoder. Thus, the decoder can identify and use identical interpolation filters during the motion compensation processes that are used during the encoding process. By considering several different interpolation filters in an encoder, compression can be improved relative to technologies that have a non-tunable interpolation filter. However, technologies can be significantly less complex than traditional adaptive interpolation filtering, which adaptively sets interpolation filtering coefficients as part of the encoding process. Various interpolation filters, according to some aspects of this disclosure, can be predefined by implementing adaptive interpolation filtering or other technologies for test video sequences to pre-define sets of interpolation filter coefficients that are likely to lead to good compression. Alternatively, different numbers of filter coefficients (different numbers of taps) or different types of filters, in general, can be predefined and then selected and used during the encoding and decoding processes.

Помимо этого это раскрытие сущности также распознает неэффективность кодирования вследствие традиционного округления полупиксельных значений и предоставляет технологии, которые могут улучшать интерполяцию посредством уменьшения или исключения промежуточного округления. В этом случае интерполированные полупиксельные значения могут округляться в целях полупиксельной интерполяции. Четвертьпиксельные значения тем не менее, которые могут быть сформированы на основе одного или более интерполированных полупиксельных значений, могут основываться на неокругленных версиях полупиксельных значений. Это позволяет исключать распространение неточностей округления с полупиксельных значений до четвертьпиксельных значений. В некоторых случаях небольшое округление без снижения точности конечных значений может применяться к одному конкретному полупиксельному значению, чтобы обеспечивать то, что шестнадцатибитовые запоминающие элементы могут использоваться для того, чтобы сохранять все промежуточные значения полупикселов. В частности, когда пятнадцать возможных субпиксельных местоположений задаются для каждого пиксельного местоположения, одно из конкретных полупиксельных значений, возможно, должно быть сформировано на основе других полупиксельных значений (т.е. требуя двух уровней полупиксельной интерполяции), и это конкретное полупиксельное значение может требовать округления для того, чтобы обеспечивать то, что шестнадцатибитовые запоминающие элементы могут использоваться для того, чтобы сохранять все интерполированные значения.In addition, this disclosure also recognizes coding inefficiencies due to traditional half-pixel rounding and provides technologies that can improve interpolation by reducing or eliminating intermediate rounding. In this case, the interpolated half-pixel values may be rounded for the purpose of half-pixel interpolation. However, quarter-pixel values that can be generated based on one or more interpolated half-pixel values can be based on unrounded versions of half-pixel values. This eliminates the spread of rounding inaccuracies from half-pixel values to quarter-pixel values. In some cases, slight rounding without sacrificing the accuracy of the final values can be applied to one particular half-pixel value to ensure that sixteen-bit storage elements can be used to store all intermediate half-pixel values. In particular, when fifteen possible sub-pixel locations are specified for each pixel location, one of the specific half-pixel values may need to be generated based on the other half-pixel values (i.e., requiring two levels of half-pixel interpolation), and this particular half-pixel value may require rounding in order to ensure that sixteen-bit storage elements can be used to store all interpolated values.

В любом случае исключение задач промежуточного округления может осуществляться с помощью или без помощи реализации множества заранее заданных интерполяционных фильтров, как описано в данном документе. Например, исключение промежуточного округления может выполняться в контексте реализации, которая использует множество заранее заданных интерполяционных фильтров, как описано в данном документе. Альтернативно, исключение промежуточного округления может выполняться в контексте более традиционных интерполяций, к примеру, в контексте адаптивной интерполяционной фильтрации (AIF).In any case, the elimination of the tasks of intermediate rounding can be carried out with or without the help of implementing a plurality of predetermined interpolation filters, as described in this document. For example, the elimination of intermediate rounding may be performed in the context of an implementation that uses a plurality of predefined interpolation filters, as described herein. Alternatively, the elimination of intermediate rounding can be performed in the context of more traditional interpolations, for example, in the context of adaptive interpolation filtering (AIF).

В одном примере это раскрытие сущности предоставляет способ кодирования видеоданных. Способ содержит формирование прогнозирующих данных, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров. Способ также содержит кодирование видеоданных на основе прогнозирующих данных.In one example, this disclosure provides a method of encoding video data. The method comprises generating predictive data, and generating the predictive data includes interpolating pixel values of the reference video data based on a plurality of different predetermined interpolation filters. The method also comprises encoding video data based on predictive data.

В другом примере это раскрытие сущности предоставляет способ декодирования видеоданных. Способ декодирования содержит прием элемента синтаксиса, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров, формирование прогнозирующих данных, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса, и декодирование видеоданных на основе прогнозирующих данных.In another example, this disclosure provides a method for decoding video data. The decoding method comprises receiving a syntax element that identifies an interpolation filter from a plurality of different predetermined interpolation filters, generating predictive data, and generating the predictive data includes interpolating pixel values of the reference video data based on an interpolation filter identified by the syntax element and decoding the video data to Based on predictive data.

В другом примере это раскрытие сущности предоставляет способ интерполяции прогнозирующих видеоданных для кодирования видео. Способ содержит формирование полупиксельных значений на основе целопиксельных значений, округление полупиксельных значений, чтобы формировать полупиксельные интерполированные значения, сохранение полупиксельных значений как неокругленных версий полупиксельных значений и формирование четвертьпиксельных значений на основе неокругленных версий полупиксельных значений и целопиксельных значений.In another example, this disclosure provides a method for interpolating predictive video data for encoding a video. The method comprises generating half-pixel values based on integer-pixel values, rounding half-pixel values to generate half-pixel interpolated values, storing half-pixel values as unrounded versions of half-pixel values, and generating quarter-pixel values based on unrounded versions of half-pixel values and integer-pixel values.

В другом примере это раскрытие сущности предоставляет устройство, которое кодирует видеоданные, при этом устройство содержит видеокодер, который включает в себя модуль компенсации движения, который формирует прогнозирующие данные. Модуль компенсации движения интерполирует пиксельные значения опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров, и видеокодер кодирует видеоданные на основе прогнозирующих данных.In another example, this disclosure provides a device that encodes video data, the device comprising a video encoder that includes a motion compensation module that generates predictive data. The motion compensation module interpolates the pixel values of the reference video data based on a plurality of different predetermined interpolation filters, and the video encoder encodes the video data based on the predicted data.

В другом примере это раскрытие сущности предоставляет устройство, которое декодирует видеоданные, при этом устройство содержит видеодекодер, который включает в себя модуль компенсации движения. Видеодекодер принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров. Модуль компенсации движения формирует прогнозирующие данные, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. Видеодекодер затем декодирует видеоданные на основе прогнозирующих данных.In another example, this disclosure provides a device that decodes video data, the device comprising a video decoder that includes a motion compensation module. The video decoder receives a syntax element that identifies an interpolation filter from a plurality of different predetermined interpolation filters. The motion compensation module generates predictive data, while generating the predictive data includes interpolating the pixel values of the reference video data based on an interpolation filter identified by a syntax element. The video decoder then decodes the video data based on the predictive data.

В другом примере это раскрытие сущности предоставляет устройство, которое интерполирует прогнозирующие видеоданные для кодирования видео, при этом устройство включает в себя модуль компенсации движения, который формирует полупиксельные значения на основе целопиксельных значений, округляет полупиксельные значения, чтобы формировать полупиксельные интерполированные значения, сохраняет полупиксельные значения как неокругленные версии полупиксельных значений и формирует четвертьпиксельные значения на основе неокругленных версий полупиксельных значений и целопиксельных значений.In another example, this disclosure provides a device that interpolates predictive video data for encoding video, the device includes a motion compensation module that generates half-pixel values based on integer-pixel values, rounds half-pixel values to generate half-pixel interpolated values, stores half-pixel values as unrounded versions of half-pixel values and generates quarter-pixel values based on unrounded versions of olupixel values and integer-pixel values.

В другом примере это раскрытие сущности предоставляет устройство, которое кодирует видеоданные, при этом устройство содержит средство для формирования прогнозирующих данных, причем средство для формирования прогнозирующих данных включает в себя средство для интерполяции пиксельных значений опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров и средство для кодирования видеоданных на основе прогнозирующих данных.In another example, this disclosure provides a device that encodes video data, the device comprising means for generating predictive data, the means for generating predictive data including means for interpolating pixel values of the reference video data based on a plurality of different predetermined interpolation filters and means for encoding video data based on predictive data.

В другом примере это раскрытие сущности предоставляет устройство, которое декодирует видеоданные, при этом устройство содержит средство для приема элемента синтаксиса, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров, средство для формирования прогнозирующих данных, причем средство для формирования прогнозирующих данных включает в себя средство для интерполяции пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса, и средство для декодирования видеоданных на основе прогнозирующих данных.In another example, this disclosure provides a device that decodes video data, the device comprising means for receiving a syntax element that identifies an interpolation filter from a plurality of different predetermined interpolation filters, means for generating predictive data, the means for generating predictive data including means for interpolating pixel values of the reference video data based on an interpolation filter identified in the middle Twomey syntax element, and means for decoding the video data based on the predictive data.

В другом примере это раскрытие сущности предоставляет устройство, которое интерполирует прогнозирующие видеоданные для кодирования видео, при этом устройство содержит средство для формирования полупиксельных значений на основе целопиксельных значений, средство для округления полупиксельных значений, чтобы формировать полупиксельные интерполированные значения, средство для сохранения полупиксельных значений как неокругленных версий полупиксельных значений и средство для формирования четвертьпиксельных значений на основе неокругленных версий полупиксельных значений и целопиксельных значений.In another example, this disclosure provides a device that interpolates predictive video data for encoding video, the device comprising means for generating half-pixel values based on integer-pixel values, means for rounding half-pixel values to form half-pixel interpolated values, means for storing half-pixel values as non-rounded versions of half-pixel values and a means for generating quarter-pixel values based on neocr Glen versions of the half pixel values and tselopikselnyh values.

В другом примере это раскрытие сущности предоставляет устройство, которое кодирует видеоданные, при этом устройство содержит видеокодер, включающий в себя модуль компенсации движения, который формирует прогнозирующие данные посредством интерполяции пиксельных значений опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров и кодирует видеоданные на основе прогнозирующих данных, и беспроводное передающее устройство, которое передает видеоданные в другое устройство.In another example, this disclosure provides a device that encodes video data, the device comprising a video encoder including a motion compensation module that generates predictive data by interpolating pixel values of the reference video data based on a plurality of different predetermined interpolation filters and encodes video data based on the predictive data, and a wireless transmitter that transmits video data to another device.

В другом примере это раскрытие сущности предоставляет устройство, которое декодирует видеоданные, при этом устройство содержит беспроводное приемное устройство, которое принимает видеоданные, и видеодекодер, включающий в себя модуль компенсации движения, который принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров, формирует прогнозирующие данные, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса, и декодирует видеоданные на основе прогнозирующих данных.In another example, this disclosure provides a device that decodes video data, the device comprising a wireless receiver that receives video data, and a video decoder including a motion compensation module that receives a syntax element that identifies an interpolation filter from a plurality of different predetermined interpolation filters, generates predictive data, while the formation of predictive data includes the interpolation of pixel values PORN video data based on the interpolation filter identified by the syntax element, and decodes the video data based on predictive data.

В другом примере это раскрытие сущности предоставляет устройство, которое кодирует видеоданные, при этом устройство содержит видеокодер, включающий в себя модуль компенсации движения, который формирует полупиксельные значения на основе целопиксельных значений, округляет полупиксельные значения, чтобы формировать полупиксельные интерполированные значения, сохраняет полупиксельные значения как неокругленные версии полупиксельных значений и формирует четвертьпиксельные значения на основе неокругленных версий полупиксельных значений и целопиксельных значений, и беспроводное передающее устройство, которое передает видеоданные, кодированные посредством модуля компенсации движения, в другое устройство.In another example, this disclosure provides a device that encodes video data, the device comprising a video encoder including a motion compensation module that generates half-pixel values based on integer-pixel values, rounds half-pixel values to generate half-pixel interpolated values, and stores half-pixel values as non-rounded versions of half-pixel values and generates quarter-pixel values based on unrounded versions of half-pixel values values and integer-pixel values, and a wireless transmitter that transmits video encoded by the motion compensation module to another device.

В другом примере это раскрытие сущности предоставляет устройство, которое декодирует видеоданные, при этом устройство содержит беспроводное приемное устройство, которое принимает видеоданные, и видеодекодер, включающий в себя модуль компенсации движения, который декодирует видеоданные. При декодировании видеоданных модуль компенсации движения формирует полупиксельные значения на основе целопиксельных значений, округляет полупиксельные значения, чтобы формировать полупиксельные интерполированные значения, сохраняет полупиксельные значения как неокругленные версии полупиксельных значений и формирует четвертьпиксельные значения на основе неокругленных версий полупиксельных значений и целопиксельных значений.In another example, this disclosure provides a device that decodes video data, the device comprising a wireless receiver that receives video data, and a video decoder including a motion compensation module that decodes video data. When decoding video data, the motion compensation module generates half-pixel values based on integer-pixel values, rounds half-pixel values to generate half-pixel interpolated values, saves half-pixel values as unrounded versions of half-pixel values, and generates quarter-pixel values based on unrounded versions of half-pixel values and integer-pixel values.

Технологии, описанные в данном раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. Если реализованы в программном обеспечении, программное обеспечение может выполняться в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на машиночитаемом носителе и загружено и приведено в исполнение в процессоре.The technologies described in this disclosure may be implemented in hardware, software, firmware, or any combination of the above. If implemented in software, the software may run on one or more processors, such as a microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), or digital signal processor (DSP). Software that implements technology can be initially stored on a machine-readable medium and downloaded and executed on a processor.

Соответственно, это раскрытие сущности также рассматривает машиночитаемый носитель хранения данных, содержащий инструкции, которые при выполнении инструктируют устройству кодировать видеоданные, при этом инструкции инструктируют устройству формировать прогнозирующие данные, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров и кодирование видеоданных на основе прогнозирующих данных.Accordingly, this disclosure also considers a computer-readable storage medium containing instructions that, when executed, instruct the device to encode video data, while instructions instruct the device to generate predictive data, while generating predictive data includes interpolating pixel values of the reference video data based on a plurality of different advance preset interpolation filters and video coding based on predictive data.

Это раскрытие сущности также рассматривает машиночитаемый носитель хранения данных, содержащий инструкции, которые при выполнении инструктируют устройству декодировать видеоданные, при этом инструкции инструктируют устройству, при приеме элемента синтаксиса, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров, формировать прогнозирующие данные, при этом формирование прогнозирующих данных включает в себя интерполяцию пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса, и декодировать видеоданные на основе прогнозирующих данных.This disclosure also considers a computer-readable storage medium containing instructions that, when executed, instruct the device to decode video data, while the instructions instruct the device, upon receiving a syntax element that identifies an interpolation filter from a plurality of different predetermined interpolation filters, to generate predictive data, while generating predictive data includes interpolating the pixel values of the reference video data based on nterpolyatsionnogo filter identified by the syntax element, and decode the video data based on predictive data.

Помимо этого это раскрытие сущности также рассматривает машиночитаемый носитель хранения данных, содержащий инструкции, которые при выполнении инструктируют устройству интерполировать прогнозирующие видеоданные для кодирования видео, при этом инструкции инструктируют устройству формировать полупиксельные значения на основе целопиксельных значений, округлять полупиксельные значения, чтобы формировать полупиксельные интерполированные значения, сохранять полупиксельные значения как неокругленные версии полупиксельных значений и формировать четвертьпиксельные значения на основе неокругленных версий полупиксельных значений и целопиксельных значений.In addition, this disclosure also considers a computer-readable storage medium containing instructions that, when executed, instruct the device to interpolate predictive video data for video encoding, while instructions instruct the device to generate half-pixel values based on integer-pixel values, round off half-pixel values to form half-pixel interpolated values, save half-pixel values as unrounded versions of half-pixel values and generate quarter pixel values based on unrounded versions of half pixel values and integer pixel values.

Подробности одного или более вариантов осуществления данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества технологий, описанные в данном раскрытии сущности, должны становиться очевидными из описания и чертежей, а также из формулы изобретения.Details of one or more embodiments of this disclosure are set forth in the accompanying drawings and in the description below. Other features, objectives and advantages of the technologies described in this disclosure should be apparent from the description and drawings, as well as from the claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Фиг.1 является примерной блок-схемой, иллюстрирующей систему кодирования и декодирования видео.1 is an exemplary block diagram illustrating a video encoding and decoding system.

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера в соответствии с этим раскрытием сущности.2 is a block diagram illustrating an example of a video encoder in accordance with this disclosure.

Фиг.3 является блок-схемой, иллюстрирующей пример видеодекодера в соответствии с этим раскрытием сущности.3 is a block diagram illustrating an example of a video decoder in accordance with this disclosure.

Фиг.4A-4D являются концептуальными схемами, иллюстрирующими целочисленные пикселы и интерполированные пикселы, которые могут содержать пикселы прогнозных видеоблоков.4A-4D are conceptual diagrams illustrating integer pixels and interpolated pixels that may contain pixels of predictive video blocks.

Фиг.5-8 являются блок-схемами последовательности операций способа, иллюстрирующими технологии в соответствии с этим раскрытием сущности.5-8 are flowcharts illustrating techniques in accordance with this disclosure.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

Это раскрытие сущности описывает различные технологии интерполяции, выполняемые посредством кодера и декодера в ходе процесса компенсации движения кодирования видео. Согласно одному аспекту этого раскрытия сущности, кодер может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных. Интерполированные прогнозирующие данные, которые достигают наивысших уровней сжатия, могут выбираться в кодере, и интерполяционный фильтр, который использован, может кодироваться как синтаксис и передаваться в устройство декодирования как часть кодированных видеоданных. Интерполированные прогнозирующие данные содержат опорные данные. Видеоданные, которые должны кодироваться (к примеру, видеоблок), могут вычитаться из интерполированных прогнозирующих данных (к примеру, интерполированного прогнозирующего опорного блока), чтобы задавать остаточный блок кодированных данных, который затем может быть преобразован, квантован и энтропийно кодирован.This disclosure describes various interpolation techniques performed by an encoder and a decoder during a video encoding motion compensation process. According to one aspect of this disclosure, an encoder may apply a plurality of predetermined interpolation filters to generate a plurality of different interpolated prediction data. Interpolated predictive data that reaches the highest levels of compression can be selected in the encoder, and the interpolation filter that is used can be encoded as syntax and transmitted to the decoding device as part of the encoded video data. The interpolated predictive data contains reference data. The video data to be encoded (e.g., a video block) can be subtracted from the interpolated predictive data (e.g., an interpolated predictive reference block) to define a residual block of encoded data, which can then be transformed, quantized, and entropy encoded.

Интерполяционный фильтр может быть задан один раз в расчете на прогнозирующую единицу (к примеру, один раз в расчете на прогнозный кадр) или может быть задан на основе выборок (к примеру, различная фильтрация может применяться к различным видеоблокам или различным примерным местоположениям в рамках прогнозирующей единицы). Различные интерполяционные фильтры, например, могут быть заданы посредством различных наборов коэффициентов фильтрации, различных чисел коэффициентов фильтрации или, возможно, различных типов фильтров. В любом случае посредством предоставления множества заранее заданных интерполяционных фильтров интерполированные данные могут предусматривать улучшенное сжатие данных.An interpolation filter can be set once per predictive unit (for example, once per predictive frame) or can be set based on samples (for example, different filtering can be applied to different video blocks or different approximate locations within the predictive unit ) Different interpolation filters, for example, can be defined by different sets of filter coefficients, different numbers of filter coefficients, or possibly different types of filters. In any case, by providing a plurality of predetermined interpolation filters, the interpolated data may provide for improved data compression.

Декодер принимает кодированные видеоданные и может интерпретировать синтаксис, чтобы идентифицировать интерполяционный фильтр, который использован посредством кодера. Таким образом, декодер может идентифицировать и использовать интерполяционный фильтр в ходе своего процесса компенсации движения, который является идентичным фильтру, использованному в ходе процесса кодирования. С другой стороны, посредством рассмотрения нескольких различных интерполяционных фильтров в кодере сжатие может улучшаться относительно технологий, которые имеют один заданный интерполяционный фильтр. Вместе с тем технологии могут быть значительно менее сложными, чем традиционная адаптивная интерполяционная фильтрация, которая адаптивно задает интерполяционный фильтр (посредством выбора коэффициентов фильтрации) как часть процесса кодирования. В одном примере интерполяционные фильтры могут быть заранее заданы посредством реализации адаптивной интерполяционной фильтрации или других технологий для тестовых видеопоследовательностей, чтобы заранее задавать наборы коэффициентов интерполяционной фильтрации, которые с большой вероятностью приводят к хорошему сжатию.The decoder receives encoded video data and can interpret the syntax to identify the interpolation filter that is used by the encoder. In this way, the decoder can identify and use the interpolation filter during its motion compensation process, which is identical to the filter used during the encoding process. On the other hand, by considering several different interpolation filters in the encoder, compression can be improved with respect to technologies that have one predetermined interpolation filter. However, technologies can be significantly less complex than traditional adaptive interpolation filtering, which adaptively defines an interpolation filter (by selecting filter coefficients) as part of the encoding process. In one example, interpolation filters can be predefined by implementing adaptive interpolation filtering or other technologies for test video sequences to pre-define sets of interpolation filter coefficients that are likely to lead to good compression.

В другом аспекте этого раскрытия сущности описываются технологии интерполяции, которые исключают или значительно уменьшают промежуточное округление полупиксельных значений для четвертьпиксельной интерполяции. Технологии, которые исключают или значительно уменьшают промежуточное округление, могут использоваться с технологиями или без технологий, упомянутых выше, которые используют заранее заданные интерполяционные фильтры. Другими словами, технологии, которые исключают или значительно уменьшают промежуточное округление, могут использоваться во время интерполяции согласно одному или более заранее заданных интерполяционных фильтров, но также могут использоваться при интерполяции, которая использует неперестраиваемый интерполяционный фильтр, или, возможно, при технологиях адаптивных уточняющих интерполяций.In another aspect of this disclosure, interpolation techniques are described that eliminate or significantly reduce the intermediate rounding of half-pixel values for quarter-pixel interpolation. Technologies that eliminate or significantly reduce intermediate rounding can be used with or without the technologies mentioned above that use predefined interpolation filters. In other words, technologies that eliminate or significantly reduce intermediate rounding can be used during interpolation according to one or more predefined interpolation filters, but can also be used for interpolation that uses a non-tunable interpolation filter, or possibly adaptive refinement interpolation technologies.

Это раскрытие сущности распознает неэффективность кодирования, которая может возникать вследствие традиционного округления полупиксельных значений, и предлагает технологии, чтобы улучшать интерполяцию посредством исключения или уменьшения промежуточного округления. В этом случае интерполированные полупиксельные значения могут округляться в целях полупиксельной интерполяции. Четвертьпиксельные значения тем не менее, которые могут быть сформированы на основе одного или более интерполированных полупиксельных значений, могут основываться на неокругленных версиях полупиксельных значений. Это позволяет исключать распространение неточностей округления с полупиксельных значений до четвертьпиксельных значений. В некоторых случаях небольшое округление может применяться к некоторым из полупиксельных значений, чтобы обеспечивать то, что шестнадцатибитовая структура данных может использоваться для того, чтобы сохранять все промежуточные значения. В некоторых случаях влияние небольшого округления на конечную точность может быть нулевым посредством выполнения округления надлежащим образом. В любом случае исключение или уменьшение промежуточного округления может осуществляться с помощью или без помощи реализации множества заранее заданных интерполяционных фильтров, как описано в данном документе.This disclosure recognizes coding inefficiencies that may occur due to traditional rounding of half-pixel values, and proposes technologies to improve interpolation by eliminating or reducing intermediate rounding. In this case, the interpolated half-pixel values may be rounded for the purpose of half-pixel interpolation. However, quarter-pixel values that can be generated based on one or more interpolated half-pixel values can be based on unrounded versions of half-pixel values. This eliminates the spread of rounding inaccuracies from half-pixel values to quarter-pixel values. In some cases, slight rounding may be applied to some of the half-pixel values to ensure that a sixteen-bit data structure can be used to store all intermediate values. In some cases, the effect of small rounding on the final accuracy may be zero by properly rounding. In any case, the elimination or reduction of the intermediate rounding can be carried out with or without the help of implementing a plurality of predetermined interpolation filters, as described herein.

Фиг.1 является блок-схемой, иллюстрирующей одну примерную систему 10 кодирования и декодирования видео, которая может реализовывать технологии этого раскрытия сущности. Как показано на фиг.1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 16 через канал 15 связи. Исходное устройство 12 и целевое устройство 16 могут содержать любые из широкого диапазона устройств. В некоторых случаях исходное устройство 12 и целевое устройство 16 содержит устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 15 связи, когда канал 15 связи является беспроводным. Технологии этого раскрытия сущности тем не менее, которые касаются интерполяции с компенсацией движения, не обязательно ограничены беспроводными приложениями или настройками.1 is a block diagram illustrating one exemplary video encoding and decoding system 10 that may implement the techniques of this disclosure. As shown in FIG. 1, system 10 includes a source device 12 that transmits encoded video to a target device 16 via a communication channel 15. The source device 12 and the target device 16 may include any of a wide range of devices. In some cases, the source device 12 and the target device 16 comprise wireless communication devices, such as wireless portable telephones, so-called cellular or satellite radiotelephones, or any wireless devices that can transmit video information over communication channel 15 when communication channel 15 is wireless. The technologies of this disclosure, however, which relate to motion-compensated interpolation, are not necessarily limited to wireless applications or settings.

В примере по фиг.1 исходное устройство 12 может включать в себя видеоисточник 20, видеокодер 22, модулятор/демодулятор (модем) 23 и передающее устройство 24. Целевое устройство 16 может включать в себя приемное устройство 26, модем 27, видеодекодер 28 и отображающее устройство 30. В соответствии с этим раскрытием сущности, видеокодер 22 исходного устройства 12 может быть выполнен с возможностью применять одну или более технологий интерполяции как часть процесса кодирования видео. Аналогично, видеодекодер 28 целевого устройства 16 может быть выполнен с возможностью применять одну или более технологий интерполяции этого раскрытия сущности как часть процесса декодирования видео.In the example of FIG. 1, the source device 12 may include a video source 20, a video encoder 22, a modulator / demodulator (modem) 23, and a transmitting device 24. The target device 16 may include a receiving device 26, a modem 27, a video decoder 28, and a display device 30. According to this disclosure, video encoder 22 of source device 12 may be configured to apply one or more interpolation technologies as part of a video encoding process. Similarly, the video decoder 28 of the target device 16 may be configured to apply one or more interpolation technologies of this disclosure as part of the video decoding process.

Проиллюстрированная система 10 по фиг.1 является просто примерной. Технологии интерполяции этого раскрытия сущности могут выполняться посредством любого устройства кодирования, которое поддерживает интерполяцию с компенсацией движения до субпиксельного разрешения. Исходное устройство 12 и целевое устройство 16 являются просто примерами таких устройств кодирования. В этом случае исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 16. Устройства 12, 16 могут работать практически симметрично так, что каждое из устройств 12, 16 включает в себя компоненты кодирования и декодирования видео, к примеру, в комбинированном кодере-декодере (кодеке). Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 16, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.The illustrated system 10 of FIG. 1 is merely exemplary. The interpolation technologies of this disclosure may be performed by any encoding device that supports motion-compensated interpolation up to sub-pixel resolution. The source device 12 and the target device 16 are simply examples of such encoding devices. In this case, the source device 12 generates encoded video data for transmission to the target device 16. The devices 12, 16 can operate almost symmetrically so that each of the devices 12, 16 includes video encoding and decoding components, for example, in a combined encoder-decoder (codec). Therefore, the system 10 can support one-way and two-way video transmission between video devices 12, 16, for example, for video streaming, video playback, video broadcasting, or video telephony.

Видеоисточник 20 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 20 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого впрямую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточником 20 является видеокамера, исходное устройство 12 и целевое устройство 16 могут формировать так называемые камерофоны или видеофоны. В каждом случае захватываемое, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 22. Кодированная видеоинформация затем может модулироваться посредством модема 23 согласно стандарту связи, к примеру, такому как множественный доступ с кодовым разделением каналов (CDMA) или другой стандарт связи, и передаваться в целевое устройство 16 через передающее устройство 24. Модем 23 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, разработанные для модуляции сигналов. Для беспроводных приложений передающее устройство 24 может включать в себя схемы, разработанные для передачи данных, в том числе усилители, фильтры и одну или более антенн.The video source 20 of the source device 12 may include a video capture device, such as a video camera, a video archive containing previously captured video, or a video stream from a video content provider. As an additional alternative, video source 20 may generate computer-based data as a source video or a combination of direct-transmitted video, archived video, and machine-generated video. In some cases, if the video source 20 is a video camera, the source device 12 and the target device 16 can form so-called camera phones or video phones. In each case, the captured, pre-captured, or machine-generated video may be encoded by video encoder 22. The encoded video information may then be modulated by modem 23 according to a communication standard, such as, for example, code division multiple access (CDMA) or another communication standard, and transmitted to the target device 16 via the transmitting device 24. The modem 23 may include various mixers, filters, amplifiers, or other components designed to modulate the signal at. For wireless applications, transmitter 24 may include circuits designed for transmitting data, including amplifiers, filters, and one or more antennas.

Приемное устройство 26 целевого устройства 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. С другой стороны, процесс кодирования видео может реализовывать одну или более технологий, описанных в данном документе, чтобы улучшать интерполяцию в ходе компенсации движения. Процесс декодирования видео, выполняемый посредством видеодекодера 28, также может выполнять интерполяцию в ходе стадии компенсации движения процесса декодирования. Отображающее устройство 30 отображает декодированные видеоданные пользователю и может содержать любое из множества отображающих устройств, таких как электронно-лучевая трубка, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип отображающего устройства.The receiver 26 of the target device 16 receives information on channel 15, and the modem 27 demodulates the information. Alternatively, the video encoding process may implement one or more of the techniques described herein to improve interpolation during motion compensation. The video decoding process performed by the video decoder 28 can also perform interpolation during the motion compensation stage of the decoding process. The display device 30 displays the decoded video data to the user and may include any of a variety of display devices, such as a cathode ray tube, liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

В примере по фиг.1 канал 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 15 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16.In the example of FIG. 1, communication channel 15 may comprise any wireless and wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired media. Communication channel 15 may form part of a packet-switched network, such as a local area network, wide area network, or wide area network such as the Internet. Communication channel 15 generally represents any suitable communication medium or a set of different communication media for transmitting video data from source device 12 to target device 16.

Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Технологии этого раскрытия сущности тем не менее не ограничены каким-либо конкретным стандартом кодирования. Хотя не показано на фиг.1, в некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).Video encoder 22 and video decoder 28 may operate according to a video compression standard, such as ITU-T H.264, alternatively described as MPEG-4, part 10, advanced video encoding (AVC). The technologies of this disclosure are, however, not limited to any particular coding standard. Although not shown in FIG. 1, in some aspects, video encoder 22 and video decoder 28 may be integrated with an audio encoder and decoder, respectively, and may include appropriate multiplexer-demultiplexer modules or other hardware and software to process the encoding as audio video and in the general data stream or in separate data streams. If applicable, the multiplexer-demultiplexer modules may conform to the ITU H.223 multiplexer protocol or other protocols, such as user datagram protocol (UDP).

Стандарт ITU H.264/MPEG-4 (AVC) сформулирован экспертной группой в области кодирования видео (VCEG) ITU-T совместно с экспертной группой по киноизображению (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как объединенная группа по видеостандартам (JVT). В некоторых аспектах, технологии, описанные в этом раскрытии сущности, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" от исследовательской группы ITU-T и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC. Объединенная группа по видеостандартам (JVT) продолжает работать над дополнениями к H.264/MPEG-4 AVC.The ITU H.264 / MPEG-4 (AVC) standard is formulated by the ITU-T Video Coding Expertise Group (VCEG) ITU-T in conjunction with the ISO / IEC Motion Picture Expert Group (MPEG) as a joint partnership project known as the Joint Video Standards Group ( JVT). In some aspects, the techniques described in this disclosure may be applied to devices that, in general, comply with the H.264 standard. The H.264 standard is described in ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" from the ITU-T research group and is dated March 2005, which may be referred to in this document as the H.264 standard or the H.264 specification either a standard or an H.264 / AVC specification. The Joint Video Standards Group (JVT) continues to work on additions to the H.264 / MPEG-4 AVC.

Видеокодер 22 и видеодекодер 28 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодека в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п.Video encoder 22 and video decoder 28 can be implemented as one or more microprocessors, digital signal processors (DSPs), specialized integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination of of the foregoing. Each of video encoder 22 and video decoder 28 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined codec in a corresponding mobile device, subscriber device, broadcast device, server, and the like.

Видеопоследовательность типично включает в себя серии видеокадров. Видеокодер 22 оперирует с видеоблоками в рамках отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или изменяющийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает в себя серии последовательных макроблоков. Каждая серия последовательных макроблоков может включать в себя серии макроблоков, которые могут быть скомпонованы в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16х16, 8х8 или 4х4 для компонентов сигнала яркости и 8x8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16х16, 16х8, 8х16, 8х8, 8х4, 4х8 и 4х4 для компонентов сигнала яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Видеоблоки могут содержать блоки пиксельных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование или концептуально аналогичный процесс преобразования.A video sequence typically includes a series of video frames. Video encoder 22 operates with video blocks within separate video frames to encode video data. Video blocks may have a fixed or variable size and may vary in size according to a given coding standard. Each video frame includes a series of consecutive macroblocks. Each series of consecutive macroblocks may include a series of macroblocks that can be arranged in subunits. As an example, the ITU-T H.264 standard supports intra prediction for various block sizes, such as 16x16, 8x8 or 4x4 for luminance signal components and 8x8 for chroma signal components, as well as inter prediction for various block sizes, such as 16x16. 16x8, 8x16, 8x8, 8x4, 4x8 and 4x4 for luminance components and corresponding scaled sizes for chroma components. Video blocks may comprise blocks of pixel data or blocks of transform coefficients, for example, after a transform process, such as a discrete cosine transform or a conceptually similar transform process.

Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, макроблоки (MB) и различные субблоки могут считаться видеоблоками. Помимо этого серия последовательных макроблоков может считаться серией видеоблоков, таких как MB и/или субблоки. Каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра. Видеокодер 22 и видеодекодер 28 выполняют взаимное прогнозирующее кодирование, которое заключает в себе формирование прогнозирующих опорных данных и вычитание видеоблока, который должен быть кодирован, из прогнозирующих опорных данных, чтобы формировать остаточные данные, которые затем могут быть преобразованы, квантованы и энтропийно кодированы. Взаимное прогнозирующее кодирование может включать в себя интерполяцию прогнозирующих данных в соответствии с этим раскрытием сущности.Smaller video blocks can provide better resolution and can be used for video frame locations that include high levels of detail. In general, macroblocks (MBs) and various subblocks can be considered video blocks. In addition, a series of consecutive macroblocks can be considered a series of video blocks, such as MB and / or subunits. Each series of consecutive macroblocks can be an independently decoded video frame unit. Video encoder 22 and video decoder 28 perform mutual predictive coding, which involves generating predictive reference data and subtracting the video block to be encoded from predictive reference data to generate residual data, which can then be converted, quantized, and entropy encoded. Mutual predictive coding may include interpolation of predictive data in accordance with this disclosure.

После взаимного прогнозирующего кодирования (которое включает в себя технологии интерполяции этого раскрытия сущности) и после всех преобразований (к примеру, целочисленного преобразования 4x4 или 8x8, используемого в H.264/AVC, или дискретного косинусного преобразования, DCT), квантование может выполняться. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемый для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, 16-битовое значение может быть округлено в меньшую сторону до 15-битового значения во время квантования. После квантования энтропийное кодирование может выполняться, к примеру, согласно контекстно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC) или другой технологии энтропийного кодирования.After mutual predictive coding (which includes the interpolation technology of this disclosure) and after all transformations (for example, the integer 4x4 or 8x8 transform used in H.264 / AVC, or the discrete cosine transform, DCT), quantization can be performed. Quantization generally means a process in which coefficients are quantized to possibly reduce the amount of data used to represent the coefficients. The quantization process may reduce the bit depth associated with some or all of the coefficients. For example, a 16-bit value can be rounded down to a 15-bit value during quantization. After quantization, entropy coding can be performed, for example, according to context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), or other entropy coding technology.

Согласно технологиям этого раскрытия сущности, видеокодер 22 может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных. Интерполированные прогнозирующие данные, которые достигают наивысших уровней сжатия, могут выбираться посредством видеокодера 22, и интерполяционный фильтр, который использован для выбранных интерполированных прогнозирующих данных, может кодироваться как синтаксис и передаваться в целевое устройство 16 как часть кодированных видеоданных. В этом случае видеодекодер 28 принимает кодированные видеоданные и может интерпретировать синтаксис, чтобы идентифицировать интерполяционный фильтр, который использован посредством видеокодера 22. Соответственно, видеодекодер 28 может идентифицировать и использовать интерполяционный фильтр в ходе своего процесса декодирования с компенсацией движения, который является идентичным фильтру, использованному в ходе процесса кодирования. Различные заранее заданные интерполяционные фильтры могут содержать аналогичные фильтры с различными наборами коэффициентов фильтрации (отводами фильтра). Альтернативно, различные заранее заданные интерполяционные фильтры могут содержать фильтры, имеющие различные числа отводов фильтра или, возможно, различные типы конфигураций фильтра, в общем.According to the techniques of this disclosure, video encoder 22 may apply a plurality of predetermined interpolation filters to generate a plurality of different interpolated prediction data. Interpolated predictive data that reaches the highest compression levels can be selected by video encoder 22, and the interpolation filter that is used for the selected interpolated predictive data can be encoded as syntax and transmitted to the target device 16 as part of the encoded video data. In this case, the video decoder 28 receives the encoded video data and can interpret the syntax to identify the interpolation filter that is used by the video encoder 22. Accordingly, the video decoder 28 can identify and use the interpolation filter during its motion-compensated decoding process, which is identical to the filter used in during the coding process. Different predefined interpolation filters may contain similar filters with different sets of filter coefficients (filter taps). Alternatively, various predetermined interpolation filters may comprise filters having different numbers of filter taps or, possibly, different types of filter configurations in general.

Кроме того, согласно другому аспекту этого раскрытия сущности, видеокодер 22 и видеодекодер 28 могут применять технологии интерполяции, которые исключают или значительно уменьшают промежуточное округление полупиксельных значений для четвертьпиксельной интерполяции. В этом случае видеокодер 22 и видеодекодер 28 могут округлять интерполированные полупиксельные значения в целях полупиксельной интерполяции. Для четвертьпиксельной интерполяции тем не менее видеокодер 22 и видеодекодер 28 могут сохранять и использовать неокругленные версии полупиксельных значений, чтобы уменьшать или исключать распространение неточностей округления с полупиксельных значений до четвертьпиксельных значений. В некоторых случаях небольшое округление может применяться к одному конкретному полупиксельному значению, которое требует двух уровней интерполяции, чтобы обеспечивать то, что запоминающие элементы фиксированного размера (к примеру, шестнадцатибитовые регистры) могут использоваться для того, чтобы сохранять все промежуточные значения. В некоторых случаях влияние небольшого округления на конечную точность может задаваться нулевым посредством выполнения округления надлежащим образом, как описано в данном документе.In addition, according to another aspect of this disclosure, video encoder 22 and video decoder 28 may employ interpolation techniques that eliminate or significantly reduce the intermediate rounding of half-pixel values for quarter-pixel interpolation. In this case, video encoder 22 and video decoder 28 may round off interpolated half-pixel values for half-pixel interpolation. For quarter-pixel interpolation, however, video encoder 22 and video decoder 28 can save and use non-rounded versions of half-pixel values to reduce or eliminate the spread of rounding inaccuracies from half-pixel values to quarter-pixel values. In some cases, slight rounding can be applied to one particular half-pixel value, which requires two levels of interpolation to ensure that fixed-size storage elements (e.g., sixteen-bit registers) can be used to store all intermediate values. In some cases, the effect of small rounding on the final accuracy can be set to zero by properly rounding as described in this document.

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера 50, который может выполнять технологии интерполяции с компенсацией движения в соответствии с этим раскрытием сущности. Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Видеокодер 50 может выполнять внутреннее и взаимное кодирование блоков в рамках видеокадров, хотя внутреннее кодирование не проиллюстрировано. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как пространственный режим сжатия, а взаимные режимы, такие как режим прогнозирования (P-режим) или двунаправленный режим (режим B), могут упоминаться как временные режимы сжатия. Технологии этого раскрытия сущности типично могут применяться во время взаимного кодирования, и следовательно, модули внутреннего кодирования, к примеру, модуль пространственного прогнозирования, не проиллюстрированы на фиг.2 для простоты и удобства иллюстрации. Тем не менее технологии округления этого раскрытия сущности также могут быть применимыми к технологиям пространственного прогнозирования и внутреннего кодирования.FIG. 2 is a block diagram illustrating an example of a video encoder 50 that can perform motion compensation interpolation techniques in accordance with this disclosure. Video encoder 50 may correspond to video encoder 22 of device 20 or a video encoder of another device. Video encoder 50 may perform inter-coding and inter-coding of blocks within video frames, although inter-coding is not illustrated. Intra-coding is based on spatial prediction to reduce or remove spatial redundancy in a given video frame. Mutual coding is based on temporal prediction to reduce or remove temporal video redundancy in adjacent frames of a video sequence. The internal mode (I-mode) may be referred to as spatial compression mode, and mutual modes, such as the prediction mode (P-mode) or bidirectional mode (mode B), may be referred to as temporary compression modes. The techniques of this disclosure may typically be applied during inter-coding, and therefore, internal coding modules, for example, a spatial prediction module, are not illustrated in FIG. 2 for simplicity and convenience of illustration. However, the rounding technologies of this disclosure may also be applicable to spatial prediction and internal coding technologies.

Как показано на фиг.2, видеокодер 50 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по фиг.2 видеокодер 50 включает в себя модуль 32 оценки движения, модуль 35 компенсации движения, модуль 34 хранения опорных кадров, сумматор 48, модуль 38 преобразования, модуль 40 квантования и модуль 46 энтропийного кодирования. Для восстановления видеоблока видеокодер 50 также включает в себя модуль 42 обратного квантования, модуль 44 обратного преобразования и сумматор 51. Фильтр удаления блочности (не показан) также может быть включен, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 51.As shown in FIG. 2, video encoder 50 receives the current video block in a video frame to be encoded. In the example of FIG. 2, video encoder 50 includes a motion estimation module 32, a motion compensation module 35, a reference frame storage module 34, an adder 48, a transform module 38, a quantization module 40, and an entropy encoding module 46. To restore the video block, video encoder 50 also includes an inverse quantization module 42, an inverse transform module 44, and an adder 51. A deblocking filter (not shown) may also be included to filter block boundaries to remove blocking artifacts from the reconstructed video. If desired, the deblocking filter typically should filter the output of the adder 51.

В ходе процесса кодирования видеокодер 50 принимает видеоблок, который должен кодироваться, и модуль 32 оценки движения, и модуль 35 компенсации движения выполняют взаимное прогнозирующее кодирование. Модуль 32 оценки движения и модуль 35 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично считается процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в рамках прогнозирующего кадра (или другой кодированной единицы) относительно текущего блока, кодируемого в рамках текущего кадра (или другой кодированной единицы). Компенсация движения типично считается процессом выборки или формирования прогнозного блока на основе вектора движения, определенного посредством оценки движения. С другой стороны, модуль 32 оценки движения и модуль 35 компенсации движения могут быть функционально интегрированы. Технологии интерполяции, описанные в этом раскрытии сущности, описываются как выполняемые посредством модуля 35 компенсации движения. Тем не менее интерполяция может выполняться во время оценки движения, чтобы упрощать выбор наилучших векторов движения.During the encoding process, video encoder 50 receives a video block to be encoded, and motion estimation module 32 and motion compensation module 35 perform mutual predictive encoding. Motion estimation module 32 and motion compensation module 35 may have a high degree of integration, but are illustrated separately for conceptual purposes. Motion estimation is typically considered the process of generating motion vectors that evaluate motion for video blocks. The motion vector, for example, may indicate the offset of the prediction block within the prediction frame (or other coded unit) relative to the current block encoded within the current frame (or other coded unit). Motion compensation is typically considered a process of sampling or generating a prediction block based on a motion vector determined by motion estimation. On the other hand, motion estimation module 32 and motion compensation module 35 can be functionally integrated. The interpolation techniques described in this disclosure are described as being performed by the motion compensation module 35. However, interpolation can be performed during motion estimation to simplify the selection of the best motion vectors.

В соответствии с этим раскрытием сущности, оценка 32 движения выбирает соответствующий вектор движения для видеоблока, который должен быть кодирован, посредством сравнения видеоблока с видеоблоками прогнозирующей кодированной единицы (к примеру, предыдущего кадра). Здесь модуль 35 компенсации движения может выполнять интерполяцию, чтобы формировать прогнозирующие данные при субпиксельном разрешении. В некоторых случаях во время оценки движения интерполяция может быть основана на неперестраиваемом интерполяционном фильтре. В других случаях различные интерполяционные фильтры, применяемые в ходе компенсации движения (как указано ниже), также могут использоваться в ходе процесса оценки движения в целях выбора вектора движения.According to this disclosure, motion estimation 32 selects the corresponding motion vector for the video block to be encoded by comparing the video block with the video blocks of the predictive coded unit (e.g., the previous frame). Here, motion compensation module 35 may perform interpolation to generate predictive data at sub-pixel resolution. In some cases, during motion estimation, interpolation may be based on a non-tunable interpolation filter. In other cases, various interpolation filters used during motion compensation (as indicated below) can also be used during the motion estimation process to select a motion vector.

После того как модуль 32 оценки движения выбирает вектор движения для видеоблока, который должен кодироваться, модуль 35 компенсации движения формирует прогнозный видеоблок, ассоциированный с этим вектором движения. Согласно этому раскрытию сущности, тем не менее модуль 35 компенсации движения может рассматривать несколько версий любого прогнозного видеоблока, который имеет субпиксельное разрешение. В этом случае модуль 35 компенсации движения может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных для видеоблока, который должен кодироваться. Модуль 35 компенсации движения затем выбирает интерполированные прогнозирующие данные (к примеру, интерполированный видеоблок, ассоциированный с одним из интерполяционных фильтров), которые достигают наивысших уровней сжатия. Интерполяционный фильтр, который использован для того, чтобы формировать интерполированные данные, может кодироваться как синтаксис интерполяции и передаваться в модуль 46 энтропийного кодирования для включения в кодированный поток битов. После того как модуль 35 компенсации движения выбирает и применяет наилучший интерполяционный фильтр, модуль 35 компенсации движения формирует прогнозирующие данные с использованием этого интерполяционного фильтра, и видеокодер применяет сумматор 48, чтобы вычитать эти прогнозирующие данные из кодируемого видеоблока, чтобы формировать остаточные данные.After the motion estimation module 32 selects a motion vector for the video block to be encoded, the motion compensation module 35 generates a predictive video block associated with this motion vector. According to this disclosure, however, motion compensation module 35 may consider several versions of any predictive video block that has sub-pixel resolution. In this case, the motion compensation module 35 may apply a plurality of predetermined interpolation filters to generate a plurality of different interpolated prediction data for the video block to be encoded. Motion compensation module 35 then selects the interpolated prediction data (for example, the interpolated video block associated with one of the interpolation filters) that achieve the highest compression levels. An interpolation filter, which is used to generate interpolated data, can be encoded as interpolation syntax and transmitted to entropy encoding unit 46 for inclusion in the encoded bitstream. After the motion compensation module 35 selects and applies the best interpolation filter, the motion compensation module 35 generates predictive data using this interpolation filter, and the video encoder uses an adder 48 to subtract these predictive data from the encoded video block to generate residual data.

Кроме того, согласно другому аспекту этого раскрытия сущности, видеокодер 22 и видеодекодер 28 могут применять технологии интерполяции, которые исключают или значительно уменьшают промежуточное округление полупиксельных значений для четвертьпиксельной интерполяции. В этом случае видеокодер 22 и видеодекодер 28 могут округлять интерполированные полупиксельные значения в целях полупиксельной интерполяции. Для четвертьпиксельной интерполяции тем не менее видеокодер 22 и видеодекодер 28 могут сохранять и использовать неокругленные версии полупиксельных значений, чтобы уменьшать или исключать распространение неточностей округления с полупиксельных значений до четвертьпиксельных значений. В некоторых случаях небольшое округление может применяться к одному конкретному полупиксельному значению, которое требует двух уровней интерполяции, чтобы обеспечивать то, что запоминающие элементы фиксированного размера (к примеру, 16-битовые регистры) могут использоваться для того, чтобы сохранять все промежуточные значения.In addition, according to another aspect of this disclosure, video encoder 22 and video decoder 28 may employ interpolation techniques that eliminate or significantly reduce the intermediate rounding of half-pixel values for quarter-pixel interpolation. In this case, video encoder 22 and video decoder 28 may round off interpolated half-pixel values for half-pixel interpolation. For quarter-pixel interpolation, however, video encoder 22 and video decoder 28 can save and use non-rounded versions of half-pixel values to reduce or eliminate the spread of rounding inaccuracies from half-pixel values to quarter-pixel values. In some cases, a slight rounding can be applied to one particular half-pixel value, which requires two levels of interpolation to ensure that fixed-size storage elements (e.g. 16-bit registers) can be used to store all intermediate values.

Как отмечается, после того как модуль 35 компенсации движения формирует прогнозирующие данные (к примеру, интерполированный прогнозный видеоблок), видеокодер 50 формирует остаточный видеоблок посредством вычитания прогнозирующих данных из кодируемого исходного видеоблока. Сумматор 48 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Модуль 38 преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае модуль 38 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пиксельного домена в частотный домен.As noted, after the motion compensation module 35 generates predictive data (for example, an interpolated predictive video block), video encoder 50 generates a residual video block by subtracting the predictive data from the encoded source video block. Adder 48 represents the component or components that perform this subtraction operation. The transform unit 38 applies a transform, such as a discrete cosine transform (DCT) or a conceptually similar transform, to the residual block, forming a video block containing residual block transform coefficients. Conversion module 38, for example, may perform other transformations defined by the H.264 standard, which are conceptually similar to DCTs. Wavelet transforms, integer transforms, subband transforms, or other types of transforms can also be used. In any case, the transform unit 38 applies the transform to the residual block, forming a block of residual transform coefficients. The conversion may convert the residual information from the pixel domain into the frequency domain.

Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, 16-битовое значение может быть округлено в меньшую сторону до 15-битового значения во время квантования. После квантования модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 46 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другую технологию энтропийного кодирования. После энтропийного кодирования посредством модуля 46 энтропийного кодирования кодированное видео может быть передано в другое устройство или заархивировано для последующей передачи или извлечения. Кодированный поток битов может включать в себя энтропийно кодированные остаточные блоки, векторы движения для таких блоков и другой синтаксис, в том числе синтаксис интерполяции, который идентифицирует интерполяционные фильтры, которые применены посредством модуля 35 компенсации движения.Quantization module 40 quantizes the residual transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. For example, a 16-bit value can be rounded down to a 15-bit value during quantization. After quantization, entropy encoding unit 46 entropy encodes the quantized transform coefficients. For example, entropy encoding unit 46 may perform variable length context adaptive encoding (CAVLC), context adaptive binary arithmetic encoding (CABAC), or other entropy encoding technology. After entropy encoding by means of entropy encoding unit 46, the encoded video can be transferred to another device or archived for subsequent transmission or retrieval. The encoded bitstream may include entropy encoded residual blocks, motion vectors for such blocks, and other syntax, including interpolation syntax, which identifies interpolation filters that are applied by motion compensation module 35.

Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельном домене, к примеру, для последующего использования в качестве опорного блока. Сумматор 51 прибавляет восстановленный остаточный блок к прогнозному блоку с компенсацией движения, сформированному посредством модуля 35 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в модуле 34 хранения опорных кадров. Восстановленный видеоблок может использоваться посредством модуля 32 оценки движения и модуля 35 компенсации движения в качестве опорного блока для того, чтобы взаимно кодировать блок в последующем видеокадре.The inverse quantization unit 42 and the inverse transform unit 44 apply inverse quantization and inverse transform, respectively, to restore the residual block in the pixel domain, for example, for subsequent use as a reference block. The adder 51 adds the reconstructed residual block to the motion compensation predicted block generated by the motion compensation unit 35 to form the reconstructed video block for storage in the reference frame storage unit 34. The reconstructed video block may be used by the motion estimation module 32 and the motion compensation module 35 as a reference block in order to mutually encode the block in a subsequent video frame.

Фиг.3 является блок-схемой, иллюстрирующей пример видеодекодера 60, который декодирует видеопоследовательность, которая кодирована описанным в данном документе способом. Видеодекодер 60 включает в себя модуль 55 компенсации движения, который выполняет технологии интерполяции этого раскрытия сущности для декодирования. В частности, на стороне декодирования, модуль 55 компенсации движения может принимать элемент синтаксиса от модуля 52 энтропийного декодирования, который идентифицирует интерполяционный фильтр из множества различных заранее заданных интерполяционных фильтров. Модуль 55 компенсации движения может формировать прогнозирующие данные, что включает в себя интерполяцию пиксельных значений опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. В частности, модуль 55 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых от модуля 52 энтропийного декодирования, и интерполяций, как задано посредством элемента синтаксиса (помеченного как синтаксис интерполяции на фиг.3). На основе этих интерполированных прогнозирующих данных видеоданные (к примеру, восстановленный остаточный видеоблок) могут быть декодированы.FIG. 3 is a block diagram illustrating an example of a video decoder 60 that decodes a video sequence that is encoded in the manner described herein. Video decoder 60 includes a motion compensation module 55 that performs interpolation techniques of this disclosure for decoding. In particular, on the decoding side, motion compensation module 55 may receive a syntax element from entropy decoding module 52, which identifies an interpolation filter from a plurality of different predetermined interpolation filters. Motion compensation module 55 may generate predictive data, which includes interpolating the pixel values of the reference video data based on an interpolation filter identified by a syntax element. In particular, motion compensation module 55 may generate predictive data based on motion vectors received from entropy decoding module 52 and interpolations as specified by a syntax element (labeled as interpolation syntax in FIG. 3). Based on these interpolated predictive data, video data (e.g., reconstructed residual video block) can be decoded.

Модуль 52 энтропийного декодирования энтропийно декодирует принимаемый поток битов, чтобы формировать квантованные коэффициенты и синтаксис (к примеру, синтаксис интерполяции и векторы движения, отправляемые в модуль 55 компенсации движения). Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Процесс обратного квантования может быть традиционным процессом, как задано посредством декодирования H.264. Модуль 58 обратного преобразования применяет обратное преобразование, к примеру, обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельном домене. Модуль 55 компенсации движения формирует блоки с компенсацией движения способом, описанным в данном документе, к примеру, включающим в себя интерполяцию на основе набора коэффициентов интерполяционной фильтрации, идентифицированного посредством элемента синтаксиса (т.е. синтаксиса интерполяции).Entropy decoding unit 52 entropy decodes the received bitstream to generate quantized coefficients and syntax (for example, interpolation syntax and motion vectors sent to motion compensation unit 55). The inverse quantization unit 56 inversely quantizes, i.e. quantizes block block coefficients. The inverse quantization process may be a conventional process as specified by H.264 decoding. The inverse transform unit 58 applies the inverse transform, for example, the inverse DCT or a conceptually similar inverse transform process, to the transform coefficients to form residual blocks in the pixel domain. Motion compensation module 55 generates motion compensation blocks in a manner described herein, for example, including interpolation based on a set of interpolation filtering coefficients identified by a syntax element (i.e., interpolation syntax).

Сумматор 64 декодирует остаточные блоки посредством суммирования остаточных блоков с соответствующими прогнозными блоками, сформированными посредством модуля 55 компенсации движения, чтобы формировать декодированные блоки. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в модуле 62 хранения опорных кадров, который является запоминающим элементом, который предоставляет опорные блоки для последующей компенсации движения и также формирует декодированное видео, чтобы возбуждать отображающее устройство (такое как устройство 30 по фиг.1).The adder 64 decodes the residual blocks by summing the residual blocks with the corresponding prediction blocks generated by the motion compensation unit 55 to form the decoded blocks. If desired, a deblocking filter can also be applied to filter decoded blocks to remove blocking artifacts. The decoded video blocks are then stored in a reference frame storage unit 62, which is a storage element that provides reference blocks for subsequent motion compensation and also generates decoded video to drive a display device (such as the device 30 of FIG. 1).

С другой стороны, технологии этого раскрытия сущности касаются интерполяции с компенсацией движения, в которой пиксельные значения прогнозных видеоблоков интерполируются до субпиксельного разрешения. Кодер использует технологии этого раскрытия сущности, чтобы идентифицировать требуемый интерполяционный фильтр из множества заранее заданных интерполяционных фильтров. Различные фильтры могут отличаться посредством различных наборов коэффициентов фильтрации, различного числа коэффициентов фильтрации или различных типов фильтров. Декодер интерпретирует элементы синтаксиса, отправляемые из кодера, чтобы идентифицировать идентичный требуемый набор коэффициентов интерполяционной фильтрации, используемый посредством кодера.On the other hand, the technologies of this disclosure relate to motion-compensated interpolation in which the pixel values of the predicted video blocks are interpolated to sub-pixel resolution. The encoder uses the techniques of this disclosure to identify a desired interpolation filter from a plurality of predetermined interpolation filters. Different filters may differ by different sets of filter coefficients, different numbers of filter coefficients, or different types of filters. The decoder interprets the syntax elements sent from the encoder to identify the identical desired set of interpolation filtering coefficients used by the encoder.

Фиг.4A-4D являются концептуальными схемами, иллюстрирующими целочисленные пикселы и интерполированные пикселы, которые могут содержать пикселы прогнозных видеоблоков. В концептуальной иллюстрации по фиг.4 различные прямоугольники представляют пикселы. Заглавные буквы (в прямоугольниках со сплошными линиями) представляют целопиксельные местоположения, при этом строчные буквы (в прямоугольниках с пунктирными линиями) представляют интерполированные пиксельные местоположения. Обозначенные буквами метки могут использоваться в данном документе, чтобы описывать пиксельные местоположения или пиксельные позиции, или могут упоминаться как пиксельные значения, ассоциированные с различными местоположениями. Пиксельные местоположения "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii" и "jj" являются полупиксельными местоположениями, используемыми в дробных интерполяциях различных дробных местоположений, ассоциированных с пиксельным местоположением "C3".4A-4D are conceptual diagrams illustrating integer pixels and interpolated pixels that may contain pixels of predictive video blocks. In the conceptual illustration of FIG. 4, various rectangles represent pixels. Uppercase letters (in rectangles with solid lines) represent integer-pixel locations, while lowercase letters (in rectangles with dashed lines) represent interpolated pixel locations. Letter marks may be used herein to describe pixel locations or pixel positions, or may be referred to as pixel values associated with different locations. The pixel locations "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii" and "jj" are half-pixel locations used in fractional interpolations of various fractional locations associated with the pixel location "C3".

Каждое пиксельное местоположение может иметь ассоциированные пятнадцать различных дробных местоположений, к примеру, в соответствии с интерполяциями, совместимыми со стандартом H.264/AVC ITU. В примере по фиг.4A-4D проиллюстрированы эти 15 различных дробных местоположений, ассоциированных с пикселом "C3". Для простоты и удобства иллюстрации большинство других дробных местоположений не показано (кроме упомянутых выше, которые используются для того, чтобы формировать одно или более из 15 различных дробных местоположений, ассоциированных с пикселом "C3").Each pixel location can have associated fifteen different fractional locations, for example, in accordance with interpolations compatible with the H.264 / AVC ITU standard. In the example of FIGS. 4A-4D, these 15 different fractional locations associated with the pixel “C3” are illustrated. For simplicity and convenience of illustration, most of the other fractional locations are not shown (except those mentioned above, which are used to form one or more of 15 different fractional locations associated with the pixel "C3").

В стандарте ITU H.264/AVC, чтобы получать сигналы яркости в полупиксельных позициях, типично используется 6-отводный фильтр Винера с коэффициентами [1, -5, 20, 20, -5, 1]. Затем, чтобы получать сигналы яркости в четвертьпиксельных местоположениях, используется билинейный фильтр. Билинейный фильтр также может использоваться при дробнопиксельной интерполяции для компонентов сигнала цветности, которые могут иметь точность вплоть до 1/8 пиксела в H.264/AVC.In the ITU H.264 / AVC standard, in order to receive luminance signals in half-pixel positions, a Wiener 6-tap filter with coefficients [1, -5, 20, 20, -5, 1] is typically used. Then, to obtain luminance signals at quarter-pixel locations, a bilinear filter is used. The bilinear filter can also be used in fractional pixel interpolation for color signal components that can have an accuracy of up to 1/8 pixel in H.264 / AVC.

Полупиксельные интерполяции пиксельных местоположений "b" и "h" демонстрируются на фиг.4B в горизонтальном и вертикальном направлениях, соответственно. В этом случае пиксельное местоположение "b" может быть интерполировано на основе целочисленных пикселов "C1", "C2", "C3", "C4", "C5" и "C6". Аналогично, пиксельное местоположение "h" может быть интерполировано на основе целочисленных пикселов "A3", "B3", "C3", "D3", "E3" и "F3". Различные интерполяционные фильтры (к примеру, различные наборы отводов фильтра) могут применяться, чтобы формировать различные интерполированные значения пиксельных местоположений "b" и "h", как описано в данном документе. На фиг.4B интерполированные пиксельные местоположения "b" и "h" показаны с помощью заштриховки, а целопиксельные местоположения "C1", "C2", "C3", "C4", "C5", "C6", "A3", "B3", "C3", "D3","E3" и "F3" показаны с помощью знаков "решетка".Half pixel interpolations of the pixel locations “b” and “h” are shown in FIG. 4B in the horizontal and vertical directions, respectively. In this case, the pixel location “b” can be interpolated based on the integer pixels “C1”, “C2”, “C3”, “C4”, “C5” and “C6”. Similarly, the pixel location “h” can be interpolated based on the integer pixels “A3”, “B3”, “C3”, “D3”, “E3” and “F3”. Different interpolation filters (for example, different sets of filter taps) can be used to generate different interpolated pixel locations "b" and "h", as described herein. 4B, the interpolated pixel locations “b” and “h” are shown by shading, and the integer pixel locations “C1”, “C2”, “C3”, “C4”, “C5”, “C6”, “A3”, “B3”, “C3”, “D3”, “E3” and “F3” are indicated by the signs “pound”.

Фиг.4C иллюстрирует один частный случай, который может требовать двух уровней интерполяции. В частности, пиксельное местоположение "j" является отличным от других полупиксельных местоположений, поскольку само пиксельное местоположение "j" интерполируется на основе других полупиксельных значений. Например, пиксельное местоположение "j" может быть интерполировано на основе полупиксельных интерполированных значений "cc", "dd", "h", "ee", "ff" и "gg" в горизонтальном направлении. Альтернативно, пиксельное местоположение "j" может быть интерполировано на основе полупиксельных интерполированных значений "aa", "bb", "b", "hh", "ii" и "jj" в вертикальном направлении. На фиг.4C интерполированное пиксельное местоположение "j" показано с помощью заштриховки, полупиксельные интерполированные значения "aa", "bb", "b", hh", "ii" и "jj" в вертикальном направлении показаны с помощью знаков "решетка" справа налево, а полупиксельные интерполированные значения "cc", "dd", "h", "ee", "ff" и "gg" показаны с помощью знаков "решетка" слева направо.Fig. 4C illustrates one particular case that may require two levels of interpolation. In particular, the pixel location “j” is different from other half-pixel locations, since the pixel location “j” itself is interpolated based on other half-pixel values. For example, the pixel location “j” can be interpolated based on the half-pixel interpolated values “cc”, “dd”, “h”, “ee”, “ff” and “gg” in the horizontal direction. Alternatively, the pixel location “j” can be interpolated based on the half-pixel interpolated values “aa”, “bb”, “b”, “hh”, “ii” and “jj” in the vertical direction. 4C, the interpolated pixel location "j" is shown by shading, the half-pixel interpolated values "aa", "bb", "b", hh "," ii "and" jj "in the vertical direction are shown by the signs" pound " from right to left, and the half-pixel interpolated values of "cc", "dd", "h", "ee", "ff" and "gg" are shown using the signs "pound" from left to right.

Фиг.4D иллюстрирует четвертьпиксельные местоположения "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" с помощью заштриховки и иллюстрирует целочисленно- и полупиксельные местоположения, используемые для такой четвертьпиксельной интерполяции (к примеру, "C3", "b", "C4", "h", "j", "ee", "D3", "hh" и "D4") с помощью знаков "решетка".FIG. 4D illustrates quarter pixel locations of “a,” “c,” “d,” “e,” “f,” “g,” “i,” “k,” “l,” “m,” “n,” and “o” by shading and illustrates integer- and half-pixel locations used for such quarter-pixel interpolation (for example, “C3”, “b”, “C4”, “h”, “j”, “ee”, “D3” , "hh" and "D4") using the pound signs.

После оценки движения наилучший вектор движения для данного видеоблока может быть идентифицирован, к примеру, возможно, с использованием модели искажения в зависимости от скорости передачи, чтобы балансировать скорость кодирования и качество. Затем прогнозный видеоблок формируется в ходе компенсации движения с использованием наилучшего вектора движения. Как описано выше, остаточный видеоблок формируется посредством вычитания прогнозного видеоблока из исходного видеоблока. Преобразование затем применяется к остаточному блоку, и коэффициенты преобразования квантуются и энтропийно кодируются, чтобы дополнительно уменьшать скорость передачи битов.After motion estimation, the best motion vector for a given video block can be identified, for example, possibly using a distortion model depending on the transmission speed, in order to balance the encoding speed and quality. Then the predictive video block is formed during motion compensation using the best motion vector. As described above, the residual video block is formed by subtracting the predicted video block from the original video block. The transform is then applied to the residual block, and the transform coefficients are quantized and entropy encoded to further reduce the bit rate.

С другой стороны, фиг.4A-4D показывают целопиксельные выборки (также называемые полнопиксельными) в сплошных прямоугольниках с заглавными буквами. Для любой данной целопиксельной выборки предусмотрено всего 15 субпиксельных позиций, которые показаны для целопиксельной выборки "C3" и помечены a-o на фиг.4A-4D. В H.264/AVC полупиксельные позиции "b", "h" и "j" могут вычисляться сначала с использованием одномерного 6-отводного фильтра Винера. Как отмечается, полупиксельная позиция "j" может требовать двух уровней этой интерполяции с использованием 6-отводной фильтрации. В этом случае для пиксельной позиции "j" интерполяционный фильтр применяется сначала в горизонтальном направлении и затем в вертикальном направлении, возможно, с промежуточным округлением значений интерполированного пиксела после интерполяции в одной размерности, чтобы обеспечивать то, что данные могут сохраняться в шестнадцатибитовых запоминающих элементах. Оставшиеся четвертьпиксельные позиции затем интерполируются через фильтрацию, которая использует билинейный фильтр и уже вычисленные полупиксельные выборки.On the other hand, figa-4D show integer-pixel samples (also called full-pixel) in solid rectangles with capital letters. For any given integer-pixel sampling, a total of 15 sub-pixel positions are provided, which are shown for the integer-pixel sampling “C3” and marked a-o in FIGS. 4A-4D. In H.264 / AVC, the half-pixel positions “b”, “h” and “j” can be calculated first using a one-dimensional Wiener 6-tap filter. As noted, the half-pixel position “j” may require two levels of this interpolation using 6-tap filtering. In this case, for the pixel position “j”, the interpolation filter is applied first in the horizontal direction and then in the vertical direction, possibly with an intermediate rounding of the values of the interpolated pixel after interpolation in one dimension to ensure that the data can be stored in sixteen-bit storage elements. The remaining quarter-pixel positions are then interpolated through filtering, which uses a bilinear filter and already calculated half-pixel samples.

Комитет ITU-T SG16/Q.6/VCEG (экспертная группа в области кодирования видео) исследует технологии кодирования, которые предлагают более высокую эффективность кодирования, чем H.264/AVC. Это исследование проводится в форуме KTA (ключевые технологические области). Одно из инструментальных средств кодирования, которые приспособлены в KTA, называется адаптивным интерполяционным фильтром (AIF). AIF предлагает большую эффективность кодирования по сравнению H.264/AVC, в частности, для видеопоследовательностей с высоким разрешением (к примеру, 720p). В AIF интерполяционный фильтр для каждой субпиксельной позиции аналитически вычисляется для каждого видеокадра посредством минимизации энергии ошибок прогнозирования. Аналитически извлеченные коэффициенты адаптивной фильтрации для каждого кадра затем прогнозируются, квантуются, кодируются и отправляются в потоке видеобитов.The ITU-T SG16 / Q.6 / VCEG (video coding expert group) is investigating coding technologies that offer higher coding efficiency than H.264 / AVC. This study is being conducted in the KTA Forum (Key Technology Areas). One of the coding tools that are adapted in the KTA is called adaptive interpolation filter (AIF). AIF offers greater coding efficiency than H.264 / AVC, in particular for high-resolution video sequences (e.g. 720p). In AIF, an interpolation filter for each sub-pixel position is analytically calculated for each video frame by minimizing the energy of prediction errors. Analytically extracted adaptive filtering coefficients for each frame are then predicted, quantized, encoded, and sent in the video bit stream.

Технологии этого раскрытия сущности могут достигать сравнимых улучшений кодирования с достигаемыми AIF при одновременном уменьшении сложности реализации относительно AIF. Описанные технологии могут не требовать аналитического процесса для того, чтобы извлекать коэффициенты фильтрации для каждого видеокадра. Вместо этого в одном примере различные наборы коэффициентов фильтрации заранее вычисляются и заранее задаются для приложения реального времени. В этом случае задание заранее коэффициентов фильтрации может быть основано на AIF, применяемом к тестовым последовательностям, или других критериях выбора.The technologies of this disclosure can achieve comparable coding improvements with achievable AIFs while reducing implementation complexity relative to AIFs. The described technologies may not require an analytical process in order to extract filtering coefficients for each video frame. Instead, in one example, various sets of filter coefficients are pre-computed and pre-defined for a real-time application. In this case, pre-setting the filter coefficients can be based on the AIF applied to the test sequences or other selection criteria.

Три различных типа схем AIF приспособлены в KTA. Первая - это двумерный неразделимый AIF (NS-AIF), вторая - это разделимый AIF (S-AIF), а третья - это AIF с направленными фильтрами (DAIF). Тем не менее все три схемы AIF используют идентичный аналитический процесс, чтобы извлекать коэффициенты фильтрации, что поясняется ниже с использованием неразделимого AIF в качестве примера.Three different types of AIF circuits are fitted in the KTA. The first is a two-dimensional non-separable AIF (NS-AIF), the second is a separable AIF (S-AIF), and the third is an AIF with directional filters (DAIF). However, all three AIF schemes use the same analytical process to extract filtering coefficients, which is explained below using an inseparable AIF as an example.

Допустим, что двумерный неразделимый фильтр 6x6 имеет коэффициенты

Figure 00000001
, где i, j=0,..., 5, и SP представляет одну из 15 субпиксельных позиций (a-o), показанных на фиг.4A-4D. Следует отметить, что 6 из 15 субпиксельных позиций "a", "b", "c", "d", "h" и "l" являются одномерными субпиксельными позициями, которые могут использовать 6-отводный фильтр для интерполяции. Кроме того, допустим, что прогнозирующие пикселы в целопиксельных позициях (A1-F6 на фиг.3) в опорном кадре принимают пиксельные значения
Figure 00000002
, где i, j=0,..., 5. Таким образом, A1 принимает значение
Figure 00000003
,..., A6 принимает значение
Figure 00000004
,..., F1 принимает значение
Figure 00000005
,..., и F6 принимает значение
Figure 00000006
. Затем интерполированное значение
Figure 00000007
в субпиксельной позиции SP,
Figure 00000008
, может вычисляться с использованием следующего уравнения:Suppose a two-dimensional inseparable 6x6 filter has coefficients
Figure 00000001
where i, j = 0, ..., 5, and SP represents one of the 15 sub-pixel positions (ao) shown in FIGS. 4A-4D. It should be noted that 6 of the 15 sub-pixel positions "a", "b", "c", "d", "h" and "l" are one-dimensional sub-pixel positions that can use a 6-tap filter for interpolation. Furthermore, suppose that the predictive pixels at integer-pixel positions (A1-F6 in FIG. 3) in the reference frame take pixel values
Figure 00000002
, where i, j = 0, ..., 5. Thus, A1 takes the value
Figure 00000003
, ..., A6 takes the value
Figure 00000004
, ..., F1 takes on the value
Figure 00000005
, ..., and F6 takes the value
Figure 00000006
. Then the interpolated value
Figure 00000007
in subpixel position SP,
Figure 00000008
can be calculated using the following equation:

Figure 00000009
Figure 00000009

Пусть

Figure 00000010
является пиксельным значением в текущем видеокадре в позиции
Figure 00000011
.Let be
Figure 00000010
is the pixel value in the current video frame at position
Figure 00000011
.

Figure 00000012
,
Figure 00000012
,

где

Figure 00000013
- это вектор движения,
Figure 00000014
- это целочисленный компонент вектора движения, и
Figure 00000015
- это смещение фильтра. Например, в случае 6-отводного фильтра,
Figure 00000016
. Для каждой субпиксельной позиции SP энергия
Figure 00000017
ошибок прогнозирования между фактическим пиксельным значением в текущем кадре и интерполированным значением может накапливаться для всех пикселов, которые имеют точность вектора движения, соответствующую субпиксельной позиции SP. Энергия
Figure 00000017
ошибок прогнозирования вычисляется с использованием следующего уравнения:Where
Figure 00000013
is a motion vector,
Figure 00000014
is the integer component of the motion vector, and
Figure 00000015
is the filter offset. For example, in the case of a 6-tap filter,
Figure 00000016
. For each subpixel position SP energy
Figure 00000017
prediction errors between the actual pixel value in the current frame and the interpolated value can accumulate for all pixels that have a motion vector accuracy corresponding to the sub-pixel position SP. Energy
Figure 00000017
prediction errors is calculated using the following equation:

Figure 00000018
(2)
Figure 00000018
(2)

Для каждой из субпиксельных позиций a-o отдельная система уравнений может устанавливаться посредством вычисления производной

Figure 00000019
относительно коэффициентов
Figure 00000020
фильтрации. Число уравнений в этом случае равно числу коэффициентов фильтрации, используемых для текущей субпиксельной позиции
Figure 00000021
. Для каждой двумерной субпиксельной позиции "e", "f", "g", "i", "j", "k", "m", "n" и "o" с использованием 6x6-отводного двумерного фильтра может разрешаться система из 36 уравнений с 36 неизвестными. Для оставшихся субпиксельных позиций "a", "b", "c", "d", "h" и "l", которые могут требовать только одномерного фильтра, системы из 6 уравнений могут разрешаться.For each of the subpixel positions ao, a separate system of equations can be established by calculating the derivative
Figure 00000019
relative to the coefficients
Figure 00000020
filtering. The number of equations in this case is equal to the number of filtering coefficients used for the current subpixel position
Figure 00000021
. For each two-dimensional subpixel position "e", "f", "g", "i", "j", "k", "m", "n" and "o" using a 6x6-tap two-dimensional filter, a system can be resolved of 36 equations with 36 unknowns. For the remaining subpixel positions "a", "b", "c", "d", "h" and "l", which may require only a one-dimensional filter, systems of 6 equations can be resolved.

Figure 00000022
(3)
Figure 00000022
(3)

Подводя итог вышеупомянутого, примерный процесс извлечения и применения AIF-фильтров может иметь следующие этапы:To summarize the above, an exemplary process for extracting and applying AIF filters can have the following steps:

1. Векторы

Figure 00000023
движения могут быть оценены для каждого видеокадра, который должен кодироваться. Во время оценки движения неперестраиваемый интерполяционный фильтр (к примеру, интерполяционный процесс H.264/AVC) может применяться.1. Vectors
Figure 00000023
Motion can be estimated for each video frame to be encoded. During motion estimation, a non-tunable interpolation filter (e.g., H.264 / AVC interpolation process) may be applied.

2. С использованием этих векторов движения, энергия ошибок прогнозирования для каждой субпиксельной позиции

Figure 00000024
может накапливаться по текущему видеокадру. Затем коэффициенты
Figure 00000025
адаптивной фильтрации могут вычисляться для каждой субпиксельной позиции
Figure 00000024
независимо посредством минимизации энергии ошибок прогнозирования, как указано в двух вышеприведенных уравнениях энергии прогнозирования.2. Using these motion vectors, the energy of prediction errors for each subpixel position
Figure 00000024
may accumulate on the current video frame. Then the odds
Figure 00000025
adaptive filtering can be calculated for each subpixel position
Figure 00000024
independently by minimizing the energy of prediction errors, as indicated in the two prediction energy equations above.

3. Новые векторы движения затем могут быть оценены. В ходе процесса оценки движения могут применяться адаптивные интерполяционные фильтры, вычисленные на этапе 2. С помощью адаптивных интерполяционных фильтров, ошибки оценки движения, вызываемые посредством наложения спектров, шума камеры и т.д., уменьшаются, и может достигаться лучшее прогнозирование движения.3. New motion vectors can then be estimated. During the motion estimation process, adaptive interpolation filters calculated in step 2 can be applied. Using adaptive interpolation filters, the motion estimation errors caused by spectral overlapping, camera noise, etc. are reduced, and better motion prediction can be achieved.

Все три существующих схемы AIF используют аналитический процесс, идентичный процессу, указанному выше. Отличия между этими схемами главным образом заключаются в числе используемых уникальных коэффициентов фильтрации, в том, являются интерполяционные фильтры разделимыми или неразделимыми, и в том, какая поддержка фильтра (т.е. целопиксельные позиции, используемые для интерполяции) используется. В каждой из этих схем определенные ограничения по симметрии для AIF-фильтров накладываются, чтобы сокращать число коэффициентов фильтрации, которое должно быть отправлено в потоке видеобитов.All three existing AIF schemes use an analytical process identical to the process indicated above. The differences between these schemes are mainly in the number of unique filtering coefficients used, in that the interpolation filters are separable or inseparable, and in what filter support (i.e. integer-pixel positions used for interpolation) are used. In each of these schemes, certain symmetry restrictions for AIF filters are imposed to reduce the number of filtering coefficients that must be sent in the video bitstream.

Как упомянуто выше, в H.264/AVC, интерполяция выполняется с помощью операций промежуточного округления. Традиционно, полупиксельные позиции ("b", "h" и "j") фильтруются и округляются до того, как они используются для того, чтобы получать четвертьпиксельные позиции. Кроме того, во время билинейной фильтрации, которая используется для того, чтобы получать четвертьпиксельные значения, округление в большую сторону может использоваться (т.е. (a+b+1)>>1 может использоваться в традиционных билинейных фильтрах). Такие частые и смещенные операции округления могут уменьшать точность интерполяционных фильтров. В частности, моделирование показывает, что интерполяционные фильтры с более высокой точностью, извлеченные непосредственно из 6-отводного фильтра Винера, и билинейный фильтр, используемый в H.264/AVC, предоставляют значительную эффективность по сравнению с H.264/AVC, в частности, для видеопоследовательностей высокой четкости, таких как последовательности 720p. Значительная часть эффективности, достигаемая посредством схем AIF (NS-AIF, S-AIF и DAIF), может исходить из того факта, что эти схемы AIF используют фильтры с более высокой точностью, чем H.264/AVC.As mentioned above, in H.264 / AVC, interpolation is performed using intermediate rounding operations. Traditionally, half-pixel positions ("b", "h", and "j") are filtered and rounded before they are used to obtain quarter-pixel positions. In addition, during bilinear filtering, which is used to obtain quarter-pixel values, rounding up can be used (i.e. (a + b + 1) >> 1 can be used in traditional bilinear filters). Such frequent and biased rounding operations can reduce the accuracy of interpolation filters. In particular, simulation shows that interpolation filters with higher accuracy, extracted directly from the Wiener 6-tap filter, and the bilinear filter used in H.264 / AVC, provide significant efficiency compared to H.264 / AVC, in particular for high definition video sequences such as 720p sequences. A significant part of the efficiency achieved through AIF schemes (NS-AIF, S-AIF and DAIF) may come from the fact that these AIF schemes use filters with higher accuracy than H.264 / AVC.

В соответствии с этим раскрытием сущности, может использоваться относительно простая схема коммутируемого интерполяционного фильтра со смещением (SIFO). Вместо адаптивного извлечения коэффициентов фильтрации для каждого кадра, что является очень затратным процессом на стороне кодера, SIFO-схема выбирает между неперестраиваемыми фильтрами множества, к примеру, которые могут быть, соответственно, заданы посредством множества различных заранее заданных наборов коэффициентов интерполяционной фильтрации. Выбор интерполяционного фильтра может выполняться либо на уровне кадра, либо на уровне субпиксельной позиции, что может упоминаться как выбор на основе кадров либо выбор на основе выборок, соответственно. Если требуется, DC-смещения также могут добавляться после прогнозирования, и DC-смещения также могут добавляться на основе кадров или выборок. Таким образом, одно или более DC-смещений могут быть заданы для каждого кадра, различные DC-смещения (или наборы DC-смещений) могут быть заданы для различных видеоблоков кадра. Различные DC-смещения могут быть заданы для каждой пиксельной и субпиксельной интерполированной позиции. Кадры являются одним примером кодированных единиц, и фраза "выбор на основе кадров" более широко упоминается как выбор на основе кодированных единиц. В некотором случае серии последовательных макроблоков или части кадра, например, могут кодироваться отдельно как отдельные кодированные единицы.According to this disclosure, a relatively simple switched offset interpolation filter (SIFO) scheme may be used. Instead of adaptively extracting filtering coefficients for each frame, which is a very costly process on the encoder side, the SIFO scheme selects sets of non-tunable filters, for example, that can be set accordingly by means of many different predefined sets of interpolation filtering coefficients. The selection of the interpolation filter can be performed either at the frame level or at the sub-pixel position level, which may be referred to as frame-based selection or selection based on samples, respectively. If desired, DC offsets can also be added after prediction, and DC offsets can also be added based on frames or samples. Thus, one or more DC offsets can be set for each frame, different DC offsets (or sets of DC offsets) can be set for different video blocks of the frame. Different DC offsets can be set for each pixel and subpixel interpolated position. Frames are one example of coded units, and the phrase “frame-based selection” is more commonly referred to as coded-unit selection. In some cases, a series of consecutive macroblocks or parts of a frame, for example, can be encoded separately as separate coded units.

Различные наборы неперестраиваемых фильтров могут использоваться посредством модулей 35 и 55 компенсации движения по фиг.2 и 3, соответственно. Примеры включают в себя стандартный набор фильтров H.264, набор фильтров на основе H.264/AVC, но с более высокой точностью (без промежуточного округления для полупиксельных позиций и смещенного округления для четвертьпиксельных позиций), или один или более наборов настраиваемых интерполяционных фильтров. Набор или наборы настраиваемых интерполяционных фильтров могут получаться посредством использования набора обучающих видеопоследовательностей. Адаптивные фильтры, которые минимизируют энергию ошибок прогнозирования, могут извлекаться посредством применения аналитического процесса, используемого в схемах AIF, к обучающему видеонабору. Затем средние фильтры для каждой субпиксельной позиции могут вычисляться и использоваться как настраиваемые интерполяционные фильтры, которые применяются посредством модулей 35 и 55 компенсации движения, как описано в данном документе.Various sets of non-tunable filters can be used by the motion compensation modules 35 and 55 of FIGS. 2 and 3, respectively. Examples include a standard H.264 filter set, a filter set based on H.264 / AVC, but with higher accuracy (without intermediate rounding for half-pixel positions and offset rounding for quarter-pixel positions), or one or more sets of custom interpolation filters. A set or sets of custom interpolation filters can be obtained by using a set of training video sequences. Adaptive filters that minimize the energy of prediction errors can be extracted by applying the analytic process used in AIF circuits to training video set. Then, the average filters for each subpixel position can be calculated and used as custom interpolation filters, which are applied by the motion compensation units 35 and 55, as described herein.

Средний фильтр для конкретной субпиксельной позиции также может быть нормализован так, что все коэффициенты фильтрации составляют в целом 1,0. Средний фильтр также может квантоваться с определенной точностью с фиксированной запятой (к примеру, 13-битовой точностью). Использование точности с фиксированной запятой в коэффициенте фильтрации обеспечивает то, что реализации для различных платформ не имеют отклонений. Кроме того, истинная реализация с фиксированной запятой может извлекаться из таких заранее заданных коэффициентов фильтрации. Настраиваемые фильтры могут иметь различные характеристики. В частности, различные фильтры могут быть неразделимыми фильтрами или разделимыми фильтрами, и различные фильтры могут задавать различные поддержки фильтра (к примеру, 6x6 или 4x4).The average filter for a particular sub-pixel position can also be normalized so that all filter coefficients add up to a total of 1.0. The middle filter can also be quantized with a certain precision with a fixed point (for example, 13-bit precision). The use of fixed-point precision in the filter coefficient ensures that implementations for different platforms do not have deviations. In addition, a true fixed-point implementation may be derived from such predetermined filtering coefficients. Custom filters can have different characteristics. In particular, different filters can be inseparable filters or separable filters, and different filters can specify different filter supports (for example, 6x6 or 4x4).

В любом случае набор фильтров, который предлагает наилучшее прогнозирование в любом приведенном примере (к примеру, наименьшую энергию ошибок прогнозирования), может выбираться посредством модуля 35 компенсации движения в ходе процесса кодирования. С другой стороны, выбор набора фильтров может быть значением на основе выборок или на основе кадров, что означает то, что фильтры могут выбираться для каждого кадра (или другой кодированной единицы) или могут выбираться для различных видеоблоков каждого кадра. Когда множество опорных кадров используется, различные наборы фильтров могут выбираться для различных опорных кадров. Кроме того, некоторые опорные кадры могут иметь выбор фильтра на основе кадров, при этом другие опорные кадры могут иметь выбор фильтра на основе выборок. Когда выбор фильтра на основе кадров используется, и когда настраиваемый набор фильтров выбирается, стандартные фильтры по-прежнему могут применяться для полупиксельных позиций (к примеру, позиций "b", "h" и "j"), при этом настраиваемый набор фильтров может применяться для других субпиксельных позиций.In any case, the filter set that offers the best prediction in any given example (for example, the lowest energy of prediction errors) can be selected by the motion compensation module 35 during the encoding process. On the other hand, the selection of the filter set may be a value based on samples or based on frames, which means that filters can be selected for each frame (or other coded unit) or can be selected for different video blocks of each frame. When multiple reference frames are used, different filter sets can be selected for different reference frames. In addition, some reference frames may have a filter selection based on frames, while other reference frames may have a filter selection based on samples. When frame-based filter selection is used, and when a custom filter set is selected, standard filters can still be applied to half-pixel positions (for example, b, h and j positions), while a custom filter set can be applied for other subpixel positions.

Смещение также может добавляться во время интерполяции. Добавление DC-смещений к значениям прогнозирования может помогать захватывать изменения освещения между различными видеокадрами, такие как вспышки, сумеречное небо и т.п. В схеме этого раскрытия сущности DC-смещение может применяться на уровне кадра (все пикселы в кадре используют идентичное DC-смещение) или на уровне позиции выборки (различные пиксельные местоположения имеют различные DC-смещения). Когда DC-смещения на основе выборок используются, всего шестнадцать DC-смещений, возможно, должны отправляться в потоке видеобитов так, что целопиксельные местоположения и пятнадцать возможных нецелопиксельных местоположений могут задавать различные смещения. Применение DC-смещений на основе выборок может быть полезным, поскольку оно может выступать в качестве простого, но эффективного инструментального средства сегментации движения. Рассмотрим, например, видеокадр, который содержит темнеющее небо в качестве неподвижного фона и движущийся объект в качестве переднего плана. В этом случае фон и передний план могут иметь различные степени изменений освещения, и использование DC-смещений на основе выборок может помогать захватывать различные степени изменений освещения в переднем плане и фоне.An offset can also be added during interpolation. Adding DC offsets to prediction values can help capture lighting changes between different video frames, such as flashes, twilight sky, etc. In the schema of this disclosure, DC offset can be applied at the frame level (all pixels in the frame use the same DC offset) or at the sample position level (different pixel locations have different DC offsets). When sample-based DC offsets are used, a total of sixteen DC offsets may need to be sent in the video bit stream so that integer-pixel locations and fifteen possible non-integer-pixel locations can specify different offsets. Sample-based DC bias can be useful because it can act as a simple but effective tool for motion segmentation. Consider, for example, a video frame that contains a darkening sky as a fixed background and a moving object as a foreground. In this case, the background and foreground can have different degrees of lighting changes, and using sample-based DC offsets can help capture different degrees of lighting changes in the foreground and background.

Когда множество опорных кадров используется, различные DC-смещения могут вычисляться и отправляться для различных опорных кадров. Кроме того, некоторые опорные кадры могут иметь DC-смещение на основе кадров, при этом другие могут иметь DC-смещения на основе выборок. Одна конкретная схема заключается в том, чтобы использовать DC-смещения на основе выборок только в опорном кадре, который является ближайшим по временному расстоянию к текущему кадру, и использовать DC-смещение на основе кадров для всех других опорных кадров. Информация может кодироваться в потоке битов, чтобы сообщать декодеру тип используемых смещений и величину таких смещений в различных пиксельных местоположениях.When multiple reference frames are used, different DC offsets can be calculated and sent for different reference frames. In addition, some reference frames may have frame-based DC bias, while others may have sample-based DC biases. One particular scheme is to use sample-based DC offsets only in the reference frame that is the closest in time to the current frame, and use frame-based DC offset for all other reference frames. Information can be encoded in a bit stream to tell the decoder the type of offsets used and the magnitude of such offsets at various pixel locations.

Субпиксельный вектор движения упоминается как субпиксельная позиция в опорном изображении, которое должно быть интерполировано. H.264 задает один интерполяционный процесс для субпикселов, в котором субпикселы b и h (см. фиг.4A-4D) могут вычисляться посредством горизонтальной и вертикальной фильтрации с помощью 6-отводного фильтра, имеющего значения отводов (1, -5, 20, 20, -5, 1), следующим образом:A subpixel motion vector is referred to as a subpixel position in the reference image to be interpolated. H.264 defines one interpolation process for subpixels in which subpixels b and h (see FIGS. 4A-4D) can be calculated by horizontal and vertical filtering using a 6-tap filter having tap values (1, -5, 20, 20, -5, 1), as follows:

b1=C1-5*C2+20*C3+20*C4-5*C5+C6b1 = C1-5 * C2 + 20 * C3 + 20 * C4-5 * C5 + C6

где "C1", "C2", "C3", "C4", "C5" и "C6" представляют шесть ближайших целочисленных пикселов, которые окружают "b" в горизонтальном направлении, причем пикселы "C3" и "C4", являются ближайшими, "C2" и "C5" являются следующими ближайшими, и "C1" и "C6" являются следующими ближайшими.where "C1", "C2", "C3", "C4", "C5" and "C6" represent the six nearest integer pixels that surround "b" in the horizontal direction, and the pixels "C3" and "C4" are closest, “C2” and “C5” are the next closest, and “C1” and “C6” are the next closest.

h1=A3-5*B3+20*C3+20*D3-5*E3+F3h1 = A3-5 * B3 + 20 * C3 + 20 * D3-5 * E3 + F3

где "A3", "B3", "C3", "D3", "E3" и "F3" представляют шесть ближайших целочисленных пикселов, которые окружают "h" в вертикальном направлении, причем пикселы "C3" и "D3" являются ближайшими, "B3" и "E3" являются следующими ближайшими, и "A3" и "F3" являются следующими ближайшими.where "A3", "B3", "C3", "D3", "E3" and "F3" represent the six nearest integer pixels that surround the "h" in the vertical direction, the pixels "C3" and "D3" being the nearest , "B3" and "E3" are the next closest, and "A3" and "F3" are the next closest.

В этом случае значения "b" и "h" могут быть заданы следующим образом:In this case, the values of "b" and "h" can be set as follows:

b=max(0, min(255, (b1+16)>>5))b = max (0, min (255, (b1 + 16) >> 5))

h=max(0, min(255, (h1+16)>>5))h = max (0, min (255, (h1 + 16) >> 5))

где ">>" - это операция сдвига вправо. В этом раскрытии сущности, ">>" представляет операцию сдвига вправо, а "<<" представляет операцию сдвига влево.where ">>" is the shift operation to the right. In this disclosure, ">>" represents a shift operation to the right, and "<<" represents a shift operation to the left.

Чтобы интерполировать субпиксел "j", промежуточное значение "j1" сначала извлекается следующим образом:To interpolate the subpixel "j", the intermediate value "j1" is first extracted as follows:

j1=aa1-5*bb1+20*b1+20*hh1-5*ii1+jj1,j1 = aa1-5 * bb1 + 20 * b1 + 20 * hh1-5 * ii1 + jj1,

где промежуточные значения, обозначенные как "aa1", "bb1", "hh1", "ii1" и "jj1", извлекаются посредством применения 6-отводного фильтра горизонтально способом, идентичным вычислению b1 в позициях "aa", "bb", "hh", "ii" и "jj". Конечное значение j может вычисляться следующим образом:where the intermediate values, designated as "aa1", "bb1", "hh1", "ii1" and "jj1", are retrieved by applying a 6-tap filter horizontally in a manner identical to calculating b1 at the positions "aa", "bb", " hh "," ii "and" jj ". The final value of j can be calculated as follows:

j=max(0, min(255, (j1+512)>>10)).j = max (0, min (255, (j1 + 512) >> 10)).

Пикселы в четвертьпиксельных позициях, помеченные как "a", "c", "d", "l", "f", "i", "k" и "n", могут извлекаться согласно таблице 1 посредством усреднения двух ближайших пикселов в целочисленно- и полупиксельных позициях и последующего применения округления в большую сторону.Pixels in quarter-pixel positions labeled "a", "c", "d", "l", "f", "i", "k" and "n" can be extracted according to table 1 by averaging the two nearest pixels in integer- and half-pixel positions and the subsequent application of rounding up.

Таблица 1Table 1 a=(C3+b+1)>>1a = (C3 + b + 1) >> 1 c=(C4+b+1)>>1c = (C4 + b + 1) >> 1 d=(C3+h+1)>>1d = (C3 + h + 1) >> 1 l=(D3+h+1)>>1l = (D3 + h + 1) >> 1 f=(j+b+1)>>1f = (j + b + 1) >> 1 i=(j+h+1)>>1i = (j + h + 1) >> 1 k=(j+ee+1)>>1k = (j + ee + 1) >> 1 n=(j+hh+1)>>1n = (j + hh + 1) >> 1

Пикселы в четвертьпиксельных позициях, помеченные как "e", "g", "m" и "o", вычисляются согласно таблице 2 посредством усреднения двух ближайших пикселов в полупиксельных позициях в диагональном направлении и последующего применения округления в большую сторону.Pixels at quarter-pixel positions labeled “e”, “g”, “m”, and “o” are calculated according to Table 2 by averaging the two nearest pixels at half-pixel positions in the diagonal direction and then applying rounding up.

Таблица 2 table 2 e=(b+h+1)>>1e = (b + h + 1) >> 1 g=(b+ee+1)>>1g = (b + ee + 1) >> 1 m=(h+hh+1)>>1m = (h + hh + 1) >> 1 o=(ee+hh+1)>>1o = (ee + hh + 1) >> 1

Конечные значения этих четвертей пикселов могут быть в завершение отсечены до значений в интервале (0,255).The final values of these quarters of pixels can be finally cut off to values in the interval (0.255).

Чтобы сохранять максимально возможную точность на промежуточных этапах, все операции сдвига, округления и отсечения могут исключаться до самого последнего этапа интерполяционного процесса. В отличие от этого, в реализации, заданной согласно стандарту H.264, пикселы в четвертьпиксельных позициях, помеченные как "a", "c", "d", "l", "f", "i", "k" и "n", извлекаются согласно таблице 3 посредством усреднения двух ближайших пикселов в целочисленно- и полупиксельных позициях "b", "h", "j", "ee" и "hh", с округлением в большую сторону.In order to maintain the highest possible accuracy in the intermediate stages, all shear, rounding and clipping operations can be eliminated until the very last stage of the interpolation process. In contrast, in an implementation defined according to the H.264 standard, pixels at quarter-pixel positions are labeled “a”, “c”, “d”, “l”, “f”, “i”, “k” and “n” are extracted according to table 3 by averaging the two nearest pixels at integer and half-pixel positions “b”, “h”, “j”, “ee” and “hh”, with rounding up.

Таблица 3 Table 3 a=(C3<<5+b1+32)>>6a = (C3 << 5 + b1 + 32) >> 6 c=(C4<<5+b1+32)>>6c = (C4 << 5 + b1 + 32) >> 6 d=(C3<<5+h1+32)>>6d = (C3 << 5 + h1 + 32) >> 6 l=(D3<<5+h1+32)>>6l = (D3 << 5 + h1 + 32) >> 6 f=(j1>>5+b1+32)>>6f = (j1 >> 5 + b1 + 32) >> 6 i=(j1>>5+h1+32)>>6i = (j1 >> 5 + h1 + 32) >> 6 k=(j1>>5+ee1+32)>>6k = (j1 >> 5 + ee1 + 32) >> 6 n=(j1>>5+hh1+32)>>6n = (j1 >> 5 + hh1 + 32) >> 6

В этом случае промежуточные значения, обозначенные как "ee1" и "hh1", извлекаются посредством применения 6-отводного фильтра вертикально и горизонтально таким же образом, как при вычислении "h1" и "b1", упомянутом выше, но в позициях "ee" и "hh". Округления можно не допускать на этой стадии при формировании "ee1" и "hh1", как описано в данном документе.In this case, the intermediate values designated as “ee1” and “hh1” are extracted by applying the 6-tap filter vertically and horizontally in the same manner as in the calculation of “h1” and “b1” mentioned above, but at the positions “ee” and hh. Rounding may not be allowed at this stage in the formation of “ee1” and “hh1” as described herein.

Пикселы в четвертьпиксельных позициях, помеченные как "e", "g", "m" и "o", могут вычисляться согласно таблице 4 посредством усреднения двух ближайших пикселов в полупиксельных позициях в диагональном направлении с округлением в большую сторону.Pixels in quarter-pixel positions labeled “e”, “g”, “m”, and “o” can be calculated according to Table 4 by averaging the two nearest pixels at half-pixel positions in a diagonal direction with rounding up.

Таблица 4Table 4 e=(b1+h1+32)>>6e = (b1 + h1 + 32) >> 6 g=(b1+ee1+32)>>6g = (b1 + ee1 + 32) >> 6 m=(h1+hh1+32)>>6m = (h1 + hh1 + 32) >> 6 o=(ee1+hh1+32)>>6o = (ee1 + hh1 + 32) >> 6

Конечные значения этих четвертей пикселов могут быть отсечены до значений в диапазоне (0,255). Посредством сохранения полной точности промежуточных значений, интерполированные субпикселы должны быть более точными. В частности, полупиксельные значения в местоположениях "b", "h", "ee" и "hh" могут быть неокругленными значениями, обозначенными как "b1", "h1", "ee1" и "hh1" в целях четвертьпиксельного формирования.The final values of these quarters of pixels can be clipped to values in the range (0.255). By maintaining the full accuracy of the intermediate values, the interpolated subpixels should be more accurate. In particular, half-pixel values at locations “b,” “h,” “ee,” and “hh” may be unrounded values designated as “b1,” “h1,” “ee1,” and “hh1” for quarter-pixel generation.

К сожалению, интерполяция значения "j" может быть более сложной, поскольку интерполяция в позиции j требует двух уровней полупиксельной интерполяции. В частности, чтобы интерполировать "j", двадцать битов могут требоваться, чтобы представлять промежуточное значение "j1". В этом случае промежуточная версия "j1" для "j" может округляться, чтобы соответствовать шестнадцати битам. В этом случае операции, поясненные выше, могут быть реализованы с незначительной модификацией так, что все операции могут соответствовать шестнадцатибитовым структурам данных без снижения точности. Интерполяция "b" и "h" может быть идентичной интерполяции, заданной выше, за исключением того, что их промежуточные версии "b1" и "h1" могут сохраняться для другой субпиксельной интерполяции. Следующие таблицы показывают интерполяционный процесс для других субпикселов в шестнадцатибитовых запоминающих элементах. В нижеприведенных таблицах операции, заданные в каждом столбце, выполняются последовательно для соответствующей таблицы. Заштрихованные строки содержат операции, которые выполняются в конце процесса и не используются для интерполяции других субпиксельных позиций.Unfortunately, interpolating the value of "j" can be more complicated, since interpolating at position j requires two levels of half-pixel interpolation. In particular, to interpolate "j", twenty bits may be required to represent an intermediate value of "j1". In this case, the intermediate version “j1” for “j” may be rounded to correspond to sixteen bits. In this case, the operations explained above can be implemented with a slight modification so that all operations can correspond to sixteen-bit data structures without compromising accuracy. Interpolation "b" and "h" may be identical to the interpolation specified above, except that their intermediate versions "b1" and "h1" can be saved for another subpixel interpolation. The following tables show the interpolation process for other subpixels in sixteen-bit storage elements. In the tables below, the operations specified in each column are performed sequentially for the corresponding table. Shaded lines contain operations that are performed at the end of the process and are not used to interpolate other sub-pixel positions.

Таблица 5
позиции {a,c,d,l} по фиг.4A-4D
Table 5
positions {a, c, d, l} of FIGS. 4A-4D
ОперацияOperation КомментарийComment Минимальное значениеMinimum value Максимальное значениеMaximum value Размер регистраRegister size r1=xr1 = x r1 - целочисленный пиксел xr1 - integer pixel x 00 255255 8u8u r1=r1<<5r1 = r1 << 5 r1 - это 32*xr1 is 32 * x 00 81608160 13u13u r2=y0r2 = y0 r2 - это y0 (y0 - это одномерный r2 is y0 (y0 is one-dimensional -2550-2550 1071010710 15s15s полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)half-pixel, such as b1, h1, ee1 and hh1, before shifting towards lower bits) r1=r1+r2r1 = r1 + r2 r1 - это 32*x+y0r1 is 32 * x + y0 -2550-2550 1887018870 16s16s r1=r1+32r1 = r1 + 32 r1 - это 32*x+y0+32r1 is 32 * x + y0 + 32 -2518-2518 1890218902 16s16s r1=r1>>6r1 = r1 >> 6 r1 - это (32*x+y0+32)>>6r1 is (32 * x + y0 + 32) >> 6 -39-39 295295 11s11s r1=max(0, r1)r1 = max (0, r1) отсечение r1 на низкой сторонеclipping r1 on the low side 00 295295 10u10u r1=min(255, r1)r1 = min (255, r1) отсечение r1 на высокой сторонеclipping r1 on the high side 00 255255 8u8u

Таблица 6
позиции {e,g,m,o} по фиг.4A-4D
Table 6
positions {e, g, m, o} of FIGS. 4A-4D
ОперацияOperation КомментарийComment Минимальное значениеMinimum value Максимальное значениеMaximum value Размер регистраRegister size r1=y0r1 = y0 r1 - это y0
(y0 - это одномерный полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)
r1 is y0
(y0 is a one-dimensional half-pixel, such as b1, h1, ee1 and hh1, before shifting towards the lower bits)
-2550-2550 1071010710 15s15s
r2=y1r2 = y1 r2 - это y1 (y1 - это одномерный r2 is y1 (y1 is one-dimensional -2550-2550 1071010710 15s15s полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)half-pixel, such as b1, h1, ee1 and hh1, before shifting towards lower bits) r1=r1+r2r1 = r1 + r2 r1 - это y0+y1r1 is y0 + y1 -5100-5100 2142021420 16s16s r1=r1+32r1 = r1 + 32 r1 - это y0+y1+32r1 is y0 + y1 + 32 -5068-5068 2145221452 16s16s r1=r1>>6r1 = r1 >> 6 r1 - это (y0+y1+32)>>6r1 is (y0 + y1 + 32) >> 6 -79-79 335335 11s11s r1=max(0, r1)r1 = max (0, r1) отсечение r1 на низкой сторонеclipping r1 on the low side 00 335335 10u10u r1=min(255, r1)r1 = min (255, r1) отсечение r1 на высокой сторонеclipping r1 on the high side 00 255255 8u8u

Таблица 7 ниже иллюстрирует шестнадцатибитовую реализацию извлечения пиксельного значения в пиксельном местоположении "j". Все одномерные полупикселы "aa1", "bb1", "b1", "hh1", "ii1" и "jj1" получаются без какого-либо сдвига в сторону младших битов. Диапазон отсечения, чтобы не допускать переполнения, составляет (-2372,18640). Кроме того, заштрихованные строки в таблице указывают операции, которые выполняются только в конце интерполяционного процесса, и эти результаты не используются для интерполяции других субпиксельных позиций. Промежуточное значение "j1" должно быть сохранено для интерполяции "f", "i", "k" и "n".Table 7 below illustrates a sixteen-bit implementation of extracting a pixel value at the pixel location “j”. All one-dimensional half-pixels "aa1", "bb1", "b1", "hh1", "ii1" and "jj1" are obtained without any shift towards the lower bits. The cut-off range, to prevent overflow, is (-2372.18640). In addition, the hatched lines in the table indicate operations that are performed only at the end of the interpolation process, and these results are not used to interpolate other sub-pixel positions. The intermediate value "j1" must be stored for interpolation of "f", "i", "k" and "n".

Figure 00000026
Figure 00000026

Таблица 8 ниже демонстрирует этапы, которые могут быть выполнены для шестнадцатибитовой реализации интерполяции {f,i,k,n}, которые являются позициями, которые используются для интерполяции промежуточного значения "j1".Table 8 below shows the steps that can be performed for a sixteen-bit interpolation implementation {f, i, k, n}, which are positions that are used to interpolate the intermediate value "j1".

Таблица 8
позиции {f,i,k,n} по фиг.4A-4D
Table 8
positions {f, i, k, n} of FIGS. 4A-4D
ОперацияOperation КомментарийComment Минимальное значениеMinimum value Максимальное значениеMaximum value Размер регистраRegister size r1=y0r1 = y0 r1 - это y0 (одномерный полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)r1 is y0 (a one-dimensional half-pixel, such as b1, h1, ee1 and hh1, before shifting towards the lower bits) -2550-2550 1071010710 15s15s r2=j1r2 = j1 r2 - это j1 (двумерный полупиксел j1 перед сдвигом в сторону младших разрядов)r2 is j1 (two-dimensional half-pixel j1 before shifting towards the lower bits) -9914-9914 2623226232 16s16s r2=r2>>1r2 = r2 >> 1 r2 - это j1>>1r2 is j1 >> 1 -4957-4957 1311613116 15s15s r1=r1+r2r1 = r1 + r2 r1 - это y0+(j1>>1)r1 is y0 + (j1 >> 1) -7507-7507 2382623826 16s16s r1=r1+32r1 = r1 + 32 r1 - это y0+(j1>>1)+32r1 is y0 + (j1 >> 1) +32 -7491-7491 2384223842 16s16s r1=r1>>6r1 = r1 >> 6 r1 - это (y0+(j1>>1)+32)>>6r1 is (y0 + (j1 >> 1) +32) >> 6 -235-235 745745 11s11s r1=max(0, r1)r1 = max (0, r1) отсечение r1 на низкой сторонеclipping r1 on the low side 00 745745 10u10u r1=min(255, r1)r1 = min (255, r1) отсечение r1 на высокой сторонеclipping r1 on the high side 00 255255 8u8u

Вкратце пояснение выше демонстрирует законченную технологию для интерполяции всех возможных субпиксельных местоположений "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" и "o" без превышения шестнадцатибитовых запоминающих элементов, что является желательным для реализации. Большинство промежуточных полупиксельных значений остаются неокругленным в целях четвертьпиксельной интерполяции. Тем не менее пиксельное местоположение "j" является частным случаем, который может требовать округления промежуточных результатов в целях формирования своего полупиксельного значения, поскольку пиксельное местоположение "j" требует двух уровней полупиксельной интерполяции. В соответствии с этим раскрытием сущности, тем не менее округление в пиксельном местоположении "j" не оказывает влияние на точность конечного значения четвертей пикселов, которые основываются на "j".Briefly, the explanation above shows a complete technology for interpolating all possible subpixel locations "a", "b", "c", "d", "e", "f", "g", "h", "i", "j "," k "," l "," m "," n "and" o "without exceeding sixteen-bit storage elements, which is desirable for implementation. Most intermediate half-pixel values remain unrounded for quarter-pixel interpolation purposes. Nevertheless, the pixel location “j” is a special case, which may require rounding of the intermediate results in order to form its half-pixel value, since the pixel location “j” requires two levels of half-pixel interpolation. In accordance with this disclosure, however, rounding at the pixel location “j” does not affect the accuracy of the final value of the quarters of the pixels that are based on “j”.

Фиг.5 является блок-схемой последовательности операций, согласованной с одним или более аспектов кодирования видео в соответствии с этим раскрытием сущности. Фиг.5 поясняется с точки зрения видеокодера 50, показанного на фиг.2. В частности, модуль 35 компенсации движения формирует прогнозирующие данные (101), что включает в себя интерполяцию на основе множества заранее заданных интерполяционных фильтров. Модуль 35 компенсации движения затем кодирует видеоданные, к примеру видеоблок на основе прогнозирующих данных, ассоциированных с каждым из заранее заданных интерполяционных фильтров (102). Например, модуль 35 компенсации движения может активировать сумматор 48, чтобы формировать остаточные блоки, ассоциированные с каждым из заранее заданных интерполяционных фильтров так, что различные остаточные блоки могут сравниваться друг с другом, чтобы находить наилучший остаточный блок. Модуль 35 компенсации движения выбирает видеоданные, которые достигают наивысших уровней сжатия (103). В частности, выбранные видеоданные проиллюстрированы как вывод "остаточный блок" сумматора 48, который является окончательным результатом. Этот окончательный результат сумматора 48 преобразуется посредством модуля 38 преобразования, квантуется посредством модуля 40 квантования и энтропийно кодируется посредством модуля 46 энтропийного кодирования.5 is a flowchart consistent with one or more aspects of video encoding in accordance with this disclosure. Figure 5 is explained from the point of view of the video encoder 50 shown in figure 2. In particular, the motion compensation module 35 generates predictive data (101), which includes interpolation based on a plurality of predetermined interpolation filters. Motion compensation module 35 then encodes video data, for example, a video block based on predictive data associated with each of a predetermined interpolation filter (102). For example, motion compensation module 35 may activate an adder 48 to form residual blocks associated with each of a predetermined interpolation filter so that various residual blocks can be compared with each other to find the best residual block. Motion compensation module 35 selects video data that reaches the highest compression levels (103). In particular, the selected video data is illustrated as outputting a “residual block” of adder 48, which is the final result. This final result of the adder 48 is converted by the transform module 38, quantized by the quantization module 40, and entropy encoded by the entropy encoding module 46.

Модуль 35 компенсации движения также идентифицирует конкретный интерполяционный фильтр, который ассоциирован с выбранными остаточными видеоданными, которые достигают наивысших уровней сжатия (104). Модуль 35 компенсации движения перенаправляет элемент синтаксиса интерполяции в модуль 46 энтропийного кодирования. Элемент синтаксиса интерполяции идентифицирует конкретный интерполяционный фильтр, который использован. Модуль 46 энтропийного кодирования кодирует элемент синтаксиса (105), чтобы формировать часть выводимого потока битов. Таким образом, интерполяционный фильтр, используемый в кодере 50 (к примеру, используемые коэффициенты фильтрации или другие схемы или параметры фильтров), может передаваться в целевое устройство так, что целевое устройство может выполнять надлежащую интерполяционную фильтрацию во время восстановления видео.Motion compensation module 35 also identifies a particular interpolation filter that is associated with selected residual video data that reaches the highest compression levels (104). Motion compensation unit 35 redirects the interpolation syntax element to entropy encoding unit 46. The interpolation syntax element identifies the particular interpolation filter that is used. Entropy encoding unit 46 encodes a syntax element (105) to form part of the output bitstream. Thus, the interpolation filter used in the encoder 50 (for example, the filter coefficients used or other filter schemes or parameters) can be transmitted to the target device so that the target device can perform proper interpolation filtering during video recovery.

Интерполяционная фильтрация может быть задана на основе каждого кадра или может быть задана на основе каждого видеоблока. В еще других случаях интерполяционная фильтрация может быть задана на основе каждой выборки или может быть задана на основе каждой подвыборки. Термин "видеоединицы" может упоминаться как видеокадры, видеоблоки, видеовыборки или видеоподвыборки. В любом случае видеокодер 50 может кодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры для различных опорных видеоединиц, которые используются для того, чтобы формировать прогнозирующие данные для различных кодированных единиц видеоданных. Альтернативно, видеокодер может кодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры, которые используются для различных видеоблоков опорных видеоданных. В любом случае интерполяционные фильтры могут быть заранее заданы с использованием тестовых видеопоследовательностей. В этом случае, например, адаптивная интерполяционная фильтрация (AIF) может применяться к видеопоследовательностям, чтобы задавать различные интерполяционные фильтры, которые достигают желательных результатов, и эти интерполяционные фильтры могут программироваться в модуле 35 компенсации движения.Interpolation filtering may be set based on each frame or may be set based on each video block. In still other cases, interpolation filtering may be specified based on each sample, or may be defined based on each subsample. The term “video units” may be referred to as video frames, video blocks, video samples or video samples. In any case, video encoder 50 may encode various syntax elements to identify various interpolation filters for various reference video units, which are used to generate predictive data for various encoded units of video data. Alternatively, the video encoder may encode various syntax elements to identify various interpolation filters that are used for various video blocks of the reference video data. In any case, interpolation filters can be predefined using test video sequences. In this case, for example, adaptive interpolation filtering (AIF) can be applied to video sequences to specify various interpolation filters that achieve the desired results, and these interpolation filters can be programmed in the motion compensation unit 35.

Фиг.6 является блок-схемой последовательности операций, согласованной с одним или более аспектов декодирования видео в соответствии с этим раскрытием сущности. Фиг.6 поясняется с точки зрения видеокодера 50, показанного на фиг.2. В частности, видеокодер 60 принимает кодированные видеоданные (111) и принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр из множества интерполяционных фильтров (112). Кодированный поток битов может включать в себя как кодированные остаточные видеоданные, так и элемент синтаксиса, который идентифицирует интерполяционный фильтр, который использован в кодере. Модуль 52 энтропийного декодирования может энтропийно декодировать принимаемый поток битов, чтобы синтаксически анализировать преобразованные и квантованные остаточные блоки, которые отправляются в модуль 56 квантования с обратным преобразованием и модуль 58 обратного преобразования, и синтаксически анализировать элемент синтаксиса интерполяции и векторы движения, которые отправляются в модуль 55 компенсации движения.6 is a flowchart consistent with one or more aspects of video decoding in accordance with this disclosure. 6 is explained from the point of view of the video encoder 50 shown in figure 2. In particular, video encoder 60 receives encoded video data (111) and receives a syntax element that identifies an interpolation filter from a plurality of interpolation filters (112). The encoded bitstream may include both encoded residual video data and a syntax element that identifies the interpolation filter that is used in the encoder. Entropy decoding unit 52 may entropy decode the received bitstream to parse the converted and quantized residual blocks that are sent to inverse transform quantization unit 56 and inverse transform unit 58, and syntactically analyze the interpolation syntax element and motion vectors that are sent to unit 55 motion compensation.

Модуль 55 компенсации движения формирует прогнозирующие данные (113), которые включают в себя интерполяции на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. Видеодекодер 60 декодирует видеоданные на основе прогнозирующих данных (114). В частности, прогнозирующие данные, сформированные посредством модуля 55 компенсации движения, могут быть комбинированы с остаточными данными через сумматор 64, чтобы восстанавливать видеоданные в пиксельном домене. Декодированное видео затем может сохраняться в модуле 62 хранения опорных кадров для последующего использования при прогнозировании и также может выводиться для представления пользователю, к примеру, через дисплей или другое устройство вывода.Motion compensation module 55 generates predictive data (113) that includes interpolations based on an interpolation filter identified by a syntax element. Video decoder 60 decodes the video data based on the predictive data (114). In particular, the predictive data generated by the motion compensation unit 55 may be combined with the residual data through an adder 64 to recover video data in the pixel domain. The decoded video can then be stored in the reference frame storage unit 62 for later use in prediction and can also be output for presentation to the user, for example, through a display or other output device.

Как в случае кодирования, интерполяционная фильтрация в ходе процесса декодирования может быть задана на основе каждого кадра или может быть задана на основе каждого видеоблока, каждой подвыборки или каждой выборки. В частности, видеодекодер 60 может декодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры для различных опорных видеоединиц, которые используются для того, чтобы формировать прогнозирующие данные для различных кодированных единиц видеоданных, или альтернативно, видеодекодер 60 может декодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры, которые используются для различных видеоблоков опорных видеоданных. В любом случае интерполяционные фильтры могут быть заранее заданы с использованием тестовых видеопоследовательностей, и эти интерполяционные фильтры могут программироваться в модуле 55 компенсации движения так, что синтаксис может использоваться для того, чтобы идентифицировать и активировать надлежащий интерполяционный фильтр в рамках модуля 55 компенсации движения.As in the case of encoding, interpolation filtering during the decoding process can be set based on each frame or can be set based on each video block, each subsample, or each sample. In particular, video decoder 60 may decode various syntax elements to identify different interpolation filters for various reference video units, which are used to generate predictive data for various encoded video units, or alternatively, video decoder 60 may decode various syntax elements to identify different interpolation filters that are used for various video blocks of the reference video data. In any case, the interpolation filters can be predefined using test video sequences, and these interpolation filters can be programmed in the motion compensation module 55 so that the syntax can be used to identify and activate the appropriate interpolation filter within the motion compensation module 55.

Фиг.7 иллюстрирует технологию интерполяции, которая может выполняться посредством модуля 35 компенсации движения в ходе процесса кодирования или посредством модуля 55 компенсации движения в ходе процесса декодирования. Как показано на фиг.7, модуль 35 или 55 компенсации движения формирует полупиксельные значения на основе целопиксельных значений (121). Например, эти полупиксельные значения могут соответствовать пиксельным значениям в местоположениях "b" и "h" фиг.4A-4D. Модуль 35 или 55 компенсации движения округляет эти полупиксельные значения, чтобы формировать полупиксельные интерполированные значения (122), а также сохраняет неокругленные версии полупиксельных значений (123). Модули 35 и 55 компенсации движения могут иметь запоминающие элементы, чтобы упрощать это временное хранение промежуточных значений, соответствующих неокругленным версиям полупиксельных значений. Модуль 35 или 55 компенсации движения затем может формировать четвертьпиксельные значения на основе неокругленных полупиксельных значений и целопиксельных значений (124). Эти четвертьпиксельные значения, например, могут соответствовать местоположениям "a", "c", "d" и "l", показанным на фиг.4A-4D.7 illustrates interpolation technology that can be performed by motion compensation module 35 during the encoding process or by motion compensation module 55 during the decoding process. As shown in FIG. 7, the motion compensation module 35 or 55 generates half-pixel values based on integer-pixel values (121). For example, these half-pixel values may correspond to pixel values at locations “b” and “h” of FIGS. 4A-4D. Motion compensation unit 35 or 55 rounds these half-pixel values to form half-pixel interpolated values (122), and also stores unrounded versions of half-pixel values (123). Motion compensation modules 35 and 55 may have memory elements to facilitate this temporary storage of intermediate values corresponding to non-rounded versions of half-pixel values. Motion compensation module 35 or 55 can then generate quarter-pixel values based on non-rounded half-pixel values and integer-pixel values (124). These quarter-pixel values, for example, can correspond to the locations "a", "c", "d" and "l" shown in figa-4D.

Как пояснено выше, полупиксельные значения в местоположении "j" на фиг.4A-4D может требовать некоторого округления промежуточных значений, поскольку местоположение "j" может требовать двух уровней полупиксельных интерполяций. Фиг.8 иллюстрирует технологию интерполяции, которая может выполняться посредством модуля 35 компенсации движения в ходе процесса кодирования или посредством модуля 55 компенсации движения в ходе процесса декодирования, чтобы формировать все интерполированные значения (a-o, показанные на фиг.4A-4D) в рамках реализации с фиксированным числом битов, к примеру, для шестнадцати битов.As explained above, half-pixel values at location “j” in FIGS. 4A-4D may require some rounding of the intermediate values, since location “j” may require two levels of half-pixel interpolations. FIG. 8 illustrates interpolation technology that can be performed by motion compensation module 35 during the encoding process or by motion compensation module 55 during the decoding process to generate all interpolated values (ao shown in FIGS. 4A-4D) as part of an implementation with a fixed number of bits, for example, for sixteen bits.

Аналогично процессу по фиг.7, процесс по фиг.8 начинается с формирования посредством модуля 35 или 55 компенсации движения полупиксельных значений на основе целопиксельных значений (131), к примеру, которые могут соответствовать пиксельным значениям в местоположениях "b" и "h" фиг.4A-4D. Модуль 35 или 55 компенсации движения затем округляет эти полупиксельные значения, чтобы формировать полупиксельные интерполированные значения (132), а также сохраняет неокругленные версии полупиксельных значений (133).Similar to the process of FIG. 7, the process of FIG. 8 begins by generating, with the module 35 or 55, motion compensation of half-pixel values based on integer-pixel values (131), for example, which can correspond to pixel values at locations “b” and “h” of FIG. .4A-4D. Motion compensation unit 35 or 55 then rounds these half-pixel values to form half-pixel interpolated values (132), and also stores unrounded versions of half-pixel values (133).

Далее, модуль 35 или 55 компенсации движения формирует дополнительное полупиксельное значение (к примеру, значение, соответствующее местоположению "j" на фиг.4A-4D) на основе неокругленных полупиксельных значений. Модуль 35 или 55 компенсации движения округляет дополнительное полупиксельное значение (к примеру, значение, соответствующее местоположению "j" на фиг.4A-4D) в случае необходимости, чтобы обеспечивать то, что это значение находится в рамках фиксированной битовой глубины (к примеру, в рамках шестнадцати битов) (135) без снижения точности четвертей пикселов на основе "j". Модуль 35 или 55 компенсации движения затем может формировать четвертьпиксельные значения на основе неокругленных полупиксельных значений, дополнительных полупиксельных значений и целопиксельных значений (136). Таким образом, все четвертьпиксельные значения, показанные с помощью заштриховки на фиг.4В (к примеру, местоположения"a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" могут быть сформированы). Вышеприведенные таблицы и пояснение предоставляют более конкретные подробности относительно операций, которые могут выполняться в этом процессе.Further, the motion compensation unit 35 or 55 generates an additional half-pixel value (for example, a value corresponding to the location “j” in FIGS. 4A-4D) based on the non-rounded half-pixel values. Motion compensation module 35 or 55 rounds an additional half-pixel value (for example, the value corresponding to the location “j” in FIGS. 4A-4D), if necessary, to ensure that this value is within a fixed bit depth (for example, in sixteen bits) (135) without compromising the accuracy of the quarter pixels based on the "j". Motion compensation module 35 or 55 can then generate quarter-pixel values based on non-rounded half-pixel values, additional half-pixel values, and integer-pixel values (136). Thus, all quarter-pixel values shown by shading in FIG. 4B (for example, locations “a”, “c”, “d”, “e”, “f”, “g”, “i”, “k "," l "," m "," n "and" o "may be formed). The above tables and explanation provide more specific details regarding the operations that can be performed in this process.

Технологии фиг.7 и 8 могут применяться ко многим различным контекстам интерполяции. В частности, эти технологии могут использоваться с другими технологиями или без других технологий, описанных в данном документе, которые используют заранее заданные интерполяционные фильтры. Другими словами, технологии фиг.7 и 8, которые исключают или значительно уменьшают промежуточное округление, могут использоваться во время интерполяции согласно одному или заранее заданных интерполяционных фильтров, но также могут использоваться при интерполяции, которая использует неперестраиваемый интерполяционный фильтр, или, возможно, при технологиях адаптивных уточняющих интерполяций. Соответственно, различные технологии, описанные в данном документе, не обязательно должны выполняться вместе, а могут иметь требуемое применение при многих различных настройках или во многих случаях интерполяции.The techniques of FIGS. 7 and 8 can be applied to many different interpolation contexts. In particular, these technologies may be used with or without other technologies described herein that use predefined interpolation filters. In other words, the technologies of FIGS. 7 and 8, which eliminate or significantly reduce intermediate rounding, can be used during interpolation according to one or predefined interpolation filters, but can also be used for interpolation that uses a non-tunable interpolation filter, or, possibly, with technologies adaptive refinement interpolations. Accordingly, the various technologies described herein do not have to be performed together, but may have the desired application with many different settings or in many cases of interpolation.

Технологии этого раскрытия сущности могут быть осуществлены в широком спектре устройств или приборов, включая беспроводной переносной телефон и интегральную схему (IC) или набор IC (т.е. набор микросхем). Все описанные компоненты, модули или узлы предусмотрены для того, чтобы подчеркивать функциональные аспекты, и не обязательно требуют реализации посредством различных аппаратных модулей и т.д.The technologies of this disclosure can be implemented in a wide range of devices or devices, including a cordless handset and integrated circuit (IC) or IC set (i.e., a chipset). All described components, modules or units are provided in order to emphasize functional aspects, and do not necessarily require implementation through various hardware modules, etc.

Технологии, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если реализованы в аппаратных средствах, любые признаки, описанные как модули, узлы или компоненты могут быть реализованы совместно в интегрированном логическом устройстве или отдельно как дискретные, но взаимодействующие логические устройства. Если реализованы в программном обеспечении, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемого носителя, содержащего инструкции, которые, когда выполняются в процессоре, осуществляют один или более способов, описанных выше, Машиночитаемый носитель может содержать машиночитаемый носитель хранения данных и может являться частью компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемые носители хранения данных могут содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно или альтернативно, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает код в форме инструкций или структур данных, и к которой можно осуществлять доступ, считывать или выполнять посредством компьютера.The technologies described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in hardware, any features described as modules, nodes, or components can be implemented together in an integrated logic device or separately as discrete but interacting logic devices. If implemented in software, technologies can be implemented at least in part by a computer-readable medium containing instructions that, when executed on a processor, perform one or more of the methods described above, the computer-readable medium may comprise a computer-readable storage medium, and may be part of a computer software product, which may include packaging. Computer-readable storage media may include random access memory (RAM), such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), flash - memory, magnetic or optical storage media, etc. Additionally or alternatively, the technologies can be implemented, at least in part, through a computer-readable communication medium that transfers or transmits code in the form of instructions or data structures, and which can be accessed, read, or executed by a computer.

Код может выполняться посредством одного или более процессоров, например одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодер-декодер (кодек). Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.The code can be executed by one or more processors, for example, one or more digital signal processors (DSPs), general purpose microprocessors, specialized integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor" as used herein may mean any of the above structure or other structure suitable for implementing the technologies described herein. In addition, in some aspects, the functionality described herein may be provided within specialized software modules or hardware modules configured to encode or decode or integrated into a combined video encoder-decoder (codec). In addition, technologies can be fully implemented in one or more circuits or logic elements.

Описаны различные аспекты раскрытия сущности. Эти и другие аспекты находятся в рамках объема прилагаемой формулы изобретения.Various aspects of the disclosure of the essence are described. These and other aspects are within the scope of the attached claims.

Claims (26)

1. Способ интерполяции прогнозирующих видеоданных для кодирования видео, при этом способ содержит этапы, на которых: формируют множество полупиксельных значений на основе множества целопиксельных значений видеоданных; округляют множество полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений; сохраняют множество полупиксельных значений как множество неокругленных версий множества полупиксельных значений; формируют множество четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений; формируют прогнозирующие данные с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений; и сохраняют прогнозирующие данные для использования при кодировании видео или декодировании видео.1. A method for interpolating predictive video data for encoding video, the method comprising the steps of: generating a plurality of half-pixel values based on a plurality of integer-pixel values of the video data; round a plurality of half-pixel values to form a plurality of half-pixel interpolated values; save a plurality of half-pixel values as a plurality of non-rounded versions of a plurality of half-pixel values; generating a plurality of quarter pixel values based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values; generating predictive data using a plurality of half-pixel interpolated values and a plurality of quarter-pixel values; and store predictive data for use in video encoding or video decoding. 2. Способ по п.1, дополнительно содержащий этапы, на которых: формируют другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и формируют множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.2. The method according to claim 1, additionally containing stages in which: form another half-pixel value in addition to the set of half-pixel values based on the set of unrounded versions of the set of half-pixel values; and generating a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 3. Способ по п.1, дополнительно содержащий этапы, на которых: сохраняют множество полупиксельных интерполированных значений и множество четвертьпиксельных значений в шестнадцатибитовой структуре данных; формируют другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; округляют другое полупиксельное значение так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и формируют множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.3. The method according to claim 1, additionally containing stages in which: a plurality of half-pixel interpolated values and a plurality of quarter-pixel values are stored in a sixteen-bit data structure; generating another half-pixel value in addition to the plurality of half-pixel values based on the plurality of unrounded versions of the plurality of half-pixel values; round another half pixel value so that another half pixel value can be stored in a sixteen-bit data structure; and generating a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 4. Способ по п.1, дополнительно содержащий этап, на котором кодируют один или более видеоблоков с использованием прогнозирующих данных.4. The method according to claim 1, further comprising the step of encoding one or more video blocks using predictive data. 5. Способ по п.1, дополнительно содержащий этап, на котором декодируют один или более видеоблоков с использованием прогнозирующих данных.5. The method according to claim 1, further comprising the step of decoding one or more video blocks using predictive data. 6. Устройство, которое интерполирует прогнозирующие видеоданные для кодирования видео, при этом устройство включает в себя модуль компенсации движения, который: формирует множество полупиксельных значений на основе множества целопиксельных значений видеоданных; округляет множество полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений; сохраняет множество полупиксельных значений как множество неокругленных версий множества полупиксельных значений; формирует множество четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений; формирует прогнозирующие данные с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений; и сохраняет прогнозирующие данные для использования при кодировании видео или декодировании видео.6. A device that interpolates predictive video data for encoding video, wherein the device includes a motion compensation module that: generates a plurality of half-pixel values based on a plurality of integer-pixel values of the video data; rounds multiple half-pixel values to form multiple half-pixel interpolated values; saves multiple half-pixel values as multiple non-rounded versions of multiple half-pixel values; forms a plurality of quarter pixel values based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values; generates predictive data using multiple half-pixel interpolated values and multiple quarter-pixel values; and stores predictive data for use in video encoding or video decoding. 7. Устройство по п.6, в котором модуль компенсации движения: формирует другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и формирует множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.7. The device according to claim 6, in which the motion compensation module: generates another half-pixel value in addition to a plurality of half-pixel values based on a plurality of unrounded versions of the plurality of half-pixel values; and forms a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 8. Устройство по п.6, в котором модуль компенсации движения: сохраняет множество полупиксельных интерполированных значений и множество четвертьпиксельных значений в шестнадцатибитовой структуре данных; формирует другое полупиксельное значение в дополнение к множеству полупиксельных значений, на основе множества неокругленных версий множества полупиксельных значений; округляет другое полупиксельное значение так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и формирует множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.8. The device according to claim 6, in which the motion compensation module: stores a plurality of half-pixel interpolated values and a plurality of quarter-pixel values in a sixteen-bit data structure; generates another half-pixel value in addition to a plurality of half-pixel values, based on a plurality of unrounded versions of the plurality of half-pixel values; rounds another half-pixel value so that another half-pixel value can be stored in a sixteen-bit data structure; and forms a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 9. Устройство по п.6, при этом устройство содержит видеокодер, который включает в себя модуль компенсации движения, при этом видеокодер кодирует с прогнозированием один или более видеоблоков с использованием прогнозирующих данных.9. The device according to claim 6, wherein the device comprises a video encoder that includes a motion compensation module, wherein the video encoder encodes one or more video blocks with prediction using predictive data. 10. Устройство по п.6, при этом устройство содержит видеодекодер, который включает в себя модуль компенсации движения, при этом видеодекодер декодирует с прогнозированием один или более видеоблоков с использованием прогнозирующих данных.10. The device according to claim 6, wherein the device comprises a video decoder that includes a motion compensation module, wherein the video decoder predicts one or more video blocks using predictive data. 11. Устройство по п.6, при этом устройство содержит интегральную схему.11. The device according to claim 6, wherein the device comprises an integrated circuit. 12. Устройство по п.6, при этом устройство содержит микропроцессор.12. The device according to claim 6, wherein the device comprises a microprocessor. 13. Компьютерно-читаемый носитель хранения, содержащий инструкции, которые при выполнении инструктируют устройству интерполировать прогнозирующие видеоданные для кодирования видео, при этом инструкции инструктируют устройству: формировать множество полупиксельных значений на основе множества целопиксельных значений видеоданных; округлять множество полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений; сохранять множество полупиксельных значений как множество неокругленных версий множества полупиксельных значений; формировать множество четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений; формировать прогнозирующие данные с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений; и сохранять прогнозирующие данные для использования при кодировании видео или декодировании видео.13. A computer-readable storage medium containing instructions that, when executed, instruct the device to interpolate predictive video data for encoding video, the instructions instruct the device: generate a plurality of half-pixel values based on a plurality of integer-pixel values of the video data; round off multiple half-pixel values to form multiple half-pixel interpolated values; save multiple half-pixel values as multiple unrounded versions of multiple half-pixel values; generate a plurality of quarter pixel values based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values; generate predictive data using multiple half-pixel interpolated values and multiple quarter-pixel values; and save predictive data for use in video encoding or video decoding. 14. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: формировать другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и формировать множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.14. The computer-readable storage medium according to claim 13, further comprising instructions that, when executed, instruct the device to: generate another half-pixel value in addition to a plurality of half-pixel values based on a plurality of non-rounded versions of the plurality of half-pixel values; and generate a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 15. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: сохранять множество полупиксельных интерполированных значений и множество четвертьпиксельных значений в шестнадцатибитовой структуре данных; формировать другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; округлять другое полупиксельное значение так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и формировать множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.15. The computer-readable storage medium according to claim 13, further comprising instructions that, when executed, instruct the device: to store a plurality of half-pixel interpolated values and a plurality of quarter-pixel values in a sixteen-bit data structure; generate another half-pixel value in addition to the plurality of half-pixel values based on the plurality of unrounded versions of the plurality of half-pixel values; Round another half-pixel value so that another half-pixel value can be stored in a sixteen-bit data structure; and generate a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 16. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: кодировать один или более видеоблоков с использованием прогнозирующих данных.16. The computer-readable storage medium according to item 13, further comprising instructions that, when executed, instruct the device: encode one or more video blocks using predictive data. 17. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: декодировать один или более видеоблоков с использованием прогнозирующих данных.17. The computer-readable storage medium according to item 13, further comprising instructions that, when executed, instruct the device to: decode one or more video blocks using predictive data. 18. Устройство, которое интерполирует прогнозирующие видеоданные для кодирования видео, при этом устройство содержит: средство для формирования множества полупиксельных значений на основе множества целопиксельных значений видеоданных; средство для округления множества полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений; средство для сохранения множества полупиксельных значений как множества неокругленных версий множества полупиксельных значений; средство для формирования множества четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений; средство для формирования прогнозирующих данных с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений; и средство для сохранения прогнозирующих данных для использования при кодировании видео или декодировании видео.18. A device that interpolates predictive video data for encoding video, the device comprising: means for generating a plurality of half-pixel values based on a plurality of integer-pixel values of video data; means for rounding a plurality of half-pixel values to form a plurality of half-pixel interpolated values; means for storing a plurality of half-pixel values as a plurality of non-rounded versions of a plurality of half-pixel values; means for generating a plurality of quarter pixel values based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values; means for generating predictive data using a plurality of half-pixel interpolated values and a plurality of quarter-pixel values; and means for storing predictive data for use in video encoding or video decoding. 19. Устройство по п.18, дополнительно содержащее: средство для формирования другого полупиксельного значения в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и средство для формирования множества дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.19. The apparatus of claim 18, further comprising: means for generating another half-pixel value in addition to a plurality of half-pixel values based on a plurality of non-rounded versions of the plurality of half-pixel values; and means for generating a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 20. Устройство по п.18, дополнительно содержащее: средство для сохранения множества полупиксельных интерполированных значений и множества четвертьпиксельных значений в шестнадцатибитовой структуре данных; средство для формирования другого полупиксельного значения в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; средство для округления другого полупиксельного значения так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и средство для формирования множества дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.20. The apparatus of claim 18, further comprising: means for storing a plurality of half-pixel interpolated values and a plurality of quarter-pixel values in a sixteen-bit data structure; means for generating another half-pixel value in addition to the plurality of half-pixel values based on the plurality of unrounded versions of the plurality of half-pixel values; means for rounding another half-pixel value so that another half-pixel value can be stored in a sixteen-bit data structure; and means for generating a plurality of additional quarter-pixel values in addition to a plurality of quarter-pixel values based on another half-pixel value and a plurality of non-rounded versions of the plurality of half-pixel values. 21. Устройство по п.18, дополнительно содержащее: средство для кодирования одного или более видеоблоков с использованием прогнозирующих данных.21. The device according to p, optionally containing: means for encoding one or more video blocks using predictive data. 22. Устройство по п.18, дополнительно содержащее: средство для декодирования одного или более видеоблоков с использованием прогнозирующих данных.22. The device according to p, further comprising: means for decoding one or more video blocks using predictive data. 23. Устройство, которое кодирует видеоданные, при этом устройство содержит: видеокодер, включающий в себя модуль компенсации движения, который формирует множество полупиксельных значений на основе множества целопиксельных значений опорных видеоданных, округляет множество полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений, сохраняет множество полупиксельных значений как множество неокругленных версий множества полупиксельных значений, формирует множество четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений, формирует прогнозирующие данные с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений и кодирует видеоданные с использованием прогнозирующих данных; и беспроводное передающее устройство, которое передает видеоданные, кодированные посредством модуля компенсации движения, в другое устройство.23. A device that encodes video data, the device comprising: a video encoder including a motion compensation module that generates a plurality of half-pixel values based on a plurality of integer-pixel values of the reference video data, rounds a plurality of half-pixel values to form a plurality of half-pixel interpolated values, stores a plurality of half-pixel values as a set of non-rounded versions of a set of half-pixel values, forms a set of quarter-pixel values on based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values, generates predictive data using a plurality of half-pixel interpolated values and a plurality of quarter-pixel values and encodes video data using the predictive data; and a wireless transmitter that transmits video encoded by the motion compensation module to another device. 24. Устройство по п.23, при этом устройство содержит переносной телефон беспроводной связи.24. The device according to item 23, wherein the device comprises a portable wireless telephone. 25. Устройство, которое декодирует видеоданные, при этом устройство содержит: беспроводное приемное устройство, которое принимает видеоданные; и видеодекодер, включающий в себя модуль компенсации движения, который декодирует видеоданные, при этом при декодировании видеоданных модуль компенсации движения: формирует множество полупиксельных значений на основе множества целопиксельных значений опорных видеоданных; округляет множество полупиксельных значений, чтобы формировать множество полупиксельных интерполированных значений; сохраняет множество полупиксельных значений как множество неокругленных версий множества полупиксельных значений; формирует множество четвертьпиксельных значений на основе множества неокругленных версий множества полупиксельных значений и множества целопиксельных значений; формирует прогнозирующие данные с использованием множества полупиксельных интерполированных значений и множества четвертьпиксельных значений; и декодирует видеоданные с использованием прогнозирующих данных.25. A device that decodes video data, the device comprising: a wireless receiving device that receives video data; and a video decoder including a motion compensation module that decodes the video data, and when decoding the video data, the motion compensation module: generates a plurality of half-pixel values based on the plurality of integer-pixel reference video data; rounds multiple half-pixel values to form multiple half-pixel interpolated values; saves multiple half-pixel values as multiple non-rounded versions of multiple half-pixel values; forms a plurality of quarter pixel values based on a plurality of unrounded versions of a plurality of half-pixel values and a plurality of integer-pixel values; generates predictive data using multiple half-pixel interpolated values and multiple quarter-pixel values; and decodes video data using predictive data. 26. Устройство по п.25, при этом устройство содержит переносной телефон беспроводной связи. 26. The device according A.25, while the device contains a portable telephone wireless communication.
RU2010145537A 2008-04-10 2009-04-10 Advanced interpolation techniques for motion compensation in video coding RU2481727C2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US4402308P 2008-04-10 2008-04-10
US61/044,023 2008-04-10
US4424008P 2008-04-11 2008-04-11
US61/044,240 2008-04-11
US61/057,373 2008-05-30
US12/420,256 US8971412B2 (en) 2008-04-10 2009-04-08 Advanced interpolation techniques for motion compensation in video coding
US12/420,256 2009-04-08

Publications (2)

Publication Number Publication Date
RU2010145537A RU2010145537A (en) 2012-05-20
RU2481727C2 true RU2481727C2 (en) 2013-05-10

Family

ID=

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2552139C1 (en) * 2013-12-16 2015-06-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тульский государственный университет" (ТулГУ) Method for motion compensation in digital dynamic video
RU2568266C1 (en) * 2014-06-05 2015-11-20 Федеральное государственное казенное военное образовательное учреждение высшего профессионального образования "ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Video encoding and decoding method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WIEGAND Т. et al, Overview of the H.264/AVC video coding standard, IEEE. TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, Piscataway, vol. 13, no.7, 1 July 2003, c.c.560-576. SRINIVASAN S. et al, An overview of VC-1, VISUAL COMMUNICATIONS AND IMAGE PROCESSING, Beijing, 12 July 2005, abstract. ATIS Y. et al, Coding of coefficients of two-dimensional non-separable adaptive. Wiener interpolation filter, PROCEEDINGS OF THE SPIE - THE. INTERNATIONAL SOCIETY FOR OPTICAL ENGINEERING, USA, vol. 5960, 12 July 2005, c.c.623-631. SERKAN OKTEM, An Efficient Hardware Architecture for Quarter-Pixel Accurate H.264 Motion Estimation, 10th Euromicro Conference on Digital System Design. Architectures, Methods and Tools (DSD 2007), Lubeck, Germany, August 29-August 31 2007, abstract. Ричардсон Я. Видеокодирование H.264 и MPEG-4 - стандарты нового поколения. - М.: Техносфера, 2005, с.228-231. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2552139C1 (en) * 2013-12-16 2015-06-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тульский государственный университет" (ТулГУ) Method for motion compensation in digital dynamic video
RU2568266C1 (en) * 2014-06-05 2015-11-20 Федеральное государственное казенное военное образовательное учреждение высшего профессионального образования "ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Video encoding and decoding method

Similar Documents

Publication Publication Date Title
KR101208383B1 (en) Advanced interpolation techniques for motion compensation in video coding
KR101208384B1 (en) Advanced interpolation techniques for motion compensation in video coding
KR101242853B1 (en) Offsets at sub-pixel resolution
KR101202632B1 (en) Prediction techniques for interpolation in video coding
KR101242958B1 (en) Interpolation filter support for sub-pixel resolution in video coding
US9154807B2 (en) Inclusion of switched interpolation filter coefficients in a compressed bit-stream
CA2795204A1 (en) Mixed tap filters
KR101646856B1 (en) Reduced resolution pixel interpolation
RU2479941C2 (en) Prediction techniques for interpolation in video coding
RU2481727C2 (en) Advanced interpolation techniques for motion compensation in video coding