RU2496139C2 - Efficient fixed-point approximation for direct and inverse discrete cosine transforms - Google Patents

Efficient fixed-point approximation for direct and inverse discrete cosine transforms Download PDF

Info

Publication number
RU2496139C2
RU2496139C2 RU2010147944/08A RU2010147944A RU2496139C2 RU 2496139 C2 RU2496139 C2 RU 2496139C2 RU 2010147944/08 A RU2010147944/08 A RU 2010147944/08A RU 2010147944 A RU2010147944 A RU 2010147944A RU 2496139 C2 RU2496139 C2 RU 2496139C2
Authority
RU
Russia
Prior art keywords
value
matrix
factor
coefficient
calculating
Prior art date
Application number
RU2010147944/08A
Other languages
Russian (ru)
Other versions
RU2010147944A (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
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2010147944A publication Critical patent/RU2010147944A/en
Application granted granted Critical
Publication of RU2496139C2 publication Critical patent/RU2496139C2/en

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

FIELD: information technology.
SUBSTANCE: method comprises steps where each coefficient in an 8×8 matrix of encoded coefficients is scaled with one multiplier to create a matrix of scaled coefficients, scaled one-dimensional fixed-point transforms are repeatedly performed to transform the matrix of scaled coefficients into a matrix of transformed coefficients, the transformed coefficients are shifted to the right to create a matrix of corrected coefficients, wherein each corrected coefficient in the matrix of corrected coefficients approximates the corresponding value in the matrix of values, which can be created with application of an ideal two-dimensional inverse discrete cosine transform to the matrix of encoded coefficients, an 8×8 block of pixels is displayed, wherein each pixel in the said block includes a pixel component value taking into account the corrected coefficient.
EFFECT: eliminating approximation errors for calculating an inverse discrete cosine transform using fixed-point calculations.
27 cl, 12 dwg, 3 tbl

Description

По настоящей заявке на патент испрашивается приоритет по дате подачи предварительной заявки США № 60/816697, поданной 26 июня 2006, предварительной заявки США № 60/841362, поданной 30 августа 2006, предварительной заявки США № 60/847194, поданной 25 сентября 2006, предварительной заявки США № 60/829669, поданной 16 октября 2006, предварительной заявки США № 60/869530, поданной 11 декабря 2006, предварительной заявки США № 60/883932, поданной 8 января 2007, предварительной заявки США № 60/896778, поданной 23 марта 2007, и предварительной заявки США № 60/909335, поданной 30 марта 2007, которые полностью включены в настоящий документ в качестве ссылки.This patent application claims priority by filing date of provisional application US No. 60/816697, filed June 26, 2006, provisional US application No. 60/841362, filed August 30, 2006, provisional US application No. 60/847194, filed September 25, 2006, provisional US application No. 60/829669, filed October 16, 2006, US provisional application No. 60/869530, filed December 11, 2006, US provisional application No. 60/883932, filed January 8, 2007, US provisional application No. 60/896778, filed March 23, 2007 , and provisional application US No. 60/909335, filed March 30, 2007, which fully Strongly incorporated herein by reference.

Область техники, к которой относится изобретениеFIELD OF THE INVENTION

Это раскрытие относится к компьютерной графике и мультимедиа и, в частности к сжатию графики, изображений и видеоинформации.This disclosure relates to computer graphics and multimedia and, in particular, to the compression of graphics, images and video information.

Предшествующий уровень техникиState of the art

Во многих существующих стандартах кодирования видео и изображения используются способы сжатия для обеспечения возможности сохранения или передачи видео и изображений с высоким разрешением как относительно компактных файлов или потоков данных. Такие стандарты кодирования включают в себя стандарт сжатия неподвижного изображения (JPEG), разработанный группой экспертов по видео, международный стандарт сжатия видео- и аудиоданных (MPEG)-1, MPEG-2, часть 2 MPEG-4, H.261, H.263 и другие стандарты кодирования видео или изображения.Many existing video and image encoding standards use compression methods to enable the storage or transmission of high resolution video and images as relatively compact files or data streams. Such coding standards include the still image compression standard (JPEG) developed by the video expert group, the international video and audio data compression standard (MPEG) -1, MPEG-2, part 2 MPEG-4, H.261, H.263 and other video or image encoding standards.

Согласно многим из этих стандартов, видеокадры сжимают с использованием "пространственного" кодирования. Эти кадры могут быть исходными кадрами (то есть, i-кадрами) или могут быть остаточными кадрами, сформированными с временным кодированием, которое использует компенсацию движения. Во время пространственного кодирования кадры разбиваются на блоки пикселей равного размера. Например, несжатый кадр может быть разбит на ряд блоков пикселей 8×8. Для каждого блока пикселей, компоненты пикселя разделяются на матрицы значений компонента пикселя. Например, каждый блок пикселей может быть разделен на матрицу значений компонента пикселя Y, матрицу значений компонента пикселя U и матрицу значений компонента пикселя V. В этом примере, значения компонента пикселя Y указывают значения яркости и значения компонентов пикселя U и V представляют значения информации о цвете.According to many of these standards, video frames are compressed using spatial encoding. These frames may be source frames (i.e., i-frames) or may be residual frames formed with time coding that uses motion compensation. During spatial encoding, frames are split into blocks of pixels of equal size. For example, an uncompressed frame can be divided into a series of 8 × 8 pixel blocks. For each block of pixels, the pixel components are divided into matrices of pixel component values. For example, each pixel block may be divided into a matrix of pixel component values Y, a matrix of pixel component values U and a matrix of pixel component values V. In this example, pixel Y component values indicate brightness values and pixel component values U and V represent color information values .

Кроме того, во время пространственного кодирования, к каждой матрице значений компонента пикселя в кодируемом кадре применяется прямое дискретное косинусное преобразование (FDCT). Идеальное одномерное FDCT определяется:In addition, during spatial coding, a forward discrete cosine transform (FDCT) is applied to each matrix of pixel component values in the encoded frame. The ideal one-dimensional FDCT is determined by:

Figure 00000001
Figure 00000001

где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаютсяwhere s is an array of N initial values, t is an array of N converted values, and the coefficients c are specified

Figure 00000002
Figure 00000002

для 1≤k≤N-l.for 1≤k≤N-l.

Идеальное двумерное FDCT определяется формулой:The ideal two-dimensional FDCT is determined by the formula:

Figure 00000003
Figure 00000003

где s - массив N исходных значений, t - массив N преобразованных значений, и c(i,j) задается c(i,j)=c(i)c(j), и причем c(k) определяется, как в одномерном случае.where s is an array of N initial values, t is an array of N converted values, and c (i, j) is given by c (i, j) = c (i) c (j), and moreover, c (k) is defined as in one-dimensional case.

Матрица коэффициентов формируется при преобразовании блока значений компонента пикселя с использованием FDCT. Далее эту матрицу коэффициентов можно квантовать и кодировать с использованием, например, кодов Хаффмана или арифметических кодов. Битовый поток видео представляет объединенный результат выполнения этого процесса для всех блоков значений цветового компонента в последовательности видеокадров в несжатой последовательности видеокадров.A matrix of coefficients is formed by converting a block of pixel component values using FDCT. Further, this matrix of coefficients can be quantized and encoded using, for example, Huffman codes or arithmetic codes. The video bitstream represents the combined result of this process for all blocks of color component values in a sequence of video frames in an uncompressed sequence of video frames.

Несжатый видеокадр может быть получен из битового потока видео с изменением направления этого процесса на обратное. В частности, каждая матрица коэффициентов в битовом потоке восстанавливается из сжатых данных, и восстановленные из сжатых данных значения деквантуются для получения матрицы преобразованных коэффициентов. Далее к каждой матрице преобразованных коэффициентов применяется обратное дискретное косинусное преобразование ("IDCT") для получения матриц значений компонента пикселя. Идеальное одномерное IDCT определяется:An uncompressed video frame can be obtained from the bitstream of the video by reversing the direction of this process. In particular, each matrix of coefficients in the bitstream is reconstructed from the compressed data, and the values reconstructed from the compressed data are dequanted to obtain a matrix of transformed coefficients. Next, an inverse discrete cosine transform ("IDCT") is applied to each matrix of transformed coefficients to obtain matrices of pixel component values. The ideal one-dimensional IDCT is determined by:

Figure 00000004
Figure 00000004

где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаютсяwhere s is an array of N initial values, t is an array of N converted values, and the coefficients c are specified

Figure 00000005
Figure 00000005

для 1≤k≤N-l.for 1≤k≤N-l.

Идеальное двумерное IDCT определяется формулой:The ideal two-dimensional IDCT is determined by the formula:

Figure 00000006
Figure 00000006

Далее получающиеся в результате матрицы значений компонента пикселя заново собираются в блоки пикселей, и эти блоки пикселей заново собираются для формирования декодированного кадра. Если декодированный кадр является i-кадром, то этот кадр теперь полностью декодирован. Однако если несжатый кадр является прогнозированным или бипрогнозированным кадром, то декодированный кадр является только декодированным остаточным кадром. Законченный кадр формируется с созданием восстановленного кадра с использованием векторов движения, связанных с декодированным кадром, и последующего суммирования восстановленного кадра с декодированным остаточным кадром.Next, the resulting matrix of values of the pixel component are re-assembled into pixel blocks, and these pixel blocks are re-assembled to form a decoded frame. If the decoded frame is an i-frame, then this frame is now fully decoded. However, if the uncompressed frame is a predicted or bi-predicted frame, then the decoded frame is only a decoded residual frame. A completed frame is formed by creating a reconstructed frame using motion vectors associated with the decoded frame, and then adding the reconstructed frame to the decoded residual frame.

При идеальных обстоятельствах информация не теряется при использовании FDCT для кодирования или IDCT для декодирования блока значений компонента пикселя. Следовательно, при этих идеальных обстоятельствах, декодированная версия видеокадра идентична исходной версии видеокадра. Однако вычисление FDCT или IDCT может быть в вычислительном отношении трудным, потому что вычисление преобразований FDCT и IDCT подразумевает использование вещественных чисел и значительное количество операций умножения. Поэтому вещественные числа, используемые в преобразованиях FDCT и IDCT, часто аппроксимируются с использованием чисел с ограниченной точностью. В результате использования чисел с ограниченной точностью для представления значений вещественных чисел получаются ошибки округления. Кроме того, дополнительные ошибки могут вноситься квантованием и деквантованием.Under ideal circumstances, information is not lost when using FDCT for encoding or IDCT for decoding a block of pixel component values. Therefore, under these ideal circumstances, the decoded version of the video frame is identical to the original version of the video frame. However, calculating the FDCT or IDCT can be computationally difficult because calculating the FDCT and IDCT transforms involves the use of real numbers and a significant number of multiplication operations. Therefore, the real numbers used in the FDCT and IDCT transforms are often approximated using numbers with limited precision. Using limited precision numbers to represent real numbers results in rounding errors. In addition, additional errors can be introduced by quantization and dequantization.

Ошибки в процессе сжатия и восстановления из сжатых данных могут в результате привести к существенным различиям между исходным несжатым кадром и конечным несжатым кадром. Например, цвета в конечном несжатом кадре могут отличаться от цветов в исходном несжатом кадре. Кроме того, ошибки, вызванные рассогласованием между реализацией преобразований IDCT в кодере и реализацией IDCT в декодере, могут накапливаться во время кодирования и декодирования последовательностей прогнозированных кадров. Эти накопленные ошибки обычно называются "дрейфом IDCT".Errors in the process of compressing and recovering from compressed data can result in significant differences between the original uncompressed frame and the final uncompressed frame. For example, the colors in the final uncompressed frame may differ from the colors in the original uncompressed frame. In addition, errors caused by a mismatch between the implementation of the IDCT transforms in the encoder and the implementation of IDCT in the decoder may accumulate during encoding and decoding of sequences of predicted frames. These accumulated errors are commonly referred to as the “IDCT drift”.

Сущность изобретенияSUMMARY OF THE INVENTION

Описаны способы аппроксимации вычисления обратного дискретного косинусного преобразования с использованием вычислений с фиксированной запятой. Согласно этим способам, матрицы масштабированных коэффициентов формируются умножением коэффициентов в матрицах закодированных коэффициентов на масштабные множители. Затем, с добавлением значения смещения центра к коэффициенту DC матрицы масштабированных коэффициентов формируются матрицы смещенных коэффициентов. Далее используются арифметические операции с фиксированной запятой для применения преобразования к матрицам смещенных коэффициентов. После этого значения в получающихся в результате матрицах сдвигаются вправо для получения матриц значений компонента пикселя. Матрицы значений компонента пикселя затем объединяются для создания матриц пикселей. Матрицы пикселей, сформированные этими способами, близко напоминают матрицы пикселей, восстановленные из сжатых данных с использованием идеального обратного дискретного косинусного преобразования ("IDCT").Methods for approximating the calculation of the inverse discrete cosine transform using fixed-point computations are described. According to these methods, matrices of scaled coefficients are formed by multiplying the coefficients in the matrices of encoded coefficients by scale factors. Then, with the addition of the center offset value to the DC coefficient of the matrix of scaled coefficients, matrices of biased coefficients are formed. Next, fixed-point arithmetic operations are used to apply the transform to matrices of biased coefficients. After that, the values in the resulting matrices are shifted to the right to obtain the matrix of pixel component values. Matrices of pixel component values are then combined to create pixel matrices. The pixel arrays formed by these methods closely resemble pixel arrays reconstructed from compressed data using the ideal inverse discrete cosine transform ("IDCT").

В одном аспекте, способ содержит масштабирование каждого коэффициента в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов. В этом способе, A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Способ также содержит использование повторных применений масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, способ содержит сдвиг вправо преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Кроме того, способ содержит отображение блока пикселей, 8×8. Каждый пиксель в блоке пикселей, 8×8, включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.In one aspect, the method comprises scaling each coefficient in a matrix of encoded coefficients, 8 × 8, with one of factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J for forming a matrix of scaled coefficients. In this method, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528. The method also includes the use of repeated applications of a scaled one-dimensional fixed-point transform to convert a matrix of scaled coefficients to a matrix of converted coefficients. In addition, the method comprises shifting the converted coefficients to the right in the matrix of transformed coefficients to form a matrix of adjusted coefficients. Each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional IDCT to the matrix of encoded coefficients. In addition, the method comprises displaying a block of pixels, 8 × 8. Each pixel in the 8 × 8 pixel block includes a pixel component value based on the adjusted coefficient in the matrix of adjusted coefficients.

В другом аспекте, устройство содержит модуль масштабирования, который масштабирует каждый коэффициент в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Устройство также содержит модуль обратного преобразования, который использует повторные применения масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, устройство содержит модуль сдвига вправо, который сдвигает вправо преобразованные коэффициенты в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Устройство также содержит модуль вывода, который выводит блок пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.In another aspect, the device comprises a scaling module that scales each coefficient in the matrix of encoded coefficients, 8 × 8, with one of factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I or a factor J to form a matrix of scaled coefficients, with A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528. The device also includes an inverse transform module that uses repeated applications of the scaled one-dimensional fixed-point transform to convert the matrix of scaled coefficients to the matrix of converted coefficients. In addition, the device comprises a right shift module that shifts the converted coefficients to the right in the matrix of converted coefficients to form a matrix of adjusted coefficients. Each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional IDCT to the matrix of encoded coefficients. The device also contains an output module that outputs a block of pixels, 8 × 8. Each pixel in the block of pixels includes a pixel component value based on the adjusted coefficient in the matrix of adjusted coefficients.

В другом аспекте, устройство содержит средство для масштабирования коэффициентов в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Кроме того, устройство содержит средство для использования повторных применений масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, устройство содержит средство для сдвига вправо преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Кроме того, устройство содержит средство для вывода блока пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.In another aspect, the apparatus comprises means for scaling coefficients in an encoded coefficient matrix, 8 × 8, by one of factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form a matrix of scaled coefficients, with A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528. In addition, the device comprises means for using repeated applications of a scaled one-dimensional fixed-point transform to convert a matrix of scaled coefficients to a matrix of converted coefficients. In addition, the device comprises means for shifting the converted coefficients to the right in the matrix of converted coefficients to form a matrix of adjusted coefficients. Each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional IDCT to the matrix of encoded coefficients. In addition, the device includes means for outputting a block of pixels, 8 × 8. Each pixel in the block of pixels includes a pixel component value based on the adjusted coefficient in the matrix of adjusted coefficients.

В другом аспекте, изобретение ориентировано на машиночитаемый носитель информации, содержащий команды. Эти команды вызывают масштабирование программируемым процессором каждого коэффициента в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Команды также вызывают использование повторных применений масштабированного одномерного преобразования с фиксированной запятой программируемым процессором для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, команды вызывают сдвиг вправо программируемым процессором преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Команды также вызывают вывод программируемым процессором сигналов, которые вызывают отображение устройством отображения блока пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.In another aspect, the invention is directed to a computer-readable storage medium comprising instructions. These commands cause the programmable processor to scale each coefficient in the matrix of encoded coefficients, 8 × 8, with one of factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form matrices of scaled coefficients, with A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528. Commands also cause the use of repeated applications of a scaled, one-dimensional fixed-point transform by a programmable processor to convert a matrix of scaled coefficients to a matrix of converted coefficients. In addition, the commands cause the programmed processor to shift the converted coefficients to the right in the matrix of converted coefficients to form a matrix of adjusted coefficients. Each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional IDCT to the matrix of encoded coefficients. The commands also cause the programmable processor to output signals that cause the display device to display a 8 × 8 pixel block. Each pixel in the block of pixels includes a pixel component value based on the adjusted coefficient in the matrix of adjusted coefficients.

В некоторых случаях, машиночитаемый носитель информации может являться частью компьютерного программного продукта, который может быть продан изготовителям и/или использоваться в устройстве кодирования видео. Компьютерный программный продукт может включать в себя машиночитаемый носитель информации и в некоторых случаях может также включать в себя упаковочные материалы.In some cases, a computer-readable storage medium may be part of a computer program product that can be sold to manufacturers and / or used in a video encoding device. A computer program product may include a computer-readable storage medium and, in some cases, may also include packaging materials.

В нижеследующем описании и прилагаемых чертежах подробно изложены один или несколько примеров. Другие признаки, цели и преимущества изобретения будут очевидны из упомянутых описания и чертежей и из формулы изобретения.In the following description and accompanying drawings, one or more examples are set forth in detail. Other features, objects, and advantages of the invention will be apparent from the foregoing description and drawings, and from the claims.

Краткое описание чертежейBrief Description of the Drawings

Фиг.1 - блок-схема, изображающая иллюстративное устройство, которое кодирует и декодирует файлы мультимедиа.Figure 1 is a block diagram depicting an illustrative device that encodes and decodes multimedia files.

Фиг.2 - блок-схема, изображающая иллюстративные детали модуля кодирования.Figure 2 is a block diagram depicting illustrative details of an encoding module.

Фиг.3 - блок-схема, изображающая иллюстративные детали модуля декодирования.Figure 3 is a block diagram depicting illustrative details of a decoding module.

Фиг.4 - блок-схема, изображающая иллюстративную работу модуля кодирования.4 is a block diagram depicting an illustrative operation of the encoding module.

Фиг.5 - блок-схема, изображающая иллюстративную работу модуля декодирования.5 is a block diagram depicting an illustrative operation of a decoding module.

Фиг.6 - блок-схема, изображающая иллюстративные детали модуля обратного дискретного косинусного преобразования ("IDCT").6 is a block diagram depicting illustrative details of an inverse discrete cosine transform ("IDCT") module.

Фиг.7 - блок-схема, изображающая иллюстративную работу модуля обратного преобразования.7 is a block diagram depicting an illustrative operation of the inverse transform module.

Фиг.8 - блок-схема, изображающая иллюстративные детали модуля прямого дискретного косинусного преобразования ("FDCT").8 is a block diagram depicting illustrative details of a direct discrete cosine transform ("FDCT") module.

Фиг.9 - блок-схема, изображающая иллюстративную работу модуля прямого преобразования вектора.Fig.9 is a block diagram depicting an illustrative operation of the direct vector conversion module.

Фиг.10A - блок-схема, изображающая иллюстративное одномерное преобразование.10A is a block diagram depicting an illustrative one-dimensional transformation.

Фиг.10В - блок-схема, изображающая иллюстративное масштабированное одномерное преобразование.10B is a block diagram illustrating an illustrative scaled one-dimensional transform.

Фиг.11 - блок-схема, изображающая иллюстративное масштабированное одномерное преобразование, используемое модулем обратного преобразования.11 is a block diagram depicting an illustrative scaled one-dimensional transform used by the inverse transform module.

Подробное описаниеDetailed description

Фиг.1 является блок-схемой, изображающей иллюстративное устройство 2, которое кодирует и декодирует файлы мультимедиа. Устройство 2 может содержать персональный компьютер, мобильный радиотелефон, сервер, сетевое устройство, компьютер, встроенный в транспортное средство, видеоигровую платформу, переносное видеоигровое устройство, автоматизированное рабочее место, компьютерный киоск, цифровой идентификационный комплект, универсальный компьютер, телевизионную приставку, сетевой телефон, персонального цифрового секретаря, видеоигровую платформу, мобильный медиаплеер, бытовой медиаплеер, цифровой видеопроектор, личный медиаплеер (например, iPod) или другой тип электронного устройства.1 is a block diagram depicting an illustrative device 2 that encodes and decodes multimedia files. Device 2 may comprise a personal computer, a mobile radiotelephone, a server, a network device, a computer embedded in a vehicle, a video game platform, a portable video game device, a workstation, a computer kiosk, a digital identification kit, a universal computer, a television set-top box, a network telephone, a personal digital secretary, video game platform, mobile media player, consumer media player, digital video projector, personal media player (e.g. iPod) or other th type of electronic device.

Устройство 2 может включать в себя источник 4 мультимедиа для формирования мультимедийных данных. Источник 4 мультимедиа может содержать цифровую видео- или фотокамеру для ввода данных изображения. Источник 4 мультимедиа может быть встроен в устройство 2 или может быть присоединен к устройству 2 как периферийное устройство. Источник 4 мультимедиа может также содержать микрофон для записи аудиоданных. Источник 4 мультимедиа может обеспечивать мультимедийные данные в процессор 6. Процессор 6 может содержать цифровой сигнальный процессор (DSP), микропроцессор или некоторый другой тип интегральной схемы.The device 2 may include a multimedia source 4 for generating multimedia data. The media source 4 may include a digital video or camera for inputting image data. The multimedia source 4 may be integrated in the device 2 or may be connected to the device 2 as a peripheral device. The media source 4 may also comprise a microphone for recording audio data. Multimedia source 4 may provide multimedia data to processor 6. Processor 6 may comprise a digital signal processor (DSP), microprocessor, or some other type of integrated circuit.

Когда процессор 6 принимает мультимедийные данные из источника 4 мультимедиа, модуль 8 кодирования может кодировать мультимедийные данные. Модуль 8 кодирования может содержать программные средства, исполняемые процессором 6. В качестве альтернативы, модуль 8 кодирования может содержать специализированные аппаратные средства в процессоре 6, который кодирует мультимедийные данные. В еще одном альтернативном варианте, модуль 8 кодирования может содержать любую комбинацию программных и аппаратных средств для кодирования мультимедийных данных.When the processor 6 receives multimedia data from the multimedia source 4, the encoding unit 8 may encode multimedia data. Encoding module 8 may comprise software executable by processor 6. Alternatively, encoding module 8 may comprise specialized hardware in processor 6 that encodes multimedia data. In yet another alternative embodiment, encoding module 8 may comprise any combination of software and hardware for encoding multimedia data.

Модуль 8 кодирования может сохранять закодированные мультимедийные данные в репозитории 10 мультимедиа. Репозиторий 10 мультимедиа может содержать флэш-память, оперативное запоминающее устройство, накопитель на жестких дисках или некоторый другой тип энергозависимого или энергонезависимого блока хранения данных.Encoding module 8 may store the encoded multimedia data in the multimedia repository 10. The multimedia repository 10 may comprise flash memory, random access memory, a hard disk drive, or some other type of volatile or non-volatile storage unit.

Модуль 12 декодирования может извлекать закодированные мультимедийные данные из репозитория 10 мультимедиа. Модуль 12 декодирования может содержать программные средства, исполняемые процессором 6. В качестве альтернативы, модуль 12 декодирования может содержать специализированные аппаратные средства в процессоре 6, который декодирует закодированные мультимедийные данные. В еще одном альтернативном варианте, модуль 12 декодирования может содержать комбинацию программных и аппаратных средств, которые совместно функционируют для декодирования закодированных мультимедийных данных.Decoding module 12 may extract encoded multimedia data from the multimedia repository 10. Decoding module 12 may comprise software executable by processor 6. Alternatively, decoding module 12 may comprise specialized hardware in processor 6, which decodes the encoded multimedia data. In yet another alternative embodiment, decoding module 12 may comprise a combination of software and hardware that work together to decode encoded multimedia data.

Блок 14 воспроизведения мультимедиа в устройстве 2 может воспроизводить мультимедийные данные, декодированные модулем 12 декодирования. Например, блок 14 воспроизведения мультимедиа может содержать компьютерный монитор, который воспроизводит мультимедийные данные видео или изображения. В другом примере, блок 14 воспроизведения мультимедиа может содержать устройство вывода аудио (например, динамик), которое воспроизводит звуковые мультимедийные данные аудио. Блок 14 воспроизведения мультимедиа может быть интегрирован в устройство 2 или может быть связан с ним через проводную или беспроводную линию связи как периферийное устройство.The multimedia playback unit 14 in the device 2 can reproduce multimedia data decoded by the decoding unit 12. For example, the multimedia playback unit 14 may comprise a computer monitor that reproduces multimedia video or image data. In another example, the multimedia playback unit 14 may include an audio output device (eg, a speaker) that reproduces audio multimedia audio data. The multimedia playback unit 14 may be integrated into the device 2 or may be connected to it via a wired or wireless communication line as a peripheral device.

Устройство 2 может также содержать сетевой интерфейс 16. Сетевой интерфейс 16 может обеспечивать связь между устройством 2 и компьютерной сетью через проводную или беспроводную линию связи. Например, сетевой интерфейс 16 может обеспечивать связь между устройством 2 и сетью мобильной радиотелефонной связи. Устройство 2 может принимать файлы мультимедиа через сетевой интерфейс 16. Например, устройство 2 может принимать фотографии, видеоклипы, потоковое видео (например, телевидение, видеоконференцию, кинофильмы), аудиоклипы (например, мелодии для звонка, песни, файлы MP3), потоковое аудио (например, цифровые радиостанции, речевые вызовы и т.д.) через сетевой интерфейс 16. Когда сетевой интерфейс 16 принимает битовый поток видео или файла мультимедиа, сетевой интерфейс 16 может сохранять этот битовый поток видео или файла мультимедиа в репозитории 10 мультимедиа.The device 2 may also comprise a network interface 16. The network interface 16 may provide communication between the device 2 and the computer network via a wired or wireless communication line. For example, network interface 16 may provide communication between device 2 and a mobile radiotelephone network. Device 2 can receive media files through a network interface 16. For example, device 2 can receive photos, video clips, streaming video (e.g. television, video conferencing, movies), audio clips (e.g. ringtones, songs, MP3 files), streaming audio ( for example, digital radio stations, voice calls, etc.) through the network interface 16. When the network interface 16 receives a video or media file bitstream, the network interface 16 can store this video or media file bitstream in the repository 10 mu timedia.

Видеосигнал может быть описан в терминах последовательности изображений, которые включают в себя кадры (все изображение), или области (например, изображение, которое содержит или нечетные или четные строки кадра). Кроме того, каждый кадр или область могут включать в себя два или большее количество вырезок или субфрагментов кадра или области. Термин "кадр", используемый в этом документе, или один или в комбинации с другими словами, может относиться к изображению, кадру, области или их слою.A video signal may be described in terms of a sequence of images that include frames (the entire image) or areas (for example, an image that contains either odd or even lines of a frame). In addition, each frame or region may include two or more clippings or sub-fragments of the frame or region. The term “frame,” as used herein, either alone or in combination with other words, may refer to an image, frame, area, or layer thereof.

Когда модуль 8 кодирования кодирует последовательность видеокадров, модуль 8 кодирования может начинать с выбора тех видеокадров, которые должны быть "i-кадрами". Например, модуль 8 кодирования может выбирать каждый восьмой кадр как i-кадр. I-кадры являются кадрами, которые не ссылаются на другие кадры. После выбора i-кадров, модуль 8 кодирования использует "пространственное кодирование" для кодирования i-кадров. Кроме того, модуль 8 кодирования может использовать "временное кодирование" для кодирования оставшихся кадров.When encoding module 8 encodes a sequence of video frames, encoding module 8 may begin by selecting those video frames that should be “i-frames”. For example, coding unit 8 may select every eighth frame as an i-frame. I-frames are frames that do not refer to other frames. After selecting i-frames, encoding module 8 uses “spatial encoding” to encode i-frames. In addition, encoding module 8 may use “temporal encoding” to encode the remaining frames.

Для использования пространственного кодирования для кодирования кадра, модуль 8 кодирования может разбивать данные кадра на блоки пикселей. Например, модуль 8 кодирования может разбивать данные кадра на блоки пикселей, шириной в восемь пикселей и высотой в восемь пикселей (то есть, каждый блок пикселей содержит 64 пикселя). После этого модуль 8 кодирования может разделять значения компонента пикселя из пикселей в каждом блоке пикселей на отдельные матрицы значений компонента пикселя. Значения компонента пикселя одного пикселя являются значениями, которые характеризуют вид пикселя. Например, каждый пиксель может специфицировать значение компонента пикселя Y, значение компонента пикселя Cr и значение компонента пикселя Cb. Значение компонента пикселя Y указывает яркость пикселя, значение компонента пикселя Cr указывает информацию о красном цвете пикселя, и значение компонента пикселя Cb указывает информацию о синем цвете пикселя. В этом примере, когда модуль 8 кодирования разделяет значения компонента пикселя из блока пикселей, модуль 8 кодирования может получать матрицу значений компонента пикселя Y, матрицу значений компонента пикселя Cr и матрицу значений компонента пикселя Cb.To use spatial encoding to encode the frame, the encoding module 8 may split the frame data into pixel blocks. For example, coding unit 8 may split the frame data into blocks of pixels eight pixels wide and eight pixels high (that is, each pixel block contains 64 pixels). Thereafter, coding unit 8 may separate pixel component values from pixels in each pixel block into separate matrixes of pixel component values. The pixel component values of one pixel are values that characterize the appearance of the pixel. For example, each pixel may specify a value of a component of a pixel Y, a value of a component of a pixel Cr, and a value of a component of a pixel Cb. The value of the pixel component Y indicates the brightness of the pixel, the value of the pixel component Cr indicates information on the red color of the pixel, and the value of the pixel component Cb indicates information on the blue color of the pixel. In this example, when the encoding module 8 separates the values of the pixel component from the pixel block, the encoding module 8 may obtain a matrix of values of the pixel component Y, a matrix of values of the pixel component Cr, and a matrix of values of the pixel component Cb.

После разделения значений компонентов пикселя в матрицы значений компонента пикселя, со сдвигом влево значений компонента пикселя в матрицах значений компонента пикселя, модуль 8 кодирования формирует матрицы скорректированных коэффициентов. Для каждой матрицы скорректированных коэффициентов, модуль 8 кодирования использует арифметические операции с фиксированной запятой для повторного применения одномерного преобразования к матрице скорректированных коэффициентов, тем самым формируя матрицы преобразованных коэффициентов. Затем модуль 8 кодирования формирует матрицу масштабированных коэффициентов путем масштабирования матрицы преобразованных коэффициентов набором масштабных множителей. Каждый из этих масштабных множителей является целочисленным значением. Масштабные множители были выбраны так, что множители в одномерном преобразовании могут быть аппроксимированы с использованием простых рациональных чисел.After dividing the values of the pixel components into the matrix of values of the pixel component, with the left shift of the values of the pixel component in the matrix of values of the pixel component, the encoding module 8 generates matrices of adjusted coefficients. For each matrix of adjusted coefficients, coding module 8 uses fixed-point arithmetic to reapply the one-dimensional transform to the matrix of adjusted coefficients, thereby forming matrices of converted coefficients. Then, coding module 8 generates a matrix of scaled coefficients by scaling the matrix of transformed coefficients with a set of scale factors. Each of these scale factors is an integer value. The scale factors were chosen so that the factors in the one-dimensional transformation can be approximated using simple rational numbers.

Каждый масштабированный коэффициент в матрице масштабированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые формируются с применением идеального двумерного прямого дискретного косинусного преобразования ("FDCT") к соответствующей матрице значений цветового компонента. Идеальное одномерное FDCT определяется:Each scaled coefficient in the matrix of scaled coefficients approximates the corresponding value in the matrix of values that are generated using the ideal two-dimensional direct discrete cosine transform ("FDCT") to the corresponding matrix of values of the color component. The ideal one-dimensional FDCT is determined by:

Figure 00000001
Figure 00000001

где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаютсяwhere s is an array of N initial values, t is an array of N converted values, and the coefficients c are specified

Figure 00000007
Figure 00000007

для 1≤k≤N-l.for 1≤k≤N-l.

Идеальное двумерное FDCT определяется формулой:The ideal two-dimensional FDCT is determined by the formula:

Figure 00000008
Figure 00000008

где s - массив N исходных значений, t - массив N преобразованных значений, и c(i,j) задается c(i,j)=c(i)c(j), и причем c(k) определяется, как в одномерном случае.where s is an array of N initial values, t is an array of N converted values, and c (i, j) is given by c (i, j) = c (i) c (j), and moreover, c (k) is defined as in one-dimensional case.

После получения матрицы масштабированных коэффициентов, модуль 8 кодирования формирует матрицу квантованных коэффициентов путем квантования коэффициентов в матрице масштабированных коэффициентов. Квантование масштабированных коэффициентов может уменьшать количество информации, связанной с высокочастотными коэффициентами в матрице масштабированных коэффициентов. После формирования матрицы квантованных коэффициентов, модуль 8 кодирования может применять схему энтропийного кодирования к матрице квантованных коэффициентов. Например, модуль 8 кодирования может применять схему кодирования методом Хаффмана к квантованным коэффициентам в матрице коэффициентов. Когда модуль 8 кодирования применяет схему энтропийного кодирования к каждой из матриц квантованных коэффициентов, модуль 8 кодирования может выводить закодированные матрицы как часть битового потока видео.After receiving a matrix of scaled coefficients, coding module 8 generates a matrix of quantized coefficients by quantizing the coefficients in a matrix of scaled coefficients. The quantization of scaled coefficients can reduce the amount of information associated with high-frequency coefficients in the matrix of scaled coefficients. After the matrix of quantized coefficients is generated, encoding module 8 may apply the entropy coding scheme to the matrix of quantized coefficients. For example, coding module 8 may apply a Huffman coding scheme to quantized coefficients in a coefficient matrix. When encoding module 8 applies an entropy encoding scheme to each of the matrices of quantized coefficients, encoding module 8 may output encoded matrices as part of the video bitstream.

Для использования временного кодирования для кодирования кадра, модуль 8 кодирования может разделять кадр на "макроблоки". В зависимости от используемого стандарта кодирования, эти макроблоки могут иметь фиксированный или переменный размер и могут быть перекрывающимися или неперекрывающимися. Например, каждый макроблок может быть блоком пикселей 16×16. Для каждого макроблока в кадре, модуль 8 кодирования может пытаться идентифицировать исходный макроблок в одном или нескольких опорных кадрах. В зависимости от стандарта кодирования, опорные кадры могут быть i-кадрами, прогнозированными кадрами или бипрогнозированными кадрами. Если модуль 8 кодирования может идентифицировать исходный макроблок в опорном кадре, то модуль 8 кодирования записывает вектор движения для этого макроблока. Вектор движения включает в себя значение x, которое указывает горизонтальное перемещение макроблока относительно идентифицированного исходного макроблока, и значение y, которое указывает вертикальное перемещение макроблока относительно идентифицированного исходного макроблока. Если модуль 8 кодирования не способен идентифицировать исходный макроблок для упомянутого макроблока, то может не потребоваться запись вектора движения модулем 8 кодирования для этого макроблока. Затем, модуль 8 кодирования формирует "восстановленный" кадр. Восстановленный кадр содержит кадр, который получается в результате перемещения макроблоков из опорных кадров согласно записанным векторам движения для текущего кадра. После формирования восстановленного кадра, модуль 8 кодирования вычитает значения компонента пикселя в каждом пикселе восстановленного кадра из соответствующих значений компонента пикселя в соответствующих пикселях текущего кадра, в результате чего получается "остаточный" кадр. После этого модуль 8 кодирования может использовать схему энтропийного кодирования для сжатия векторов движения для макроблоков текущего кадра. Кроме того, модуль 8 кодирования использует описанный выше способ пространственного кодирования для сжатия остаточного кадра.To use time coding to encode a frame, encoding module 8 may divide the frame into “macroblocks”. Depending on the coding standard used, these macroblocks may be fixed or variable in size and may be overlapping or non-overlapping. For example, each macroblock may be a 16 × 16 pixel block. For each macroblock in a frame, coding module 8 may attempt to identify the source macroblock in one or more reference frames. Depending on the coding standard, the reference frames may be i-frames, predicted frames, or bi-predicted frames. If coding unit 8 can identify the source macroblock in the reference frame, then coding unit 8 records the motion vector for this macroblock. The motion vector includes an x value that indicates the horizontal movement of the macroblock relative to the identified source macroblock, and a y value that indicates the vertical movement of the macroblock relative to the identified source macroblock. If encoding module 8 is not able to identify the source macroblock for said macroblock, then recording the motion vector by encoding module 8 for this macroblock may not be required. Then, coding unit 8 forms a “reconstructed” frame. The restored frame contains a frame, which is obtained as a result of the movement of macroblocks from the reference frames according to the recorded motion vectors for the current frame. After generating the reconstructed frame, the encoding module 8 subtracts the pixel component values in each pixel of the reconstructed frame from the corresponding pixel component values in the corresponding pixels of the current frame, resulting in a “residual” frame. After that, the encoding module 8 can use the entropy encoding scheme to compress the motion vectors for the macroblocks of the current frame. In addition, encoding module 8 uses the spatial encoding method described above to compress the residual frame.

Модуль 12 декодирования может выполнять процесс, аналогичный процессу модуля 8 кодирования, но в обратном порядке. Например, для выполнения пространственного декодирования, модуль 12 декодирования может применять схему энтропийного декодирования к каждой закодированной матрице квантованных коэффициентов в закодированном битовом потоке видео. После этого модуль 12 декодирования может деквантовать коэффициенты в каждой матрице квантованных коэффициентов, тем самым формируя матрицу деквантованных коэффициентов для каждой матрицы квантованных коэффициентов. Для каждой матрицы квантованных коэффициентов, с масштабированием матрицы квантованных коэффициентов с использованием набора масштабных множителей модуль 12 декодирования формирует матрицу масштабированных коэффициентов. Эти масштабные множители могут быть масштабными множителями, идентичными масштабным множителям, используемым в упомянутом выше пространственном кодировании. После формирования матрицы масштабированных коэффициентов, модуль 12 декодирования использует арифметические операции с фиксированной запятой для повторного применения одномерного преобразования к матрице квантованных коэффициентов, тем самым формируя матрицу преобразованных коэффициентов. Например, модуль 12 декодирования может формировать матрицу промежуточных коэффициентов с применением одномерного преобразования к каждой вектор-строке в матрице масштабированных коэффициентов. В этом примере, модуль 12 декодирования после этого может формировать матрицу преобразованных коэффициентов с применением одномерного преобразования к каждому вектор-столбцу в матрице промежуточных коэффициентов. После формирования матрицы преобразованных коэффициентов, со сдвигом вправо преобразованных коэффициентов в матрице преобразованных коэффициентов модуль 12 декодирования формирует матрицу скорректированных коэффициентов.Decoding module 12 may perform a process similar to that of encoding module 8, but in reverse order. For example, to perform spatial decoding, the decoding module 12 may apply an entropy decoding scheme to each encoded matrix of quantized coefficients in the encoded video bitstream. After that, the decoding module 12 can dequantize the coefficients in each matrix of quantized coefficients, thereby forming a matrix of dequantized coefficients for each matrix of quantized coefficients. For each matrix of quantized coefficients, with scaling of the matrix of quantized coefficients using a set of scale factors, the decoding module 12 generates a matrix of scaled coefficients. These scale factors may be scale factors identical to the scale factors used in the above spatial coding. After the matrix of scaled coefficients is generated, the decoding module 12 uses fixed-point arithmetic to reapply the one-dimensional transform to the matrix of quantized coefficients, thereby forming a matrix of transformed coefficients. For example, decoding module 12 may generate a matrix of intermediate coefficients by applying a one-dimensional transform to each row vector in a matrix of scaled coefficients. In this example, decoding module 12 may then generate a matrix of transformed coefficients using a one-dimensional transform to each column vector in the matrix of intermediate coefficients. After the matrix of converted coefficients is generated, with the right-shifted converted coefficients in the matrix of converted coefficients, the decoding module 12 generates a matrix of adjusted coefficients.

Скорректированные коэффициенты в матрице скорректированных коэффициентов аппроксимируют значения, которые формируются с применением идеального двумерного обратного дискретного косинусного преобразования ("IDCT") к матрице деквантованных коэффициентов. Идеальное одномерное IDCT определяется формулой:The adjusted coefficients in the matrix of adjusted coefficients approximate the values that are generated using the ideal two-dimensional inverse discrete cosine transform ("IDCT") to the matrix of dequantized coefficients. The ideal one-dimensional IDCT is determined by the formula:

Figure 00000009
Figure 00000009

где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаютсяwhere s is an array of N initial values, t is an array of N converted values, and the coefficients c are specified

Figure 00000010
Figure 00000010

для 1≤k≤N-l.for 1≤k≤N-l.

Идеальное двумерное IDCT определяется формулой:The ideal two-dimensional IDCT is determined by the formula:

Figure 00000011
Figure 00000011

Эти блоки значений компонента пикселя могут затем заново быть собраны в блоки пикселей, и эти блоки пикселей могут заново быть собраны для формирования несжатого видеокадра.These pixel component value blocks may then be reassembled into pixel blocks, and these pixel blocks may be reassembled to form an uncompressed video frame.

После формирования матрицы скорректированных коэффициентов, модуль 12 декодирования может затем ограничивать скорректированные коэффициенты в матрице скорректированных коэффициентов для обеспечения нахождения скорректированных коэффициентов в пределах диапазона, допустимого для значения компонента пикселя. Модуль 12 декодирования может затем заново собирать матрицы ограниченных коэффициентов в блоки пикселей. После сборки заново блоков значений компонента пикселя в блоки пикселей, со сборкой заново блоков пикселей модуль 12 декодирования может формировать изображение.After generating the matrix of adjusted coefficients, the decoding module 12 may then limit the adjusted coefficients in the matrix of adjusted coefficients to ensure that the adjusted coefficients are within the range acceptable for the value of the pixel component. Decoding module 12 may then reassemble the matrix of bounded coefficients into blocks of pixels. After reassembling blocks of pixel component value values into pixel blocks, with reassembling pixel blocks, decoding module 12 may form an image.

Для декодирования прогнозированного кадра, модуль 12 декодирования может использовать способ пространственного декодирования, описанный выше, для декодирования матриц квантованных коэффициентов в остаточном изображении для прогнозированного кадра. Кроме того, модуль 12 декодирования может использовать схему энтропийного декодирования для декодирования векторов движения прогнозированного кадра. Затем, с "перемещением" макроблоков опорных кадров прогнозированного кадра согласно векторам движения модуль 12 декодирования может формировать восстановленный кадр. После формирования восстановленного кадра, модуль 12 декодирования суммирует значения компонента пикселя в каждом пикселе декодированного остаточного кадра с соответствующими значениями компонента пикселя в соответствующих пикселях восстановленного кадра. Результатом этого суммирования является восстановленный прогнозированный кадр.To decode the predicted frame, decoding module 12 may use the spatial decoding method described above to decode the matrices of quantized coefficients in the residual image for the predicted frame. In addition, decoding module 12 may use an entropy decoding scheme to decode motion vectors of a predicted frame. Then, with the "moving" macroblocks of the reference frames of the predicted frame according to the motion vectors, the decoding module 12 may generate a reconstructed frame. After generating the reconstructed frame, the decoding unit 12 summarizes the pixel component values in each pixel of the decoded residual frame with the corresponding pixel component values in the corresponding pixels of the reconstructed frame. The result of this summation is a reconstructed predicted frame.

Способы, описанные в этом раскрытии, могут обеспечить несколько преимуществ. Например, так как в этих способах применяются арифметические операции с фиксированной запятой, то эти способы могут применяться в меньших, менее сложных устройствах, например, мобильных телефонах, персональных цифровых секретарях и личных медиаплеерах. Кроме того, эти способы могут быть применены к форматам, которые включают в себя рекомендации H.261, H.263, H.264, T.81 (JPEG) сектора стандартизации (электросвязи) Международного союза электросвязи (ITU-T), а также форматы мультимедиа Международной организации по стандартизации (ISO)/MEC Группы экспертов по видео (MPEG)-1, MPEG-2 и Части 2 MPEG-4.The methods described in this disclosure may provide several advantages. For example, since these methods use fixed-point arithmetic, these methods can be used in smaller, less complex devices, such as mobile phones, personal digital assistants, and personal media players. In addition, these methods can be applied to formats that include the recommendations of H.261, H.263, H.264, T.81 (JPEG) of the standardization (telecommunication) sector of the International Telecommunication Union (ITU-T), as well as multimedia formats of the International Organization for Standardization (ISO) / MEC Video Expert Group (MPEG) -1, MPEG-2 and Part 2 of MPEG-4.

Фиг.2 является блок-схемой, изображающей иллюстративные детали модуля 8 кодирования. Модуль 8 кодирования может содержать набор "модулей". Эти модули могут содержать подмножества программных команд модуля 8 кодирования. В качестве альтернативы, эти модули могут содержать программно-аппаратные средства, аппаратные средства, например, одно или несколько специализированных аппаратных средств. В другом альтернативном варианте, эти модули могут содержать программные команды и специализированные аппаратные средства или программно-аппаратные средства.2 is a block diagram depicting illustrative details of a coding unit 8. Encoding module 8 may comprise a set of “modules”. These modules may contain subsets of the software instructions of coding module 8. Alternatively, these modules may include firmware, hardware, for example, one or more specialized hardware. In another alternative embodiment, these modules may comprise software instructions and specialized hardware or firmware.

Как изображено в примере фиг.2, модуль 8 кодирования включает в себя модуль 20 управления кадром, который управляет тем, обрабатывает ли модуль 8 кодирования видеокадр как i-кадр, прогнозированный кадр или бипрогнозированный кадр. Например, когда модуль 8 кодирования принимает видеокадр, модуль 20 управления кадром может устанавливать, указывает ли флажок битового потока, связанный с этим видеокадром, что кадр является i-кадром, прогнозированным кадром или бипрогнозированным кадром. Если модуль 20 управления кадром устанавливает, что флажок битового потока указывает, что кадр является i-кадром, то модуль 20 управления кадром может вызвать обработку видеокадра набором модулей, которые непосредственно выполняют пространственное кодирование видеокадра. С другой стороны, если модуль 20 управления кадром устанавливает, что кадр является прогнозированным кадром или бипрогнозированным кадром, то модуль 20 управления кадром может вызвать обработку видеокадра набором модулей, которые выполняют временное кодирование.As shown in the example of FIG. 2, the encoding module 8 includes a frame control module 20 that controls whether the video frame encoding module 8 processes an i-frame, a predicted frame, or a biprognosed frame. For example, when the encoding module 8 receives a video frame, the frame control module 20 may determine whether the bitstream flag associated with this video frame indicates that the frame is an i-frame, a predicted frame, or a biprogrammed frame. If the frame control module 20 determines that the bitstream flag indicates that the frame is an i-frame, then the frame control module 20 may cause the video frame to be processed by a set of modules that directly perform spatial coding of the video frame. On the other hand, if the frame control module 20 determines that the frame is a predicted frame or a bi-predicted frame, then the frame control module 20 may cause the video frame to be processed by a set of modules that perform temporal coding.

Модуль 8 кодирования включает в себя последовательность модулей для применения пространственного кодирования к видеокадрам. Эти модули включают в себя модуль 22 разделителя на блоки, модуль 24 выделения компонента, модуль 26 прямого преобразования, модуль 28 квантования и модуль 30 энтропийного кодирования. Модуль 22 разделителя на блоки может принимать незакодированные видеокадры из источника 4 мультимедиа, сетевого интерфейса 16 или другого источника. Когда модуль 22 разделителя на блоки принимает незакодированный видеокадр, модуль 22 разделителя на блоки может разделять кадр на блоки пикселей. Модуль 22 разделителя на блоки может предоставить блоки пикселей в модуль 24 выделения компонента.Encoding module 8 includes a series of modules for applying spatial encoding to video frames. These modules include a block divider module 22, a component extraction module 24, a direct conversion module 26, a quantization module 28, and an entropy encoding module 30. The block splitter module 22 may receive unencoded video frames from a multimedia source 4, a network interface 16, or another source. When the block splitter module 22 receives an unencoded video frame, the block splitter module 22 can divide the frame into blocks of pixels. The block separator module 22 may provide pixel blocks to the component extraction module 24.

Когда модуль 24 выделения компонента принимает блоки пикселей, модуль 24 выделения компонента может преобразовывать значения компонента пикселя каждого пикселя в другой цветовой формат. Например, модуль 24 выделения компонента может преобразовывать каждый пиксель из цветового формата "красный-зеленый-синий" (RGB) в цветовой формат YCrCb. После преобразования пикселей в блоке в другой цветовой формат, модуль 24 выделения компонента может разделять значения компонента пикселя из пикселей в блоке на матрицы значений компонента пикселя. Например, модуль 24 выделения компонента может выделять матрицу значений Y, матрицу значений Cr и матрицу значений Cb из одного блока пикселей. Значения Y специфицируют яркость пикселей, значения Cr специфицируют информацию о красном цвете пикселей и значения Cb специфицируют информацию о синем цвете пикселей. После выделения матриц значений компонента пикселя модулем 24 выделения компонента, модуль 24 выделения компонента может предоставить каждую из матриц отдельно в модуль 26 дискретного косинусного преобразования (DCT).When the component extractor 24 receives the blocks of pixels, the component extractor 24 can convert the pixel component values of each pixel to a different color format. For example, component extraction module 24 may convert each pixel from a red-green-blue (RGB) color format to a YCrCb color format. After converting the pixels in the block to a different color format, the component extraction module 24 may split the pixel component values from the pixels in the block into matrixes of pixel component values. For example, component extraction module 24 may extract a matrix of Y values, a matrix of Cr values, and a matrix of Cb values from one block of pixels. Y values specify pixel brightness, Cr values specify pixel red information, and Cb values specify pixel blue information. After the matrix of pixel component values is extracted by the component extraction module 24, the component extraction module 24 may provide each of the matrices separately to a discrete cosine transform (DCT) module 26.

Когда модуль 26 прямого преобразования принимает матрицу значений компонента пикселя, модуль 26 прямого преобразования формирует матрицу масштабированных коэффициентов. Каждый коэффициент в этой матрице масштабированных коэффициентов аппроксимирует коэффициент, который формируется с использованием идеального прямого дискретного косинусного преобразования, для преобразования матрицы значений компонента пикселя.When the direct transform module 26 receives a matrix of pixel component values, the direct transform module 26 generates a matrix of scaled coefficients. Each coefficient in this matrix of scaled coefficients approximates a coefficient that is generated using an ideal direct discrete cosine transform to transform the matrix of values of the pixel component.

Модуль 26 прямого преобразования использует арифметические операции с фиксированной запятой для применения одномерного преобразования к матрицам значений компонента пикселя. Использование арифметических операций с фиксированной запятой может быть полезным при некоторых обстоятельствах. Например, малогабаритные устройства, например, мобильные телефоны не могут включать в себя сопроцессор для чисел с плавающей запятой, требуемый для выполнения арифметических операций с плавающей запятой. Модуль 26 прямого преобразования может начинать процесс формирования матрицы масштабированных коэффициентов со сдвига влево каждого из значений компонента пикселя. Например, модуль 26 прямого преобразования может формировать матрицу скорректированных коэффициентов сдвигом влево каждого из значений компонента пикселя на количество битов точности (то есть, количество битов мантиссы) представлений с фиксированной запятой чисел, которые модуль 26 прямого преобразования использует при применении одномерного преобразования плюс количество битов точности, удаленных масштабированием преобразованных коэффициентов, которые получаются в результате применения преобразования. После сдвига влево каждого из значений компонента пикселя, модуль 26 прямого преобразования может выполнять преобразование каждой из вектор-строк матрицы скорректированных коэффициентов. Выполнение дискретного косинусного преобразования каждой из вектор-строк матрицы скорректированных коэффициентов формирует матрицу промежуточных коэффициентов. Затем, модуль 26 прямого преобразования может выполнять преобразование каждого из вектор-столбцов матрицы промежуточных коэффициентов. Выполнение преобразования каждого из вектор-столбцов матрицы промежуточных коэффициентов в результате приводит к матрице преобразованных коэффициентов.Direct conversion module 26 uses fixed-point arithmetic to apply a one-dimensional transformation to the matrix of values of the pixel component. Using fixed-point arithmetic may be useful in some circumstances. For example, small-sized devices, such as mobile phones, cannot include a coprocessor for floating point numbers, which is required to perform floating point arithmetic operations. Direct conversion module 26 may begin the process of generating a matrix of scaled coefficients with a left shift of each of the values of the pixel component. For example, direct conversion module 26 may generate a matrix of adjusted coefficients by left-shifting each of the pixel component values by the number of precision bits (i.e., the number of mantissa bits) of fixed-point representations of numbers that the direct conversion module 26 uses when applying the one-dimensional conversion plus the number of precision bits removed by scaling the transformed coefficients that result from applying the transform. After shifting to the left of each of the values of the pixel component, the direct conversion module 26 can perform conversion of each of the vector rows of the matrix of adjusted coefficients. Performing a discrete cosine transform of each of the vector rows of the matrix of adjusted coefficients forms a matrix of intermediate coefficients. Then, the direct conversion module 26 may perform the conversion of each of the column vectors of the matrix of intermediate coefficients. Performing the conversion of each of the vector columns of the matrix of intermediate coefficients as a result leads to a matrix of transformed coefficients.

После формирования матрицы преобразованных коэффициентов, модуль 26 прямого преобразования масштабирует преобразованные коэффициенты в различных позициях в матрице преобразованных коэффициентов различными масштабными множителями. Как описано ниже, модуль 12 декодирования может использовать обратные величины этих масштабных множителей при применении обратного преобразования. После окончания модулем 26 прямого преобразования масштабирования преобразованных коэффициентов масштабными множителями, модуль 26 прямого преобразования может выводить получающуюся в результате матрицу масштабированных коэффициентов в модуль 28 квантования.After the matrix of converted coefficients is generated, the direct conversion module 26 scales the converted coefficients at various positions in the matrix of converted coefficients with various scale factors. As described below, decoding module 12 may use the inverse of these scale factors when applying the inverse transform. After the direct conversion of the scaling of the transformed coefficients by the scaling factors by the module 26, the direct conversion module 26 can output the resulting matrix of scaled coefficients to the quantization module 28.

Когда модуль 28 квантования принимает матрицу коэффициентов из модуля 26 прямого преобразования, модуль 28 квантования 28 может квантовать масштабированные коэффициенты. Модуль 28 квантования может квантовать масштабированные коэффициенты множеством способов, в зависимости от используемого стандарта кодирования. Например, согласно части 2 стандарта MPEG-4, модуль 28 квантования может использовать следующую матрицу квантования для квантования коэффициентов в матрице масштабированных коэффициентов для i-кадра:When quantization module 28 receives the coefficient matrix from direct conversion module 26, quantization module 28 can quantize the scaled coefficients. The quantization unit 28 may quantize the scaled coefficients in a variety of ways, depending on the coding standard used. For example, according to part 2 of the MPEG-4 standard, quantization module 28 may use the following quantization matrix to quantize the coefficients in the matrix of scaled coefficients for the i-frame:

Figure 00000012
Figure 00000012

Кроме того, в этом примере, модуль 28 квантования может использовать следующую матрицу квантования для квантования коэффициентов в матрице масштабированных коэффициентов для прогнозированного или бипрогнозированного кадра:In addition, in this example, quantization module 28 may use the following quantization matrix to quantize coefficients in a matrix of scaled coefficients for a predicted or bi-predicted frame:

Figure 00000013
Figure 00000013

После формирования модулем 28 квантования матрицы квантованных коэффициентов, модуль 30 энтропийного кодирования может сжимать матрицу квантованных коэффициентов с использованием схемы энтропийного кодирования. Для сжатия матрицы квантованных коэффициентов с использованием схемы энтропийного кодирования, модуль 30 энтропийного кодирования может упорядочить квантованные коэффициенты в вектор посредством зигзагообразного шаблона коэффициентов. Другими словами, модуль 30 энтропийного кодирования может упорядочивать все квантованные коэффициенты в двухмерной матрице квантованных коэффициентов в одномерный вектор квантованных коэффициентов в предсказываемом (векторе). После этого модуль 30 энтропийного кодирования может применять схему энтропийного кодирования, например, кодирование методом Хаффмана или арифметическое кодирование, к вектору квантованных коэффициентов.After the quantization coefficient matrix is generated by the quantization module 28, the entropy encoding module 30 may compress the matrix of quantized coefficients using the entropy encoding scheme. To compress the matrix of quantized coefficients using the entropy coding scheme, the entropy coding unit 30 may arrange the quantized coefficients into a vector by means of a zigzag coefficient pattern. In other words, the entropy coding unit 30 can order all quantized coefficients in a two-dimensional matrix of quantized coefficients into a one-dimensional vector of quantized coefficients in a predicted (vector). After that, the entropy coding unit 30 can apply the entropy coding scheme, for example, Huffman coding or arithmetic coding, to the vector of quantized coefficients.

Модуль 8 кодирования также включает в себя один или несколько модулей для выполнения временного кодирования видеокадров. Как изображено в примере фиг.2, модуль 8 кодирования включает в себя модуль 32 оценки движения, модуль 34 формирования восстановленного кадра и модуль 36 формирования остаточного кадра. Модуль 32 оценки движения пытается идентифицировать исходный макроблок в опорном изображении для каждого макроблока в текущем видеокадре. Модуль 32 оценки движения может пытаться идентифицировать исходный макроблок для макроблока в текущем кадре посредством поиска макроблоков в опорном изображении, которые содержат аналогичные пиксели как макроблок. Модуль 32 оценки движения может вести поиск в областях различных размеров согласно различным стандартам кодирования для идентификации исходного макроблока для макроблока в текущем кадре. Например, модуль 32 оценки движения может вести поиск исходного макроблока в области, которая является пикселями, шириной в 32 пикселя, высотой в 32 пикселя, с текущим макроблоком в центре области поиска. Когда модуль 32 оценки движения идентифицирует исходный макроблок для макроблока в текущем кадре, модуль 32 оценки движения вычисляет вектор движения для этого макроблока в текущем кадре. Вектор движения для макроблока в текущем кадре специфицирует значение x, которое указывает различие в горизонтальной позиции между идентифицированным исходным макроблоком и макроблоком текущего кадра. После того, как модуль 32 оценки движения или вычислил вектор движения или не смог идентифицировать исходный макроблок для каждого макроблока в текущем кадре, модуль 32 оценки движения может предоставить вычисленные векторы движения для текущего кадра в модуль 34 формирования восстановленного кадра.Encoding module 8 also includes one or more modules for temporarily encoding video frames. As shown in the example of FIG. 2, encoding module 8 includes a motion estimation module 32, a restored frame generation module 34, and a residual frame generation module 36. Motion estimation module 32 attempts to identify the source macroblock in the reference image for each macroblock in the current video frame. Motion estimation module 32 may attempt to identify the source macroblock for the macroblock in the current frame by searching for macroblocks in the reference image that contain similar pixels as a macroblock. Motion estimation module 32 may search areas of various sizes according to different coding standards to identify the source macroblock for the macroblock in the current frame. For example, motion estimation module 32 may search for a source macroblock in an area that is pixels, 32 pixels wide, 32 pixels high, with the current macroblock in the center of the search area. When motion estimation module 32 identifies the source macroblock for the macroblock in the current frame, motion estimation module 32 calculates a motion vector for this macroblock in the current frame. The motion vector for the macroblock in the current frame specifies an x value that indicates the difference in horizontal position between the identified source macroblock and the macroblock of the current frame. After the motion estimation module 32 either computed the motion vector or was unable to identify the source macroblock for each macroblock in the current frame, the motion estimation module 32 can provide the calculated motion vectors for the current frame to the reconstructed frame generating module 34.

Модуль 34 формирования восстановленного кадра может использовать векторы движения и опорные кадры для формирования восстановленного кадра. Модуль 34 формирования восстановленного кадра может формировать восстановленный кадр посредством применения векторов движения для каждого макроблока в текущем кадре к исходным макроблокам в опорных кадрах. В действительности, модуль 34 формирования восстановленного кадра создает кадр, в котором макроблоки опорных кадров "перемещены" в позиции, обозначенные соответствующими векторами движения текущего кадра.The reconstructed frame generating unit 34 may use motion vectors and reference frames to form the reconstructed frame. The reconstructed frame generating unit 34 may generate the reconstructed frame by applying motion vectors for each macroblock in the current frame to the original macroblocks in the reference frames. In fact, the reconstructed frame generation unit 34 creates a frame in which the macroblocks of the reference frames are “moved” to the positions indicated by the corresponding motion vectors of the current frame.

Модуль 36 формирования остаточного кадра может формировать остаточный кадр вычитанием значений компонента пикселя в восстановленном кадре из соответствующих значений компонента пикселя в текущем кадре. В общем, остаточный кадр включает в себя меньше информации, чем восстановленный кадр или чем текущий кадр. После формирования остаточного кадра модулем 36 формирования остаточного кадра, модуль 36 формирования остаточного кадра предоставляет остаточный кадр в модуль 22 разделителя на блоки для начала процесса пространственного кодирования остаточного кадра. Кроме того, модуль 32 оценки движения может предоставить векторы движения для текущего кадра в модуль 30 энтропийного кодирования для сжатия векторов движения. После пространственного кодирования остаточного кадра и кодирования векторов движения модулем 30 энтропийного кодирования, модуль 38 вывода потока может форматировать пространственно закодированный остаточный кадр и закодированные векторы движения как часть битового потока видео.Residual frame generation module 36 may generate a residual frame by subtracting the values of the pixel component in the reconstructed frame from the corresponding values of the pixel component in the current frame. In general, the residual frame includes less information than the reconstructed frame or than the current frame. After the residual frame is generated by the residual frame generation module 36, the residual frame generation module 36 provides the residual frame to the block divider module 22 to start the spatial encoding of the residual frame. In addition, motion estimation module 32 may provide motion vectors for the current frame to entropy encoding module 30 for compressing motion vectors. After spatially encoding the residual frame and encoding the motion vectors by the entropy encoding unit 30, the stream output unit 38 may format the spatially encoded residual frame and encoded motion vectors as part of the video bitstream.

Фиг.3 является блок-схемой, изображающей иллюстративные детали модуля 12 декодирования. Модуль 12 декодирования может содержать модуль 44 энтропийного декодирования, модуль 46 деквантования, модуль 48 обратного преобразования, модуль 50 восстановления пикселя, буфер 51 кадра, модуль 52 объединителя блоков, модуль 53 управления кадром, модуль 54 хранения опорного кадра, модуль 56 формирования восстановленного кадра и модуль 58 формирования прогнозированного кадра. Некоторые или все эти модули могут содержать подмножества программных команд модуля 12 декодирования. В качестве альтернативы, некоторые или все эти модули могут содержать специализированные аппаратные средства или программно-аппаратные средства. В другом варианте, эти модули могут содержать программные команды и специализированные аппаратные средства или программно-аппаратные средства.3 is a block diagram depicting illustrative details of a decoding unit 12. The decoding module 12 may include an entropy decoding module 44, a dequantization module 46, an inverse transform module 48, a pixel recovery module 50, a frame buffer 51, a block combiner module 52, a frame control module 53, a reference frame storage module 54, a restored frame generation module 56, and a predicted frame generating unit 58. Some or all of these modules may contain subsets of the program instructions of decoding module 12. Alternatively, some or all of these modules may contain specialized hardware or firmware. In another embodiment, these modules may comprise software instructions and specialized hardware or firmware.

Когда модуль 12 декодирования принимает битовый поток, содержащий видеокадр, модуль 44 энтропийного декодирования может применять схему энтропийного декодирования к матрицам квантованных коэффициентов в видеокадре. Битовый поток может включать в себя значение, которое указывает модулю 44 энтропийного декодирования, какую схему энтропийного декодирования применять (к) матрицам квантованных коэффициентов в битовом потоке. Кроме того, модуль 44 энтропийного декодирования может применять идентичную или другую схему энтропийного декодирования для декодирования векторов движения видеокадра.When the decoding unit 12 receives a bit stream containing a video frame, the entropy decoding unit 44 may apply the entropy decoding scheme to the matrices of quantized coefficients in the video frame. The bitstream may include a value that indicates to the entropy decoding unit 44 which entropy decoding scheme to apply to (the) matrices of quantized coefficients in the bitstream. In addition, entropy decoding unit 44 may apply an identical or different entropy decoding scheme to decode motion vectors of a video frame.

После применения модулем 44 энтропийного декодирования схемы энтропийного декодирования к матрицам квантованных коэффициентов в видеофайле, модуль 46 деквантования может деквантовать коэффициенты в каждой из матриц квантованных коэффициентов. В зависимости от стандарта кодирования модуль 46 деквантования может деквантовать коэффициенты множеством способов. Например, согласно части 2 стандарта MPEG-4, модуль 46 деквантования может использовать две вышеупомянутые матрицы квантования двумя различными способами. Во-первых, модуль 46 деквантования может использовать эти матрицы квантования для выполнения деквантования в стиле H.263. При деквантовании в стиле H.263, модуль 46 деквантования получает восстановленные коэффициенты F''[v][u] из квантованных значений QF[v][u] следующим образом:After the entropy decoding module 44 applies the entropy decoding scheme to the matrices of quantized coefficients in the video file, the dequantization module 46 may dequantize the coefficients in each of the matrices of the quantized coefficients. Depending on the coding standard, the dequantization module 46 may dequantize the coefficients in a variety of ways. For example, according to part 2 of the MPEG-4 standard, the dequantization module 46 may use the two above quantization matrices in two different ways. First, dequantization module 46 may use these quantization matrices to perform H.263-style dequantization. When dequantizing in the H.263 style, the dequantization module 46 obtains the reconstructed coefficients F ″ [v] [u] from the quantized values QF [v] [u] as follows:

Figure 00000014
Figure 00000015
Figure 00000014
Figure 00000015

что включает в себя только одно умножение на quantiser_scale, иwhich includes only one multiplication by quantiser_scale, and

во-вторых, модуль 46 деквантования может использовать эти матрицы квантования для выполнения деквантования в стиле MPEG-l/2. При деквантовании в стиле MPEG-1/2, модуль 46 деквантования использует дополнительные весовые матрицы W[w][v][u], где w указывает, какая весовая матрица используется:secondly, dequantization module 46 may use these quantization matrices to perform MPEG-l / 2-style dequantization. For MPEG-1/2-style dequantization, dequantization module 46 uses additional weight matrices W [w] [v] [u], where w indicates which weight matrix is used:

Figure 00000016
Figure 00000016

где:Where:

Figure 00000017
Figure 00000017

Как описано подробно ниже, модуль 48 обратного преобразования масштабирует каждый из деквантованных коэффициентов конкретными масштабными множителями и добавляет терм смещения центра к коэффициенту DC получающейся в результате матрицы масштабированных коэффициентов. Коэффициент DC является коэффициентом в позиции (0,0) матрицы масштабированных коэффициентов. Затем, модуль 48 обратного преобразования использует повторные применения одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. После преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов, модуль 48 обратного преобразования сдвигает вправо каждый преобразованный коэффициент в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Кроме того, модуль 48 обратного преобразования может ограничивать каждый из скорректированных коэффициентов в матрице скорректированных коэффициентов для формирования матрицы ограниченных коэффициентов. Значения ограниченных коэффициентов находятся в пределах диапазонов, соответствующих получающемуся в результате формату значения компонента пикселя. Например, ограниченные коэффициенты могут иметь значения, которые находятся в пределах диапазона [-256, 255]. После ограничения скорректированных коэффициентов модулем 48 обратного преобразования, получающиеся в результате ограниченные значения являются значениями компонента пикселя.As described in detail below, the inverse transform unit 48 scales each of the dequantized coefficients with specific scale factors and adds the center offset term to the DC coefficient of the resulting matrix of scaled coefficients. The DC coefficient is the coefficient at the position (0,0) of the matrix of scaled coefficients. Then, the inverse transform unit 48 uses repeated applications of the one-dimensional fixed-point transform to convert the matrix of scaled coefficients to the matrix of converted coefficients. After converting the matrix of scaled coefficients into a matrix of transformed coefficients, the inverse transform module 48 shifts to the right each transformed coefficient in the matrix of transformed coefficients to form a matrix of adjusted coefficients. Each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional IDCT to the matrix of encoded coefficients. In addition, inverse transform unit 48 may limit each of the adjusted coefficients in the matrix of adjusted coefficients to form a matrix of bounded coefficients. The values of the limited coefficients are within the ranges corresponding to the resulting pixel component value format. For example, limited coefficients may have values that are within the range [-256, 255]. After limiting the adjusted coefficients to the inverse transform unit 48, the resulting limited values are the values of the pixel component.

После вывода модулем 48 обратного преобразования матрицы значений компонента пикселя, модуль 50 восстановления пикселя может формировать матрицу пикселей посредством объединения матрицы значений компонента пикселя с матрицами значений компонентов пикселя, связанными с эквивалентными позициями в видеокадре. Например, модуль 50 восстановления пикселя может принимать матрицу значений компонента пикселя Y, матрицу значений компонента пикселя Cb и матрицу значений компонента пикселя Cr из модуля 48 обратного преобразования. Каждая из этих трех матриц может включать в себя компоненты пикселя для одного блока пикселей, 8×8. Каждый из пикселей может включить в себя значение компонента пикселя Y, значение компонента пикселя Cb и значение компонента пикселя Cr. После формирования матрицы пикселей, модуль 50 восстановления пикселя может обеспечивать блок пикселей в модуль 52 объединителя блоков.After the inverse transformation of the matrix of the pixel component values by the module 48, the pixel recovery module 50 may generate a pixel matrix by combining the matrix of the values of the pixel component with the matrix of values of the pixel components associated with equivalent positions in the video frame. For example, the pixel recovery unit 50 may receive a matrix of pixel component values Y, a matrix of pixel component values Cb, and a matrix of pixel component Cr values from inverse transform unit 48. Each of these three matrices may include pixel components for one block of pixels, 8 × 8. Each of the pixels may include a pixel component value Y, a pixel component value Cb, and a pixel component value Cr. After the pixel matrix is formed, the pixel recovery module 50 may provide a block of pixels to the block combiner module 52.

Когда модуль 52 объединителя блоков принимает блок пикселей, модуль 52 объединителя блоков может помещать в буфер блок пикселей, пока модуль 52 объединителя блоков не примет некоторые или все блоки пикселей в видеокадре. После приема одного или нескольких блоков пикселей, модуль 52 объединителя блоков может объединять блоки пикселей в видеокадр и может выводить видеокадр в буфер 51 кадра. Видеокадр может быть сохранен в буфере 51 кадра, пока он не будет отображен блоком 51 воспроизведения мультимедиа. Кроме того, модуль 52 объединителя блоков может выводить видеокадр в модуль 54 хранения кадра. Видеокадры в модуле 54 хранения кадра могут использоваться как опорные кадры для восстановления прогнозированных и бипрогнозированных кадров. Кроме того, видеокадры в модуле 54 хранения кадра могут быть остаточными кадрами, которые используются при восстановлении прогнозированных и бипрогнозированных кадров.When block combiner module 52 receives a block of pixels, block combiner module 52 may buffer a block of pixels until block combiner 52 receives some or all of the pixel blocks in a video frame. After receiving one or more blocks of pixels, block combiner module 52 may combine the blocks of pixels into a video frame and may output the video frame to frame buffer 51. The video frame may be stored in the frame buffer 51 until it is displayed by the multimedia playback unit 51. In addition, block combiner module 52 may output a video frame to frame storage module 54. The video frames in the frame storage module 54 can be used as reference frames for reconstructing predicted and biprognosed frames. In addition, the video frames in the frame storage module 54 may be residual frames that are used in reconstructing predicted and biprognosed frames.

Для восстановления прогнозированных или бипрогнозированных кадров, модуль 12 декодирования включает в себя модуль 56 формирования восстановленного кадра. Модуль 56 формирования восстановленного кадра принимает декодированные векторы движения из модуля 44 энтропийного декодирования. Кроме того, модуль 56 формирования восстановленного кадра извлекает опорные кадры для текущего кадра из модуля 54 хранения кадра. После этого модуль 56 формирования восстановленного кадра "перемещает" макроблоки из их позиций в опорных кадрах в позиции, обозначенные векторами движения. Восстановленный кадр получается в результате перемещения макроблоков этим способом. После формирования восстановленного кадра модулем 56 формирования восстановленного кадра, модуль 56 формирования восстановленного кадра предоставляет восстановленный кадр в модуль 58 формирования прогнозированного кадра.To restore the predicted or biprognosed frames, the decoding unit 12 includes a reconstructed frame generating unit 56. The reconstructed frame generating unit 56 receives decoded motion vectors from the entropy decoding unit 44. In addition, the reconstructed frame generation unit 56 retrieves the reference frames for the current frame from the frame storage unit 54. After that, the reconstructed frame generating unit 56 “moves” the macroblocks from their positions in the reference frames to the positions indicated by the motion vectors. The restored frame is obtained as a result of the movement of macroblocks in this way. After the reconstructed frame is generated by the reconstructed frame generation unit 56, the reconstructed frame generation unit 56 provides the reconstructed frame to the predicted frame generation unit 58.

Когда модуль 58 формирования прогнозированного кадра принимает временной кадр, модуль 58 формирования прогнозированного кадра может извлекать из модуля 54 хранения кадра остаточный кадр для текущего кадра. После извлечения остаточного кадра, модуль 58 формирования прогнозированного кадра может суммировать соответствующие значения цветовых компонентов в каждом пикселе остаточного кадра и восстановленного кадра. Восстановленный видеокадр получается в результате этого суммирования. Затем, модуль 58 формирования прогнозированного кадра может выводить этот восстановленный кадр в буфер 51 кадра для конечного отображения в блоке 14 воспроизведения мультимедиа.When the predicted frame generation unit 58 receives a time frame, the predicted frame generation unit 58 may retrieve a residual frame for the current frame from the frame storage unit 54. After retrieving the residual frame, the predicted frame generating unit 58 may summarize the corresponding color component values in each pixel of the residual frame and the reconstructed frame. The restored video frame is the result of this summation. Then, the predicted frame generation unit 58 may output this reconstructed frame to a frame buffer 51 for final display in the multimedia playback unit 14.

Фиг.4 является блок-схемой, изображающей иллюстративную работу модуля 8 кодирования. Хотя работа, описанная в фиг.4, описана в виде последовательности, следует отметить, что эта работа может выполняться конвейерным способом.4 is a flowchart depicting an illustrative operation of coding unit 8. Although the work described in FIG. 4 is described as a sequence, it should be noted that this work can be performed in a conveyor way.

Вначале, модуль 8 кодирования принимает последовательность незакодированных видеокадров (60). Например, модуль 8 кодирования может принимать последовательность незакодированных кадров в виде наборов пикселей из источника 4 мультимедиа. Когда модуль 8 кодирования принимает последовательность незакодированных кадров, модуль 20 управления кадром в модуле 8 кодирования может устанавливать, должен ли текущий кадр в последовательности незакодированных кадров быть закодирован как i-кадр или как прогнозированный или бипрогнозированный кадр (62).Initially, encoding module 8 receives a sequence of unencoded video frames (60). For example, encoding module 8 may receive a sequence of unencoded frames in the form of sets of pixels from media source 4. When the encoding module 8 receives a sequence of unencoded frames, the frame control module 20 in the encoding module 8 can determine whether the current frame in the sequence of unencoded frames should be encoded as an i-frame or as a predicted or bi-predicted frame (62).

Если модуль 20 управления кадром устанавливает, что текущий кадр должен быть закодирован как i-кадр, то модуль 22 разделителя на блоки в модуле 8 кодирования может разделять текущий кадр на блоки пикселей (64). Например, модуль 8 кодирования может разделять текущий кадр на блоки пикселей, 2×2, 4×4 или 8×8.If the frame control module 20 determines that the current frame should be encoded as an i-frame, then the block separator module 22 in the encoding module 8 can divide the current frame into pixel blocks (64). For example, coding unit 8 may divide the current frame into blocks of pixels, 2 × 2, 4 × 4, or 8 × 8.

После разделения текущего кадра на блоки пикселей, модуль 24 выделения компонента может разделять значения компонента пикселя в каждом из блоков пикселей (66). В результате может быть три блока значений компонента пикселя для каждого блока пикселей: блок значений Y, представляющих яркость пикселей, блок значений Cb, представляющих информацию о синем цвете пикселей, и блок значений Cr, представляющих информацию о красном цвете пикселей.After dividing the current frame into pixel blocks, the component extraction module 24 may separate pixel component values in each of the pixel blocks (66). As a result, there may be three blocks of pixel component values for each block of pixels: a block of Y values representing pixel luminance, a block of Cb values representing pixel blue information, and a block of Cr values representing pixel red information.

После этого модуль 26 прямого преобразования в модуле 8 кодирования может формировать матрицу масштабированных коэффициентов для каждой из матриц значений компонента пикселя (68). Коэффициенты в этих матрицах масштабированных коэффициентов являются аппроксимациями значений, которые формируются с использованием идеального двумерного прямого дискретного косинусного преобразования соответствующих матриц значений компонента пикселя.After that, the direct conversion module 26 in the encoding module 8 can generate a matrix of scaled coefficients for each of the matrix of values of the pixel component (68). The coefficients in these matrices of scaled coefficients are approximations of values that are generated using an ideal two-dimensional direct discrete cosine transform of the corresponding matrix of values of the pixel component.

После формирования модулем 26 прямого преобразования матриц масштабированных коэффициентов для каждой из матриц компонентов пикселя, модуль 28 квантования в модуле 8 кодирования может квантовать коэффициенты в каждой из матриц масштабированных коэффициентов (70). После квантования модулем 28 квантования коэффициентов в каждой матрице масштабированных коэффициентов, модуль 30 энтропийного кодирования может выполнять энтропийное кодирование каждой из матриц квантованных коэффициентов (72). Например, модуль 8 кодирования может применять схему кодирования методом Хаффмана или схему арифметического кодирования к каждой матрице квантованных коэффициентов. Энтропийное кодирование дополнительно сжимает данные. Однако процессы энтропийного кодирования в результате не приводят к потере информации. После выполнения энтропийного кодирования каждой матрицы квантованных коэффициентов, модуль 38 вывода потока в модуле 8 кодирования может добавлять закодированные матрицы квантованных коэффициентов в битовый поток для последовательности видеокадров (74). После добавления модулем 38 вывода потока закодированных матриц к битовому потоку, модуль 20 управления кадром может устанавливать, был ли текущий кадр последним видеокадром последовательности кадров (76). Если текущий кадр является последним кадром последовательности кадров ("ДА" 76), то модуль 8 кодирования завершает кодирование последовательности кадров (78). С другой стороны, если текущий кадр не является последним кадром последовательности кадров ("НЕТ" 76), то модуль 8 кодирования может возвращаться к началу цикла и устанавливать, должен ли новый текущий кадр быть закодирован как i-кадр (62).After the module 26 generates a direct transformation of the matrix of scaled coefficients for each of the matrix of pixel components, the quantization module 28 in the encoding module 8 can quantize the coefficients in each of the matrix of scaled coefficients (70). After quantization by the coefficient quantization module 28 in each matrix of scaled coefficients, the entropy encoding unit 30 may perform entropy encoding of each of the matrices of quantized coefficients (72). For example, coding module 8 may apply a Huffman coding scheme or an arithmetic coding scheme to each matrix of quantized coefficients. Entropy encoding further compresses the data. However, entropy coding processes do not result in loss of information as a result. After performing entropy encoding of each matrix of quantized coefficients, the stream output module 38 in encoding module 8 may add encoded matrices of quantized coefficients to the bitstream for a sequence of video frames (74). After the module 38 adds the output of the encoded matrix stream to the bitstream, the frame control module 20 can determine whether the current frame was the last video frame of the frame sequence (76). If the current frame is the last frame of the frame sequence ("YES" 76), then the encoding unit 8 completes the encoding of the frame sequence (78). On the other hand, if the current frame is not the last frame of the sequence of frames ("NO" 76), then the encoding module 8 may return to the beginning of the cycle and determine whether the new current frame should be encoded as an i-frame (62).

Если текущий кадр не должен быть закодирован как i-кадр ("НЕТ" 62), то модуль 32 оценки движения в модуле 8 кодирования может разделять текущий кадр на ряд макроблоков (80). Затем, модуль 32 оценки движения может пытаться идентифицировать исходный макроблок в одном или нескольких опорных кадрах для каждого из макроблоков в текущем кадре (82). Модуль 32 оценки движения может далее вычислять вектор движения для каждого из макроблоков в текущем кадре, для которых модуль 32 оценки движения смог идентифицировать исходный макроблок (84). После вычисления векторов движения модулем 32 оценки движения, модуль 34 формирования восстановленного кадра использует векторы движения для формирования восстановленного кадра посредством "перемещения" идентифицированных макроблоков в опорных кадрах в позиции, обозначенные векторами движения (86). Модуль 36 формирования остаточного кадра может далее формировать остаточный кадр для текущего кадра вычитанием значений компонента пикселя в восстановленном кадре из соответствующих значений компонента пикселя в текущем кадре (88). После формирования остаточного кадра модулем 36 формирования остаточного кадра, модуль 30 энтропийного кодирования может использовать схему энтропийного кодирования для кодирования векторов движения для текущего кадра (90). Кроме того, к остаточному кадру может быть применено пространственное кодирование посредством применения этапов с (66) по (74) к остаточному кадру.If the current frame should not be encoded as an i-frame ("NO" 62), then the motion estimation module 32 in the encoding module 8 can divide the current frame into a number of macroblocks (80). Then, motion estimation module 32 may attempt to identify the source macroblock in one or more reference frames for each of the macroblocks in the current frame (82). Motion estimation module 32 may further calculate a motion vector for each of the macroblocks in the current frame, for which motion estimation module 32 was able to identify the original macroblock (84). After the motion vectors are calculated by the motion estimation module 32, the reconstructed frame generation module 34 uses the motion vectors to form the reconstructed frame by “moving” the identified macroblocks in the reference frames to the positions indicated by the motion vectors (86). Residual frame generation module 36 may further generate a residual frame for the current frame by subtracting the values of the pixel component in the reconstructed frame from the corresponding values of the pixel component in the current frame (88). After the residual frame is generated by the residual frame generation unit 36, the entropy encoding unit 30 may use the entropy encoding scheme to encode motion vectors for the current frame (90). In addition, spatial coding can be applied to the residual frame by applying steps (66) to (74) to the residual frame.

Фиг.5 является блок-схемой, изображающей иллюстративную работу модуля 12 декодирования. Хотя работа, описанная в фиг.5, описана в виде последовательности, следует отметить, что эта работа может выполняться конвейерным способом.5 is a block diagram depicting an illustrative operation of decoding module 12. Although the work described in FIG. 5 is described as a sequence, it should be noted that this work can be carried out in a conveyor way.

Вначале, модуль 12 декодирования принимает закодированный видеокадр (100). После приема закодированного видеокадра, модуль 44 энтропийного декодирования в модуле 12 декодирования может выполнять энтропийное декодирование блоков данных в закодированном кадре (102). Модуль 44 энтропийного декодирования может выполнять энтропийное декодирование, которое эквивалентно энтропийному кодированию, используемому для кодирования кадра. Например, если модуль 8 кодирования использует кодирование методом Хаффмана для кодирования кадра, то модуль 44 энтропийного декодирования использует декодирование методом Хаффмана для декодирования кадра. В результате применения энтропийного декодирования к каждому блоку данных в кадре, модуль 44 энтропийного декодирования формирует набор матриц квантованных коэффициентов.Initially, decoding unit 12 receives an encoded video frame (100). After receiving the encoded video frame, the entropy decoding unit 44 in the decoding unit 12 may perform entropy decoding of the data blocks in the encoded frame (102). Entropy decoding unit 44 may perform entropy decoding, which is equivalent to the entropy encoding used to encode the frame. For example, if encoding module 8 uses Huffman coding to encode a frame, then entropy decoding module 44 uses Huffman decoding to decode the frame. As a result of applying entropy decoding to each data block in the frame, entropy decoding module 44 generates a set of matrices of quantized coefficients.

Затем, модуль 46 деквантования в модуле 12 декодирования может деквантовать коэффициенты в каждой из матриц квантованных коэффициентов (104). После деквантования каждого коэффициента в матрицах квантованных коэффициентов, модуль 48 обратного преобразования в модуле 12 декодирования формирует матрицы значений компонента пикселя (106). Значения компонента пикселя в одной из матриц значений компонента пикселя являются аппроксимациями соответствующих значений, которые формируются посредством преобразования одной из матриц квантованных коэффициентов с использованием идеального двумерного обратного дискретного косинусного преобразования.Then, dequantization module 46 in decoding module 12 may dequantize the coefficients in each of the matrices of quantized coefficients (104). After dequantizing each coefficient in the matrices of the quantized coefficients, the inverse transform module 48 in the decoding module 12 generates a matrix of values of the pixel component (106). The values of the pixel component in one of the matrix of values of the pixel component are approximations of the corresponding values that are generated by converting one of the matrices of quantized coefficients using an ideal two-dimensional inverse discrete cosine transform.

После вычисления модулем 48 обратного преобразования матрицы значений компонента пикселя для каждой из матриц коэффициентов, модуль 50 восстановления пикселя в модуле 12 декодирования может объединять соответствующие матрицы значений компонента пикселя для создания блоков пикселей (108). Например, модуль 12 декодирования может объединять блок значений Y со связанным блоком значений Cr и связанным блоком значений Cb для создания блока пикселей YCrCb. После создания блоков пикселей модулем 50 восстановления пикселя, модуль 52 объединителя блоков может заново объединять блоки пикселей в видеокадр (110).After module 48 calculates the inverse transformation of the matrix of pixel component values for each of the coefficient matrices, the pixel recovery module 50 in decoding module 12 may combine the corresponding matrix of pixel component values to create pixel blocks (108). For example, decoding unit 12 may combine a block of Y values with a linked block of Cr values and a linked block of Cb values to create a block of YCrCb pixels. After the pixel blocks are created by the pixel recovery module 50, the block combiner module 52 may re-combine the pixel blocks into a video frame (110).

Затем, модуль 53 управления кадром в модуле 12 декодирования может устанавливать, является ли текущий кадр i-кадром (114). Если текущий кадр является i-кадром ("ДА" 114), то модуль 52 объединителя блоков может выводить видеокадр в буфер 51 кадра (114). С другой стороны, если текущий кадр не является i-кадром (то есть, текущий кадр является прогнозированным или бипрогнозированным кадром) ("НЕТ" 114), то модуль 44 энтропийного декодирования использует схему энтропийного декодирования для декодирования векторов движения текущего кадра (116). Затем, модуль 56 формирования восстановленного кадра использует декодированные векторы движения и один или несколько опорных кадров в модуле 54 хранения кадра для формирования восстановленного кадра (118). После этого модуль 58 формирования прогнозированного кадра может использовать восстановленный кадр и кадр, сформированный модулем 52 объединителя блоков, для формирования восстановленного кадра (120).Then, the frame control unit 53 in the decoding unit 12 can determine whether the current frame is an i-frame (114). If the current frame is an i-frame ("YES" 114), then block combiner module 52 may output the video frame to frame buffer 51 (114). On the other hand, if the current frame is not an i-frame (that is, the current frame is a predicted or bi-predicted frame) ("NO" 114), then the entropy decoding unit 44 uses the entropy decoding scheme to decode the motion vectors of the current frame (116). Then, the reconstructed frame generation unit 56 uses the decoded motion vectors and one or more reference frames in the frame storage unit 54 to form the reconstructed frame (118). After that, the predicted frame generation module 58 may use the reconstructed frame and the frame generated by the block combiner 52 to form the reconstructed frame (120).

Фиг.6 является блок-схемой, изображающей иллюстративные детали модуля 48 обратного преобразования. Как изображено в примере фиг.6, модуль 48 обратного преобразования может содержать модуль 140 ввода. Модуль 140 ввода может принимать матрицу коэффициентов из модуля 46 деквантования. Например, модуль 140 ввода может принимать указатель, который указывает положение в модуле памяти устройства 2, где хранится матрица коэффициентов. В качестве альтернативы, модуль 140 ввода может включать в себя внутренние структуры данных, которые хранят матрицу коэффициентов.6 is a block diagram depicting illustrative details of an inverse transform unit 48. As shown in the example of FIG. 6, the inverse transform module 48 may comprise an input module 140. Input module 140 may receive a coefficient matrix from dequantization module 46. For example, input module 140 may receive a pointer that indicates a position in the memory module of device 2 where the coefficient matrix is stored. Alternatively, input module 140 may include internal data structures that store a matrix of coefficients.

Когда модуль 140 ввода принимает матрицу коэффициентов, модуль 140 ввода может предоставить матрицу коэффициентов в модуль 142 масштабирования в модуле 48 обратного преобразования. Модуль 142 масштабирования может выполнять операции, которые формируют значения, аппроксимирующие масштабирование коэффициентов в матрице коэффициентов масштабными множителями в эквивалентных позициях в матрице масштабных множителей. Например, модуль 142 масштабирования может выполнять операции умножения для формирования значений, аппроксимирующих масштабирование коэффициентов в матрице коэффициентов масштабными множителями в эквивалентных позициях в матрице масштабных множителей. В другом примере, модуль 142 масштабирования может выполнять одну или несколько операций сдвига и сложения. Каждый из этих масштабных множителей может быть 8-битовым целочисленным значением. Когда каждый из масштабных множителей является 8-битовым целым числом, динамический диапазон значений, формируемый во время преобразования, уменьшается.When input module 140 receives a coefficient matrix, input module 140 may provide a coefficient matrix to scale module 142 in inverse transform module 48. Scaling module 142 may perform operations that generate values approximating scaling of the coefficients in the coefficient matrix by scale factors at equivalent positions in the scale factor matrix. For example, scaling module 142 may perform multiplication operations to generate values approximating scaling of the coefficients in the coefficient matrix by scale factors at equivalent positions in the scale factor matrix. In another example, the scaling unit 142 may perform one or more shift and addition operations. Each of these scale factors can be an 8-bit integer value. When each of the scale factors is an 8-bit integer, the dynamic range of values formed during the conversion is reduced.

После формирования матрицы масштабированных коэффициентов модулем 142 масштабирования, модуль 144 смещения коэффициента может формировать матрицу смещенных коэффициентов посредством добавления значения смещения центра к коэффициенту DC матрицы масштабированных коэффициентов. Как обсуждалось выше, коэффициент DC матрицы, как правило, находится в верхнем левом углу матрицы. В общем, коэффициент DC представляет среднее значение других коэффициентов в матрице.After the matrix of scaled coefficients is generated by the scaler 142, the coefficient bias module 144 may generate a matrix of biased coefficients by adding a center offset value to the DC coefficient of the matrix of scaled coefficients. As discussed above, the DC matrix coefficient is typically located in the upper left corner of the matrix. In general, the DC coefficient represents the average of the other coefficients in the matrix.

Для добавления значения знако-адаптивного смещения к коэффициенту DC в 16-разрядном процессоре, модуль 144 смещения коэффициента может использовать следующую формулу:To add the sign-adaptive bias value to the DC coefficient in a 16-bit processor, the coefficient bias module 144 may use the following formula:

DC_coefficient=DC_coefficient+(1<<(P+2)).DC_coefficient = DC_coefficient + (1 << (P + 2)).

В этой формуле, терм (1<<(P+2)) добавлен для обеспечения смещения центра. P - константа, относящаяся к количеству битов мантиссы с фиксированной запятой (то есть, битов справа от символа, отделяющего целую часть числа от дробной), используемых в преобразовании, применяемом модулем 146 обратного преобразования вектора. К P прибавляется число 2, потому что модуль 148 сдвига вправо может сдвигать вправо все коэффициенты на (P+3), где число '3' получается из битов точности, добавляемых выполнением преобразования. Для детального рассмотрения этого момента, если число x сформировано сдвигом влево 1 на (P+2), и число z сформировано сдвигом вправо x на (P+3), то z=1/2. (То есть, 2P+2/2P+3=20/21=1/2). Соответственно, добавление (1<<(P+2)) к коэффициенту DC эквивалентно добавлению (1<<(P+3))/2 к коэффициенту DC.In this formula, a term (1 << (P + 2)) is added to provide center offsets. P is a constant related to the number of bits of the fixed-point mantissa (that is, bits to the right of the symbol separating the integer part of the number from the fractional one) used in the conversion used by the inverse vector conversion unit 146. The number 2 is added to P because the right shift unit 148 can shift to the right all the coefficients by (P + 3), where the number '3' is obtained from the precision bits added by the conversion. For a detailed consideration of this moment, if the number x is formed by a left shift of 1 by (P + 2), and the number z is formed by a right shift of x by (P + 3), then z = 1/2. (That is, 2 P + 2/2 P + 3 = 2 0/2 1 = 1/2). Accordingly, adding (1 << (P + 2)) to the DC coefficient is equivalent to adding (1 << (P + 3)) / 2 to the DC coefficient.

После формирования матрицы смещенных коэффициентов модулем 144 смещения коэффициента, с применением масштабированного одномерного преобразования с фиксированной запятой к каждой вектор-строке матрицы смещенных коэффициентов модуль 146 обратного преобразования вектора может формировать матрицу промежуточных значений. Затем, модуль 146 обратного преобразования вектора может вычислять матрицу преобразованных коэффициентов с применением масштабированного одномерного преобразования с фиксированной запятой к каждому вектор-столбцу матрицы промежуточных значений. Иллюстративная операция для применения масштабированного одномерного преобразования с фиксированной запятой к вектору масштабированных коэффициентов представлена ниже на фиг.10B.After the matrix of biased coefficients is generated by the coefficient bias module 144, using a scaled one-dimensional fixed-point transform to each vector row of the matrix of biased coefficients, the vector inverse transform module 146 can generate a matrix of intermediate values. Then, the vector inverse transform module 146 can calculate the matrix of transformed coefficients using a scaled one-dimensional fixed-point transform to each column vector of the matrix of intermediate values. An exemplary operation for applying a scaled one-dimensional fixed-point transform to a vector of scaled coefficients is presented below in FIG. 10B.

После формирования матрицы преобразованных коэффициентов модулем 146 обратного преобразования вектора, модуль 148 сдвига вправо может формировать матрицу скорректированных коэффициентов сдвигом вправо каждого из коэффициентов в матрице преобразованных коэффициентов на количество позиций, равное количеству битов, добавленных во время применения преобразования и во время масштабирования. Например, если применение преобразования в результате приводит к дополнительным трем битам и масштабирование коэффициентов добавляет дополнительные десять битов, то модуль 108 сдвига вправо может сдвигать вправо каждый из коэффициентов на тринадцать (3+10) позиций.After the matrix of the converted coefficients is generated by the vector inverse transform module 146, the right shift module 148 can generate the matrix of the adjusted coefficients by shifting to the right of each of the coefficients in the matrix of the converted coefficients by the number of positions equal to the number of bits added during conversion and during scaling. For example, if applying the transform results in an additional three bits, and scaling the coefficients adds an additional ten bits, then the right shift unit 108 can right-shift each of the coefficients by thirteen (3 + 10) positions.

После формирования матрицы скорректированных коэффициентов модулем 148 сдвига вправо, модуль 150 ограничения может формировать матрицу ограниченных коэффициентов путем "ограничения" коэффициентов в матрице скорректированных коэффициентов для ограничения коэффициентов максимальным допустимым диапазоном значений компонента пикселя. Например, как правило, значение компонента пикселя может находиться в пределах от -256 до 255. Если матрица скорректированных коэффициентов должна включать в себя коэффициент, равный 270, модуль 150 ограничения ограничивает этот коэффициент максимальным допустимым диапазоном с уменьшением этого коэффициента до 255. После окончания ограничения коэффициентов модулем 150 ограничения, эти коэффициенты могут представлять значения компонента пикселя. Когда модуль 150 ограничения заканчивает ограничение коэффициентов в матрице, модуль 150 ограничения может предоставить матрицу ограниченных коэффициентов в модуль 152 вывода.After the matrix of corrected coefficients is generated by the right shift module 148, the restriction module 150 may generate a matrix of restricted coefficients by “limiting” the coefficients in the matrix of adjusted coefficients to limit the coefficients to the maximum allowable range of pixel component values. For example, as a rule, the value of the pixel component can range from -256 to 255. If the matrix of adjusted coefficients should include a coefficient equal to 270, the restriction module 150 limits this coefficient to the maximum allowable range, decreasing this coefficient to 255. After the restriction is over coefficients by constraint module 150, these coefficients may represent pixel component values. When the restriction module 150 finishes limiting the coefficients in the matrix, the restriction module 150 may provide a matrix of restricted coefficients to the output module 152.

Когда модуль 152 вывода принимает матрицу ограниченных коэффициентов (которые теперь являются значениями компонента пикселя), модуль 152 вывода может выводить матрицу значений компонента пикселя в модуль 50 восстановления пикселя.When the output unit 152 receives a matrix of bounded coefficients (which are now the values of the pixel component), the output unit 152 can output the matrix of the values of the pixel component to the pixel recovery unit 50.

Фиг.7 является блок-схемой, изображающей иллюстративную работу модуля 34 обратного преобразования. Вначале, модуль 140 ввода принимает матрицу коэффициентов (170). Когда модуль 140 ввода принимает матрицу коэффициентов, модуль 142 масштабирования может масштабировать каждое значение в матрице коэффициентов (172). Например, модуль 142 масштабирования может выполнять операции, в которых каждый коэффициент в матрице коэффициентов умножается на значения в матрице масштабных множителей, которые находятся в эквивалентных позициях.7 is a block diagram depicting an illustrative operation of the inverse transform module 34. First, input module 140 receives a coefficient matrix (170). When input module 140 receives a coefficient matrix, scaling module 142 may scale each value in the coefficient matrix (172). For example, scaling module 142 may perform operations in which each coefficient in the coefficient matrix is multiplied by values in the matrix of scale factors that are in equivalent positions.

После масштабирования каждого коэффициента в матрице коэффициентов, модуль 144 смещения коэффициента может добавлять значение смещения центра к коэффициенту DC матрицы коэффициентов (174). После добавления значения смещения к коэффициенту DC матрицы модулем 144 смещения коэффициента, модуль 146 обратного преобразования вектора может устанавливать, меньше ли счетчик строки, чем максимум счетчика строки (176). Вначале, счетчик строки может быть установлен в ноль. Максимум счетчика строки может быть статическим значением, которое равно количеству строк в матрице коэффициентов. Например, если матрица коэффициентов включает в себя восемь строк, то максимум счетчика строки равен восьми.After scaling each coefficient in the coefficient matrix, coefficient offset module 144 may add a center offset value to the DC coefficient of the coefficient matrix (174). After the bias value is added to the DC coefficient of the matrix by the coefficient bias module 144, the vector inverse transform module 146 can determine whether the row counter is less than the row counter maximum (176). First, the line counter can be set to zero. The maximum of the row counter may be a static value, which is equal to the number of rows in the coefficient matrix. For example, if the matrix of coefficients includes eight rows, then the maximum of the row counter is eight.

Если счетчик строки меньше, чем максимум счетчика строки ("ДА" 176), то модуль 146 обратного преобразования вектора может вычислять масштабированное одномерное преобразование с фиксированной запятой вектор-строки матрицы коэффициентов, указываемой счетчиком строки (178). Когда модуль 146 обратного преобразования вектора вычисляет преобразование вектор-строки матрицы коэффициентов, модуль 146 обратного преобразования вектора может заменять исходные коэффициенты в этой вектор-строке коэффициентов вектором промежуточных коэффициентов. После вычисления преобразования вектор-строки матрицы коэффициентов модулем 146 обратного преобразования вектора, модуль 146 обратного преобразования вектора может увеличить счетчик строки (180). После этого модуль 146 обратного преобразования вектора может возвращаться к началу цикла и снова устанавливать, меньше ли счетчик строки, чем максимум счетчика строки (176).If the row counter is less than the maximum of the row counter ("YES" 176), then the vector inverse transform module 146 can calculate a scaled one-dimensional fixed-point transform of the row vector of the coefficient matrix indicated by the row counter (178). When the vector inverse transform module 146 computes the conversion of the row vector of the coefficient matrix, the vector inverse transform module 146 can replace the original coefficients in this coefficient row vector with the vector of intermediate coefficients. After calculating the vector-row transform of the coefficient matrix by the inverse vector transform module 146, the inverse vector transform module 146 can increase the row counter (180). After that, the vector inverse transform module 146 can return to the beginning of the cycle and again establish whether the line counter is less than the maximum of the line counter (176).

Если счетчик строки не меньше (то есть, больше или равен), чем максимум счетчика строки ("НЕТ" 176), то модуль 146 обратного преобразования вектора может устанавливать, меньше ли счетчик столбца, чем максимум счетчика столбца (182). Вначале, счетчик столбца может быть установлен в ноль. Максимум счетчика столбца может быть статическим значением, которое равно количеству столбцов в матрице коэффициентов. Например, если матрица коэффициентов включает в себя восемь столбцов, то максимум счетчика столбца равен восьми.If the row counter is not less than (that is, greater than or equal to) the maximum of the row counter (“NO” 176), then the vector inverse transform module 146 can determine whether the column counter is less than the maximum of the column counter (182). Initially, the column counter can be set to zero. The maximum of the column counter can be a static value, which is equal to the number of columns in the coefficient matrix. For example, if the matrix of coefficients includes eight columns, then the maximum column counter is eight.

Если счетчик столбца меньше, чем максимум счетчика столбца ("ДА" 182), то модуль 146 обратного преобразования вектора может вычислять одномерное преобразование вектор-столбца матрицы промежуточных коэффициентов, указываемого счетчиком столбца (184). Когда модуль 34 обратного преобразования вычисляет преобразование вектор-столбца промежуточных коэффициентов, модуль 34 обратного преобразования заменяет промежуточные коэффициенты в вектор-столбце вектором преобразованных коэффициентов.If the column counter is less than the maximum of the column counter ("YES" 182), then the vector inverse transform module 146 can calculate the one-dimensional transformation of the column vector of the matrix of intermediate coefficients indicated by the column counter (184). When the inverse transform unit 34 calculates the transformation of the column vector of the intermediate coefficients, the inverse transform module 34 replaces the intermediate coefficients in the column vector with the vector of the transformed coefficients.

После вычисления преобразования вектор-столбца матрицы коэффициентов модулем 146 обратного преобразования вектора, модуль 146 обратного преобразования вектора может увеличить счетчик столбца (186). После этого модуль 146 обратного преобразования вектора может возвращаться к началу цикла и снова устанавливать, меньше ли счетчик столбца, чем максимум счетчика столбца (182).After calculating the conversion of the column vector of the coefficient matrix by the vector inverse transform module 146, the vector inverse transform module 146 can increase the column counter (186). After this, the vector inverse transform module 146 can return to the beginning of the cycle and again establish whether the column counter is less than the maximum of the column counter (182).

Если счетчик столбца не меньше (то есть, больше или равен), чем максимум счетчика столбца ("НЕТ" 182), то модуль 148 сдвига вправо может сдвигать вправо каждый из преобразованных коэффициентов в матрице (188). Когда модуль 148 сдвига вправо сдвигает вправо коэффициент, модуль 148 сдвига вправо может сдвигать этот коэффициент вправо на определенное количество позиций. Результатом сдвига вправо каждого из вторых промежуточных коэффициентов в матрице является матрица скорректированных значений. После сдвига вправо каждого из преобразованных коэффициентов модулем 148 сдвига вправо, модуль 150 ограничения может ограничивать скорректированные коэффициенты для обеспечения того, что скорректированные коэффициенты находятся в пределах соответствующего диапазона для значений компонента пикселя (190). Например, модуль 150 ограничения может ограничивать скорректированные коэффициенты для обеспечения того, что скорректированные коэффициенты находятся в пределах диапазона от -256 до 255. Когда модуль 150 ограничения закончит ограничение скорректированных коэффициентов, модуль 152 вывода может выводить получающуюся в результате матрицу значений компонента пикселя (192).If the column counter is not less than (that is, greater than or equal to) the maximum of the column counter ("NO" 182), then the right shift unit 148 can right shift each of the transformed coefficients in the matrix (188). When the right shift module 148 shifts the coefficient to the right, the right shift module 148 can shift this coefficient to the right by a certain number of positions. The result of a right shift of each of the second intermediate coefficients in the matrix is a matrix of adjusted values. After right-shifting each of the transformed coefficients by the right-shift module 148, the restriction module 150 may limit the adjusted coefficients to ensure that the corrected coefficients are within the corresponding range for the values of the pixel component (190). For example, the restriction module 150 may limit the adjusted coefficients to ensure that the adjusted coefficients are within the range of -256 to 255. When the restriction module 150 finishes the correction of the adjusted coefficients, the output module 152 may output the resulting matrix of pixel component values (192) .

Фиг.8 является блок-схемой, изображающей иллюстративные детали модуля 26 прямого преобразования. Как изображено в примере фиг.8, модуль 26 прямого преобразования содержит модуль 210 ввода, который принимает матрицу значений компонента пикселя из модуля 24 выделения компонента. Когда модуль 210 ввода принимает матрицу значений компонента пикселя, модуль 210 ввода может предоставить матрицу значений компонента пикселя в модуль 212 сдвига влево. Модуль 212 сдвига влево может сдвигать все значения компонента пикселя в матрице значений компонента пикселя влево на количество битов мантиссы, используемых в значениях, которые модуль 214 прямого преобразования вектора использует при выполнении прямого преобразования минус количество битов мантиссы, удаленных при выполнении прямого преобразования. Например, если в значениях при выполнении прямого преобразования используются десять битов мантиссы, и при выполнении прямого дискретного косинусного преобразования три бита мантиссы удаляются, то модуль 212 сдвига влево может сдвигать значения компонента пикселя влево на семь позиций. В другом примере, если в значениях при выполнении прямого преобразования используются три бита мантиссы, и при выполнении прямого преобразования три бита мантиссы удаляются, то модуль 212 сдвига влево может сдвигать значения компонента пикселя влево на ноль позиций.8 is a block diagram depicting illustrative details of a direct conversion module 26. As shown in the example of FIG. 8, the direct conversion module 26 comprises an input module 210 that receives a matrix of pixel component values from the component extraction module 24. When input module 210 receives a matrix of pixel component values, input module 210 may provide a matrix of pixel component values to left shift module 212. The left shift module 212 can shift all the values of the pixel component in the matrix of values of the pixel component to the left by the number of mantissa bits used in the values that the direct vector conversion module 214 uses when performing the direct conversion minus the number of mantissa bits deleted when performing the direct conversion. For example, if ten mantissa bits are used in the values when performing the direct conversion, and when the direct discrete cosine transform is performed, the three mantissa bits are deleted, then the left shift module 212 can shift the values of the pixel component to the left by seven positions. In another example, if three mantissa bits are used in the values when performing a direct conversion, and three mantissa bits are deleted when performing a direct conversion, the left shift module 212 can shift the values of the pixel component to the left by zero positions.

После сдвига значений компонента пикселя модулем 212 сдвига влево, модуль 214 прямого преобразования вектора может применять прямое преобразование к каждому вектор-столбцу в матрице значений компонента пикселя для формирования матрицы промежуточных значений. Затем, модуль 214 прямого преобразования вектора может применять прямое преобразование к каждой вектор-строке в матрице промежуточных значений для формирования матрицы преобразованных коэффициентов. Когда модуль 214 прямого преобразования вектора применяет прямое преобразование к вектору, модуль 214 прямого преобразования вектора может применять прямое преобразование, описанное в фиг.11, ниже. Отметим, что преобразование, описанное на фиг.11 ниже, является обратным преобразованию, описанному на фиг.10A.After the pixel component values are shifted by the left shift module 212, the direct vector transform module 214 can apply a direct transform to each column vector in the matrix of values of the pixel component to form a matrix of intermediate values. Then, direct vector transform module 214 can apply direct transform to each row vector in the matrix of intermediate values to form a matrix of transformed coefficients. When the direct vector transform module 214 applies the direct transform to the vector, the direct vector transform module 214 can apply the direct transform described in FIG. 11 below. Note that the transformation described in FIG. 11 below is the inverse of the transformation described in FIG. 10A.

После формирования матрицы преобразованных коэффициентов модулем 214 прямого преобразования вектора, модуль 216 масштабирования может применять масштабные множители к каждому преобразованному коэффициенту в матрице преобразованных коэффициентов. Модуль 216 масштабирования может применять обратные величины масштабных множителей, используемых модулем 142 масштабирования в модуле 48 обратного преобразования. Например, если модуль 142 масштабирования масштабирует коэффициенты сдвигом коэффициентов влево на три позиции, то модуль 216 масштабирования может масштабировать преобразованные значения сдвигом преобразованных значений вправо на три позиции. В другом примере, если модуль 142 масштабирования масштабирует коэффициенты умножением коэффициентов на отдельные масштабные множители в матрице масштабных множителей, то модуль 216 масштабирования может масштабировать преобразованные значения умножением преобразованных значений на масштабные множители в матрице масштабных множителей, и затем сдвигом получающихся в результате значений вправо на некоторую величину. Для уменьшения ошибок округления, модуль 216 масштабирования может добавлять значение смещения центра к каждому из преобразованных значений после умножения преобразованных значений на масштабные множители. Например, модуль 216 масштабирования может использовать следующее уравнение для формирования матрицы масштабированных коэффициентов:After the matrix of the transformed coefficients is generated by the direct vector conversion module 214, the scaling module 216 can apply scale factors to each transformed coefficient in the matrix of the transformed coefficients. The scaling unit 216 may apply the inverse of the scale factors used by the scaling unit 142 in the inverse transform unit 48. For example, if the scaling unit 142 scales the coefficients by shifting the coefficients to the left by three positions, then the scaling unit 216 can scale the converted values by shifting the converted values to the right by three positions. In another example, if the scaling module 142 scales the coefficients by multiplying the coefficients by individual scale factors in the scale factor matrix, then the scaling module 216 can scale the converted values by multiplying the converted values by scale factors in the scale factor matrix, and then shift the resulting values to the right by some value. To reduce rounding errors, scaling module 216 may add a center offset value to each of the transformed values after multiplying the transformed values by scale factors. For example, scaling module 216 may use the following equation to generate a matrix of scaled coefficients:

F[v][u]=(F'[v][u]*S[v][u]+(1<<19)-((F'[v][u]>=0)?0:1))>>20F [v] [u] = (F '[v] [u] * S [v] [u] + (1 << 19) - ((F' [v] [u]> = 0)? 0: 1)) >> 20

