СПОСОБ, УСТРОЙСТВО И СИСТЕМА ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ КАРТЫ ЗНАЧИМОСТИ ДЛЯ ОСТАТОЧНЫХ КОЭФФИЦИЕНТОВ ЕДИНИЦЫ ПРЕОБРАЗОВАНИЯ
METHOD, APPARATUS AND SYSTEM FOR ENCODING AND DECODING SIGNIFICANCE MAP FOR RESIDUAL COEFFICIENTS OF TRANSFORMATION UNIT

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Настоящее изобретение, в общем, относится к обработке цифровых видеосигналов, и, в частности, к способу, устройству и системе для кодирования и декодирования остаточных коэффициентов единицы преобразования (TU), при этом единица преобразования (TU) может иметь квадратную форму или неквадратную форму.
УРОВЕНЬ ТЕХНИКИ
[0002] В настоящее время предусмотрено множество вариантов применения для кодирования видео, включающих в себя варианты применения для передачи и хранения видеоданных. Также разработано множество стандартов кодирования видео, и другие в данный момент разрабатываются. Новейшие разработки в стандартизации кодирования видео привели к образованию группы, называемой "Объединенной группой для совместной работы над видеостандартами" (JCT-VC). Объединенная группа для совместной работы над видеостандартами (JCT-VC) включает в себя членов Исследовательской группы 16, проблема 6 (SG16/Q6) Сектора стандартизации электросвязи (ITU-T) Международного союза по телекоммуникациям (ITU), известной как Экспертная группа в области кодирования видео (VCEG), и членов Объединенного технического комитета 1/Подкомитета 29/Рабочей группы 1 Международной организации по стандартизации/Международной электротехнической комиссии (ISO/IEC JTC1/SC29/WG11), также известной как Экспертная группа по киноизображению (MPEG).
[0003] Объединенная группа для совместной работы над видеостандартами (JCT-VC) имеет цель создания нового стандарта кодирования видео, который должен существенно превосходить текущий существующий стандарт кодирования видео, известный как "H.264/MPEG-4 AVC". Стандарт H.264/MPEG-4 AVC представляет собой существенное улучшение по сравнению с предыдущими стандартами кодирования видео, такими как ITU-T H.263 и MPEG-4. Новый разрабатываемый стандарт кодирования видео назван "стандартом высокоэффективного кодирования видео (HEVC)". Объединенная группа для совместной работы над видеостандартами (JCT-VC) также рассматривает сложности реализации, возникающие в результате применения технологии, предложенной для стандарта высокоэффективного кодирования видео (HEVC), которые создают трудности при масштабировании реализаций стандарта таким образом, чтобы работать при высоких разрешениях или высоких частотах кадров.
[0004] Одна область стандарта кодирования видео H.264/MPEG-4 AVC, которая представляет трудности для достижения высокой эффективности сжатия, представляет собой кодирование остаточных коэффициентов, используемых для того, чтобы представлять видеоданные. Видеоданные формируются посредством последовательности кадров, при этом каждый кадр имеет двумерный массив выборок. Типично, кадры включают в себя один канал сигнала яркости и два канала сигнала цветности. Каждый кадр разлагается на массив наибольших единиц кодирования (LCU). Наибольшие единицы кодирования (LCU) имеют фиксированный размер, при этом краевые размеры составляют степень двух и имеют равную ширину и высоту, к примеру, 64 выборки сигнала яркости. Дерево кодирования предоставляет подразделение каждой наибольшей единицы кодирования (LCU) на четыре единицы кодирования (CU), имеющие половину ширины и высоты родительской наибольшей единицы кодирования (LCU). Каждая из единиц кодирования (CU) дополнительно может подразделяться на четыре единицы кодирования (CU) одинакового размера. Такой процесс подразделения может применяться рекурсивно до тех пор, пока не будет достигнут размер наименьшей единицы кодирования (SCU), обеспечивая возможность задания единиц кодирования (CU) вплоть до минимального поддерживаемого размера. Рекурсивное подразделение наибольшей единицы кодирования на иерархию единиц кодирования упоминается, имеет структуру в виде дерева квадрантов и упоминается в качестве дерева кодирования. Этот процесс подразделения кодируется в потоке битов связи в качестве последовательности флагов, кодированных в качестве ячеек (бинов). Следовательно, единицы кодирования имеют квадратную форму.
[0005] В дереве кодирования предусмотрен набор единиц кодирования, которые дополнительно не подразделяются, занимающих концевые узлы дерева кодирования. Деревья преобразования существуют в этих единицах кодирования. Дерево преобразования дополнительно может разлагать единицу кодирования с использованием структуры в виде дерева квадрантов, используемой для дерева кодирования. В концевых узлах дерева преобразования, остаточные данные кодируются с использованием единиц преобразования (TU). В отличие от дерева кодирования, дерево преобразования может подразделять единицы кодирования на единицы преобразования, имеющие неквадратную форму. Дополнительно, структура дерева преобразования не требует, чтобы единицы преобразования (TU) занимали всю область, предоставленную посредством родительской единицы кодирования.
[0006] Каждая единица кодирования в концевых узлах деревьев кодирования подразделяется на один или более массивов выборок прогнозированных данных, каждый из которых известен как единица прогнозирования (PU). Каждая единица прогнозирования (PU) содержит прогнозирование части входных данных видеокадров, извлекаемых посредством применения процесса внутреннего прогнозирования или внешнего прогнозирования. Несколько способов могут быть использованы для кодирования единиц прогнозирования (PU) в единице кодирования (CU). Одна единица прогнозирования (PU) может занимать всю область единицы кодирования (CU), либо единица кодирования (CU) может разбиваться на две прямоугольных единицы прогнозирования (PU) одинакового размера, горизонтально или вертикально. Дополнительно, единицы кодирования (CU) могут разбиваться на четыре квадратных единицы прогнозирования (PU) одинакового размера.
[0007] Видеокодер сжимает видеоданные в поток битов посредством преобразования видеоданных в последовательность элементов синтаксиса. Схема контекстно-адаптивного двоичного арифметического кодирования (CABAC) задается в разрабатываемом стандарте высокоэффективного кодирования видео (HEVC), с использованием схемы арифметического кодирования, идентичной схеме арифметического кодирования, заданной в стандарте сжатия видео MPEG4-AVC/H.264. В разрабатываемом стандарте высокоэффективного кодирования видео (HEVC), когда используется контекстно-адаптивное двоичное арифметическое кодирование (CABAC), каждый элемент синтаксиса выражается как последовательность ячеек, при этом ячейки выбираются из набора доступных ячеек. Набор доступных ячеек получается из контекстной модели с одним контекстом в расчете на ячейку. Каждый контекст хранит вероятное значение ячейки (valMPS) и вероятностное состояние для операции арифметического кодирования или арифметического декодирования. Следует отметить, что ячейки также могут подвергаться обходному кодированию, если отсутствует ассоциирование с контекстом. Ячейки после обходного кодирования используют один бит в потоке битов и, следовательно, подходят для ячеек с равной вероятностью единичного значения или нулевого значения. Создание такой последовательности ячеек из элемента синтаксиса известно как "формирование ячеек" для элементов синтаксиса.
[0008] В видеокодере или видеодекодере, поскольку отдельная контекстная информация доступна для каждой ячейки, выбор контекста для ячеек предоставляет средство для того, чтобы повышать эффективность кодирования. В частности, эффективность кодирования может быть повышена посредством выбора конкретной ячейки таким образом, что статистические свойства предыдущих экземпляров ячейки, в которых использована ассоциированная контекстная информация, коррелируются со статистическими свойствами текущего экземпляра ячейки. Такой выбор контекста часто использует пространственно локальную информацию для того, чтобы определять оптимальный контекст.
[0009] В разрабатываемом стандарте высокоэффективного кодирования видео (HEVC) и в H.264/MPEG-4 AVC, прогнозирование для текущего блока извлекается на основе данных опорных выборок либо из других кадров, либо из соседних областей в текущем блоке, которые ранее декодированы. Разность между прогнозированием и требуемыми дискретизированными данными известна как остаток. Представление в частотной области остатка представляет собой двумерный массив остаточных коэффициентов. Обычно, верхний левый угол двумерного массива содержит остаточные коэффициенты, представляющие низкочастотную информацию.
[0010] В типичных видеоданных большая часть изменений в выборочных значениях является постепенной, приводя к преобладанию низкочастотной информации в остатке. Это проявляется в качестве больших абсолютных величин для остаточных коэффициентов, расположенных в верхнем левом углу двумерного массива.
[0011] Свойство преобладания низкочастотной информации в верхнем левом углу двумерного массива остаточных коэффициентов может быть использовано посредством выбранной схемы преобразования в двоичную форму для того, чтобы минимизировать размер остаточных коэффициентов в потоке битов.
[0012] HM 5.0 разделяет единицу преобразования (TU) на определенное число поднаборов и сканирует остаточные коэффициенты в каждом поднаборе в два прохода. Первый проход кодирует флаги, указывающие состояние остаточных коэффициентов, как с ненулевым значением (значимые) или с нулевым значением (незначимые). Эти данные известны как карта значимости. Второй проход кодирует абсолютную величину и знак значимых остаточных коэффициентов, известных как уровни коэффициентов.
[0013] Предоставленный шаблон сканирования обеспечивает сканирование двумерного массива остаточных коэффициентов в одномерный массив. В HM 5.0, предоставленный шаблон сканирования используется для обработки как карты значимости, так и уровней коэффициентов. Посредством сканирования карты значимости с использованием предоставленного шаблона сканирования может быть определено местоположение последнего значимого коэффициента в двумерной карте значимости. Шаблоны сканирования могут быть горизонтальными, вертикальными или диагональными.
[0014] Тестовая модель на основе стандарта высокоэффективного кодирования видео (HEVC) 5.0 (HM 5.0) предоставляет поддержку для остаточных блоков, также известных как единицы преобразования (TU), имеющих как квадратную форму, так и неквадратную форму. Каждая единица преобразования (TU) содержит набор остаточных коэффициентов. Остаточные блоки, имеющие одинаковые боковые размеры, известны как квадратные единицы преобразования (TU), и остаточные блоки, имеющие неодинаковые боковые размеры, известны как неквадратные единицы преобразования (TU).
[0015] Размеры единиц преобразования (TU), поддерживаемые в HM 5.0, составляют 4x4, 8x8, 16x16, 32x32, 4x16, 16x4, 8x32 и 32x8. Размеры единиц преобразования (TU) типично описываются с точки зрения выборок сигнала яркости, тем не менее, когда используется формат сигнала цветности 4:2:0, каждая выборка сигнала цветности занимает область выборок сигнала яркости 2x2. Соответственно, сканирование единиц преобразования (TU), чтобы кодировать остаточные данные сигнала цветности, использует шаблоны сканирования в половину размеров по горизонтали и по вертикали, к примеру, 2x2 для остаточного блока сигнала яркости 4x4. Для сканирования и кодирования остаточных коэффициентов, единицы преобразования (TU) 16x16, 32x32, 4x16, 16x4, 8x32 и 32x8 разделяются на определенное число субблоков, т.е.: нижний слой сканирования единиц преобразования (TU), имеющий размер 4x4, с соответствующей картой, существующей в HM 5.0. В HM 5.0, субблоки для этих размеров единиц преобразования (TU) совместно размещаются с поднаборами в единице преобразования (TU). Заданные флаги значимых коэффициентов в части карты значимости, совместно размещаемой в одном субблоке, упоминается в качестве группы значимых коэффициентов. Для единиц преобразования (TU) 16x16, 32x32, 4x16, 16x4, 8x32 и 32x8, кодирование на основе карты значимости использует двухуровневое сканирование. Сканирование верхнего уровня выполняет сканирование, такое как обратное диагональное сканирование вниз и влево, чтобы кодировать или логически выводить флаги, представляющие группы значимых коэффициентов каждого субблока. В субблоках, сканирование, такое как обратное диагональное сканирование вниз и влево, выполняется для того, чтобы кодировать флаги значимых коэффициентов для субблоков, имеющих флаг группы значимых коэффициентов с единичным значением. Для единицы преобразования (TU) 16x16, используется сканирование верхнего уровня 4x4. Для единицы преобразования (TU) 32x32, используется сканирование верхнего уровня 8x8. Для размеров единиц преобразования (TU) 16x4, 4x16, 32x8 и 8x32, используются сканирования верхнего уровня 4x1, 1x4, 8x2 и 2x8, соответственно.
[0016] В каждой единице преобразования (TU) данные остаточных коэффициентов могут быть кодированы в поток битов. Каждый "остаточный коэффициент" является числом, представляющим характеристики изображений в единице преобразования в частотной (DCT) области и занимающим уникальное местоположение в единице преобразования. Единица преобразования представляет собой блок выборок остаточных данных, которые могут быть преобразованы между пространственным и частотными областями. В частотной области единица преобразования (TU) кодирует выборки остаточных данных в качестве данных остаточных коэффициентов. Боковые размеры единиц преобразования имеют размер в степенях двух (2), в пределах от 4 выборок до 32 выборок для канала "сигнала яркости" и от 2 до 16 выборок для канала "сигнала цветности". Концевые узлы дерева единиц преобразования (TU) могут содержать или единицу преобразования (TU), или вообще ничего, в случае если не требуются данные остаточных коэффициентов.
[0017] Поскольку пространственное представление единицы преобразования представляет собой двумерный массив выборок остаточных данных, как подробно поясняется ниже, представление в частотной области, вытекающее из преобразования, такого как модифицированное дискретное косинусное преобразование (DCT), также представляет собой двумерный массив остаточных коэффициентов. Спектральные характеристики типичных дискретизированных данных в единице преобразования (TU) являются такими, что представление в частотной области является более компактным, чем пространственное представление. Дополнительно, преобладание спектральной информации нижних частот, типичной в единице преобразования (TU), приводит к кластеризации остаточных коэффициентов с большим значением в направлении сверху слева от единицы преобразования (TU), в которой представляются низкочастотные остаточные коэффициенты.
[0018] Модифицированные дискретные косинусные преобразования (DCT) или модифицированные дискретные синусные преобразования (DST) могут быть использованы для того, чтобы реализовывать остаточное преобразование. Реализации остаточного преобразования выполнены с возможностью поддерживать каждый требуемый размер единицы преобразования (TU). В видеокодере, остаточные коэффициенты из остаточного преобразования масштабируются и квантуются. Масштабирование и квантование уменьшает абсолютную величину остаточных коэффициентов, уменьшая размер данных, кодированных в поток битов, за счет снижения качества изображения.
[0019] Один аспект сложности разрабатываемого стандарта высокоэффективного кодирования видео (HEVC) заключается в числе таблиц поиска, требуемых для того, чтобы выполнять сканирование. Каждая дополнительная таблица поиска приводит к нежелательному потреблению запоминающего устройства, и, следовательно, уменьшение числа требуемых таблиц поиска является одним аспектом уменьшения сложности.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0020] Цель настоящего изобретения заключается в том, чтобы в значительной степени преодолевать или, по меньшей мере, снижать остроту одного или более недостатков существующих компоновок.
[0021] Согласно одному аспекту настоящего раскрытия сущности, предусмотрен способ декодирования остаточных коэффициентов единицы преобразования из потока битов видеоданных, при этом способ содержит:
- прием единицы преобразования из потока битов видеоданных, причем единица преобразования имеет квадратные слои верхнего и нижнего уровня, причем слой верхнего уровня представляет квадратную компоновку самое большее из четырех флагов групп значимых коэффициентов, при этом каждый из флагов групп значимых коэффициентов представляет неперекрывающуюся область слоя нижнего уровня;
- определение флагов групп значимых коэффициентов квадратного слоя верхнего уровня для принимаемой единицы преобразования; и
- определение значений остаточных коэффициентов квадратного нижнего слоя согласно определенным флагам групп значимых коэффициентов, чтобы декодировать единицу преобразования потока битов видеоданных.
[0022] Предпочтительно, каждая из неперекрывающихся областей, представленных посредством самое большее четырех флагов групп значимых коэффициентов, представляет собой квадратную область с шестнадцатью остаточными коэффициентами.
[0023] Предпочтительно, слой верхнего уровня имеет четыре флага значимых коэффициентов, при этом способ содержит дополнительный этап определения шаблона сканирования для каждой из неперекрывающихся областей слоя нижнего уровня посредством применения смещения к предварительно определенному шаблону сканирования.
[0024] Способ также может определять флаги групп значимых коэффициентов квадратного слоя верхнего уровня посредством декодирования флагов значимых коэффициентов, кодированных в потоке битов.
[0025] Предпочтительно, определение флагов групп значимых коэффициентов квадратного слоя верхнего уровня содержит логический вывод по меньшей мере одного из флагов значимых коэффициентов.
[0026] Преимущественно, слой нижнего уровня единицы преобразования формируется в качестве субблоков, и определение значений остаточных коэффициентов квадратного нижнего слоя согласно определенным флагам групп значимых коэффициентов содержит итеративное прохождение по каждому из субблоков единицы преобразования. Предпочтительно, итеративное прохождение формирует линейный массив, представляющий каждый из субблоков, в котором соответствующее значение смещения используется для того, чтобы восстанавливать каждый субблок из линейного массива.
[0027] В конкретной реализации, слой верхнего уровня представляет квадратную компоновку из четырех флагов групп значимых коэффициентов.
[0028] В одной реализации, направление сканирования нижнего слоя единицы преобразования выбирается согласно режиму внутреннего прогнозирования, применяемому к единице преобразования. В другой реализации, направление сканирования верхнего слоя единицы преобразования выбирается согласно режиму внутреннего прогнозирования, применяемому к единице преобразования. Дополнительно, направление сканирования верхнего слоя единицы преобразования является диагональным и независимым от направления сканирования нижнего слоя единицы преобразования.
[0029] Согласно другому аспекту настоящего раскрытия сущности, предусмотрен способ кодирования остаточных коэффициентов единицы преобразования в потоке битов видеоданных, при этом способ содержит:
- прием значений остаточных коэффициентов для квадратного нижнего слоя единицы преобразования;
- определение флагов групп значимых коэффициентов для квадратного слоя верхнего уровня единицы преобразования, причем слой верхнего уровня представляет квадратную компоновку самое большее из четырех флагов групп значимых коэффициентов, при этом каждый из флагов групп значимых коэффициентов представляет неперекрывающуюся область слоя нижнего уровня; и
- кодирование значений остаточных коэффициентов для квадратного нижнего слоя и флагов групп значимых коэффициентов квадратного слоя верхнего уровня, чтобы кодировать единицу преобразования в потоке битов видеоданных.
[0030] Согласно другому аспекту, предусмотрен способ декодирования остаточных коэффициентов единицы преобразования из потока битов видеоданных, при этом способ содержит:
- прием единицы преобразования из потока битов видеоданных, причем единица преобразования имеет квадратные слои верхнего уровня и нижнего уровня, причем квадратный слой верхнего уровня представляет квадратную компоновку из флагов групп значимых коэффициентов, при этом каждый из флагов групп значимых коэффициентов представляет неперекрывающуюся область квадратного слоя нижнего уровня;
- определение шаблона сканирования квадратного слоя верхнего уровня и квадратного слоя нижнего уровня согласно режиму внутреннего прогнозирования, причем шаблон сканирования квадратного слоя верхнего уровня и квадратного слоя нижнего уровня являются идентичными;
- определение флагов групп значимых коэффициентов квадратного слоя верхнего уровня для принимаемой единицы преобразования согласно определенному шаблону сканирования; и
- определение значений остаточных коэффициентов квадратного слоя нижнего уровня согласно определенным флагам групп значимых коэффициентов, чтобы декодировать единицу преобразования потока битов видеоданных.
[0031] Также раскрываются другие аспекты.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0032] Далее описывается по меньшей мере один вариант осуществления настоящего изобретения в отношении следующих чертежей, на которых:
[0033] Фиг. 1 является принципиальной блок-схемой, показывающей функциональные модули видеокодера;
[0034] Фиг. 2 является принципиальной блок-схемой, показывающей функциональные модули видеодекодера;
[0035] Фиг. 3A и 3B формируют принципиальную блок-схему компьютерной системы общего назначения, в которой могут осуществляться на практике кодер и декодер фиг. 1 и 2, соответственно;
[0036] Фиг. 4 является принципиальной блок-схемой, показывающей функциональные модули энтропийного кодера;
[0037] Фиг. 5 является принципиальной блок-схемой, показывающей функциональные модули энтропийного декодера;
[0038] Фиг. 6 является блок-схемой последовательности операций, показывающей традиционный способ для кодирования остаточных коэффициентов единицы преобразования (TU) 8x8;
[0039] Фиг. 7 является блок-схемой последовательности операций, показывающей традиционный способ для декодирования остаточных коэффициентов единицы преобразования (TU) 8x8;
[0040] Фиг. 8 является блок-схемой последовательности операций, показывающей способ согласно настоящему раскрытию сущности для кодирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием групп значимых коэффициентов;
[0041] Фиг. 9 является блок-схемой последовательности операций, показывающей способ согласно настоящему раскрытию сущности для декодирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием групп значимых коэффициентов;
[0042] Фиг. 10A и 10B иллюстрируют способ согласно настоящему раскрытию сущности для представления групп значимых коэффициентов единицы преобразования (TU) 8x8;
[0043] Фиг. 11 является схемой, показывающей традиционный способ для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного диагонального сканирования;
[0044] Фиг. 12 является схемой, показывающей традиционный способ для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного горизонтального сканирования;
[0045] Фиг. 13 является схемой, показывающей традиционный способ для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного вертикального сканирования;
[0046] Фиг. 14 является схемой, показывающей способ согласно настоящему раскрытию сущности для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием двухслойной иерархии;
[0047] Фиг. 15A-15C иллюстрируют способ согласно настоящему раскрытию сущности для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного диагонального сканирования;
[0048] Фиг. 16A-16C иллюстрируют способ согласно настоящему раскрытию сущности для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного горизонтального сканирования;
[0049] Фиг. 17A-17C иллюстрируют способ согласно настоящему раскрытию сущности для сканирования остаточных коэффициентов единицы преобразования (TU) 8x8 с использованием обратного вертикального сканирования; и
[0050] Фиг. 18A-18C иллюстрируют альтернативный подход для сканирования, который использует смещения.
Подробное описание, включающее в себя оптимальный режим осуществления
[0051] Если на одном или более из прилагаемых чертежей содержится ссылка на этапы и/или признаки, которые имеют идентичные ссылки с номерами, эти этапы и/или признаки для целей этого описания имеют идентичную функцию(и) или операцию(и), если иное намерение не указано.
[0052] Фиг. 1 является принципиальной блок-схемой, показывающей функциональные модули видеокодера 100. Фиг. 2 является принципиальной блок-схемой, показывающей функциональные модули соответствующего видеодекодера 200. Видеокодер 100 и видеодекодер 200 могут быть реализованы с использованием компьютерной системы 300 общего назначения, как показано на фиг. 3A и 3B, при этом различные функциональные модули могут быть реализованы посредством специализированных аппаратных средств в компьютерной системе 300 посредством программного обеспечения, выполняемого в компьютерной системе 300, или альтернативно посредством комбинации специализированных аппаратных средств и программного обеспечения, выполняемого в компьютерной системе 300.
[0053] Как видно на фиг. 3A, компьютерная система 300 включает в себя: компьютерный модуль 301; устройства ввода, такие как клавиатура 302, указательное устройство 303 типа "мышь", сканер 326, камера 327 и микрофон 380; и устройства вывода, включающие в себя принтер 315, устройство 314 отображения и громкоговорители 317. Внешнее приемо-передающее устройство 316 типа "модулятор-демодулятор (модем)" может быть использовано посредством компьютерного модуля 301 для обмена данными с сетью 320 связи через соединение 321. Сеть 320 связи может представлять собой глобальную вычислительную сеть (WAN), такую как Интернет, сеть сотовой связи или частная WAN. Когда соединение 321 представляет собой телефонную линию связи, модем 316 может представлять собой традиционный "коммутируемый" модем. Альтернативно, когда соединение 321 представляет собой соединение с высокой пропускной способностью (например, кабельное), модем 316 может представлять собой широкополосный модем. Беспроводной модем также может быть использован для беспроводного соединения с сетью 320 связи.
TM
TM
[0054] Компьютерный модуль 301 типично включает в себя по меньшей мере один процессор 305 и запоминающее устройство 306. Например, запоминающее устройство 306 может иметь полупроводниковое оперативное запоминающее устройство (RAM) и полупроводниковое постоянное запоминающее устройство (ROM). Компьютерный модуль 301 также включает в себя определенное число интерфейсов ввода-вывода (I/O), включающих в себя: аудио-видеоинтерфейс 307, который соединяется с видеодисплеем 314, громкоговорителями 317 и микрофоном 380; интерфейс 313 ввода-вывода, который соединяется с клавиатурой 302, мышью 303, сканером 326, камерой 327 и необязательно джойстиком или другим устройством с человеко-машинным интерфейсом (не проиллюстрирован); и интерфейс 308 для внешнего модема 316 и принтера 315. В некоторых реализациях, модем 316 может содержаться в компьютерном модуле 301, например, в интерфейсе 308. Компьютерный модуль 301 также имеет локальный сетевой интерфейс 311, который разрешает соединение компьютерной системы 300 через соединение 323 с локальной сетью 322 связи, известной как локальная вычислительная сеть (LAN). Как проиллюстрировано на фиг. 3A, локальная сеть 322 связи также может соединяться с глобальной сетью 320 через соединение 324, которое типично должно включать в себя так называемое устройство "брандмауэра" или устройство с аналогичной функциональностью. Локальный сетевой интерфейс 311 может содержать печатную плату Ethernet, беспроводное устройство Bluetooth или беспроводное устройство IEEE 802.11; тем не менее, множество других типов интерфейсов могут осуществляться на практике для интерфейса 311.
TM
[0055] Интерфейсы 308 и 313 ввода-вывода могут предоставлять одно или оба из последовательного и параллельного подключения, при этом первый типично реализуется согласно стандартам на основе универсальной последовательной шины (USB) и имеет соответствующие USB-разъемы (не проиллюстрированы). Устройства 309 хранения данных предоставляются и типично включают в себя жесткий диск 310 (HDD). Также могут использоваться другие устройства хранения данных, такие как накопитель на гибких дисках и накопитель на магнитной ленте (не проиллюстрированы). Накопитель 312 на оптических дисках типично предоставляется с возможностью выступать в качестве энергонезависимого источника данных. Портативные запоминающие устройства, такие как оптические диски (например, CD-ROM, DVD, Blu-Ray-диск), USB-RAM, портативные внешние жесткие диски и гибкие диски, например, могут быть использованы в качестве надлежащих источников данных для системы300. Типично, любое из HDD 310, накопителя 312 на оптических дисках, сетей 320 и 322 или камеры 327 может быть предназначено в качестве источника для видеоданных, которые должны кодироваться, или, касательно дисплея 314, в качестве назначения для декодированных видеоданных, которые должны быть сохранены или воспроизведены.
TM
[0056] Компоненты 305-313 компьютерного модуля 301 типично обмениваются данными через соединительную шину 304 таким способом, который приводит к традиционному режиму работы компьютерной системы 300, известному специалистам в данной области техники. Например, процессор 305 соединяется с системной шиной 304 с использованием соединения 318. Аналогично, запоминающее устройство 306 и накопитель 312 на оптических дисках соединяются с системной шиной 304 посредством соединений 319. Примеры компьютеров, на которых могут осуществляться на практике описанные компоновки, включают в себя IBM PC и совместимые устройства, Sun Sparcstations, Apple Mac или аналогичные компьютерные системы.
[0057] При необходимости, кодер 100 и декодер 200, а также способы, описанные ниже, могут быть реализованы с использованием компьютерной системы 300, при этом кодер 100, декодер 200 и процессы фиг. 10 и 11, которые должны быть описаны, могут быть реализованы как одна или более прикладных программ 333, выполняемых в компьютерной системе 300. В частности, кодер 100, декодер 200 и этапы описанных способов осуществляются посредством инструкций 331 (см. фиг. 3B) в программном обеспечении 333, которые выполняются в компьютерной системе 300. Программные инструкции 331 могут формироваться в качестве одного или более кодовых модулей, каждый из которых служит для выполнения одной или более конкретных задач. Программное обеспечение также может быть разделено на две отдельных части, при этом первая часть и соответствующие кодовые модули выполняют описанные способы, а вторая часть и соответствующие кодовые модули управляют пользовательским интерфейсом между первой частью и пользователем.
[0058] Программное обеспечение может быть сохранено на считываемом компьютером носителе, включающем в себя, например, устройства хранения данных, описанные ниже. Программное обеспечение загружается в компьютерную систему 300 из считываемого компьютером носителя и затем выполняется посредством компьютерной системы 300. Считываемый компьютером носитель, имеющий такое программное обеспечение или компьютерную программу, записанную на считываемом компьютером носителе, является компьютерным программным продуктом. Использование компьютерного программного продукта в компьютерной системе 300 предпочтительно осуществляет преимущественное устройство для реализации кодера 100, декодера 200 и описанных способов.
[0059] Программное обеспечение 333 типично сохраняется в HDD 310 или в запоминающем устройстве 306. Программное обеспечение загружается в компьютерную систему 300 из считываемого компьютером носителя и выполняется посредством компьютерной системы 300. Таким образом, например, программное обеспечение 333 может быть сохранено на читаемом оптическим образом дисковом носителе 325 хранения данных (например, CD-ROM), который считывается посредством накопителя 312 на оптических дисках.
[0060] В некоторых случаях, прикладные программы 333 могут предоставляться пользователю, кодироваться на одном или более CD-ROM 325 и считываться через соответствующий накопитель 312, или альтернативно, могут считываться пользователем из сетей 320 или 322. Еще дополнительно, программное обеспечение также может загружаться в компьютерную систему 300 из других считываемых компьютером носителей. Считываемые компьютером носители данных означают любой энергонезависимый материальный носитель данных, который предоставляет записанные инструкции и/или данные в компьютерную систему 300 для выполнения и/или обработки. Примеры таких носителей данных включают в себя гибкие диски, магнитную ленту, CD-ROM, DVD, Blu-Ray-диск, жесткий диск, ROM или интегральную схему, запоминающее USB-устройство, магнитооптический диск или считываемую компьютером карту, такую как PCMCIA-карта и т.п., независимо от того, являются такие устройства внутренними или внешними относительно компьютерного модуля 301. Примеры энергозависимых или нематериальных считываемых компьютером сред передачи, которые также могут участвовать в предоставлении программного обеспечения, прикладных программ, инструкций и/или видеоданных или кодированных видеоданных в компьютерный модуль 301, включают в себя радиочастотные или инфракрасные каналы передачи, а также сетевое соединение с другим компьютером или сетевым устройством, и сети Интернет или intranet, включающие в себя передачи по электронной почте и информацию, записанную на веб-узлах, и т.п.
[0061] Вторая часть прикладных программ 333 и соответствующие вышеупомянутые кодовые модули может быть выполнена, чтобы реализовывать один или более графических пользовательских интерфейсов (GUI), которые должны быть подготовлены посредством рендеринга или иным образом представлены на дисплее 314. Через управление типично с помощью клавиатуры 302 и мыши 303, пользователь компьютерной системы 300 и приложение может управлять интерфейсом функционально адаптируемым способом таким образом, чтобы предоставлять команды управления и/или ввод в приложения, ассоциированные с GUI. Также могут реализовываться другие формы функционально адаптируемых пользовательских интерфейсов, такие как аудиоинтерфейс, использующий речевые подсказки, выводимые через громкоговорители 317, и пользовательские голосовые команды, вводимые через микрофон 380.
[0062] Фиг. 3B является подробной принципиальной блок-схемой процессора 305 и "запоминающего устройства" 334. Запоминающее устройство 334 представляет логическое агрегирование всех модулей запоминающих устройств (включающих в себя HDD 309 и полупроводниковое запоминающее устройство 306), к которым может осуществляться доступ посредством компьютерного модуля 301 на фиг. 3A.
[0063] Когда компьютерный модуль 301 первоначально включается, выполняется программа 350 самотестирования при включении питания (POST). POST-программа 350 типично сохраняется в ROM 349 полупроводникового запоминающего устройства 306 по фиг. 3A. Аппаратное устройство, к примеру, ROM 349, сохраняющее программное обеспечение, иногда упоминается в качестве микропрограммного обеспечения. POST-программа 350 обследует аппаратные средства в компьютерном модуле 301, чтобы обеспечивать надлежащее функционирование, и типично проверяет процессор 305, запоминающее устройство 334 (309, 306) и программный модуль 351 базовой системы ввода-вывода (BIOS), также типично сохраняемый в ROM 349, на предмет корректной работы. После того, как POST-программа 350 успешно выполнена, BIOS 351 активирует жесткий диск 310 по фиг. 3A. Активация жесткого диска 310 инструктирует программе 352 начальной загрузки, которая постоянно размещается на жестком диске 310, выполняться через процессор 305. Она загружает операционную систему 353 в оперативное запоминающее устройство 306, после чего операционная система 353 начинает работу. Операционная система 353 представляет собой приложение системного уровня, выполняемое посредством процессора 305, чтобы выполнять различные высокоуровневые функции, включающие в себя управление процессором, управление запоминающим устройством, управление устройствами, управление хранением данных, прикладной программный интерфейс и общий пользовательский интерфейс.
[0064] Операционная система 353 управляет запоминающим устройством 334 (309, 306), чтобы обеспечивать то, что каждый процесс или приложение, работающее на компьютерном модуле 301, имеет достаточный объем памяти, в которой он может выполняться без конфликта с памятью, выделяемой другому процессу. Кроме того, различные типы запоминающего устройства, доступного в системе 300 по фиг. 3A, должен быть использованы надлежащим образом, так что каждый процесс может эффективно выполняться. Соответственно, агрегированное запоминающее устройство 334 не имеет намерение иллюстрировать то, как выделяются конкретные сегменты запоминающего устройства (если не указано иное), а вместо этого предоставляет общее представление запоминающего устройства, доступного посредством компьютерной системы 300, и того, как оно используется.
[0065] Как показано на фиг. 3B, процессор 305 включает в себя определенное число функциональных модулей, включающих в себя модуль 339 управления, арифметико-логическое устройство 340 (ALU) и локальное или внутреннее запоминающее устройство 348, иногда называемое "кэш-памятью". Кэш-память 348 типично включает в себя определенное число регистров 344-346 хранения данных в секции регистров. Одна или более внутренних шин 341 функционально соединяют эти функциональные модули. Процессор 305 типично также имеет один или более интерфейсов 342 для обмена данными с внешними устройствами через системную шину 304 с использованием соединения 318. Запоминающее устройство 334 соединяется с шиной 304 с использованием соединения 319.
[0066] Прикладная программа 333 включает в себя последовательность инструкций 331, которые могут включать в себя инструкции условного перехода и цикла. Программа 333 также может включать в себя данные 332, которые используются при выполнении программы 333. Инструкции 331 и данные 332 сохраняются в местоположениях 328, 329, 330 и 335, 336, 337 запоминающего устройства, соответственно. В зависимости от относительного размера инструкций 331 и местоположений 328-330 запоминающего устройства, конкретная инструкция может быть сохранена в одном местоположении запоминающего устройства, как проиллюстрировано посредством инструкции, показанной в местоположении 330 запоминающего устройства. Альтернативно, инструкция может быть сегментирована на определенное число частей, каждая из которых сохраняется в отдельном местоположении запоминающего устройства, как проиллюстрировано посредством сегментов инструкций, показанных в местоположениях 328 и 329 запоминающего устройства.
[0067] В общем, в процессор 305 предоставляется набор инструкций, которые выполняются в нем. Процессор 305 ожидает последующего ввода, на который процессор 305 реагирует посредством выполнения другого набора инструкций. Каждый ввод может предоставляться из одного или более из определенного числа источников, включающих в себя данные, сформированные посредством одного или более устройств 302, 303 ввода, данные, принятые из внешнего источника через одну из сетей 320, 302, данные, извлеченные из одного из устройств 306, 309 хранения данных, или данные, извлеченные из носителя 325 данных, вставленного в соответствующий модуль 312 считывания, все из которых проиллюстрированы на фиг. 3A. Выполнение набора инструкций в некоторых случаях может приводить к выводу данных. Выполнение также может заключать в себе сохранение данных или переменных в запоминающем устройстве 334.
[0068] Кодер 100, декодер 200 и описанные способы используют входные переменные 354, которые сохраняются в запоминающем устройстве 334 в соответствующих местоположениях 355, 356, 357 запоминающего устройства. Кодер 100, декодер 200 и описанные способы формируют выходные переменные 361, которые сохраняются в запоминающем устройстве 334 в соответствующих местоположениях 362, 363, 364 запоминающего устройства. Промежуточные переменные 358 могут быть сохранены в местоположениях 359, 360, 366 и 367 запоминающего устройства.
[0069] Ссылаясь на процессор 305 по фиг. 3B, регистры 344, 345, 346, арифметико-логическое устройство 340 (ALU) и модуль 339 управления взаимодействуют, чтобы выполнять последовательности микроопераций, необходимые для того, чтобы выполнять циклы "выборки, декодирования и выполнения" для каждой инструкции в наборе инструкций, составляющем программу 333. Каждый цикл выборки, декодирования и выполнения содержит:
(a) операцию выборки, которая осуществляет выборку или считывает инструкцию 331 из местоположения 328, 329, 330 запоминающего устройства;
(b) операцию декодирования, в которой модуль 339 управления определяет то, выборка какой инструкции осуществлена; и
(c) операцию выполнения, в которой модуль 339 управления и/или ALU 340 выполняют инструкцию.
[0070] После этого, может выполняться дополнительный цикл выборки, декодирования и выполнения для следующей инструкции. Аналогично, может выполняться цикл запоминания, посредством которого модуль 339 управления сохраняет или записывает значение в местоположение 332 запоминающего устройства.
[0071] Каждый этап или подпроцесс в процессах по фиг. 1, 2, 4, 5, 7-10 и 14-17, которые должны быть описаны, ассоциирован с одним или более сегментов программы 333 и выполняется посредством секции 344, 345, 347 регистров, ALU 340 и модуля 339 управления в процессоре 305, взаимодействующих с возможностью выполнять циклы выборки, декодирования и выполнения для каждой инструкции в наборе инструкций для указанных сегментов программы 333.
[0072] Кодер 100, декодер 200 и описанные способы альтернативно могут быть реализованы в специализированных аппаратных средствах, к примеру, в одной или более интегральных схем, выполняющих функции или подфункции описанных способов. Такие специализированные аппаратные средства могут иметь форму компьютеризированного устройства и могут включать в себя графические процессоры, процессоры цифровых сигналов, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или один или более микропроцессоров и ассоциированные запоминающие устройства. Такое компьютеризированное устройство может быть использовано для того, чтобы выполнять некоторые операции кодирования в аппаратных средствах, а другие операции кодирования - в программном обеспечении, выполняющемся на аппаратных средствах.
[0073] Как описано выше, видеокодер 100 может быть реализован как один или более программно-кодированных модулей прикладной программы 333, постоянно размещаемой на жестком диске 305 и управляемой при выполнении посредством процессора 305. В частности, видеокодер 100 содержит модули 102-112, 114 и 115, которые могут быть реализованы как один или более программно-кодированных модулей прикладной программы 333.
[0074] Хотя видеокодер 100 является примером конвейера декодирования видео по стандарту высокоэффективного кодирования видео (HEVC), стадии обработки, выполняемые посредством модулей 102-112, 114 и 115, являются общими для других видеокодеков, таких как VC-1 или H.264/MPEG-4 AVC. Видеокодер 100 принимает некодированные данные 101 кадров в качестве последовательности кадров, включающей в себя выборки сигнала яркости и цветности. Видеокодер 100 разделяет каждый кадр данных 101 кадров на иерархические наборы единиц кодирования (CU), представимые, например, в качестве дерева единиц кодирования (CU).
[0075] Видеокодер 100 работает посредством вывода, из модуля 110 мультиплексора, массива выборок прогнозированных данных, известного как единица 120 прогнозирования (PU). Разностный модуль 115 выводит разность между единицей 120 прогнозирования (PU) и соответствующим массивом выборок данных, принимаемых из данных 101 кадров, при этом разность известна как выборки 122 остаточных данных.
[0076] Выборки 122 остаточных данных из разностного модуля 115 принимаются посредством модуля 102 преобразования, который преобразует разность из пространственного представления в представление в частотной области, чтобы создавать коэффициенты 124 преобразования для каждой единицы преобразования (TU) в дереве преобразования. Для разрабатываемого стандарта высокоэффективного кодирования видео (HEVC) преобразование в представление в частотной области реализуется с использованием модифицированного дискретного косинусного преобразования (DCT), в котором традиционное DCT модифицируется таким образом, что оно реализовано с использованием сдвигов и суммирований. Коэффициенты 124 преобразования затем вводятся в модуль 103 масштабирования и квантования и масштабируются и квантуются, чтобы формировать остаточные коэффициенты 126. Процесс масштабирования и квантования приводит к потере точности. Остаточные коэффициенты 126 принимаются в качестве ввода в модуль 105 обратного масштабирования, который выполняет в обратном порядке масштабирование, выполняемое посредством модуля 103 масштабирования и квантования, чтобы формировать повторно масштабированные коэффициенты 128 преобразования, которые представляют собой повторно масштабированные версии остаточных коэффициентов 126. Остаточные коэффициенты 126 также принимаются в качестве ввода в модуль 104 энтропийного кодера, который кодирует остаточные коэффициенты в кодированном потоке 113 битов. Вследствие потери точности, возникающей в результате работы из модуля 103 масштабирования и квантования, повторно масштабированные коэффициенты 128 преобразования не являются идентичными исходным коэффициентам 124 преобразования. Повторно масштабированные коэффициенты 128 преобразования из модуля 105 обратного масштабирования затем выводятся в модуль 106 обратного преобразования. Модуль 106 обратного преобразования выполняет обратное преобразование из частотной области в пространственную область, чтобы формировать представление 130 в пространственной области повторно масштабированных коэффициентов 128 преобразования, идентичное представлению в пространственной области, которое формируется в декодере.
[0077] Модуль 107 оценки движения формирует векторы 132 движения посредством сравнения данных 101 кадров с предыдущими данными кадров, сохраненными в модуле 112 буфера кадров, типично сконфигурированном в запоминающем устройстве 306. Векторы 132 движения затем вводятся в модуль 108 компенсации движения, который формирует внешне прогнозированные опорные выборки 134 посредством фильтрации выборок, сохраненных в модуле 112 буфера кадров, с учетом пространственного смещения, извлекаемого из векторов 132 движения. Хотя не проиллюстрировано на фиг. 1, векторы 132 движения также передаются в качестве элементов синтаксиса в модуль 104 энтропийного кодера для кодирования в кодированном потоке 113 битов. Модуль 109 внутрикадрового прогнозирования формирует внутренне прогнозированные опорные выборки 136 с использованием выборок 138, полученных из модуля 114 суммирования, который суммирует вывод 120 модуля 110 мультиплексора и вывод 130 из модуля 106 обратного преобразования.
[0078] Единицы прогнозирования (PU) могут быть кодированы с использованием способов внутреннего прогнозирования или внешнего прогнозирования. Решение касательно того, следует использовать внутреннее прогнозирование или внешнее прогнозирование, принимается согласно компромиссу по искажению в зависимости от скорости передачи между требуемой скоростью передачи битов результирующего кодированного потока 113 битов и величиной искажения качества изображений, введенной посредством способа внутреннего прогнозирования или внешнего прогнозирования. Модуль 110 мультиплексора выбирает либо внутренне прогнозированные опорные выборки 136 из модуля 109 внутрикадрового прогнозирования, либо внешне прогнозированные опорные выборки 134 из блока 108 компенсации движения, в зависимости от текущего режима 142 прогнозирования, определенного посредством управляющей логики, не проиллюстрированной, но известной в данной области техники. Режим 142 прогнозирования также предоставляется в энтропийный кодер 104, как проиллюстрировано, и по сути используется для того, чтобы определять или иным образом устанавливать порядок сканирования единиц преобразования, как описано. Межкадровое прогнозирование использует только диагональный порядок сканирования, тогда как внутрикадровое прогнозирование может использовать диагональный, горизонтальный или вертикальный порядок сканирования.
[0079] Модуль 114 суммирования формирует сумму 138, которая вводится в модуль 111 фильтра удаления блочности. Модуль 111 фильтра удаления блочности выполняет фильтрацию вдоль границ блоков, формируя выборки 140 с удаленной блочностью, которые записываются в модуль 112 буфера кадров, сконфигурированный в запоминающем устройстве 306. Модуль 112 буфера кадров представляет собой буфер с достаточной емкостью, чтобы хранить данные из нескольких предыдущих кадров для последующего использования.
[0080] В видеокодере 100, выборки 122 остаточных данных в одной единице преобразования (TU) определяются посредством нахождения разности между выборками данных для входных данных 101 кадров и прогнозированием 120 выборок данных для входных данных 101 кадров. Разность предоставляет пространственное представление остаточных коэффициентов единицы преобразования (TU).
[0081] При работе модуля 104 энтропийного кодера, остаточные коэффициенты единицы преобразования (TU) преобразуются в двумерную карту значимости. Карта значимости остаточных коэффициентов в единице преобразования (TU) затем сканируется в конкретном порядке, известном как порядок сканирования, чтобы формировать одномерный список значений флагов, называемый "списком флагов значимых коэффициентов". Порядок сканирования может быть описан или иным образом указан посредством шаблона сканирования, к примеру, шаблона сканирования, принимаемого вместе с режимом 142 прогнозирования из модуля 109 внутреннего прогнозирования. Модуль 109 внутреннего прогнозирования определяет режим внутреннего прогнозирования, который может быть использован для того, чтобы выбирать шаблон сканирования. Например, если выбирается режим 1 внутреннего прогнозирования (вертикальное внутреннее прогнозирование), то используется горизонтальное сканирование, как видно на фиг. 12. Если выбирается режим 0 внутреннего прогнозирования (планарное внутреннее прогнозирование), то используется диагональное сканирование, как видно фиг. 11, тогда как если выбирается режим 2 внутреннего прогнозирования (горизонтальное внутреннее прогнозирование), то используется вертикальное сканирование, как видно на фиг. 13. Шаблон сканирования может быть горизонтальным, вертикальным, диагональным или зигзагообразным. Версия 5 тестовой модели на основе стандарта высокоэффективного кодирования видео (HEVC) выполняет сканирование в обратном направлении, тем не менее, сканирование в прямом направлении также является возможным. Для единиц преобразования (TU) 16x16, 32x32, 4x16, 16x4, 8x32 и 32x8, задается двухуровневое сканирование, при котором единица преобразования (TU) разделяется на набор субблоков, при этом каждый субблок имеет квадратную форму. На верхнем уровне, сканирование выполняется посредством сканирования каждого нижнего уровня с использованием такого сканирования, как обратное диагональное сканирование вниз и влево. На нижнем уровне, также известном как уровень субблока, сканирование также выполняется с использованием такого сканирования, как обратное диагональное сканирование вниз и влево. В эталонной HEVC-модели версия 5.0, операция сканирования начинается через один остаточный коэффициент после последнего значимого коэффициента (при этом "после" означает в направлении обратного сканирования остаточных коэффициентов) и продолжается до тех пор, пока не будет достигнуто верхнее левое местоположение карты значимости. Операции сканирования, имеющие это свойство, которые соответствуют эталонной HEVC-модели версия 5.0, известны как "обратные сканирования". В программном обеспечении для эталонной HEVC-модели версия 5.0, местоположение последнего значимого коэффициента передается в служебных сигналах посредством кодирования координат коэффициента в единице преобразования (TU). Специалисты в данной области техники должны принимать во внимание, что использование прилагательного "последний" в этом контексте зависит от конкретного порядка сканирования. То, что может быть "последним" ненулевым остаточным коэффициентом или соответствующим флагом значимого коэффициента с единичным значением согласно одному шаблону сканирования, может не быть "последним" согласно другому шаблону сканирования. Список флагов значимых коэффициентов, указывающих значимость каждого остаточного коэффициента перед последним значимым коэффициентом, кодируется в поток 113 битов. Значение флага последнего значимого коэффициента не должно обязательно явно кодироваться в поток 113 битов, поскольку предшествующее кодирование местоположения флага последнего значимого коэффициента неявно указывает, что этот остаточный коэффициент является значимым.
[0082] Кластеризация остаточных коэффициентов с большим значением в направлении сверху слева от единицы преобразования (TU) приводит к тому, что большинство флагов значимости выше в списке являются значимыми, пори том что небольшое число флагов значимости находятся ниже в списке.
[0083] Модуль 104 энтропийного кодера также формирует элементы синтаксиса из входящих данных 126 остаточных коэффициентов (или остаточных коэффициентов), принимаемых из модуля 103 масштабирования и квантования. Модуль 104 энтропийного кодера выводит кодированный поток 113 битов и подробнее описывается ниже. Для разрабатываемого стандарта высокоэффективного кодирования видео (HEVC) кодированный поток 113 битов разграничивается на единицы уровня абстрагирования от сети (NAL). Каждый слайс кадра содержится в одной NAL-единице.
[0084] Существует несколько альтернатив для способа энтропийного кодирования, реализованного в модуле 104 энтропийного кодера. Разрабатываемый стандарт высокоэффективного кодирования видео (HEVC) поддерживает контекстно-адаптивное двоичное арифметическое кодирование (CABAC), вариант контекстно-адаптивного двоичного арифметического кодирования (CABAC), предлагаемый в H.264/MPEG-4 AVC. Альтернативная схема энтропийного кодирования представляет собой энтропийный кодер на основе сегментирования на интервалы вероятности (PIPE), который известен в данной области техники.
[0085] Для видеокодера 100, поддерживающего несколько способов кодирования видео, один из поддерживаемых способов энтропийного кодирования выбирается согласно конфигурации кодера 100. Дополнительно, при кодировании единиц кодирования из каждого кадра, модуль 104 энтропийного кодера записывает кодированный поток 113 битов таким образом, что каждый кадр имеет один или более слайсов в расчете на кадр, при этом каждый слайс содержит данные изображений для части кадра. Формирование одного слайса в расчете на кадр уменьшает объем служебной информации, ассоциированной с разграничением каждой границы слайса. Тем не менее, также возможно разделение кадра на несколько слайсов.
[0086] Видеодекодер 200 может быть реализован как один или более программно-кодированных модулей прикладной программы 333, постоянно размещаемой на жестком диске 305 и управляемой при выполнении посредством процессора 305. В частности, видеодекодер 200 содержит модули 202-208 и 210, которые могут быть реализованы как один или более программно-кодированных модулей прикладной программы 333. Хотя видеодекодер 200 описывается в отношении конвейера декодирования видео по стандарту высокоэффективного кодирования видео (HEVC), стадии обработки, выполняемые посредством модулей 202-208 и 209, являются общими для других видеокодеков, которые используют энтропийное кодирование, таких как H.264/MPEG-4 AVC, MPEG-2 и VC-1.
TM
[0087] Кодированный поток битов, к примеру, кодированный поток 113 битов, принимается посредством видеодекодера 200. Кодированный поток 113 битов может считываться из запоминающего устройства 306, с жесткого диска 310, CD-ROM, Blu-ray-диска или другого считываемого компьютером носителя данных. Альтернативно, кодированный поток 113 битов может быть принят из внешнего источника, такого как сервер, подключенный к сети 320 связи, или радиочастотное приемное устройство. Кодированный поток 113 битов содержит кодированные элементы синтаксиса, представляющие данные кадров, которые должны быть декодированы.
[0088] Кодированный поток 113 битов вводится в модуль 202 энтропийного декодера, который извлекает элементы синтаксиса из кодированного потока 113 битов и передает значения элементов синтаксиса в другие блоки в видеодекодере 200. Может быть предусмотрено несколько способов энтропийного декодирования, реализованных в модуле 202 энтропийного декодера, к примеру, способы энтропийного декодирования, описанные в отношении модуля 104 энтропийного кодера. Данные 220 элементов синтаксиса, представляющие данные остаточных коэффициентов, передаются в модуль 203 обратного масштабирования и преобразования, а данные 222 элементов синтаксиса, представляющие информацию векторов движения, передаются в модуль 204 компенсации движения. Модуль 203 обратного масштабирования и преобразования выполняет обратное масштабирование для данных остаточных коэффициентов, чтобы создавать восстановленные коэффициенты преобразования. Модуль 203 затем выполняет обратное преобразование, чтобы преобразовывать восстановленные коэффициенты преобразования из представления в частотной области в представление в пространственной области, формируя остаточные выборки 224, такое как обратное преобразование, описанное в отношении модуля 106 обратного преобразования.
[0089] Модуль 204 компенсации движения использует данные 222 векторов движения из модуля 202 энтропийного декодера, комбинированные с предыдущими данными 226 кадров из блока 208 буфера кадров, сконфигурированного в запоминающем устройстве 306, для того чтобы формировать внешне прогнозированные опорные выборки 228 для единицы прогнозирования (PU), представляющие собой прогнозирование выходных декодированных данных кадров. Когда элемент синтаксиса указывает, что текущая единица кодирования кодирована с использованием внутреннего прогнозирования, модуль 205 внутрикадрового прогнозирования формирует внутренне прогнозированные опорные выборки 230 для единицы прогнозирования (PU) с использованием выборок, пространственно соседних с единицей прогнозирования (PU). Пространственно соседние выборки получаются из суммы 232, выводимой из модуля 210 суммирования. Модуль 206 мультиплексора выбирает внутренне прогнозированные опорные выборки или внешне прогнозированные опорные выборки для единицы прогнозирования (PU) в зависимости от текущего режима прогнозирования, который указывается посредством элемента синтаксиса в кодированном потоке 113 битов. Массив выборок 234, выводимых из модуля 206 мультиплексора, суммируется с остаточными выборками 224 из модуля 203 обратного масштабирования и преобразования посредством модуля 210 суммирования, чтобы формировать сумму 232, которая затем вводится в каждый из модуля 207 фильтра удаления блочности и модуля 205 внутрикадрового прогнозирования. В отличие от кодера 100, модуль 205 внутрикадрового прогнозирования принимает режим 236 прогнозирования из энтропийного декодера 202. Мультиплексор 206 принимает сигнал выбора внутрикадрового прогнозирования/межкадрового прогнозирования из энтропийного декодера 202. Модуль 207 фильтра удаления блочности выполняет фильтрацию вдоль границ блоков данных, чтобы сглаживать артефакты, видимые вдоль границ блоков данных. Вывод модуля 207 фильтра удаления блочности записывается в модуль 208 буфера кадров, сконфигурированный в запоминающем устройстве 306. Модуль 208 буфера кадров предоставляет достаточный объем хранения, чтобы хранить несколько декодированных кадров для последующего использования. Декодированные кадры 209 также выводятся из модуля 208 буфера кадров.
[0090] Энтропийный кодер 104 описывается со ссылкой на фиг. 4. Элементы синтаксиса, к примеру, остаточные коэффициенты 401, вводятся в модуль 404 преобразования в двоичную форму. Размер 402 единицы преобразования (TU) вводится в модуль 404 преобразования в двоичную форму и указывает размер кодируемой единицы преобразования (TU). Шаблон 403 сканирования вводится в модуль 404 преобразования в двоичную форму. Модуль 404 преобразования в двоичную форму преобразует каждый элемент синтаксиса в двоичную форму, т.е. в последовательность ячеек. Каждая ячейка содержит значение 406 ячейки и индекс 405 контекста. Значение 406 ячейки и индекс 405 контекста принимаются посредством контекстной модели 407, которая выводит контекст 408, выбранный согласно индексу 405 контекста. Контекст 408 обновляется в соответствии со значением 405 ячейки. Способ для обновления контекста 408 соответствует способу, используемому посредством контекстно-адаптивного двоичного арифметического кодирования (CABAC) в H.264/MPEG-4 AVC. Модуль 404 преобразования в двоичную форму преобразует в двоичную форму остаточные коэффициенты в соответствии со способом 600, описанным со ссылкой на фиг. 6 ниже. Двоичный арифметический кодер 409 использует контекст 408 и значение 406 ячейки для того, чтобы кодировать ячейку в кодированный поток 113 битов.
[0091] Энтропийный декодер 202 описывается со ссылкой на фиг. 5. Размер 502 единицы преобразования (TU) и шаблон 501 сканирования принимаются посредством модуля 503 обратного преобразования из двоичной формы. Шаблон 501 сканирования может быть определен из режима 236 прогнозирования, определенного посредством энтропийного декодера 202. Это может выполняться посредством выбора шаблона сканирования на основе режима 236 прогнозирования, как описано выше относительно модуля 109 внутреннего прогнозирования кодера 100. Модуль 503 обратного преобразования из двоичной формы выводит остаточные коэффициенты 509 посредством выполнения обратной операции относительно модуля 404 преобразования в двоичную форму. Индекс 504 контекста выводится из модуля 503 обратного преобразования из двоичной формы для каждой ячейки, которая должна быть декодирована. Контекстная модель 505 выводит контекст 506, выбранный посредством индекса 504 контекста. Двоичный арифметический декодер 507 декодирует значение 508 ячейки из кодированного потока 113 битов с использованием контекста 506. Значение 508 ячейки принимается посредством контекстной модели 505 и используется для того, чтобы обновлять контекст 506. Значение 508 ячейки также принимается посредством модуля 503 обратного преобразования из двоичной формы. Модуль 503 обратного преобразования из двоичной формы декодирует остаточные коэффициенты в соответствии со способом 700, описанным со ссылкой на фиг. 7 ниже.
ТРАДИЦИОННОЕ КОДИРОВАНИЕ TU 8X8
[0092] Ниже описывается традиционный способ для кодирования единицы 1100 преобразования (TU) 8x8 с использованием обратного диагонального сканирования со ссылкой на фиг. 6 и 11. Единица 1100 преобразования (TU) 8x8, наблюдаемая на фиг. 11, не использует субблоки. Обратное диагональное сканирование 1101 вниз и влево применяется для всей единицы 1100 преобразования (TU) 8x8. Способ 600 по фиг. 6 применяется с использованием шаблона сканирования для обратного диагонального сканирования 1101 вниз и влево.
[0093] Этап 601 кодирования позиций последних значимых коэффициентов кодирует позицию последнего значимого коэффициента в единице 1100 преобразования (TU) 8x8. Позиция последнего значимого коэффициента задается как позиция последнего ненулевого остаточного коэффициента при выполнении поиска в единице 1100 преобразования (TU) 8x8 посредством применения обратного диагонального сканирования 1101 вниз и влево в прямом направлении.
[0094] Этап 602 поиска в таблице позиций 8x8, этап 603 кодирования флагов значимых коэффициентов и этап 604 определения последнего местоположения в поднаборе кодируют все значимые коэффициенты в поднаборе из 16 коэффициентов. Этапы 603 и 604 работают для поднабора, содержащего последний значимый коэффициент, когда используется обратное сканирование. Этап 602 поиска в таблице позиций 8x8 определяет индекс для текущего поднабора в таблице, хранящей обратное диагональное сканирование 1101 вниз и влево 8x8. Этап 603 кодирования флагов значимых коэффициентов кодирует один значимый коэффициент в поднаборе в кодированный поток 113 битов с использованием двоичного арифметического кодера 409. Этап 604 определения последнего местоположения в поднаборе завершает цикл этапов 602 и 603, как только все значимые коэффициенты в поднаборе сканированы. Для обратного сканирования, этот цикл проходит от максимального значения вплоть до нуля. Максимальное значение равно 16 за исключением поднабора, содержащего последний значимый коэффициент, при этом максимальное значение сконфигурировано с возможностью опускать последний значимый коэффициент из сканирования поднаборов.
[0095] Этап 605 кодирования остаточных уровней кодирует остаточный уровень для каждого значимого коэффициента в поднаборе. Остаточные уровни в поднаборе кодируются на нескольких этапах, причем каждый этап итеративно проходит по значимым коэффициентам в поднаборе. Во-первых, кодируются флаги, указывающие то, что абсолютное значение значимого коэффициента превышает единицу. Во-вторых, кодируются флаги, указывающие значимые коэффициенты, имеющие абсолютные значения, превышающие два, из значимых коэффициентов, имеющих абсолютные значения, превышающие единицу. В-третьих, кодируются флаги, указывающие знак каждого значимого коэффициента. В-четвертых, из значимых коэффициентов, имеющих значения, превышающие два, кодируется абсолютная величина минус три для этих значимых коэффициентов.
[0096] Этап 606 тестирования последнего поднабора инициирует итерации по этапам 602, 603, 604 и 605 до тех пор, пока не будет кодирован первый поднабор в единице 1100 преобразования (TU), после того как кодирован любой из поднаборов 4, 3 и 2 по мере необходимости, после чего способ 600 завершается.
[0097] Ниже описывается традиционный способ для кодирования единицы 1200 преобразования (TU) 8x8 с использованием обратного горизонтального сканирования со ссылкой на фиг. 6 и 12. Единица 1200 преобразования (TU) 8x8 не использует субблоки. Обратное горизонтальное сканирование 1201 применяется для всей единицы 1200 преобразования (TU) 8x8. Способ 600 применяется с использованием заданного шаблона сканирования.
[0098] Ниже описывается традиционный способ для кодирования единицы 1300 преобразования (TU) 8x8 с использованием обратного вертикального сканирования со ссылкой на фиг. 6 и 13. Единица 1300 преобразования (TU) 8x8 не использует субблоки. Обратное вертикальное сканирование 1301 применяется для всей единицы 1300 преобразования (TU) 8x8. Способ 600 применяется с использованием заданного шаблона сканирования.
ТРАДИЦИОННОЕ ДЕКОДИРОВАНИЕ TU 8X8
[0099] Ниже описывается традиционный способ для декодирования единицы 1100 преобразования (TU) 8x8 с использованием обратного диагонального сканирования со ссылкой на фиг. 7 и 11. Единица 1100 преобразования (TU) 8x8 не использует субблоки. Обратное диагональное сканирование 1101 вниз и влево применяется для всей единицы 1100 преобразования (TU) 8x8. Способ 700 применяется с использованием заданного шаблона сканирования.
[0100] Этап 701 декодирования позиций последних значимых коэффициентов декодирует местоположение последнего значимого коэффициента в единице 1100 преобразования (TU) 8x8, заданного в качестве последнего ненулевого остаточного коэффициента, когда шаблон сканирования применяется в прямом направлении.
[0101] Этап 702 поиска в таблице позиций 8x8, этап 703 декодирования значимых коэффициентов и этап 703 тестирования последнего местоположения в поднаборе декодируют флаги значимых коэффициентов в поднаборе посредством итеративного прохождения по каждому местоположению в поднаборе от последнего местоположения до первого местоположения и декодирования одного флага значимого коэффициента в расчете на местоположение. Этап 702 поиска в таблице позиций 8x8 определяет местоположение в единице 1100 преобразования (TU) 8x8 для текущего значимого коэффициента в поднаборе. Для поднаборов, содержащих последний значимый коэффициент, последнее местоположение задается таким образом, что позиция последнего значимого коэффициента исключается из сканирования поднаборов, в противном случае последняя позиция задается равной 16.
[0102] Этап 705 декодирования остаточных уровней декодирует абсолютную величину и знак для каждого значимого коэффициента в поднаборе. Этап 705 декодирования остаточных уровней декодирует остаточные уровни значимых коэффициентов посредством итеративного прохождения по значимым коэффициентам в поднаборе четыре раза. На первой итерации, декодируются флаги, указывающие то, превышает или нет абсолютное значение значимого коэффициента единицу. На второй итерации, декодируются флаги, указывающие то, что абсолютное значение значимых коэффициентов, превышающих единицу, также превышает два. На третьей итерации, декодируются флаги, указывающие знак для каждого значимого коэффициента. На четвертой итерации, для значимых коэффициентов, превышающих два, декодируется абсолютная величина минус три, обеспечивая восстановление остаточной абсолютной величины для случаев, в которых известно, что абсолютная величина превышает два.
[0103] Этап 706 тестирования последнего поднабора инициирует итерации по этапам 702, 703, 704 и 705 до тех пор, пока не будет декодирован первый поднабор в единице 1100 преобразования (TU), после того как кодирован любой из поднаборов 4, 3 и 2 по мере необходимости, после чего способ 700 завершается.
[0104] Ниже описывается традиционный способ для декодирования единицы 1200 преобразования (TU) 8x8 с использованием обратного горизонтального сканирования со ссылкой на фиг. 7 и 12. Единица 1200 преобразования (TU) 8x8 не использует субблоки. Обратное горизонтальное сканирование 1201 применяется для всей единицы 1200 преобразования (TU) 8x8. Способ 700 применяется с использованием заданного шаблона сканирования.
[0105] Ниже описывается традиционный способ для декодирования единицы 1300 преобразования (TU) 8x8 с использованием обратного вертикального сканирования со ссылкой на фиг. 7 и 13. Единица 1300 преобразования (TU) 8x8 не использует субблоки. Обратное вертикальное сканирование 1301 применяется для всей единицы 1300 преобразования (TU) 8x8. Способ 700 применяется с использованием заданного шаблона сканирования.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ. КОДИРОВАНИЕ TU 8X8
[0106] Ниже описывается способ 800 согласно настоящему раскрытию сущности для кодирования единицы 1500 преобразования (TU) 8x8 с использованием обратного диагонального сканирования вниз и влево со ссылкой на фиг. 8, 10A, 10B, 14, 15A, 15B и 15C. Единица 1500 преобразования (TU) 8x8, наблюдаемая на фиг. 15A, имеет размер субблока 4x4. Единица 1500 преобразования (TU) представляет квадратный слой нижнего уровня коэффициентов, которые должны быть сканированы для кодирования. В каждом субблоке, таком как субблок 1502, наблюдаемый на фиг. 15C, применяется обратное диагональное сканирование 1505 вниз и влево, как видно на фиг. 15C. При сканировании субблоков в единице 1500 преобразования (TU) 8x8, обратное диагональное сканирование 1504 верхнего слоя вниз и влево 2x2 применяется к представлению квадратного уровня 1503 верхнего слоя, как видно на фиг. 15B. Как видно на фиг. 15B, уровень 1503 верхнего слоя включает в себя компоновку 2x2 субблоков 1502 уровня нижнего слоя. Таким образом, флаги групп значимых коэффициентов представляют неперекрывающуюся область, так что субблоки не перекрываются в слое нижнего уровня. Следовательно, шаблон 1501 сканирования по фиг. 15A представляет комбинацию шаблона 1505 по фиг. 15C, реплицированного четыре раза согласно шаблону 1504 по фиг. 15B. Одно преимущество этого подхода состоит в том, что, вместо сохранения шаблона для массива размера 64 (8x8), как показано на фиг. 11, 12 и 13, шаблон 1501 может быть сохранен с использованием массива размера 4 (2x2)+16 (4x4)=20, приводя к результирующему уменьшению потребления запоминающего устройства. Дополнительно следует принимать во внимание, что любой из размеров 2x2, 4x4 и 8x8 массива, например, является квадратным.
[0107] Способ 800 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования. Способ 800 кодирует остаточные коэффициенты единицы преобразования (TU) с использованием групп значимых коэффициентов и описывается со ссылкой на фиг. 8. Единица преобразования (TU) разделяется на определенное число субблоков. Фиг. 10A иллюстрирует примерный верхний квадратный слой 1000 единицы преобразования (TU).
[0108] Единица 1400 преобразования (TU) 8x8, наблюдаемая на фиг. 14, представляющая собой пример единицы 1500 преобразования (TU) 8x8 по фиг. 15A, кодирует остаточные коэффициенты в двухслойной (верхний и нижний) иерархии. Единица 1400 преобразования (TU) 8x8 разделяется на субблоки одинакового размера, к примеру, субблок 4x4 1401. Субблоки в единице 1400 преобразования (TU) представляются посредством верхнего слоя 1402. Верхний слой 1402 включает в себя флаги групп значимых коэффициентов, к примеру, флаг 1403 группы значимых коэффициентов, каждый из которых может вычисляться или логически выводиться. Когда флаг группы значимых коэффициентов, к примеру, флаг 1403 группы значимых коэффициентов, вычисляется, флаг группы значимых коэффициентов указывает, является или нет значимым какой-либо из остаточных коэффициентов, к примеру, остаточный коэффициент 1404, в соответствующем субблоке, таком как субблок 1401. Когда флаг группы значимых коэффициентов логически выводится, все остаточные коэффициенты в соответствующем субблоке могут быть незначимыми.
[0109] В способе 800, наблюдаемом на фиг. 8, этап 801 кодирования позиций последних значимых коэффициентов кодирует координату последнего значимого коэффициента вдоль двухуровневого тракта сканирования. Этап 802 поиска в таблице позиций 2x2 определяет позицию для текущего субблока посредством применения поиска к обратному диагональному сканированию 1504 верхнего слоя вниз и влево 2x2. Это обеспечивает корректную идентификацию релевантного субблока 1502. Этап 803 поиска в таблице позиций 4x4 определяет смещение в позиции для текущего значимого коэффициента посредством выполнения поиска для обратного диагонального сканирования 1505 вниз и влево 4x4, за счет этого идентифицируя корректное местоположение в текущем субблоке 1502 4x4. Этап 804 определения флагов значимых коэффициентов тестирует значение остаточного коэффициента при определенном смещении в субблоке 1502 и в силу этого в единице 1500 преобразования (TU) 8x8, в качестве значимого (с единичным значением), если остаточный коэффициент является ненулевым, и незначимого (с нулевым значением) в противном случае.
[0110] Этап 805 тестирования последнего местоположения в субблоке инициирует итерации по этапам 803 и 804 таким образом, что тестируются все местоположения в субблоках, не содержащих последний значимый коэффициент, а для поднаборов, содержащих последний значимый коэффициент, все местоположения, предшествующие последнему значимому коэффициенту (при этом "предыдущий" допускает применение сканирования в прямом направлении). Для обратного сканирования, к примеру, шаблона 1505, последним в субблоке всегда должно быть верхнее левое местоположение. Для прямого сканирования, им должно быть либо нижнее правое местоположение для субблоков, не имеющих позиции последнего значимого коэффициента, и должно быть местоположение, непосредственно предшествующее позиции последнего значимого коэффициента в порядке прямого сканирования.
[0111] Этап 806 определения флагов групп значимых коэффициентов определяет флаг значимого коэффициента, чтобы указывать то, имеет или нет какой-либо (т.е. по меньшей мере один) из флагов значимых коэффициентов в субблоке единичное значение. Для субблока, содержащего последний значимый коэффициент, флаг группы значимых коэффициентов логически выводится как имеющий единичное значение. Для субблока, расположенного в верхнем левом углу единицы 1500 преобразования (TU), флаг группы значимых коэффициентов также логически выводится как имеющий единичное значение. Этап 807 кодирования групп значимых коэффициентов кодирует информацию, чтобы определять часть карты значимости, содержащейся в субблоке. Во-первых, флаги групп значимых коэффициентов, которые не выведены логически, кодируются в поток битов. Во-вторых, если флаг группы значимых коэффициентов имеет единичное значение, часть карты значимости, содержащейся в поднаборе, кодируется в поток битов. Этап 808 кодирования остаточных значений работает способом, аналогичным этапу 605 кодирования остаточных уровней, за исключением компоновки карты значимости на верхний слой 2x2 и нижний слой субблока 4x4. Этап 809 тестирования последнего субблока предоставляет итерацию по субблокам от субблока, содержащего последний значимый коэффициент, до субблока, расположенного в верхнем левом углу единицы 1500 преобразования (TU). После того, как этот субблок кодируется, способ 800 завершается. Специалисты в данной области техники должны принимать во внимание, что способ 800 обеспечивает возможность использования сканирования субблоков 4x4 при всех размерах единиц преобразования (TU), поддерживаемых посредством видеокодера 100.
[0112] Ниже описываются операции верхнего слоя при определении флагов групп значимых коэффициентов в отношении примерного верхнего слоя 1000, наблюдаемого на фиг. 10A. Примерный верхний слой 1000 состоит из одного significant_coeffgroup_flag в расчете на субблок. Для каждого субблока в примерном верхнем слое 1000, significant_coeffgroup_flag либо вычисляется, либо логически выводится. Для верхнего левого субблока в примерном верхнем слое 1000, significant_coeffgroup_flag всегда логически выводится как имеющий единичное значение. Для субблока в примерном верхнем слое 1000, содержащем последний значимый коэффициент, significant_coeffgroup_flag также логически выводится как имеющий единичное значение. Для других местоположений в примерном верхнем слое 1000, significant_coeffgroup_flag, к примеру, significant_coeffgroup_flag X 1001, логически выводится как имеющий единичное значение, только если правый соседний узел, к примеру, significant_coeffgroup_flag A 1002, и нижний соседний узел, к примеру, significant_coeffgroup_flag B 1003, оба имеют единичное значение. Если правый соседний или нижний соседний significant_coeffgroup_flag выходит за пределы примерного верхнего слоя 1000, нулевое значение логически выводится для соседнего узла. Когда significant_coeffgroup_flag логически выводится, он не кодируется в кодированном потоке 113 битов. Когда significant_coeffgroup_flag не выводится логически, и если известно, что все significant_coeff_flag в соответствующем субблоке имеют нулевое значение, то вычисляется significant_coeffgroup_flag с нулевым значением. Альтернативно, если по меньшей мере один из significant_coeff_flag в соответствующем субблоке имеет единичное значение, то вычисляется significant_coeffgroup_flag с единичным значением. Вычисленные значения significant_coeffgroup_flag для примерного верхнего слоя 1000 кодируются в кодированный поток 113 битов с использованием обратного диагонального сканирования вниз и влево.
[0113] Например, со ссылкой на фиг. 10B, в верхнем слое 1004, затененные significant_coeffgroup_flag, к примеру, significant_coeffgroup_flag 1005, логически выводятся как имеющие единичное значение на основе правого соседнего и нижнего соседнего узла и, соответственно, не кодируются в кодированном потоке 113 битов. Significant_coeffgroup_flag 1006 содержит последний значимый коэффициент и, следовательно, логически выводится как имеющий единичное значение. Significant_coeffgroup_flag, к примеру, significant_coeffgroup_flag 1007, расположены после последнего значимого коэффициента, и, следовательно, значения вообще не выводятся логически или вычисляются, или кодируются для этих местоположений. Significant_coeffgroup_flag 1008, расположенный сверху слева от верхнего слоя 804, всегда логически выводится как имеющий единичное значение.
[0114] При кодировании каждого significant_coeffgroup_flag в верхнем слое, контекст выбирается из контекстной модели 404. Для единиц преобразования (TU), кодирующих выборки сигнала яркости, и единиц преобразования (TU), кодирующих выборки сигнала цветности, доступно два контекста, обеспечивая всего четыре контекста для кодирования примерного верхнего слоя 1000. Выбор контекста для каждого significant_coeffgroup_flag в примерном верхнем слое 1000 зависит от правого соседнего узла и нижнего соседнего узла. В качестве примерного случая, контекст для significant_coeffgroup_flag X 1001 определяется посредством выполнения логического "OR" для значений significant_coeffgroup_flag A 1002 и significant_coeffgroup_flag B 1003. Левые соседние узлы и нижние соседние узлы, выходящие за пределы примерного верхнего слоя 1000, логически выводятся как имеющие нулевое значение для целей выбора контекста.
[0115] Ниже описывается способ согласно настоящему раскрытию сущности для кодирования единицы 1600 преобразования (TU) 8x8 с использованием обратного горизонтального сканирования со ссылкой на фиг. 8, 16A, 16B и 16C. Единица 1600 преобразования (TU) 8x8 имеет размер субблока нижнего уровня 4x4. В каждом субблоке, таком как субблок 1602, применяется обратное горизонтальное сканирование 1605, приводя к полному шаблону 1601 сканирования, наблюдаемому на фиг. 16A. Чтобы сканировать субблоки 1602 в единице 1600 преобразования (TU) 8x8, применяется обратное горизонтальное сканирование 1604 верхнего слоя 2x2. Способ 800 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования.
[0116] Ниже описывается способ согласно настоящему раскрытию сущности для кодирования единицы 1700 преобразования (TU) 8x8 с использованием обратного вертикального сканирования со ссылкой на фиг. 8, 17A, 17B и 17C. Единица 1700 преобразования (TU) 8x8 имеет размер субблока 4x4. В каждом субблоке нижнего слоя, к примеру, в субблоке 1702 по фиг. 17C, применяется обратное вертикальное сканирование 1705. При сканировании субблоков в единице 1700 преобразования (TU) 8x8, применяется обратное вертикальное сканирование 1704 верхнего слоя 2x2, наблюдаемое на фиг. 17B, приводя к полному шаблону 1701 сканирования, наблюдаемому на фиг. 17A. Способ 800 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ. ДЕКОДИРОВАНИЕ TU 8X8
[0117] Ниже описывается способ согласно настоящему раскрытию сущности для декодирования единицы 1500 преобразования (TU) 8x8 со ссылкой на фиг. 9, 15A, 15B и 15C. Единица 1500 преобразования (TU) 8x8 имеет размер субблока 4x4. В каждом субблоке, таком как субблок 1502, применяется обратное диагональное сканирование 1505 вниз и влево. При сканировании субблоков в единице 1500 преобразования (TU) 8x8, применяется обратное диагональное сканирование 1504 вниз и влево 2x2, приводя к полному шаблону 1501 сканирования. Способ 900 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования.
[0118] Ниже описывается способ 900 для декодирования остаточных коэффициентов единицы преобразования (TU) с использованием групп значимых коэффициентов со ссылкой на фиг. 9. Единица преобразования (TU) разделяется на определенное число субблоков. Этап 901 декодирования позиций последних значимых коэффициентов декодирует координату последнего значимого коэффициента в единице 1500 преобразования (TU) вдоль двухуровневого тракта 1501 сканирования. Этап 902 поиска в таблице позиций 2x2 определяет позицию для текущего субблока посредством применения поиска к обратному диагональному сканированию 1504 верхнего слоя вниз и влево 2x2. Этап 903 декодирования групп значимых коэффициентов либо определяет логически выведенное значение флага значимого коэффициента с использованием процесса, аналогичного процессу, описанному на этапе 806 определения флагов групп значимых коэффициентов, либо декодирует один флаг группы значимых коэффициентов из кодированного потока 113 битов. Этап 904 тестирования флагов групп значимых коэффициентов тестирует значение определенного флага группы значимых коэффициентов. Если флаг имеет единичное значение, управление переходит к этапу 905 поиска в таблице позиций 4x4, в противном случае, когда флаг имеет нулевое значение, управление переходит к этапу 909 тестирования последнего субблока. Этап 905 определяет смещение в позиции для текущего значимого коэффициента посредством выполнения поиска для обратного диагонального сканирования вниз и влево 4x4. Результат этапа 905 поиска в таблице позиций 4x4 комбинируется с результатом этапа 902 поиска в таблице позиций 2x2, чтобы предоставлять смещение позиции в единицу 1500 преобразования (TU) 8x8. Этап 906 декодирования флагов значимых коэффициентов затем декодирует флаг значимого коэффициента для одного остаточного коэффициента в субблоке, таком как субблок 1502. Когда достигается конечный значимый коэффициент в субблоке, и ни один предыдущий значимый коэффициент в субблоке не имеют единичное значение, и соответствующий флаг группы значимых коэффициентов вычислен (т.е. не логически выведен), конечный значимый коэффициент в субблоке логически выводится как имеющий единичное значение. Этап 907 тестирования последнего местоположения в субблоке тестирует позицию в субблоке, проходя в цикле по этапам 905 и 906 до тех пор, пока субблок 1502 4x4 не будет полностью обработан. Для первого субблока, который должен быть обработан, содержащего флаг последнего значимого коэффициента, только местоположения после (при этом "после" задается в обратном порядке сканирования) итеративно проходятся в субблоке. Когда обработана последняя позиция субблока, этап 908 декодирования остаточных уровней декодирует остаточные уровни способом, аналогичным этапу 705 декодирования остаточных уровней. Этап 909 тестирования последнего субблока предоставляет итерацию по всем субблокам в единице 1500 преобразования (TU), начиная с субблока, содержащего последний значимый коэффициент, и двигаясь в обратном направлении до тех пор, пока субблок, расположенный в верхнем левом углу единицы 1500 преобразования (TU), не будет обработан посредством этапов 902-908, после чего способ 900 завершается. Специалисты в данной области техники должны принимать во внимание, что способ 900 обеспечивает возможность использования сканирования субблоков 4x4 при всех размерах единиц преобразования (TU), поддерживаемых посредством видеодекодера 200.
[0119] Ниже описывается способ согласно настоящему раскрытию сущности для декодирования единицы 1600 преобразования (TU) 8x8 со ссылкой на фиг. 9, 16A, 16B и 16C. Единица 1600 преобразования (TU) 8x8 имеет размер субблока 4x4. В каждом субблоке, таком как субблок 1602, применяется обратное горизонтальное сканирование 1605. При сканировании субблоков в единице 1600 преобразования (TU) 8x8, применяется обратное горизонтальное сканирование 1604 2x2. Способ 900 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования.
[0120] Ниже описывается способ согласно настоящему раскрытию сущности для декодирования единицы 1700 преобразования (TU) 8x8 со ссылкой на фиг. 9, 17A, 17B и 17C. Единица 1700 преобразования (TU) 8x8 имеет размер субблока 4x4. В каждом субблоке, таком как субблок 1702, применяется обратное вертикальное сканирование 1705. При сканировании субблоков в единице 1700 преобразования (TU) 8x8, применяется обратное вертикальное сканирование 1704 2x2. Способ 900 применяется с использованием заданного размера субблока и размера верхнего слоя и шаблона сканирования.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ. ДИАГОНАЛЬНОЕ СКАНИРОВАНИЕ ВЕРХНЕГО СЛОЯ ТОЛЬКО ДЛЯ ЕДИНИЦЫ ПРЕОБРАЗОВАНИЯ 8X8
[0121] Хотя способы 800 и 900 применяются к единицам 1500, 1600 и 1700 преобразования (TU), каждый из них применяет идентичный шаблон сканирования от слоя субблока до верхнего слоя. Одна альтернатива состоит в том, чтобы использовать только обратное диагональное сканирование вниз и влево для сканирования верхнего слоя для единиц 1500, 1600 и 1700 преобразования (TU). Дополнительно, сканирование верхнего слоя может задаваться как обратное диагональное вниз и влево для всех размеров единиц преобразования. Шаблон сканирования верхнего слоя в таком случае является независимым от шаблона сканирования нижнего слоя. Это исключает потребность в запоминающем устройстве для обратного горизонтального сканирования 1604 2x2 и обратного диагонального вертикального сканирования 1704 2x2.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ. МНОГОКРАТНОЕ ИСПОЛЬЗОВАНИЕ СКАНИРОВАНИЯ ЕДИНИЦ ПРЕОБРАЗОВАНИЯ 8X8 ДЛЯ СКАНИРОВАНИЯ ВЕРХНЕГО СЛОЯ 32X32
[0122] Единица преобразования 32x32 использует сканирование верхнего слоя 8x8, представляющего собой обратное диагональное сканирование вниз и влево. Можно заменять сканирование верхнего слоя 8x8 обратным диагональным сканированием 1500 8x8, извлекаемым из обратного диагонального сканирования 1504 2x2 и обратного диагонального сканирования 1505 4x4. Такая компоновка обеспечивает исключение таблицы поиска для сканирования верхнего слоя 8x8, уменьшая требования по хранению.
[0123] Специалисты в данной области техники должны принимать во внимание, что способы 600 и 700, когда применяются для указанных размеров субблоков, обеспечивают уменьшение числа таблиц, присутствующих в видеокодере 100 или видеодекодере 200.
ВАРИАНТ ОСУЩЕСТВЛЕНИЯ. СКАНИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СМЕЩЕНИЙ
[0124] Фиг. 18A-18C иллюстрируют дополнительную реализацию, в которой линейный массив значений извлекается из двумерного массива, и смещения используются в линейном массиве для того, чтобы устанавливать различие между различными субблоками двумерного массива. Фиг. 18A иллюстрирует то, что к единице преобразования 8x8 осуществляется доступ как 4 раза по 4x4 единицы (субблока) в порядке A, B, C и D, представляющем собой прямое сканирование вниз (горизонтальное и слева направо), при этом каждый субблок обходится согласно прямому сканированию вниз. Специалисты в данной области техники должны принимать во внимание, что реализация, проиллюстрированная на фиг. 18A-18C, также обеспечивает сканирование единицы преобразования 8x8 в обратном направлении.
[0125] Как видно на фиг. 18B, сканирование каждого субблока приводит к соответствующему линейному массиву значений. При необходимости, четыре массива по фиг. 18B могут быть сохранены как есть, чтобы по сути задавать порядок доступа при сканировании значений соответствующей единицы преобразования.
[0126] Альтернативно, как проиллюстрировано на фиг. 18C, сканирование единицы преобразования по фиг. 18A может быть сохранено в качестве одной линейного массива из 16 (=4x4) значений, где смещение (X) используется для того, чтобы восстанавливать 4 массива. Посредством изменения X от 0, 4, 32 и 36, может восстанавливаться каждый из четырех массивов по фиг. 18B.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0127] Различные компоновки, раскрытые в настоящем документе, предоставляют возможность кодирования и декодирования единицы преобразования, имеющей квадратные слои верхнего и нижнего уровня, при этом слой верхнего уровня представляет квадратную компоновку самое большее из четырех флагов групп значимых коэффициентов (например: 2x2). Это можно видеть, например, на фиг. 15B, 16B и 17B. Это обеспечивает эффективный обход квадратного слоя 8x8 нижнего уровня (фиг. 15A, 16A и 17A, соответственно) согласно требуемому шаблону сканирования, применяемому к субблоку 4x4 (фиг. 15C, 16C и 17C, соответственно). По сути, единица преобразования 8x8 может быть кодирована или декодирована с использованием комбинации сканирования нижнего уровня 4x4 и сканирования верхнего уровня 2x2.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
[0128] Описанные компоновки являются применимыми к компьютерным отраслям и отраслям обработки данных и, в частности, для обработки цифровых сигналов для кодирования и декодирования сигналов, таких как видеосигналы.
[0129] Выше описаны только некоторые варианты осуществления настоящего изобретения, и модификации и/или изменения могут вноситься в них без отступления от объема и сущности изобретения, при этом варианты осуществления являются иллюстративными, а не ограничивающими.
[0130] (Только для Австралии) В контексте данного подробного описания, слово "содержащий" означает "включающий в себя преимущественно, но не обязательно исключительно" либо "имеющий", либо "включающий в себя", а "не состоящий только из". Варианты слова "содержащий", к примеру, "содержать" и "содержит", имеют соответствующие варьирующиеся значения.