СИГНАЛИЗАЦИЯ О МАКСИМАЛЬНОМ ДИНАМИЧЕСКОМ ДИАПАЗОНЕ ОБРАТНОГО ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ
SIGNALLING MAXIMUM DYNAMIC RANGE FOR INVERSE DISCRETE COSINE TRANSFORM

[0001] Данная заявка испрашивает приоритет предварительной заявки на патент США №60/862591, поданной 23 октября 2006, содержимое которой тем самым включается по ссылке.
Область техники, к которой относится изобретение
[0002] Настоящее описание относится к компьютерной графике, и, в частности, к сжатию графических данных.
Уровень техники
[0003] Многие существующие стандарты кодирования изображений и видео используют способы сжатия, чтобы разрешить сохранение или передачу изображений и видео с высоким разрешением как относительно компактных файлов или потоков данных. Такие стандарты кодирования включают в себя от Объединенной экспертной группы по фотографии ("JPEG"), от Экспертной группы по вопросам движущегося изображения ("MPEG")-1, MPEG-2, MPEG-4 часть 2, Усовершенствованный стандарт кодирования Н261, Н263, H.264 ("Н264/AVC") и другие стандарты кодирования изображений и видео.
[0004] В соответствии со многими из этих стандартов видеокадры сжимают, используя "пространственное" кодирование. Эти кадры могут быть исходными кадрами (то есть, i-кадрами) или могут быть остаточными кадрами, сгенерированными процессом временного кодирования, который использует компенсацию движения. Во время пространственного кодирования кадры разбивают на блоки пикселей равного размера. Например, несжатый кадр можно разбить на набор блоков 8×8 пикселей. Для каждого блока пикселей пиксельные компоненты разделяются на матрицы значений пиксельных компонентов. Например, каждый блок пикселей может быть разделен на матрицу значений пиксельных компонентов Y, матрицу значений пиксельных компонентов U и матрицу значений пиксельных компонентов V. В этом примере значения пиксельных компонентов Y указывают значения яркости и значения пиксельных компонентов U и V представляют значения цветности.
[0005] Кроме того, во время пространственного кодирования прямое дискретное косинусное преобразование ("FDCT") применяется к каждой матрице значений пиксельных компонентов в кадре, который кодируется. Идеальное одномерное FDCT определяется как:
c
где s - массив N первоначальных значений, t - массив N преобразованных значений, и коэффициенты  заданы как:
,
для 1 ≤ k ≤ N-1.
[0006] Идеальное двумерное FDCT определяется формулой:
s
t
c(i,j)
с(i,j) = c(i) c(j)
c(k)
где  - массив N первоначальных значений,  - массив N преобразованных значений, и  задается посредством , и  определяется как в одномерном случае.
[0007] Матрица коэффициентов формируется, когда блок значений пиксельных компонентов преобразовывается, используя FDCT. Эта матрица коэффициентов затем может быть квантована и кодирована, используя, например, код Хаффмана или арифметический код. Битовый поток видео представляет комбинированный результат выполнения этого процесса в отношении всех блоков значений пиксельных компонентов в видеокадрах в несжатой последовательности видеокадров.
[0008] Несжатый видеокадр может быть получен из битового потока видео посредством изменения этого процесса. В частности, каждая матрица коэффициентов в битовом потоке видео подвергается декомпрессии и несжатые значения подвергают обратному квантованию, чтобы получить матрицы обратно квантованных коэффициентов. Обратное дискретное косинусное преобразование ("IDCT") затем применяется к каждой матрице обратно квантованных коэффициентов, чтобы получить матрицы значений пиксельных компонентов. Идеальное одномерное IDCT определяется как:
c
где s - массив N первоначальных значений, t - массив N преобразованных значений, и коэффициенты  заданы как:
,
для 1≤k≤N-1.
Идеальное двумерное IDCT определяется формулой:
Получающиеся матрицы значений пиксельных компонентов затем повторно компонуют в блоки пикселей, и эти повторно компонованные блоки пикселей формируют декодированный видеокадр. Если декодированный видеокадр является интракодированным кадром, видеокадр теперь является полностью декодированным. Однако, если декодированный видеокадр является интеркодированным кадром, декодированный видеокадр является просто декодированным остаточным кадром. Полный кадр генерируется посредством построения предсказанного кадра, используя векторы движения, ассоциированные с декодированным видеокадром, и затем суммируя предсказанный кадр с декодированным остаточным кадром.
Сущность изобретения
[0009] Описываются способы, чтобы сигнализировать (информировать) о максимальном динамическом диапазоне выходных значений обратного дискретного косинусного преобразования ("IDCT"), которые могут быть сформированы, когда набор кодированных аудиовизуальных данных декодируется. В соответствии с этими способами устройство кодирования может генерировать файл аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, ассоциированные с набором из одного или более видеокадров. Этот файл аудиовизуальной информации может также включать в себя элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, сформированных, когда закодированные данные аудиовизуальной информации декодируются. Устройство декодирования, которое принимает файл аудиовизуальной информации, до декодирования кодированных аудиовизуальных данных может использовать элемент индикации диапазона для определения, декодировать ли закодированные данные аудиовизуальной информации. Например, устройство декодирования может не декодировать кодированные данные аудиовизуальной информации, когда устройство декодирования не способно сформировать выходные значения IDCT в указанном диапазоне выходных значений IDCT.
[0010] В одном аспекте способ содержит прием модулем декодирования объекта аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, которые представляют набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными. Способ также содержит определение - включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, способ содержит использование первой операции, чтобы сгенерировать набор выходных значений IDCT на основании кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, способ содержит использование набора выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Способ также содержит вынуждение модуля представления аудиовизуальной информации представлять восстановленные видеокадры.
[0011] В другом аспекте способ содержит прием от устройства декодирования сообщения, которое указывает максимальный динамический диапазон выходных значений IDCT. Кроме того, способ содержит генерирование, в ответ на прием сообщения, первого набора кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров, в котором выходные значения IDCT, ассоциированные с первым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне указанного диапазона. Способ также содержит вывод первого набора кодированных аудиовизуальных данных на устройство декодирования.
[0012] В другом аспекте устройство содержит коммуникационный интерфейс, который принимает объект аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, которые представляют набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными. Устройство также содержит модуль проверки диапазона, который определяет, включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство содержит первый модуль обратного преобразования, который использует первую операцию, чтобы сгенерировать набор выходных значений IDCT на основании кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Устройство также содержит модуль реконструкции изображения, который использует набор выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Кроме того, устройство содержит формирователь представления, который вынуждает модуль представления аудиовизуальной информации представлять восстановленные видеокадры.
[0013] В другом аспекте устройство содержит коммуникационный интерфейс, который принимает от устройства декодирования сообщение, которое указывает максимальный динамический диапазон выходных значений IDCT. Устройство также содержит модуль кодирования, который генерирует, в ответ на прием сообщения, первый набор кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров, при этом выходные значения IDCT, ассоциированные с первым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне указанного диапазона. Коммуникационный интерфейс выводит первый набор кодированных аудиовизуальных данных на устройство декодирования.
[0014] В другом аспекте устройство содержит средство для приема объекта аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, которые представляют набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными. Устройство также содержит средство для определения, включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство содержит средство для использования первой операции, чтобы сгенерировать набор выходных значений IDCT на основании кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство содержит средство для использования набора выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Устройство также содержит средство для того, чтобы вынудить модуль представления аудиовизуальной информации представлять восстановленные видеокадры.
[0015] В другом аспекте устройство содержит средство для приема от устройства декодирования сообщения, которое указывает максимальный динамический диапазон выходных значений IDCT. Устройство также содержит средство для генерирования, в ответ на прием сообщения, первого набора кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров, при этом выходные значения IDCT, ассоциированные с первым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне указанного диапазона. Устройство также содержит средство для вывода первого набора кодированных аудиовизуальных данных на устройство декодирования.
[0016] В другом аспекте интегральная схема содержит схему, которая принимает объект аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, которые представляют набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными. Интегральная схема также содержит схему, которая определяет, включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, интегральная схема содержит схему, которая использует первую операцию, чтобы сгенерировать набор выходных значений IDCT, на основании кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, интегральная схема содержит схему, которая использует набор выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Интегральная схема также содержит схему, которая вынуждает модуль представления аудиовизуальной информации представлять восстановленные видеокадры.
[0017] В другом аспекте интегральная схема содержит схему, которая принимает от устройства декодирования сообщение, которое указывает максимальный динамический диапазон выходных значений IDCT. Кроме того, интегральная схема содержит схему, которая генерирует, в ответ на прием сообщения, первый набор кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров. Выходные значения IDCT, ассоциированные с первым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне указанного диапазона. Интегральная схема также содержит схему, которая выводит закодированные данные аудиовизуальной информации на устройство декодирования.
[0018] В другом аспекте система содержит устройство кодирования и устройство декодирования. Устройство декодирования содержит первый коммуникационный интерфейс, который принимает от устройства кодирования объект аудиовизуальной информации, который включает в себя первый набор кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с первым набором кодированных аудиовизуальных данных. Устройство декодирования также содержит модуль проверки диапазона, который определяет, включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с первым набором кодированных аудиовизуальных данных, выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство декодирования содержит модуль информирования о диапазоне, который вынуждает первый коммуникационный интерфейс выводить на устройство кодирования сообщение, которое указывает максимальный динамический диапазон выходных значений IDCT, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство декодирования содержит первый модуль обратного преобразования, который использует первую операцию, чтобы сгенерировать набор выходных значений IDCT, на основании первого набора кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с первым набором кодированных аудиовизуальных данных, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, устройство декодирования содержит модуль реконструкции изображения, который использует набор выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Устройство декодирования также содержит формирователь представления, который вынуждает модуль представления аудиовизуальной информации представлять восстановленные видеокадры. Устройство кодирования содержит второй коммуникационный интерфейс, который принимает от устройства декодирования сообщение, которое указывает заданный диапазон. Устройство кодирования также содержит модуль кодирования, который генерирует, в ответ на прием сообщения, второй набор кодированных аудиовизуальных данных, который представляет набор из одного или более видеокадров. Выходные значения IDCT, ассоциированные со вторым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне заданного диапазона. Второй коммуникационный интерфейс выводит второй набор кодированных аудиовизуальных данных на устройство декодирования.
[0019] Способы, описанные в этом описании, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. При реализации в программном обеспечении это программное обеспечение может быть выполнено, используя один или более процессоров, таких как микропроцессоры, специализированные интегральные схемы ("ASIC"), программируемые пользователем вентильные матрицы ("FPGA"), или цифровые процессоры сигналов ("DSP"). Программное обеспечение, которое выполняет эти способы, может быть первоначально сохранено в считываемом компьютером носителе и загружено и выполнено с использованием одного или более процессоров.
[0020] Соответственно, настоящее описание также рассматривает считываемый компьютером носитель, который содержит выполняемые команды. При выполнении одним или более процессорами команды заставляют один или более процессоров принимать объект аудиовизуальной информации, который включает в себя закодированные данные аудиовизуальной информации, которые представляют набор из одного или более видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными. Кроме того, команды заставляют один или более процессоров определять, включает ли в себя максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходное значение IDCT, которое находится вне заданного диапазона. Команды также заставляют один или более процессоров использовать первую операцию, чтобы сгенерировать набор выходных значений IDCT, на основании кодированных аудиовизуальных данных, когда максимальный динамический диапазон выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона. Кроме того, команды вынуждают один или более процессоров использовать набор выходных значений IDCT, чтобы сгенерировать восстановленные видеокадры, ассоциированные с видеокадрами в наборе видеокадров. Команды также заставляют один или более процессоров заставлять модуль представления аудиовизуальной информации представлять восстановленные видеокадры.
[0021] В другом примере считываемый компьютером носитель содержит команды, которые, когда выполняются одним или более процессорами, заставляют один или более процессоров принимать от устройства декодирования сообщение, которое указывает максимальный динамический диапазон выходных значений IDCT. Команды также заставляют один или более процессоров генерировать, в ответ на прием сообщения, первый набор кодированных аудиовизуальных данных, которые представляют набор из одного или более видеокадров. Выходные значения IDCT, ассоциированные с первым набором кодированных аудиовизуальных данных, не включают в себя выходное значение IDCT, которое находится вне указанного диапазона. Кроме того, команды заставляют один или более процессоров выводить закодированные данные аудиовизуальной информации на устройство декодирования.
[0022] В некоторых случаях считываемый компьютером носитель может быть частью компьютерного программного продукта, который может быть продан производителям и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, и в некоторых случаях может также включить в себя упаковочные материалы.
[0023] Подробности одного или более примеров представлены ниже на сопроводительных чертежах и в описании. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[0024] Фиг.1 иллюстрирует блок-схему, иллюстрирующую примерную систему, которая включает в себя устройство кодирования и устройство декодирования.
[0025] Фиг.2 иллюстрирует блок-схему, иллюстрирующую примерные подробности модуля кодирования.
[0026] Фиг.3 иллюстрирует блок-схему, иллюстрирующую примерные подробности модуля декодирования.
[0027] Фиг.4 - последовательность операций, иллюстрирующая пример работы примерного модуля кодирования, проиллюстрированного на фиг.2.
[0028] Фиг.5 - последовательность операций, иллюстрирующая пример работы примерного модуля декодирования, иллюстрированного на фиг.3.
[0029] Фиг.6 - последовательность операций, иллюстрирующая дополнительный пример работы примерного модуля кодирования, иллюстрированного на фиг.2.
[0030] Фиг.7 - последовательность операций, иллюстрирующая альтернативный пример работы примерного модуля декодирования, иллюстрированного на фиг.3.
Подробное описание
[0031] Фиг.1 представлена блок-схема, иллюстрирующая примерную систему 2, которая включает в себя устройство 4 кодирования и устройство 6 декодирования. Нужно заметить, что система 2 является примерной системой и что возможно много других устройств и реализаций.
[0032] Устройство 4 кодирования и устройство 6 декодирования могут содержать персональные компьютеры, мобильные радиотелефоны, серверы, сетевые устройства, компьютеры, интегрированные в транспортные средства, платформы видеоигр, переносные игровые устройства, компьютерные рабочие станции, компьютерные киоски, цифровую аппаратуру графического указания, универсальные компьютеры, телевизионные приставки, сетевые телефоны, персональные цифровые ассистенты, мобильные медиаплееры, домашние медиаплееры, цифровые видеопроекторы, или другие типы электронных устройств.
[0033] Устройство 4 кодирования может включать в себя источник 8 аудиовизуальной информации, чтобы генерировать данные аудиовизуальной информации (аудиовизуальные данные). Источник 8 аудиовизуальной информации может являться цифровой видео- или фотокамерой, которая фиксирует данные изображения. Источник 8 аудиовизуальной информации может быть встроен в устройство 4 кодирования или может быть присоединен к устройству 4 кодирования как периферийное устройство или сетевое устройство.
[0034] В примере на Фиг.1 устройство 4 кодирования также включает в себя процессор 10. Процессор 10 может быть цифровым процессором сигналов ("DSP"), микропроцессором, специализированной интегральной схемой ("ASIC"), или некоторым другим типом интегральной схемы. Модуль 12 кодирования в устройстве 4 кодирования может кодировать данные аудиовизуальной информации, сгенерированные источником 8 аудиовизуальной информации. Модуль 12 кодирования может быть реализован множеством способов. Например, модуль 12 кодирования может содержать команды, которые вынуждают процессор 10 кодировать данные аудиовизуальной информации из источника 8 аудиовизуальной информации. В другом примере модуль 12 кодирования может быть реализован как интегральная схема, которая кодирует данные аудиовизуальной информации, сгенерированные источником 8 аудиовизуальной информации. В еще одном примере модуль 12 кодирования может быть комбинацией одного или более модулей аппаратного и программного обеспечения.
[0035] В примере на Фиг.1 устройство 4 кодирования также включает в себя коммуникационный интерфейс 14. Коммуникационный интерфейс 14 разрешает устройству 4 кодирования отправлять данные к и принимать данные от одного или более других устройств, включая устройство 6 декодирования. Коммуникационный интерфейс 14 может быть любым из множества типов интерфейса. Например, коммуникационный интерфейс 14 может быть типом сетевого интерфейса. Типы беспроводных интерфейсов включают в себя интерфейсы Ethernet, интерфейсы кольцевой сети с передачей маркера (token-ring), интерфейсы Wi-Fi, интерфейсы WiMax, беспроводные широкополосные интерфейсы, интерфейсы асинхронного режима передачи ("ATM"), интерфейсы технологии Bluetooth, или другие типы проводных или беспроводных сетевых интерфейсов. В другом примере коммуникационный интерфейс 14 может быть интерфейсной шиной устройств, такой как интерфейс универсальной последовательной шины ("USB"), интерфейс FireWire, последовательный интерфейс передачи по кабелю, или другим типом интерфейсного устройства.
[0036] Устройство 6 декодирования может включать в себя коммуникационный интерфейс 16. Как и коммуникационный интерфейс 14, коммуникационный интерфейс 16 может быть любым из множества типов интерфейса. Например, коммуникационный интерфейс 16 может быть сетевым интерфейсом, интерфейсной шиной устройств или другим типом интерфейса. Коммуникационный интерфейс 16 может посылать и принимать много различных видов данных. Например, коммуникационный интерфейс 16 может принимать объект аудиовизуальной информации. Как используется в настоящем описании, "объект аудиовизуальной информации" является набором данных, из которых слышимые и/или видимые сигналы могут быть получены и воспроизведены. Например, "объект аудиовизуальной информации" может быть битовым потоком видео, аудио- или видеофайлом, или другим типом данных, из которых слышимые и/или видимые сигналы могут быть получены и воспроизведены.
[0037] Когда коммуникационный интерфейс 16 принимает объект аудиовизуальной информации, модуль 18 декодирования в устройстве 6 декодирования может декодировать закодированные данные аудиовизуальной информации в объект аудиовизуальной информации. Модуль 18 декодирования может быть реализован множеством способов. Например, модуль 18 декодирования может содержать интегральную схему, которая декодирует кодированные данные аудиовизуальной информации в объект аудиовизуальной информации. В другом примере модуль 18 декодирования может быть реализован как последовательность команд, которые, когда выполняются процессором 20 в устройстве 6 декодирования, вынуждают процессор 20 декодировать закодированные данные аудиовизуальной информации в объекте аудиовизуальной информации. Процессор 20 может быть микропроцессором, цифровым процессором сигналов, специализированными интегральными схемами или другим типом интегральных схем. Процессор 20 может использовать арифметику с фиксированной точкой, чтобы выполнить численные вычисления, что является распространенным в меньших устройствах, таких как мобильные телефоны. Например, процессор 20 может использовать 16-разрядные регистры, чтобы хранить значения для численных вычислений.
[0038] Формирователь 22 представления в устройстве 6 декодирования вынуждает модуль 24 представления аудиовизуальной информации представлять данные аудиовизуальной информации, декодированные модулем 18 декодирования. Другими словами, формирователь 22 представления может вынудить модуль 24 представления аудиовизуальной информации выводить слышимые и/или видимые сигналы, которые представляют декодированные данные аудиовизуальной информации. Например, модуль 24 представления аудиовизуальной информации может содержать компьютерный монитор, который представляет видеоинформацию. Модуль 24 представления аудиовизуальной информации может быть интегрирован в устройство 6 декодирования или может быть подсоединен к устройству 6 декодирования в качестве периферийного устройства через одну или более проводных или беспроводных линий связи. Формирователь 22 представления может содержать драйвер устройства или другое программное обеспечение, которое выполняется на процессоре 20, аппаратное обеспечение или модуль программно-аппаратного обеспечения, или некоторый другой механизм, который вынуждает модуль 24 представления аудиовизуальной информации представлять данные аудиовизуальной информации.
[0039] Когда модуль 12 кодирования кодирует набор из одного или более видеокадров, включенных в данные аудиовизуальной информации, сгенерированные источником 8 аудиовизуальной информации, модуль 12 кодирования может генерировать матрицы коэффициентов посредством выполнения прямого дискретного косинусного преобразования ("FDCT") над блоками значений пиксельных компонентов в видеокадрах в наборе видеокадров. После формирования матрицы коэффициентов модуль 12 кодирования может генерировать матрицу квантованных коэффициентов посредством квантования коэффициентов в матрице коэффициентов. Квантование коэффициентов в матрице коэффициентов может сократить количество информации, ассоциированной с высокочастотными коэффициентами в этой матрице коэффициентов.
[0040] После того как модуль 12 кодирования сгенерирует набор матриц квантованных коэффициентов для видеокадров в наборе видеокадров, модуль 12 кодирования может определить максимальный динамический диапазон выходных значений обратного дискретного косинусного преобразования («IDCT»), ассоциированных с матрицами квантованных коэффициентов. Выходные значения IDCT, ассоциированные с матрицей квантованных коэффициентов, представляют выходные значения IDCT в матрице выходных значений IDCT, которые могут получиться из формирования матрицы обратно квантованных коэффициентов посредством обратного квантования матрицы квантованных коэффициентов и затем генерирования матрицы выходных значений IDCT посредством выполнения IDCT над матрицей обратно квантованных коэффициентов. Например, модуль 12 кодирования может определить, что выходные значения IDCT, ассоциированные с набором матриц квантованных коэффициентов, находятся в пределах диапазона от -1805 до 1805.
[0041] После того как модуль 12 кодирования идентифицирует максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором матриц квантованных коэффициентов, модуль 12 кодирования может генерировать объект аудиовизуальной информации, который включает в себя статистически кодированные версии матриц квантованных коэффициентов, ассоциированных с набором видеокадров, данными движения, ассоциированными с набором видеокадров, и элементом индикации диапазона. Например, модуль 12 кодирования может генерировать транспортный поток MPEG-2, который включает в себя статистически кодированные версии матриц квантованных коэффициентов, ассоциированных с набором видеокадров, и элемент заголовка битового потока, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с матрицами квантованных коэффициентов. Элемент индикации диапазона указывает максимальный динамический диапазон выходных значений IDCT в матрицах квантованных коэффициентов, ассоциированных с набором видеокадров.
[0042] Элемент индикации диапазона может указать диапазон выходных значений IDCT множеством способов. В первом примере элемент индикации диапазона может явно указывать или иначе указывать максимальное количество битов, требуемых для представления любого выходного значения IDCT в матрицах квантованных коэффициентов, ассоциированных с набором видеокадров. Во втором примере элемент индикации диапазона может явно указывать или иначе указывать максимальное выходное значение IDCT и минимальное выходное значение IDCT в матрицах квантованных коэффициентов, ассоциированных с набором видеокадров.
[0043] Модуль 12 кодирования может выполнять множество действий после формирования объекта аудиовизуальной информации. Например, модуль 12 кодирования может вынудить коммуникационный интерфейс 14 выводить объект аудиовизуальной информации на устройство 6 декодирования или другое устройство. В другом примере модуль 12 кодирования может сохранять объект аудиовизуальной информации в считываемом компьютером носителе (не показан) для более позднего использования.
[0044] Коммуникационный интерфейс 16 может принять объект аудиовизуальной информации, который включает в себя набор кодированных аудиовизуальных данных, ассоциированных с набором видеокадров, набор данных движения, ассоциированных с набором видеокадров, и элемент индикации диапазона. Когда коммуникационный интерфейс 16 принимает такой объект аудиовизуальной информации, модуль 18 декодирования может извлечь элемент индикации диапазона из объекта аудиовизуальной информации. После извлечения элемента индикации диапазона модуль 18 декодирования может определить, включает ли в себя диапазон, указанный элементом индикации диапазона, выходное значение IDCT, которое находится вне заданного диапазона. Этот данный диапазон может быть диапазоном выходных значений IDCT, которые модуль 18 декодирования способен сформировать. Например, элемент индикации диапазона может указывать, что выходные значения IDCT, ассоциированные с кодированными аудиовизуальными данными, находятся в диапазоне [-1024, 1023], и модуль 18 декодирования может быть способным только сформировать выходные значения IDCT в диапазоне [-256, 255]. Следовательно, в этом примере модуль 18 декодирования может определить, что диапазон, указанный элементом индикации диапазона, включает в себя выходное значение IDCT, которое находится вне диапазона выходных значений IDCT, которые модуль 18 декодирования способен сформировать.
[0045] Если модуль 18 декодирования определяет, что диапазон, указанный элементом индикации диапазона, не больше чем заданный диапазон, модуль 18 декодирования может затем выполнить процесс статистического декодирования в отношении набора кодированных аудиовизуальных данных в объекте аудиовизуальной информации, таким образом генерируя набор матриц квантованных коэффициентов, ассоциированных с набором видеокадров. Кроме того, модуль 18 декодирования может выполнить процесс статистического декодирования в отношении данных движения в объекте аудиовизуальной информации. Модуль 18 декодирования может затем генерировать матрицы обратно квантованных коэффициентов посредством выполнения операции обратного квантования для каждой из матриц квантованных коэффициентов, ассоциированных с набором видеокадров. Затем модуль 18 декодирования может применить IDCT к каждой из матриц обратно квантованных коэффициентов, чтобы получить матрицы выходных значений IDCT. Модуль 18 декодирования может генерировать восстановленные остаточные изображения, ассоциированные с набором видеокадров, посредством повторной сборки (компоновки) матриц выходных значений IDCT. После формирования восстановленных остаточных изображений модуль 18 декодирования может генерировать восстановленные (реконструированные) версии первоначальных видеокадров, используя восстановленные остаточные изображения и предсказанные изображения, сгенерированные с наборами данных движения, ассоциированными с набором видеокадров. Формирователь 22 представления может затем вынудить модуль 24 представления аудиовизуальной информации выводить видимые сигналы, которые представляют восстановленные версии первоначального набора видеокадров.
[0046] Способы, описанные в настоящем описании, могут обеспечить несколько преимуществ. Например, если устройство декодирования пытается применить IDCT к матрице коэффициентов, которые должны сформировать выходные значения IDCT, которые устройство декодирования не способно сформировать, могут быть получены значительные различия между первоначальными аудиовизуальными данными и декодированными аудиовизуальными данными. Такие различия могут значительно снизить качество декодированных аудиовизуальных данных. Способы, описанные в настоящем описании, могут препятствовать тому, чтобы устройство декодирования декодировало данные аудиовизуальной информации, когда устройство декодирования не способно сформировать выходные значения IDCT, ассоциированные с закодированной версией аудиовизуальных данных.
9
11
12
[0047] Следующий пример иллюстрирует это положение. Типичное значение пиксельных компонентов в остаточном изображении может колебаться от -256 до 255. Таким образом, значение пиксельных компонентов может быть одним из 511 различных возможных значений. Поэтому требуются девять битов для представления каждого из этих 511 возможных значений (то есть, от 2 = 512). В идеальном случае, в этом примере, IDCT должно сформировать выходные значения IDCT (то есть, значения пиксельных компонентов в остаточном изображении) которые изменяются в диапазоне от -256 до 255. Однако из-за ошибок, вызванных квантованием коэффициентов, IDCT может сформировать выходные значения IDCT, которые изменяются от -1805 до 1805. Таким образом, выходное значение IDCT может быть одним из 3610 различных возможных значений. Двенадцать битов потребуются для представления каждого из этих 3610 возможных значений (то есть, 2 = 2048 недостаточно, поэтому может потребоваться 2 = 4096). Чтобы минимизировать стоимость и сложность, процессор 20 может использовать 16-разрядные регистры, чтобы хранить эти числовые значения. Кроме того, последний этап алгоритма, используемого модулем декодирования 18 для применения IDCT, может потребовать сдвига вправо на семь позиций. Поэтому, когда модуль 18 декодирования выполняется на процессоре 20, есть только девять битов, остающиеся для представления выходных значений IDCT (то есть, 16-7=9). Поскольку есть только девять битов, чтобы представить выходные значения IDCT, выходные значения IDCT могут быть не больше чем 255 и не меньше чем -256. Следовательно, когда процессор 20 выполняет команды модуля декодирования 18 для выполнения обратного дискретного косинусного преобразования, процессор 20 может генерировать существенные ошибки при обработке значений, которые меньше чем -256 или больше чем 255.
[0048] Фиг.2 - блок-схема, иллюстрирующая подробности примера модуля 12 кодирования. Модуль 12 кодирования может содержать набор "модулей". Эти модули могут содержать поднаборы программных команд модуля 12 кодирования. Альтернативно, эти модули могут содержать схемы ASIC. В другом альтернативном варианте эти модули могут содержать программные команды и ASIC.
[0049] Как иллюстрируется в примере согласно Фиг.2, модуль 12 кодирования может принять набор из одного или более некодированных видеокадров из источника 8 аудиовизуальной информации. Набор видеокадров может включать в себя единственный видеокадр, одну или более "групп изображений", или другие количества видеокадров. Каждый видеокадр, принятый из источника 8 аудиовизуальной информации, может включать в себя один или более «срезов». «Срезы» видеокадра - это дискретные части видеокадра, которые вместе включают в себя весь видеокадр. Например, стандарт усовершенствованного кодирования видео ("AVC")/H.264 определяет, что могут быть один или более «срезов» для каждого видеокадра. Однако стандарт группы экспертов по движущимся изображениям ("MPEG-2") не включает в себя понятие «среза». Вместо этого в стандарте MPEG-2 рассматривают только полные видеокадры. Чтобы поддержать общность, настоящее описание использует термин "изображение" («картинка») для обозначения области видеокадра, которая может включать или не может включать в себя весь видеокадр.
[0050] Когда модуль 12 кодирования принимает изображение (то есть, "текущее изображение"), ассоциированное с видеокадром в наборе видеокадров, сгенерированных источником 8 аудиовизуальной информации, модуль 28 интра предсказания (внутреннего предсказания) в модуле 12 кодирования может разделить текущее изображение на набор разделов. Эти разделы могут иметь равный или неравный размер. Например, если модуль 12 кодирования кодирует изображения в наборе видеокадров в соответствии со стандартом MPEG-2, модуль 28 интра предсказания может разделить текущее изображение на разделы, которые имеют 16 пикселей в ширину и 16 пикселей в высоту. В контексте стандарта MPEG-2 эти разделы называются «макроблоки». В другом примере, если модуль 12 кодирования кодирует изображения в наборе видеокадров в соответствии со стандартом AVC/H.264, модуль 28 интра предсказания может разделить текущее изображение на разделы, которые могут иметь размерности 16×16, 16×8, 8×16, 8×8, 4×8, 8×4, и 4×4. Кроме того, если модуль 12 кодирования кодирует изображения в наборе видеокадров в соответствии со стандартом AVC/H.264, модуль 28 интра предсказания может идентифицировать режим внутреннего кодирования для каждого идентифицированного раздела текущего изображения. Например, стандарт AVC/H.264 определяет четыре различных режима внутреннего кодирования для раздела, который имеет шестнадцать пикселей по ширине и шестнадцать пикселей по высоте. Кроме того, стандарт AVC/H.264 определяет девять различных режимов внутреннего кодирования для раздела, который имеет четыре пикселя по ширине и четыре пикселя по высоте. После идентификации разделов текущего изображения модуль 28 интра предсказания может выдать разделы текущего изображения к модулю 44 прямого преобразования. Кроме того, если модуль 12 кодирования кодирует набор изображений в соответствии со стандартом AVC/H.264, модуль 28 интра предсказания может выдать модулю 44 прямого преобразования информацию, которая указывает режим внутреннего кодирования каждого из разделов текущего изображения.
[0051] Кроме того, когда модуль 12 кодирования принимает текущее изображение из источника 8 аудиовизуальной информации, модуль 32 оценки движения в модуле 12 кодирования выполняет оценку движения в отношении текущего изображения. Чтобы выполнить оценку движения в отношении текущего изображения, модуль 32 оценки движения может сначала определить, должно ли текущее изображение быть закодировано как интракодированное изображение или интеркодированное (внешне кодированное) изображение. Если модуль 32 оценки движения определяет, что текущее изображение должно быть закодировано как интракодированное изображение, модуль 32 оценки движения может не выполнять дальнейшее действие. Однако, если модуль 32 оценки движения определяет, что текущее изображение должно быть закодировано как интер кодированное изображение, модуль 32 оценки движения может разделить текущее изображение на набор разделов. Модуль 32 оценки движения может затем сгенерировать данные движения для каждого раздела текущего изображения. Тип данных движения может зависеть от того, должно ли быть текущее изображение закодировано как прогнозирующее изображение ("P-изображение") или как изображение би-прогнозирующее ("B-изображение"). Соответственно, модуль 32 оценки движения может определить, должно ли текущее изображение быть кодировано как P-изображение или как B-изображение.
[0052] Если модуль 32 оценки движения определяет, что текущее изображение должно быть кодировано как P-изображение, модуль оценки движения 32 для каждого раздела текущего изображения может попытаться идентифицировать соответствующую область предыдущего изображения в опорном буфере 36. Если модуль 32 оценки движения успешно идентифицирует область изображения в опорном буфере 36, которая соответствует разделу в текущем изображении, модуль 32 оценки движения может генерировать вектор движения, который указывает вертикальное смещение и горизонтальное смещение между идентифицированной областью и этим разделом. Например, модуль 32 оценки движения может генерировать вектор движения, который указывает, что идентифицированная область находится на 10 пикселей ниже раздела текущего изображения и 2.5 пикселя вправо от раздела текущего изображения.
[0053] Если модуль 32 оценки движения определяет, что текущее изображение должно быть кодировано как B-изображение, модуль оценки движения 32 для каждого раздела текущего изображения может пытаться идентифицировать соответствующую область первого изображения в опорном буфере 36 и соответствующую область второго изображения в опорном буфере 36. Если модуль 12 кодирования кодирует набор видеокадров в соответствии со стандартом MPEG-2, первое изображение предшествует видеокадру, ассоциированному с текущим изображением, и второе изображение следует за видеокадром, ассоциированным с текущим изображением. Модуль 32 оценки движения может затем генерировать данные движения для раздела, которые определяют два вектора движения. Первый из этих векторов движения может указать смещение от идентифицированной области в предыдущем изображении, и второй из этих векторов движения может указать смещение от идентифицированной области последующего изображения. Если модуль 32 оценки движения неуспешно идентифицирует область изображения в опорном буфере 36, которая соответствует разделу текущего изображения, модуль 32 оценки движения может генерировать данные движения, которые указывают, что нет никакого смещения между разделом и эквивалентно расположенной областью предыдущего изображения. Если модуль 12 кодирования кодирует набор видеокадров в соответствии со стандартом AVC/H.264, как первое изображение так и второе изображение могут предшествовать видеокадру или следовать за видеокадром, ассоциированным с текущим изображением, или первое изображение может предшествовать видеокадру, ассоциированному с текущим изображением, а второе изображение может следовать за видеокадром, ассоциированным с текущим изображением. Модуль 32 оценки движения может затем, в зависимости от типа кодирования раздела, генерировать данные движения, которые указывают идентифицированные области в опорных кадрах.
[0054] После того, как модуль 32 оценки движения сформирует данные движения для каждого раздела текущего изображения, модуль 32 оценки движения может выдать данные движения к модулю 34 компенсации движения ("MOTION COMP.MODULE") в модуле 12 кодирования. Модуль 34 компенсации движения может использовать данные движения для разделов текущего изображения, чтобы сгенерировать предсказанное изображение для текущего изображения. Чтобы сгенерировать прогнозирующее изображение для текущего изображения, модуль 34 компенсации движения может определить, кодирует ли модуль 12 кодирования текущее изображение как изображение P- или как B-изображение.
[0055] Если модуль 12 кодирования кодирует текущее изображение как P-изображение, данные движения, ассоциированные с текущим изображением, могут задать один или более векторов движения и одно или более изображений в опорном буфере 30 для каждого раздела текущего изображения. Модуль 34 компенсации движения может извлечь из опорного буфера 36 каждое опорное изображение, указанное данными движения, ассоциированными с текущим изображением. После извлечения опорных изображений из опорного буфера 36 модуль 34 компенсации движения для каждого раздела текущего изображения может использовать векторы движения этого раздела, чтобы идентифицировать соответствующие области в одном или более извлеченных опорных изображений и затем скопировать идентифицированные области в раздел текущего изображения. Таким образом, модуль 34 компенсации движения "перемещает" области из опорных изображений в подходящие местоположения в прогнозирующем изображении, ассоциированном с текущим изображением.
[0056] Если модуль 12 кодирования кодирует текущее изображение как B-изображение, содержимое данных движения, ассоциированных с текущим изображением, может зависеть от стандарта кодирования видео, используемого для кодирования текущего изображения. Например, стандарт MPEG-2 определяет, что данные движения, ассоциированные с "макроблоком" текущего изображения, задают область опорного изображения, которое предшествует видеокадру, ассоциированному с текущим изображением, и задают область опорного изображения, следующего за видеокадром, ассоциированным с текущим изображением. Во втором примере стандарт AVC/H.264 задает, что данные движения, ассоциированные с разделом текущего изображения, могут определить два или более опорных изображений, которые имеют место или до, или после видеокадра, ассоциированного с текущим изображением. В любом примере модуль 76 компенсации движения для каждого раздела предсказанного изображения может интерполировать значения пиксельных компонентов этого раздела на основании областей опорных изображений, указанных данными движения, ассоциированными с разделом.
[0057] После того как модуль 34 компенсации движения генерирует прогнозирующее изображение, ассоциированное с текущим изображением, модуль 38 конструирования остаточного изображения в модуле 12 кодирования может использовать текущее изображение, сгенерированное источником 8 аудиовизуальной информации, и прогнозирующее изображение, сгенерированное модулем 34 компенсации движения, чтобы сгенерировать остаточное изображение, ассоциированное с текущим изображением. Например, модуль 38 конструирования остаточного изображения может генерировать остаточное изображение посредством суммирования отрицательной (безрезультатной) версии прогнозирующего изображения с текущим изображением. Остаточное изображение может содержать меньше информации, чем текущее изображение, и, следовательно, может быть кодировано, используя меньше битов, чем текущее изображение. После того как модуль 38 конструирования остаточного изображения генерирует остаточное изображение для текущего изображения, модуль 38 конструирования остаточного изображения может выдать остаточное изображение к модулю 30 прямого преобразования.
[0058] Когда модуль 30 прямого преобразования принимает остаточное изображение от модуля 38 конструирования остаточного изображения или принимает первоначальную версию текущего изображения с командами интракодирования от модуля 28 интрапредсказания, модуль 30 прямого преобразования может разделить изображение на блоки пикселей. Например, модуль 30 прямого преобразования может разбить изображение на блоки пикселей, каждый из которых может содержать 64 пикселей, в блок 8x8. Модуль 30 прямого преобразования может затем для каждого из блоков пикселей разделять цветовые компоненты пикселей в этом блоке в матрицы значений пиксельных компонентов. Например, модуль 30 прямого преобразования может извлечь матрицу значений Y, матрицу значений Cr, и матрицу значений Cb из блока пикселей. Значения Y могут задавать яркость пикселей, значения Cr могут задавать сигнал цветности «красный» для пикселей минус значения Y, и значения Cb могут задавать сигнал цветности «синий» для пикселей минус значения Y.
[0059] Когда модуль 30 прямого преобразования извлекает матрицы значений пиксельных компонентов, модуль 30 прямого преобразования для каждой из матриц значений пиксельных компонентов может генерировать матрицу коэффициентов посредством применения двумерного прямого дискретного косинусного преобразования к матрице значений пиксельных компонентов. Модуль прямого преобразования 30 может генерировать эту матрицу коэффициентов множеством способов. Например, модуль 30 прямого преобразования может использовать модуль с плавающей запятой в процессоре 20, чтобы сгенерировать матрицу коэффициентов. Модуль прямого преобразования 30 может начать процесс применения дискретного косинусного преобразования посредством смещения влево каждого из значений пиксельных компонентов. Например, модуль 30 прямого преобразования может сдвигать влево каждое из значений пиксельных компонентов на ряд битов точности, удаленных посредством применения дискретных косинусных преобразований, и ряда битов точности, удаленных посредством деления на масштабирующие коэффициенты после применения дискретного косинусного преобразования. Модуль 30 прямого преобразования может выполнить дискретное косинусное преобразование в отношении каждой из вектор-строк матрицы коэффициентов. Выполнение дискретного косинусного преобразования в отношении каждой из вектор-строк матрицы коэффициентов генерирует матрицу промежуточных значений. Затем модуль 30 прямого преобразования может выполнить дискретное косинусное преобразование в отношении каждого из векторов-столбцов матрицы промежуточных значений. Выполнение дискретного косинусного преобразования в отношении каждого из векторов-столбцов матрицы промежуточных значений приводит к матрице значений коэффициентов.
[0060] Когда модуль 30 прямого преобразования генерирует матрицу коэффициентов, модуль 40 квантования в модуле 12 кодирования может генерировать матрицу квантованных коэффициентов посредством квантования коэффициентов в этой матрице коэффициентов. Модуль квантования 46 может квантовать коэффициенты в этой матрице коэффициентов посредством деления каждого коэффициента в матрице коэффициентов на число в эквивалентной позиции в обычной или стандартной матрице квантования и последующего округления получающихся частных для генерирования квантованных коэффициентов. Например, модуль 40 квантования может разделить каждый коэффициент на следующую стандартную матрицу квантования:
После того как модуль 40 квантования квантовал матрицу квантованных коэффициентов, модуль 40 квантования может выдавать матрицу квантованных коэффициентов на модуль 42 статистического кодирования в модуле 12 кодирования и модуль 44 обратного квантования в модуле 12 кодирования.
[0061] После приема матрицы квантованных коэффициентов от модуля 40 квантования модуль 42 статистического кодирования может генерировать набор кодированных аудиовизуальных данных посредством применения схемы статистического кодирования к матрице квантованных коэффициентов. Например, модуль 42 статистического кодирования может применить схемы кодирования по Хаффману или схему контекстно-адаптированного арифметического кодирования к матрице квантованных коэффициентов. Чтобы применить схему статистического кодирования к матрице квантованных коэффициентов, модуль 42 статистического кодирования может генерировать вектор квантованных коэффициентов в матрице квантованных коэффициентов посредством выполнения зигзагообразного сканирования квантованных коэффициентов в матрице квантованных коэффициентов. Другими словами, модуль 42 статистического кодирования может упорядочить все квантованные коэффициенты в двумерной матрице квантованных коэффициентов в одномерный вектор квантованных коэффициентов. Модуль 42 статистического кодирования может затем применить схему кодирования длин серий, такую как кодирование методом Хаффмана или арифметическое кодирование, к вектору квантованных коэффициентов.
[0062] В дополнение к применению схемы статистического кодирования к матрицам квантованных коэффициентов модуль 42 статистического кодирования может применить схему статистического кодирования к данным движения, ассоциированным с разделами видеокадров в последовательности видеокадров. Например, модуль 42 статистического кодирования может применить кодирование по Хаффману или контекстно-адаптированное арифметическое кодирование к данным движения.
[0063] Когда модуль 44 обратного квантования принимает матрицу квантованных коэффициентов от модуля 40 квантования, модуль 44 обратного квантования генерирует матрицу обратно квантованных коэффициентов посредством выполнения операции обратного квантования над матрицей квантованных коэффициентов. Например, модуль 44 обратного квантования может генерировать матрицу обратно квантованных коэффициентов посредством умножения каждого коэффициента в матрице квантованных коэффициентов на число в эквивалентной позиции матрицы квантования, используемой модулем 40 квантования. Поскольку модуль 40 квантования округляет коэффициенты после деления коэффициентов в матрице коэффициентов на числа в матрице квантования, матрица обратно квантованных коэффициентов может не быть идентичной первоначальной матрице коэффициентов. Когда модуль 44 обратного квантования генерирует матрицу обратно квантованных коэффициентов, модуль 44 обратного квантования может выдавать матрицу обратно квантованных коэффициентов к модулю 46 обратного преобразования в модуле 12 кодирования.
[0064] Когда модуль 46 обратного преобразования принимает матрицу обратно квантованных коэффициентов, модуль 46 обратного преобразования генерирует матрицу выходных значений IDCT посредством выполнения IDCT в отношении матрицы обратно квантованных коэффициентов. Когда модуль 46 обратного преобразования сгенерировал матрицу выходных значений IDCT для каждого значения пиксельных компонентов блока пикселей, модуль 46 обратного преобразования может использовать матрицы выходных значений IDCT, чтобы сгенерировать блок пикселей в восстановленном остаточном изображении, ассоциированном с текущим изображением. Когда модуль 46 обратного преобразования восстановил каждый блок пикселей в восстановленном остаточном изображении, ассоциированном с текущим изображением, модуль 46 обратного преобразования может восстановить остаточное изображение посредством комбинирования восстановленных блоков пикселей. Затем модуль 46 обратного преобразования может выдать восстановленное остаточное изображение на модуль 48 реконструкции изображения и модуль 54 обнаружения диапазона.
[0065] Когда модуль 48 реконструкции изображения принимает восстановленное остаточное изображение от модуля 46 обратного преобразования, модуль 48 реконструкции изображения может использовать восстановленное остаточное изображение, сгенерированное модулем 46 обратного преобразования, и предсказанное изображение, сгенерированное модулем 34 компенсации движения, чтобы сгенерировать восстановленную версию текущего изображения. Модуль 48 реконструкции изображения может генерировать восстановленную версию текущего изображения посредством суммирования восстановленного остаточного изображения с предсказанным изображением. После формирования восстановленной версии текущего изображения модуль 48 реконструкции изображения может сохранить восстановленную версию текущего изображения в опорном буфере 36. Таким образом, модуль 34 компенсации движения может использовать восстановленную версию текущего изображения в качестве опорного изображения для других кадров в наборе видеокадров. Использование восстановленных версий изображений, а не первоначальных версий изображений, в качестве опорных изображений может привести к более точным прогнозирующим изображениям.
[0066] Модуль 50 обнаружения диапазона может идентифицировать максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях, ассоциированных с видеокадрами в наборе видеокадров. Для простоты объяснения, настоящее описание может называть выходные значения IDCT в восстановленных остаточных изображениях, ассоциированных с видеокадрами в наборе видеокадров, как «выходные значения IDCT в восстановленных остаточных изображениях». Например, в отсутствие ошибки квантования выходные значения IDCT, ассоциированные с восстановленными остаточными изображениями, могут находиться в пределах диапазона [-256, 255]. Однако из-за ошибки квантования выходные значения IDCT в восстановленных остаточных изображениях могут находиться в пределах диапазона [-1805, 1805]. В этом примере модуль 50 обнаружения диапазона может идентифицировать диапазон [-1805, 1805] как максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях. Дополнительная информация относительно влияния ошибки квантования на максимальные динамические диапазоны выходных значений IDCT может быть найдена в
[1] Zhou M. and De Lameillieure J., "IDCT output range in MPEG video coding", Signal Processing: IMAGE COMMUNICATION, Vol. 11, No. 2, стр. 137-145, декабрь 1997, все содержимое которой включается по ссылке, и
[2] Y. Reznik, "On clipping and dynamic range of variables in IDCT designs", ISO/IEC JTC1/SC29 WGl 1 input document MPEG2006/M14004, Октябрь 2006, Ханчжоу, Китай, все содержимое которой включается по ссылке.
Модуль 50 обнаружения диапазона может идентифицировать максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях множеством способов.
[0067] В первом примере того, как модуль 50 обнаружения диапазона может идентифицировать максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях, модуль 50 обнаружения диапазона после получения восстановленного остаточного изображения, ассоциированного с текущим изображением, от модуля 46 обратного преобразования может идентифицировать самое большое выходное значение IDCT в восстановленном остаточном изображении и самое низкое выходное значение IDCT в остаточном изображении. Модуль 50 обнаружения диапазона может затем определить, больше ли самое большое выходное значение IDCT в восстановленном остаточном изображении, чем ранее наблюдаемое самое большое выходное значение IDCT в восстановленном остаточном изображении, ассоциированное с набором видеокадров. Если модуль 50 обнаружения диапазона определяет, что самое большое выходное значение IDCT в восстановленном остаточном изображении больше, чем ранее наблюдаемое самое большое выходное значение IDCT в восстановленном остаточном изображении, ассоциированном с набором видеокадров, модуль 50 обнаружения диапазона может установить самое большое выходное значение IDCT в наборе видеокадров равным самому большому выходному значению IDCT в восстановленном остаточном изображении. Точно так же модуль 50 обнаружения диапазона может определить, меньше ли самое низкое выходное значение IDCT в восстановленном остаточном изображении, чем ранее наблюдаемое самое низкое выходное значение IDCT в восстановленном остаточном изображении, ассоциированном с набором видеокадров. Если модуль 50 обнаружения диапазона определяет, что самое низкое выходное значение IDCT в восстановленном остаточном изображении меньше, чем ранее наблюдаемое самое низкое выходное значение IDCT в наборе видеокадров, модуль 50 обнаружения диапазона может установить самое низкое выходное значение IDCT в восстановленном остаточном изображении, ассоциированном с набором видеокадров, равным самому низкому значению IDCT в восстановленном остаточном изображении. Таким образом, модуль 50 обнаружения диапазона может идентифицировать самое большое выходное значение IDCT, ассоциированное с набором видеокадров, и самое низкое выходное значение IDCT, ассоциированное с набором видеокадров.
[0068] Во втором примере того как модуль 50 обнаружения диапазона может идентифицировать максимальный динамический диапазон выходных значений IDCT, ассоциированных с восстановленными остаточными изображениями, модуль 50 обнаружения диапазона может принять каждое восстановленное остаточное изображение, ассоциированное с набором видеокадров. После приема каждого восстановленного остаточного изображения, ассоциированного с набором видеокадров, модуль 50 обнаружения диапазона может генерировать временное значение посредством выполнения побитовой операции "ИЛИ" над всеми выходными значениями IDCT в каждом из восстановленных остаточных изображений, ассоциированных с набором видеокадров. Модуль 50 обнаружения диапазона может затем определить количество битов, которые являются менее значимыми, чем старший значащий бит в этом временном значении, который установлен в единицу. Это количество плюс один равно числу битов, требуемых для представления всех выходных значений IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров. Максимальное количество битов, требуемых для представления любого выходного значения IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров, может служить индикатором максимального динамического диапазона значений IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров.
[0069] В третьем примере того как модуль 50 обнаружения диапазона может идентифицировать максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров, модуль 50 обнаружения диапазона может использовать следующую формулу, чтобы вычислить максимальный динамический диапазон выходных значений IDCT, ассоциированных с восстановленными остаточными изображениями, ассоциированными с набором видеокадров:
max
max
Эта формула применима к вектору g входных блоков NxN с его элементами в интервале [a, b] (b>a), и матрица квантованных коэффициентов была квантована и обратно квантована с коэффициентом квантования в диапазоне [0, η], где η - максимальный коэффициент квантования.
[0070] После того как модуль 50 обнаружения диапазона идентифицирует максимальный динамический диапазон выходных значений IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров, модуль 50 обнаружения диапазона может выдать идентифицированный диапазон к модулю 52 генерирования объекта. Модуль 52 генерирования объекта может использовать кодированные наборы аудиовизуальных данных, сгенерированных модулем 42 статистического кодирования, кодированные наборы данных движения, сгенерированные модулем 42 статистического кодирования, и максимальный динамический диапазон выходных значений IDCT, идентифицированный модулем 50 обнаружения диапазона, чтобы сгенерировать объект аудиовизуальной информации. Например, модуль 52 генерирования объекта может генерировать транспортный поток MPEG-2, который указывает кодированные наборы аудиовизуальных данных, кодированные наборы данных движения, и элемент битового потока, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором видеокадров.
[0071] В примере на Фиг.2 модуль 12 кодирования также содержит модуль 54 конфигурирования диапазона ("RANGE CONFIG.MODULE"). Модуль 54 конфигурирования диапазона конфигурирует модуль 12 кодирования, чтобы кодировать набор видеокадров таким образом, что выходные значения IDCT в восстановленных остаточных изображениях, ассоциированных с набором видеокадров, находятся в пределах заданного диапазона выходных значений IDCT. Например, устройство 6 декодирования может принять объект аудиовизуальной информации, сгенерированный устройством 4 кодирования, который включает в себя закодированные данные аудиовизуальной информации, ассоциированные с набором видеокадров. В этом примере устройство 6 декодирования может определить, указывает ли элемент индикации диапазона в объекте аудиовизуальной информации, что выходные значения IDCT, ассоциированные с закодированными аудиовизуальными данными, выходят за пределы заданного диапазона. Например, в этом примере заданный диапазон может быть диапазоном выходных значений IDCT, которые устройство 6 декодирования может сформировать с использованием 16-разрядного цифрового процессора сигналов ("DSP"). Кроме того, в этом примере, если устройство 6 декодирования определяет, что элемент индикации диапазона указывает, что одно или более выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходят за пределы заданного диапазона, устройство 6 декодирования может послать одно или более сообщений в устройство 4 кодирования, указывающих, что одно или более выходных значений IDCT, ассоциированных с закодированными аудиовизуальными данными, выходят за пределы заданного диапазона. Когда коммуникационный интерфейс 14 в устройстве кодирования 4 принимает такие сообщения, модуль 54 конфигурирования диапазона может реконфигурировать модуль кодирования 12, чтобы кодировать набор видеокадров таким образом, что модуль 12 кодирования формирует альтернативный объект аудиовизуальной информации, который включает в себя дополнительный набор аудиовизуальных данных, ассоциированных с тем же самым набором видеокадров. Выходные значения IDCT, ассоциированные с дополнительным набором аудиовизуальных данных, находятся в пределах заданного диапазона выходных значений IDCT, указанных устройством 6 декодирования.
[0072] Модуль 54 конфигурирования диапазона может реконфигурировать модуль 12 кодирования множеством способов. Например, модуль 54 конфигурирования диапазона может вынудить модуль 12 кодирования генерировать новый объект аудиовизуальной информации, который не вынуждает устройство 6 декодирования формировать выходные значения IDCT, которые находятся вне заданного диапазона. Например, модуль 54 конфигурирования диапазона может вынудить модуль 40 квантования генерировать альтернативные матрицы квантованных коэффициентов посредством использования альтернативной матрицы квантования, чтобы квантовать коэффициенты в матрицах коэффициентов, сгенерированных модулем 30 прямого преобразования. После того как модуль 40 квантования сформирует альтернативные матрицы квантованных коэффициентов, модуль 44 обратного квантования может генерировать альтернативные матрицы обратно квантованных коэффициентов посредством использования альтернативной матрицы квантования для обратного квантования квантованных коэффициентов в альтернативных матрицах квантованных коэффициентов. Затем модуль 46 обратного преобразования может генерировать альтернативные остаточные изображения посредством выполнения IDCT над альтернативными матрицами обратно квантованных коэффициентов. Модуль 50 обнаружения диапазона может вычислять новый максимальный динамический диапазон для выходных значений IDCT в альтернативных остаточных изображениях, сгенерированных модулем 50 обратного преобразования. Модуль 42 статистического кодирования может затем выполнять операцию статистического кодирования над дополнительным набором матриц квантованных коэффициентов. Модуль 52 генерирования объекта может затем генерировать альтернативный объект аудиовизуальной информации, который определяет альтернативный набор матриц квантованных коэффициентов, и элемент битового потока, который указывает новый максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором видеокадров. Устройство 4 кодирования может затем посылать альтернативный объект аудиовизуальной информации в устройство 6 декодирования.
[0073] Фиг.3 изображает блок-схему, иллюстрирующую примерные подробности модуля 18 декодирования. Модуль 18 декодирования может содержать модуль 70 статистического декодирования, модуль 72 проверки диапазона, модуль 74 информирования о диапазоне, модуль 76 компенсации движения, модуль 78 обратного квантования, первичный модуль 80 обратного преобразования, вторичный модуль 82 обратного преобразования, модуль 84 реконструкции остатка и модуль 86 реконструкции изображения. Эти модули могут содержать поднаборы программных команд модуля 18 декодирования. Альтернативно, эти модули могут содержать ASIC в процессоре 20. В другой альтернативе эти модули могут содержать программные команды и ASIC.
[0074] Модуль 18 декодирования может принимать объект аудиовизуальной информации, который включает в себя набор кодированных аудиовизуальных данных, набор кодированных данных движения, и элемент индикации диапазона. Набор кодированных аудиовизуальных данных в объекте аудиовизуальной информации ассоциирован с набором видеокадров. Набор кодированных данных движения в объекте аудиовизуальной информации ассоциирован с набором кодированных аудиовизуальных данных. Элемент индикации диапазона в объекте аудиовизуальной информации указывает максимальный динамический диапазон значений пиксельных компонентов в восстановленных остаточных изображениях, ассоциированных с видеокадрами в наборе видеокадров. Как описано выше, настоящее описание ссылается на значения пиксельных компонентов в восстановленных остаточных изображениях на основании кодированных аудиовизуальных данных, ассоциированных с набором видеокадров, как на "выходные значения IDCT, ассоциированные с набором кодированных аудиовизуальных данных".
[0075] Когда модуль 18 декодирования принимает объект аудиовизуальной информации, модуль 72 проверки диапазона может определить, находится ли диапазон выходных значений IDCT, указанных элементом индикации диапазона, в пределах заданного диапазона. В примере на Фиг.3 этот заданный диапазон может быть диапазоном выходных значений IDCT, которые первичный модуль 80 обратного преобразования способен сформировать. Например, элемент индикации диапазона может указать, что выходные значения IDCT, ассоциированные с набором кодированных аудиовизуальных данных, изменяются от -256 до 255. Первичный модуль 80 обратного преобразования использует первую операцию для применения IDCT к матрице обратно квантованных коэффициентов. Если первичный модуль 80 обратного преобразования способен формировать выходные значения IDCT, которые изменяются от -256 до 255, тогда модуль 72 проверки диапазона может определить, что первичный модуль 80 обратного преобразования способен сформировать любое выходное значение IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона. Однако, если элемент индикации диапазона указывает, что выходные значения IDCT, ассоциированные с набором кодированных аудиовизуальных данных, изменяются от -1805 до 1805, модуль 72 проверки диапазона может определить, что первичный модуль 80 обратного преобразования не способен сформировать одно или более выходных значений IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона.
[0076] Может быть множество причин, почему первичный модуль 80 обратного преобразования способен сформировать только ограниченный диапазон выходных значений IDCT посредством выполнения первой операции. Например, первичный модуль 80 обратного преобразования может реализовать алгоритм IDCT, который только способен сформировать выходные значения IDCT, которые могут быть представлены, используя девятибитовый двоичный формат дополнения. Такой алгоритм IDCT может быть выгодным, так как алгоритм IDCT может быть реализован на 16-битовых платформах. Многие современные мобильные телефоны и другие устройства беспроводной связи включают в себя 16-разрядные DSP, которые могут быть в состоянии реализовать этот алгоритм IDCT. Исследование показало, что MPEG-1 и MPEG-2 могут сформировать выходные значения IDCT в диапазоне [-1805, 1805]. Выходные значения IDCT в диапазоне [-1805, 1805] не могут быть представлены в формате девятибитового двоичного дополнения. Вместо этого выходные значения IDCT в диапазоне [-1805, 1805] могут требовать для представления в двенадцатибитовом двоичном формате дополнения. Может быть невозможно реализовать алгоритм IDCT, который генерирует выходные значения IDCT двенадцатибитового двоичного дополнения на 16-разрядной базовой платформе.
[0077] Если модуль 72 проверки диапазона определяет, что первичный модуль 80 обратного преобразования не способен сформировать одно или более выходных значений IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона, модуль 72 проверки диапазона может выполнить множество различных действий.
[0078] В первом примере, когда модуль 72 проверки диапазона определяет, что первичный модуль 80 обратного преобразования не способен сформировать одно или более выходных значений IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона, модуль 72 проверки диапазона может вынудить модуль 74 информирования о диапазоне в модуле 18 декодирования попытаться получить альтернативную версию объекта аудиовизуальной информации. Восстановленные (реконструированные) остаточные изображения, основанные на кодированных аудиовизуальных данных, ассоциированных с видеокадрами, в альтернативной версии объекта аудиовизуальной информации не содержат выходное значение IDCT, которое больше чем или меньше чем самое большое или самое малое выходное значение IDCT, которое первичный модуль 80 обратного преобразования способен сформировать. Чтобы попытаться получить альтернативную версию объекта аудиовизуальной информации, модуль 74 информирования о диапазоне может использовать коммуникационный интерфейс 16, чтобы обмениваться с устройством 4 кодирования. В ответ на этот обмен устройство 4 кодирования может генерировать альтернативную версию объекта аудиовизуальной информации. Устройство 4 кодирования может использовать множество методик, чтобы сгенерировать альтернативную версию объекта аудиовизуальной информации. Например, в примере на Фиг.2 модуль 40 квантования может использовать отличную матрицу квантования при квантовании матриц коэффициентов, сгенерированных модулем 30 прямого преобразования.
[0079] Во втором примере, когда модуль 72 проверки диапазона определяет, что первичный модуль 80 обратного преобразования не способен сформировать одно или более выходных значений IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона, модуль 72 проверки диапазона может вынудить вторичный модуль 82 обратного преобразования сгенерировать выходные значения IDCT, а не первичный модуль 80 обратного преобразования. Вторичный модуль 82 обратного преобразования выполняет вторую операцию для применения IDCT к матрице обратно квантованных коэффициентов. В этом втором примере вторичный модуль 82 обратного преобразования способен сформировать все выходные значения IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона. Однако вторичный модуль 82 обратного преобразования может требовать больше времени и/или потреблять больше электроэнергии, чтобы сгенерировать выходные значения IDCT, чем первичный модуль 80 обратного преобразования.
[0080] Когда модуль 72 проверки диапазона определяет, что первичный модуль 80 обратного преобразования способен сформировать все выходные значения IDCT в диапазоне выходных значений IDCT, указанных элементом индикации диапазона, модуль 70 статистического декодирования может применить схему статистического декодирования к набору кодированных аудиовизуальных данных в объекте аудиовизуальной информации. В результате применения схемы статистического декодирования к набору кодированных аудиовизуальных данных модуль 70 статистического декодирования генерирует набор матриц квантованных коэффициентов, ассоциированных с одним или более изображениями. Кроме того, модуль 70 статистического декодирования может применить схему статистического декодирования к набору кодированных данных движения в объекте аудиовизуальной информации. В результате применения схемы статистического декодирования к набору кодированных данных движения модуль 70 статистического декодирования генерирует данные движения для каждого раздела одного или более изображений, ассоциированных с набором видеокадров. После того как модуль 70 статистического декодирования генерирует набор матриц квантованных коэффициентов, ассоциированных с изображением, модуль 70 статистического декодирования может выдать набор матриц квантованных коэффициентов, ассоциированных с изображением, к первичному модулю 80 обратного преобразования и может выдать данные движения, ассоциированные с изображением, к модулю 76 компенсации движения.
[0081] Когда модуль 76 компенсации движения принимает набор данных движения, ассоциированных с текущим изображением, модуль 76 компенсации движения определяет, кодировано ли текущее изображение как I-изображение, P-изображение или B-изображение. Если текущее изображение кодировано как I-изображение, модуль 76 компенсации движения может генерировать "восстановленное предсказанное изображение", в котором каждое значение пиксельных компонентов равно нулю.
[0082] Если текущее изображение кодировано как P-изображение, данные движения, ассоциированные с текущим изображением, могут включать в себя вектор движения для каждого раздела текущего изображения. Как описано выше, вектор движения, ассоциированный с разделом текущего изображения, может указывать опорное изображение и смещение между областью в указанном опорном изображении и разделом текущего изображения. Когда модуль 76 компенсации движения определяет, что текущее изображение является кодированным P-изображением, модуль 76 компенсации движения может извлечь из опорного буфера 90 каждое из изображений, указанных векторами движения в наборе данных движения, ассоциированных с текущим изображением. После извлечения опорных изображений модуль 76 компенсации движения может использовать опорные изображения и векторы движения, чтобы сгенерировать предсказанное изображение, ассоциированное с текущим изображением. Предсказанное изображение имеет разделы, которые являются теми же самыми, что разделы текущего изображения. Чтобы сгенерировать предсказанное изображение, ассоциированное с текущим изображением, модуль 76 компенсации движения для каждого раздела предсказанного изображения может скопировать область опорного изображения, указанную вектором движения, ассоциированным с соответствующим разделом текущего изображения, в раздел предсказанного изображения.
[0083] Если текущее изображение кодировано как B- изображение, контент данных движения, ассоциированных с текущим изображением, может зависеть от стандарта кодирования видео, используемого для кодирования текущего изображения. Например, стандарт MPEG-2 определяет, что данные движения, ассоциированные с "макроблоком" текущего изображения, определяют область опорного изображения, которая предшествует видеокадру, ассоциированному с текущим изображением, и определяет область опорного изображения, которое следует за видеокадром, ассоциированным с текущим изображением. Во втором примере стандарт AVC/H.264 определяет, что данные движения, ассоциированные с разделом текущего изображения, могут задавать два или более опорных изображений, которые имеют место или до, или после видеокадра, ассоциированного с текущим изображением. В любом примере модуль 76 компенсации движения для каждого раздела предсказанного изображения может интерполировать значения пиксельных компонентов раздела на основании областей опорных кадров, указанных данными движения, ассоциированными с этим разделом.
[0084] Когда модуль 78 обратного квантования принимает матрицы квантованных коэффициентов от модуля 70 статистического декодирования, модуль 78 обратного квантования может генерировать набор матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением, посредством выполнения операции обратного квантования в отношении каждой из матриц квантованных коэффициентов, ассоциированных с текущим изображением. Модуль 78 обратного квантования может выполнить обратную операцию квантования в отношении коэффициентов в матрице квантованных коэффициентов посредством умножения каждого из коэффициентов в матрице квантованных коэффициентов на значения в эквивалентных позициях в матрице квантования.
[0085] Первичный модуль 80 обратного преобразования может применить IDCT к каждой из матриц, чтобы сгенерировать матрицы значений пиксельных компонентов. Первичный модуль 80 обратного преобразования может использовать множество различных алгоритмов, чтобы применить IDCT к матрице обратно квантованных коэффициентов. Например, если матрица обратно квантованных коэффициентов является матрицей 8x8, первичный модуль 80 обратного преобразования может генерировать матрицу промежуточных коэффициентов посредством применения одномерного IDCT с 8 точками к каждому вектору-строке матрицы обратно квантованных коэффициентов. В этом случае первичный модуль 80 обратного преобразования может затем сгенерировать матрицу выходных значений IDCT посредством применения одномерного IDCT с 8 точками к каждому вектору-столбцу матрицы промежуточных коэффициентов. В другом случае первичный модуль 80 обратного преобразования может генерировать матрицу выходных значений IDCT посредством применения двумерного IDCT к матрице обратно квантованных коэффициентов.
[0086] После того как первичный модуль 80 обратного преобразования или вторичный модуль 82 обратного преобразования генерирует матрицу выходных значений IDCT, ассоциированных с текущим изображением, модуль 84 реконструкции остатка может использовать матрицу выходных значений IDCT, чтобы сгенерировать восстановленное остаточное изображение, ассоциированное с текущим изображением. Модуль 84 реконструкции остатка может генерировать восстановленное остаточное изображение множеством способов. Например, модуль 84 реконструкции остатка может генерировать блок пикселей посредством комбинирования матрицы выходных значений IDCT с другими матрицами выходных значений IDCT, ассоциированными с эквивалентными позициями текущего изображения. В этом примере модуль 84 реконструкции остатка может принять матрицу выходных значений IDCT, которые представляют значения яркости, матрицу выходных значений IDCT, которые представляют значения Cb цвета, и матрицу выходных значений IDCT, которая представляет значения Cr цвета. В этом примере модуль 84 реконструкции остатка может комбинировать эти матрицы выходных значений IDCT, чтобы создать блок пикселей. Когда модуль 84 реконструкции остатка завершает генерирование блока пикселей, ассоциированного с текущим изображением, модуль 84 реконструкции остатка может буферизовать блок пикселей, пока модуль 84 реконструкции остатка не сгенерирует каждый блок пикселей, ассоциированный с текущим изображением. После того как модуль 84 реконструкции остатка сгенерировал каждый блок пикселей, ассоциированный с текущим изображением, модуль 84 реконструкции остатка может объединить блоки пикселей, ассоциированные с текущим изображением, чтобы сформировать восстановленное остаточное изображение, ассоциированное с текущим изображением.
[0087] Модуль 86 реконструкции изображения в модуле 18 декодирования использует восстановленное остаточное изображение, ассоциированное с текущим изображением и предсказанным изображением, ассоциированным с текущим изображением, чтобы сгенерировать восстановленную версию текущего изображения. Модуль 86 реконструкции изображения может использовать восстановленное остаточное изображение, ассоциированное с текущим изображением, и предсказанное изображение, ассоциированное с текущим изображением, чтобы сгенерировать восстановленную версию текущего изображения множеством способов. Например, модуль 86 реконструкции изображения может генерировать восстановленную версию текущего изображения посредством суммирования каждого значения пиксельных компонентов в восстановленном остаточном изображении с эквивалентно позиционированным значением пиксельного компонента в предсказанном изображении. После того как модуль 86 реконструкции изображения сформирует восстановленную версию текущего изображения, модуль 86 реконструкции изображения может сохранить восстановленную версию текущего изображения в опорном буфере 90 так, чтобы модуль 76 компенсации движения мог использовать восстановленную версию текущего изображения как опорное изображение при выполнении компенсации движения для других изображений, ассоциированных с набором видеокадров.
[0088] Фиг.4 - последовательность операций, иллюстрирующая примерную работу модуля 12 кодирования (Фиг.2). Сначала модуль 12 кодирования принимает текущее изображение, ассоциированное с некодированным видеокадром в наборе видеокадров, из источника 8 аудиовизуальной информации (100). Когда модуль 12 кодирования принимает текущее изображение, модуль 32 оценки движения может генерировать данные движения для текущего изображения посредством выполнения операции (102) оценки движения. Например, если модуль 12 кодирования кодирует текущее изображение как P-изображение, модуль 32 оценки движения может генерировать вектор движения для каждого раздела текущего изображения. После того как модуль 32 оценки движения сформирует данные движения для текущего изображения, модуль 34 компенсации движения может использовать данные движения, чтобы выполнить операцию компенсации движения, которая генерирует предсказанное изображение, ассоциированное с текущим изображением (104). Затем модуль 38 конструирования остаточного изображения может использовать предсказанное изображение, сгенерированное модулем 34 компенсации движения, и первоначальное текущее изображение, чтобы сгенерировать остаточное изображение, ассоциированное с текущим изображением (106).
[0089] Модуль 30 прямого преобразования может затем сформировать набор матриц преобразованных коэффициентов, ассоциированных с текущим изображением (108). Модуль 30 прямого преобразования может генерировать набор матриц преобразованных коэффициентов, ассоциированных с текущим изображением, множеством способов в зависимости от того, кодирует ли модуль 12 кодирования текущее изображение как интракодированное изображение или как интеркодированное изображение. Например, если модуль 12 кодирования кодирует текущее изображение как интракодированное изображение, модуль 30 прямого преобразования может применить прямое DCT к каждому разделу первоначального текущего изображения. Если модуль 12 кодирования кодирует текущее изображение как интеркодированное изображение, модуль 30 прямого преобразования, может применить прямое DCT к каждому разделу остаточного изображения, ассоциированному с текущим изображением.
[0090] После того как модуль 30 прямого преобразования сформирует матрицы преобразованных коэффициентов, ассоциированные с текущим изображением, модуль 40 квантования генерирует набор матриц квантованных коэффициентов, ассоциированных с текущим изображением, посредством квантования коэффициентов в матрицах преобразованных коэффициентов, ассоциированных с текущим изображением (110). Модуль 42 статистического кодирования может затем выполнять операцию статистического кодирования в отношении набора матриц квантованных коэффициентов, ассоциированных с текущим изображением, и набора данных движения, ассоциированных с текущим изображением (112). Затем модуль 44 обратного квантования генерирует набор матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением, посредством обратного квантования квантованных коэффициентов в матрицах квантованных коэффициентов, ассоциированных с текущим изображением (114). После формирования матриц обратно квантованных коэффициентов модуль 46 обратного преобразования генерирует матрицы выходных значений IDCT, ассоциированных с текущим изображением, посредством применения IDCT к обратно квантованным коэффициентам в матрицах обратно квантованных коэффициентов, ассоциированных с текущим изображением (116).
[0091] После того как модуль 46 обратного преобразования сформирует матрицы выходных значений IDCT, модуль 50 обнаружения диапазона может определить, является ли текущее изображение последним изображением, ассоциированным с набором видеокадров (118). Если модуль 50 обнаружения диапазона определяет, что текущее изображение не является последним изображением, ассоциированным с набором видеокадров ("НЕТ" 118), модуль 12 кодирования может принять другое изображение, ассоциированное с набором видеокадров (100). Иначе, если модуль 50 обнаружения диапазона определяет, что текущее изображение - последнее изображение, ассоциированное с набором видеокадров ("ДА" 118), модуль 50 обнаружения диапазона может вычислить максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором видеокадров (120). После того как модуль 50 обнаружения диапазона вычисляет максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором видеокадров, модуль 52 генерирования объекта может генерировать объект аудиовизуальной информации, который включает в себя статистически кодированные матрицы квантованных коэффициентов, ассоциированные с набором видеокадров, статистически кодированные наборы данных движения, ассоциированные с набором видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, ассоциированных с набором видеокадров (122). Коммуникационный интерфейс 14, может затем выдавать объект (124) аудиовизуальной информации.
[0092] Фиг.5 изображает последовательность операций, иллюстрирующую примерную работу модуля 18 декодирования. Первоначально модуль 18 декодирования принимает объект аудиовизуальной информации, который включает в себя набор кодированных аудиовизуальных данных, ассоциированных с набором видеокадров, наборы кодированных данных движения, ассоциированные с набором видеокадров, и элемент индикации диапазона (130). После того как модуль 18 декодирования принимает объект аудиовизуальной информации, модуль 72 проверки диапазона извлекает элемент индикации диапазона из объекта (132) аудиовизуальной информации. Модуль 72 проверки диапазона может затем определить, включает ли в себя диапазон выходных значений IDCT, указанный элементом индикации диапазона, выходное значение IDCT, которое находится вне заданного диапазона (134). Например, модуль 72 проверки диапазона может определить, больше ли диапазон выходных значений IDCT, указанный элементом индикации диапазона, чем диапазон выходных значений IDCT, который первичный модуль 80 обратного преобразования способен сформировать. Если модуль 72 проверки диапазона может определить, больше ли диапазон выходных значений IDCT, указанный элементом индикации диапазона, чем диапазон выходных значений IDCT, который первичный модуль 80 обратного преобразования способен сформировать. Если модуль 72 проверки диапазона определяет, что диапазон выходных значений IDCT, указанный элементом индикации диапазона, включают в себя выходное значение IDCT, которое находится вне заданного диапазона ("ДА" 134), модуль 74 информирования о диапазоне, в одной примерной реализации, может послать запрос на альтернативную версию объекта аудиовизуальной информации к устройству 4 кодирования (136). Когда модуль 74 информирования о диапазоне запрашивает альтернативную версию объекта аудиовизуальной информации, модуль 74 информирования о диапазоне может генерировать элемент индикации диапазона, который указывает максимальный динамический диапазон выходных значений IDCT, который первичный модуль 80 обратного преобразования способен сформировать. После посылки запроса альтернативной версии объекта аудиовизуальной информации коммуникационный интерфейс 16 может принять альтернативную версию объекта (137) аудиовизуальной информации.
[0093] С другой стороны, если модуль 72 проверки диапазона определяет, что диапазон выходных значений IDCT, указанный элементом индикации диапазона, не включает в себя выходное значение IDCT, которое находится вне заданного диапазона ("НЕТ" 134), модуль 70 статистического декодирования в модуле декодирования 18 может выполнить процесс статистического декодирования в отношении набора кодированных аудиовизуальных данных и набора данных движения в объекте (138) аудиовизуальной информации. Модуль 70 статистического декодирования может выполнить процесс статистического декодирования, который эквивалентен процессу статистического кодирования, используемому для кодирования данных аудиовизуальной информации. Например, если модуль 42 статистического кодирования использует кодирование по Хаффману, чтобы закодировать данные аудиовизуальной информации, модуль 70 статистического декодирования использует декодирование по Хаффману, чтобы декодировать изображение. В результате применения процесса статистического декодирования к каждому набору кодированных аудиовизуальных данных модуль 70 статистического декодирования формирует набор матриц квантованных коэффициентов, ассоциированных с изображениями, ассоциированными с видеокадрами в наборе видеокадров.
[0094] После того как модуль 70 статистического декодирования выполняет операцию статистического декодирования в отношении данных движения, модуль 76 компенсации движения в модуле 18 декодирования может использовать эти данные движения, чтобы выполнить операцию компенсации движения, таким образом генерируя предсказанное изображение, ассоциированное с текущим изображением (140).
[0095] Затем или параллельно с модулем 76 компенсации движения модуль 78 обратного квантования в модуле 18 декодирования может генерировать набор матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением, ассоциированным с набором видеокадров, посредством применения операции обратного квантования к матрицам квантованных коэффициентов, ассоциированных с текущим изображением (142). Модуль 78 обратного квантования может выполнять обратное квантование матрицы квантованных коэффициентов посредством умножения квантованных коэффициентов на числа, ассоциированные с соответствующими позициями матрицы квантования. Например, если квантованный коэффициент в позиции (0,0) матрицы квантованных коэффициентов равен -26 и число в позиции (0,0) матрицы квантования равно 16, обратный квантованный коэффициент в позиции (0,0) матрицы обратно квантованных коэффициентов равен -416 (то есть, -26 · 16 = - 416). Следует заметить в этом примере разницу между исходным коэффициентом -415 (то есть, округление (-415/16) = -26) и получившимся коэффициентом -416. Эта разность есть «ошибка квантования».
[0096] После того как модуль 78 обратного квантования генерирует матрицы обратно квантованных коэффициентов, ассоциированных с текущим изображением, первичный модуль 80 обратного преобразования генерирует набор матриц выходных значений IDCT, ассоциированных с текущим изображением, посредством применения IDCT к набору матриц обратно квантованных коэффициентов (144). Затем модуль 84 реконструкции остатка использует набор матриц выходных значений IDCT, ассоциированных с текущим изображением, чтобы сгенерировать восстановленное остаточное изображение, ассоциированное с текущим изображением (146). После того как модуль 84 реконструкции остатка генерирует восстановленное остаточное изображение, ассоциированное с текущим изображением, модуль 86 реконструкции изображения использует восстановленное остаточное изображение и предсказанное изображение, ассоциированные с текущим изображением, чтобы сгенерировать восстановленную версию текущего изображения (148). Как только модуль 86 реконструкции изображения сформирует восстановленную версию текущего изображения, формирователь 22 представления может вынудить модуль 24 представления аудиовизуальной информации отображать восстановленную версию текущего изображения (150).
[0097] Если текущее изображение не является последним изображением, ассоциированным с набором видеокадров ("ДА" 152), модуль 76 компенсации движения выполняет операцию компенсации движения в отношении изображения, ассоциированного с набором видеокадров, которое следует за текущим изображением, и так далее (140). С другой стороны, если текущее изображение является последним изображением, ассоциированным с набором видеокадров ("НЕТ" 152), модуль 18 декодирования завершает декодирование набора видеокадров (154).
[0098] Фиг.6 - последовательность операций, иллюстрирующая альтернативную примерную работу модуля 12 кодирования. Сначала коммуникационный интерфейс 14 в устройстве кодирования 4 принимает запрос об объекте аудиовизуальной информации от устройства 6 декодирования (170). Коммуникационный интерфейс 14 может принять этот запрос вместе с элементом индикации диапазона, который указывает заданный диапазон. Например, коммуникационный интерфейс 14 может принять элемент индикации диапазона от устройства 6 декодирования, который указывает максимальный динамический диапазон выходных значений IDCT, который модуль декодирования в устройстве 6 декодирования способен сформировать.
[0099] Когда коммуникационный интерфейс 14 принимает запрос об объекте аудиовизуальной информации, модуль 54 конфигурирования диапазона может конфигурировать модуль кодирования 12, чтобы сформировать требуемый объект (172) аудиовизуальной информации. Например, если коммуникационный интерфейс 14 принял элемент индикации диапазона от устройства 6 декодирования, модуль 54 конфигурирования диапазона может конфигурировать модуль кодирования 12, чтобы сформировать объект аудиовизуальной информации, в котором выходные значения IDCT, ассоциированные с закодированными аудиовизуальными данными в объекте аудиовизуальной информации, не выходят за пределы диапазона, указанного элементом индикации диапазона, принятым от устройства 6 декодирования. Как описано выше, модуль 54 конфигурирования диапазона может конфигурировать модуль 12 кодирования множеством способов, включая конфигурирование матриц квантования, используемых модулем 40 квантования и модулем 44 обратного квантования.
[00100] После того как модуль 54 конфигурирования диапазона конфигурирует модуль 12 кодирования, модуль 12 кодирования может генерировать требуемый объект аудиовизуальной информации. Как иллюстрируется в примерной операции на Фиг.6, модуль 12 кодирования может генерировать требуемый объект аудиовизуальной информации посредством использования модуля 32 оценки движения, чтобы сгенерировать данные движения для текущего изображения, ассоциированного с набором видеокадров требуемого объекта (174) аудиовизуальной информации. Модуль 34 компенсации движения может затем сгенерировать предсказанное изображение, ассоциированное с текущим изображением (176). Затем модуль 38 конструирования остаточного изображения может использовать предсказанное изображение и текущее изображение, чтобы сгенерировать остаточное изображение, ассоциированное с текущим изображением (178). После того как модуль 38 конструирования остаточного изображения сформирует остаточное изображение, модуль 30 прямого преобразования генерирует матрицы преобразованных коэффициентов, ассоциированных с набором видеокадров, по меньшей мере частично, посредством выполнения прямого дискретного косинусного преобразования в отношении значений пиксельных компонентов в остаточных изображениях (179). Модуль 40 квантования может затем сгенерировать набор матриц квантованных коэффициентов, ассоциированных с текущим изображением (180). Модуль 40 квантования может генерировать набор матриц квантованных коэффициентов, ассоциированных с текущим изображением, посредством использования матрицы квантования, чтобы квантовать коэффициенты в матрицах преобразованных коэффициентов, ассоциированных с текущим изображением, которые были ранее сгенерированы модулем 30 прямого преобразования. Модуль 42 статистического кодирования может затем выполнить операцию статистического кодирования в отношении матриц квантованных коэффициентов (182).
[00101] Кроме того, модуль 44 обратного квантования может генерировать набор матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением (184). Модуль 46 обратного преобразования может затем сгенерировать набор выходных значений IDCT, ассоциированных с текущим изображением, посредством применения IDCT к набору матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением (186).
[00102] После того как модуль 46 обратного преобразования сформировал альтернативный набор матриц квантованных коэффициентов, ассоциированных с текущим изображением, модуль 50 обнаружения диапазона может определить, является ли текущее изображение последним изображением, ассоциированным с набором видеокадров (188). Если текущее изображение не является последним изображением, ассоциированным с набором видеокадров ("НЕТ" 188), модуль 40 квантования может генерировать данные движения для другого изображения, ассоциированного с набором видеокадров, в требуемом объекте аудиовизуальной информации, и так далее (174). С другой стороны, если текущее изображение - последнее изображение, ассоциированное с набором видеокадров ("ДА" 188), модуль 50 обнаружения диапазона может вычислить диапазон выходных значений IDCT, сгенерированных модулем 46 обратного преобразования для набора видеокадров (190). Модуль 52 генерирования объекта может затем генерировать объект аудиовизуальной информации, который включает в себя статистически кодированные наборы квантованных коэффициентов, ассоциированные с набором видеокадров, статистически кодированные наборы данных движения, ассоциированные с набором видеокадров, и элемент индикации диапазона, который указывает максимальный динамический диапазон альтернативных наборов выходных значений IDCT, ассоциированных с набором видеокадров (192). Затем коммуникационный интерфейс 14 может вывести объект (194) аудиовизуальной информации.
[00103] Фиг.7 представляет последовательность операций, иллюстрирующую альтернативную примерную работу примерного модуля декодирования, иллюстрируемого на фиг.3. Сначала модуль 18 декодирования принимает объект аудиовизуальной информации, который включает в себя набор кодированных аудиовизуальных данных, ассоциированных с набором видеокадров, наборы закодированных данных движения, ассоциированные с набором видеокадров, и элемент индикации диапазона (200). После того как модуль 18 декодирования принимает объект аудиовизуальной информации, модуль 72 проверки диапазона извлекает элемент индикации диапазона из объекта (202) аудиовизуальной информации. Затем модуль 70 статистического декодирования в модуле 18 декодирования может выполнить процесс статистического декодирования в отношении набора кодированных аудиовизуальных данных и набора данных движения в объекте (204) аудиовизуальной информации. Модуль 70 статистического декодирования может выполнить процесс статистического декодирования, который эквивалентен процессу статистического кодирования, используемого для кодирования данных аудиовизуальной информации. Например, если модуль 42 статистического кодирования использует кодирование по Хаффману, чтобы закодировать данные аудиовизуальной информации, модуль 70 статистического декодирования использует декодирование по Хаффману, чтобы декодировать изображение. В результате применения процесса статистического декодирования к каждому набору кодированных аудиовизуальных данных модуль 70 статистического декодирования формирует набор матриц квантованных коэффициентов, ассоциированных с изображениями, ассоциированными с видеокадрами в наборе видеокадров.
[00104] После того как модуль 70 статистического декодирования выполняет операцию статистического декодирования в отношении кодированных аудиовизуальных данных и данных движения, модуль 76 компенсации движения в модуле 18 декодирования может использовать данные движения, чтобы выполнить операцию компенсации движения, таким образом генерируя предсказанное изображение, ассоциированное с текущим изображением (206). Затем или параллельно с модулем 76 компенсации движения модуль 78 обратного квантования в модуле 18 декодирования может генерировать набор матриц обратно квантованных коэффициентов, ассоциированных с текущим изображением, ассоциированным с набором видеокадров, посредством применения операции обратного квантования к матрицам квантованных коэффициентов, ассоциированных с текущим изображением (208).
[00105] После того как модуль 78 обратного квантования генерирует матрицы обратно квантованных коэффициентов, ассоциированных с текущим изображением, модуль 72 проверки диапазона может определить, включает ли в себя диапазон выходных значений IDCT, указанный элементом индикации диапазона, выходное значение IDCT, которое находится вне заданного диапазона (210). Если модуль 72 проверки диапазона определяет, что диапазон выходных значений IDCT, указанный элементом индикации диапазона, не включают в себя выходное значение IDCT, которое находится вне заданного диапазона ("НЕТ" 210), первичный модуль 80 обратного преобразования может использовать первую операцию, чтобы сгенерировать набор матриц выходных значений IDCT, ассоциированных с текущим изображением, посредством применения IDCT к набору матриц обратно квантованных коэффициентов (212). Иначе, если модуль 72 проверки диапазона определяет, что диапазон выходных значений IDCT, указанный элементом индикации диапазона, включают в себя выходное значение IDCT, которое находится вне заданного диапазона ("ДА" 210), вторичный модуль 82 обратного преобразования может использовать вторую операцию, чтобы сгенерировать набор матриц выходных значений IDCT, ассоциированных с текущим изображением, посредством применения IDCT к набору матриц обратно квантованных коэффициентов (214).
[00106] После того как или первичный модуль 80 обратного преобразования или вторичный модуль 82 обратного преобразования сформирует набор матриц выходных значений IDCT, модуль 84 реконструкции (восстановления) остатка использует набор матриц выходных значений IDCT, ассоциированных с текущим изображением, чтобы сгенерировать восстановленное остаточное изображение, ассоциированное с текущим изображением (216). После того как модуль 84 реконструкции остатка сформирует восстановленное остаточное изображение, ассоциированное с текущим изображением, модуль 86 реконструкции изображения использует восстановленное остаточное изображение и предсказанное изображение, ассоциированные с текущим изображением, чтобы сгенерировать восстановленную версию текущего изображения (218). Как только модуль 86 реконструкции изображения генерирует восстановленную версию текущего изображения, формирователь 22 представления может вынудить модуль 24 представления аудиовизуальной информации отображать восстановленную версию текущего изображения (220).
[00107] Если текущее изображение не является последним изображением, ассоциированным с набором видеокадров ("ДА" 222), модуль 76 компенсации движения выполняет операцию компенсации движения в отношении изображения, ассоциированного с набором видеокадров, который следует за текущим изображением, и так далее (206). С другой стороны, если текущее изображение - последнее изображение, ассоциированное с набором видеокадров ("НЕТ" 222), модуль 18 декодирования завершает декодирование набора видеокадров (224).
[00108] Способы, описанные здесь, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в интегральной схеме, или интегрированном логическом устройстве, или отдельно как дискретные, но взаимодействующие логические устройства. Если реализуются в программном обеспечении, способы могут быть реализованы, по меньшей мере частично, считываемым компьютером носителем, содержащим команды, которые, когда исполняются, выполняют один или более способов, описанных выше. Считываемый компьютером носитель может быть частью компьютерного программного продукта, который может включать в себя упаковочные материалы. Считываемый компьютером носитель может содержать ОЗУ (оперативную память), такую как синхронное динамическое ОЗУ (SDRAM), ПЗУ (ROM), энергонезависимое ОЗУ (NVRAM), электрически стираемое ППЗУ (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Способы дополнительно или альтернативно могут быть реализованы, по меньшей мере частично, считываемым компьютером коммуникационным носителем, который несет или передает код в форме команд или структур данных и который может быть доступен, считан и/или выполнен компьютером.
[00109] Код может быть выполнен одним или более процессорами, такими как один или более цифровых процессоров сигналов (DSP), микропроцессор общего назначения, специализированные для приложения интегральные схемы (ASICs), программируемые пользователем логические матрицы (FPGA), или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в выделенных программных модулях или модулях аппаратного обеспечения, конфигурированных для кодирования и декодирования или встроенных в комбинированный видеокодер/декодер (кодек).
[00110] Были описаны различные примеры. Эти и другие примеры попадают в рамки нижеследующей формулы изобретения.