где v=0..7, u=0..7, где S[v][u] - элемент в матрице масштабных множителей, F - матрица масштабированных коэффициентов, и F' - матрица преобразованных коэффициентов.where v = 0..7, u = 0..7, where S [v] [u] is the element in the matrix of scale factors, F is the matrix of scaled coefficients, and F 'is the matrix of transformed coefficients.

После формирования матрицы масштабированных коэффициентов модулем 216 масштабирования, модуль 218 вывода может выводить матрицу коэффициентов в модуль 28 квантования.After the matrix of scaled coefficients is generated by scaling module 216, output module 218 may output a coefficient matrix to quantization module 28.

Фиг.9 является блок-схемой, изображающей иллюстративную работу модуля 26 прямого преобразования. Вначале, модуль 210 ввода принимает матрицу значений компонента пикселя (230). Когда модуль 140 ввода принимает матрицу значений компонента пикселя, модуль 212 сдвига влево может формировать матрицу скорректированных коэффициентов сдвигом (влево) каждого значения в матрице значений компонента пикселя (232). Например, модуль 212 сдвига влево может сдвигать все коэффициенты влево на десять позиций. В этом примере, модуль 212 сдвига влево может сдвигать все коэффициенты вправо на десять позиций, потому что модуль 214 прямого преобразования вектора может использовать арифметические операции с фиксированной запятой, в которых числа закодированы с использованием десяти битов в дробной части. Соответственно, путем сдвига коэффициентов влево на десять позиций, модуль 212 сдвига влево фактически преобразует значения компонента пикселя в числа с фиксированной запятой с десятью битами мантиссы.Fig.9 is a block diagram depicting an illustrative operation of the direct conversion module 26. First, the input module 210 receives a matrix of values of the pixel component (230). When the input module 140 receives a matrix of pixel component values, the left shift module 212 may generate a matrix of adjusted coefficients by shifting (left) of each value in the matrix of pixel component values (232). For example, the left shift module 212 may shift all the coefficients to the left by ten positions. In this example, the left shift module 212 can shift all the coefficients to the right by ten positions, because the direct vector transform module 214 can use fixed point arithmetic operations in which numbers are encoded using ten bits in the fractional part. Accordingly, by shifting the coefficients left by ten positions, the left shifting module 212 actually converts the values of the pixel component into fixed-point numbers with ten bits of the mantissa.

