КОДИРОВАНИЕ ПОЗИЦИИ ПОСЛЕДНЕГО ЗНАЧИМОГО КОЭФФИЦИЕНТА В ВИДЕОБЛОКЕ НА ОСНОВЕ ПОРЯДКА СКАНИРОВАНИЯ ДЛЯ БЛОКА ПРИ КОДИРОВАНИИ ВИДЕО
CODING POSITION OF LAST SIGNIFICANT COEFFICIENT WITHIN VIDEO BLOCK BASED ON SCANNING ORDER FOR BLOCK IN VIDEO CODING

[0001] Данная заявка испрашивает приоритет предварительной патентной заявки США № 61/419740, поданной 3 декабря 2010 года, предварительной патентной заявки США № 61/426426, поданной 22 декабря 2010 года, предварительной патентной заявки США № 61/426360, поданной 22 декабря 2010 года, и предварительной патентной заявки США № 61/426372, поданной 22 декабря 2010 года, содержимое каждой из которых полностью содержится в данном документе по ссылке.
Область техники, к которой относится изобретение
[0002] Данное раскрытие относится к кодированию видео, а более конкретно, к кодированию синтаксической информации, связанной с коэффициентами видеоблока.
Уровень техники
[0003] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видео, как технологии сжатия видео, описанные в стандартах, заданных посредством разрабатываемых в настоящее время стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий сжатия видео.
[0004] Технологии сжатия видео выполняют пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую видеопоследовательностям. Для блочного кодирования видео серия последовательных видеомакроблоков (т.е. видеокадр или часть видеокадра) может быть сегментирована на видеоблоки, которые также могут упоминаться как древовидные блоки, единицы кодирования (CU) и/или узлы кодирования. Видеоблоки в серии внутренне кодированных последовательных (I-) макроблоков изображения кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном изображении. Видеоблоки в серии взаимно кодированных последовательных (P- или B-) макроблоков изображения могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном изображении или временное прогнозирование относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры.
[0005] Пространственное или временное прогнозирование приводит к прогнозному блоку для блока, который должен быть кодирован. Остаточные данные представляют пикселные разности между исходным блоком, который должен быть кодирован, и прогнозным блоком. Взаимно кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих прогнозный блок, и остаточным данным, указывающим разность между кодированным блоком и прогнозным блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия остаточные данные могут быть преобразованы из пикселной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, первоначально размещаемые в двумерном массиве, могут сканироваться для того, чтобы формировать одномерный вектор коэффициентов преобразования, и может применяться энтропийное кодирование с тем, чтобы достигать еще большего сжатия.
Сущность изобретения
[0006] Настоящее раскрытие описывает технологии для кодирования коэффициентов, ассоциированных с блоком видеоданных, во время процесса кодирования видео, включающие в себя технологии для кодирования информации, которая идентифицирует позицию последнего ненулевого или последнего "значимого" коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, т.е. информации позиции последнего значимого коэффициента для блока. Технологии этого раскрытия могут повышать эффективность для кодирования информации позиции последнего значимого коэффициента для блоков видеоданных, используемых для того, чтобы кодировать блоки посредством кодирования информации позиции последнего значимого коэффициента для конкретного блока на основе информации, которая идентифицирует порядок сканирования, ассоциированный с блоком, т.е. информации порядка сканирования для блока. Другими словами, технологии могут улучшать сжатие информации позиции последнего значимого коэффициента для блоков, когда кодируется информация. Технологии этого раскрытия также могут давать возможность системам кодирования иметь меньшую сложность относительно других систем при кодировании информации позиции последнего значимого коэффициента для блоков, посредством кодирования информации позиции последнего значимого коэффициента для конкретного блока с использованием общей статистики, когда один из множества порядков сканирования используется для того, чтобы кодировать блок.
[0007] В одном примере, эффективность кодирования может быть повышена, а сложность системы кодирования может быть уменьшена за счет кодирования координат X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и переставленных (или "со сменой мест") координат X и Y кодирования, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования.
[0008] В этом примере, первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Вследствие симметрии между первым и вторым порядками сканирования вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Другими словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, координаты X и Y и переставленные координаты X и Y могут быть кодированы с использованием общей статистики для целей контекстно-адаптивного энтропийного кодирования, что может приводить к использованию систем кодирования, которые имеют меньшую сложность относительно других систем. Кроме того, общая статистика может быть обновлена на основе координат X и Y и переставленных координат X и Y, что может приводить к большей точности статистики, чем аналогичная статистика, обновленная с использованием других технологий, и в силу этого к более эффективному кодированию соответствующих координат.
[0009] В другом примере, эффективность кодирования может быть повышена посредством кодирования информации позиции последнего значимого коэффициента для блока видеоданных инкрементным способом до необходимой степени, что может приводить к более эффективному кодированию информации. Кроме того, в случаях, если необходимо полностью кодировать информацию, эффективность кодирования может быть повышена посредством кодирования информации с использованием контекстно-адаптивного энтропийного кодирования, так что статистика, используемая для того, чтобы кодировать информацию, выбирается, по меньшей мере, частично на основе порядка сканирования, ассоциированного с блоком. Такое кодирование информации может приводить к использованию более точной статистики, чем при использовании других способов, и, кроме того, к более эффективному кодированию информации позиции последнего значимого коэффициента для блока.
[0010] Технологии этого раскрытия могут быть использованы в любой технологии контекстно-адаптивного энтропийного кодирования, включающей в себя CABAC, энтропийное кодирование с сегментированием на интервалы вероятности (PIPE) или другую технологию контекстно-адаптивного энтропийного кодирования. CABAC описывается в настоящем раскрытии в целях иллюстрации, но без ограничения в отношении технологий, широко описанных в настоящем раскрытии. Кроме того, технологии могут, в общем, применяться к кодированию других типов данных, например, в дополнение к видеоданным.
[0011] Соответственно, технологии этого раскрытия могут обеспечивать использование более эффективных способов кодирования относительно других способов и использование систем кодирования, которые имеют меньшую сложность относительно других систем, при кодировании информации позиции последнего значимого коэффициента для одного или более блоков видеоданных. Таким образом, может быть относительная экономия битов для кодированного потока битов, включающего в себя информацию, и относительное уменьшение сложности для системы, используемой для того, чтобы кодировать информацию, при использовании технологий этого раскрытия.
[0012] В одном примере, способ кодирования коэффициентов, ассоциированных с блоком видеоданных, во время процесса кодирования видео включает в себя кодирование координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирование переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0013] В другом примере, устройство для кодирования коэффициентов, ассоциированных с блоком видеоданных, во время процесса кодирования видео включает в себя видеокодер, выполненный с возможностью кодировать координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодировать переставленные координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0014] В другом примере, устройство для кодирования коэффициентов, ассоциированных с блоком видеоданных, во время процесса кодирования видео включает в себя средство для кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и средство для кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0015] Технологии, описанные в данном раскрытии, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении либо в комбинациях вышеозначенного. При реализации в аппаратных средствах, устройство может быть осуществлено как интегральная схема, процессор, дискретная логика либо любая комбинация вышеозначенного. При реализации в программном обеспечении, программное обеспечение может выполняться в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на материальном машиночитаемом носителе и загружено и приведено в исполнение в процессоре.
[0016] Соответственно, настоящее раскрытие также рассматривает машиночитаемый носитель, содержащий инструкции, которые при выполнении предписывают процессору кодировать коэффициенты, ассоциированные с блоком видеоданных, во время процесса кодирования видео, при этом инструкции предписывают процессору кодировать координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодировать переставленные координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0017] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[0018] Фиг. 1 является блок-схемой, которая иллюстрирует пример системы кодирования и декодирования видео, которая может реализовывать технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0019] Фиг. 2 является блок-схемой, которая иллюстрирует пример видеокодера, который может реализовывать технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0020] Фиг. 3 является блок-схемой, которая иллюстрирует пример видеодекодера, который может реализовывать технологии для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0021] Фиг. 4A-4C являются концептуальными схемами, которые иллюстрируют пример блока видеоданных и соответствующей информации позиции значимых коэффициентов и информации позиции последнего значимого коэффициента.
[0022] Фиг. 5A-5C являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, сканированных с использованием зигзагообразного порядка сканирования, горизонтального порядка сканирования и вертикального порядка сканирования.
[0023] Фиг. 6A-6C являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, для которых информация позиции последнего значимого коэффициента кодируется на основе информации порядка сканирования, согласно технологиям этого раскрытия.
[0024] Фиг. 7 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0025] Фиг. 8 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0026] Фиг. 9 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0027] Фиг. 10 является блок-схемой последовательности операций способа, которая иллюстрирует другой пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
[0028] Фиг. 11 является блок-схемой последовательности операций способа, которая иллюстрирует другой пример способа для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия.
Подробное описание изобретения
[0029] Настоящее раскрытие описывает технологии для кодирования коэффициентов, ассоциированных с блоком видеоданных, во время процесса кодирования видео, включающие в себя технологии для кодирования информации, которая идентифицирует позицию последнего ненулевого или последнего "значимого" коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, т.е. информации позиции последнего значимого коэффициента для блока. Технологии этого раскрытия могут повышать эффективность для кодирования информации позиции последнего значимого коэффициента для блоков видеоданных, используемых для того, чтобы кодировать блоки посредством кодирования информации позиции последнего значимого коэффициента для конкретного блока на основе информации, которая идентифицирует порядок сканирования, ассоциированный с блоком, т.е. информации порядка сканирования для блока. Другими словами, технологии могут улучшать сжатие информации позиции последнего значимого коэффициента для блоков, когда кодируется информация. Технологии этого раскрытия также могут обеспечивать использование систем кодирования, которые имеют меньшую сложность относительно других систем, при кодировании информации позиции последнего значимого коэффициента для блоков, посредством кодирования информации позиции последнего значимого коэффициента для конкретного блока с использованием общей статистики, когда один из множества порядков сканирования используется для того, чтобы кодировать блок.
[0030] В настоящем раскрытии, термин "кодирование" (coding) означает кодирование (encoding), которое осуществляется в кодере, или декодирование, которое осуществляется в декодере. Аналогично, термин "кодер" (coder) означает кодер (encoder), декодер или комбинированный кодер/декодер ("кодек"). Термины кодер (coder), кодер (encoder), декодер и кодек означают конкретные машины, спроектированные с возможностью кодирования (coding) (кодирования (encoding) и/или декодирования) видеоданных в соответствии с этим раскрытием.
[0031] В общем, эмпирическое тестирование, выполняемое при разработке этих технологий, демонстрирует корреляцию между информацией позиции последнего значимого коэффициента и информацией порядка сканирования для блока видеоданных. Например, позиция последнего значимого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, т.е. порядку сканирования, используемому для того, чтобы кодировать блок, может зависеть от порядка сканирования. Другими словами, статистика, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, может варьироваться в зависимости от того, какой порядок сканирования используется для того, чтобы кодировать блок. Соответственно, кодирование информации позиции последнего значимого коэффициента для блока с использованием контекстно-адаптивного энтропийного кодирования, так что статистика, используемая для того, чтобы кодировать информацию, выбирается, по меньшей мере, частично на основе информации порядка сканирования для блока, может давать в результате более точную статистику и тем самым может приводить к более эффективному кодированию информации позиции последнего значимого коэффициента.
[0032] Дополнительно, в соответствии с технологиями этого раскрытия, информация позиции последнего значимого коэффициента для блока видеоданных может быть кодирована с использованием координат X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком. В этих случаях, вышеописанная статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Поскольку некоторые порядки сканирования, например, первый порядок сканирования и второй порядок сканирования, могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как переставленные (или "со сменой мест") координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, координаты X и Y и переставленные координаты X и Y могут быть кодированы с использованием общей статистики.
[0033] Соответственно, кодирование координат X и Y, когда порядок сканирования содержит первый порядок сканирования, и кодирование переставленных координат X и Y, когда порядок сканирования содержит второй порядок сканирования с использованием общей статистики, может приводить к уменьшенной сложности системы кодирования. Кроме того, обновление общей статистики на основе координат X и Y и переставленных координат X и Y также может давать в результате более точную статистику, что также может приводить к более эффективному кодированию информации позиции последнего значимого коэффициента.
[0034] В качестве одного примера, технологии этого раскрытия могут повышать эффективность кодирования и сокращать сложность системы кодирования посредством кодирования координат X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования.
[0035] В этом примере, координаты X и Y и переставленные координаты X и Y могут быть кодированы с использованием общей статистики для целей контекстно-адаптивного энтропийного кодирования, что может приводить к использованию систем кодирования, которые имеют меньшую сложность относительно других систем, например, систем, которые включают в себя отдельную статистику для каждого порядка сканирования, который может быть использован в системах для того, чтобы кодировать блоки видеоданных. Кроме того, общая статистика может быть обновлена на основе координат X и Y и переставленных координат X и Y, что может приводить к большей точности статистики, чем аналогичная статистика, обновленная с использованием других технологий, например, статистика, обновленная для конкретного порядка сканирования, который может быть использован в системе для того, чтобы кодировать блоки видеоданных. Как результат, координаты X и Y и переставленные координаты X и Y, т.е. информация позиции последнего значимого коэффициента для блока, могут быть кодированы более эффективно, чем аналогичная информация, кодированная с использованием других способов.
[0036] В качестве другого примера, технологии этого раскрытия могут повышать эффективность кодирования посредством кодирования информации позиции последнего значимого коэффициента для блока видеоданных инкрементным способом до необходимой степени. Как результат, информация позиции последнего значимого коэффициента может быть кодирована с использованием меньшего объема информации, чем при использовании других технологий, например, при кодировании информации позиции последнего значимого коэффициента для блока всегда полностью. Кроме того, в случаях, если необходимо полностью кодировать информацию позиции последнего значимого коэффициента, эффективность кодирования может быть повышена посредством кодирования информации с использованием контекстно-адаптивного энтропийного кодирования, так что статистика, используемая для того, чтобы кодировать информацию, выбирается, по меньшей мере, частично на основе информации порядка сканирования для блока. Такое кодирование информации позиции последнего значимого коэффициента может приводить к использованию более точной статистики, чем при использовании других способов, например, к выбору статистики без учета информации порядка сканирования для блока, и, кроме того, к более эффективному кодированию информации позиции последнего значимого коэффициента.
[0037] В примерах, описанных выше, для того, чтобы кодировать информацию позиции последнего значимого коэффициента для блока видеоданных с использованием статистики, информация может быть кодирована посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (CABAC), который включает в себя применение контекстной модели, которая включает в себя статистику на основе одного или более контекстов. В других примерах, другие процессы контекстно-адаптивного энтропийного кодирования, такие как контекстно-адаптивное кодирование переменной длины (CAVLC), энтропийное кодирование с сегментированием на интервалы вероятности (PIPE) и другие процессы контекстно-адаптивного энтропийного кодирования, также могут использовать технологии этого раскрытия. CABAC описывается в настоящем раскрытии в целях иллюстрации, но без ограничения в отношении технологий, широко описанных в настоящем раскрытии. Кроме того, технологии могут, в общем, применяться к кодированию других типов данных, например, в дополнение к видеоданным.
[0038] Кодирование информации позиции последнего значимого коэффициента для одного или более блоков видеоданных способом, описанным выше, может обеспечивать использование более эффективных способов кодирования относительно других способов и использование систем кодирования, которые имеют меньшую сложность относительно других систем. Таким образом, может быть относительная экономия битов для кодированного потока битов, включающего в себя информацию, и относительное уменьшение сложности для системы, используемой для того, чтобы кодировать информацию, при использовании технологий этого раскрытия.
[0039] Фиг. 1 является блок-схемой, которая иллюстрирует пример системы 10 кодирования и декодирования видео, которая может реализовывать технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 14 через канал 16 связи. Исходное устройство 12 и целевое устройство 14 могут содержать любые из широкого диапазона устройств. В некоторых случаях, исходное устройство 12 и целевое устройство 14 могут содержать устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи, когда канал 16 связи является беспроводным.
[0040] Тем не менее, технологии этого раскрытия, которые относятся к эффективному кодированию информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, не обязательно ограничены приложениями или настройками беспроводной связи. Эти технологии могут, в общем, применяться к любому сценарию, в котором выполняется кодирование или декодирование, включающему в себя телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, кодированное цифровое видео, которое кодируется на носитель хранения данных или извлекается и декодируется из носителя хранения данных, либо другие сценарии. Соответственно, канал 16 связи не требуется, и технологии этого раскрытия могут применяться к настройкам, при которых применяется кодирование, или при которых декодирование применяется, например, вообще без передачи данных между устройствами кодирования и декодирования.
[0041] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор (модем) 22 и передающее устройство 24. Целевое устройство 14 включает в себя приемное устройство 26, модем 28, видеодекодер 30 и устройство 32 отображения. В соответствии с этим раскрытием, видеокодер 20 исходного устройства 12 и/или видеодекодер 30 целевого устройства 14 могут быть выполнены с возможностью применять технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные из внешнего видеоисточника 18, такого как внешняя камера. Аналогично, целевое устройство 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.
[0042] Проиллюстрированная система 10 по фиг. 1 является просто одним примером. Технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных могут быть выполнены посредством любого устройства кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия выполняются посредством устройства кодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Кроме того, технологии этого раскрытия также могут быть выполнены посредством видеопрепроцессора. Исходное устройство 12 и целевое устройство 14 являются просто примерами таких устройств кодирования, в которых исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 14. В некоторых примерах устройства 12, 14 могут работать практически симметрично так, что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0043] Видеоисточник 18 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточником 18 является видеокамера, исходное устройство 12 и целевое устройство 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, как упомянуто выше, технологии, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 20. Кодированная видеоинформация затем может быть модулирована посредством модема 22 согласно стандарту связи и передана в целевое устройство 14 через передающее устройство 24. Модем 22 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью модуляции сигналов. Передающее устройство 24 может включать в себя схемы, разработанные для передачи данных, в том числе усилители, фильтры и одну или более антенн.
[0044] Приемное устройство 26 целевого устройства 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию. С другой стороны, процесс кодирования видео, описанный выше, может реализовывать одну или более технологий, описанных в данном документе, для того, чтобы эффективно кодировать информацию позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных. Информация, передаваемая по каналу 16, может включать в себя синтаксическую информацию, заданную посредством видеокодера 20, которая также используется посредством видеодекодера 30, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку блоков видеоданных (например, макроблоков или единиц кодирования), например, информацию позиции последнего значимого коэффициента и/или информацию порядка сканирования, а также другую информацию. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0045] В примере по фиг. 1, канал 16 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 16 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи, для передачи видеоданных из исходного устройства 12 в целевое устройство 14, включающих в себя любую надлежащую комбинацию проводных или беспроводных сред. Канал 16 связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать связь из исходного устройства 12 в целевое устройство 14. В других примерах, устройства кодирования или декодирования могут реализовывать технологии этого раскрытия вообще без связи между такими устройствами. Например, устройство кодирования может кодировать и сохранять кодированный поток битов согласно технологиям этого раскрытия. Альтернативно, устройство декодирования может принимать или извлекать кодированный поток битов и декодировать поток битов согласно технологиям этого раскрытия.
[0046] Видеокодер 20 и видеодекодер 30 могут работать согласно такому стандарту сжатия видео, как стандарт ITU-T H.264, альтернативно упоминаемый как MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом кодирования. Другие примеры включают в себя разрабатываемые в настоящее время стандарты MPEG-2, ITU-T H.263 и стандарт высокоэффективного кодирования видео (HEVC). В общем, технологии этого раскрытия описываются относительно HEVC, но следует понимать, что эти технологии также могут быть использованы в сочетании с другими стандартами кодирования видео. Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио-кодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0047] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера и декодера, к примеру, один или более микропроцессоров, процессоры цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующей камере, компьютере, мобильном устройстве, абонентском устройстве, широковещательном устройстве, абонентской приставке, на сервере и т.п.
[0048] Видеопоследовательность типично включает в себя серии видеокадров. Группы изображений (GOP), в общем, содержат последовательность из одного или более видеокадров. GOP может включать в себя в заголовке GOP, заголовке одного или более кадров GOP или в другом месте синтаксические данные, которые описывают число кадров, включенных в GOP. Каждый кадр может включать в себя синтаксические данные кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер, например, видеокодер 20, типично управляет видеоблоками в отдельных видеокадрах, чтобы кодировать видеоданные. Согласно стандарту ITU-T H.264, видеоблок может соответствовать макроблоку или сегменту макроблока. Согласно другим стандартам, например, HEVC, подробнее описанным ниже, видеоблок может соответствовать единице кодирования (например, наибольшей единице кодирования) или сегменту единицы кодирования. Видеоблоки могут иметь фиксированный или варьирующийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя множество серий последовательных макроблоков, т.е. частей видеокадра. Каждая серия последовательных макроблоков может включать в себя множество видеоблоков, которые могут размещаться в сегментах, также называемых "субблоками".
[0049] В зависимости от указанного стандарта кодирования видеоблоки могут быть сегментированы на различные размеры субблоков "NxN", к примеру, 16×16, 8×8, 4×4, 2×2 и т.д. В настоящем раскрытии, "NxN" и "NxN" могут быть использованы взаимозаменяемо для того, чтобы ссылаться на размеры пиксела блока с точки зрения размеров по вертикали и горизонтали, например, 16×16 пикселов или 16×16 пикселов. В общем, блок 16×16 должен иметь шестнадцать пикселов в вертикальном направлении (y=16) и шестнадцать пикселов в горизонтальном направлении (x=16). Аналогично, блок N×N, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать N×M пикселов, где M не обязательно равно N. В качестве одного примера, в стандарте ITU-T H.264, блоки, размер которых составляет 16×16 пикселов, могут упоминаться как макроблоки, а блоки, которые меньше 16×16 пикселов, может упоминаться как сегменты макроблока 16×16. В других стандартах, например, HEVC, блоки могут быть заданы, если обобщать, относительно своего размера, например, в качестве единиц кодирования и их сегментов, каждая из которых имеет варьирующийся, а не фиксированный размер.
[0050] Видеоблоки могут содержать блоки пикселных данных в пикселной области или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование, к остаточным данным для данного видеоблока, при этом остаточные данные представляют пикселные разности между видеоданными для блока и прогнозирующими данными, сформированными для блока. В некоторых случаях, видеоблоки могут содержать блоки квантованных коэффициентов преобразования в области преобразования, при этом после применения преобразования к остаточным данным для данного видеоблока, результирующие коэффициенты преобразования также квантуются.
[0051] Сегментация на блоки служит важной цели в технологиях блочного кодирования видео. Использование меньшего числа блоков для того, чтобы кодировать видеоданные, может приводить к лучшему прогнозированию данных для местоположений видеокадра, которые включают в себя высокие уровни детализации, и, следовательно, может уменьшать результирующую ошибку (т.е. отклонение прогнозирующих данных от исходных видеоданных), представленную в качестве остаточных данных. Тем не менее, при потенциальном уменьшении остаточных данных такие технологии могут требовать дополнительной синтаксической информации, чтобы указывать то, как меньшие блоки сегментируются относительно видеокадра, и могут приводить к увеличенной скорости передачи кодированных видеобитов. Соответственно, в некоторых технологиях, сегментация на блоки может зависеть от балансирования требуемого уменьшения остаточных данных касательно результирующего увеличения скорости передачи битов кодированных видеоданных вследствие дополнительной синтаксической информации.
[0052] В общем, блоки и различные их сегменты (т.е. субблоки) могут считаться видеоблоками. Помимо этого, серия последовательных макроблоков может считаться множеством видеоблоков (например, макроблоков или единиц кодирования) и/или субблоков (сегментов макроблоков или субъединиц кодирования). Каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Кроме того, GOP, также называемая "последовательностью", может задаваться как декодируемая единица.
[0053] В данный момент проводится работа, нацеленная на разработку нового стандарта кодирования видео, на сегодня называемого "стандартом высокоэффективного кодирования видео (HEVC)". Выходящий HEVC-стандарт также может упоминаться как H 265. Работа по стандартизации основана на модели устройства кодирования видео, называемого "тестовой моделью HEVC (HM)". HM предполагает несколько дополнительных возможностей устройств кодирования видео по сравнению с устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 предоставляет девять режимов кодирования внутреннего прогнозирования, HM предоставляет целых тридцать пять режимов кодирования внутреннего прогнозирования, например, на основе размера кодируемого в режиме внутреннего прогнозирования блока.
[0054] HM ссылается на блок видеоданных в качестве единицы кодирования (CU). CU может ссылаться на прямоугольную область изображения, которая служит в качестве базовой единицы, к которой применяются различные инструментальные средства кодирования для сжатия. В H.264 она также может называться "макроблоком". Синтаксические данные в потоке битов могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей CU с точки зрения числа пикселов. В общем, CU имеет назначение, аналогичное назначению макроблока H.264 за исключением того, что CU не имеет различия размера. Таким образом, CU может быть сегментирована или "разбита" на суб-CU.
[0055] LCU может быть ассоциирована со структурой данных в виде дерева квадрантов, которая указывает то, как LCU сегментируется. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU LCU, при этом корневой узел соответствует LCU, а другие узлы соответствуют суб-CU LCU. Если данная CU разбивается на четыре суб-CU, узел в дереве квадрантов, соответствующем CU разбиения, включает в себя четыре дочерних узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксическую информацию для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения для CU, указывающий то, разбивается или нет CU, соответствующая узлу, на четыре суб-CU. Синтаксическая информация для данной CU может быть задана рекурсивно и может зависеть от того, разбивается или нет CU на суб-CU.
[0056] CU, которая не разбивается (т.е. CU, соответствующая терминальному или "концевому" узлу в данном дереве квадрантов), может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет всю или часть соответствующей CU и включает в себя данные для извлечения опорной выборки для PU для целей выполнения прогнозирования для CU. Например, когда CU кодируется во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего прогнозирования для PU. В качестве другого примера, когда CU кодируется во взаимном режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для CU, задающей одну или более PU для CU, также могут описывать, например, секционирование CU на одну или более PU. Режимы секционирования могут отличаться между тем, является CU некодированной, кодированной в режиме внутреннего прогнозирования или кодированной в режиме взаимного прогнозирования.
[0057] CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). После прогнозирования для CU с использованием одной или более PU, как описано выше, видеокодер может вычислять один или более остаточных блоков для соответствующих частей CU согласно одной или более PU. Остаточные блоки могут представлять пикселную разность между видеоданными для CU и прогнозированными данными для одного или более PU. Набор остаточных значений может быть преобразован, отсканирован и квантован, чтобы задавать набор квантованных коэффициентов преобразования. TU может задавать структуру данных сегментов, которая указывает информацию сегментов для коэффициентов преобразования, которая является практически аналогичной структуре данных в виде дерева квадрантов, описанной выше в отношении CU. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше соответствующих PU для идентичной CU. В некоторых примерах, максимальный размер TU может соответствовать размеру соответствующей CU. В одном примере, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры в виде дерева квадрантов, известной как "остаточное дерево квадрантов" (RQT). В этом случае, концевые узлы RQT могут упоминаться как TU, для которых могут быть преобразованы и квантованы соответствующие остаточные выборки.
[0058] После внутреннего прогнозирующего или взаимного прогнозирующего кодирования для того, чтобы формировать прогнозирующие данные и остаточные данные, и после преобразований (таких как целочисленное преобразование 4x4 или 8x8, используемое в H.264/AVC, или дискретное косинусное преобразование (DCT)) для того, чтобы формировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[0059] После квантования может быть выполнено энтропийное кодирование квантованных данных (т.е. квантованных коэффициентов преобразования). Энтропийное кодирование может соответствовать технологиям этого раскрытия относительно эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, а также может использовать другие технологии энтропийного кодирования, такие как контекстно-адаптивное кодирование переменной длины (CAVLC), CABAC, PIPE или другая технология энтропийного кодирования. Например, значения коэффициентов, представленные в качестве абсолютных величин и соответствующих знаков (например, "+1", или "-1") для квантованных коэффициентов преобразования, могут быть кодированы с использованием технологий энтропийного кодирования.
[0060] Следует отметить, что прогнозирование, преобразование и квантование, описанные выше, могут быть выполнены для любого блока видеоданных, например, для PU и/или TU для CU либо для макроблока, в зависимости от указанного стандарта кодирования. Соответственно, технологии этого раскрытия, связанные с эффективным кодированием информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных могут применяться к любому блоку видеоданных, например, к любому блоку квантованных коэффициентов преобразования, включающему в себя макроблок или TU для CU. Кроме того, блок видеоданных (например, макроблок или TU для CU) может включать в себя каждый из компонента сигнала яркости (Y), первого компонента сигнала цветности (U) и второго компонента сигнала цветности (V) соответствующих видеоданных. В связи с этим, технологии этого раскрытия могут быть выполнены для каждого из Y-, U- и V-компонентов данного блока видеоданных.
[0061] Чтобы кодировать блоки видеоданных, как описано выше, также может быть сформирована и кодирована информация касательно позиции значимых коэффициентов в данном блоке. Затем могут быть кодированы значения значимых коэффициентов, как описано выше. В H.264/AVC и выходящем HEVC-стандарте, при использовании процесса контекстно-адаптивного энтропийного кодирования, например, CABAC-процесса, позиция значимых коэффициентов в блоке видеоданных может быть кодирована до кодирования значений значимых коэффициентов. Процесс кодирования позиции всех значимых коэффициентов в блоке может упоминаться как кодирование на основе карты значимости (SM). Фиг. 4A-4C, подробнее описанные ниже, являются концептуальными схемами, которые иллюстрируют пример блока 4×4 квантованных коэффициентов преобразования и соответствующих SM-данных.
[0062] Типичная процедура SM-кодирования может быть описана следующим образом. Для данного блока видеоданных SM может быть кодирован, только если существует, по меньшей мере, один значимый коэффициент в блоке. Присутствие значимых коэффициентов в данном блоке видеоданных может указываться в шаблоне кодированного блока (например, с использованием элемента синтаксиса "coded_block_pattern", или CBP), который является двоичным значением, кодированным для набора блоков (к примеру, блоков сигнала яркости и цветности), ассоциированных с областью пикселов в видеоданных. Каждый бит в CBP упоминается как флаг кодированного блока (например, согласно элементу синтаксиса "coded_block_flag") и используется для того, чтобы указывать то, существует или нет, по меньшей мере, один значимый коэффициент в соответствующем блоке. Другими словами, флаг кодированного блока является однобитовым символом, указывающим то, существуют или нет какие-либо значимые коэффициенты в одном блоке коэффициентов преобразования, и CBP является набором флагов кодированных блоков для набора связанных блоков видеоданных.
[0063] Если флаг кодированного блока указывает то, что значимые коэффициенты не присутствуют в соответствующем блоке (например, флаг равен "0"), дополнительная информация не может быть кодирована для блока. Тем не менее, если флаг кодированного блока указывает то, что, по меньшей мере, один значимый коэффициент существует в соответствующем блоке (например, флаг равен "1"), SM может быть кодирован для блока в соответствии с порядком сканирования коэффициентов, ассоциированным с блоком. Порядок сканирования может задавать порядок, в котором значимость каждого коэффициента в блоке кодирована как часть SM-кодирования. Другими словами, сканирование может преобразовывать в последовательную форму двумерный блок коэффициентов в одномерное представление, чтобы определять значимость коэффициентов. Могут быть использованы различные порядки сканирования (например, зигзагообразный, горизонтальный и вертикальный). Фиг. 5A-5C, также подробнее описанные ниже, иллюстрируют примеры некоторых из различных порядков сканирования, которые могут использоваться для блоков 8x8 видеоданных. Тем не менее, технологии этого раскрытия также могут применяться относительно множества других порядков сканирования, включающих в себя диагональный порядок сканирования, порядки сканирования, которые являются комбинациями зигзагообразного, горизонтального, вертикального и/или диагонального порядка сканирования, а также порядки сканирования, которые являются частично зигзагообразными, частично горизонтальными, частично вертикальными и/или частично диагональными. Помимо этого, технологии этого раскрытия также могут рассматривать порядок сканирования, который является адаптивным на основе статистики, ассоциированной с ранее кодированными блоками видеоданных (например, блоками, имеющими размер блока или режим кодирования, идентичный размеру блока или режиму кодирования кодируемого текущего блока). Например, в некоторых случаях порядок адаптивного сканирования может быть порядком сканирования, ассоциированным с блоком.
[0064] С учетом флага кодированного блока, который указывает то, что, по меньшей мере, один значимый коэффициент существует в данном блоке, и порядка сканирования для блока, SM для блока может быть кодирован следующим образом. Двумерный блок квантованных коэффициентов преобразования может сначала преобразовываться в одномерную матрицу с использованием порядка сканирования. Для каждого коэффициента в матрице согласно порядку сканирования, может быть кодирован однобитовый флаг значимого коэффициента (например, согласно элементу синтаксиса "significant_coeff_flag"). Иными словами, каждой позиции в матрице может назначаться двоичное значение, которое может задаваться равным "1", если соответствующий коэффициент является значащим, и задаваться равным "0", если он является незначащим (т.е. нулевым). Если данный флаг значимого коэффициента равен "1", что указывает то, что соответствующий коэффициент является значащим, также может быть кодирован дополнительный однобитовый флаг последнего значимого коэффициента (например, согласно элементу синтаксиса "last_significant_coeff_flag"), который может указывать то, является или нет соответствующий коэффициент последним значимым коэффициентом в матрице (т.е. в блоке с учетом порядка сканирования). В частности, каждый флаг последнего значимого коэффициента может задаваться равным "1", если соответствующий коэффициент является последним значимым коэффициентом в матрице, и задаваться равным "0" в противном случае. Если последняя позиция матрицы достигается таким образом, и процесс SM-кодирования не завершен посредством флага последнего значимого коэффициента, равного "1", то последний коэффициент в матрице (и в силу этого блок с учетом порядка сканирования) может логически выводиться как значащий, и флаг последнего значимого коэффициента не может быть кодирован для последней позиции матрицы.
[0065] Фиг. 4B-4C являются концептуальными схемами, которые иллюстрируют примеры наборов флагов значимых коэффициентов и флагов последних значимых коэффициентов, соответственно, согласно SM-данным для блока, проиллюстрированного на фиг. 4A, представленного в форме карты, а не в форме матрицы. Следует отметить, что флаги значимых коэффициентов и флаги последних значимых коэффициентов, как описано выше, могут задаваться равными различным значениям (например, флаг значимого коэффициента может задаваться равным "0", если соответствующий коэффициент является значащим, и "1", если он является незначащим, и флаг последнего значимого коэффициента может задаваться равным "0", если соответствующий коэффициент является последним значимым коэффициентом, и "1", если он не является последним значимым коэффициентом) в других примерах.
[0066] После того, как SM кодируется, как описано выше, значение каждого значимого коэффициента (т.е. абсолютная величина и знак каждого значимого коэффициента, например, указываемые посредством элементов синтаксиса "coeff_abs_level_minus1" и "coeff_sign_flag", соответственно) в блоке также может быть кодировано.
[0067] Согласно некоторым технологиям, фиксированный порядок сканирования может быть использован для того, чтобы кодировать блоки видеоданных, как описано выше, например, зигзагообразный порядок сканирования. Согласно другим технологиям, несколько порядков сканирования могут быть использованы для того, чтобы кодировать блоки. В некоторых примерах, "адаптивное сканирование коэффициентов" (ACS) может быть использовано, в котором порядок сканирования адаптируется во времени, и текущий адаптированный порядок сканирования используется для того, чтобы кодировать конкретный блок коэффициентов в любой момент времени. В других технологиях, видеокодер 20 может тестировать несколько порядков сканирования на основе одного или более показателей эффективности сжатия и выбирать наилучший порядок сканирования для того, чтобы кодировать блоки. Дополнительно, видеокодер 20 может указывать порядок сканирования видеодекодеру 30 посредством кодирования ACS-индекса, который может представлять любой из этих нескольких порядков сканирования (например, с использованием индексов 0 для зигзагообразного, 1 для горизонтального и 2 для вертикального порядка сканирования).
[0068] Согласно некоторым технологиям, видеокодер 20 может кодировать ACS-индекс только тогда, когда последний значимый коэффициент не находится в первой позиции в порядке сканирования (соответствующей верхней левой позиции в блоке, обычно называемой "DC"-позицией). Видеокодер 20 может кодировать ACS-индекс таким образом, поскольку видеодекодеру 30 не требуется индикатор относительно порядка сканирования, используемого посредством видеокодера 20 в случае, если последний (и только) значимый коэффициент в блоке находится в DC-позиции, поскольку все возможные порядки сканирования могут начинаться с DC-позиции, как показано на фиг. 5 и 6, также подробнее описанных ниже.
[0069] В случае, если последний значимый коэффициент в блоке не находится в DC-позиции, видеокодер 20 может кодировать ACS-индекс следующим образом. Видеокодер 20 может кодировать первый сигнал (например, "элемент выборки 1"), который указывает то, представляет собой порядок сканирования зигзагообразный порядок сканирования (например, элемент выборки 1="0") или нет (например, элемент выборки 1="1"). В случае, если порядок сканирования не представляет собой зигзагообразный порядок сканирования, видеокодер 20 может кодировать второй сигнал (например, "элемент выборки 2"), который указывает то, представляет собой порядок сканирования горизонтальный порядок сканирования (например, элемент выборки 2="0") или вертикальный порядок сканирования (например, элемент выборки 2="1"). Аналогично, видеодекодер 30 может принимать и декодировать первый сигнал и второй сигнал, чтобы определять ACS-индекс. Соответственно, вместо того, чтобы всегда кодировать ACS-индекс, видеокодер 20 и/или видеодекодер 30 может кодировать ACS-индекс только тогда, когда последний значимый коэффициент не находится в DC-позиции.
[0070] Как описано выше, согласно технологиям этого раскрытия, информация позиции последнего значимого коэффициента для конкретного блока видеоданных может быть кодирована с использованием координат X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком. В некоторых примерах, координата X может соответствовать номеру столбца позиции в блоке, а координата Y может соответствовать номеру строки позиции в блоке. Например, номера строк и столбцов могут быть относительно номеров строк и столбцов, соответствующих исходной позиции или позиции "начала координат" в блоке, например, DC-позиции. В связи с этим, согласно этим технологиям, информация позиции последнего значимого коэффициента для блока видеоданных не может быть кодирована с использованием кодирования SM, как описано выше, а вместо этого посредством явного кодирования координат X и Y позиции последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком. Согласно таким технологиям, координаты X и Y могут быть кодированы независимо от оставшихся SM-данных (т.е. флагов значимых коэффициентов или информации позиции значимых коэффициентов) для блока. Например, координаты X и Y могут быть кодированы до кодирования информации позиции значимых коэффициентов для блока.
[0071] В некоторых примерах согласно технологиям этого раскрытия, для того, чтобы кодировать координаты X и Y, видеокодер 20 и/или видеодекодер 30 дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение. Видеокодер 20 и/или видеодекодер 30 может определять статистику и кодировать координаты X и Y на основе статистики, например, с использованием контекстно-адаптивного энтропийного кодирования. В некоторых примерах, видеокодер 20 и/или видеодекодер 30 может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее кодированных блоков видеоданных, например, значений координат X и Y для ранее кодированных блоков. В других примерах, видеокодер 20 и/или видеодекодер 30 может обновлять статистику на основе координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. Как описано выше, статистика может варьироваться в зависимости от того, какой порядок сканирования используется для того, чтобы кодировать блок.
[0072] В качестве одного примера согласно технологиям этого раскрытия, чтобы кодировать координаты X и Y на основе статистики, видеокодер 20 и/или видеодекодер 30 может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y и порядка сканирования. В этом примере, видеокодер 20 и/или видеодекодер 30 может использовать порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, видеокодер 20 и/или видеодекодер 30 может выбирать уникальную статистику для того, чтобы кодировать координаты X и Y при использовании конкретного порядка сканирования для того, чтобы кодировать блок.
[0073] Кроме того, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), видеокодер 20 и/или видеодекодер 30 может кодировать координату с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение. Видеокодер 20 и/или видеодекодер 30 затем может использовать выбранную статистику для того, чтобы кодировать координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0074] В качестве другого примера согласно технологиям этого раскрытия, координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более битов или "элементов выборки". Другими словами, координаты X и Y могут "преобразовываться в двоичную форму". В связи с этим, для того, чтобы кодировать координаты X и Y на основе статистики, видеокодер 20 и/или видеодекодер 30 может кодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, видеокодер 20 и/или видеодекодер 30 может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее кодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y для ранее кодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее кодированных блоков, как описано выше. В других примерах, видеокодер 20 и/или видеодекодер 30 также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y, как также описано выше. Видеокодер 20 и/или видеодекодер 30 может использовать оценки вероятности для того, чтобы кодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0075] Один недостаток технологий, описанных выше, заключается в том, что при кодировании информации позиции последнего значимого коэффициента для блока видеоданных видеокодер 20 и/или видеодекодер 30 может использовать различную статистику в зависимости от порядка сканирования, используемого посредством видеокодера 20 и/или видеодекодера 30 для того, чтобы кодировать блок. Другими словами, видеокодер 20 и/или видеодекодер 30 может определять и поддерживать (например, обновлять) множество наборов статистики, чтобы кодировать информацию позиции последнего значимого коэффициента для блоков видеоданных, когда множество порядков сканирования используется для того, чтобы кодировать блоки. В некоторых случаях, наборы статистики, определенной и поддерживаемой для порядков сканирования, которые являются симметричными относительно друг друга, может включать в себя идентичную или аналогичную информацию, как описано выше. В этих случаях, определение и поддержание наборов статистики может приводить к неэффективному использованию ресурсов системы кодирования и необязательной сложности системы кодирования.
[0076] Другой недостаток технологий, описанных выше, состоит в том, что когда видеокодер 20 и/или видеодекодер 30 кодирует информацию позиции последнего значимого коэффициента для блоков видеоданных с использованием общей статистики, независимо от порядков сканирования, используемых для того, чтобы кодировать блоки, статистика может не быть настолько точной, как статистика, которая отдельно определяется и поддерживается (например, обновляется) для каждого порядка сканирования. Иными словами, общая статистика может указывать вероятности того, что позиции в данном блоке видеоданных соответствуют позиции последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, менее точно, чем статистика, отдельно определенная и поддерживаемая для конкретного порядка сканирования, используемого для того, чтобы кодировать блок. В этих случаях, кодирование информации позиции последнего значимого коэффициента с использованием общей статистики может приводить к уменьшенной эффективности кодирования.
[0077] Еще один другой недостаток технологий, описанных выше, состоит в том, что, в некоторых случаях, видеокодер 20 и/или видеодекодер 30 может кодировать блок видеоданных с использованием одного из множества порядков сканирования, которые берут начало в общей позиции в блоке, например, в DC-позиции. В этих случаях, когда позиция последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, соответствует общей позиции, отсутствуют другие значимые коэффициентов в блоке, помимо коэффициента, расположенного в общей позиции. Соответственно, видеокодер 20 и/или видеодекодер 30 не должен кодировать позицию последнего значимого коэффициента в блоке. Другими словами, кодирование информации позиции последнего значимого коэффициента для блока полностью, например, представленной с использованием координат X и Y, как описано выше, может не требоваться в этом случае, поскольку это также может приводить к уменьшенной эффективности кодирования.
[0078] Дополнительно, в вышеприведенном примере, когда позиция последнего значимого коэффициента в блоке не соответствует общей позиции, и информация позиции последнего значимого коэффициента для блока должна быть полностью кодирована, информация в некоторых случаях может быть кодирована с использованием статистики, которая не является точной, например, статистики, которая не использует преимущество вышеописанной корреляции между информацией позиции последнего значимого коэффициента и информацией порядка сканирования для блока, что также может приводить к уменьшенной эффективности кодирования.
[0079] Соответственно, настоящее раскрытие описывает технологии, которые могут обеспечивать кодирование информации позиции последнего значимого коэффициента для блока видеоданных более эффективно относительно других технологий, и использование систем кодирования, имеющих меньшую сложность относительно других систем. В качестве одного примера, информация позиции последнего значимого коэффициента может быть кодирована с использованием систем кодирования, которые имеют меньшую сложность относительно других систем, посредством кодирования информации с использованием общей статистики, когда один из множества порядков сканирования используется для того, чтобы кодировать блок, например, посредством кодирования координат X и Y и переставленных координат X и Y, которые указывают информацию, в зависимости от порядка сканирования, используемого для того, чтобы кодировать блок. Согласно этому примеру, информация позиции последнего значимого коэффициента также может быть более эффективно кодирована посредством обновления общей статистики на основе координат X и Y и переставленных координат X и Y, что может приводить к большей точности статистики. В качестве другого примера, информация позиции последнего значимого коэффициента может быть более эффективно кодирована посредством кодирования информации инкрементным способом до необходимой степени, и, при кодировании информации полностью, осуществления этого на основе порядка сканирования, например, с использованием порядка сканирования в качестве контекста.
[0080] В некоторых примерах, видеокодер 20 исходного устройства 12 может быть выполнен с возможностью кодировать определенные блоки видеоданных (например, один или более макроблоков или TU для CU), и видеодекодер 30 целевого устройства 14 может быть выполнен с возможностью принимать кодированные видеоданные из видеокодера 20, например, из модема 28 и приемного устройства 26. В соответствии с технологиями этого раскрытия, в качестве одного примера, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования. Видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодировать переставленные координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования. Например, второй порядок сканирования может отличаться от первого порядка сканирования.
[0081] В этом примере, первый порядок сканирования и второй порядок сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования, при этом горизонтальный порядок сканирования и вертикальный порядок сканирования берут начало в общей позиции в блоке. Например, общая позиция может быть DC-позицией, как описано выше.
[0082] В этом примере, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью определять статистику, которая указывает вероятность того, что каждая из координат X и Y содержит данное значение, при этом кодирование координат X и Y и переставленных координат X и Y, содержит кодирование на основе статистики. Например, вероятность того, что координата X содержит данное значение, может быть использована для того, чтобы кодировать координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, может быть использована для того, чтобы кодировать координату Y и переставленную координату X. Видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью обновлять статистику на основе координат X и Y и переставленных координат X и Y. Например, вероятность того, что координата X содержит данное значение, может быть обновлена с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, может быть обновлена с использованием координаты Y и переставленной координаты X.
[0083] В качестве одного примера, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение посредством видеокодера 20 и/или видеодекодера 30 контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования.
[0084] Следует отметить, что в некоторых примерах, видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодировать координаты X и Y, когда порядок сканирования содержит третий порядок сканирования. Например, третий порядок сканирования может отличаться от первого порядка сканирования и второго порядка сканирования. В качестве одного примера, третий порядок сканирования может представлять собой зигзагообразный порядок сканирования или диагональный порядок сканирования, при этом зигзагообразный или диагональный порядок сканирования также берет начало в общей позиции в блоке, например, в DC-позиции.
[0085] В этом примере, в некоторых случаях, видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодировать информацию, которая идентифицирует порядок сканирования, т.е. информацию порядка сканирования для блока. Дополнительно, в некоторых случаях, видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодировать информацию, которая идентифицирует позиции других значимых коэффициентов в блоке, т.е. информацию позиции значимых коэффициентов для блока.
[0086] В качестве другого примера, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком. Например, порядок сканирования может представлять собой один из множества порядков сканирования, при этом каждый из множества порядков сканирования берет начало в общей позиции в блоке, например, в DC-позиции.
[0087] В этом примере, для того, чтобы кодировать координаты X и Y, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодировать информацию, которая указывает то, соответствует или нет координата X общей позиции, кодировать информацию, которая указывает то, соответствует или нет координата Y общей позиции, а в случае, если координата X не соответствует общей позиции, и координата Y не соответствует общей позиции, кодировать информацию, которая идентифицирует порядок сканирования. Видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью, в случае, если координата X не соответствует общей позиции, кодировать координату X на основе порядка сканирования, а в случае, если координата Y не соответствует общей позиции, кодировать координату Y на основе порядка сканирования.
[0088] В этом примере, для того, чтобы кодировать координату X и координату Y на основе порядка сканирования, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение посредством видеокодера 20 и/или видеодекодера 30 контекстной модели на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя порядок сканирования.
[0089] В любом случае, после кодирования информации позиции последнего значимого коэффициента и, в некоторых случаях, информации порядка сканирования и информации позиции значимых коэффициентов, т.е. SM-данных, для блока способом, описанным выше, видеокодер 20 и/или видеодекодер 30 также может кодировать значение каждого значимого коэффициента (например, абсолютную величину и знак каждого значимого коэффициента, указываемые посредством элементов синтаксиса "coeff_abs_level_minus1" и "coeff_sign_flag", соответственно) в блоке.
[0090] Соответственно, технологии этого раскрытия могут предоставлять возможность видеокодеру 20 и/или видеодекодеру 30 кодировать информацию позиции последнего значимого коэффициента для блока более эффективно, чем при использовании других способов, и могут предоставлять возможность видеокодеру 20 и/или видеодекодеру 30 иметь меньшую сложность относительно других систем. Таким образом, может быть относительная экономия битов для кодированного потока битов, включающего в себя информацию позиции последнего значимого коэффициента, и относительное уменьшение сложности для видеокодера 20 и/или видеодекодера 30, используемого для того, чтобы кодировать информацию, при использовании технологий этого раскрытия.
[0091] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера или декодера при соответствующих условиях, к примеру, один или более микропроцессоров, процессоры цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логическая схема, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного видеокодера/декодера (кодека). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0092] Фиг. 2 является блок-схемой, которая иллюстрирует пример видеокодера 20, который может реализовывать технологии для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных согласно технологиям этого раскрытия. Видеокодер 20 может выполнять внутреннее и взаимное кодирование блоков в видеокадрах, включающих в себя макроблоки или CU и их сегменты или подсегменты. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как любой из нескольких режимов пространственного сжатия, а взаимные режимы, такие как однонаправленное прогнозирование (P-режим) или двунаправленное прогнозирование (B-режим), могут упоминаться как любой из нескольких режимов временного сжатия.
[0093] Как показано на фиг. 2, видеокодер 20 принимает текущий блок видеоданных 30 в видеокадре, который должен быть кодирован. В примере по фиг. 2, видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, запоминающее устройство 64, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Для восстановления видеоблоков видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 2) также может быть включен с возможностью фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 62.
[0094] Во время процесса кодирования видеокодер 20 принимает видеокадр или серию последовательных макроблоков, которая должна быть кодирована. Кадр или серия последовательных макроблоков может быть разделена на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения могут выполнять взаимное прогнозирующее кодирование данного принимаемого видеоблока относительно одного или более блоков в одном или более опорных кадров, чтобы предоставлять временное сжатие. Модуль 46 внутреннего прогнозирования может выполнять внутреннее прогнозирующее кодирование данного принимаемого видеоблока относительно одного или более соседних блоков в идентичном кадре или серии последовательных макроблоков в качестве блока, который должен быть кодирован, чтобы предоставлять пространственное сжатие.
[0095] Модуль 40 выбора режима может выбирать один из режимов кодирования, т.е. один режим или несколько режимов внутреннего или взаимного кодирования, на основе результатов кодирования (например, результирующей скорости кодирования и уровня искажения) и на основе типа кадра или серии последовательных макроблоков для кадра или серии последовательных макроблоков, включающей в себя данный кодируемый принимаемый блок, и предоставлять результирующий внутренне- или взаимно-кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в опорном кадре или в опорной серии последовательных макроблоков. В общем, внутреннее прогнозирование заключает в себе прогнозирование текущего блока относительно соседних ранее кодированных блоков, в то время как взаимное прогнозирование заключает в себе оценку движения и компенсацию движения, чтобы выполнять временное прогнозирование текущего блока.
[0096] Модуль 42 оценки движения и модуль 44 компенсации движения представляют элементы взаимного прогнозирования видеокодера 20. Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в пределах прогнозирующего опорного кадра (или другой кодированной единицы) относительно текущего блока, кодируемого в пределах текущего кадра (или другой кодированной единицы). Прогнозный блок является блоком, для которого обнаруживается, что он практически совпадает с блоком, который должен быть кодирован, с точки зрения пикселной разности, которая может быть определена посредством суммы абсолютной разности (SAD), суммы квадрата разности (SSD) или других разностных показателей. Вектор движения также может указывать смещение сегмента блока. Компенсация движения может заключать в себе выборку или формирование прогнозного блока на основе вектора движения, определенного посредством оценки движения. С другой стороны, в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы.
[0097] Модуль 42 оценки движения может вычислять вектор движения для видеоблока взаимно кодированного кадра посредством сравнения видеоблока с видеоблоками опорного кадра в запоминающем устройстве 64. Модуль 44 компенсации движения также может интерполировать субцелочисленные пикселы опорного кадра, например, I-кадра или P-кадра, в целях этого сравнения. Стандарт H.264 ITU, в качестве примера, описывает два списка: список 0, который включает в себя опорные кадры, имеющие порядок отображения ближе кодируемого текущего кадра, и список 1, который включает в себя опорные кадры, имеющие порядок отображения дальше кодируемого текущего кадра. Следовательно, данные, сохраненные в запоминающем устройстве 64, могут быть организованы согласно этим спискам.
[0098] Модуль 42 оценки движения может сравнивать блоки одного или более опорных кадров из запоминающего устройства 64 с блоком, который должен быть кодирован, текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в запоминающем устройстве 64 включают в себя значения для субцелочисленных пикселов, вектор движения, вычисленный посредством модуля 42 оценки движения, может ссылаться на местоположение субцелочисленного пиксела опорного кадра. Модуль 42 оценки движения и/или модуль 44 компенсации движения также может быть выполнен с возможностью вычислять значения для позиций субцелочисленных пикселов опорных кадров, сохраненных в запоминающем устройстве 64, если значения для позиций субцелочисленных пикселов не сохраняются в запоминающем устройстве 64. Модуль 42 оценки движения может отправлять вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Блок опорного кадра, идентифицированный посредством вектора движения, может упоминаться как взаимный прогнозный блок, или, если обобщать, прогнозный блок. Модуль 44 компенсации движения может вычислять прогнозирующие данные на основе прогнозного блока.
[0099] Модуль 46 внутреннего прогнозирования может внутренне прогнозировать текущий блок, в качестве альтернативы взаимному прогнозированию, выполняемому посредством модуля 42 оценки движения и модуля 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего прогнозирования может определять режим внутреннего прогнозирования для использования с тем, чтобы кодировать текущий блок. В некоторых примерах, модуль 46 внутреннего прогнозирования может кодировать текущий блок с использованием различных режимов внутреннего прогнозирования, например, во время отдельных проходов кодирования, и модуль 46 внутреннего прогнозирования (либо модуль 40 выбора режима в некоторых примерах) может выбирать надлежащий режим внутреннего прогнозирования для использования из тестированных режимов. Например, модуль 46 внутреннего прогнозирования может вычислять значения искажения в зависимости от скорости передачи с использованием анализа искажения в зависимости от скорости передачи для различных тестированных режимов внутреннего прогнозирования и выбирать режим внутреннего прогнозирования, имеющий наилучшие характеристики искажения в зависимости от скорости передачи, из тестированных режимов. Анализ искажения в зависимости от скорости передачи, в общем, определяет величину искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который кодирован для того, чтобы формировать кодированный блок, а также скорость передачи битов (т.е. число битов), используемую для того, чтобы формировать кодированный блок. Модуль 46 внутреннего прогнозирования может вычислять отношения из искажений и скоростей для различных кодированных блоков, чтобы определять то, какой режим внутреннего прогнозирования демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0100] После прогнозирования текущего блока, например, с использованием внутреннего прогнозирования или взаимного прогнозирования, видеокодер 20 может формировать остаточный видеоблок посредством вычитания прогнозирующих данных, вычисленных посредством модуля 44 компенсации движения или модуля 46 внутреннего прогнозирования, из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые могут выполнять эту операцию вычитания. Модуль 52 преобразования может применять преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 преобразования может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае, модуль 52 преобразования может применять преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пикселной области в область преобразования, такой как частотная область. Модуль 54 квантования может квантовать остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования.
[0101] После квантования модуль 56 энтропийного кодирования может энтропийно кодировать квантованные коэффициенты преобразования, что может включать в себя CAVLC, CABAC, PIPE или другую технологию энтропийного кодирования. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, кодированное видео может быть передано в другое устройство или заархивировано для последующей передачи или извлечения.
[0102] В некоторых случаях, модуль 56 энтропийного кодирования или другой модуль видеокодера 20 может быть выполнен с возможностью осуществлять другие функции кодирования, в дополнение к энтропийному кодированию квантованных коэффициентов преобразования, как описано выше. Например, модуль 56 энтропийного кодирования может составлять информацию заголовка для блока (например, макроблока, CU или LCU) или видеокадра, содержащего блока, с надлежащими элементами синтаксиса для передачи в кодированном потоке видеобитов. Согласно некоторым стандартам кодирования, такие элементы синтаксиса могут включать в себя информацию позиции последнего значимого коэффициента для блока (например, для макроблока или TU для CU), как описано выше. Как также описано выше, информация позиции последнего значимого коэффициента может использовать высокий процент общей скорости передачи сжатых видеобитов в случае неэффективного кодирования. В связи с этим, здесь описаны технологии, которые могут обеспечивать более эффективное кодирование информации позиции последнего значимого коэффициента для блока, чем при использовании других способов. Кроме того, настоящее раскрытие описывает использование систем кодирования, которые имеют меньшую сложность относительно других систем, при кодировании информации позиции последнего значимого коэффициента для блока.
[0103] В некоторых примерах, модуль 56 энтропийного кодирования видеокодера 20 может быть выполнен с возможностью кодировать определенные блоки видеоданных (например, один или более макроблоков или TU для CU). В соответствии с технологиями этого раскрытия, в качестве одного примера, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования. Модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью кодировать переставленные координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования. Например, второй порядок сканирования может отличаться от первого порядка сканирования.
[0104] В этом примере, первый порядок сканирования и второй порядок сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования, при этом горизонтальный и вертикальный порядки сканирования берут начало в общей позиции в блоке, например, в DC-позиции.
[0105] В частности, первый порядок сканирования и второй порядок сканирования могут представлять собой порядок сканирования, который может быть использован посредством модуля 56 энтропийного кодирования для того, чтобы кодировать блок. Например, первый и второй порядки сканирования могут представлять собой порядки сканирования, используемые посредством видеокодера 20 для того, чтобы кодировать блоки видеоданных, и посредством видеодекодера 30 для того, чтобы декодировать блоки в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30. В некоторых примерах, первый и второй порядки сканирования могут представлять собой только некоторые порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. В других примерах, первый и второй порядки сканирования могут представлять собой единственные порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки.
[0106] Кроме того, переставленные координаты X и Y также соответствуют информации позиции последнего значимого коэффициента для блока, но дополнительно обрабатываются, т.е. переставляются, посредством модуля 56 энтропийного кодирования, чтобы обеспечивать более эффективное кодирование информации, чем при использовании других технологий, как описано выше. В частности, переставленные координаты X и Y могут обеспечивать использование общей статистики для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, которые указывают информацию позиции последнего значимого коэффициента для блока, как также описано выше.
[0107] В этом примере, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью определять статистику, которая указывает вероятность того, что каждая из координат X и Y содержит данное значение, при этом кодирование координат X и Y и переставленных координат X и Y содержит кодирование на основе статистики. Например, вероятность того, что координата X содержит данное значение, может быть использована для того, чтобы кодировать координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, может быть использована для того, чтобы кодировать координату Y и переставленную координату X.
[0108] В общем, статистика может указывать вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования, содержит данное значение (например, "0", "1", "2" и т.д.).
[0109] Как описано выше, поскольку первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, статистика дополнительно может указывать вероятность того, что каждая переставленных координат X и Y содержит данное значение. В некоторых примерах, модуль 56 энтропийного кодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее кодированных блоков видеоданных, например, значений координат X и Y и переставленных координат X и Y для ранее кодированных блоков.
[0110] Модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью обновлять статистику на основе координат X и Y и переставленных координат X и Y таким образом, что вероятность того, что координата X содержит данное значение, обновляется с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, обновляется с использованием координаты Y и переставленной координаты X. Например, обновленная статистика может быть использована для того, чтобы кодировать информацию позиции последнего значимого коэффициента для последующих кодированных блоков видеоданных способом, описанным выше.
[0111] В качестве одного примера, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение посредством модуля 56 энтропийного кодирования контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования. Как упомянуто выше, в дополнение к CABAC, описанные технологии перестановки координат X и Y для целей кодирования также могут быть использованы в других технологиях контекстно-адаптивного энтропийного кодирования, таких как CAVLC, PIPE или другие технологии контекстно-адаптивного энтропийного кодирования.
[0112] В этом примере, модуль 56 энтропийного кодирования может использовать порядок сканирования, например, горизонтальный или вертикальный порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, модуль 56 энтропийного кодирования может выбирать идентичную статистику для того, чтобы кодировать координаты X и Y при использовании первого порядка сканирования для того, чтобы кодировать блок, и кодировать переставленные координаты X и Y при использовании второго порядка сканирования для того, чтобы кодировать блок. Кроме того, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), модуль 56 энтропийного кодирования может кодировать координату с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y или переставленных координат X и Y, в зависимости от порядка сканирования, используемого для того, чтобы кодировать блок, может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение. Модуль 56 энтропийного кодирования затем может использовать выбранную статистику для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0113] Как также описано выше, в этом примере, координаты X и Y и переставленные координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. "преобразованы в двоичную форму". В связи с этим, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может кодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее кодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y и переставленным координатам X и Y для ранее кодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее кодированных блоков, как описано выше. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y и переставленных координат X и Y, как также описано выше. Модуль 56 энтропийного кодирования может использовать оценки вероятности для того, чтобы кодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0114] В качестве другого примера, в некоторых случаях, различные значения элемента выборки унарного кодового слова для одной координаты (например, X) могут приводить к различным оценкам вероятности для соответствующего элемента выборки унарного кодового слова для другой координаты (например, Y). В связи с этим, при кодировании элемента выборки унарного кодового слова для одной координаты с использованием оценок вероятности, соответствующих элементу выборки, как описано выше, использование оценок вероятности, которые включают в себя информацию относительно значения элемента выборки, например, соответствующего элемента выборки унарного кодового слова для другой координаты, может приводить к точности оценок вероятности, и, следовательно, может обеспечивать эффективное кодирование. Например, элемент выборки унарного кодового слова для другой координаты может быть элементом выборки, который соответствует элементу выборки унарного кодового слова для одной координаты, например, элементы выборки могут находиться в идентичных или аналогичных позициях элементов выборки в своих соответствующих кодовых словах. Кодирование координат X и Y и переставленных координат X и Y (или координат X и Y, которые, в общем, указывают информацию позиции последнего значимого коэффициента для блока видеоданных) таким "перемеженным" способом с использованием ранее кодированных элементов выборки в качестве контекстов может давать возможность использования взаимной информации соответствующих координат X и Y, что может давать возможность более эффективного кодирования координат.
[0115] В других примерах, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y и переставленные координаты X и Y, в общем, перемеженным способом. В некоторых примерах, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать отдельные элементы выборки кодовых слов для соответствующих координат X и Y перемеженным способом. В других примерах, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать группы элементов выборки кодовых слов перемеженным способом. Например, некоторые элементы выборки кодового слова для каждой из координат X и Y могут быть кодированы с использованием первого режима кодирования (например, режима регулярного кодирования), в то время как оставшиеся элементы выборки кодового слова могут быть кодированы с использованием второго режима кодирования (например, режима обходного кодирования). В связи с этим, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать один или более элементов выборки кодового слова, соответствующего одной из координат, кодированных с использованием первого (например, обычного) режима кодирования, до кодирования одного или более элементов выборки кодового слова, соответствующего другой координате, кодированной с использованием первого режима кодирования, и последующего кодирования одного или более элементов выборки кодового слова, соответствующего одной координате, кодированной с использованием второго (например, обходного) режима кодирования, до кодирования одного или более элементов выборки кодового слова, соответствующего другой координате, кодированной с использованием второго режима кодирования. В других примерах, модуль 56 энтропийного кодирования может быть выполнен с возможностью совместно кодировать элементы выборки кодовых слов, кодированных с использованием второго режима кодирования.
[0116] Соответственно, разделение кодирования элементов выборки кодового слова для каждой из координат X и Y способом, описанным выше, может давать возможность группировки элементов выборки, кодированных с использованием конкретного режима кодирования (например, обходного режима), что может повышать производительность кодирования.
[0117] Другими словами, в случаях, если каждая из координат X и Y и переставленных координат X и Y содержит последовательность из одного или более элементов выборки, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования, который включает в себя применение контекстной модели, которая включает в себя статистику на основе одних из координат X и Y и переставленных координат X и Y. Модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать соответствующие координаты X и Y посредством кодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки последовательности, соответствующей другой координате. Дополнительно, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0118] Соответственно, чтобы кодировать информацию позиции последнего значимого коэффициента, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y и переставленные координаты X и Y перемеженным способом с использованием ранее кодированных элементов выборки в качестве контекстов. Иными словами, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать каждый элемент выборки унарного кодового слова для данной координаты посредством выполнения процесса контекстно-адаптивного энтропийного кодирования, который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию элемента выборки в унарном кодовом слове, как описано выше, и значение одного или более ранее кодированных элементов выборки унарного кодового слова для другой координаты. Дополнительно, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y и переставленные координаты X и Y, в общем, перемеженным способом.
[0119] Следует отметить, что, в других примерах согласно технологиям этого раскрытия, могут быть использованы другие типы кодовых слов, например, усеченные унарные кодовые слова, экспоненциальные кодовые слова Голомба, конкатенированные кодовые слова, а также комбинации различных технологий кодирования.
[0120] Также следует отметить, что в некоторых примерах, модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью кодировать координаты X и Y, когда порядок сканирования содержит третий порядок сканирования. Например, третий порядок сканирования может отличаться от первого порядка сканирования и второго порядка сканирования. В качестве одного примера, третий порядок сканирования может представлять собой зигзагообразный порядок сканирования или диагональный порядок сканирования, при этом зигзагообразный или диагональный порядок сканирования также берет начало в общей позиции в блоке, например, в DC-позиции.
[0121] В этом примере, модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью кодировать информацию, которая идентифицирует порядок сканирования, т.е. информацию порядка сканирования для блока. Альтернативно, как описано выше, модуль 56 энтропийного кодирования может опускать кодирование информации порядка сканирования для блока, когда модуль 56 энтропийного кодирования использует адаптивный порядок сканирования для того, чтобы кодировать блок. Дополнительно, в некоторых случаях, модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью кодировать информацию, которая идентифицирует позиции всех других значимых коэффициентов в блоке, т.е. информацию позиции значимых коэффициентов для блока.
[0122] Например, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов, как описано выше. Как также описано выше, информация позиции значимых коэффициентов может быть кодирована посредством кодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0123] Контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее кодированных блоков видеоданных. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы кодировать информацию позиции значимых коэффициентов для последующих кодированных блоков видеоданных способом, описанным выше.
[0124] В качестве другого примера, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком. Например, порядок сканирования может представлять собой один из множества порядков сканирования, при этом каждый из множества порядков сканирования берет начало в общей позиции в блоке, например, в DC-позиции.
[0125] В этом примере, для того, чтобы кодировать координаты X и Y, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать информацию, которая указывает то, соответствует или нет координата X общей позиции, кодировать информацию, которая указывает то, соответствует или нет координата Y общей позиции, а в случае, если координата X не соответствует общей позиции, и координата Y не соответствует общей позиции, кодировать информацию, которая идентифицирует порядок сканирования. Модуль 56 энтропийного кодирования может быть дополнительно выполнен с возможностью, в случае, если координата X не соответствует общей позиции, кодировать координату X на основе порядка сканирования, а в случае, если координата Y не соответствует общей позиции, кодировать координату Y на основе порядка сканирования.
[0126] В этом примере, для того, чтобы кодировать координату X и координату Y на основе порядка сканирования, модуль 56 энтропийного кодирования может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели посредством модуля 56 энтропийного кодирования на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя порядок сканирования.
[0127] Дополнительно, в качестве одного примера, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать одну координату (например, координату Y) после другой координаты (например, координаты X), при этом модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать одну координату с использованием значения другой ранее кодированной координаты в качестве контекста. В качестве другого примера, когда каждая из координат X и Y содержит последовательность из одного или более элементов выборки, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать, по меньшей мере, один элемент выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Дополнительно, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать один или более элементов выборки последовательности, соответствующей одной координате, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0128] В любом случае, после кодирования информации позиции последнего значимого коэффициента и, в некоторых случаях, информации порядка сканирования и информации позиции значимых коэффициентов, т.е. SM-данных, для блока способом, описанным выше, модуль 56 энтропийного кодирования также может кодировать значение каждого значимого коэффициента (например, абсолютную величину и знак каждого значимого коэффициента, указываемые посредством элементов синтаксиса "coeff_abs_level_minus1" и "coeff_sign_flag", соответственно) в блоке.
[0129] Соответственно, технологии этого раскрытия могут предоставлять возможность модулю 56 энтропийного кодирования кодировать информацию позиции последнего значимого коэффициента для блока более эффективно, чем при использовании других способов, и могут предоставлять возможность модулю 56 энтропийного кодирования иметь меньшую сложность относительно других систем. Таким образом, может быть относительная экономия битов для кодированного потока битов, включающего в себя информацию позиции последнего значимого коэффициента, и относительное уменьшение сложности для модуля 56 энтропийного кодирования, используемого для того, чтобы кодировать информацию, при использовании технологий этого раскрытия.
[0130] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пикселной области, к примеру, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством добавления остаточного блока к прогнозному блоку одного из кадров запоминающего устройства 64. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять значения субцелочисленных пикселов для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в модуле 64 хранения опорных кадров. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы взаимно кодировать блок в последующем видеокадре.
[0131] Таким образом, видеокодер 20 представляет пример видеокодера, выполненного с возможностью кодировать координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодировать переставленные координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0132] Фиг. 3 является блок-схемой, которая иллюстрирует пример видеодекодера 30, который может реализовывать технологии для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных согласно технологиям этого раскрытия. В примере по фиг. 3, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, запоминающее устройство 82 и сумматор 80. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в общем, взаимно-обратный относительно прохода кодирования, описанного относительно видеокодера 20 (фиг. 2). Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых из модуля 70 энтропийного декодирования.
[0133] В некоторых примерах, видеодекодер 30 может быть выполнен с возможностью принимать кодированные видеоданные (например, один или более макроблоков или TU для CU) из видеокодера 20. В соответствии с технологиями этого раскрытия, в качестве одного примера, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования. Модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью декодировать переставленные координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования. Например, второй порядок сканирования может отличаться от первого порядка сканирования.
[0134] В этом примере, первый порядок сканирования и второй порядок сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования, при этом горизонтальный порядок сканирования и вертикальный порядок сканирования берут начало в общей позиции в блоке, например, в DC-позиции.
[0135] В частности, первый порядок сканирования и второй порядок сканирования могут представлять собой порядок сканирования, который может быть использован посредством модуля 70 энтропийного декодирования для того, чтобы декодировать блок. Например, первый и второй порядки сканирования могут представлять собой порядки сканирования, используемые посредством видеокодера 20 для того, чтобы кодировать блоки видеоданных, и посредством видеодекодера 30 для того, чтобы декодировать блоки в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30. В некоторых примерах, первый и второй порядки сканирования могут представлять собой только некоторые порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. В других примерах, первый и второй порядки сканирования могут представлять собой единственные порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки.
[0136] Кроме того, переставленные координаты X и Y также соответствуют информации позиции последнего значимого коэффициента для блока, но дополнительно обрабатываются, т.е. переставляются, посредством модуля 70 энтропийного декодирования, чтобы обеспечивать более эффективное декодирование информации, чем при использовании других технологий, как описано выше. В частности, переставленные координаты X и Y могут обеспечивать использование общей статистики для того, чтобы декодировать координаты X и Y и переставленные координаты X и Y, которые указывают информацию позиции последнего значимого коэффициента для блока, как также описано выше.
[0137] В этом примере, для того, чтобы декодировать координаты X и Y и переставленные координаты X и Y, модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью определять статистику, которая указывает вероятность того, что каждая из координат X и Y содержит данное значение, при этом декодирование координат X и Y и переставленных координат X и Y содержит декодирование на основе статистики. Например, вероятность того, что координата X содержит данное значение, может быть использована для того, чтобы декодировать координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, может быть использована для того, чтобы декодировать координату Y и переставленную координату X.
[0138] В общем, статистика может указывать вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования, содержит данное значение (например, "0", "1", "2" и т.д.).
[0139] Как описано выше, поскольку первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, статистика дополнительно может указывать вероятность того, что каждая переставленных координат X и Y содержит данное значение. В некоторых примерах, модуль 70 энтропийного декодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее декодированных блоков видеоданных, например, значений координат X и Y и переставленных координат X и Y для ранее декодированных блоков.
[0140] Модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью обновлять статистику на основе координат X и Y и переставленных координат X и Y. Например, вероятность того, что координата X содержит данное значение, может быть обновлена с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, может быть обновлена с использованием координаты Y и переставленной координаты X. Например, обновленная статистика может быть использована для того, чтобы декодировать информацию позиции последнего значимого коэффициента для последующих декодированных блоков видеоданных способом, описанным выше.
[0141] В качестве одного примера, для того, чтобы декодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение посредством модуля 70 энтропийного декодирования контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования. Как упомянуто выше, в дополнение к CABAC, описанные технологии перестановки координат X и Y для целей кодирования также могут быть использованы в других технологиях контекстно-адаптивного кодирования, таких как CAVLC, PIPE или другие контекстно-адаптивные технологии.
[0142] В этом примере, модуль 70 энтропийного декодирования может использовать порядок сканирования, например, горизонтальный или вертикальный порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, модуль 70 энтропийного декодирования может выбирать идентичную статистику для того, чтобы декодировать координаты X и Y при использовании первого порядка сканирования для того, чтобы декодировать блок, и декодировать переставленные координаты X и Y при использовании второго порядка сканирования для того, чтобы декодировать блок. Кроме того, в случаях, если одна координата (например, координата Y) декодируется после другой координаты (например, координаты X), модуль 70 энтропийного декодирования может декодировать координату с использованием значения другой ранее декодированной координаты в качестве контекста. Иными словами, значение ранее декодированной одной из координат X и Y или переставленных координат X и Y, в зависимости от порядка сканирования, используемого для того, чтобы декодировать блок, может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая декодированная координата содержит данное значение. Модуль 70 энтропийного декодирования затем может использовать выбранную статистику для того, чтобы декодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0143] Как также описано выше, в этом примере, координаты X и Y и переставленные координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. "преобразованы в двоичную форму". В связи с этим, для того, чтобы декодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может декодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее декодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y и переставленным координатам X и Y для ранее декодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее декодированных блоков, как описано выше. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y и переставленных координат X и Y, как также описано выше. Модуль 70 энтропийного декодирования может использовать оценки вероятности для того, чтобы декодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0144] В качестве другого примера, в некоторых случаях, различные значения элемента выборки унарного кодового слова для одной координаты (например, X) могут приводить к различным оценкам вероятности для соответствующего элемента выборки унарного кодового слова для другой координаты (например, Y). В связи с этим, при декодировании элемента выборки унарного кодового слова для одной координаты позиции последнего значимого коэффициента с использованием оценок вероятности, соответствующих элементу выборки, как описано выше, использование оценок вероятности, которые включают в себя информацию относительно значения элемента выборки, например, соответствующего элемента выборки унарного кодового слова для другой координаты, может приводить к точности оценок вероятности, и, следовательно, может обеспечивать эффективное декодирование. Например, элемент выборки унарного кодового слова для другой координаты может быть элементом выборки, который соответствует элементу выборки унарного кодового слова для одной координаты, например, элементы выборки могут находиться в идентичных или аналогичных позициях элементов выборки в своих соответствующих кодовых словах.
[0145] Декодирование координат X и Y и переставленных координат X и Y (или координат X и Y, которые, в общем, указывают информацию позиции последнего значимого коэффициента для блока видеоданных) таким "перемеженным" способом с использованием ранее декодированных элементов выборки в качестве контекстов может давать возможность использования взаимной информации соответствующих координат X и Y, что может давать возможность более эффективного декодирования координат.
[0146] В других примерах, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать координаты X и Y и переставленные координаты X и Y, в общем, перемеженным способом. В некоторых примерах, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать отдельные элементы выборки кодовых слов для соответствующих координат X и Y перемеженным способом. В других примерах, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать группы элементов выборки кодовых слов перемеженным способом. Например, некоторые элементы выборки кодового слова для каждой из координат X и Y могут быть декодированы с использованием первого режима кодирования (например, режима регулярного кодирования), в то время как оставшиеся элементы выборки кодового слова могут быть декодированы с использованием второго режима кодирования (например, режима обходного кодирования). В связи с этим, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать один или более элементов выборки кодового слова, соответствующего одной из координат, кодированных с использованием первого (например, обычного) режима кодирования, до декодирования одного или более элементов выборки кодового слова, соответствующего другой координате, кодированной с использованием первого режима кодирования, и последующего декодирования одного или более элементов выборки кодового слова, соответствующего одной координате, кодированной с использованием второго (например, обходного) режима кодирования, до декодирования одного или более элементов выборки кодового слова, соответствующего другой координате, кодированной с использованием второго режима кодирования. В других примерах, модуль 70 энтропийного декодирования может быть выполнен с возможностью совместно декодировать элементы выборки кодовых слов, кодированных с использованием второго режима кодирования.
[0147] Соответственно, разделение декодирования элементов выборки кодового слова для каждой из координат X и Y способом, описанным выше, может давать возможность группировки элементов выборки, декодированных с использованием конкретного режима кодирования (например, обходного режима), что также может повышать эффективность кодирования.
[0148] Другими словами, в случаях, если каждая из координат X и Y и переставленных координат X и Y содержит последовательность из одного или более элементов выборки, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования, который включает в себя применение контекстной модели, которая включает в себя статистику на основе одних из координат X и Y и переставленных координат X и Y. Модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать соответствующие координаты X и Y посредством декодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки последовательности, соответствующей другой координате. Дополнительно, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать один или более элементов выборки последовательности, соответствующей одной координате, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0149] Соответственно, чтобы декодировать информацию позиции последнего значимого коэффициента, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать координаты X и Y и переставленные координаты X и Y перемеженным способом с использованием ранее декодированных элементов выборки в качестве контекстов. Иными словами, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать каждый элемент выборки унарного кодового слова для данной координаты посредством выполнения процесса контекстно-адаптивного энтропийного кодирования, который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию элемента выборки в унарном кодовом слове, как описано выше, и значение одного или более ранее декодированных элементов выборки унарного кодового слова для другой координаты. Дополнительно, модуль 56 энтропийного кодирования может быть выполнен с возможностью кодировать координаты X и Y и переставленные координаты X и Y, в общем, перемеженным способом.
[0150] Следует отметить, что, в других примерах согласно технологиям этого раскрытия, могут быть использованы другие типы кодовых слов, например, усеченные унарные кодовые слова, экспоненциальные кодовые слова Голомба, конкатенированные кодовые слова, а также комбинации различных технологий кодирования.
[0151] Также следует отметить, что в некоторых примерах, модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью декодировать координаты X и Y, когда порядок сканирования содержит третий порядок сканирования. Например, третий порядок сканирования может отличаться от первого порядка сканирования и второго порядка сканирования. В качестве одного примера, третий порядок сканирования может представлять собой зигзагообразный порядок сканирования или диагональный порядок сканирования, при этом зигзагообразный или диагональный порядок сканирования также берет начало в общей позиции в блоке, например, в DC-позиции.
[0152] В этом примере, в некоторых случаях, модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью декодировать информацию, которая идентифицирует порядок сканирования, т.е. информацию порядка сканирования для блока. Альтернативно, как описано выше, модуль 70 энтропийного декодирования может опускать декодирование информации порядка сканирования для блока, когда модуль 70 энтропийного декодирования использует адаптивный порядок сканирования для того, чтобы декодировать блок. Дополнительно, в некоторых случаях, модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью декодировать информацию, которая идентифицирует позиции других значимых коэффициентов в блоке, т.е. информацию позиции значимых коэффициентов для блока.
[0153] Например, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов, как описано выше. Как также описано выше, информация позиции значимых коэффициентов может быть декодирована посредством декодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0154] С другой стороны, контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее декодированных блоков видеоданных. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы декодировать информацию позиции значимых коэффициентов для последующих декодированных блоков видеоданных способом, описанным выше.
[0155] В качестве другого примера, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в конкретном блоке видеоданных согласно порядку сканирования, ассоциированному с блоком. Например, порядок сканирования может представлять собой один из множества порядков сканирования, при этом каждый из множества порядков сканирования берет начало в общей позиции в блоке, например, в DC-позиции.
[0156] В этом примере, для того, чтобы декодировать координаты X и Y, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать информацию, которая указывает то, соответствует или нет координата X общей позиции, декодировать информацию, которая указывает то, соответствует или нет координата Y общей позиции, а в случае, если координата X не соответствует общей позиции, и координата Y не соответствует общей позиции, декодировать информацию, которая идентифицирует порядок сканирования. Модуль 70 энтропийного декодирования может быть дополнительно выполнен с возможностью, в случае, если координата X не соответствует общей позиции, декодировать координату X на основе порядка сканирования, а в случае, если координата Y не соответствует общей позиции, декодировать координату Y на основе порядка сканирования.
[0157] В этом примере, для того, чтобы декодировать координату X и координату Y на основе порядка сканирования, модуль 70 энтропийного декодирования может быть выполнен с возможностью осуществлять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели посредством модуля 70 энтропийного декодирования на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя порядок сканирования.
[0158] Дополнительно, в качестве одного примера, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать одну координату (например, координату Y) после другой координаты (например, координаты X), при этом модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать одну координату с использованием значения другой ранее декодированной координаты в качестве контекста. В качестве другого примера, когда каждая из координат X и Y содержит последовательность из одного или более элементов выборки, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать, по меньшей мере, один элемент выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Дополнительно, модуль 70 энтропийного декодирования может быть выполнен с возможностью декодировать один или более элементов выборки последовательности, соответствующей одной координате, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0159] В любом случае, после декодирования информации позиции последнего значимого коэффициента и, в некоторых случаях, информации порядка сканирования и информации позиции значимых коэффициентов, т.е. SM-данных, для блока способом, описанным выше, модуль 70 энтропийного декодирования также может декодировать значение каждого значимого коэффициента (например, абсолютную величину и знак каждого значимого коэффициента, указываемые посредством элементов синтаксиса "coeff_abs_level_minus1" и "coeff_sign_flag", соответственно) в блоке.
[0160] Соответственно, технологии настоящего раскрытия могут предоставлять возможность модулю 70 энтропийного декодирования декодировать информацию позиции последнего значимого коэффициента для блока более эффективно, чем при использовании других способов, и могут предоставлять возможность модулю 70 энтропийного декодирования иметь меньшую сложность относительно других систем. Таким образом, может быть относительная экономия битов для кодированного потока битов, включающего в себя информацию, и относительное уменьшение сложности для модуля 70 энтропийного декодирования, используемого для того, чтобы декодировать информацию, при использовании технологий этого раскрытия.
[0161] Модуль 72 компенсации движения может использовать векторы движения, принятые в потоке битов, чтобы идентифицировать прогнозный блок в опорных кадрах в запоминающем устройстве 82. Модуль 74 внутреннего прогнозирования может использовать режимы внутреннего прогнозирования, принятые в потоке битов, чтобы формировать прогнозный блок из пространственно смежных блоков.
[0162] Модуль 74 внутреннего прогнозирования может использовать индикатор относительно режима внутреннего прогнозирования для кодированного блока, чтобы внутренне прогнозировать кодированный блок, например, с использованием пикселов соседних ранее декодированных блоков. Для примеров, в которых блок кодируется в режиме взаимного прогнозирования, модуль 72 компенсации движения может принимать информацию, задающую вектор движения, чтобы извлекать данные прогнозирования с компенсацией движения для кодированного блока. В любом случае, модуль 72 компенсации движения или модуль 74 внутреннего прогнозирования может предоставлять информацию, задающую прогнозный блок, в сумматор 80.
Y
[0163] Модуль 76 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты, предоставляемые в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя стандартный процесс, например, как задано по стандарту декодирования H.264 или как выполняется посредством тестовой модели HEVC. Процесс обратного квантования также может включать в себя использование параметра QP квантования, вычисленного посредством видеокодера 20 для каждого блока, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться.
[0164] Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пикселной области. Модуль 72 компенсации движения формирует блоки с компенсацией движения, возможно выполняя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны использоваться для оценки движения с субпикселной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 во время кодирования видеоблока, чтобы вычислять интерполированные значения для субцелочисленных пикселов опорного блока. Модуль 72 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20 согласно принимаемой синтаксической информации, и использовать интерполяционные фильтры, чтобы формировать прогнозные блоки.
[0165] Модуль 72 компенсации движения использует часть из синтаксической информации для кодированного блока, чтобы определять размеры блоков, используемых для того, как кодировать кадр(ы) кодированной видеопоследовательности, информации сегментов, которая описывает, как сегментируется каждый блок кадра или серия последовательных макроблоков кодированной видеопоследовательности, режимов, указывающих то, как кодируется каждый сегмент, одного или более опорных кадров (и списков опорных кадров) для каждого взаимно кодированного блока или сегмента, и другой информации, чтобы декодировать кодированную видеопоследовательность. Модуль 74 внутреннего прогнозирования также может использовать синтаксическую информацию для кодированного блока, чтобы внутренне прогнозировать кодированный блок, например, с использованием пикселов соседних ранее декодированных блоков, как описано выше.
[0166] Сумматор 80 суммирует остаточные блоки с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения или модуля 74 внутреннего прогнозирования, чтобы формировать декодированные блоки. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в запоминающем устройстве 82, которое предоставляет опорные блоки для последующей компенсации движения, а также формирует декодированное видео для представления на устройстве отображения (к примеру, устройстве 32 отображения по фиг. 1).
[0167] Таким образом, видеодекодер 30 представляет пример видеокодера, выполненного с возможностью кодировать координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодировать переставленные координаты X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0168] Фиг. 4A-4C являются концептуальными схемами, которые иллюстрируют пример блока видеоданных и соответствующей информации позиции значимых коэффициентов и информации позиции последнего значимого коэффициента. Как показано на фиг. 4A, блок видеоданных, например, макроблок или TU для CU, может включать в себя квантованные коэффициенты преобразования. Например, как показано на фиг. 4A, блок 400 может включать в себя квантованные коэффициенты преобразования, сформированные с использованием вышеописанных технологий прогнозирования, преобразования и квантования. Допустим, согласно этому примеру, что блок 400 имеет размер 2N×2N, где N равно двум. Соответственно, блок 400 имеет размер 4×4 и включает в себя шестнадцать квантованных коэффициентов преобразования, как также показано на фиг. 4A. Дополнительно допустим, что порядок сканирования, ассоциированный с блоком 400, представляет собой зигзагообразный порядок сканирования, как показано на фиг. 5A, подробнее описанном ниже.
[0169] В этом примере, последний значимый коэффициент в блоке 400 согласно зигзагообразному порядку сканирования является квантованным коэффициентом преобразования, равным "1", расположенным в позиции 406 в блоке 400. В других примерах, как описано выше, блок может иметь размер, который меньше или более размера блока 400, и может включать в себя больше или меньше квантованных коэффициентов преобразования, чем блок 400. В еще одних других примерах, порядок сканирования, ассоциированный с блоком 400, может быть иным порядком сканирования, например, горизонтальным порядком сканирования, вертикальным порядком сканирования, диагональным порядком сканирования или другим порядком сканирования.
[0170] Фиг. 4B иллюстрирует пример данных флагов значимых коэффициентов, т.е. флагов значимых коэффициентов, представленных в форме карты или блок-схемы, как описано выше. В примере по фиг. 4B, блок 402 может соответствовать блоку 400, проиллюстрированному на фиг. 4A. Другими словами, флаги значимых коэффициентов блока 402 могут соответствовать квантованным коэффициентам преобразования блока 400. Как показано на фиг. 4B, флаги значимых коэффициентов блока 402, которые равны "1", соответствуют значимым коэффициентам блока 400. Аналогично, флаги значимых коэффициентов блока 402, которые равны "0", соответствуют нулевым или незначащим коэффициентам блока 400.
[0171] В этом примере, флаг значимого коэффициента блока 402, соответствующего последнему значимому коэффициенту в блоке 400 согласно зигзагообразному порядку сканирования, является флагом значимого коэффициента, равным "1", расположенным в позиции 408 в блоке 402. В других примерах, значения флагов значимых коэффициентов, используемые для того, чтобы указывать значащие или незначащие коэффициенты, могут варьироваться (например, флаги значимых коэффициентов, равные "0", могут соответствовать значимым коэффициентам, а флаги значимых коэффициентов, равные "1", могут соответствовать незначащим коэффициентам).
[0172] Фиг. 4C иллюстрирует пример данных флагов последних значимых коэффициентов, т.е. флагов последних значимых коэффициентов, представленных в форме карты или блок-схемы, как также описано выше. В примере по фиг. 4C, блок 404 может соответствовать блоку 400 и блоку 402, проиллюстрированным на фиг. 4A и фиг. 4B, соответственно. Другими словами, флаги последних значимых коэффициентов блока 404 могут соответствовать квантованным коэффициентам преобразования блока 400 и флагам значимых коэффициентов блока 402.
[0173] Как показано на фиг. 4C, флаг последнего значимого коэффициента блока 404, который равен "1", расположенный в позиции 410 в блоке 404, соответствует последнему значимому коэффициенту блока 400 и последнему из флагов значимых коэффициентов блока 402, которые равны "1", согласно зигзагообразному порядку сканирования. Аналогично, флаги последних значимых коэффициентов блока 404, которые равны "0" (т.е. все оставшиеся флаги последних значимых коэффициентов), соответствуют нулевым или незначащим коэффициентам блока 400 и всем флагам значимых коэффициентов блока 402, которые равны "1", кроме последнего из таких флагов значимых коэффициентов согласно зигзагообразному порядку сканирования.
[0174] Значения флагов последних значимых коэффициентов, используемых для того, чтобы указывать последний значимый коэффициент согласно порядку сканирования, могут варьироваться (например, флаг последнего значимого коэффициента, равный "0", может соответствовать последнему значимому коэффициенту согласно порядку сканирования, и флаги последних значимых коэффициентов, равные "1", могут соответствовать всем оставшимся коэффициентам). В любом случае, флаги значимых коэффициентов блока 402 и флаги последних значимых коэффициентов блока 404 могут совместно упоминаться как SM-данные для блока 400.
[0175] Как описано выше, информация позиции значимых коэффициентов для блока видеоданных может указываться посредством преобразования в последовательную форму флагов значимых коэффициентов для блока из двумерного блочного представления, как проиллюстрировано в блоке 402, показанном на фиг. 4B, в одномерную матрицу, с использованием порядка сканирования, ассоциированного с блоком. В примере блоков 400-402, показанных на фиг. 4A-4B, также при условии зигзагообразного порядка сканирования, информация позиции значимых коэффициентов для блока 400 может указываться посредством преобразования в последовательную форму флагов значимых коэффициентов блока 402 в одномерную матрицу. Иными словами, информация позиции значимых коэффициентов для блока 400 может указываться посредством формирования последовательности флагов значимых коэффициентов блока 402 согласно зигзагообразному порядку сканирования.
[0176] В этом примере, сформированная последовательность может соответствовать значению "111111", представляющему первые 6 флагов значимых коэффициентов блока 402 согласно зигзагообразному порядку сканирования. Следует отметить, что сформированная последовательность может содержать флаги значимых коэффициентов, соответствующие диапазону позиций блоков в блоке 400, начиная с первой позиции блока в зигзагообразном порядке сканирования (т.е. в DC-позиции) и заканчивая позицией блока, соответствующей последнему значимому коэффициенту блока 400 согласно зигзагообразному порядку сканирования (т.е. согласно флагу последнего значимого коэффициента, равному "1", для блока 404).
[0177] Как также описано выше, информация позиции последнего значимого коэффициента для блока видеоданных может указываться посредством преобразования в последовательную форму флагов последних значимых коэффициентов для блока из двумерного блочного представления, как проиллюстрировано в блоке 404, показанном на фиг. 4B, в одномерную матрицу, с использованием порядка сканирования, ассоциированного с блоком. В примере блоков 400-404, показанных на фиг. 4A-4C, также при условии зигзагообразного порядка сканирования, информация позиции последнего значимого коэффициента для блока 400 может указываться посредством преобразования в последовательную форму флагов последних значимых коэффициентов блока 404 в одномерную матрицу. Иными словами, информация позиции последнего значимого коэффициента для блока 400 может указываться посредством формирования последовательности флагов последних значимых коэффициентов блока 404 согласно зигзагообразному порядку сканирования. В этом примере, сформированная последовательность может соответствовать значению "000001", представляющему первые 6 флагов последних значимых коэффициентов блока 404 согласно зигзагообразному порядку сканирования.
[0178] Кроме того, следует отметить, что сформированная последовательность может содержать флаги последних значимых коэффициентов, соответствующие диапазону позиций блоков в блоке 400, начиная с первой позиции блока в зигзагообразном порядке сканирования и заканчивая позицией блока, соответствующей последнему значимому коэффициенту блока 400 согласно зигзагообразному порядку сканирования (т.е. согласно флагу последнего значимого коэффициента, равному "1", для блока 404). Соответственно, в этом примере, флаги последних значимых коэффициентов после флага последнего значимого коэффициента, равного "1" согласно зигзагообразному порядку сканирования, не включаются в последовательность. Вообще говоря, флаги последних значимых коэффициентов после флага последнего значимого коэффициента, равного "1", согласно порядку сканирования, ассоциированному с блоком видеоданных, могут не требоваться для того, чтобы указывать информацию позиции последнего значимого коэффициента для блока. В связи с этим, в некоторых примерах, эти флаги опускаются из сформированной последовательности флагов последних значимых коэффициентов, используемых для того, чтобы указывать информацию.
[0179] Также следует отметить, что, как описано выше, если последний значимый коэффициент находится в последней позиции блока согласно порядку сканирования (например, в позиции нижнего правого блока), сформированная последовательность может не включать в себя флаг последнего значимого коэффициента, соответствующий последней позиции блока, поскольку позиция может логически выводиться как содержащая последний значимый коэффициент для блока. Соответственно, в этом примере, сформированная последовательность может соответствовать значению "000000000000000", в котором флаг последнего значимого коэффициента, соответствующий последней позиции блока, не включается в последовательность и логически выводится как равный "1".
[0180] Фиг. 5A-5C являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, сканированных с использованием зигзагообразного порядка сканирования, горизонтального порядка сканирования и вертикального порядка сканирования, соответственно. Как показано на фиг. 5A-5C, блок 8x8 видеоданных, например, макроблок или TU для CU, может включать в себя шестьдесят четыре квантованных коэффициента преобразования в соответствующих позициях блоков, обозначаемых с помощью кругов. Например, блоки 500-504 могут включать в себя шестьдесят четыре квантованных коэффициента преобразования, сформированные с использованием вышеописанных технологий прогнозирования, преобразования и квантования, при этом соответствующая позиция блока обозначается с помощью круга. Допустим, согласно этому примеру, что блоки 500-504 имеют размер 2N×2N, где N равно четырем. Соответственно, блоки 500-504 имеют размер 8×8.
[0181] Как показано на фиг. 5A, порядок сканирования, ассоциированный с блоком 500, представляет собой зигзагообразный порядок сканирования. Зигзагообразный порядок сканирования сканирует квантованные коэффициенты преобразования блока 500 диагональным способом, как указано посредством стрелок на фиг. 5A. Аналогично, как показано на фиг. 5B и 5C, порядки сканирования, ассоциированные с блоками 502 и 504, представляют собой горизонтальный порядок сканирования и вертикальный порядок сканирования, соответственно. Горизонтальный порядок сканирования сканирует квантованные коэффициенты преобразования блока 502 горизонтальным построчным или "растровым" способом, в то время как вертикальный порядок сканирования сканирует квантованные коэффициенты преобразования блока 504 вертикальным построчным или "циклически сдвинутым растровым" способом, как также указано посредством стрелок на фиг. 5B и 5C.
[0182] В других примерах, как описано выше, блок может иметь размер, который меньше или больше размера блоков 500-504, и может включать в себя больше или меньше квантованных коэффициентов преобразования и соответствующих позиций блоков. В этих примерах, порядок сканирования, ассоциированный с блоком, может сканировать квантованные коэффициенты преобразования блока практически аналогичным способом, как показано в примерах блоков 500-504 8×8 по фиг. 5A-5C, например, блока 4×4 или блока 16×16, могут сканироваться согласно любому из вышеописанных порядков сканирования.
[0183] Как описано выше, технологии настоящего раскрытия также могут применяться относительно множества других порядков сканирования, включающих в себя диагональный порядок сканирования, порядки сканирования, которые являются комбинациями зигзагообразного, горизонтального, вертикального и/или диагонального порядка сканирования, а также порядки сканирования, которые являются частично зигзагообразными, частично горизонтальными, частично вертикальными и/или частично диагональными. Помимо этого, технологии этого раскрытия также могут рассматривать порядок сканирования, который является адаптивным на основе статистики, ассоциированной с ранее кодированными блоками видеоданных (например, блоками, имеющими размер блока или режим кодирования, идентичный размеру блока или режиму кодирования кодируемого текущего блока). Например, в некоторых случаях порядок адаптивного сканирования может быть порядком сканирования, ассоциированным с блоком видеоданных.
[0184] Фиг. 6A-6C являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, для которых информация позиции последнего значимого коэффициента кодируется на основе информации порядка сканирования, согласно технологиям этого раскрытия. Как показано на фиг. 6A, блок 600 может включать в себя шестнадцать позиций блоков, упорядоченных от 0 до 15 согласно горизонтальному порядку сканирования, как указано посредством стрелок и описано выше со ссылкой на фиг. 5B. Каждая из шестнадцати позиций блоков может содержать квантованный коэффициент преобразования, как описано выше со ссылкой на фиг. 4A. Как также показано на фиг. 6A, третья позиция в блоке 600 согласно горизонтальному порядку сканирования, соответствующая позиции "2", может упоминаться как позиция 606. В этом примере, позиция 606 может быть представлена с использованием координат X и Y (2,0), где координата X равняется "2", координата Y равняется "0", и исходная позиция или "начало координат", соответствующая координатам X и Y (0,0), находится в верхнем левом углу блока 600, т.е. в DC-позиции, как описано выше. Допустим согласно этому примеру, что позиция 606 соответствует позиции последнего значимого коэффициента в блоке 600 согласно горизонтальному порядку сканирования.
[0185] Дополнительно допустим, что для блока 600, существует статистика, которая указывает вероятность того, что данная позиция 600 в блоке соответствует позиции последнего значимого коэффициента в блоке 600 согласно горизонтальному порядку сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно горизонтальному порядку сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y (2,0) содержит данное значение.
[0186] Кроме того, в некоторых примерах, координаты X и Y могут быть кодированы на основе статистики, например, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y и порядка сканирования. В этом примере, порядок сканирования, например, горизонтальный порядок сканирования, может быть использован для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Дополнительно, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), координата может быть кодирована с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение.
[0187] Дополнительно, в некоторых примерах, координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. "преобразованы в двоичную форму". В связи с этим, для того, чтобы кодировать координаты X и Y на основе статистики, каждый элемент выборки кодового слова, соответствующего конкретной координате, может быть кодирован посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове.
[0188] Как дополнительно показано на фиг. 6B, блок 602 также может включать в себя шестнадцать позиций блоков, также упорядоченных от 0 до 15, хотя, в этом случае, согласно вертикальному порядку сканирования, как указано посредством стрелок и описано выше со ссылкой на фиг. 5C. Каждая из шестнадцати позиций блоков может содержать квантованный коэффициент преобразования, как описано выше со ссылкой на фиг. 4A. Как также показано на фиг. 6B, третья позиция в блоке 602 согласно вертикальному порядку сканирования, соответствующая позиции "2", может упоминаться как позиция 608. В этом примере, позиция 608 может быть представлена с использованием координат X и Y (0,2), где координата X равняется "0", координата Y равняется "2", и исходная позиция или "начало координат", соответствующая координатам X и Y (0,0), также находится в верхнем левом углу блока 602, т.е. в DC-позиции, как описано выше. Допустим согласно этому примеру, что позиция 608 также соответствует позиции последнего значимого коэффициента в блоке 602 согласно вертикальному порядку сканирования.
[0189] В примерах фиг. 6A-6B горизонтальный порядок сканирования блока 600 может быть симметричным относительно вертикального порядка сканирования блока 602 таким образом, что вероятность того, что координата X, "2", позиции последнего значимого коэффициента в блоке 600 согласно горизонтальному порядку сканирования содержит данное значение, может быть идентичной или аналогичной вероятности того, что координата Y, "2", позиции последнего значимого коэффициента в блоке 602 согласно вертикальному порядку сканирования содержит идентичное значение, и наоборот. Аналогично, вероятность того, что координата Y, "0", позиции последнего значимого коэффициента в блоке 600 согласно горизонтальному порядку сканирования содержит данное значение, может быть идентичной или аналогичной вероятности того, что координата X, "0", позиции последнего значимого коэффициента в блоке 602 согласно вертикальному порядку сканирования содержит идентичное значение, и наоборот. Иными словами, координаты X и Y (2,0) позиции 606 в блоке 600 могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y (0,2) позиции 608 в блоке 602, соответственно. Как указано посредством пунктирной стрелки на фиг. 6B, переставленные координаты X и Y (0,2) позиции 608 в блоке 602 могут соответствовать позиции 610 в блоке 602, который может быть представлен с использованием координат X и Y (2,0).
[0190] В связи с этим, в соответствии с технологиями этого раскрытия, общая статистика, которая указывает вероятность того, что данная позиция 600 в блоке соответствует позиции последнего значимого коэффициента в блоке 600 согласно горизонтальному порядку сканирования, может быть использована для того, чтобы кодировать координаты X и Y (2,0) позиции 606 в блоке 600, а также переставленные координаты X и Y (0,2) позиции 608 в блоке 602, как описано выше.
[0191] Как дополнительно показано на фиг. 6C, блок 604 также может включать в себя шестнадцать позиций блоков, также упорядоченных от 0 до 15, хотя, в этом случае, согласно зигзагообразному порядку сканирования, как указано посредством стрелок и описано выше со ссылкой на фиг. 5A. Каждая из шестнадцати позиций блоков может содержать квантованный коэффициент преобразования, как описано выше со ссылкой на фиг. 4A. Как также показано на фиг. 6C, третья позиция в блоке 604 согласно зигзагообразному порядку сканирования, соответствующая позиции "2", может упоминаться как позиция 612. В этом примере, позиция 612 может быть представлена с использованием координат X и Y (0,1), где координата X равняется "0", координата Y равняется "1", и исходная позиция или "начало координат", соответствующая координатам X и Y (0,0), также находится в верхнем левом углу блока 604, т.е. в DC-позиции, как описано выше. Допустим согласно этому примеру, что позиция 612 также соответствует позиции последнего значимого коэффициента в блоке 604 согласно зигзагообразному порядку сканирования.
[0192] В примере по фиг. 6C, зигзагообразный порядок сканирования блока 604 может не быть симметричным относительно горизонтального или вертикального порядков сканирования блоков 600 и 602, соответственно. В связи с этим, идентичность или подобие вероятностей, описанных выше, не могут существовать в координатах X и Y, соответствующих позиции последнего значимого коэффициента в блоке 600 или блоке 602, и в координатах X и Y, соответствующих позиции последнего значимого коэффициента в блоке 604. Однако, координаты X и Y, соответствующие позиции последнего значимого коэффициента в блоках 604, могут быть кодированы с использованием общей статистики, описанной выше в отношении примеров фиг. 6A-6B. Например, тогда как использование общей статистики для того, чтобы кодировать координаты X и Y, может не точно отражать вероятность того, что соответствующие координаты содержат конкретные значения, такое кодирование координат, тем не менее, может повышать эффективность кодирования посредством использования общей статистики вместо раздельной статистики, тем самым потенциально уменьшая сложность системы, как описано выше.
[0193] Фиг. 7 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия. Технологии по фиг. 7, в общем, могут выполняться посредством любого процессора, будь то реализованный в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного, и при реализации в программном обеспечении или микропрограммном обеспечении, соответствующие аппаратные средства могут предоставляться для того, чтобы выполнять инструкции для программного обеспечения или микропрограммного обеспечения. В целях примера, технологии по фиг. 7 описываются относительно видеокодера 20 (фиг. 1 и 2) и/или видеодекодера 30 (фиг. 1 и 3), хотя следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять аналогичные технологии. Кроме того, этапы, проиллюстрированные на фиг. 7, могут быть выполнены в другом порядке или параллельно, и дополнительные этапы могут добавляться, а определенные этапы опускаться, без отступления от технологий этого раскрытия.
[0194] Первоначально, видеокодер 20 и/или видеодекодер 30 может определять то, представляет собой порядок сканирования, ассоциированный с блоком видеоданных, первый порядок сканирования или второй порядок сканирования (700). Например, блок может быть макроблоком или TU для CU, как описано выше. Кроме того, первый порядок сканирования и второй порядок сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования, при этом горизонтальный порядок сканирования и вертикальный порядок сканирования берут начало в общей позиции в блоке, например, в DC-позиции, как также описано выше.
[0195] В частности, первый порядок сканирования и второй порядок сканирования могут представлять собой порядок сканирования, который может быть использован посредством видеокодера 20 и/или видеодекодера 30 для того, чтобы кодировать блок. Например, первый и второй порядки сканирования могут представлять собой порядки сканирования, используемые посредством видеокодера 20 для того, чтобы кодировать блоки видеоданных, и посредством видеодекодера 30 для того, чтобы декодировать блоки в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30. В некоторых примерах, первый и второй порядки сканирования могут представлять собой только некоторые порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. В других примерах, первый и второй порядки сканирования могут представлять собой единственные порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. Таким образом, примерный способ по фиг. 7 может быть применимым к любой системе кодирования, которая использует множество порядков сканирования для того, чтобы кодировать блоки видеоданных.
[0196] Видеокодер 20 может выполнять определение того, представляет собой порядок сканирования первый порядок сканирования или второй порядок сканирования, непосредственно, например, в качестве части кодирования блока. Видеодекодер 30 может выполнять это определение посредством декодирования информации порядка сканирования для блока. Например, видеокодер 20 может кодировать информацию порядка сканирования, как подробнее описано в примерном способе по фиг. 8, и видеодекодер 30 может декодировать информацию, как также подробнее описано в примерном способе по фиг. 9.
[0197] В случае, если порядок сканирования представляет собой первый порядок сканирования (702), видеокодер 20 и/или видеодекодер 30 дополнительно может кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования (704), т.е. информацию позиции последнего значимого коэффициента для блока. Тем не менее, в случае, если порядок сканирования представляет собой второй порядок сканирования (702), видеокодер 20 и/или видеодекодер 30 вместо этого может кодировать переставленные координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования (706). В этом примере, переставленные координаты X и Y также соответствуют информации позиции последнего значимого коэффициента для блока, но дополнительно обрабатываются, т.е. переставляются, посредством видеокодера 20 и/или видеодекодера 30, для того, чтобы обеспечивать более эффективное кодирование информации, чем при использовании других технологий, как описано выше. В частности, переставленные координаты X и Y могут обеспечивать использование общей статистики для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, которые указывают информацию позиции последнего значимого коэффициента для блока, как также описано выше. В любом случае, информация позиции последнего значимого коэффициента для блока, будь то представленная с использованием координат X и Y или переставленных координат X и Y, может быть кодирована в случае видеокодера 20 и декодирована в случае видеодекодера 30.
[0198] Чтобы кодировать координаты X и Y и переставленные координаты X и Y, видеокодер 20 и/или видеодекодер 30 дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение.
[0199] Поскольку первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, статистика дополнительно может указывать вероятность того, что каждая переставленных координат X и Y содержит данное значение. В некоторых примерах, видеокодер 20 и/или видеодекодер 30 может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее кодированных блоков видеоданных, например, значений координат X и Y и переставленных координат X и Y для ранее кодированных блоков.
[0200] В этом примере, видеокодер 20 и/или видеодекодер 30 может кодировать координаты X и Y и переставленные координаты X и Y на основе статистики. Например, видеокодер 20 и/или видеодекодер 30 может кодировать координаты X и Y и переставленные координаты X и Y на основе статистики таким образом, что вероятность того, что координата X содержит данное значение, используется для того, чтобы кодировать координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, используется для того, чтобы кодировать координату Y и переставленную координату X. Кроме того, видеокодер 20 и/или видеодекодер 30 может обновлять статистику на основе координат X и Y и переставленных координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. В этом примере, вероятность того, что координата X содержит данное значение, может быть обновлена с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, может быть обновлена с использованием координаты Y и переставленной координаты X. Например, обновленная статистика может быть использована для того, чтобы кодировать информацию позиции последнего значимого коэффициента для последующих кодированных блоков видеоданных способом, описанным выше.
[0201] В некоторых примерах, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, видеокодер 20 и/или видеодекодер 30 может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования. В этом примере, видеокодер 20 и/или видеодекодер 30 может использовать порядок сканирования, например, горизонтальный или вертикальный порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, видеокодер 20 и/или видеодекодер 30 может выбирать идентичную статистику для того, чтобы кодировать координаты X и Y при использовании первого порядка сканирования для того, чтобы кодировать блок, и кодировать переставленные координаты X и Y при использовании второго порядка сканирования для того, чтобы кодировать блок.
[0202] Кроме того, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), видеокодер 20 и/или видеодекодер 30 может кодировать координату с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y или переставленных координат X и Y, в зависимости от порядка сканирования, используемого для того, чтобы кодировать блок, может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение. Видеокодер 20 и/или видеодекодер 30 затем может использовать выбранную статистику для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0203] В этом примере, координаты X и Y и переставленные координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более битов или элементов выборки, т.е. преобразованы в двоичную форму. В связи с этим, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, видеокодер 20 и/или видеодекодер 30 может кодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, видеокодер 20 и/или видеодекодер 30 может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее кодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y и переставленным координатам X и Y для ранее кодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее кодированных блоков, как описано выше. В других примерах, видеокодер 20 и/или видеодекодер 30 также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y и переставленных координат X и Y, как также описано выше. Видеокодер 20 и/или видеодекодер 30 может использовать оценки вероятности для того, чтобы кодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0204] В качестве другого примера, видеокодер 20 и/или видеодекодер 30 может кодировать координаты X и Y и переставленные координаты X и Y посредством кодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Кроме того, видеокодер 20 и/или видеодекодер 30 может кодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0205] В завершение, в некоторых примерах, видеокодер 20 и/или видеодекодер 30 может кодировать информацию, которая указывает позиции всех других значимых коэффициентов в блоке согласно порядку сканирования (708), т.е. информацию позиции значимых коэффициентов для блока. Например, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов, как описано выше. Как также описано выше, информация позиции значимых коэффициентов может быть кодирована посредством кодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0206] В этом примере, контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, видеокодер 20 и/или видеодекодер 30 может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее кодированных блоков видеоданных. В других примерах, видеокодер 20 и/или видеодекодер 30 также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы кодировать информацию позиции значимых коэффициентов для последующих кодированных блоков видеоданных способом, описанным выше.
[0207] Таким образом, способ по фиг. 7 представляет пример способа кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0208] Фиг. 8 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям настоящего раскрытия. Технологии по фиг. 8, в общем, могут выполняться посредством любого процессора, будь то реализованный в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного, и при реализации в программном обеспечении или микропрограммном обеспечении, соответствующие аппаратные средства могут предоставляться для того, чтобы выполнять инструкции для программного обеспечения или микропрограммного обеспечения. В целях примера, технологии по фиг. 8 описываются относительно модуля 56 энтропийного кодирования (фиг. 2), хотя следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять аналогичные технологии. Кроме того, этапы, проиллюстрированные на фиг. 8, могут быть выполнены в другом порядке или параллельно, и дополнительные этапы могут добавляться, а определенные этапы опускаться, без отступления от технологий этого раскрытия.
[0209] Первоначально, модуль 56 энтропийного кодирования может принимать блок видеоданных (800). Например, блок может быть макроблоком или TU для CU, как описано выше. Модуль 56 энтропийного кодирования дополнительно может определять координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком (802), т.е. информацию позиции последнего значимого коэффициента для блока. Например, порядок сканирования может представлять собой порядок сканирования, используемый посредством модуля 56 энтропийного кодирования для того, чтобы кодировать блок, и может представлять собой один из множества порядков сканирования, берущих начало в общей позиции в блоке, как описано выше. Как также описано выше, общая позиция может соответствовать DC-позиции. Кроме того, координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки.
[0210] Модуль 56 энтропийного кодирования дополнительно может определять то, представляет собой порядок сканирования первый порядок сканирования или второй порядок сканирования (804). Например, первый и второй порядки сканирования могут представлять собой порядки сканирования, которые могут быть использованы посредством модуля 56 энтропийного кодирования для того, чтобы кодировать блоки видеоданных в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30, как описано выше. В некоторых примерах, первый и второй порядки сканирования могут представлять собой только некоторые порядки сканирования, которые могут быть использованы в системе 10 для того, чтобы кодировать блоки. В других примерах, первый и второй порядки сканирования могут представлять собой единственные порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. Как описано выше, первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования. Модуль 56 энтропийного кодирования может выполнять определение того, представляет собой порядок сканирования первый порядок сканирования или второй порядок сканирования, непосредственно, например, в качестве части кодирования блока.
[0211] В случае, если порядок сканирования представляет собой первый порядок сканирования (806), модуль 56 энтропийного кодирования дополнительно может кодировать координаты X и Y (808). Тем не менее, в случае, если порядок сканирования представляет собой второй порядок сканирования (806), модуль 56 энтропийного кодирования вместо этого может переставлять координаты X и Y и кодировать переставленные координаты X и Y (810). Как описано выше, переставленные координаты X и Y также соответствуют информации позиции последнего значимого коэффициента для блока, но дополнительно обрабатываются, т.е. переставляются, посредством модуля 56 энтропийного кодирования, чтобы обеспечивать более эффективное кодирование информации, чем при использовании других технологий. В частности, переставленные координаты X и Y могут обеспечивать использование общей статистики для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, которые указывают информацию позиции последнего значимого коэффициента для блока, как также описано выше. В любом случае, модуль 56 энтропийного кодирования может кодировать информацию позиции последнего значимого коэффициента для блока, будь то представленная как координаты X и Y или переставленные координаты X и Y.
[0212] Чтобы кодировать координаты X и Y и переставленные координаты X и Y, модуль 56 энтропийного кодирования дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение.
[0213] Поскольку первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, статистика дополнительно может указывать вероятность того, что каждая переставленных координат X и Y содержит данное значение. В некоторых примерах, модуль 56 энтропийного кодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее кодированных блоков видеоданных, например, значений координат X и Y и переставленных координат X и Y для ранее кодированных блоков.
[0214] В этом примере, модуль 56 энтропийного кодирования может кодировать координаты X и Y и переставленные координаты X и Y на основе статистики. Например, модуль 56 энтропийного кодирования может кодировать координаты X и Y и переставленные координаты X и Y на основе статистики таким образом, что вероятность того, что координата X содержит данное значение, используется для того, чтобы кодировать координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, используется для того, чтобы кодировать координату Y и переставленную координату X. Кроме того, модуль 56 энтропийного кодирования может обновлять статистику на основе координат X и Y и переставленных координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. В этом примере, вероятность того, что координата X содержит данное значение, может быть обновлена с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, может быть обновлена с использованием координаты Y и переставленной координаты X. Например, обновленная статистика может быть использована для того, чтобы кодировать информацию позиции последнего значимого коэффициента для последующих кодированных блоков видеоданных способом, описанным выше.
[0215] В некоторых примерах, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования. В этом примере, модуль 56 энтропийного кодирования может использовать порядок сканирования, например, горизонтальный или вертикальный порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, модуль 56 энтропийного кодирования может выбирать идентичную статистику для того, чтобы кодировать координаты X и Y при использовании первого порядка сканирования для того, чтобы кодировать блок, и кодировать переставленные координаты X и Y при использовании второго порядка сканирования для того, чтобы кодировать блок.
[0216] Кроме того, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), модуль 56 энтропийного кодирования может кодировать координату с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y или переставленных координат X и Y, в зависимости от порядка сканирования, используемого для того, чтобы кодировать блок, может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение. Модуль 56 энтропийного кодирования затем может использовать выбранную статистику для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0217] В этом примере, координаты X и Y и переставленные координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. преобразованы в двоичную форму. В связи с этим, для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может кодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее кодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y и переставленным координатам X и Y для ранее кодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее кодированных блоков, как описано выше. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y и переставленных координат X и Y, как также описано выше. Модуль 56 энтропийного кодирования может использовать оценки вероятности для того, чтобы кодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0218] Как описано выше, в качестве другого примера, модуль 56 энтропийного кодирования может кодировать координаты X и Y и переставленные координаты X и Y посредством кодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Кроме того, модуль 56 энтропийного кодирования может кодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0219] В любом случае, модуль 56 энтропийного кодирования дополнительно может кодировать информацию, которая идентифицирует порядок сканирования (812), т.е. информацию порядка сканирования для блока. В некоторых примерах, в которых порядок сканирования включает в себя один из двух порядков сканирования, используемых в системе 10 для того, чтобы кодировать блоки видеоданных, модуль 56 энтропийного кодирования может кодировать информацию порядка сканирования с использованием одного элемента выборки. Например, модуль 56 энтропийного кодирования может кодировать один элемент выборки, чтобы указывать то, представляет собой порядок сканирования первый порядок сканирования (например, элемент выборки="0") или второй порядок сканирования (элемент выборки="1"). В других примерах, в которых порядок сканирования включает в себя один из трех порядков сканирования, которые могут быть использованы посредством системы 10 для того, чтобы кодировать блоки видеоданных, модуль 56 энтропийного кодирования может кодировать информацию порядка сканирования с использованием между одним и двумя элементами выборки. Например, модуль 56 энтропийного кодирования может кодировать первый элемент выборки, чтобы указывать то, представляет собой порядок сканирования первый порядок сканирования или нет (например, элемент выборки 1="0", если порядок сканирования представляет собой первый порядок сканирования, и элемент выборки 1="1" в противном случае). В случае, если первый элемент выборки указывает, что порядок сканирования не представляет собой первый порядок сканирования, модуль 56 энтропийного кодирования может кодировать второй элемент выборки, чтобы указывать то, представляет собой порядок сканирования второй порядок сканирования (например, элемент выборки 2="0") или третий порядок сканирования (например, элемент выборки 2="1"). В других примерах, могут быть использованы другие способы кодирования информации порядка сканирования для блока, включающие в себя использование других значений элементов выборки. В некоторых примерах, модуль 56 энтропийного кодирования может передавать в служебных сигналах каждый элемент выборки непосредственно в потоке битов. В других примерах, модуль 56 энтропийного кодирования дополнительно может кодировать каждый элемент выборки с использованием процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), аналогично описанному выше в отношении кодирования элементов выборки кодового слова, соответствующего одной из координат X и Y и переставленных координат X и Y. Альтернативно, как описано выше, модуль 56 энтропийного кодирования может опускать кодирование информации порядка сканирования для блока, когда модуль 56 энтропийного кодирования использует адаптивный порядок сканирования для того, чтобы кодировать блок.
[0220] В некоторых примерах, модуль 56 энтропийного кодирования дополнительно может кодировать информацию, которая указывает позиции всех других значимых коэффициентов в блоке согласно порядку сканирования (814), т.е. информацию позиции значимых коэффициентов для блока. Как описано выше, например, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов. Как также описано выше, информация позиции значимых коэффициентов может быть кодирована посредством кодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0221] Контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее кодированных блоков видеоданных. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы кодировать информацию позиции значимых коэффициентов для последующих кодированных блоков видеоданных способом, описанным выше.
[0222] В завершение, модуль 56 энтропийного кодирования может прекращать кодировать информацию позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (816). Например, модуль 56 энтропийного кодирования может переходить к другим задачам кодирования, к примеру, к кодированию других элементов синтаксиса для блока или последующего блока, как описано выше.
[0223] Таким образом, способ по фиг. 8 представляет пример способа кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0224] Фиг. 9 является блок-схемой последовательности операций способа, которая иллюстрирует пример способа для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия. Технологии по фиг. 9, в общем, могут выполняться посредством любого процессора, будь то реализованный в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного, и при реализации в программном обеспечении или микропрограммном обеспечении, соответствующие аппаратные средства могут предоставляться для того, чтобы выполнять инструкции для программного обеспечения или микропрограммного обеспечения. В целях примера, технологии по фиг. 9 описываются относительно модуля 70 энтропийного декодирования (фиг. 3), хотя следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять аналогичные технологии. Кроме того, этапы, проиллюстрированные на фиг. 9, могут быть выполнены в другом порядке или параллельно, и дополнительные этапы могут добавляться, а определенные этапы опускаться, без отступления от технологий этого раскрытия.
[0225] Первоначально, модуль 70 энтропийного декодирования может принимать кодированные данные значимости для блока видеоданных (900). Например, блок может быть макроблоком или TU для CU, как описано выше. Модуль 70 энтропийного декодирования дополнительно может декодировать данные значимости, чтобы определять координаты, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком (902), т.е. информацию позиции последнего значимого коэффициента для блока. Порядок сканирования может представлять собой порядок сканирования, используемый посредством модуля энтропийного кодирования, например, модуля 56 энтропийного кодирования по фиг. 2, для того, чтобы кодировать блок, и может представлять собой один из множества порядков сканирования, берущих начало в общей позиции в блоке, как описано выше. Как также описано выше, общая позиция может соответствовать DC-позиции. Кроме того, определенные координаты могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки.
[0226] Как описано выше в отношении примера по фиг. 8, определенные координаты могут соответствовать координатам X и Y или переставленным координатам X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, в зависимости от порядка сканирования. Например, координаты могут соответствовать координатам X и Y, когда порядок сканирования содержит первый порядок сканирования, и переставленным координатам X и Y, когда порядок сканирования содержит второй порядок сканирования. Координаты X и Y и переставленные координаты X и Y соответствуют информации позиции последнего значимого коэффициента для блока, но переставленные координаты X и Y дополнительно обрабатываются, т.е. переставляются, чтобы обеспечивать более эффективное кодирование информации, чем при использовании других технологий. В частности, переставленные координаты X и Y могут обеспечивать использование общей статистики для того, чтобы кодировать координаты X и Y и переставленные координаты X и Y, которые указывают информацию позиции последнего значимого коэффициента для блока, как также описано выше.
[0227] В любом случае, аналогично описанному выше в отношении примера модуля 56 энтропийного кодирования по фиг. 8, для того, чтобы декодировать данные значимости, чтобы определять координаты, модуль 70 энтропийного декодирования дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит первый порядок сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение.
[0228] Поскольку первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными), вероятность того, что координата X содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата Y содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Аналогично, вероятность того, что координата Y содержит данное значение, когда порядок сканирования содержит первый порядок сканирования, может быть идентичной или аналогичной вероятности того, что координата X содержит идентичное значение, когда порядок сканирования содержит второй порядок сканирования, и наоборот. Иными словами, координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, могут иметь идентичную или аналогичную вероятность содержания данного значения, как и переставленные координаты X и Y, соответственно, когда порядок сканирования содержит второй порядок сканирования. В связи с этим, статистика дополнительно может указывать вероятность того, что каждая переставленных координат X и Y содержит данное значение. В некоторых примерах, модуль 70 энтропийного декодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее декодированных блоков видеоданных, например, значений координат X и Y и переставленных координат X и Y для ранее декодированных блоков.
[0229] В этом примере, модуль 70 энтропийного декодирования может декодировать данные значимости, чтобы определять координаты, т.е. координаты X и Y или переставленные координаты X и Y на основе статистики. Например, модуль 70 энтропийного декодирования может декодировать данные значимости, чтобы определять координаты X и Y или переставленные координаты X и Y на основе статистики таким образом, что вероятность того, что координата X содержит данное значение, используется для того, чтобы декодировать данные значимости, чтобы определять координату X и переставленную координату Y, а вероятность того, что координата Y содержит данное значение, используется для того, чтобы декодировать данные значимости, чтобы определять координату Y и переставленную координату X. Кроме того, модуль 70 энтропийного декодирования может обновлять статистику на основе координат X и Y и переставленных координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. В этом примере, вероятность того, что координата X содержит данное значение, может быть обновлена с использованием координаты X и переставленной координаты Y, а вероятность того, что координата Y содержит данное значение, может быть обновлена с использованием координаты Y и переставленной координаты X. Например, обновленная статистика может быть использована для того, чтобы декодировать данные значимости, чтобы определять информацию позиции значимых коэффициентов для последующих декодированных блоков видеоданных способом, описанным выше.
[0230] В некоторых примерах, для того, чтобы декодировать данные значимости, чтобы определять координаты X и Y или переставленные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y, переставленных координат X и Y и порядка сканирования. В этом примере, модуль 70 энтропийного декодирования может использовать порядок сканирования, например, горизонтальный или вертикальный порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Иными словами, модуль 70 энтропийного декодирования может выбирать идентичную статистику для того, чтобы декодировать данные значимости, чтобы определять координаты X и Y при использовании первого порядка сканирования для того, чтобы декодировать блок, и определять переставленные координаты X и Y при использовании второго порядка сканирования для того, чтобы декодировать блок.
[0231] Координаты X и Y и переставленные координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. преобразованы в двоичную форму. В связи с этим, для того, чтобы декодировать данные значимости, чтобы определять координаты X и Y или переставленные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может декодировать данные значимости, чтобы определять каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее декодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y и переставленным координатам X и Y для ранее декодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее декодированных блоков, как описано выше. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y и переставленных координат X и Y, как также описано выше. Модуль 70 энтропийного декодирования может использовать оценки вероятности для того, чтобы декодировать данные значимости, чтобы определять каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0232] Как описано выше, в качестве другого примера, модуль 70 энтропийного декодирования может декодировать координаты X и Y и переставленные координаты X и Y посредством декодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Кроме того, модуль 70 энтропийного декодирования может декодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0233] Модуль 70 энтропийного декодирования дополнительно может принимать кодированные данные порядка сканирования для блока (904). Модуль 70 энтропийного декодирования дополнительно может декодировать данные порядка сканирования для того, чтобы определять информацию, которая идентифицирует порядок сканирования (906), т.е. информацию порядка сканирования для блока. Альтернативно, как описано выше, модуль 70 энтропийного декодирования может не принимать и декодировать кодированные данные порядка сканирования для блока, когда модуль 70 энтропийного декодирования использует адаптивный порядок сканирования для того, чтобы декодировать блок. В любом случае, 70 энтропийного декодирования дополнительно может определять то, представляет собой порядок сканирования первый порядок сканирования или второй порядок сканирования (908). Например, первый и второй порядки сканирования могут представлять собой порядки сканирования, которые могут быть использованы посредством модуля 70 энтропийного декодирования для того, чтобы декодировать блоки видеоданных в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30, как описано выше. Первый и второй порядки сканирования могут представлять собой только некоторые порядки сканирования, которые могут быть использованы в системе 10 для того, чтобы кодировать блоки. В других примерах, первый и второй порядки сканирования могут представлять собой единственные порядки сканирования, используемые в системе 10 для того, чтобы кодировать блоки. В некоторых случаях, первый и второй порядки сканирования могут быть симметричными относительно друг друга (или, по меньшей мере, частично симметричными). Например, первый порядок сканирования может представлять собой горизонтальный порядок сканирования, а второй порядок сканирования может представлять собой вертикальный порядок сканирования. Модуль 70 энтропийного декодирования может выполнять определение того, представляет собой порядок сканирования первый порядок сканирования или второй порядок сканирования, с использованием определенной информации порядка сканирования для блока.
[0234] В случае, если порядок сканирования представляет собой первый порядок сканирования (910), модуль 70 энтропийного декодирования может продолжать декодировать блок с использованием определенных координат X и Y. В некоторых примерах, модуль 70 энтропийного декодирования дополнительно может принимать оставшиеся кодированные данные значимости для блока (914). Модуль 70 энтропийного декодирования дополнительно может декодировать оставшиеся данные значимости, чтобы определять информацию, которая указывает позиции всех других значимых коэффициентов в блоке согласно порядку сканирования (916), т.е. информацию позиции значимых коэффициентов для блока. Как описано выше, например, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов. Как также описано выше, оставшиеся данные значимости могут быть декодированы, чтобы определять информацию позиции значимых коэффициентов посредством декодирования оставшихся данных значимости, чтобы определять каждый флаг значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0235] Контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее декодированных блоков видеоданных. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы декодировать оставшиеся данные значимости, чтобы определять информацию позиции значимых коэффициентов для последующих декодированных блоков видеоданных способом, описанным выше.
[0236] Тем не менее, в случае, если порядок сканирования представляет собой второй порядок сканирования (910), модуль 70 энтропийного декодирования может переставлять определенные координаты X и Y (912) и продолжать декодировать блок с использованием переставленных координат X и Y, аналогично описанному выше в отношении этапов (914) и (916). Как описано выше, координаты X и Y и переставленные координаты X и Y соответствуют информации позиции последнего значимого коэффициента для блока, но переставленные координаты X и Y дополнительно обрабатываются, чтобы обеспечивать более эффективное кодирование информации, чем при использовании других технологий.
[0237] В завершение, модуль 70 энтропийного декодирования может прекращать декодирование информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (918). Например, модуль 70 энтропийного декодирования может переходить к другим задачам кодирования, например, к декодированию других элементов синтаксиса для блока или последующего блока, как описано выше.
[0238] Таким образом, способ по фиг. 9 представляет пример способа кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0239] Фиг. 10 является блок-схемой последовательности операций способа, которая иллюстрирует другой пример способа для эффективного кодирования информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия. Технологии по фиг. 10, в общем, могут выполняться посредством любого процессора, будь то реализованный в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного, и при реализации в программном обеспечении или микропрограммном обеспечении, соответствующие аппаратные средства могут предоставляться для того, чтобы выполнять инструкции для программного обеспечения или микропрограммного обеспечения. В целях примера, технологии по фиг. 10 описываются относительно модуля 56 энтропийного кодирования (фиг. 2), хотя следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять аналогичные технологии. Кроме того, этапы, проиллюстрированные на фиг. 10, могут быть выполнены в другом порядке или параллельно, и дополнительные этапы могут добавляться, а определенные этапы опускаться, без отступления от технологий этого раскрытия.
[0240] Первоначально, модуль 56 энтропийного кодирования может принимать блок видеоданных (1000). Например, блок может быть макроблоком или TU для CU, как описано выше. Модуль 56 энтропийного кодирования дополнительно может определять координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком (1002), т.е. информацию позиции последнего значимого коэффициента для блока. Например, порядок сканирования может представлять собой порядок сканирования, используемый посредством модуля 56 энтропийного кодирования для того, чтобы кодировать блок, и может представлять собой один из множества порядков сканирования, используемых для того, чтобы кодировать блоки видеоданных в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30. Например, каждый из множества порядков сканирования может брать начало в общей позиции в блоке, например, в DC-позиции. Кроме того, как также описано выше, координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки.
[0241] Модуль 56 энтропийного кодирования дополнительно может определять то, соответствуют или нет координаты X и Y общей позиции в блоке (1004). Общая позиция может соответствовать DC-позиции. Модуль 56 энтропийного кодирования может выполнять вышеуказанное определение непосредственно, например, в качестве части определения координат X и Y, как описано выше.
[0242] Модуль 56 энтропийного кодирования дополнительно может кодировать индикатор того, соответствует или нет координата X общей позиции (1006). Аналогично, модуль 56 энтропийного кодирования дополнительно может кодировать индикатор того, соответствует или нет координата Y общей позиции (1008). Модуль 56 энтропийного кодирования может кодировать каждый индикатор с использованием одного элемента выборки. Например, модуль 56 энтропийного кодирования может кодировать первый элемент выборки, который указывает то, соответствует координата X общей позиции (например, элемент выборки 1="1") или нет (элемент выборки 1="0"), и второй элемент выборки, который указывает то, соответствует координата Y общей позиции (например, элемент выборки 2="1") или нет (элемент выборки 2="0"). В некоторых примерах, модуль 56 энтропийного кодирования может передавать в служебных сигналах каждый элемент выборки непосредственно в потоке битов. В других примерах, модуль 56 энтропийного кодирования дополнительно может кодировать каждый элемент выборки с использованием процесса контекстно-адаптивного энтропийного кодирования, аналогично описанному выше со ссылкой на фиг. 7-9, например, посредством выполнения CABAC-процесса, который включает в себя применение контекстной модели на основе контекста.
[0243] В случае, если координаты X и Y соответствуют общей позиции (1010), модуль 56 энтропийного кодирования может прекращать кодирование информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (1024). Другими словами, в случаях, если координаты X и Y соответствуют общей позиции, дополнительные значимые коэффициенты, помимо последнего (и только) значимого коэффициента в блоке согласно порядку сканирования, не существуют в блоке. В таких случаях, модуль 56 энтропийного кодирования не должен кодировать дополнительную информацию позиции последнего значимого коэффициента либо информацию порядка сканирования или информацию позиции значимых коэффициентов для блока. В таких случаях, модуль 56 энтропийного кодирования может переходить к другим задачам кодирования, например, к кодированию других элементов синтаксиса для блока или последующего блока.
[0244] В случае, если координаты X и Y не соответствуют общей позиции (1010), модуль 56 энтропийного кодирования дополнительно может кодировать информацию, которая идентифицирует порядок сканирования (1012), т.е. информацию порядка сканирования для блока. В некоторых примерах, в которых порядок сканирования включает в себя один из двух порядков сканирования, используемых в системе 10 для того, чтобы кодировать блоки видеоданных, модуль 56 энтропийного кодирования может кодировать информацию порядка сканирования с использованием одного элемента выборки. Например, модуль 56 энтропийного кодирования может кодировать один элемент выборки, чтобы указывать то, представляет собой порядок сканирования первый порядок сканирования (например, элемент выборки="0") или второй порядок сканирования (элемент выборки="1"). В других примерах, в которых порядок сканирования включает в себя один из трех порядков сканирования, которые могут быть использованы посредством системы 10 для того, чтобы кодировать блоки видеоданных, модуль 56 энтропийного кодирования может кодировать информацию порядка сканирования с использованием между одним и двумя элементами выборки. Например, модуль 56 энтропийного кодирования может кодировать первый элемент выборки, чтобы указывать то, представляет собой порядок сканирования первый порядок сканирования или нет (например, элемент выборки 1="0", если порядок сканирования представляет собой первый порядок сканирования, и элемент выборки 1="1" в противном случае). В случае, если первый элемент выборки указывает, что порядок сканирования не представляет собой первый порядок сканирования, модуль 56 энтропийного кодирования может кодировать второй элемент выборки, чтобы указывать то, представляет собой порядок сканирования второй порядок сканирования (например, элемент выборки 2="0") или третий порядок сканирования (например, элемент выборки 2="1"). В других примерах, могут быть использованы другие способы кодирования информации порядка сканирования для блока, включающие в себя использование других значений элементов выборки. В некоторых примерах, модуль 56 энтропийного кодирования может передавать в служебных сигналах каждый элемент выборки непосредственно в потоке битов. В других примерах, модуль 56 энтропийного кодирования дополнительно может кодировать каждый элемент выборки с использованием процесса контекстно-адаптивного энтропийного кодирования, аналогично описанному выше со ссылкой на фиг. 7-9, например, посредством выполнения CABAC-процесса, который включает в себя применение контекстной модели на основе контекста. Альтернативно, как описано выше, модуль 56 энтропийного кодирования может не кодировать информацию порядка сканирования для блока, когда модуль 56 энтропийного кодирования использует адаптивный порядок сканирования для того, чтобы кодировать блок.
[0245] В любом случае, в случае, если координата X не соответствует общей позиции (1014), модуль 56 энтропийного кодирования дополнительно может кодировать координату X на основе порядка сканирования (1016). Аналогично, в случае, если координата Y не соответствует общей позиции (1018), модуль 56 энтропийного кодирования дополнительно может кодировать координату Y на основе порядка сканирования (1020). Чтобы кодировать координаты X и Y, модуль 56 энтропийного кодирования дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования. В частности, статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение. В некоторых примерах, модуль 56 энтропийного кодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее кодированных блоков видеоданных, например, значений координат X и Y для ранее кодированных блоков.
[0246] В некоторых примерах, статистика может варьироваться в зависимости от порядка сканирования. В частности, вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, может варьироваться в зависимости от порядка сканирования. Иными словами, различные порядки сканирования могут приводить к различной статистике для информации позиции последнего значимого коэффициента для блока. В связи с этим, при кодировании информация позиции последнего значимого коэффициента для блока на основе статистики, выбор статистики, по меньшей мере, частично на основе порядка сканирования может приводить к использованию точной статистики и, следовательно, может обеспечивать эффективное кодирование. Следовательно, модуль 56 энтропийного кодирования может кодировать координаты X и Y на основе статистики, при этом модуль 56 энтропийного кодирования выбирает статистику, по меньшей мере, частично на основе порядка сканирования. Соответственно, модуль 56 энтропийного кодирования может кодировать координаты X и Y на основе порядка сканирования. Кроме того, модуль 56 энтропийного кодирования может обновлять статистику на основе координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. Например, обновленная статистика может быть использована для того, чтобы кодировать информацию позиции последнего значимого коэффициента для последующих кодированных блоков видеоданных способом, описанным выше.
[0247] В некоторых примерах, для того, чтобы кодировать координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y и порядка сканирования. В этом примере, модуль 56 энтропийного кодирования может использовать порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Таким образом, модуль 56 энтропийного кодирования может кодировать координаты X и Y на основе порядка сканирования. Кроме того, в случаях, если одна координата (например, координата Y) кодируется после другой координаты (например, координаты X), модуль 56 энтропийного кодирования может кодировать координату с использованием значения другой ранее кодированной координаты в качестве контекста. Иными словами, значение ранее кодированной одной из координат X и Y может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая кодированная координата содержит данное значение. Модуль 56 энтропийного кодирования затем может использовать выбранную статистику для того, чтобы кодировать координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0248] В этом примере, координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. преобразованы в двоичную форму. В связи с этим, для того, чтобы кодировать координаты X и Y на основе статистики, модуль 56 энтропийного кодирования может кодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее кодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y для ранее кодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее кодированных блоков, как описано выше. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y, как также описано выше. Модуль 56 энтропийного кодирования может использовать оценки вероятности для того, чтобы кодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0249] Как описано выше, в качестве другого примера, модуль 56 энтропийного кодирования может кодировать координаты X и Y посредством кодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Кроме того, модуль 56 энтропийного кодирования может кодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0250] В некоторых примерах, до кодирования каждой координаты, модуль 56 энтропийного кодирования может вычитать значение "1" из каждой координаты, чтобы давать возможность более эффективного кодирования координат, чем при использовании других способов. Например, модуль 56 энтропийного кодирования может вычитать значение "1" из каждой координаты до кодирования координаты, чтобы уменьшать объем информации, используемой для того, чтобы кодировать координаты. Аналогично, модуль энтропийного декодирования, например, модуль 70 энтропийного декодирования, подробнее описанный в примере по фиг. 11, может прибавлять значение "1" к каждой координате после декодирования координаты, чтобы определять координату.
[0251] В некоторых примерах, модуль 56 энтропийного кодирования дополнительно может кодировать информацию, которая указывает позиции всех других значимых коэффициентов в блоке согласно порядку сканирования (1022), т.е. информацию позиции значимых коэффициентов для блока. Как описано выше, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов. Как также описано выше, информация позиции значимых коэффициентов может быть кодирована посредством кодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0252] В этом примере, контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 56 энтропийного кодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее кодированных блоков видеоданных. В других примерах, модуль 56 энтропийного кодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы кодировать информацию позиции значимых коэффициентов для последующих кодированных блоков видеоданных способом, описанным выше.
[0253] В завершение, модуль 56 энтропийного кодирования может прекращать кодировать информацию позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (1024). Например, модуль 56 энтропийного кодирования может переходить к другим задачам кодирования, например, к кодированию других элементов синтаксиса для блока или последующего блока, как описано выше.
[0254] Таким образом, способ по фиг. 10 представляет пример способа кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0255] Фиг. 11 является блок-схемой последовательности операций способа, которая иллюстрирует другой пример способа для эффективного декодирования кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока видеоданных, согласно технологиям этого раскрытия. Технологии по фиг. 11, в общем, могут выполняться посредством любого процессора, будь то реализованный в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного, и при реализации в программном обеспечении или микропрограммном обеспечении, соответствующие аппаратные средства могут предоставляться для того, чтобы выполнять инструкции для программного обеспечения или микропрограммного обеспечения. В целях примера, технологии по фиг. 11 описываются относительно модуля 70 энтропийного декодирования (фиг. 3), хотя следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять аналогичные технологии. Кроме того, этапы, проиллюстрированные на фиг. 11, могут быть выполнены в другом порядке или параллельно, и дополнительные этапы могут добавляться, а определенные этапы опускаться, без отступления от технологий настоящего раскрытия.
[0256] Первоначально, модуль 70 энтропийного декодирования может принимать первый сигнал для блока видеоданных (1100). Блок может быть макроблоком или TU для CU, как описано выше. Модуль 70 энтропийного декодирования дополнительно может декодировать первый сигнал, чтобы определять индикатор того, соответствует или нет координата X, которая указывает позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, общей позиции (1102). Аналогично, модуль 70 энтропийного декодирования дополнительно может принимать второй сигнал для блока (1104). Модуль 70 энтропийного декодирования дополнительно может декодировать второй сигнал, чтобы определять индикатор того, соответствует или нет координата Y, которая указывает позицию последнего значимого коэффициента в блоке согласно порядку сканирования, общей позиции (1106).
[0257] Например, порядок сканирования может представлять собой порядок сканирования, используемый посредством модуля энтропийного кодирования, например, модуля 56 энтропийного кодирования для того, чтобы кодировать блок, и может представлять собой один из множества порядков сканирования, используемых для того, чтобы кодировать блоки видеоданных в соответствующей системе 10 кодирования, содержащей видеокодер 20 и видеодекодер 30. Например, каждый из множества порядков сканирования может брать начало в общей позиции, как описано выше. Общая позиция может соответствовать DC-позиции.
[0258] Кроме того, каждый индикатор может содержать один элемент выборки. Например, модуль 70 энтропийного декодирования может декодировать первый сигнал, чтобы определять первый элемент выборки, который указывает то, соответствует координата X общей позиции (например, элемент выборки 1="1") или нет (элемент выборки 1="0"), и декодировать второй сигнал, чтобы определять второй элемент выборки, который указывает то, соответствует координата Y общей позиции (например, элемент выборки 2="1") или нет (элемент выборки 2="0"). В некоторых примерах, модуль 70 энтропийного декодирования может принимать каждый элемент выборки непосредственно в потоке битов. Иными словами, первый сигнал и второй сигнал могут содержать первый элемент выборки и второй элемент выборки, соответственно. В других примерах, модуль 70 энтропийного декодирования может декодировать первый и второй сигналы, чтобы определять соответствующие элементы выборки, с использованием процесса контекстно-адаптивного энтропийного кодирования, аналогично описанному выше со ссылкой на фиг. 7-9, например, посредством выполнения CABAC-процесса, который включает в себя применение контекстной модели на основе контекста.
[0259] В случае, если координаты X и Y соответствуют общей позиции (1108), модуль 70 энтропийного декодирования может прекращать декодирование кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (1130). Другими словами, в случаях, если координаты X и Y соответствуют общей позиции, дополнительные значимые коэффициенты, помимо последнего (и только) значимого коэффициента в блоке согласно порядку сканирования, не существуют в блоке. В таких случаях, модуль 70 энтропийного декодирования не должен декодировать дополнительную информацию позиции последнего значимого коэффициента либо информацию порядка сканирования или информацию позиции значимых коэффициентов для блока. Например, в таких случаях, модуль 70 энтропийного декодирования может переходить к другим задачам кодирования, например, к декодированию других элементов синтаксиса для блока или последующего блока.
[0260] В случае, если координаты X и Y не соответствуют общей позиции (1108), модуль 70 энтропийного декодирования дополнительно может принимать кодированные данные порядка сканирования для блока (1110). Модуль 70 энтропийного декодирования дополнительно может декодировать данные порядка сканирования для того, чтобы определять информацию, которая идентифицирует порядок сканирования (1112), т.е. информацию порядка сканирования для блока. В некоторых примерах, в которых порядок сканирования включает в себя один из двух порядков сканирования, используемых в системе 10 для того, чтобы кодировать блоки видеоданных, модуль 70 энтропийного декодирования может декодировать данные порядка сканирования для того, чтобы определять один элемент выборки. Например, один элемент выборки может указывать то, представляет собой порядок сканирования первый порядок сканирования (например, элемент выборки="0") или второй порядок сканирования (элемент выборки="1"). В других примерах, в которых порядок сканирования включает в себя один из трех порядков сканирования, которые могут быть использованы в системе 10 для того, чтобы кодировать блоки видеоданных, модуль 70 энтропийного декодирования может декодировать данные порядка сканирования для того, чтобы определять между одним и двумя элементами выборки. Например, модуль 70 энтропийного декодирования может определять первый элемент выборки, который указывает то, представляет собой порядок сканирования первый порядок сканирования или нет (например, элемент выборки 1="0", если порядок сканирования представляет собой первый порядок сканирования, и элемент выборки 1="1" в противном случае). В случае, если первый элемент выборки указывает, что порядок сканирования не представляет собой первый порядок сканирования, модуль 70 энтропийного декодирования может определять второй элемент выборки, который указывает то, представляет собой порядок сканирования второй порядок сканирования (например, элемент выборки 2="0") или третий порядок сканирования (например, элемент выборки 2="1"). В других примерах, могут быть использованы другие способы определения информации порядка сканирования для блока, включающие в себя использование других значений элементов выборки. В некоторых примерах, модуль 70 энтропийного декодирования может принимать каждый элемент выборки непосредственно в потоке битов. Иными словами, данные порядка сканирования могут содержать один или более элементов выборки. В других примерах, модуль 70 энтропийного декодирования может декодировать данные порядка сканирования для того, чтобы определять каждый элемент выборки, с использованием процесса контекстно-адаптивного энтропийного кодирования, аналогично описанному выше со ссылкой на фиг. 7-9, например, посредством выполнения CABAC-процесса, который включает в себя применение контекстной модели на основе контекста. Альтернативно, как описано выше, модуль 70 энтропийного декодирования может не принимать и декодировать кодированные данные порядка сканирования для блока, когда модуль 70 энтропийного декодирования использует адаптивный порядок сканирования для того, чтобы декодировать блок.
[0261] В любом случае, в случае, если координата X не соответствует общей позиции (1114), модуль 70 энтропийного декодирования дополнительно может принимать кодированную координату X (1116) и декодировать координату X на основе порядка сканирования (1118). Аналогично, в случае, если координата Y не соответствует общей позиции (1120), модуль 70 энтропийного декодирования дополнительно может принимать кодированную координату Y (1122) и декодировать координату Y на основе порядка сканирования (1124). Как описано выше, для того, чтобы декодировать кодированные координаты X и Y, модуль 70 энтропийного декодирования дополнительно может определять статистику, которая указывает вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, практически аналогично описанному выше в отношении модуля 56 энтропийного кодирования. Статистика может указывать вероятность того, что координата, например, координата X или Y, соответствующая позиции последнего значимого коэффициента в блоке согласно порядку сканирования, содержит данное значение (например, "0", "1", "2" и т.д.). Другими словами, статистика может указывать вероятность того, что каждая из вышеописанных координат X и Y содержит данное значение. В некоторых примерах, модуль 70 энтропийного декодирования может определять статистику с использованием информации позиции последнего значимого коэффициента для ранее декодированных блоков видеоданных, например, значений координат X и Y для ранее декодированных блоков.
[0262] В некоторых примерах, статистика может варьироваться в зависимости от порядка сканирования. В частности, вероятность того, что данная позиция в блоке соответствует позиции последнего значимого коэффициента в блоке согласно порядку сканирования, может варьироваться в зависимости от порядка сканирования. Иными словами, различные порядки сканирования могут приводить к различной статистике для информации позиции последнего значимого коэффициента для блока. В связи с этим, при декодировании кодированной информации позиции последнего значимого коэффициента для блока на основе статистики, выбор статистики, по меньшей мере, частично на основе порядка сканирования может приводить к использованию точной статистики и, следовательно, может обеспечивать эффективное декодирование. В связи с этим, модуль 70 энтропийного декодирования может декодировать кодированные координаты X и Y на основе статистики, при этом модуль 70 энтропийного декодирования выбирает статистику, по меньшей мере, частично на основе порядка сканирования. Соответственно, модуль 70 энтропийного декодирования может декодировать кодированные координаты X и Y на основе порядка сканирования. Кроме того, модуль 70 энтропийного декодирования может обновлять статистику на основе координат X и Y, чтобы отражать вероятность того, что соответствующие координаты содержат конкретные значения. Например, обновленная статистика может быть использована для того, чтобы декодировать кодированную информацию позиции последнего значимого коэффициента для последующих декодированных блоков видеоданных способом, описанным выше.
[0263] В некоторых примерах, для того, чтобы декодировать кодированные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может выполнять процесс контекстно-адаптивного энтропийного кодирования (например, CABAC-процесс), который включает в себя применение контекстной модели, которая включает в себя статистику на основе, по меньшей мере, одного контекста. Например, по меньшей мере, один контекст может включать в себя одно из координат X и Y и порядка сканирования. В этом примере, модуль 70 энтропийного декодирования может использовать порядок сканирования для того, чтобы выбирать конкретную контекстную модель, которая включает в себя статистику. Таким образом, модуль 70 энтропийного декодирования может декодировать кодированные координаты X и Y на основе порядка сканирования. Кроме того, в случаях, если одна кодированная координата (например, координата Y) декодируется после другой кодированной координаты (например, координаты X), модуль 70 энтропийного декодирования может декодировать координату с использованием значения другой ранее декодированной координаты в качестве контекста. Иными словами, значение ранее декодированной одной из координат X и Y может быть использовано для того, чтобы дополнительно выбирать статистику в контекстной модели, которая указывает вероятность того, что другая текущая декодированная координата содержит данное значение. Модуль 70 энтропийного декодирования затем может использовать выбранную статистику для того, чтобы декодировать кодированные координаты X и Y посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0264] Координаты X и Y могут быть представлены с использованием унарного кодового слова, содержащего последовательность из одного или более элементов выборки, т.е. преобразованы в двоичную форму. В связи с этим, для того, чтобы декодировать кодированные координаты X и Y на основе статистики, модуль 70 энтропийного декодирования может декодировать каждый элемент выборки кодового слова, соответствующего конкретной координате, посредством выполнения процесса контекстно-адаптивного энтропийного кодирования. В этом примере, статистика, включенная в контекстную модель, указывающая вероятность того, что координата содержит данное значение, может включать в себя оценки вероятности, которые указывают вероятность того, что каждый элемент выборки кодового слова, соответствующего координате, содержит данное значение (например, "0" или "1"). Кроме того, статистика может включать в себя различные оценки вероятности для каждого элемента выборки кодового слова, в зависимости от позиции соответствующего элемента выборки в кодовом слове. В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих элементов выборки для ранее декодированных блоков видеоданных, например, элементов выборки кодовых слов, соответствующих координатам X и Y для ранее декодированных блоков, например, в качестве части определения статистики на основе информации позиции последнего значимого коэффициента для ранее декодированных блоков, как описано выше. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого элемента выборки, например, в качестве части обновления статистики на основе координат X и Y, как также описано выше. Модуль 70 энтропийного декодирования может использовать оценки вероятности для того, чтобы декодировать каждый элемент выборки посредством выполнения процесса контекстно-адаптивного энтропийного кодирования.
[0265] Как описано выше, в качестве другого примера, модуль 70 энтропийного декодирования может декодировать координаты X и Y посредством декодирования, по меньшей мере, одного элемента выборки последовательности, соответствующей одной из координат, посредством выбора статистики из контекстной модели, по меньшей мере, частично на основе значения, по меньшей мере, одного элемента выборки, например, соответствующего элемента выборки, последовательности, соответствующей другой координате. Кроме того, модуль 70 энтропийного декодирования может декодировать один или более элементов выборки последовательности, соответствующей одной из координат, и один или более элементов выборки последовательности, соответствующей другой координате, перемеженным способом.
[0266] После декодирования каждой координаты модуль 70 энтропийного декодирования может прибавлять значение "1" к каждой координате, чтобы давать возможность более эффективного кодирования координат, чем при использовании других способов. Например, как также описано выше, модуль энтропийного кодирования, например, модуль 56 энтропийного кодирования, может кодировать координаты X и Y посредством вычитания сначала значения "1" из каждой координаты, чтобы уменьшать объем информации, используемой для того, чтобы кодировать координаты. В связи с этим, модуль 70 энтропийного декодирования может прибавлять значение "1" к каждой координате после декодирования координаты, чтобы определять координату.
[0267] В некоторых примерах, модуль 70 энтропийного декодирования дополнительно может принимать кодированные данные значимости для блока (1126). В этих примерах, модуль 70 энтропийного декодирования может декодировать данные значимости, чтобы определять информацию, которая указывает позиции всех других значимых коэффициентов в блоке согласно порядку сканирования (1128), т.е. информацию позиции значимых коэффициентов для блока. Как описано выше, информация позиции значимых коэффициентов для блока может быть представлена с использованием последовательности флагов значимых коэффициентов. Как также описано выше, информация позиции значимых коэффициентов может быть декодирована посредством декодирования каждого флага значимого коэффициента последовательности посредством выполнения процесса контекстно-адаптивного энтропийного кодирования (например, CABAC-процесса), который включает в себя применение контекстной модели на основе, по меньшей мере, одного контекста, при этом, по меньшей мере, один контекст может включать в себя позицию флага в блоке согласно порядку сканирования.
[0268] В этом примере, контекстная модель может включать в себя оценки вероятности, которые указывают вероятность того, что каждый флаг содержит данное значение (например, "0" или "1"). В некоторых примерах, модуль 70 энтропийного декодирования может определять оценки вероятности с использованием значений соответствующих флагов значимых коэффициентов для ранее декодированных блоков видеоданных. В других примерах, модуль 70 энтропийного декодирования также может обновлять оценки вероятности с использованием значения каждого флага, чтобы отражать вероятность того, что флаг содержит данное значение. Например, обновленные оценки вероятности могут быть использованы для того, чтобы декодировать кодированную информацию позиции значимых коэффициентов для последующих декодированных блоков видеоданных способом, описанным выше.
[0269] В завершение, модуль 70 энтропийного декодирования может прекращать декодирование кодированной информации позиции последнего значимого коэффициента на основе информации порядка сканирования для блока (1130). Например, модуль 70 энтропийного декодирования может переходить к другим задачам кодирования, например, к декодированию других элементов синтаксиса для блока или последующего блока, как описано выше.
[0270] Таким образом, способ по фиг. 11 представляет пример способа кодирования координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодирования переставленных координат X и Y, которые указывают позицию последнего ненулевого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования, при этом второй порядок сканирования отличается от первого порядка сканирования.
[0271] Следовательно, в соответствии с технологиями настоящего раскрытия, кодированный поток битов может содержать информацию позиции последнего значимого коэффициента для блока видеоданных, т.е. для коэффициентов, ассоциированных с блоком. В частности, видеокодер 20 может кодировать координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, когда порядок сканирования содержит первый порядок сканирования, и кодировать переставленные координаты X и Y, которые указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, когда порядок сканирования содержит второй порядок сканирования. Например, второй порядок сканирования может отличаться от первого порядка сканирования. Видеодекодер 30 может, в свою очередь, декодировать информацию позиции последнего значимого коэффициента для блока. В частности, видеодекодер 30 может декодировать координаты X и Y, когда порядок сканирования содержит первый порядок сканирования, и декодировать переставленные координаты X и Y, когда порядок сканирования содержит второй порядок сканирования.
[0272] Соответственно, настоящее раскрытие также относится к машиночитаемому носителю, содержащему сохраненную структуру данных, которая включает в себя кодированный поток битов. Кодированный поток битов, сохраненный на машиночитаемом носителе, может содержать видеоданные, кодированные с использованием конкретного формата, и кодированную информацию, которая идентифицирует позицию последнего значимого коэффициента в блоке видеоданных согласно порядку сканирования, ассоциированному с блоком, представленную с использованием координат X и Y. Конкретный порядок, в котором координаты X и Y кодируются в потоке битов, зависит от того, содержит порядок сканирования, ассоциированный с блоком, первый порядок сканирования или второй порядок сканирования. Более конкретно, если порядок сканирования содержит первый порядок сканирования, поток битов может включать в себя информацию позиции последнего значимого коэффициента для блока, кодированного с использованием координат X и Y. В этом случае, информация позиции последнего значимого коэффициента для блока может быть декодирована, и результирующие координаты X и Y могут быть использованы непосредственно для того, чтобы декодировать блок. Альтернативно, если порядок сканирования содержит второй порядок сканирования, то поток битов может включать в себя информацию позиции последнего значимого коэффициента для блока, кодированного с использованием переставленных координат X и Y. В этом случае, информация позиции последнего значимого коэффициента может быть декодирована, при этом переставленные координаты X и Y дополнительно переставляются, и результирующие координаты X и Y могут быть использованы для того, чтобы декодировать блок.
[0273] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполнены посредством аппаратного процессора. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0274] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом магниты на диски (disk) обычно воспроизводят данные магнитным способом, тогда как оптические диски (disc) обычно воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[0275] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных и/или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0276] Технологии настоящего раскрытия могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в настоящем раскрытии для того, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но не обязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0277] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.