После сдвига влево каждого значения компонента пикселя в матрице скорректированных значений, модуль 214 прямого преобразования вектора может устанавливать, меньше ли счетчик столбца, чем максимум счетчика строки (234). Вначале, счетчик столбца может быть установлен в ноль. Максимум счетчика столбца может быть статическим значением, которое равно количеству столбцов в матрице скорректированных коэффициентов. Например, если матрица скорректированных коэффициентов включает в себя восемь столбцов, то максимум счетчика столбца равен восьми.After shifting to the left each pixel component value in the matrix of adjusted values, the direct vector conversion module 214 can determine whether the column counter is less than the maximum of the row counter (234). Initially, the column counter can be set to zero. The maximum of the column counter can be a static value, which is equal to the number of columns in the matrix of adjusted coefficients. For example, if the matrix of adjusted coefficients includes eight columns, then the maximum column counter is eight.

Если счетчик столбца меньше, чем максимум счетчика столбца ("ДА" 234), то модуль 214 прямого преобразования вектора может вычислять одномерное прямое преобразование вектор-столбца, указываемого счетчиком столбца (236). Когда модуль 214 прямого преобразования вектора вычисляет прямое преобразование вектор-столбца матрицы скорректированных коэффициентов, модуль 214 прямого преобразования вектора заменяет исходные скорректированные коэффициенты в вектор-столбце промежуточными коэффициентами. После вычисления прямого преобразования вектор-столбца матрицы скорректированных коэффициентов модулем 214 прямого преобразования вектора, модуль 214 прямого преобразования вектора может увеличить счетчик столбца (238). После этого модуль 214 прямого преобразования вектора может возвращаться к началу цикла и снова устанавливать, меньше ли счетчик столбца, чем максимум счетчика столбца (234).If the column counter is less than the maximum of the column counter (“YES” 234), then the direct vector transform module 214 can calculate a one-dimensional direct transform of the column vector indicated by the column counter (236). When the direct vector transform module 214 calculates the direct column vector transform of the matrix of adjusted coefficients, the direct vector transform module 214 replaces the original corrected coefficients in the column vector with intermediate coefficients. After calculating the direct transform of the column vector of the matrix of adjusted coefficients by the direct vector transform module 214, the direct vector transform module 214 may increase the column counter (238). After that, the direct vector conversion module 214 can return to the beginning of the cycle and again establish whether the column counter is less than the maximum of the column counter (234).

Если счетчик столбца не меньше (то есть, больше или равен), чем максимум счетчика столбца ("НЕТ" 234), то модуль 214 прямого преобразования вектора может устанавливать, меньше ли счетчик строки, чем максимум счетчика строки (240). Вначале, счетчик строки может быть установлен в ноль. Максимум счетчика строки может быть статическим значением, которое равно количеству вектор-строк в матрице коэффициентов. Например, если матрица коэффициентов включает в себя восемь строк, то максимум счетчика строки равен восьми.If the column counter is not less than (that is, greater than or equal to) the maximum of the column counter (“NO” 234), then the direct vector conversion module 214 can determine whether the row counter is less than the maximum of the row counter (240). First, the line counter can be set to zero. The maximum of the row counter can be a static value, which is equal to the number of vector rows in the coefficient matrix. For example, if the matrix of coefficients includes eight rows, then the maximum of the row counter is eight.

Если счетчик строки меньше, чем максимум счетчика строки ("ДА" 240), то модуль 214 прямого преобразования вектора может вычислять одномерное дискретное косинусное преобразование вектор-строки, указываемой счетчиком строк (242). Поскольку модуль 214 прямого преобразования вектора уже вычислил прямое преобразование вектор-строк матрицы, то матрица коэффициентов теперь содержит промежуточные коэффициенты. Когда модуль 214 прямого преобразования вектора 214 вычисляет прямое преобразование вектор-строки промежуточных коэффициентов, модуль 214 прямого преобразования вектора заменяет промежуточные коэффициенты в вектор-столбце преобразованными коэффициентами.If the line counter is less than the maximum of the line counter ("YES" 240), then the direct vector transform module 214 can calculate a one-dimensional discrete cosine transform of the line vector indicated by the line counter (242). Since the direct vector conversion module 214 has already calculated the direct transformation of the row vector of the matrix, the coefficient matrix now contains intermediate coefficients. When the direct transform module 214 of the vector 214 calculates the direct transform of the row vector of the intermediate coefficients, the direct vector transform module 214 replaces the intermediate coefficients in the column vector with the converted coefficients.

После вычисления дискретного косинусного преобразования вектор-строки матрицы коэффициентов модулем 214 прямого преобразования вектора, модуль 214 прямого преобразования вектора может увеличить счетчик строки (244). После этого модуль 214 прямого преобразования вектора может возвращаться к началу цикла и снова устанавливать, меньше ли счетчик строки, чем максимум счетчика строки (240).After calculating the discrete cosine transform of the row vector of the coefficient matrix by the direct vector transform module 214, the direct vector transform module 214 can increase the row counter (244). After that, the direct vector conversion module 214 can return to the beginning of the cycle and again establish whether the line counter is less than the maximum of the line counter (240).

Если счетчик строки не меньше (то есть, больше или равен), чем максимум счетчика строки ("НЕТ" 240), то модуль 216 масштабирования может масштабировать каждый преобразованный коэффициент в матрице преобразованных коэффициентов (246). Когда модуль 216 масштабирования масштабирует коэффициент, модуль 216 масштабирования может сдвигать этот коэффициент вправо на определенное количество позиций. После масштабирования каждого из преобразованных коэффициентов модулем 216 масштабирования, модуль 218 вывода может выводить получающуюся в результате матрицу масштабированных коэффициентов (248).If the row counter is not less than (that is, greater than or equal to) the maximum of the row counter (“NO” 240), then the scaling unit 216 can scale each transformed coefficient in the matrix of transformed coefficients (246). When the scaling unit 216 scales the coefficient, the scaling module 216 can shift this coefficient to the right by a certain number of positions. After scaling each of the transformed coefficients by scaling module 216, output module 218 may output the resulting scaled coefficient matrix (248).

Фиг.10A является блок-схемой, изображающей иллюстративное одномерное преобразование 260. На фиг.10A, значения X0, X1, X2, X3, X4, X5, X6 и X7 представляют входные коэффициенты, и значения x0, x1, x2, x3, x4, x5, x6 и x7 представляют выходные значения преобразования 260. Значение, связанное с линией после кружка с символом "+" внутри, является результатом добавления значений, связанных со стрелками, которые указывают в этот кружок. Значение, связанное с линией после кружка с символом "x" внутри, является результатом умножения коэффициента, помещенного рядом с кружком, и значений, связанных с линиями, которые проходят через кружки. Символ "-" рядом со стрелкой представляет взятие со знаком минус значения, связанного со стрелкой. Например, если значение "10" связано со стрелкой перед символом "-", то со стрелкой после символа "-" связано значение "-10".10A is a block diagram depicting an illustrative one-dimensional transform 260. In FIG. 10A, the values of X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 and X 7 represent input coefficients, and x values 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6, and x 7 represent the output values of transform 260. The value associated with the line after the circle with the “+” symbol inside is the result of adding values associated with arrows that point to this circle. The value associated with the line after the circle with the "x" inside is the result of multiplying the coefficient next to the circle and the values associated with the lines that go through the circles. The “-” symbol next to the arrow represents a take with the minus sign of the value associated with the arrow. For example, if the value "10" is associated with the arrow before the "-" symbol, then the value "-10" is associated with the arrow after the "-" symbol.

Преобразование 260 использует четырнадцать операций умножения на семь специфических иррациональных множителей. Для удобства в этом раскрытии эти специфические иррациональные множители называются α, β, γ, δ, ε, ζ и η. В преобразовании 260, α=

Figure 00000018
cos(3π/8), β=
Figure 00000018
sin(3π/8), γ=cos(π/16), δ=sin(π/16), ε=cos(3π/16), ζ=sin(3π/16) и η=
Figure 00000018
. Отметим, что α, β, γ, δ, ε, ζ и η - все являются иррациональными числами. Поскольку α, β, γ, δ, ε, ζ и η являются иррациональными числами, то для представлений α, β, γ, δ, ε, ζ и η с приемлемой точностью может потребоваться относительно большое количество битов. Следовательно, соблюдение требований типичных стандартов кодирования может быть невозможным при использовании чисел с фиксированной запятой с относительно малым количеством битов мантиссы для вычисления преобразования 260. Кроме того, так как α, β, γ, δ, ε, ζ и η являются иррациональными числами, то может быть невозможным приведение операций умножения на α, β, γ, δ, ε, ζ и η к последовательностям операций сдвига, операций сложения и/или операций вычитания.Transformation 260 uses fourteen multiplication operations by seven specific irrational factors. For convenience, in this disclosure, these specific irrational factors are called α, β, γ, δ, ε, ζ, and η. In transformation 260, α =
Figure 00000018
cos (3π / 8), β =
Figure 00000018
sin (3π / 8), γ = cos (π / 16), δ = sin (π / 16), ε = cos (3π / 16), ζ = sin (3π / 16) and η =
Figure 00000018
. Note that α, β, γ, δ, ε, ζ, and η are all irrational numbers. Since α, β, γ, δ, ε, ζ, and η are irrational numbers, a relatively large number of bits may be required for representations of α, β, γ, δ, ε, ζ, and η with acceptable accuracy. Therefore, compliance with the requirements of typical coding standards may not be possible when using fixed-point numbers with a relatively small number of mantissa bits to calculate the transformation 260. In addition, since α, β, γ, δ, ε, ζ and η are irrational numbers, then it may not be possible to reduce the operations of multiplication by α, β, γ, δ, ε, ζ and η to sequences of shift operations, addition operations and / or subtraction operations.

Фиг.10B является блок-схемой, изображающей иллюстративное одномерное масштабированное преобразование 270. Преобразование 270 является масштабированной версией преобразования 260. В преобразовании 270, значение η было выделено как сомножитель преобразования 260, значение (1/ψ) было выделено как сомножитель значений γ, δ, ε и ζ преобразования 260, и значение (1/φ) было выделено как сомножитель значений α и β преобразования 260. Когда (1/ψ) и (1/φ) выделяются как сомножители этих коэффициентов, следующий вектор представляет значения, на которые умножают X0-X7 перед преобразованием 270:Fig. 10B is a block diagram depicting an illustrative one-dimensional scaled transform 270. Transform 270 is a scaled version of transform 260. In transform 270, the value η was highlighted as a factor of transform 260, the value (1 / ψ) was highlighted as a factor of γ, δ , ε, and ζ of transform 260, and the value (1 / φ) was extracted as the factor of α and β values of transform 260. When (1 / ψ) and (1 / φ) are distinguished as factors of these coefficients, the following vector represents the values by which multiply X 0 -X 7 before conversion 270:

Figure 00000019
Figure 00000019

Значения α, β, γ, δ, ε, ζ и η могут изменяться, когда (1/ψ) и (1/φ) выделяются как сомножители α, β, γ, δ, ε и ζ. Для удобства, значения α, β, γ, δ, ε и ζ, после выделения (1/ψ) и (1/φ) как сомножителей, называются α', β', γ', δ', ε' и ζ'. Например, когда ψ=1,352708058 и φ=0,959700091, α'≈133/256, β'≈321/256, γ'≈679/512, δ'≈135/512, ε'≈4605/4096 и ζ'≈1539/2048.The values of α, β, γ, δ, ε, ζ, and η can change when (1 / ψ) and (1 / φ) are distinguished as factors α, β, γ, δ, ε, and ζ. For convenience, the values of α, β, γ, δ, ε, and ζ, after distinguishing (1 / ψ) and (1 / φ) as factors, are called α ', β', γ ', δ', ε ', and ζ' . For example, when ψ = 1.352708058 and φ = 0.959700091, α'≈133 / 256, β'≈321 / 256, γ'≈679 / 512, δ'≈135 / 512, ε'≈4605 / 4096 and ζ'≈1539 / 2048.

Значения α', β', γ', δ', ε' и ζ' могут быть выбраны различными способами так, чтобы они аппроксимировали произведения α, β, γ, δ, ε и ζ на соответствующие множители ψ или φ. В общем, значения множителей ψ и φ и значения α', β', γ', δ', ε', ζ' могут быть выбраны без изменения всей схемы преобразования 270. Нахождение хороших значений этих множителей может представлять сложную задачу оптимизации, которая может привести к множеству решений с различными оптимальными соотношениями сложности и точности. Например, операции умножения на некоторые значения α', β', γ', δ', ε' и ζ' могут быть более удобными для вычисления, чем другие. Кроме того, значения ψ и φ могут быть важными, потому что они служат базисом для масштабных множителей, и некоторые масштабные множители могут быть более удобными для вычисления, чем другие. Например, операции умножения на первый набор значений для α', β', γ', δ', ε' и ζ' могут аппроксимироваться последовательностями операций сложения и операций сдвига, которые короче последовательностей операций сложения и операций сдвига для другого набора значений для α', β', γ', δ', ε' и ζ'. Например, когда ψ=1,352708058 и φ=0,959700091, γ' может быть аппроксимировано как 679/512. Для аппроксимации умножения на 679/512 могут потребоваться три операции сдвига и три операции сложения. Кроме того, когда ψ=1,1810842 и φ=0,801251953, γ' может быть аппроксимировано как 18981/16384. Для аппроксимации умножения на 18981/16384 могут потребоваться четыре операции сдвига и четыре операции сложения.The values of α ', β', γ ', δ', ε 'and ζ' can be selected in various ways so that they approximate the products of α, β, γ, δ, ε and ζ by the corresponding factors ψ or φ. In general, the values of the factors ψ and φ and the values of α ', β', γ ', δ', ε ', ζ' can be selected without changing the entire transformation scheme 270. Finding good values of these factors can be a difficult optimization problem, which can lead to a multitude of solutions with various optimal ratios of complexity and accuracy. For example, operations of multiplication by some values of α ', β', γ ', δ', ε 'and ζ' may be more convenient for calculation than others. In addition, the values of ψ and φ can be important because they serve as a basis for scale factors, and some scale factors may be more convenient to calculate than others. For example, the operations of multiplying by the first set of values for α ', β', γ ', δ', ε 'and ζ' can be approximated by sequences of addition and shift operations that are shorter than sequences of addition and shift operations for another set of values for α ' , β ', γ', δ ', ε' and ζ '. For example, when ψ = 1.352708058 and φ = 0.959700091, γ 'can be approximated as 679/512. To approximate the multiplication by 679/512, three shift operations and three addition operations may be required. In addition, when ψ = 1.1810842 and φ = 0.801251953, γ 'can be approximated as 18981/16384. To approximate the multiplication by 18981/16384, four shift operations and four addition operations may be required.

Матрица масштабных множителей может быть вычислена умножением транспозиции вектора

Figure 00000020
на идентичный вектор. В результате этого получается матрица значений, 8×8:The matrix of scale factors can be calculated by multiplying the transposition of the vector
Figure 00000020
to an identical vector. The result is a matrix of values, 8 × 8:

Figure 00000021
Figure 00000021

В этой матрице масштабных коэффициентов,

Figure 00000022
.In this matrix of scale factors,
Figure 00000022
.

Так как масштабные множители умножаются на коэффициенты до применения преобразования, масштабные множители A, B, C, D, E, F, G, H, I и J могут быть сдвинуты влево на P позиций, где P - константа согласно количеству битов мантиссы с фиксированной запятой (то есть, битов справа от символа, отделяющего целую часть числа от дробной), используемых в преобразовании. Посредством этого исходные коэффициенты эффективно преобразуются в числа с фиксированной запятой с P битами мантиссы. Другими словами, каждый из коэффициентов в матрице умножается на 2P. Получающиеся в результате значения могут затем быть аппроксимированы целочисленными значениями. Соответственно, A, B, C, D, E, F, G, H, I и J в вышеупомянутой матрице могут быть заменены на

Figure 00000023
Since the scale factors are multiplied by the coefficients before applying the transform, the scale factors A, B, C, D, E, F, G, H, I, and J can be shifted to the left by P positions, where P is a constant according to the number of bits of the mantissa with a fixed a comma (that is, bits to the right of the character separating the integer part of the number from the fractional) used in the conversion. Through this, the initial coefficients are effectively converted to fixed-point numbers with P bits of the mantissa. In other words, each of the coefficients in the matrix is multiplied by 2 P. The resulting values can then be approximated by integer values. Accordingly, A, B, C, D, E, F, G, H, I and J in the above matrix can be replaced by
Figure 00000023

Например, пусть ψ=1,352708058, φ=0,959700091 и P=10. С учетом этих значений ψ, φ и P, можно выбрать масштабные множители A'=1024, B'=757, C'=1067, D'=1071, E'=560, F'=789, G'=792, H'=1112, I'=1116 и J'=1120. Соответственно, в результате может получиться следующая матрица масштабных множителей:For example, let ψ = 1.352708058, φ = 0.959700091 and P = 10. Given these values of ψ, φ and P, we can choose the scale factors A '= 1024, B' = 757, C '= 1067, D' = 1071, E '= 560, F' = 789, G '= 792, H '= 1112, I' = 1116 and J '= 1120. Accordingly, the result can be the following matrix of scale factors:

Figure 00000024
Figure 00000024

В следующих таблицах суммированы иллюстративные масштабные множители и значения α', β', γ', δ', ε' и ζ', которые могут быть использованы с преобразованием 270.The following tables summarize illustrative scale factors and the values of α ', β', γ ', δ', ε ', and ζ' that can be used with transform 270.

Таблица 1: Аппроксимации множителей константой, используемые в алгоритме A.Table 1: Constant Factor Approximations Used in Algorithm A.

Figure 00000025
Figure 00000026
Figure 00000025
Figure 00000026

Таблица 2: Аппроксимации множителей константой, используемые в алгоритме B.Table 2: Constant Factor Approximations Used in Algorithm B.

Figure 00000027
Figure 00000028
Figure 00000027
Figure 00000028

Таблица 3: Аппроксимации множителей константой, используемые в алгоритме C.Table 3: Constant Factor Approximations Used in Algorithm C.

Figure 00000029
Figure 00000030
Figure 00000029
Figure 00000030

Для иллюстрации того, как модуль 48 IDCT может использовать масштабные множители, постоянные значения и алгоритмы, представленные в вышеупомянутых таблицах, рассмотрим вышеупомянутую таблицу 3. Для применения обратного дискретного косинусного преобразования с использованием значений в таблице 3, модуль 140 ввода в модуле 48 IDCT может принимать матрицу коэффициентов, 8×8. Затем, модуль 142 масштабирования масштабирует коэффициент в позиции [0,0] матрицы множителем A, масштабирует коэффициент в позиции [0,1] матрицы множителем B, масштабирует коэффициент в позиции [0,2] матрицы множителем C, масштабирует коэффициент в позиции [0,3] матрицы множителем D, масштабирует коэффициент в позиции [0,4] матрицы множителем A, масштабирует коэффициент в позиции [0,5] матрицы множителем D, масштабирует коэффициент в позиции [0,6] матрицы множителем C, масштабирует коэффициент в позиции [0,7] матрицы множителем B, масштабирует коэффициент в позиции [1,0] матрицы множителем B, масштабирует коэффициент в позиции [1,1] матрицы множителем E, масштабирует коэффициент в позиции [1,2] матрицы множителем F, масштабирует коэффициент в позиции [1,3] матрицы множителем G, масштабирует коэффициент в позиции [1,4] матрицы множителем B, масштабирует коэффициент в позиции [1,5] матрицы множителем G, масштабирует коэффициент в позиции [1,6] матрицы множителем F, масштабирует коэффициент в позиции [1,7] матрицы множителем E, масштабирует коэффициент в позиции [2,0] матрицы множителем C, масштабирует коэффициент в позиции [2,1] матрицы множителем F, масштабирует коэффициент в позиции [2,2] матрицы множителем H, масштабирует коэффициент в позиции [2,3] матрицы множителем I, масштабирует коэффициент в позиции [2,4] матрицы множителем C, масштабирует коэффициент в позиции [2,5] матрицы множителем I, масштабирует коэффициент в позиции [2,6] матрицы множителем H, масштабирует коэффициент в позиции [2,7] матрицы множителем F, масштабирует коэффициент в позиции [3,0] матрицы множителем D, масштабирует коэффициент в позиции [3,1] матрицы множителем G, масштабирует коэффициент в позиции [3,2] матрицы множителем I, масштабирует коэффициент в позиции [3,3] матрицы множителем J, масштабирует коэффициент в позиции [3,4] матрицы множителем D, масштабирует коэффициент в позиции [3,5] матрицы множителем J, масштабирует коэффициент в позиции [3,6] матрицы множителем I, масштабирует коэффициент в позиции [3,7] матрицы множителем G, масштабирует коэффициент в позиции [4,0] матрицы множителем A, масштабирует коэффициент в позиции [4,1] матрицы множителем B, масштабирует коэффициент в позиции [4,2] матрицы множителем C, масштабирует коэффициент в позиции [4,3] матрицы множителем D, масштабирует коэффициент в позиции [4,4] матрицы множителем A, масштабирует коэффициент в позиции [4,5] матрицы множителем D, масштабирует коэффициент в позиции [4,6] матрицы множителем C, масштабирует коэффициент в позиции [4,7] матрицы множителем B, масштабирует коэффициент в позиции [5,0] матрицы множителем D, масштабирует коэффициент в позиции [5,1] матрицы множителем G, масштабирует коэффициент в позиции [5,2] матрицы множителем I, масштабирует коэффициент в позиции [5,3] матрицы множителем J, масштабирует коэффициент в позиции [5,4] матрицы множителем D, масштабирует коэффициент в позиции [5,5] матрицы множителем J, масштабирует коэффициент в позиции [5,6] матрицы множителем I, масштабирует коэффициент в позиции [5,7] матрицы множителем G, масштабирует коэффициент в позиции [6,0] матрицы множителем C, масштабирует коэффициент в позиции [6,1] матрицы множителем F, масштабирует коэффициент в позиции [6,2] матрицы множителем H, масштабирует коэффициент в позиции [6,3] матрицы множителем I, масштабирует коэффициент в позиции [6,4] матрицы множителем C, масштабирует коэффициент в позиции [6,5] матрицы множителем I, масштабирует коэффициент в позиции [6,6] матрицы множителем H, масштабирует коэффициент в позиции [6,7] матрицы множителем F, масштабирует коэффициент в позиции [7,0] матрицы множителем B, масштабирует коэффициент в позиции [7,1] матрицы множителем E, масштабирует коэффициент в позиции [7,2] матрицы множителем F, масштабирует коэффициент в позиции [7,3] матрицы множителем G, масштабирует коэффициент в позиции [7,4] матрицы множителем B, масштабирует коэффициент в позиции [7,5] матрицы множителем G, масштабирует коэффициент в позиции [7,6] матрицы множителем F и масштабирует коэффициент в позиции [7,7] матрицы множителем E. Когда модуль 142 масштабирования масштабирует эти коэффициенты, модуль 142 масштабирования может использовать значения A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528, специфицированные в таблице 6. Эти масштабированные коэффициенты составляют матрицу масштабированных коэффициентов.To illustrate how the IDCT module 48 can use the scale factors, constant values, and algorithms presented in the above tables, consider the above table 3. To apply the inverse discrete cosine transform using the values in table 3, the input module 140 in the IDCT module 48 can take matrix of coefficients, 8 × 8. Then, the scaling unit 142 scales the coefficient at the [0,0] position of the matrix by factor A, scales the coefficient at the [0,1] position of the matrix by factor B, scales the coefficient at the position [0,2] of the matrix by factor C, scales the coefficient at position [0 , 3] matrices by the factor D, scales the coefficient at the position [0.4] of the matrix by the factor A, scales the coefficient at the position [0.5] of the matrix by the factor D, scales the coefficient at the position [0.6] of the matrix by the factor C, scales the coefficient at the position [0.7] matrices by a factor of B, scales the coefficient in positions of the matrix [1,0] by the factor B, scales the coefficient at the position [1,1] of the matrix by the factor E, scales the coefficient at the position [1,2] of the matrix by the factor F, scales the coefficient at the position [1,2] of the matrix by the factor G, scales the coefficient at the matrix position [1,4] by the factor B, scales the coefficient at the matrix position [1,5] by the factor G, scales the coefficient at the matrix position [1,6] by the factor F, scales the coefficient at the matrix position [1,7] by the factor E , scales the coefficient at the position [2,0] of the matrix by the factor C, scales the coefficient in p positions [2,1] of the matrix by the factor F, scales the coefficient at the position [2,2] of the matrix by the factor H, scales the coefficient at the position [2,3] of the matrix by the factor I, scales the coefficient at the position [2,4] of the matrix by the factor C, scales the coefficient at the matrix position [2.5] by the factor I, scales the coefficient at the matrix position [2.6] by the factor H, scales the coefficient at the matrix position [2.7] by the factor F, scales the coefficient at the matrix position [3.0] by the factor D , scales the coefficient at the position [3,1] of the matrix by the factor G, scales the coefficient in p positions of the matrix [3,2] by the factor I, scales the coefficient at the position [3,3] of the matrix by the factor J, scales the coefficient at the position [3,4] of the matrix by the factor D, scales the coefficient at the position [3,5] of the matrix by the factor J, scales the coefficient in the matrix position [3,6] by the factor I, scales the coefficient in the matrix position [3,7] by the factor G, scales the coefficient in the matrix position [4,0] by the factor A, scales the coefficient in the matrix position [4,1] by the factor B , scales the coefficient at the position [4,2] of the matrix by the factor C, scales the coefficient in position [4,3] of the matrix by the factor D, scales the coefficient at the position [4,4] of the matrix by the factor A, scales the coefficient at the position [4,5] of the matrix by the factor D, scales the coefficient at the position [4,5] of the matrix by the factor C, scales the coefficient at the matrix position [4.7] by the factor B, scales the coefficient at the matrix position [5.0] by the factor D, scales the coefficient at the matrix position [5.1] by the factor G, scales the coefficient at the matrix position [5.2] by the factor I , scales the coefficient at the position [5.3] of the matrix by the factor J, scales the coefficient in of the matrix [5,4] by the factor D, scales the coefficient at the position [5,5] of the matrix by the factor J, scales the coefficient at the position [5,6] of the matrix by the factor I, scales the coefficient at the position [5,6] of the matrix by the factor G, scales the coefficient at the matrix position [6.0] by the factor C, scales the coefficient at the matrix position [6.1] by the factor F, scales the coefficient at the matrix position [6.2] by the factor H, scales the coefficient at the matrix position [6.3] by the factor I , scales the coefficient in the position [6,4] of the matrix by the factor C, scales the coefficient in pos [6.5] of the matrix by a factor of I, scales the coefficient at the position [6.6] of the matrix by the factor H, scales the coefficient at the position [6.7] of the matrix by the factor F, scales the coefficient at the position [6.7] of the matrix by the factor B, scales the coefficient at the matrix position [7.1] by the factor E, scales the coefficient at the matrix position [7.2] by the factor F, scales the coefficient at the matrix position [7.3] by the factor G, scales the coefficient at the matrix position [7.4] by the factor B , scales the coefficient in position [7.5] of the matrix by the factor G, scales the coefficient in pos of the matrix [7.6] by the factor F and scales the coefficient at the position [7.7] of the matrix by the factor E. When the scaling unit 142 scales these coefficients, the scaling unit 142 can use the values A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528 specified in Table 6. These scaled coefficients constitute a matrix of scaled coefficients.

После масштабирования коэффициентов модулем 142 масштабирования, модуль 146 обратного преобразования может применять преобразование к каждой вектор-строке матрицы масштабированных коэффициентов для формирования матрицы промежуточных коэффициентов и применять преобразование к каждому вектор-столбцу матрицы промежуточных коэффициентов для формирования матрицы преобразованных коэффициентов. Модуль 146 обратного преобразования может применять преобразование к вектор-строке или вектор-столбцу посредством: вычисления значения x0' суммированием x0 и x4, вычисления значения x4' суммированием x0 и -x4, вычисления значения (x2*α) умножением x2 на значение α, вычисления значения (x6*β) умножением x6 на значение β, вычисления значения (x2*β) умножением x2 на значение β, вычисления значения (x6*α) умножением x6 на значение α, вычисления значения x2' суммированием (x2*α) и -(x6*β), вычисления значения x6' суммированием (x6*α) и (x2*β), вычисления значения x0'' суммированием x0' и x6', вычисления значения x4'' суммированием x4' и x2', вычисления значения x2'' суммированием x4' и -x2', вычисления значения x6'' суммированием x0' и -x6', вычисления значения x7' суммированием x1 и -x7, вычисления значения x1' суммированием x1 и x7, вычисления значения x3' умножением x3 на квадратный корень из двух, вычисления значения x5' умножением x5 на квадратный корень из двух, вычисления значения x7'' суммированием x7' и x5', вычисления значения x3'' суммированием x1' и -x3', вычисления значения x5'' суммированием x7' и -x5', вычисления значения x1'' суммированием x3' и x1', вычисления значения (x7''*ε) умножением x7'' на значение ε, вычисления значения (x7''*ζ) умножением x7'' на значение ζ, вычисления значения (x3''*γ) умножением x3'' на значение γ, вычисления значения (x3''*δ) умножением x3'' на значение δ, вычисления значения (x5''*δ) умножением x5'' на значение δ, вычисления значения (x5''*γ) умножением x5'' на значение γ, вычисления значения (x1''*ε) умножением x1'' на значение ε, вычисления значения x7''' суммированием (x7''*ε) и -(x1''*ζ), вычисления значения x3''' суммированием (x3''*γ) и -(x5''*δ), вычисления значения x5''' суммированием (x5''*γ) и (x3''*δ), вычисления значения x1''' суммированием (x1''*ε) и (x7''*ζ), вычисления значения X0 суммированием x7''' и x0'', вычисления значения X1 суммированием x4'' и x5''', вычисления значения X2 суммированием x2'' и x3''', вычисления значения X3 суммированием x6'' и x7''', вычисления значения X4 суммированием x6'' и -x1''', вычисления значения X5 суммированием x2'' и -x3''', вычисления значения X6 суммированием x4'' и -x5''', вычисления значения X7 суммированием x0'' и -x1''', причем x0, x1, x2, x3, x4, x5, x6, x7 являются коэффициентами в вектор-строке или вектор-столбце, и X1, X2, X3, X4, X5, X6 и X7 являются выходными значениями преобразования. При выполнении этих вычислений, модуль 146 обратного преобразования использует дробные значения α=41/128, β=99/128, γ=1533/2048, δ=1/2, ε=113/128 и ζ=719/4096, умножение на которые вычисляется посредством алгоритма без операций умножения, как указано в таблице 3.After scaling the coefficients by scaling module 142, the inverse transform module 146 can apply a transform to each row row of the matrix of scaled coefficients to form a matrix of intermediate coefficients and apply a transform to each column vector of the matrix of intermediate coefficients to form a matrix of transformed coefficients. The inverse transform module 146 may apply the transform to a row vector or column vector by: calculating the value x 0 ′ by adding x 0 and x 4 , computing the value x 4 ′ by adding x 0 and -x 4 , calculating the value (x 2 * α) multiplying x 2 by the value of α, calculating the value (x 6 * β) by multiplying x 6 by the value of β, calculating the value (x 2 * β) by multiplying x 2 by the value of β, calculating the value (x 6 * α) by multiplying x 6 by the value α, calculate the value x 2 'summation of (x 2 * α) and - (x 6 * β), calculate the value x 6' summing (x 6 * α) and (x 2 * β), calculation values Ia x 0 '' summation of x 0 'and 6 x' value calculating x 4 '' x 4 summing 'and x 2', calculating the value x 2 '' x 4 summing 'and -x 2', x value calculation 6 ''by adding x 0 ' and -x 6 ', calculating the value x 7 ' by adding x 1 and -x 7 , calculating the value x 1 'by adding x 1 and x 7 , calculating the value x 3 ' by multiplying x 3 by the square root of two, calculating the x 5 'value by multiplying x 5 by the square root of two, calculating the x 7 ''by adding x 7 ' and x 5 ', calculating the x 3 ''by adding x 1 ' and -x 3 ', calculating the x 5 ''by adding x 7 ' and -x 5 '', calculating the value x 1 '' by adding x 3 'and x 1 ', calculating the value (x 7 '' * ε) by multiplying x 7 '' by ε, calculating the value (x 7 '' * ζ) by multiplying x 7 ''by the value ζ, calculating the value (x 3 ''* γ) by multiplying x 3 ''by the value γ, calculating the value (x 3 ''* δ) by multiplying x 3 ''by the value δ, calculating the value (x 5 '' * δ) by multiplying x 5 '' by δ, calculating the value (x 5 '' * γ) by multiplying x 5 '' by γ, calculating the value (x 1 '' * ε) by multiplying x 1 '' by ε, calculating the value x 7 '''by summing (x 7 ''* ε) and - (x 1 ''* ζ), calculating the value x 3 ''' by summing (x 3 ''* γ) and - (x 5' '* δ), calculate the value x 5' '' summing (x 5 '' * γ) and (x 3 '' * δ), calculate the value x 1 '''summing ( x 1 '' * ε) and (x 7 '' * ζ), calculate the value of x 0 by summing x 7 '''and x 0', calculating the value x 1 summation x 4 '' and x 5 ''', calculating summing the values of x 2 x 2 '' and x 3 ''', x 3 value calculating summing x 6' 'and 7 x''', 4 x value calculating summing x 6 '' and -x 1 ''': calculation value x 5 summing x 2 '' and -x 3 ''', x value calculation 6 summing x 4' 'and -x 5' '', x 7 value calculating summing x 0 '' and -x 1 ''', wherein x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 is are coefficients in a row vector or column vector, and X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 are output transform values. When performing these calculations, the inverse transform module 146 uses the fractional values α = 41/128, β = 99/128, γ = 1533/2048, δ = 1/2, ε = 113/128 and ζ = 719/4096, multiplied by which is calculated by means of an algorithm without multiplication operations, as indicated in table 3.

Следующий код содержит иллюстративную реализацию преобразования 270 на языке C:The following code contains an illustrative implementation of C transform 270 in C:

/* Определение значений масштабных множителей*// * Definition of scale factor values * /

#define A 1024#define A 1024

#define B 1138#define B 1138

#define C 1730#define C 1730

#define D 1609#define D 1609

#define E 1264#define E 1264

#define F 1922#define F 1922

#define G 1788#define G 1788

#define H 2923#define H 2923

#define I 2718#define I 2718

#define J 2528#define J 2528

/* Определение матрицы масштабных множителей *// * Definition of a matrix of scale factors * /

static int scale [8*8]={static int scale [8 * 8] = {

A, B, C, D, A, D, C, B,A, B, C, D, A, D, C, B,

B, E, F, G, B, G, F, E,B, E, F, G, B, G, F, E,

C, F, H, I, C, I, H, F,C, F, H, I, C, I, H, F,

D, G, I, J, D, J, I, G,D, G, I, J, D, J, I, G,

A, B, C, D, A, D, C, B,A, B, C, D, A, D, C, B,

D, G, I, J, D, J, I, G,D, G, I, J, D, J, I, G,

C, F, H, I, C, I, H, F,C, F, H, I, C, I, H, F,

B, E, F, G, B, G, F, EB, E, F, G, B, G, F, E

};};

void scaled_ld_idct (int *, int *);void scaled_ld_idct (int *, int *);

void idct (short *P)void idct (short * P)

{{

int block [8*8], block2 [8*8], i;int block [8 * 8], block2 [8 * 8], i;

/* Масштабирование каждого из входных коэффициентов *// * Scaling of each of input coefficients * /

for (i=0; i<64; i++)for (i = 0; i <64; i ++)

block[i]=scale[i]*P[i];block [i] = scale [i] * P [i];

/* Добавление смещения к коэффициенту DC *// * Add offset to DC factor * /

block[0]+=1<<12;block [0] + = 1 << 12;

/* Применение векторного обратного дискретного косинусного преобразования к каждой строке и столбцу блока. *// * Applying the vector inverse discrete cosine transform to each row and column of a block. * /

for (i=0; i<8; i++)for (i = 0; i <8; i ++)

scaled_ld_idct (block + i*8, block2 + i);scaled_ld_idct (block + i * 8, block2 + i);

for (i=0; i<8; i++)for (i = 0; i <8; i ++)

scaled_ld_idct (block2 + i*8, block + i);scaled_ld_idct (block2 + i * 8, block + i);

/* Сдвиг вправо каждого из преобразованных коэффициентов *// * Shift to the right of each of the converted coefficients * /

for (i=0; i<64; i++)for (i = 0; i <64; i ++)

P[i]=block[i]>>13;P [i] = block [i] >> 13;

}}

#define mul_l(y,z)#define mul_l (y, z)

{{

int y2, y3;int y2, y3;

y2=(y>>3)-(y>>7);y2 = (y >> 3) - (y >> 7);

y3=y2-(y>>11);y3 = y2- (y >> 11);

z=y2 + (y3>>1);z = y2 + (y3 >> 1);

Y=Y-Y2;Y = Y-Y2;

}}

#define mul_2(y,z)#define mul_2 (y, z)

{{

int y2;int y2;

y2=(y>>9)-y;y2 = (y >> 9) -y;

z=y>>1;z = y >> 1;

y=(y2>>2)-y2;y = (y2 >> 2) -y2;

}}

#define mul_3(y,z)#define mul_3 (y, z)

{{

int y2, y3;int y2, y3;

y2=y + (y>>5);y2 = y + (y >> 5);

y3=y2>>2;y3 = y2 >> 2;

y=y3 + (y>>4);y = y3 + (y >> 4);

z=y2-y3;z is y2-y3;

}}

void scaled_ld_idct (int *in, int *out)void scaled_ld_idct (int * in, int * out)

{{

int x0, xl, x2, x3, x4, x5, x6, x7, xa, xb;int x0, xl, x2, x3, x4, x5, x6, x7, xa, xb;

xl=in[l];xl = in [l];

x3=in[3];x3 = in [3];

x5=in[5];x5 = in [5];

x7=in[7];x7 = in [7];

xa=xl+x7;xa = xl + x7;

xb=x1-x7;xb = x1-x7;

xl=xa+x3;xl = xa + x3;

x3=xa-x3;x3 = xa-x3;

x7=xb+x5;x7 = xb + x5;

x5=xb-x5;x5 = xb-x5;

mul_l(x3, xa);mul_l (x3, xa);

mul_l(x5, xb);mul_l (x5, xb);

x3=x3-xb;x3 = x3-xb;

x5=x5 + xa;x5 = x5 + xa;

mul_2(xl, xa);mul_2 (xl, xa);

mu1_2(x7, xb);mu1_2 (x7, xb);

xl=xl+xb;xl = xl + xb;

x7=x7-xa;x7 = x7-xa;

x0=in[0];x0 = in [0];

x2=in[2];x2 = in [2];

x4=in[4];x4 = in [4];

x6=in[6];x6 = in [6];

mul_3(x2, xa);mul_3 (x2, xa);

mul_3(x6, xb);mul_3 (x6, xb);

x2=x2-xb;x2 = x2-xb;

x6=x6+xa;x6 = x6 + xa;

xa=x0+x4;xa = x0 + x4;

xb=x0-x4;xb = x0-x4;

x0=xa+x6;x0 = xa + x6;

x6=xa-x6;x6 = xa-x6;

x4=xb+x2;x4 = xb + x2;

x2=xb-x2;x2 = xb-x2;

out[0*8]=x0+xl;out [0 * 8] = x0 + xl;

out[1*8]=x4+x5;out [1 * 8] = x4 + x5;

out[2*8]=x2+x3;out [2 * 8] = x2 + x3;

out[3*8]=x6+x7;out [3 * 8] = x6 + x7;

out[4*8]=x6-x7;out [4 * 8] = x6-x7;

out[5*8]=x2-x3;out [5 * 8] = x2-x3;

out[6*8]=x4-x5;out [6 * 8] = x4-x5;

out[7*8]=x0-xl;out [7 * 8] = x0-xl;

}}

void scaled_ld_fdct (int *, int *);void scaled_ld_fdct (int *, int *);

void fdct (short *P)void fdct (short * P)

{{

int block[8*8], block2[8*8], i;int block [8 * 8], block2 [8 * 8], i;

for (i=0; i<64; i++)for (i = 0; i <64; i ++)

block[i]=P[i]<< 7;block [i] = P [i] << 7;

for (i=0; i<8; i++)for (i = 0; i <8; i ++)

scaled_ld_fdct (block + i, block2 + i*8);scaled_ld_fdct (block + i, block2 + i * 8);

for (i=0; i<8; i++)for (i = 0; i <8; i ++)

scaled_ld_fdct (block2 + i, block + i*8);scaled_ld_fdct (block2 + i, block + i * 8);

for (i=0; i<64; i++)for (i = 0; i <64; i ++)

P[i]=(block[i]*scale[i]+0x7FFFF-(block[i]>>31))>>20;P [i] = (block [i] * scale [i] + 0x7FFFF- (block [i] >> 31)) >> 20;

}}

void scaled_ld_fdct (int *in, int *out)void scaled_ld_fdct (int * in, int * out)

{{

int x0, xl, x2, x3, x4, x5, x6, x7, xa, xb;int x0, xl, x2, x3, x4, x5, x6, x7, xa, xb;

x0=in[0*8] + in[7*8];x0 = in [0 * 8] + in [7 * 8];

x1=in[0*8] - in[7*8];x1 = in [0 * 8] - in [7 * 8];

x4=in[l*8] + in[6*8];x4 = in [l * 8] + in [6 * 8];

x5=in[l*8] - in[6*8];x5 = in [l * 8] - in [6 * 8];

x2=in[2*8] + in[5*8];x2 = in [2 * 8] + in [5 * 8];

x3=in[2*8] - in[5*8];x3 = in [2 * 8] - in [5 * 8];

x6=in[3*8] + in[4*8];x6 = in [3 * 8] + in [4 * 8];

x7=in[3*8]-in[4*8];x7 = in [3 * 8] -in [4 * 8];

mul_l(x3, xa);mul_l (x3, xa);

mul_l(x5, xb);mul_l (x5, xb);

x3=x3+xb;x3 = x3 + xb;

x5=x5-xa;x5 = x5-xa;

mul_2(xl, xa);mul_2 (xl, xa);

mul_2(x7, xb);mul_2 (x7, xb);

xl=xl-xb;xl = xl-xb;

x7=x7+xa;x7 = x7 + xa;

xa=xl+x3;xa = xl + x3;

x3=xl-x3;x3 = xl-x3;

xb=x7+x5;xb = x7 + x5;

x5=x7-x5;x5 = x7-x5;

xl=xa + xb;xl = xa + xb;

x7=xa-xb;x7 = xa-xb;

xa=x0+x6;xa = x0 + x6;

x6=x0-x6;x6 = x0-x6;

xb=x4+x2;xb = x4 + x2;

x2=x4-x2;x2 = x4-x2;

x0=xa+xb;x0 = xa + xb;

x4=xa-xb;x4 = xa-xb;

mul_3(x2, xa);mul_3 (x2, xa);

mul_3(x6, xb);mul_3 (x6, xb);

x2=xb+x2;x2 = xb + x2;

x6=x6-xa;x6 = x6-xa;

out[0]=x0;out [0] = x0;

out[1]=xl;out [1] = xl;

out[2]=x2;out [2] = x2;

out[3]=x3;out [3] = x3;

out[4]=x4;out [4] = x4;

out[5]=x5;out [5] = x5;

out[6]=x6;out [6] = x6;

out[7]=x7.out [7] = x7.

}}

Фиг.11 является блок-схемой, изображающей иллюстративное масштабированное преобразование 280, используемое модулем 214 прямого преобразования. На фиг.11, векторы X0, X1, X2, X3, X4, X5, X6 и X7 представляют выходные коэффициенты, и векторы x0, x1, x2, x3, x4, x5, x6 и x7 представляют входные значения. Значение, связанное с линией после кружка с символом "+" внутри, является результатом добавления значений, связанных со стрелками, которые указывают в этот кружок. Значение, связанное с линией после кружка с символом "x" внутри, является результатом умножения коэффициента, помещенного рядом с кружком, на значения, связанные с линиями, которые проходят через кружки. Символ "-" рядом со стрелкой представляет взятие со знаком минус значения, связанного со стрелкой. Например, если значение "10" связано со стрелкой перед символом "-", то со стрелкой после символа "-" связано значение "-10". Кроме того, следует отметить, что описанные выше способы уменьшения ошибки округления, использующие коэффициенты, взятые со знаком минус, и вычитание могут использоваться в алгоритме 190.11 is a block diagram depicting an illustrative scaled transform 280 used by forward transform module 214. 11, vectors X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 represent output coefficients, and vectors x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 and x 7 represent the input values. The value associated with the line after the circle with the “+” symbol inside is the result of adding values associated with the arrows that point to this circle. The value associated with the line after the circle with the "x" inside is the result of multiplying the coefficient placed next to the circle by the values associated with the lines that go through the circles. The “-” symbol next to the arrow represents a take with the minus sign of the value associated with the arrow. For example, if the value "10" is associated with the arrow before the "-" symbol, then the value "-10" is associated with the arrow after the "-" symbol. In addition, it should be noted that the methods for reducing rounding errors described above using coefficients taken with a minus sign and subtraction can be used in algorithm 190.

В преобразовании 280, выходные значения X0 по X7 умножаются на множители 1, φ, φ, ψ, 2 ψ ,

Figure 00000031
2 ψ
Figure 00000032
и ψ, соответственно. Отметим, что эти множители являются обратными величинами значений, выделяемых как сомножители из α', β', γ', δ', ε' и ζ' в преобразовании 270.In transform 280, the output values of X 0 by X 7 are multiplied by factors 1, φ, φ, ψ, 2 ψ ,
Figure 00000031
2 ψ
Figure 00000032
and ψ, respectively. Note that these factors are the reciprocal of the values allocated as factors from α ', β', γ ', δ', ε 'and ζ' in transformation 270.

Способы, описанные в этом документе, могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в устройстве логической ИС или отдельно как дискретные, но взаимодействующие логические устройства. Если способы реализованы в программных средствах, то они могут быть реализованы, по меньшей мере, частично машиночитаемым носителем информации, содержащим команды, которые при исполнении выполняют один или несколько способов, описанных выше. Машиночитаемый носитель информации может являться частью компьютерного программного продукта, который может включать в себя компоновочные материалы. Машиночитаемый носитель информации может содержать оперативное запоминающее устройство (RAM), например, синхронную динамическую память (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитный или оптический носитель информации и т.п. Упомянутые способы, дополнительно или в качестве альтернативы, могут быть реализованы, по меньшей мере, частично машиночитаемой коммуникационной средой, которая несет или передает код в виде команд или структур данных, и к которым можно получать доступ, читать их и/или исполнять посредством компьютера.The methods described herein may be implemented in hardware, software, firmware, or any combination thereof. Any features described as modules or components can be implemented together in a logical IC device or separately as discrete but interacting logic devices. If the methods are implemented in software, they can be implemented at least in part by a computer-readable storage medium containing instructions that, when executed, execute one or more of the methods described above. A computer-readable storage medium may be part of a computer program product, which may include layout materials. A computer-readable storage medium may comprise random access memory (RAM), for example, synchronous dynamic memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic or optical information carrier, etc. The methods mentioned, additionally or alternatively, can be implemented at least partially by a computer-readable communication medium that carries or transmits code in the form of instructions or data structures, and which can be accessed, read and / or executed by a computer.

Код может исполняться одним или несколькими процессорами, например, одним или несколькими цифровыми сигнальными процессорами (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными схемами или дискретными логическими схемами. Соответственно, термин "процессор", используемый в данном документе, может относиться к любой из вышеизложенных структур или любой другой структуре, подходящей для реализации способов, описанных в данном документе. Кроме того, в некоторых аспектах, функциональные возможности, описанные в данном документе, могут быть обеспечены в специализированных программных модулях или аппаратных модулях, сконфигурированных для кодирования и декодирования, или встроенных в комбинированный видео кодер-декодер (CODEC).The code can be executed by one or more processors, for example, one or more digital signal processors (DSPs), universal microprocessors, specialized integrated circuits (ASICs), user-programmable logic arrays (FPGAs), or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term “processor” as used herein may refer to any of the above structures or any other structure suitable for implementing the methods described herein. Furthermore, in some aspects, the functionality described herein may be provided in specialized software modules or hardware modules configured for encoding and decoding, or integrated in a combined video codec (CODEC).

Были описаны различные варианты осуществления изобретения. Эти и другие варианты осуществления входят в объем следующей формулы изобретения.Various embodiments of the invention have been described. These and other embodiments are within the scope of the following claims.

Claims (27)

1. Способ сжатия и отображения изображения, причем способ выполняется на компьютере и содержит этапы, на которых:
масштабируют каждый коэффициент в матрице закодированных коэффициентов размером 8×8 одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов,
причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528,
используют повторные применения масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов,
сдвигают вправо преобразованные коэффициенты в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов,
причем каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного обратного дискретного косинусного преобразования ("IDCT") к матрице закодированных коэффициентов,
отображают блок пикселей размером 8×8, причем каждый пиксель в блоке пикселей размером 8×8 включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов,
при этом этап масштабирования коэффициентов в матрице коэффициентов содержит этапы, на которых:
масштабируют коэффициент в позиции [0,0] матрицы закодированных коэффициентов множителем A,
масштабируют коэффициент в позиции [0,1] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [0,2] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [0,3] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [0,4] матрицы закодированных коэффициентов множителем A,
масштабируют коэффициент в позиции [0,5] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [0,6] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [0,7] матрицы закодированных коэффициентов множителем В,
масштабируют коэффициент в позиции [1,0] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [1,1] матрицы закодированных коэффициентов множителем E,
масштабируют коэффициент в позиции [1,2] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [1,3] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [1,4] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [1,5] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [1,6] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [1,7] матрицы закодированных коэффициентов множителем E,
масштабируют коэффициент в позиции [2,0] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [2,1] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [2,2] матрицы закодированных коэффициентов множителем H,
масштабируют коэффициент в позиции [2,3] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [2,4] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [2,5] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [2,6] матрицы закодированных коэффициентов множителем H,
масштабируют коэффициент в позиции [2,7] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [3,0] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [3,1] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [3,2] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [3,3] матрицы закодированных коэффициентов множителем J,
масштабируют коэффициент в позиции [3,4] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [3,5] матрицы закодированных коэффициентов множителем J,
масштабируют коэффициент в позиции [3,6] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [3,7] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [4,0] матрицы закодированных коэффициентов множителем A,
масштабируют коэффициент в позиции [4,1] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [4,2] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [4,3] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [4,4] матрицы закодированных коэффициентов множителем A,
масштабируют коэффициент в позиции [4,5] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [4,6] матрицы закодированных коэффициентов множителем С,
масштабируют коэффициент в позиции [4,7] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [5,0] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [5,1] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [5,2] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [5,3] матрицы закодированных коэффициентов множителем J,
масштабируют коэффициент в позиции [5,4] матрицы закодированных коэффициентов множителем D,
масштабируют коэффициент в позиции [5,5] матрицы закодированных коэффициентов множителем J,
масштабируют коэффициент в позиции [5,6] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [5,7] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [6,0] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [6,1] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [6,2] матрицы закодированных коэффициентов множителем H,
масштабируют коэффициент в позиции [6,3] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [6,4] матрицы закодированных коэффициентов множителем C,
масштабируют коэффициент в позиции [6,5] матрицы закодированных коэффициентов множителем I,
масштабируют коэффициент в позиции [6,6] матрицы закодированных коэффициентов множителем H,
масштабируют коэффициент в позиции [6,7] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [7,0] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [7,1] матрицы закодированных коэффициентов множителем E,
масштабируют коэффициент в позиции [7,2] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [7,3] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [7,4] матрицы закодированных коэффициентов множителем B,
масштабируют коэффициент в позиции [7,5] матрицы закодированных коэффициентов множителем G,
масштабируют коэффициент в позиции [7,6] матрицы закодированных коэффициентов множителем F,
масштабируют коэффициент в позиции [7,7] матрицы закодированных коэффициентов множителем E,
при этом этап применения преобразования или к вектор-строке или к вектор-столбцу содержит этапы, на которых:
вычисляют значение x0' суммированием x0 и x4,
вычисляют значение x4' суммированием x0 и -x4,
вычисляют значение (x2* α) умножением x2 на значение α,
вычисляют значение (x6* β) умножением x6 на значение β,
вычисляют значение (x2* β) умножением x2 на значение β,
вычисляют значение (x6* α) умножением x6 на значение α,
вычисляют значение x2' суммированием (x2* α) и -(x6* β),
вычисляют значение x6' суммированием (x6* α) и (x2* β),
вычисляют значение x0'' суммированием x0' и x6',
вычисляют значение x4'' суммированием x4' и x2',
вычисляют значение x2'' суммированием x4' и -x2',
вычисляют значение x6'' суммированием x0' и -x6',
вычисляют значение x7' суммированием x1 и -x7,
вычисляют значение x1' суммированием x1 и x7,
вычисляют значение x7'' суммированием x7' и x5',
вычисляют значение x3'' суммированием x1' и -x3',
вычисляют значение x5'' суммированием x7' и -x5',
вычисляют значение x1'' суммированием x3' и x1',
вычисляют значение (x7''* ε) умножением x7'' на значение ε,
вычисляют значение (x7''* ζ) умножением x7'' на значение ζ,
вычисляют значение (x3''* γ) умножением x3'' на значение γ,
вычисляют значение (x3''* δ) умножением x3'' на значение δ,
вычисляют значение (x5''* δ) умножением x5'' на значение δ,
вычисляют значение (x5''* γ) умножением x5'' на значение γ,
вычисляют значение (x1''* ζ) умножением x1'' на значение ζ,
вычисляют значение (x1''* ε) умножением x1'' на значение ε,
вычисляют значение x7''' суммированием (x7''* ε) и -(x1''* ζ),
вычисляют значение x3''' суммированием (x3''* γ) и -(x5''* δ),
вычисляют значение x5''' суммированием (x5''* γ) и (x3''* δ),
вычисляют значение x1''' суммированием (x1''* ε) и (x7''* ζ),
вычисляют значение Х0 суммированием x7''' и x0'',
вычисляют значение X1 суммированием x4'' и x5''',
вычисляют значение X2 суммированием x2'' и x3''',
вычисляют значение X3 суммированием x6'' и x7''',
вычисляют значение X4 суммированием x6'' и -x1''',
вычисляют значение X5 суммированием x2'' и -x3''',
вычисляют значение X6 суммированием x4'' и -x5''', и
вычисляют значение X7 суммированием x0'' и -x1''',
причем x0, x1, x2, x3, x4, x5, x6, x7 являются коэффициентами в вектор-строке или вектор-столбце,
причем X1, X2, X3, X4, X5, X6 и X7 являются выходными значениями преобразования, и
причем α=41/128, β=99/128, γ=113/128, δ=719/4096, ε=1533/2048 и ζ=1/2.
1. A method of compressing and displaying an image, the method being performed on a computer and comprising the steps of:
scale each coefficient in the matrix of encoded coefficients of size 8 × 8 with one of the factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form a matrix of scaled coefficients,
moreover, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528,
using repeated applications of the scaled one-dimensional fixed-point transform to convert the matrix of scaled coefficients to the matrix of converted coefficients,
shifted to the right the transformed coefficients in the matrix of transformed coefficients to form a matrix of adjusted coefficients,
each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional inverse discrete cosine transform ("IDCT") to the matrix of encoded coefficients,
displaying a block of pixels of size 8 × 8, with each pixel in a block of pixels of size 8 × 8 including the value of the pixel component based on the adjusted coefficient in the matrix of adjusted coefficients,
wherein the step of scaling the coefficients in the matrix of coefficients contains the steps in which:
scale the coefficient at the position [0,0] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [0,1] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [0,2] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [0.3] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [0.4] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [0.5] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [0.6] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [0.7] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,0] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,1] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [1,2] of the matrix of encoded coefficients with the factor F,
scale the coefficient at the position [1,3] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [1,4] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,5] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [1,6] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [1,7] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [2,0] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [2,1] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [2,2] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [2,3] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [2,4] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [2,5] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [2,6] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [2,7] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [3,0] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [3,1] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [3,2] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [3,3] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [3,4] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [3,5] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [3,6] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [3,7] of the matrix of encoded coefficients by the factor G,
scale the coefficient at position [4.0] of the matrix of encoded coefficients by factor A,
scale the coefficient at the position [4,1] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [4,2] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [4,3] of the matrix of encoded coefficients by the factor D,
scale the coefficient in position [4,4] of the matrix of encoded coefficients by factor A,
scale the coefficient at the position [4,5] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [4,6] of the matrix of encoded coefficients by the factor C,
scale the coefficient at position [4.7] of the matrix of encoded coefficients by factor B,
scale the coefficient at the position [5.0] of the matrix of encoded coefficients by the factor D,
scale the coefficient at position [5.1] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [5,2] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [5,3] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [5,4] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [5.5] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [5,6] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [5,7] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [6.0] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [6,1] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [6,2] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [6.3] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [6,4] of the matrix of encoded coefficients by the factor C,
scale the coefficient in position [6.5] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [6,6] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [6,7] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [7.0] of the matrix of encoded coefficients by the factor B,
scale the coefficient at position [7.1] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [7,2] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [7.3] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [7,4] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [7.5] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [7.6] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [7,7] of the matrix of encoded coefficients by the factor E,
wherein the step of applying the transform to either a row vector or a column vector contains the steps in which:
calculate the value x 0 'by summing x 0 and x 4 ,
calculate the value x 4 'by adding x 0 and -x 4 ,
calculate the value (x 2 * α) by multiplying x 2 by the value of α,
calculate the value (x 6 * β) by multiplying x 6 by the value of β,
calculate the value (x 2 * β) by multiplying x 2 by the value of β,
calculate the value (x 6 * α) by multiplying x 6 by the value of α,
calculate the value of x 2 'by summing (x 2 * α) and - (x 6 * β),
calculate the value of x 6 'by summing (x 6 * α) and (x 2 * β),
calculate the value x 0 ″ by adding x 0 ′ and x 6 ′,
calculate the value x 4 ″ by summing x 4 ’and x 2 ’,
calculate the value of x 2 ″ by summing x 4 ’and -x 2 ’,
compute the value x 6 ″ by adding x 0 ′ and −x 6 ′,
calculate the value of x 7 'by summing x 1 and -x 7 ,
calculate the value of x 1 'by summing x 1 and x 7 ,
calculate the value of x 7 ″ by summing x 7 ’and x 5 ’,
compute the value x 3 ″ by summing x 1 ’and -x 3 ’,
calculate the value x 5 '' by summing x 7 'and -x 5 ',
calculate the value of x 1 '' by summing x 3 'and x 1 ',
calculating a value (x 7 '' * ε) by multiplying x 7 '' and the value ε,
calculating a value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ,
calculate the value (x 3 '' * γ) by multiplying x 3 '' by the value of γ,
calculate the value (x 3 '' * δ) by multiplying x 3 '' by the value of δ,
calculating a value (x 5 '' * δ) by multiplying x 5 '' and the value δ,
calculate the value (x 5 '' * γ) by multiplying x 5 '' by the value of γ,
calculating a value (x 1 '' * ζ) by multiplying x 1 'to the value ζ,
calculating a value (x 1 '' * ε) by multiplying x 1 'to the value ε,
calculate the value of x 7 '''by summing (x 7 ''* ε) and - (x 1 ''* ζ),
calculate the value x 3 '''by summing (x 3 ''* γ) and - (x 5 ''* δ),
calculate the value of x 5 '''by summing (x 5 ''* γ) and (x 3 ''* δ),
calculate the value of x 1 '''by summing (x 1 ''* ε) and (x 7 ''* ζ),
calculate the value of X 0 by summing x 7 '''and x 0 '',
calculate the value of X 1 by summing x 4 '' and x 5 '''
calculate the value of X 2 by summing x 2 '' and x 3 '''
calculate the value of X 3 by summing x 6 '' and x 7 ''',
calculating a summation value X 4 x 6 '' and -x 1 '''
calculating a summation value X 5 x 2 '' and -x 3 '''
calculating a summation value X 6 x 4 '' and -x 5 ''', and
X 7 is calculated by summing the value x 0 '' and -x 1 '''
and x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 are coefficients in a row vector or column vector,
wherein X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 are output transform values, and
moreover, α = 41/128, β = 99/128, γ = 113/128, δ = 719/4096, ε = 1533/2048 and ζ = 1/2.
2. Способ по п.1, в котором использование повторных применений масштабированного одномерного преобразования с фиксированной запятой заключается в том, что применяют упомянутое преобразование к коэффициентам в одном из векторов-строк или в одном из векторов-столбцов без использования операций умножения или деления.2. The method according to claim 1, in which the use of repeated applications of the scaled one-dimensional fixed-point transform is that the said transform is applied to coefficients in one of the row vectors or in one of the column vectors without using the operations of multiplication or division. 3. Способ по п.2, в котором вычисление значения (x1* ε) посредством умножения x1 на значение ε и вычисление значения (x1* ζ) посредством умножения x1 на значение ζ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1, причем y1=(x1>>9)-x1,
- вычисляют значение (x1* ζ) сдвигом вправо x3 на одну позицию, и
- вычисляют значение (x1* ε) вычитанием y1 из (y1>>2); и
при этом вычисление значения (x7*ε) посредством умножения x7 на значение ε и вычисление значения (x7* ζ) посредством умножения x7 на значение ζ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1', причем y1'=(x7>>9)-x7,
- вычисляют значение (x7* ζ) сдвигом вправо x7 на одну позицию, и
- вычисляют значение (x7* ε) вычитанием y1' из (y1'>>2), и
при этом вычисление значения (x1'' *ε) посредством умножения x1'' на значение ε и вычисление значения (x1''* ζ) посредством умножения x1'' на значение ζ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1'', причем y1''=(x1''>>9)-x1'',
- вычисляют значение (x1''* ζ) сдвигом вправо x1'' на одну позицию, и
- вычисляют значение (x1''* ε) вычитанием y1'' из (y1''>>2), и
при этом вычисление значения (x7''* ε) посредством умножения x7'' на значение ε и вычисление значения (x7''* ζ) посредством умножения x7'' на значение ζ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1''', причем y1'''=(x7''>>9)-x7'',
- вычисляют значение (х7''* ζ) сдвигом вправо x7'' на одну позицию, и
- вычисляют значение (x7''* ε) вычитанием y1''' из (y1'''>>2).
3. The method according to claim 2, in which the calculation of the value (x 1 * ε) by multiplying x 1 by the value of ε and calculating the value (x 1 * ζ) by multiplying x 1 by the value of ζ consists in the following sequence of arithmetic operations:
- calculate the value of y 1 , and y 1 = (x 1 >> 9) -x 1 ,
- calculate the value (x 1 * ζ) by shifting to the right x 3 one position, and
- calculate the value (x 1 * ε) by subtracting y 1 from (y 1 >>2); and
the calculation of the value (x 7 * ε) by multiplying x 7 by the value of ε and the calculation of the value (x 7 * ζ) by multiplying x 7 by the value of ζ consists in the following sequence of arithmetic operations:
- calculate the value of y 1 ', and y 1 ' = (x 7 >> 9) -x 7 ,
- calculate the value (x 7 * ζ) by shifting to the right x 7 one position, and
- calculate the value (x 7 * ε) by subtracting y 1 'from (y 1 '>> 2), and
wherein calculating the value (x 1 '' * ε) by multiplying x 1 '' and a value ε, and calculating the value (x 1 '' * ζ) by multiplying x 1 'to the value of ζ is that perform the following sequence of arithmetic operations:
- calculate the value of y 1 '', and y 1 '' = (x 1 ''>> 9) -x 1 '',
- calculating a value (x 1 '' * ζ) right shift x 1 '' on the one position, and
- calculate the value (x 1 '' * ε) by subtracting y 1 '' from (y 1 ''>> 2), and
wherein calculating the value (x 7 '' * ε) by multiplying x 7 '' and a value ε, and calculating the value (x 7 '' * ζ) by multiplying x 7 '' and the value of ζ is that perform the following sequence of arithmetic operations:
- calculate the value of y 1 ''', with y 1 ''' = (x 7 ''>> 9) -x 7 '',
- calculating a value (x 7 '' * ζ) shift right x 7 '' on the one position, and
- calculating a value (x 7 '' * ε) by subtracting y 1 '''of (y 1' ''>> 2).
4. Способ по п.2, в котором вычисление значения (x3* γ) посредством умножения x3 на значение γ и вычисление значения (x3* δ) посредством умножения x3 на значение δ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y2, причем y2=(x3>>3)-(x3>>7),
- вычисляют значение y3, причем y3=y2-(x3>>11),
- вычисляют значение (x3* δ)=y2+(y3>>1), и
- вычисляют значение (x3* γ) вычитанием y2 из x3, и
при этом вычисление значения (x5* δ) посредством умножения x5 на значение δ и вычисление значения (x5* γ) посредством умножения x5 на значение γ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y2', причем y2'=(x5>>3)-(x5>>7),
- вычисляют значение y3', причем y3'=y2'-(x5>>11),
- вычисляют значение (x5* δ) суммированием y2' и (y3'>>1), и
- вычисляют значение (x5* γ) вычитанием y2' из x5, и
при этом вычисление значения (x3''* γ) посредством умножения x3'' на значение γ и вычисление значения (x3''* δ) посредством умножения x3'' на значение δ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y2'', причем y2''=(x3''>>3)-(x3''>>7),
- вычисляют значение y3", причем y3''=y2''-(x3''>>11),
- вычисляют значение (x3''* δ)=y2''+(γ3''>>1), и
- вычисляют значение (x3''* γ) вычитанием y2'' из x3'', и
при этом вычисление значения (x5''* δ) посредством умножения x5'' на значение δ и вычисление значения (x5''* γ) посредством умножения x5'' на значение γ заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y2''', причем y2'''=(x5''>>3)-(x5''>>7),
- вычисляют значение y3''', причем y3'''=y2'''-(x5''>>11),
- вычисляют значение (x5''* δ) суммированием y2''' и (y3'''>>1), и
- вычисляют значение (x5''* γ) вычитанием y2''' из x5''.
4. The method according to claim 2, in which the calculation of the value (x 3 * γ) by multiplying x 3 by the value of γ and the calculation of the value (x 3 * δ) by multiplying x 3 by the value of δ consists in the following sequence of arithmetic operations:
- calculate the value of y 2 , and y 2 = (x 3 >> 3) - (x 3 >> 7),
- calculate the value of y 3 , and y 3 = y 2 - (x 3 >> 11),
- calculate the value (x 3 * δ) = y 2 + (y 3 >> 1), and
- calculate the value (x 3 * γ) by subtracting y 2 from x 3 , and
the calculation of the value (x 5 * δ) by multiplying x 5 by the value of δ and the calculation of the value (x 5 * γ) by multiplying x 5 by the value of γ consists in the following sequence of arithmetic operations:
- calculate the value of y 2 ', and y 2 ' = (x 5 >> 3) - (x 5 >> 7),
- calculate the value of y 3 ', and y 3 ' = y 2 '- (x 5 >> 11),
- calculate the value (x 5 * δ) by summing y 2 'and (y 3 '>> 1), and
- calculate the value (x 5 * γ) by subtracting y 2 'from x 5 , and
the calculation of the value (x 3 '' * γ) by multiplying x 3 '' by the value of γ and the calculation of the value (x 3 '' * δ) by multiplying x 3 '' by the value of δ consists in the following sequence of arithmetic operations:
- calculate the value of y 2 '', and y 2 '' = (x 3 ''>> 3) - (x 3 ''>> 7),
- calculate the value of y 3 ", and y 3 '' = y 2 '' - (x 3 ''>> 11),
- calculating a value (x 3 '' * δ) = y 2 '' + (γ 3 ''>> 1), and
- calculating a value (x 3 '' * γ) by subtracting y 2 '' of x 3 '', and
wherein calculating the value (x 5 '' * δ) by multiplying x 5 '' and the value of δ and the calculation of the value (x 5 '' * γ) by multiplying x 5 '' and the value of γ is that perform the following sequence of arithmetic operations:
- calculate the value of y 2 ''', and y 2 ''' = (x 5 ''>> 3) - (x 5 ''>> 7),
- calculate the value of y 3 ''', and y 3 ''' = y 2 '''- (x 5 ''>> 11),
- calculating a value (x 5 '' * δ) summing y 2 '''and (y 3' ''>> 1), and
- calculating a value (x 5 '' * γ) by subtracting y 2 '''of x 5' '.
5. Способ по п.2, в котором вычисление значения (x2* α) посредством умножения x2 на значение α и вычисление значения (x2* β) посредством умножения x2 на значение β заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1, причем y1=x2+(x2>>5),
- вычисляют значение y2, причем y2=y1>>2,
- вычисляют значение (x2* α) суммированием y2 и (x2>>4), и
- вычисляют значение (x2* β) вычитанием y2 из y1, и
при этом вычисление значения (x6* α) посредством умножения x6 на значение α и вычисление значения (x6* β) посредством умножения x6 на значение β заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1', причем y1'=x2+(x6>>5),
- вычисляют значение y2', причем y2'=y1'>>2,
- вычисляют значение (x6* α) суммированием y2' и (x6>>4), и
- вычисляют значение (x6* β) вычитанием y2' из y1', и
при этом вычисление значения (x2''* α) посредством умножения x2'' на значение α и вычисление значения (x2''* β) посредством умножения x2'' на значение β заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1'', причем y1''=x2''+(x2''>>5),
- вычисляют значение y2'', причем y2''=y1''>>2,
- вычисляют значение (x2''* α) суммированием y2'' и (x2''>>4), и
- вычисляют значение (x2''* β) вычитанием y2'' из y1'', и
при этом вычисление значения (x6''* α) посредством умножения x6'' на значение α и вычисление значения (x6''* β) посредством умножения x6'' на значение β заключается в том, что выполняют следующую последовательность арифметических операций:
- вычисляют значение y1''', причем y1'''=x2+(x6''>>5),
- вычисляют значение y2''', причем y2'''=y1'''>>2,
- вычисляют значение (x6''* α) суммированием y2''' и (x6''>>4), и
- вычисляют значение (x6''* β) вычитанием y2''' из y1'''.
5. The method according to claim 2, in which the calculation of the value (x 2 * α) by multiplying x 2 by the value α and calculating the value (x 2 * β) by multiplying x 2 by the value β consists in the following sequence of arithmetic operations:
- calculate the value of y 1 , and y 1 = x 2 + (x 2 >> 5),
- calculate the value of y 2 , and y 2 = y 1 >> 2,
- calculate the value (x 2 * α) by summing y 2 and (x 2 >> 4), and
- calculate the value (x 2 * β) by subtracting y 2 from y 1 , and
the calculation of the value (x 6 * α) by multiplying x 6 by the value of α and the calculation of the value (x 6 * β) by multiplying x 6 by the value of β consists in the following sequence of arithmetic operations:
- calculate the value of y 1 ', and y 1 ' = x 2 + (x 6 >> 5),
- calculate the value of y 2 ', and y 2 ' = y 1 '>> 2,
- calculate the value (x 6 * α) by summing y 2 'and (x 6 >> 4), and
- calculate the value (x 6 * β) by subtracting y 2 'from y 1 ', and
wherein calculating the value (x 2 '' * α) by multiplying x 2 '' and the value α, and calculating the value (x 2 '' * β) by multiplying x 2 '' to a value β lies in that perform the following sequence of arithmetic operations:
- calculate the value of y 1 '', and y 1 '' = x 2 '' + (x 2 ''>> 5),
- calculate the value of y 2 '', and y 2 '' = y 1 ''>> 2,
- calculating a value (x 2 '' * α) summing y 2 '' and (x 2 ''>> 4), and
- calculating a value (x 2 '' * β) by subtracting y 2 '' of the y 1 '', and
wherein calculating the value (x 6 '' * α) by multiplying x 6 '' to the value α, and calculating the value (x 6 '' * β) by multiplying x 6 '' to a value β lies in that perform the following sequence of arithmetic operations:
- calculate the value of y 1 ''', and y 1 ''' = x 2 + (x 6 ''>> 5),
- calculate the value of y 2 ''', and y 2 ''' = y 1 '''>> 2,
- calculating a value (x 6 '' * α) summing y 2 '''and (x 6' '>> 4), and
- calculating a value (x 6 '' * β) by subtracting y 2 '''of the y 1' ''.
6. Способ по п.5, в котором значения x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7''', x1''', x3''', x5''', x7''', (x2*α), (x6*β), (x2*β), (x6*α), (x7''*ε), (x7''*ζ), (x3''*γ), (x3''*δ), (x5''*δ), (x5''*γ), (x1''*ζ) и (x1''*ε) представлены с использованием чисел с фиксированной запятой, которые включают в себя Р битов в частях мантиссы чисел с фиксированной запятой.6. The method according to claim 5, in which the values of x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 0 ', x 1 ', x 2 ', x 3 ' , x 4 ', x 5 ', x 6 ', x 7 ', x 0 '', x 1 '', x 2 '', x 3 '', x 4 '', x 5 '', x 6 '', x 7 ''', x 1 ''', x 3 ''', x 5 ''', x 7 ''', (x 2 * α), (x 6 * β), (x 2 * β), (x 6 * α), (x 7 '' * ε), (x 7 '' * ζ), (x 3 '' * γ), (x 3 '' * δ), (x 5 ''* δ), (x 5 ''* γ), (x 1 ''* ζ) and (x 1 ''* ε) are represented using fixed-point numbers, which include P bits in the mantissa parts of numbers with fixed point. 7. Устройство для сжатия и вывода изображения, содержащее:
процессор, запрограммированный для управления,
модуль масштабирования, который масштабирует каждый коэффициент в матрице закодированных коэффициентов размером 8×8 одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов,
причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528,
модуль обратного преобразования, который использует повторные применения масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов,
модуль сдвига вправо, который сдвигает вправо преобразованные коэффициенты в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов, причем каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного обратного дискретного косинусного преобразования ("IDCT") к матрице закодированных коэффициентов, модуль вывода, который выводит блок пикселей размером 8×8, причем каждый пиксель в блоке пикселей размером 8×8 включает в себя значение компонента пикселя на основании скорректированного коэффициента в матрице скорректированных коэффициентов,
при этом модуль обратного преобразования применяет преобразование к вектор-строке или вектор-столбцу посредством:
вычисления значения x0' суммированием x0 и x4,
вычисления значения x4' суммированием x0 и -x4,
вычисления значения (x2* α) умножением x2 на значение α,
вычисления значения (x6* β) умножением x6 на значение β,
вычисления значения (x2* β) умножением x2 на значение β,
вычисления значения (x6* α) умножением x6 на значение α,
вычисления значения x2' суммированием (x2* α) и -(x6* β),
вычисления значения x6' суммированием (x6* α) и (x2* β),
вычисления значения x0'' суммированием x0' и x6',
вычисления значения x4'' суммированием x4' и x2',
вычисления значения x2'' суммированием x4' и -x2',
вычисления значения x6'' суммированием x0' и -x6',
вычисления значения x7' суммированием x1 и -x7,
вычисления значения x1' суммированием x1 и x7,
вычисления значения x7'' суммированием x7' и x5',
вычисления значения x3'' суммированием x1' и -x3',
вычисления значения x5'' суммированием x7' и -x5',
вычисления значения x1'' суммированием x3' и x1',
вычисления значения (x7''* ε) умножением x7'' на значение ε,
вычисления значения (x7''* ζ) умножением x7'' на значение ζ,
вычисления значения (x3''* γ) умножением x3'' на значение γ,
вычисления значения (x3''* δ) умножением x3'' на значение δ,
вычисления значения (x5''* δ) умножением x5'' на значение δ,
вычисления значения (x5''* γ) умножением x5'' на значение γ,
вычисления значения (x1''* ζ) умножением x1'' на значение ζ,
вычисления значения (x1''* ε) умножением x1'' на значение ε,
вычисления значения x7''' суммированием (x7''* ε) и -(x1''* ζ),
вычисления значения x3''' суммированием (x3''* γ) и -(x5''* δ),
вычисления значения x5''' суммированием (x5''* γ) и (x3''* δ),
вычисления значения x1''' суммированием (x1''* ε) и (x7''* ζ),
вычисления значения Х0 суммированием x7''' и x0'',
вычисления значения X1 суммированием x4'' и x5''',
вычисления значения X2 суммированием x2'' и x3''',
вычисления значения X3 суммированием x6'' и x7''',
вычисления значения X4 суммированием x6'' и -x1''',
вычисления значения X5 суммированием x2'' и -x3''',
вычисления значения X6 суммированием x4'' и -x5''', и
вычисления значения X7 суммированием x0'' и -x1''',
причем x0, x1, x2, x3, x4, x5, x6, x7 являются коэффициентами в вектор-строке или вектор-столбце,
причем X1, X2, X3, X4, X5, X6 и X7 являются выходными значениями преобразования, и
причем α=41/128, β=99/128, γ=113/128, δ=719/4096, ε=1533/2048 и ζ=1/2.
7. A device for compressing and outputting images, containing:
processor programmed to control
a scaling module that scales each coefficient in the 8 × 8 encoded coefficient matrix with one of the factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form a scaled matrix coefficients
moreover, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528,
an inverse transform module that uses repeated applications of a scaled one-dimensional fixed-point transform to convert a matrix of scaled coefficients to a matrix of converted coefficients,
a right shift module that shifts the converted coefficients in the matrix of converted coefficients to the right to form a matrix of adjusted coefficients, each adjusted coefficient in the matrix of adjusted coefficients approximating the corresponding value in the matrix of values that can be generated using an ideal two-dimensional inverse discrete cosine transform ("IDCT") to a matrix of encoded coefficients, an output module that outputs a block of pixels of size 8 × 8, wherein each pixel in an 8 × 8 pixel block of pixels includes a pixel component value based on the adjusted coefficient in the matrix of adjusted coefficients,
wherein the inverse transform module applies the transform to the row vector or column vector by:
calculating the value x 0 'by summing x 0 and x 4 ,
calculating the value x 4 'by adding x 0 and -x 4 ,
computing the value of (x 2 * α) by multiplying x 2 by the value of α,
calculating the value (x 6 * β) by multiplying x 6 by the value β,
calculating the value (x 2 * β) by multiplying x 2 by the value β,
computing the value of (x 6 * α) by multiplying x 6 by the value of α,
calculating the value of x 2 'by summing (x 2 * α) and - (x 6 * β),
calculating the value of x 6 'by summing (x 6 * α) and (x 2 * β),
calculating the value x 0 '' by summing x 0 'and x 6 ',
calculating the value of x 4 '' by summing x 4 'and x 2 ',
calculating the value of x 2 '' by summing x 4 'and -x 2 ',
calculating the value of x 6 '' by summing x 0 'and -x 6 ',
calculating the value of x 7 'by adding x 1 and -x 7 ,
calculating the value of x 1 'by summing x 1 and x 7 ,
calculating the value of x 7 '' by summing x 7 'and x 5 ',
calculating the value of x 3 '' by summing x 1 'and -x 3 ',
calculating the value of x 5 '' by summing x 7 'and -x 5 ',
calculating the value of x 1 '' by summing x 3 'and x 1 ',
calculating the value (x 7 '' * ε) by multiplying x 7 '' and the value ε,
calculating the value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ,
calculating the value (x 3 '' * γ) by multiplying x 3 '' by the value of γ,
calculating the value (x 3 '' * δ) by multiplying x 3 '' by the value of δ,
calculating the value (x 5 '' * δ) by multiplying x 5 '' by the value of δ,
calculating the value (x 5 '' * γ) by multiplying x 5 '' by the value of γ,
calculating the value (x 1 '' * ζ) by multiplying x 1 'to the value ζ,
calculating the value of (x 1 '' * ε) by multiplying x 1 '' by the value of ε,
calculating the value of x 7 '''by summing (x 7 ''* ε) and - (x 1 ''* ζ),
calculating the value of x 3 '''by summing (x 3 ''* γ) and - (x 5 ''* δ),
calculating the value of x 5 '''by summing (x 5 ''* γ) and (x 3 ''* δ),
calculating the value of x 1 '''by summing (x 1 ''* ε) and (x 7 ''* ζ),
calculating the summation values X 0 x 7 '''and x 0' ',
value calculating summing X 1 x 4 '' and x 5 '''
calculating the value X 2 summation x 2 '' and x 3 '''
calculating the value X 3 summation x 6 '' and 7 x '''
value calculating summing X 4 x 6 '' and -x 1 '''
calculating the value X by summing 5 x 2 '' and -x 3 '''
calculating the value X summing 6 x 4 '' and -x 5 ''', and
calculating the value X 7 summation x 0 '' and -x 1 '''
and x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 are coefficients in a row vector or column vector,
wherein X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 are output transform values, and
moreover, α = 41/128, β = 99/128, γ = 113/128, δ = 719/4096, ε = 1533/2048 and ζ = 1/2.
8. Устройство по п.7, в котором модуль обратного преобразования применяет преобразование к матрице коэффициентов без использования операций умножения и деления.8. The device according to claim 7, in which the inverse transformation module applies the transformation to the matrix of coefficients without using the operations of multiplication and division. 9. Устройство по п.8, в котором модуль обратного преобразования вычисляет значение (x1* ε) умножением x1 на значение ε и значение (x1* ζ) умножением x1 на значение ζ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1, причем y1=(x1>>9)-x1,
вычисление значения (x1* ζ) сдвигом x3 вправо на одну позицию, и
вычисление значения (x1* ε) вычитанием y1 из (y1>>2), и
причем модуль обратного преобразования вычисляет значение (x7* ε) умножением x7 на значение ε и значение (X7* ζ) умножением x7 на значение ζ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1', причем y1'=(x7>>9)-x7,
вычисление значения (x7* ζ) сдвигом x7 вправо на одну позицию, и
вычисление значения (x7* ε) вычитанием y1' из (y1'>>2), и
причем модуль обратного преобразования вычисляет значение (x1''* ε) умножением x1'' на значение ε и значение (x1''* ζ) умножением x1'' на значение ζ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1'', причем y1''=(x1''>>9)-x1'',
вычисление значения (x1''* ζ) сдвигом x1'' вправо на одну позицию, и
вычисление значения (x1''* ε) вычитанием y1'' из (y1''>>2), и
причем модуль обратного преобразования вычисляет значение (x7''* ε) умножением x7'' на значение ε и значение (x7''* ζ) умножением x7'' на значение ζ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1''', причем y1'''=(x7''>>9)-x7'',
вычисление значения (x7''* ζ) сдвигом x7'' вправо на одну позицию, и
вычисление значения (x7''* ε) вычитанием y1''' из (y1'''>>2).
9. The device according to claim 8, in which the inverse transformation module calculates the value (x 1 * ε) by multiplying x 1 by the value ε and the value (x 1 * ζ) by multiplying x 1 by the value ζ by performing the following sequence of arithmetic operations:
calculating the value of y 1 , and y 1 = (x 1 >> 9) -x 1 ,
calculating the value (x 1 * ζ) by shifting x 3 to the right by one position, and
calculating the value (x 1 * ε) by subtracting y 1 from (y 1 >> 2), and
and the inverse transform module calculates the value (x 7 * ε) by multiplying x 7 by the value of ε and the value (X 7 * ζ) by multiplying x 7 by the value of ζ by performing the following sequence of arithmetic operations:
calculating the value of y 1 ', and y 1 ' = (x 7 >> 9) -x 7 ,
calculating the value (x 7 * ζ) by shifting x 7 to the right by one position, and
calculating the value (x 7 * ε) by subtracting y 1 'from (y 1 '>> 2), and
wherein the inverse transform module calculates the value (x 1 '' * ε) by multiplying x 1 'to the value of ε and a value (x 1' '* ζ) by multiplying x 1' 'and ζ value by performing the following sequence of arithmetic operations:
calculating values y 1 ', y 1 where''= (x 1' '>> 9) -x 1' ',
calculating the value (x 1 '' * ζ) shift x 1 '' to the right by one position, and
calculating the value (x 1 '' * ε) by subtracting y 1 '' of (y 1 '>> 2), and
wherein the inverse transform module calculates the value (x 7 '' * ε) by multiplying x 7 '' and the value ε and a value (x 7 '' * ζ) by multiplying x 7 '' and ζ value by performing the following sequence of arithmetic operations:
calculating values y 1 ''', wherein y 1' '' = (x 7 ''>> 9) -x 7 '',
calculating the value (x 7 '' * ζ) shift x 7 '' to the right by one position, and
calculating the value (x 7 '' * ε) by subtracting y 1 '''of (y 1' ''>> 2).
10. Устройство по п.8, в котором модуль обратного преобразования вычисляет значение (x3* γ) умножением x3 на значение γ и значение (x3* δ) умножением x3 на значение δ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y2, причем y2=(x3>>3)-(x3>>7),
вычисление значения y3, причем y3=y2-(x3>>11),
вычисление значения (x3* δ)=y2+*(y3>>1), и
вычисление значения (x3* γ) вычитанием y2 из x3, и
причем модуль обратного преобразования вычисляет значение (x5* δ) умножением x5 на значение δ и значение (x5* γ) умножением x5 на значение γ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y2', причем y2'=(x5>>3)-(x5>>7),
вычисление значения y3', причем y3'=y2'-(x5>>11),
вычисление значения (x5* δ) суммированием y2' и (y3'>>1), и
вычисление значения (x5* γ) вычитанием y2' из x5, и
причем модуль обратного преобразования вычисляет значение (x3''* γ) умножением x3'' на значение γ и значение (x3''* δ) умножением x3'' на значение δ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y2'', причем y2''=(x3''>>3)-(x3''>>7),
вычисление значения y3'', причем y3''=y2''-(x3''>>11),
вычисление значения (x3''*δ)=y2''+(y3''>>1), и
вычисление значения (x3''* γ) вычитанием y2'' из x3'', и
причем модуль обратного преобразования вычисляет значение (x5''* δ) умножением x5'' на значение δ и значение (x5''* γ) умножением x5'' на значение γ посредством выполнения следующей последовательности арифметических операций:
вычисление значения y2''', причем y2'''=(x5''>>3)-(x5''>>7),
вычисление значения y3''', причем y3'''=y2'-(x5''>>11),
вычисление значения (x5''* δ) суммированием y2''' и (y3'''>>1), и
вычисление значения (x5''* γ) вычитанием y2''' из x5''.
10. The device according to claim 8, in which the inverse transformation module calculates the value (x 3 * γ) by multiplying x 3 by the value of γ and the value (x 3 * δ) by multiplying x 3 by the value of δ by performing the following sequence of arithmetic operations:
calculating the value of y 2 , and y 2 = (x 3 >> 3) - (x 3 >> 7),
calculating the value of y 3 , and y 3 = y 2 - (x 3 >> 11),
calculating the value (x 3 * δ) = y 2 + * (y 3 >> 1), and
calculating the value (x 3 * γ) by subtracting y 2 from x 3 , and
wherein the inverse transform module calculates the value (x 5 * δ) by multiplying x 5 by the value of δ and the value (x 5 * γ) by multiplying x 5 by the value of γ by performing the following sequence of arithmetic operations:
calculating the value of y 2 ', and y 2 ' = (x 5 >> 3) - (x 5 >> 7),
calculating the value of y 3 ', and y 3 ' = y 2 '- (x 5 >> 11),
calculating the value of (x 5 * δ) by summing y 2 'and (y 3 '>> 1), and
calculating the value (x 5 * γ) by subtracting y 2 'from x 5 , and
wherein the inverse transform module calculates the value (x 3 '' * γ) by multiplying x 3 '' by the value γ and the value (x 3 '' * δ) by multiplying x 3 '' by the value δ by performing the following sequence of arithmetic operations:
computing a value y 2 '', and y 2 '' = (x 3 ''>> 3) - (x 3 ''>> 7)
calculating the value of y 3 '', with y 3 '' = y 2 '' - (x 3 ''>> 11),
calculating the value (x 3 '' * δ) = y 2 '' + (y 3 ''>> 1), and
calculating the value (x 3 '' * γ) by subtracting y 2 '' of x 3 '', and
wherein the inverse transform module calculates the value (x 5 '' * δ) by multiplying x 5 '' and the value of δ and the value of (x 5 '' * γ) by multiplying x 5 '' and the value of γ by performing the following sequence of arithmetic operations:
calculating the value of y 2 ''', with y 2 ''' = (x 5 ''>> 3) - (x 5 ''>> 7),
calculating the value of y 3 ''', with y 3 ''' = y 2 '- (x 5 ''>> 11)
calculating the value (x 5 '' * δ) summing y 2 '''and (y 3' ''>> 1), and
calculating the value (x 5 '' * γ) by subtracting y 2 '''of x 5' '.
11. Устройство по п.8, в котором модуль обратного преобразования вычисляет значение (x2* α) умножением x2 на значение α и значение (x2* β) умножением x2 на значение β посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1, причем y1=x2+(x2>>5),
вычисление значения y2, причем y2=y1>>2,
вычисление значения (x2* α) суммированием y2 и (x2>>4), и
вычисление значения (x2* β) вычитанием y2 из y1, и
причем модуль обратного преобразования вычисляет значение (x6* α) умножением x6 на значение α и значение (x6* β) умножением x6 на значение β посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1', причем y1'=x6+(x6>>5),
вычисление значения y2', причем y2'=y1'>>2,
вычисление значения (x6* α) суммированием y2' и (x6>>4), и
вычисление значения (x6* β) вычитанием y2' из y1', и
причем модуль обратного преобразования вычисляет значение (x2''* α) умножением x2'' на значение α и значение (x2''* β) умножением x2'' на значение β посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1'', причем y1=x2''+(x2''>>5),
вычисление значения y2'', причем y2''=y1''>>2,
вычисление значения (x2''* α) суммированием y2'' и (x2''>>4), и
вычисление значения (x2''* β) вычитанием γ2'' из y1'', и
причем модуль обратного преобразования вычисляет значение (x6''* α) умножением x6'' на значение α и значение (x6''* β) умножением x6'' на значение β посредством выполнения следующей последовательности арифметических операций:
вычисление значения y1''', причем y1'''=x2+(x6''>>5),
вычисление значения y2''', причем y2'''=y1'''>>2,
вычисление значения (x6''* α) суммированием y2''' и (x6''>>4), и
вычисление значения (x6''* β) вычитанием y2''' из y1'''.
11. The device according to claim 8, in which the inverse transformation module calculates the value (x 2 * α) by multiplying x 2 by the value α and the value (x 2 * β) by multiplying x 2 by the value β by performing the following sequence of arithmetic operations:
calculating the value of y 1 , and y 1 = x 2 + (x 2 >> 5),
calculating the value of y 2 , and y 2 = y 1 >> 2,
calculating the value of (x 2 * α) by summing y 2 and (x 2 >> 4), and
calculating the value (x 2 * β) by subtracting y 2 from y 1 , and
wherein the inverse transform module calculates the value (x 6 * α) by multiplying x 6 by the value α and the value (x 6 * β) by multiplying x 6 by the value β by performing the following sequence of arithmetic operations:
calculating the value of y 1 ', and y 1 ' = x 6 + (x 6 >> 5),
calculating the value of y 2 ', and y 2 ' = y 1 '>> 2,
calculating the value of (x 6 * α) by summing y 2 'and (x 6 >> 4), and
calculating the value (x 6 * β) by subtracting y 2 'from y 1 ', and
wherein the inverse transform module calculates the value (x 2 '' * α) multiplying x 2 '' and the value of α and the value of (x 2 '' * β) by multiplying x 2 '' to a value β by performing the following sequence of arithmetic operations:
calculating the value of y 1 '', and y 1 = x 2 '' + (x 2 ''>> 5),
computing a value y 2 '', and y 2 '' = y 1 '>> 2
calculating the value (x 2 '' * α) summing y 2 '' and (x 2 ''>> 4), and
calculating the value (x 2 '' * β) by subtracting γ 2 'from the y 1' ', and
wherein the inverse transform module calculates the value (x 6 '' * α) multiplying x 6 '' on the value of α and the value of (x 6 '' * β) by multiplying x 6 '' to a value β by performing the following sequence of arithmetic operations:
calculating the value of y 1 ''', and y 1 ''' = x 2 + (x 6 ''>> 5),
calculating the value of y 2 ''', with y 2 ''' = y 1 '''>> 2,
calculating the value (x 6 '' * α) summing y 2 '''and (x 6' '>> 4), and
calculating the value (x 6 '' * β) by subtracting y 2 '''of the y 1' ''.
12. Устройство по п.7, в котором значения x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x1''', x3''', x5''', x7''', (x2* α), (x6* β), (x2* β), (x6* α), (x7''* ε), (x7''* ζ), (x3''* γ), (x3''* δ), (x5''* δ), (x5''* γ), (x1''* ζ) и (x1''* ε) представлены с помощью чисел с фиксированной точкой, которые включают в себя Р битов в частях мантиссы чисел с фиксированной точкой.12. The device according to claim 7, in which the values of x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 0 ', x 1 ', x 2 ', x 3 ' , x 4 ', x 5 ', x 6 ', x 7 ', x 0 '', x 1 '', x 2 '', x 3 '', x 4 '', x 5 '', x 6 '', x 7' ', x 1' '', x 3 ''', x 5' '', x 7 ''', (x 2 * α), (x 6 * β), (x 2 * β ), (x 6 * α), (x 7 '' * ε), (x 7 '' * ζ), (x 3 '' * γ), (x 3 '' * δ), (x 5 '' * δ), (x 5 '' * γ), (x 1 '' * ζ) and (x 1 '' * ε) are represented using fixed-point numbers that include P bits in the parts of the mantissa numbers with fixed point. 13. Устройство по п.12, в котором Р равно 10.13. The device according to item 12, in which P is equal to 10. 14. Устройство для сжатия и вывода изображения, содержащее:
средство для масштабирования коэффициентов в матрице закодированных коэффициентов размером 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя Н, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528,
средство для использования повторных применений масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов,
средство для сдвига вправо преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов,
причем каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного, обратного дискретного косинусного преобразования ("IDCT") к матрице закодированных коэффициентов, и средство для вывода блока пикселей размером 8×8, причем каждый пиксель в блоке пикселей размером 8×8 включает в себя значение компонента пикселя на основании скорректированного коэффициента в матрице скорректированных коэффициентов,
при этом средство для масштабирования коэффициентов содержит:
средство для масштабирования коэффициента в позиции [0,0] матрицы закодированных коэффициентов множителем A,
средство для масштабирования коэффициента в позиции [0,1] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [0,2] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [0,3] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [0,4] матрицы закодированных коэффициентов множителем A,
средство для масштабирования коэффициента в позиции [0,5] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [0,6] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [0,7] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [1,0] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [1,1] матрицы закодированных коэффициентов множителем E,
средство для масштабирования коэффициента в позиции [1,2] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [1,3] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [1,4] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [1,5] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [1,6] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [1,7] матрицы закодированных коэффициентов множителем E,
средство для масштабирования коэффициента в позиции [2,0] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [2,1] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [2,2] матрицы закодированных коэффициентов множителем H,
средство для масштабирования коэффициента в позиции [2,3] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [2,4] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [2,5] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [2,6] матрицы закодированных коэффициентов множителем H,
средство для масштабирования коэффициента в позиции [2,7] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [3,0] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [3,1] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [3,2] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [3,3] матрицы закодированных коэффициентов множителем J,
средство для масштабирования коэффициента в позиции [3,4] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [3,5] матрицы закодированных коэффициентов множителем J,
средство для масштабирования коэффициента в позиции [3,6] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [3,7] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [4,0] матрицы закодированных коэффициентов множителем A,
средство для масштабирования коэффициента в позиции [4,1] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [4,2] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [4,3] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [4,4] матрицы закодированных коэффициентов множителем A,
средство для масштабирования коэффициента в позиции [4,5] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [4,6] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [4,7] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [5,0] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [5,1] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [5,2] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [5,3] матрицы закодированных коэффициентов множителем J,
средство для масштабирования коэффициента в позиции [5,4] матрицы закодированных коэффициентов множителем D,
средство для масштабирования коэффициента в позиции [5,5] матрицы закодированных коэффициентов множителем J,
средство для масштабирования коэффициента в позиции [5,6] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [5,7] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [6,0] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [6,1] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [6,2] матрицы закодированных коэффициентов множителем H,
средство для масштабирования коэффициента в позиции [6,3] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [6,4] матрицы закодированных коэффициентов множителем C,
средство для масштабирования коэффициента в позиции [6,5] матрицы закодированных коэффициентов множителем I,
средство для масштабирования коэффициента в позиции [6,6] матрицы закодированных коэффициентов множителем H,
средство для масштабирования коэффициента в позиции [6,7] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [7,0] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [7,1] матрицы закодированных коэффициентов множителем E,
средство для масштабирования коэффициента в позиции [7,2] матрицы закодированных коэффициентов множителем F,
средство для масштабирования коэффициента в позиции [7,3] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [7,4] матрицы закодированных коэффициентов множителем B,
средство для масштабирования коэффициента в позиции [7,5] матрицы закодированных коэффициентов множителем G,
средство для масштабирования коэффициента в позиции [7,6] матрицы закодированных коэффициентов множителем F, и
средство для масштабирования коэффициента в позиции [7,7] матрицы закодированных коэффициентов множителем E,
при этом средство для применения преобразования содержит:
средство для вычисления значения x0' суммированием x0 и x4,
средство для вычисления значения x4' суммированием x0 и -x4,
средство для вычисления значения (x2* α) умножением x2 на значение α,
средство для вычисления значения (x6* β) умножением x6 на значение β,
средство для вычисления значения (x2* β) умножением x2 на значение β,
средство для вычисления значения (x6* α) умножением x6 на значение α,
средство для вычисления значения x2' суммированием (x2* α) и -(x6* β),
средство для вычисления значения x6' суммированием (x6* α) и (x2* β),
средство для вычисления значения x0'' суммированием x0' и x6',
средство для вычисления значения x4'' суммированием x4' и x2',
средство для вычисления значения x2'' суммированием x4' и -x2',
средство для вычисления значения x6'' суммированием x0' и -x6',
средство для вычисления значения x7' суммированием x1 и -x7,
средство для вычисления значения x1' суммированием x1 и x7,
средство для вычисления значения x7'' суммированием x7' и x5',
средство для вычисления значения x3'' суммированием x1' и -x3',
средство для вычисления значения x5'' суммированием x7' и -x5',
средство для вычисления значения x1'' суммированием x3' и x1',
средство для вычисления значения (x7''* ε) умножением x7'' на значение ε,
средство для вычисления значения (x7''* ζ) умножением x7'' на значение ζ,
средство для вычисления значения (x3''* γ) умножением x3'' на значение γ,
средство для вычисления значения (x3''* δ) умножением x3'' на значение δ,
средство для вычисления значения (x5''* δ) умножением x5'' на значение δ,
средство для вычисления значения (x5''* γ) умножением x5'' на значение γ,
средство для вычисления значения (x1''* ζ) умножением x1'' на значение ζ,
средство для вычисления значения (x1''* ε) умножением x1'' на значение ε,
средство для вычисления значения x7''' суммированием (x7''*ε) и -(x1''*ζ),
средство для вычисления значения x3''' суммированием (x3''*γ) и -(x5''* δ),
средство для вычисления значения x5''' суммированием (x5''* γ) и (x3''* δ),
средство для вычисления значения x1''' суммированием (x1''* ε) и (x7''* ζ),
средство для вычисления значения X0 суммированием x7''' и x0'',
средство для вычисления значения X1 суммированием x4'' и x5''',
средство для вычисления значения X2 суммированием x2'' и x3''',
средство для вычисления значения X3 суммированием x6'' и x7''',
средство для вычисления значения X4 суммированием x6'' и -x1''',
средство для вычисления значения X5 суммированием x2'' и -x3''',
средство для вычисления значения X6 суммированием x4'' и -x5''', и
средство для вычисления значения X7 суммированием x0'' и -x1''',
причем x0, x1, x2, x3, x4, x5, x6, x7 являются коэффициентами в вектор-строке или вектор-столбце,
причем X1, X2, X3, X4, X5, X6 и X7 являются выходными значениями преобразования, и
причем α=41/128, β=99/128, γ=113/128, δ=719/4096, ε=1533/2048 и ζ=1/2.
14. A device for compressing and outputting images, containing:
means for scaling the coefficients in an 8 × 8 encoded coefficient matrix, one of the factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form a matrix of scaled coefficients, moreover, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528,
means for using repeated applications of the scaled one-dimensional fixed-point transform to transform the matrix of scaled coefficients into a matrix of converted coefficients,
means for shifting the transformed coefficients to the right in the matrix of transformed coefficients to form a matrix of adjusted coefficients,
each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated using an ideal two-dimensional, inverse discrete cosine transform ("IDCT") to the matrix of encoded coefficients, and means for outputting a block of pixels of size 8 × 8, each a pixel in an 8 × 8 pixel block includes the value of the pixel component based on the adjusted coefficient in the matrix of adjusted coefficients Comrade,
wherein the means for scaling the coefficients contains:
means for scaling the coefficient at the position [0,0] of the matrix of encoded coefficients by the factor A,
means for scaling the coefficient at the position [0,1] of the matrix of encoded coefficients by the factor B,
means for scaling the coefficient at the position [0,2] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [0,3] of the matrix of encoded coefficients by the factor D,
means for scaling the coefficient at position [0.4] of the matrix of encoded coefficients by factor A,
means for scaling the coefficient at the position [0.5] of the matrix of encoded coefficients by a factor D,
means for scaling the coefficient at the position [0.6] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at position [0.7] of the matrix of encoded coefficients by a factor B,
means for scaling the coefficient at the position [1,0] of the matrix of encoded coefficients by the factor B,
means for scaling the coefficient at the position [1,1] of the matrix of encoded coefficients by the factor E,
means for scaling the coefficient at the position [1,2] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at the position [1,3] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at the position [1,4] of the matrix of encoded coefficients by the factor B,
means for scaling the coefficient at the position [1,5] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at the position [1,6] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at the position [1,7] of the matrix of encoded coefficients by the factor E,
means for scaling the coefficient at the position [2,0] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [2,1] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at the position [2,2] of the matrix of encoded coefficients by the factor H,
means for scaling the coefficient at the position [2,3] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [2,4] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [2,5] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [2,6] of the matrix of encoded coefficients by the factor H,
means for scaling the coefficient at position [2,7] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at the position [3,0] of the matrix of encoded coefficients by the factor D,
means for scaling the coefficient at the position [3,1] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at the position [3,2] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [3,3] of the matrix of encoded coefficients by the factor J,
means for scaling the coefficient at the position [3,4] of the matrix of encoded coefficients by the factor D,
means for scaling the coefficient at the position [3,5] of the matrix of encoded coefficients by the factor J,
means for scaling the coefficient at the position [3,6] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [3,7] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at position [4.0] of the matrix of encoded coefficients by factor A,
means for scaling the coefficient at the position [4,1] of the matrix of encoded coefficients by the factor B,
means for scaling the coefficient at position [4,2] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [4,3] of the matrix of encoded coefficients by the factor D,
means for scaling the coefficient at the position [4,4] of the matrix of encoded coefficients by the factor A,
means for scaling the coefficient at position [4,5] of the matrix of encoded coefficients by a factor D,
means for scaling the coefficient at position [4,6] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at position [4.7] of the matrix of encoded coefficients by factor B,
means for scaling the coefficient at position [5.0] of the matrix of encoded coefficients by a factor D,
means for scaling the coefficient at position [5.1] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at position [5,2] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [5,3] of the matrix of encoded coefficients by the factor J,
means for scaling the coefficient at position [5,4] of the matrix of encoded coefficients by a factor D,
means for scaling the coefficient at position [5.5] of the matrix of encoded coefficients by a factor J,
means for scaling the coefficient at the position [5,6] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [5,7] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at position [6.0] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [6,1] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at the position [6,2] of the matrix of encoded coefficients by the factor H,
means for scaling the coefficient at the position [6.3] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [6,4] of the matrix of encoded coefficients by the factor C,
means for scaling the coefficient at the position [6.5] of the matrix of encoded coefficients by the factor I,
means for scaling the coefficient at the position [6,6] of the matrix of encoded coefficients by the factor H,
means for scaling the coefficient at the position [6,7] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at position [7.0] of the matrix of encoded coefficients by a factor B,
means for scaling the coefficient at position [7.1] of the matrix of encoded coefficients by the factor E,
means for scaling the coefficient at the position [7,2] of the matrix of encoded coefficients by the factor F,
means for scaling the coefficient at position [7.3] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at position [7.4] of the matrix of encoded coefficients by a factor B,
means for scaling the coefficient at position [7.5] of the matrix of encoded coefficients by the factor G,
means for scaling the coefficient at position [7.6] of the matrix of encoded coefficients by a factor F, and
means for scaling the coefficient at the position [7,7] of the matrix of encoded coefficients by the factor E,
wherein the means for applying the conversion comprises:
means for calculating the value x 0 'by summing x 0 and x 4 ,
means for calculating the value x 4 'by summing x 0 and -x 4 ,
means for calculating the value (x 2 * α) by multiplying x 2 by the value α,
means for calculating the value (x 6 * β) by multiplying x 6 by the value β,
means for calculating the value (x 2 * β) by multiplying x 2 by the value β,
means for calculating the value (x 6 * α) by multiplying x 6 by the value of α,
means for calculating the value x 2 'by summing (x 2 * α) and - (x 6 * β),
means for calculating the value of x 6 'by summing (x 6 * α) and (x 2 * β),
means for calculating the value x 0 ″ by adding x 0 ′ and x 6 ′,
means for calculating the value x 4 "by summing x 4 'and x 2 ',
means for calculating the value x 2 ″ by adding x 4 ′ and -x 2 ′,
means for calculating the value x 6 ″ by adding x 0 ′ and −x 6 ′,
means for calculating the value x 7 'by summing x 1 and -x 7 ,
means for calculating the value of x 1 'by summing x 1 and x 7 ,
means for calculating the value of x 7 "by summing x 7 'and x 5 ',
means for calculating the value x 3 "by summing x 1 'and -x 3 ',
means for calculating the value of x 5 '' by summing x 7 'and -x 5 ',
means for calculating the value of x 1 '' by summing x 3 'and x 1 ',
means for calculating a value (x 7 '' * ε) by multiplying x 7 '' and the value ε,
means for calculating a value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ,
means for calculating a value (x 3 '' * γ) by multiplying x 3 '' and the value of γ,
means for calculating a value (x 3 '' * δ) by multiplying x 3 '' and the value δ,
means for calculating a value (x 5 '' * δ) by multiplying x 5 '' and the value δ,
means for calculating a value (x 5 '' * γ) by multiplying x 5 '' and the value of γ,
means for calculating a value (x 1 '' * ζ) by multiplying x 1 'to the value ζ,
means for calculating a value (x 1 '' * ε) by multiplying x 1 'to the value ε,
means for calculating the value x 7 ″ ″ by summing (x 7 ″ * ε) and - (x 1 ″ * ζ),
means for calculating the value x 3 '''by summing (x 3 ''* γ) and - (x 5 ''* δ),
means for calculating the value of x 5 '''by summing (x 5 ''* γ) and (x 3 ''* δ),
means for calculating the value of x 1 ″ ″ by summing (x 1 ″ * ε) and (x 7 ″ * ζ),
means for calculating a summation value X 0 x 7 '''and x 0' ',
means for calculating a summation of values X 1 x 4 '' and x 5 '''
means for calculating a summation of values X 2 x 2 '' and x 3 '''
means for calculating a summation value X 3 x 6 '' and 7 x '''
means for calculating a summation value X 4 x 6 '' and -x 1 '''
means for calculating a summation value X 5 x 2 '' and -x 3 '''
means for calculating a summation value X 6 x 4 '' and -x 5 ''', and
means for calculating a summation of values of X 7 0 x 'and -x 1' ''
and x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 are coefficients in a row vector or column vector,
wherein X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 are output transform values, and
moreover, α = 41/128, β = 99/128, γ = 113/128, δ = 719/4096, ε = 1533/2048 and ζ = 1/2.
15. Устройство по п.14, в котором средство для использования повторных применений преобразования применяет преобразование к матрице коэффициентов без использования операций умножения или деления.15. The device according to 14, in which the means for using repeated applications of the transformation applies the transformation to the matrix of coefficients without using the operations of multiplication or division. 16. Устройство по п.15, в котором средство для вычисления значения (x1* ε) умножением x1 на значение ε и средство для вычисления значения (x1* ζ) умножением x1 на значение ζ содержат:
средство для вычисления значения y1, причем y1=(x1>>9)-x1,
средство для вычисления значения (x1* ζ) сдвигом x3 вправо на одну позицию, и
средство для вычисления значения (x1* ε) вычитанием y1 из (y1>>2), и
причем средство для вычисления значения (x7* ε) умножением x7 на значение ε и средство для вычисления значения (x7* ζ) умножением x7 на значение ζ содержат:
средство для вычисления значения y1', причем y1'=(x7>>9)-x7,
средство для вычисления значения (x7* ζ) сдвигом x7 вправо на одну позицию, и
средство для вычисления значения (x7* ε) вычитанием y1' из (y1'>>2), и
причем средство для вычисления значения (x1''* ε) умножением x1'' на значение ε и средство для вычисления значения (x1''* ζ) умножением x1'' на значение ζ содержат:
средство для вычисления значения y1'', причем y1''=(x1''>>9)-x1'',
средство для вычисления значения (x1''* ζ) сдвигом x1'' вправо на одну позицию, и
средство для вычисления значения (x1''* ε) вычитанием y1'' из (y1''>>2), и причем средство для вычисления значения (x7''* ε) умножением x7'' на значение ε и средство для вычисления значения (x7''* ζ) умножением x7'' на значение ζ содержат:
средство для вычисления значения y1''', причем y1'''=(x7''>>9)-x7''',
средство для вычисления значения (x7''* ζ) сдвигом x7'' вправо на одну позицию, и
средство для вычисления значения (x7''* ε) вычитанием y1''' из (y1'''>>2).
16. The device according to clause 15, in which means for calculating the value (x 1 * ε) by multiplying x 1 by the value ε and means for calculating the value (x 1 * ζ) by multiplying x 1 by the value ζ contain:
means for calculating the value of y 1 , and y 1 = (x 1 >> 9) -x 1 ,
means for calculating the value (x 1 * ζ) by shifting x 3 to the right by one position, and
means for calculating the value (x 1 * ε) by subtracting y 1 from (y 1 >> 2), and
moreover, means for calculating the value (x 7 * ε) by multiplying x 7 by the value ε and means for calculating the value (x 7 * ζ) by multiplying x 7 by the value ζ contain:
means for calculating the value of y 1 ', and y 1 ' = (x 7 >> 9) -x 7 ,
means for calculating the value (x 7 * ζ) by shifting x 7 to the right by one position, and
means for calculating the value (x 7 * ε) by subtracting y 1 'from (y 1 '>> 2), and
wherein the means for calculating a value (x 1 '' * ε) by multiplying x 1 '' and a value ε, and means for calculating the value (x 1 '' * ζ) by multiplying x 1 'to the value ζ comprise:
means for calculating the value of y 1 '', and y 1 '' = (x 1 ''>> 9) -x 1 '',
means for calculating a value (x 1 '' * ζ) shift x 1 '' to the right by one position, and
means for calculating a value (x 1 '' * ε) by subtracting y 1 '' of (y 1 '>> 2), and wherein the means for calculating a value (x 7' '* ε) by multiplying x 7' 'and the value ε and means for calculating the value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ comprise:
means for calculating a value y 1 ''', wherein y 1' '' = (x 7 ''>> 9) -x 7 ''',
means for calculating a value (x 7 '' * ζ) shift x 7 '' to the right by one position, and
means for calculating a value (x 7 '' * ε) by subtracting y 1 '''of (y 1' ''>> 2).
17. Устройство по п.15, в котором средство для вычисления значения (x3* γ) умножением x3 на значение γ и средство для вычисления значения (x3* δ) умножением x3 на значение δ содержат:
средство для вычисления значения y2, причем y2=(x3>>3)-(x3>>7),
средство для вычисления значения y3, причем y3=y2-(x3>>11),
средство для вычисления значения (x3* δ)=y2+(y3>>1), и
средство для вычисления значения (x3* γ) вычитанием y2 из x1, и
причем средство для вычисления значения (x5* δ) умножением x5 на значение δ и средство для вычисления значения (x5* γ) умножением x5 на значение γ содержат:
средство для вычисления значения y2', причем y2'=(x5>>3)-(x5>>7),
средство для вычисления значения y3', причем y3'=y2'-(x5>>11),
средство для вычисления значения (x5* δ) суммированием y2' и (y3'>>1), и
средство для вычисления значения (x5* γ) вычитанием y2' из x7, и
причем средство для вычисления значения (x3''* γ) умножением x3'' на значение γ и средство для вычисления значения (x3''* δ) умножением x3'' на значение δ содержат:
средство для вычисления значения y2'', причем y2''=(x1''>>3)-(x1''>>7),
средство для вычисления значения y3'', причем y3''=y2''-(x1''>>11),
средство для вычисления значения (x1''* δ)=y2''+(y3''>>1), и
средство для вычисления значения (x1''* γ) вычитанием y2'' из x1'', и
причем средство для вычисления значения (x5''* δ) умножением x5'' на значение δ и средство для вычисления значения (x5''* γ) умножением x5'' на значение γ содержат:
средство для вычисления значения y2''', причем y2'''=(x5''>>3)-(x5''>>7),
средство для вычисления значения y3''', причем y3'''=y2'''-(x5''>>11),
средство для вычисления значения (x5''* δ) суммированием y2''' и (y3'''>>1), и
средство для вычисления значения (x5''* γ) вычитанием y2''' из x5''.
17. The device according to clause 15, in which the means for calculating the value (x 3 * γ) by multiplying x 3 by the value of γ and the means for calculating the value (x 3 * δ) by multiplying x 3 by the value of δ contain:
means for calculating the value of y 2 , and y 2 = (x 3 >> 3) - (x3 >> 7),
means for calculating the value of y 3 , and y 3 = y 2 - (x 3 >> 11),
means for calculating the value (x 3 * δ) = y 2 + (y 3 >> 1), and
means for calculating the value (x 3 * γ) by subtracting y 2 from x 1 , and
moreover, means for calculating the value (x 5 * δ) by multiplying x 5 by the value of δ and means for calculating the value (x 5 * γ) by multiplying x 5 by the value of γ contain:
means for calculating the value of y 2 ', and y 2 ' = (x 5 >> 3) - (x 5 >> 7),
means for calculating the value of y 3 ', and y 3 ' = y 2 '- (x 5 >> 11),
means for calculating the value of (x 5 * δ) by summing y 2 'and (y 3 '>> 1), and
means for calculating the value (x 5 * γ) by subtracting y 2 'from x 7 , and
wherein the means for calculating a value (x 3 '' * γ) by multiplying x 3 '' and the value of γ, and means for calculating the value (x 3 '' * δ) by multiplying x 3 '' and the value of δ comprise:
means for calculating the value of y 2 '', and y 2 '' = (x 1 ''>> 3) - (x 1 ''>> 7),
means for calculating the value of y 3 '', and y 3 '' = y 2 '' - (x 1 ''>> 11),
means for calculating a value (x 1 '' * δ) = y 2 '' + (y 3 ''>> 1), and
means for calculating a value (x 1 '' * γ) by subtracting y 2 '' of the x 1 '', and
wherein the means for calculating a value (x 5 '' * δ) by multiplying x 5 '' and the value of δ and means for calculating the value (x 5 '' * γ) by multiplying x 5 '' and the value of γ comprise:
means for calculating the value of y 2 ''', and y 2 ''' = (x 5 ''>> 3) - (x 5 ''>> 7),
means for calculating the value of y 3 ''', and y 3 ''' = y 2 '''- (x 5 ''>> 11),
means for calculating a value (x 5 '' * δ) summing y 2 '''and (y 3' ''>> 1), and
means for calculating a value (x 5 '' * γ) by subtracting y 2 '''of x 5' '.
18. Устройство по п.15, в котором средство для вычисления значения (x2* α) умножением x2 на значение α и средство для вычисления значения (x2* β) умножением x2 на значение β содержат:
средство для вычисления значения y1, причем y1'=x2+(x2>>5),
средство для вычисления значения y2, причем y2=y1>>2,
средство для вычисления значения (x2* α) суммированием y2 и (x2>>4), и
средство для вычисления значения (x2* β) вычитанием y2 из y1, и
причем средство для вычисления значения (x6* α) умножением x6 на значение α и средство для вычисления значения (x6* β) умножением x6 на значение β содержат:
средство для вычисления значения y1', причем y1'=x6+(x6>>5),
средство для вычисления значения y2', причем y2'=y1'>>2,
средство для вычисления значения (x2* α) суммированием y2' и (x6>>4), и
средство для вычисления значения (x2* β) вычитанием y2' из y1', и
причем средство для вычисления значения (x2''* α) умножением x2'' на значение α и средство для вычисления значения (x2''* β) умножением x2'' на значение β содержат:
средство для вычисления значения y1'', причем y1''=x2''+(x2''>>5),
средство для вычисления значения y2'', причем y2''=y1''>>2,
средство для вычисления значения (x2''* α) суммированием y2'' и (x2''>>4), и
средство для вычисления значения (x2''* β) вычитанием y2'' из y1'', и
причем средство для вычисления значения (x6''* α) умножением x6'' на значение α и средство для вычисления значения (x6''* β) умножением x6'' на значение β содержат:
средство для вычисления значения y1''', причем y1'''=x6''+(x6''>>5),
средство для вычисления значения y2''', причем y2'''=y1'''>>2,
средство для вычисления значения (x6''* α) суммированием y2''' и (x6''>>4), и
средство для вычисления значения (x6''* β) вычитанием y2''' из y1'''.
18. The device according to clause 15, in which means for calculating the value (x 2 * α) by multiplying x 2 by the value α and means for calculating the value (x 2 * β) by multiplying x 2 by the value β contain:
means for calculating the value of y 1 , and y 1 '= x 2 + (x 2 >> 5),
means for calculating the value of y 2 , and y 2 = y 1 >> 2,
means for calculating the value (x 2 * α) by summing y 2 and (x 2 >> 4), and
means for calculating the value (x 2 * β) by subtracting y 2 from y 1 , and
moreover, means for calculating the value (x 6 * α) by multiplying x 6 by the value α and means for calculating the value (x 6 * β) by multiplying x 6 by the value β contain:
means for calculating the value of y 1 ', and y 1 ' = x 6 + (x 6 >> 5),
means for calculating the value of y 2 ', and y 2 ' = y 1 '>> 2,
means for calculating the value (x 2 * α) by summing y 2 'and (x 6 >> 4), and
means for calculating the value (x 2 * β) by subtracting y 2 'from y 1 ', and
wherein the means for calculating a value (x 2 '' * α) multiplying x 2 '' and the value α and means for calculating the value (x 2 '' * β) by multiplying x 2 '' to a value β comprise:
means for calculating the value of y 1 '', and y 1 '' = x 2 '' + (x 2 ''>> 5),
means for calculating the value of y 2 '', and y 2 '' = y 1 ''>> 2,
means for calculating a value (x 2 '' * α) summing y 2 '' and (x 2 ''>> 4), and
means for calculating a value (x 2 '' * β) by subtracting y 2 '' of the y 1 '', and
wherein the means for calculating a value (x 6 '' * α) multiplying x 6 '' and the value α and means for calculating the value (x 6 '' * β) by multiplying x 6 '' to a value β comprise:
means for calculating the value of y 1 ''', and y 1 ''' = x 6 '' + (x 6 ''>> 5),
means for calculating the value of y 2 ''', and y 2 ''' = y 1 '''>> 2,
means for calculating a value (x 6 '' * α) summing y 2 '''and (x 6' '>> 4), and
means for calculating a value (x 6 '' * β) by subtracting y 2 '''of the y 1' ''.
19. Устройство по п.14, в котором значения x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'' x4'', x5'', x6'', x7'', x1''', x3''', x5''', x7''', (x2* α), (x6* β), (x2* β), (x6* α), (x7''* ε), (x7''* ζ), (x3''* γ), (x3''* δ), (x5''* δ), (x5''* γ), (x1''* ζ) и (x1''* ε) представлены с помощью чисел с фиксированной точкой, которые включают в себя Р битов в частях мантиссы чисел с фиксированной точкой.19. The device according to 14, in which the values of x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 0 ', x 1 ', x 2 ', x 3 ' , x 4 ', x 5 ', x 6 ', x 7 ', x 0 '', x 1 '', x 2 '', x 3 '' x 4 '', x 5 '', x 6 '' , x 7 '', x 1 ''', x 3' '', x 5 ''', x 7' '', (x 2 * α), (x 6 * β), (x 2 * β) , (x 6 * α), (x 7 '' * ε), (x 7 '' * ζ), (x 3 '' * γ), (x 3 '' * δ), (x 5 '' * δ), (x 5 '' * γ), (x 1 '' * ζ) and (x 1 '' * ε) are represented using fixed-point numbers that include P bits in the parts of the mantissa fixed-point numbers . 20. Устройство по п.19, в котором Р равно 10.20. The device according to claim 19, in which P is equal to 10. 21. Машиночитаемый носитель информации, содержащий команды, которые при исполнении побуждают программируемый процессор:
масштабировать каждый коэффициент в матрице закодированных коэффициентов размером 8×8 одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов,
причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528,
использовать повторные применения масштабированного одномерного преобразования с фиксированной точкой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов,
сдвигать вправо преобразованные коэффициенты в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов,
причем каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать посредством применения идеального двумерного обратного дискретного косинусного преобразования ("IDCT") к матрице закодированных коэффициентов, и
выводить сигналы, которые побуждают устройство отображения отображать блок пикселей размером 8×8, причем каждый пиксель в блоке пикселей размером 8×8 включает в себя значение компонента пикселя с учетом скорректированного коэффициента в матрице скорректированных коэффициентов,
при этом команды, которые побуждают программируемый процессор масштабировать коэффициенты в матрице коэффициентов, также побуждают программируемый процессор:
масштабировать коэффициент в позиции [0,0] матрицы закодированных коэффициентов множителем A,
масштабировать коэффициент в позиции [0,1] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [0,2] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [0,3] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [0,4] матрицы закодированных коэффициентов множителем A,
масштабировать коэффициент в позиции [0,5] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [0,6] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [0,7] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [1,0] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [1,1] матрицы закодированных коэффициентов множителем E,
масштабировать коэффициент в позиции [1,2] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [1,3] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [1,4] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [1,5] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [1,6] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [1,7] матрицы закодированных коэффициентов множителем E,
масштабировать коэффициент в позиции [2,0] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [2,1] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [2,2] матрицы закодированных коэффициентов множителем H,
масштабировать коэффициент в позиции [2,3] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [2,4] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [2,5] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [2,6] матрицы закодированных коэффициентов множителем H,
масштабировать коэффициент в позиции [2,7] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [3,0] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [3,1] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [3,2] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [3,3] матрицы закодированных коэффициентов множителем J,
масштабировать коэффициент в позиции [3,4] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [3,5] матрицы закодированных коэффициентов множителем J,
масштабировать коэффициент в позиции [3,6] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [3,7] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [4,0] матрицы закодированных коэффициентов множителем A,
масштабировать коэффициент в позиции [4,1] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [4,2] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [4,3] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [4,4] матрицы закодированных коэффициентов множителем A,
масштабировать коэффициент в позиции [4,5] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [4,6] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [4,7] матрицы закодированных коэффициентов множителем В,
масштабировать коэффициент в позиции [5,0] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [5,1] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [5,2] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [5,3] матрицы закодированных коэффициентов множителем J,
масштабировать коэффициент в позиции [5,4] матрицы закодированных коэффициентов множителем D,
масштабировать коэффициент в позиции [5,5] матрицы закодированных коэффициентов множителем J,
масштабировать коэффициент в позиции [5,6] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [5,7] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [6,0] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [6,1] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [6,2] матрицы закодированных коэффициентов множителем H,
масштабировать коэффициент в позиции [6,3] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [6,4] матрицы закодированных коэффициентов множителем C,
масштабировать коэффициент в позиции [6,5] матрицы закодированных коэффициентов множителем I,
масштабировать коэффициент в позиции [6,6] матрицы закодированных коэффициентов множителем H,
масштабировать коэффициент в позиции [6,7] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [7,0] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [7,1] матрицы закодированных коэффициентов множителем E,
масштабировать коэффициент в позиции [7,2] матрицы закодированных коэффициентов множителем F,
масштабировать коэффициент в позиции [7,3] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [7,4] матрицы закодированных коэффициентов множителем B,
масштабировать коэффициент в позиции [7,5] матрицы закодированных коэффициентов множителем G,
масштабировать коэффициент в позиции [7,6] матрицы закодированных коэффициентов множителем F, и
масштабировать коэффициент в позиции [7,7] матрицы закодированных коэффициентов множителем E,
при этом команды, которые побуждают программируемый процессор применять преобразование или к вектор-строке, или к вектор-столбцу, также побуждают программируемый процессор:
вычислять значение x0' суммированием x0 и x4,
вычислять значение x4' суммированием x0 и -x4,
вычислять значение (x2* α) умножением x2 на значение α,
вычислять значение (x6* β) умножением x6 на значение β,
вычислять значение (x2* β) умножением x2 на значение β,
вычислять значение (x6* α) умножением x6 на значение α,
вычислять значение x2' суммированием (x2* α) и -(x6* β),
вычислять значение x6' суммированием (x6* α) и (x2* β),
вычислять значение x0'' суммированием x0' и x6',
вычислять значение x4'' суммированием x4' и x2',
вычислять значение x2'' суммированием x4' и -x2',
вычислять значение x6'' суммированием x0' и -x6',
вычислять значение x7' суммированием x1 и -x7,
вычислять значение x1' суммированием x1 и x7,
вычислять значение x7'' суммированием x7' и x5',
вычислять значение x3'' суммированием x1' и -x3',
вычислять значение x5'' суммированием x7' и -x5',
вычислять значение x1'' суммированием x3' и x1',
вычислять значение (x7''* ε) умножением x7'' на значение ε,
вычислять значение (x7''* ζ) умножением x7'' на значение ζ,
вычислять значение (x3''* γ) умножением x3'' на значение γ,
вычислять значение (x3''* δ) умножением x3'' на значение δ,
вычислять значение (x5''* δ) умножением x5'' на значение δ,
вычислять значение (x5''* γ) умножением x5'' на значение γ,
вычислять значение (x1''* ζ) умножением x1'' на значение ζ,
вычислять значение (x1''* ε) умножением x1'' на значение ε,
вычислять значение x7''' суммированием (x7''* ε) и -(x1''* ζ),
вычислять значение x3''' суммированием (x3''* γ) и -(x5''* δ),
вычислять значение x5''' суммированием (x5''* γ) и (x3''* δ),
вычислять значение x1''' суммированием (x1''* ε) и (x7''* ζ),
вычислять значение X0 суммированием x7''' и x0'',
вычислять значение X1 суммированием x4'' и x5''',
вычислять значение X2 суммированием x2'' и x3''',
вычислять значение X3 суммированием x6'' и x7''',
вычислять значение X4 суммированием x6'' и -x1''',
вычислять значение X5 суммированием x2'' и -x3''',
вычислять значение X6 суммированием x4'' и -x5''', и
вычислять значение X7 суммированием x0'' и -x1''',
причем x0, x1, x2, x3, x4, x5, x6, x7 являются коэффициентами в вектор-строке или вектор-столбце,
причем X1, X2, X3, X4, X5, X6 и X7 являются выходными значениями преобразования, и
причем α=41/128, β=99/128, γ=113/128, δ=719/4096, ε=1533/2048 и ζ=1/2.
21. A computer-readable storage medium containing instructions that upon execution induce a programmable processor:
scale each coefficient in the 8 × 8 encoded coefficient matrix with one of the factor A, factor B, factor C, factor D, factor E, factor F, factor G, factor H, factor I, or factor J to form a matrix of scaled coefficients,
moreover, A = 1024, B = 1138, C = 1730, D = 1609, E = 1264, F = 1922, G = 1788, H = 2923, I = 2718 and J = 2528,
use repeated applications of the scaled one-dimensional fixed-point transform to convert the matrix of scaled coefficients to the matrix of converted coefficients,
shift the converted coefficients to the right in the matrix of converted coefficients to form a matrix of adjusted coefficients,
each adjusted coefficient in the matrix of adjusted coefficients approximates the corresponding value in the matrix of values that can be generated by applying the ideal two-dimensional inverse discrete cosine transform ("IDCT") to the matrix of encoded coefficients, and
output signals that cause the display device to display an 8 × 8 pixel block, each pixel in an 8 × 8 pixel block includes a pixel component value taking into account the adjusted coefficient in the matrix of adjusted coefficients,
the commands that cause the programmable processor to scale the coefficients in the coefficient matrix also induce the programmable processor:
scale the coefficient at the position [0,0] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [0,1] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [0,2] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [0,3] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [0.4] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [0.5] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [0.6] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [0.7] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,0] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,1] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [1,2] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [1,3] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [1,4] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [1,5] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [1,6] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [1,7] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [2,0] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [2,1] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [2,2] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [2,3] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [2,4] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [2,5] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [2,6] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [2,7] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [3,0] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [3,1] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [3,2] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [3,3] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [3,4] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [3,5] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [3,6] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [3,7] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [4.0] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [4,1] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [4,2] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [4,3] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [4,4] of the matrix of encoded coefficients by the factor A,
scale the coefficient at the position [4,5] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [4,6] of the matrix of encoded coefficients by the factor C,
scale the coefficient at position [4.7] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [5.0] of the matrix of encoded coefficients by the factor D,
scale the coefficient at position [5.1] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [5,2] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [5,3] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [5,4] of the matrix of encoded coefficients by the factor D,
scale the coefficient at the position [5.5] of the matrix of encoded coefficients by the factor J,
scale the coefficient at the position [5,6] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [5,7] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [6.0] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [6,1] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [6,2] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [6.3] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [6,4] of the matrix of encoded coefficients by the factor C,
scale the coefficient at the position [6.5] of the matrix of encoded coefficients by the factor I,
scale the coefficient at the position [6,6] of the matrix of encoded coefficients by the factor H,
scale the coefficient at the position [6,7] of the matrix of encoded coefficients by the factor F,
scale the coefficient at the position [7,0] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [7.1] of the matrix of encoded coefficients by the factor E,
scale the coefficient at the position [7,2] of the matrix of encoded coefficients by the factor F,
scale the coefficient at position [7.3] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [7,4] of the matrix of encoded coefficients by the factor B,
scale the coefficient at the position [7.5] of the matrix of encoded coefficients by the factor G,
scale the coefficient at the position [7,6] of the matrix of encoded coefficients by the factor F, and
scale the coefficient at the position [7,7] of the matrix of encoded coefficients by the factor E,
the commands that cause the programmable processor to apply the transformation to either a row vector or a column vector also induce the programmable processor:
calculate the value x 0 'by summing x 0 and x 4 ,
calculate the value x 4 'by adding x 0 and -x 4 ,
calculate the value (x 2 * α) by multiplying x 2 by the value of α,
calculate the value (x 6 * β) by multiplying x 6 by the value of β,
calculate the value (x 2 * β) by multiplying x 2 by the value of β,
calculate the value (x 6 * α) by multiplying x 6 by the value of α,
calculate the value of x 2 'by summing (x 2 * α) and - (x 6 * β),
calculate the value of x 6 'by summing (x 6 * α) and (x 2 * β),
calculate the value x 0 '' by summing x 0 'and x 6 ',
calculate the value x 4 '' by summing x 4 'and x 2 ',
calculate the value of x 2 '' by summing x 4 'and -x 2 ',
calculate the value x 6 '' by summing x 0 'and -x 6 ',
calculate the value x 7 'by summing x 1 and -x 7 ,
calculate the value of x 1 'by summing x 1 and x 7 ,
calculate the value x 7 '' by summing x 7 'and x 5 ',
calculate the value x 3 '' by summing x 1 'and -x 3 ',
calculate the value x 5 '' by summing x 7 'and -x 5 ',
calculate the value of x 1 '' by summing x 3 'and x 1 ',
calculate a value (x 7 '' * ε) by multiplying x 7 '' and the value ε,
calculate a value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ,
calculate a value (x 3 '' * γ) by multiplying x 3 '' and the value of γ,
calculate a value (x 3 '' * δ) by multiplying x 3 '' and the value δ,
calculate a value (x 5 '' * δ) by multiplying x 5 '' and the value δ,
calculate a value (x 5 '' * γ) by multiplying x 5 '' and the value of γ,
calculate a value (x 1 '' * ζ) by multiplying x 1 'to the value ζ,
calculate a value (x 1 '' * ε) by multiplying x 1 'to the value ε,
calculate the value of x 7 '''by summing (x 7 ''* ε) and - (x 1 ''* ζ),
calculate the value x 3 '''by summing (x 3 ''* γ) and - (x 5 ''* δ),
calculate the value x 5 '''summing (x 5' '* γ) and (x 3' '* δ),
calculate the value of x 1 '''by summing (x 1 ''* ε) and (x 7 ''* ζ),
calculate the value of X 0 by adding x 7 '''and x 0 '',
compute the summation value X 1 x 4 '' and x 5 '''
calculate a value X 2 summation x 2 '' and x 3 '''
compute the summation value X 3 x 6 '' and 7 x '''
compute the summation value X 4 x 6 '' and -x 1 '''
compute the summation value X 5 x 2 '' and -x 3 '''
compute the summation value X 6 x 4 '' and -x 5 ''', and
compute the summation value X 7 x 0 '' and -x 1 '''
and x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 are coefficients in a row vector or column vector,
wherein X 1 , X 2 , X 3 , X 4 , X 5 , X 6, and X 7 are output transform values, and
moreover, α = 41/128, β = 99/128, γ = 113/128, δ = 719/4096, ε = 1533/2048 and ζ = 1/2.
22. Машиночитаемый носитель информации по п.21, в котором команды побуждают программируемый процессор применять преобразование посредством побуждения программируемого процессора применять преобразование к коэффициентам в одной из вектор-строк или в одном из вектор-столбцов без использования операций умножения или деления.22. The computer-readable storage medium of claim 21, wherein the instructions cause the programmable processor to apply the transform by causing the programmable processor to apply the transform to coefficients in one of the row vectors or in one of the column vectors without using multiplication or division operations. 23. Машиночитаемый носитель информации по п.22,
в котором команды побуждают программируемый процессор вычислять значение (x1* ε) умножением x1 на значение ε и значение (x1* ζ) умножением x1 на значение ζ посредством побуждения программируемого процессора:
вычислять значение y1, причем y1=(x1>>9)-x1,
вычислять значение (x1* ζ) сдвигом x3 вправо на одну позицию, и
вычислять значение (x1* ε) вычитанием y1 из (y1>>2), и
в котором команды побуждают программируемый процессор вычислять значение (x7* ε) умножением x7 на значение ε и значение (x7* ζ) умножением x7 на значение ζ посредством побуждения программируемого процессора:
вычислять значение y1', причем y1'=(x7>>9)-x7,
вычислять значение (x7* ζ) сдвигом x7 вправо на одну позицию, и
вычислять значение (x7* ε) вычитанием y1' из (y1'>>2), и
причем команды побуждают программируемый процессор вычислять значение (x1''* ε) умножением x1'' на значение ε и значение (x1''* ζ) умножением x1'' на значение ζ посредством побуждения программируемого процессора:
вычислять значение y1'', причем y1''=(x1''>>9)-x1'',
вычислять значение (x1''* ζ) сдвигом x1'' вправо на одну позицию, и
вычислять значение (x1''* ε) вычитанием y1'' из (y1''>>2), и
причем команды побуждают программируемый процессор вычислять значение (x7''* ε) умножением x7'' на значение ε и значение (x7''* ζ) умножением x7'' на значение ζ посредством побуждения программируемого процессора:
вычислять значение y1''', причем y1'''=(x7''>>9)-x7'',
вычислять значение (x7''* ζ) сдвигом x7' вправо на одну позицию, и
вычислять значение (x7''* ε) вычитанием y1''' из (y1'''>>2).
23. Machine-readable storage medium according to item 22,
in which the instructions cause the programmable processor to calculate the value (x 1 * ε) by multiplying x 1 by the value of ε and the value (x 1 * ζ) by multiplying x 1 by the value of ζ by causing the programmable processor:
calculate the value of y 1 , and y 1 = (x 1 >> 9) -x 1 ,
calculate the value (x 1 * ζ) by shifting x 3 to the right by one position, and
calculate the value (x 1 * ε) by subtracting y 1 from (y 1 >> 2), and
in which the instructions cause the programmable processor to calculate the value (x 7 * ε) by multiplying x 7 by ε and the value (x 7 * ζ) by multiplying x 7 by ζ by causing the programmable processor:
calculate the value of y 1 ', and y 1 ' = (x 7 >> 9) -x 7 ,
calculate the value (x 7 * ζ) by shifting x 7 to the right by one position, and
calculate the value (x 7 * ε) by subtracting y 1 'from (y 1 '>> 2), and
wherein the instructions cause the programmable processor to calculate a value (x 1 '' * ε) by multiplying x 1 'to the value of ε and a value (x 1' '* ζ) by multiplying x 1' 'in value by ζ impulses programmable processor:
calculate a value y 1 ', y 1 where''= (x 1' '>> 9) -x 1' ',
calculate a value (x 1 '' * ζ) shift x 1 '' to the right by one position, and
calculate a value (x 1 '' * ε) by subtracting y 1 '' of (y 1 '>> 2), and
wherein the instructions cause the programmable processor to calculate a value (x 7 '' * ε) by multiplying x 7 '' and the value ε and a value (x 7 '' * ζ) by multiplying x 7 '' and the value ζ by encouraging programmable processor:
calculate a value y 1 ''', wherein y 1' '' = (x 7 ''>> 9) -x 7 '',
calculate the value (x 7 '' * ζ) by shifting x 7 'to the right one position, and
calculate a value (x 7 '' * ε) by subtracting y 1 '''of (y 1' ''>> 2).
24. Машиночитаемый носитель информации по п.22, в котором команды побуждают программируемый процессор вычислять значение (x3* γ) умножением x3 на значение γ и значение (x3* δ) умножением x3 на значение δ посредством побуждения программируемого процессора:
вычислять значение y2, причем y2=(x3>>3)-(x3>>7),
вычислять значение y3, причем y3=y2-(x3>>11),
вычислять значение (x3* δ)=y2+(y3>>1), и
вычислять значение (x3* γ) вычитанием y2 из x3, и
причем команды побуждают программируемый процессор вычислять значение (x5* δ) умножением x5 на значение δ и значение (x5* γ) умножением x5 на значение γ посредством побуждения программируемого процессора:
вычислять значение y2', причем y2'=(x5>>3)-(x5>>7),
вычислять значение y3', причем y3'=y2'-(x5>>11),
вычислять значение (x5* δ) суммированием y2' и (y3'>>1), и
вычислять значение (x5* γ) вычитанием y2' из x5, и
причем команды побуждают программируемый процессор вычислять значение (x3''* γ) умножением x3'' на значение γ и значение (x3''* δ) умножением x3'' на значение δ посредством побуждения программируемого процессора:
вычислять значение y2'', причем y2''=(x3''>>3)-(x3''>>7),
вычислять значение y3'', причем y3''=y2''-(x3''>>11),
вычислять значение (x3''* δ)=y2''+(y3''>>1), и
вычислять значение (x3''* γ) вычитанием y2'' из x3'', и
причем команды побуждают программируемый процессор вычислять значение (x5''* δ) умножением x5'' на значение δ и значение (x5''* γ) умножением x5'' на значение γ посредством побуждения программируемого процессора:
вычислять значение y2''', причем y2'''=(x5''>>3)-(x5''>>7),
вычислять значение y3''', причем y3'''=y2'''-(x5''>>11),
вычислять значение (x5''* δ) суммированием y2''' и (y3'''>>1), и
вычислять значение (x5''* γ) вычитанием y2''' из x5''.
24. The computer readable storage medium of claim 22, wherein the instructions cause the programmable processor to calculate the value (x 3 * γ) by multiplying x 3 by the value γ and the value (x 3 * δ) by multiplying x 3 by the value δ by causing the programmable processor:
calculate the value of y 2 , and y 2 = (x 3 >> 3) - (x 3 >> 7),
calculate the value of y 3 , and y 3 = y 2 - (x 3 >> 11),
calculate the value (x 3 * δ) = y 2 + (y 3 >> 1), and
calculate the value (x 3 * γ) by subtracting y 2 from x 3 , and
and the commands cause the programmable processor to calculate the value (x 5 * δ) by multiplying x 5 by the value of δ and the value (x 5 * γ) by multiplying x 5 by the value of γ by causing the programmable processor:
calculate the value of y 2 ', and y 2 ' = (x 5 >> 3) - (x 5 >> 7),
calculate the value of y 3 ', and y 3 ' = y 2 '- (x 5 >> 11),
calculate the value (x 5 * δ) by summing y 2 'and (y 3 '>> 1), and
calculate the value (x 5 * γ) by subtracting y 2 'from x 5 , and
wherein the instructions cause the programmable processor to calculate a value (x 3 '' * γ) by multiplying x 3 '' and the value of γ and the value of (x 3 '' * δ) by multiplying x 3 '' and δ value by encouraging programmable processor:
calculate a value y 2 '', and y 2 '' = (x 3 ''>> 3) - (x 3 ''>> 7)
calculate a value y 3 '', wherein y 3 '' = y 2 '' - (x 3 ''>> 11)
calculate a value (x 3 '' * δ) = y 2 '' + (y 3 ''>> 1), and
calculate a value (x 3 '' * γ) by subtracting y 2 '' of x 3 '', and
wherein the instructions cause the programmable processor to calculate a value (x 5 '' * δ) by multiplying x 5 '' and the value of δ and the value of (x 5 '' * γ) by multiplying x 5 '' on the γ value by encouraging programmable processor:
calculate the value of y 2 ''', with y 2 ''' = (x 5 ''>> 3) - (x 5 ''>> 7),
calculate the value of y 3 ''', with y 3 ''' = y 2 '''- (x 5 ''>> 11),
calculate a value (x 5 '' * δ) summing y 2 '''and (y 3' ''>> 1), and
calculate a value (x 5 '' * γ) by subtracting y 2 '''of x 5' '.
25. Машиночитаемый носитель информации по п.22, в котором команды побуждают программируемый процессор вычислять значение (x2* α) умножением x2 на значение α и значение (x2* β) умножением x2 на значение β посредством побуждения программируемого процессора:
вычислять значение y1, причем y1=x2+(x2>>5),
вычислять значение y2, причем y2=y1>>2,
вычислять значение (x2* α) суммированием y2 и (x2>>4), и
вычислять значение (x2* β) вычитанием y2 из y1, и
причем команды побуждают программируемый процессор вычислять значение (x6* α) умножением x6 на значение α и значение (x6* β) умножением x6 на значение β посредством побуждения программируемого процессора:
вычислять значение y1', причем y1'=x6+(x6>>5),
вычислять значение y2', причем y2'=y1'>>2,
вычислять значение (x6* α) суммированием y2' и (x6>>4), и
вычислять значение (x6* β) вычитанием y2' из y1', и
причем команды побуждают программируемый процессор вычислять значение (x2''* α) умножением x2'' на значение α и значение (x2''* β) умножением x2'' на значение β посредством побуждения программируемого процессора:
вычислять значение y1'', причем y1''=x2''+(x2''>>5),
вычислять значение y2'', причем y2''=y1''>>2,
вычислять значение (x2''* α) суммированием y2'' и (x2''>>4), и
вычислять значение (x2''* β) вычитанием y2'' из y1'', и
причем команды побуждают программируемый процессор вычислять значение (x6''* α) умножением x6'' на значение α и значение (x6''* β) умножением x6'' на значение β посредством побуждения программируемого процессора:
вычислять значение y1''', причем y1'''=x6''+(x6''>>5),
вычислять значение y2''', причем y2'''=y1'''>>2,
вычислять значение (x6''* α) суммированием y2''' и (x6''>>4), и
вычислять значение (x6''* β) вычитанием y2''' из y1'''.
25. The computer-readable storage medium according to item 22, in which the instructions cause the programmable processor to calculate the value (x 2 * α) by multiplying x 2 by the value α and the value (x 2 * β) by multiplying x 2 by the value β by inducing the programmable processor:
calculate the value of y 1 , and y 1 = x 2 + (x 2 >> 5),
calculate the value of y 2 , and y 2 = y 1 >> 2,
calculate the value (x 2 * α) by summing y 2 and (x 2 >> 4), and
calculate the value (x 2 * β) by subtracting y 2 from y 1 , and
and the commands cause the programmable processor to calculate the value (x 6 * α) by multiplying x 6 by the value α and the value (x 6 * β) by multiplying x 6 by the value β by causing the programmable processor:
calculate the value of y 1 ', and y 1 ' = x 6 + (x 6 >> 5),
calculate the value of y 2 ', and y 2 ' = y 1 '>> 2,
calculate the value (x 6 * α) by summing y 2 'and (x 6 >> 4), and
calculate the value (x 6 * β) by subtracting y 2 'from y 1 ', and
wherein the instructions cause the programmable processor to calculate a value (x 2 '' * α) multiplying x 2 '' and the value of α and the value of (x 2 '' * β) by multiplying x 2 '' to a value β by encouraging programmable processor:
calculate a value y 1 ', y 1 where''= x 2' '+ (x 2' '>> 5)
calculate a value y 2 '', and y 2 '' = y 1 '>> 2
calculate a value (x 2 '' * α) summing y 2 '' and (x 2 ''>> 4), and
calculate a value (x 2 '' * β) by subtracting y 2 '' of the y 1 '', and
and the commands cause the programmable processor to calculate the value (x 6 '' * α) by multiplying x 6 '' by the value α and the value (x 6 '' * β) by multiplying x 6 '' by the value β by causing the programmable processor:
calculate the value of y 1 ''', with y 1 ''' = x 6 '' + (x 6 ''>> 5)
calculate the value of y 2 ''', with y 2 ''' = y 1 '''>> 2,
calculate a value (x 6 '' * α) summing y 2 '''and (x 6' '>> 4), and
calculate a value (x 6 '' * β) by subtracting y 2 '''of the y 1' ''.
26. Машиночитаемый носитель информации по п.21, в котором значения x0, x1, x2, x3, x4, x5, x6, x7, x0', x1', x2', x3', x4', x5', x6', x7', x0'', x1'', x2'', x3'', x4'', x5'', x6'', x7'', x1''', x3''', x5''', x7''', (x2* α), (x6* β), (x2* β), (x6* α), (x7''* ε), (x7''* ζ), (x3''* γ), (x3''* δ), (x5''* δ), (x5''* γ), (x1''* ζ) и (x1''* ε) представлены с помощью чисел с фиксированной точкой, которые включают в себя Р битов в частях мантиссы чисел с фиксированной точкой.26. The computer-readable storage medium according to item 21, in which the values x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 0 ', x 1 ', x 2 ', x 3 ', x 4 ', x 5 ', x 6 ', x 7 ', x 0 '', x 1 '', x 2 '', x 3 '', x 4 '', x 5 '', x 6 '', x 7 '', x 1 ''', x 3' '', x 5 ''', x 7' '', (x 2 * α), (x 6 * β), (x 2 * β), (x 6 * α), (x 7 '' * ε), (x 7 '' * ζ), (x 3 '' * γ), (x 3 '' * δ), (x 5 '' * δ), (x 5 '' * γ), (x 1 '' * ζ) and (x 1 '' * ε) are represented by fixed-point numbers, which include P bits in parts of the mantissa numbers fixed point. 27. Машиночитаемый носитель информации по п.26, в котором Р равно 10. 27. The computer-readable storage medium of claim 26, wherein P is 10.
RU2010147944/08A 2006-06-26 2007-06-26 Efficient fixed-point approximation for direct and inverse discrete cosine transforms RU2496139C2 (en)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US81669706P 2006-06-26 2006-06-26
US60/816,697 2006-06-26
US84136206P 2006-08-30 2006-08-30
US60/841,362 2006-08-30
US84719406P 2006-09-25 2006-09-25
US60/847,194 2006-09-25
US82966906P 2006-10-16 2006-10-16
US60/829,669 2006-10-16
US86953006P 2006-12-11 2006-12-11
US60/869,530 2006-12-11
US88393207P 2007-01-08 2007-01-08
US60/883,932 2007-01-08

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2009102254/08A Division RU2417423C2 (en) 2006-06-26 2007-06-26 Efficient fixed-point approximation for direct and inverse discrete cosine transforms

Publications (2)

Publication Number Publication Date
RU2010147944A RU2010147944A (en) 2012-05-27
RU2496139C2 true RU2496139C2 (en) 2013-10-20

Family

ID=42698400

Family Applications (2)

Application Number Title Priority Date Filing Date
RU2010147944/08A RU2496139C2 (en) 2006-06-26 2007-06-26 Efficient fixed-point approximation for direct and inverse discrete cosine transforms
RU2009102254/08A RU2417423C2 (en) 2006-06-26 2007-06-26 Efficient fixed-point approximation for direct and inverse discrete cosine transforms

Family Applications After (1)

Application Number Title Priority Date Filing Date
RU2009102254/08A RU2417423C2 (en) 2006-06-26 2007-06-26 Efficient fixed-point approximation for direct and inverse discrete cosine transforms

Country Status (1)

Country Link
RU (2) RU2496139C2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2993084A1 (en) * 2012-07-09 2014-01-10 France Telecom VIDEO CODING METHOD BY PREDICTING CURRENT BLOCK PARTITIONING, DECODING METHOD, CODING AND DECODING DEVICES AND CORRESPONDING COMPUTER PROGRAMS
JP6315911B2 (en) * 2013-07-09 2018-04-25 キヤノン株式会社 Image encoding device, image encoding method and program, image decoding device, image decoding method and program

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2122295C1 (en) * 1994-04-29 1998-11-20 Виктор Павлович Дворкович Method for frame-by-frame compression of images
WO2002051160A2 (en) * 2000-12-19 2002-06-27 Koninklijke Philips Electronics N.V. An approximate idct for scalable video decoding
US20030078953A1 (en) * 2001-08-30 2003-04-24 Antti Hallapuro Implementation of a transform and of a subsequent quantization
US6694342B1 (en) * 1997-06-13 2004-02-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
US6799192B1 (en) * 2001-01-09 2004-09-28 Apple Computer, Inc. Method and apparatus for inverse discrete cosine transform
RU2273112C2 (en) * 1999-11-08 2006-03-27 Квэлкомм Инкорпорейтед Compression of image with utilization of discontinuous cosine transformation of adaptively determined size of block based on dispersion
US20060129622A1 (en) * 2004-12-14 2006-06-15 Stmicroelectronics, Inc. Method and system for fast implementation of an approximation of a discrete cosine transform

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2122295C1 (en) * 1994-04-29 1998-11-20 Виктор Павлович Дворкович Method for frame-by-frame compression of images
US6694342B1 (en) * 1997-06-13 2004-02-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
RU2273112C2 (en) * 1999-11-08 2006-03-27 Квэлкомм Инкорпорейтед Compression of image with utilization of discontinuous cosine transformation of adaptively determined size of block based on dispersion
WO2002051160A2 (en) * 2000-12-19 2002-06-27 Koninklijke Philips Electronics N.V. An approximate idct for scalable video decoding
US6799192B1 (en) * 2001-01-09 2004-09-28 Apple Computer, Inc. Method and apparatus for inverse discrete cosine transform
US20030078953A1 (en) * 2001-08-30 2003-04-24 Antti Hallapuro Implementation of a transform and of a subsequent quantization
US20060129622A1 (en) * 2004-12-14 2006-06-15 Stmicroelectronics, Inc. Method and system for fast implementation of an approximation of a discrete cosine transform

Also Published As

Publication number Publication date
RU2010147944A (en) 2012-05-27
RU2417423C2 (en) 2011-04-27
RU2009102254A (en) 2010-08-10

Similar Documents

Publication Publication Date Title
US8571340B2 (en) Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8385424B2 (en) Reduction of errors during computation of inverse discrete cosine transform
RU2439682C2 (en) Reduction of errors during calculation of reverse discrete cosine conversion
KR100963459B1 (en) Efficient fixed-point approximations of forward and inverse discrete cosine transforms
RU2496139C2 (en) Efficient fixed-point approximation for direct and inverse discrete cosine transforms
BRPI0712996A2 (en) Efficient fixed-point approximations of discrete, direct, and inverse cosine transforms

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190627