СИГНАЛИЗАЦИЯ РАЗМЕРА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕОСИГНАЛА
SIGNALLING IMAGE SIZE WHEN ENCODING VIDEO SIGNAL

[0001] По данной заявке испрашивается приоритет на основании:
предварительной заявки на патент США № 61/508659, поданной 17 июля 2011 г.;
предварительной заявки на патент США № 61/530819, поданной 2 сентября 2011 г.; и
предварительной заявки на патент США № 61/549480, поданной 20 октября 2011 г., каждая из которых, таким образом, включена посредством ссылки в полном объеме.
Область техники, к которой относится изобретение
[0002] Изобретение относится к области кодирования видеосигнала.
Уровень техники
[0003] Возможности цифрового видео можно внедрять в разнообразные устройства, включая цифровые телевизоры, системы прямого цифрового вещания, беспроводные широковещательные системы, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, планшетные компьютеры, устройства чтения электронных книг, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видеоконференцсвязи, устройства потоковой передачи видеосигнала и пр. Устройства цифрового видео реализуют методы сжатия видеосигнала, например, описанные в стандартах, обозначаемых MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарте High Efficiency Video Coding (HEVC), в настоящее время находящемся в разработке, и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно благодаря реализации таких методов сжатия видеосигнала.
[0004] Методы сжатия видеосигнала осуществляют пространственное (внутри изображения) прогнозирование и/или временное (между изображениями) прогнозирование для снижения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видеосигнала на основе блоков, срез видео (т.е. кадр видео или часть кадра видео) можно разбивать на видеоблоки, которые также могут именоваться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки во внутренне кодированном (I) срезе изображения кодируются с использованием пространственного прогнозирования по отношению к опорным выборкам в соседних блоках в одном и том же изображении. Видеоблоки во внешне кодированном (P или B) срезе изображения могут использовать пространственное прогнозирование по отношению к опорным выборкам в соседних блоках в одном и том же изображении или временное прогнозирование по отношению к опорным выборкам в других опорных изображениях. Изображения могут именоваться кадрами, и опорные изображения могут соотноситься с опорными кадрами.
[0005] Пространственное или временное прогнозирование позволяет получить прогностический блок для блока, подлежащего кодированию. Остаточные данные представляет пиксельные разности между исходным блоком, подлежащим кодированию, и прогностическим блоком. Внешне кодируемый блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующих прогностический блок, и остаточным данным, указывающим разность между кодированным блоком и прогностическим блоком. Внутренне кодируемый блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия, остаточные данные можно преобразовывать из пиксельной области в преобразовательную область, получая остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двухмерной матрице, можно сканировать для создания одномерного вектора коэффициентов преобразования, и статистическое кодирование можно применять для достижения еще большего сжатия.
Сущность изобретения
[0006] В целом, это раскрытие описывает методы кодирования видеоданных, включенных в изображения или кадры видеопоследовательности. В частности, это раскрытие описывает методы, где размер изображения для группы изображений в видеопоследовательности можно кодировать на основании размера выровненной единицы кодирования для видеопоследовательности. Размер выровненной единицы кодирования для видеопоследовательности можно выбирать из нескольких возможных размеров единиц кодирования, поддерживаемых схемой кодирования видеосигнала. Методы этого раскрытия включают в себя сигнализацию размера выровненной единицы кодирования для одного или более изображений в видеопоследовательности и кодирование размера для одного или более изображений как кратного наименьшей единице кодирования.
[0007] В одном примере раскрытия, способ кодирования видеоданных содержит этапы, на которых определяют размер наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность, причем размер наименьшей единицы кодирования выбирается из множества возможных размеров единиц кодирования, включающего в себя максимально возможный размер единицы кодирования; определяют размер выровненной единицы кодирования для видеопоследовательности на основании множества возможных размеров единиц кодирования; определяют размер изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен размеру выровненной единицы кодирования; и сигнализируют значение размера выровненной единицы кодирования в информации синтаксиса уровня последовательностей.
[0008] В другом примере, способ декодирования видеоданных содержит этапы, на которых получают кодированную видеопоследовательность, включающую в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования; получают размер изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования, второго размера единицы кодирования и максимального размера единицы кодирования; и сохраняют декодированное изображение в буфере декодированных изображений.
[0009] В другом примере, устройство для кодирования видеоданных содержит устройство кодирования видеосигнала, выполненное с возможностью определять размер наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность, причем размер наименьшей единицы кодирования выбирается из множества возможных размеров единиц кодирования, включающего в себя максимально возможный размер единицы кодирования; определять размер выровненной единицы кодирования для видеопоследовательности на основании множества возможных размеров единиц кодирования; определять размер изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен размеру выровненной единицы кодирования; и сигнализировать значение размера выровненной единицы кодирования в информации синтаксиса уровня последовательностей.
[0010] В другом примере, устройство для декодирования видеоданных содержит устройство декодирования видеосигнала, выполненное с возможностью получать кодированную видеопоследовательность, включающую в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования; получать размер изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования, второго размера единицы кодирования и максимального размера единицы кодирования; и сохранять декодированное изображение в буфере декодированных изображений.
[0011] В другом примере, устройство для кодирования видеоданных содержит средство для определения размера наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность, причем размер наименьшей единицы кодирования выбирается из множества возможных размеров единиц кодирования, включающего в себя максимально возможный размер единицы кодирования; средство для определения размера выровненной единицы кодирования для видеопоследовательности на основании множества возможных размеров единиц кодирования; средство для определения размера изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен размеру выровненной единицы кодирования; и средство для сигнализации значения размера выровненной единицы кодирования в информации синтаксиса уровня последовательностей.
[0012] В другом примере, устройство для декодирования видеоданных содержит средство для получения кодированной видеопоследовательности, включающей в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования; средство для получения размера изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования, второго размера единицы кодирования и максимального размера единицы кодирования; и средство сохранения декодированного изображения в буфере декодированных изображений.
[0013] В другом примере, машиночитаемый носитель данных содержит хранящиеся на нем инструкции, которые, при выполнении, предписывают процессору устройства для кодирования видеоданных определять размер наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность, причем размер наименьшей единицы кодирования выбирается из множества возможных размеров единиц кодирования, включающего в себя максимально возможный размер единицы кодирования; определять размер выровненной единицы кодирования для видеопоследовательности на основании множества возможных размеров единиц кодирования; определять размер изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен размеру выровненной единицы кодирования; и сигнализировать значение размера выровненной единицы кодирования в информации синтаксиса уровня последовательностей.
[0014] В другом примере, машиночитаемый носитель данных содержит хранящиеся на нем инструкции, которые, при выполнении, предписывают процессору устройства для декодирования видеоданных получать кодированную видеопоследовательность, включающую в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования; получать размер изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования, второго размера единицы кодирования и максимального размера единицы кодирования; и сохранять декодированное изображение в буфере декодированных изображений.
[0015] Детали одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
[0016] Фиг. 1 - блок-схема, демонстрирующая пример системы кодирования и декодирования видеосигнала.
[0017] Фиг. 2 - блок-схема, демонстрирующая пример видеокодера, который может реализовать методы, описанные в этом раскрытии.
[0018] Фиг. 3 - блок-схема операций, демонстрирующая пример метода для кодирования видеоданных согласно методам этого раскрытия.
[0019] Фиг. 4 - блок-схема, демонстрирующая пример видеодекодера, который может реализовать методы, описанные в этом раскрытии.
[0020] Фиг. 5 - блок-схема операций, демонстрирующая пример метода для декодирования видеоданных согласно методам этого раскрытия.
Подробное описание
[0021] Видеопоследовательность может включать в себя группу изображений. Каждое изображение в группе изображений может иметь размер наименьшей единицы кодирования. В одном примере, размер наименьшей единицы кодирования может быть прямоугольником или квадратом с одним из следующих размеров, выраженных в пикселях или выборках: четыре пикселя, восемь пикселей, 16 пикселей, 32 пикселя и 64 пикселя. Для повышения эффективности кодирования видеопоследовательности, может быть полезным определять размер наименьшей единицы кодирования для видеопоследовательности и задавать размер изображения для группы изображений, где размер изображения кратен минимальному размеру наименьшей единицы кодирования для видеопоследовательности.
[0022] На фиг. 1 показана блок-схема, демонстрирующая один пример системы 10 кодирования и декодирования видеосигнала, которая может реализовать методы этого раскрытия. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированный видеосигнал на устройство 16 назначения через канал 15 связи. Устройство-источник 12 и устройство 16 назначения могут содержать любое из разнообразных устройств. В ряде случаев, устройство-источник 12 и устройство 16 назначения могут содержать телефонные трубки устройства беспроводной связи, например так называемые сотовые или спутниковые радиотелефоны. Однако методы этого раскрытия, которые применяются, в общем случае, к кодированию и декодированию, можно применять к небеспроводным устройствам, включающим в себя возможности кодирования и/или декодирования видеосигнала. Устройство-источник 12 и устройство 16 назначения являются лишь примерами устройств кодирования, которые могут поддерживать описанные здесь методы.
[0023] В примере, показанном на фиг. 1, устройство-источник 12 может включать в себя источник 20 видеосигнала, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Устройство 16 назначения может включать в себя приемник 26, модем 27, видеодекодер 28 и устройство 30 отображения.
[0024] Источник 20 видеосигнала может содержать устройство захвата видео, например видеокамеру, архив видеозаписей, содержащий ранее захваченное видео, подачу видео от поставщика видеоконтента или другого источника видео. В порядке дополнительной альтернативы, источник 20 видеосигнала может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию прямой видеосъемки, архивных видеозаписей и видео, создаваемого на компьютере. В ряде случаев, если источником 20 видеосигнала является видеокамера, устройство-источник 12 и устройство 16 назначения могут формировать так называемые камерофоны или видеотелефоны. В каждом случае, захваченное, предварительно захваченное видео или видео, создаваемое на компьютере, можно кодировать видеокодером 22.
[0025] В некоторых примерах (но не во всех случаях), после того как видеоданные кодируются видеокодером 22, кодированная видеоинформация может затем модулироваться модемом 23, согласно стандарту связи, например, множественного доступа с кодовым разделением (CDMA), мультиплексирования с ортогональным частотным разделением (OFDM) или любого другого стандарта или метода связи. Затем кодированные и модулированные данные можно передавать на устройство 16 назначения через передатчик 24. Модем 23 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн. Приемник 26 устройства 16 назначения принимает информацию по каналу 15, и модем 27 демодулирует информацию. Процесс декодирования видеосигнала, осуществляемый видеодекодером 28, может включать в себя методы, обратные методам кодирования, осуществляемым видеокодером 22.
[0026] Канал 15 связи может содержать любую беспроводную или проводную среду связи, например радиочастотный (РЧ) спектр или одну или более физических линий передачи, или любую комбинацию беспроводных и проводных сред передачи данных. Канал 15 связи может составлять часть сети с коммутацией пакетов, например локальной сети, широкомасштабной сети или глобальной сети, например интернета. Канал 15 связи, в общем случае, представляет любую подходящую среду связи или совокупность разных сред связи, для передачи видеоданных с устройства-источника 12 на устройство 16 назначения. Опять же, фиг. 1 является лишь одним примером, и методы этого раскрытия можно применять к установкам кодирования видеосигнала (например, кодирования видеосигнала или декодирования видеосигнала), которые не обязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах, данные можно извлекать из локальной памяти, передавать в режиме потока по сети и т.п. Устройство кодирования может кодировать и сохранять данные в памяти, и/или устройство декодирования может извлекать данные из памяти и декодировать их. Во многих случаях, кодирование и декодирование осуществляется несвязанными устройствами, которые не осуществляют связь друг с другом, но просто кодируют данные в память и/или извлекают данные из памяти и декодируют их. Например, после кодирования видеоданных, видеоданные можно пакетизировать для передачи или хранения. Видеоданные можно собирать в видеофайл, отвечающий любому из различных стандартов, например формату медиафайлов, установленному International Organization for Standardization (ISO), и его расширениям, например AVC.
[0027] В ряде случаев, видеокодер 22 и видеодекодер 28 могут работать, по существу, согласно стандарту сжатия видеосигнала, например перспективному стандарту HEVC. Однако методы этого раскрытия также можно применять в контексте различных других стандартов кодирования видеосигнала, включая некоторые старые стандарты или новые или перспективные стандарты. Хотя это не показано на фиг. 1, в ряде случаев, каждый из видеокодера 22 и видеодекодера 28 может быть объединен с аудиокодером и декодером и может включать в себя надлежащие блоки мультиплексирования/демультиплексирования или другое оборудование и программное обеспечение, для обработки кодирования аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки мультиплексирования/демультиплексирования могут отвечать протоколу мультиплексора ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).
[0028] Видеокодер 22 и видеодекодер 28 можно реализовать в виде одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или их комбинаций. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может входить в состав комбинированного кодера/декодера (кодека) в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п. В этом раскрытии, термин кодер подразумевает кодер, декодер или кодек, и все термины кодер, кодер, декодер и кодек подразумевают конкретные машины, предназначенные для кодирования (кодирования и/или декодирования) видеоданных, согласующихся с этим раскрытием. В этом раскрытии, термин “кодирование” может означать любое или оба из кодирования и/или декодирования.
[0029] В ряде случаев, устройство-источник 12 и устройство 16 назначения могут работать, по существу, симметричным образом. Например, каждое из устройства-источника 12 и устройства 16 назначения может включать в себя компоненты кодирования и декодирования видеосигнала. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видеосигнала между устройством-источником 12 и устройством 16 назначения, например, для потоковой передачи видеосигнала, воспроизведения видео, вещания видео или видеотелефонии.
[0030] Видеокодер 22 и видеодекодер 28 могут осуществлять кодирование с прогнозированием, в котором кодируемый видеоблок сравнивается с одним или более прогностическими кандидатами для идентификации прогностического блока. Видеоблоки могут существовать в отдельных кадрах видео или изображениях (или других независимо задаваемых единицах видео, например срезах). Кадры, срезы, участки кадров, группы изображений или другие структуры данных можно определить как единицы видеоинформации, которые включают в себя видеоблоки. Процесс кодирования с прогнозированием может быть внутренним (в этом случае прогностические данные генерируются на основании соседних внутренних данных в том же кадре или срезе видео) или внешним (в этом случае прогностические данные генерируются на основании видеоданных в предыдущих или последующих кадрах или срезах). Видеокодер 22 и видеодекодер 28 могут поддерживать несколько разных режимов прогностического кодирования. Видеокодер 22 может выбирать желаемый режим кодирования видеосигнала. При кодировании с прогнозированием, после идентификации прогностического блока, различия между текущим кодируемым видеоблоком и прогностическим блоком кодируются как остаточный блок, и синтаксис прогнозирования (например, вектор движения в случае внешнего кодирования или прогностический режим в случае внутреннего кодирования) используется для идентификации прогностического блока. В ряде случаев, остаточный блок можно преобразовывать и квантовать. Методы преобразования могут содержать процесс DCT или принципиально аналогичный процесс, целочисленные преобразования, вейвлетные преобразования или другие типы преобразований. В процессе DCT, в порядке примера, процесс преобразования преобразует набор пиксельных значений (например, остаточные пиксельные значения) в коэффициенты преобразования, которые могут представлять энергию пиксельных значений в частотной области. Видеокодер 22 и видеодекодер 28 могут применять квантование к коэффициентам преобразования. Квантование, в общем случае, предусматривает процесс, который ограничивает количество битов, связанное с любым данным коэффициентом преобразования.
[0031] После преобразования и квантования, видеокодер 22 и видеодекодер 28 могут осуществлять статистическое кодирование на квантованных и преобразованных остаточных видеоблоках. Видеокодер 22 может генерировать элементы синтаксиса как часть процесса кодирования, подлежащего использованию видеодекодером 28 в процессе декодирования. Видеокодер 22 также может подвергать статистическому кодированию элементы синтаксиса и включать элементы синтаксиса в кодированный битовый поток. В целом, статистическое кодирование содержит один или более процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования и/или другую синтаксическую информацию. Видеокодер 22 и видеодекодер 28 могут осуществлять методы сканирования на квантованных коэффициентах преобразования для задания одного или более сериализованных одномерных векторов коэффициентов из двухмерных видеоблоков. Сканированные коэффициенты можно затем статистически кодировать совместно с любой синтаксической информацией, например, посредством контекстно-адаптивного кодирования с переменной длиной слова (CAVLC), контекстно-адаптивного двоичного арифметического кодирования (CABAC) или другого процесса статистического кодирования.
[0032] В некоторых примерах, как часть процесса кодирования видеокодер 22 может декодировать кодированные видеоблоки для генерации видеоданных, которые используются для последующего кодирования на основе прогнозирования последующих видеоблоков. Это часто называют циклом декодирования процесса кодирования, который, в общем случае, имитирует декодирование, осуществляемое устройством декодера. В цикле декодирования кодера или декодера можно использовать методы фильтрации для повышения качества видео и, например, сглаживать границы пикселей и, возможно, удалять артефакты из декодированного видеосигнала. Эта фильтрация может осуществляться внутри цикла или после цикла. При фильтрации внутри цикла, фильтрация реконструированных видеоданных происходит в цикле кодирования, и это означает, что фильтрованные данные сохраняются кодером или декодером для последующего использования при прогнозировании последующих данных изображения. Напротив, при фильтрации после цикла фильтрация реконструированных видеоданных происходит вне цикла кодирования, и это означает, что нефильтрованные версии данных сохраняются кодером или декодером для последующего использования при прогнозировании последующих данных изображения. Циклическая фильтрация часто следует за отдельным процессом противоблоковой фильтрации, который обычно применяет фильтрацию к пикселям, которые находятся на или вблизи границ соседних видеоблоков, для устранения артефактов блочности, которые проявляются на границах видеоблоков.
[0033] В настоящее время ведутся работы по созданию нового стандарта кодирования видеосигнала, в данный момент носящего название High Efficiency Video Coding (HEVC). Перспективный стандарт также именуется H.265. Недавний проект стандарта HEVC, именуемый “HEVC Working Draft 3” или “WD3,” описан в документе JCTVC-E603, Wiegand et al., “High efficiency video coding (HEVC) text specification draft 3,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 5th Meeting: Geneva, CH, 16-23 March, 2011, который, таким образом, включен посредством ссылки в полном объеме. Работы по стандартизации основаны на модели устройства кодирования видеосигнала, именуемой HEVC Test Model (HM). HM предусматривает несколько возможностей устройств кодирования видеосигнала над устройствами, выполненными с возможностью кодирования видеоданных согласно ITU-T H.264/AVC. Например, в то время как H.264 обеспечивает девять режимов кодирования с внутренним прогнозированием, HM обеспечивает целых тридцать четыре режима кодирования с внутренним прогнозированием. Видеокодер 22 может работать на блоках видеоданных, отвечающих стандарту HEVC и HEVC Test Model.
[0034] Стандарт HEVC включает в себя конкретные термины и размеры блока для блоков видеоданных. В частности, HEVC включает в себя термины наибольшая единица кодирования (LCU), единица кодирования (CU), единица прогнозирования (PU) и единица преобразования (TU). LCU, CU, PU и TU все являются видеоблоками применительно к этому раскрытию. Это раскрытие также использует термин блок в отношении любой из LCU, CU, PU или TU. В HEVC, элементы синтаксиса можно задавать на уровне LCU, уровне CU, уровне PU и уровне TU. В HEVC, LCU означает единицу кодирования наибольшего размера, которая является наибольшей единицей кодирования в отношении количества пикселей, поддерживаемого в данной ситуации. В целом, в HEVC, CU выполняет функцию, аналогичную функции макроблока в H.264, за исключением того, что CU не имеет различия в размере. Таким образом, CU можно разбивать на под-CU, и LCU можно разбивать на меньшие CU. Кроме того, CU можно разбивать на единицы прогнозирования (PU) в целях прогнозирования. PU может представлять всю или часть соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. PU могут иметь квадратные или прямоугольные формы. TU представляют набор разностных значений пикселей или остатков пикселей, который можно преобразовывать для создания коэффициентов преобразования, которые можно квантовать. Преобразования не являются фиксированными в стандарте HEVC, но задаются согласно размерам единиц преобразования (TU), которые могут иметь такой же размер, как данная CU, или, возможно, меньший.
0
1
4
[0035] В HEVC, LCU может быть связана со структурой данных квадродерева. Кроме того, в некоторых примерах, остаточные выборки, соответствующие CU, могут подразбиваться на меньшие единицы с использованием схемы разбиения квадродерева, которая включает в себя структуру квадродерева, известную как "остаточное квадродерево" (RQT). В целом, структура данных квадродерева включает в себя по одному узлу на CU, где корневой узел может соответствовать LCU. Например, CU может соответствовать LCU, и единицы с CU по CU могут содержать под-CU для LCU. Если CU разбивается на четыре под-CU, то узел, соответствующий CU, включает в себя четыре краевых узла, каждый из которых соответствует одной из под-CU. Каждый узел структуры данных квадродерева может обеспечивать данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разбиения в синтаксисе уровня CU для указания, разбивается ли CU, соответствующая узлу, на под-CU. Элементы синтаксиса для CU можно задавать рекурсивно и в зависимости от того, разбивается ли CU на под-CU. Если CU не подлежит дальнейшему разбиению, говорят, что она является краевой CU. В этом раскрытии, четыре под-CU краевой CU также могут именоваться краевыми CU, несмотря на отсутствие явного разбиения исходной краевой CU. Например, если CU размером 16×16 не подлежит дальнейшему разбиению, четыре под-CU размером 8×8 также будут именоваться краевыми CU, хотя CU 16×16 никогда не подвергалась разбиению.
[0036] Краевые узлы или краевые CU в RQT могут соответствовать TU. То есть краевая CU может включать в себя квадродерево, указывающее, как краевая CU делится на TU. Краевая CU может включать в себя одну или более единиц преобразования (TU). Это раскрытие может относиться к квадродереву, указывающему, как LCU делится в качестве квадродерева CU, и квадродереву, указывающему, как краевая CU делится на TU в качестве квадродерева TU. Корневой узел квадродерева TU, в общем случае, соответствует краевой CU, тогда как корневой узел квадродерева CU, в общем случае, соответствует LCU. TU квадродерева TU, не подлежащие разбиению, именуются краевыми TU. Флаг разбиения может указывать, разбивается ли краевая CU на четыре единицы преобразования. Затем каждую единицу преобразования можно дополнительно разбивать на четыре под-TU. Когда TU не подлежит дальнейшему разбиению, она может именоваться краевой TU.
[0037] Кроме того, краевые узлы или краевые CU могут включать в себя одну или более единиц прогнозирования (PU). Например, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например, точность в четверть пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для краевой CU, задающие PU, могут также описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться в зависимости от того, является ли CU не закодированной, закодированной в режиме внутреннего прогнозирования или закодированной в режиме внешнего прогнозирования. Для внутреннего кодирования, PU можно обрабатывать так же, как краевую единицу преобразования, описанную ниже.
[0038] В общем случае, для внутреннего кодирования в HEVC, все краевые TU, принадлежащие краевой CU, совместно используют один и тот же режим внутреннего прогнозирования. Таким образом, один и тот же режим внутреннего прогнозирования, в общем случае, применяется для вычисления прогнозируемых значений для всех TU краевой CU. Для внутреннего кодирования, видеокодер 22 может вычислять остаточное значение для каждой краевой TU с использованием режима внутреннего прогнозирования как разность между частью прогностических значений, соответствующих TU, и исходным блоком. Остаточное значение можно преобразовывать, квантовать и сканировать. Для внешнего кодирования в HEVC, видеокодер 22 может осуществлять прогнозирование на уровне PU и может вычислять остаток для каждого PU. Остаточные значения, соответствующие краевой CU можно преобразовывать, квантовать и сканировать. Для внешнего кодирования, краевая TU может быть больше или меньше, чем PU. Для внутреннего кодирования, PU может быть совмещена с соответствующей краевой TU. В некоторых примерах, максимальный размер краевой TU может совпадать с размером соответствующей краевой CU.
[0039] Как описано выше, стандарт HEVC допускает преобразования согласно единицам преобразования (TU), которые могут различаться для разных CU. Размер TU обычно назначается на основании размера PU в данной CU, заданной для разделенной LCU, хотя это не всегда может иметь место. TU обычно имеют такой же размер, как PU, или меньше. Разностные значения пикселей, связанные с TU, можно преобразовывать для создания коэффициентов преобразования, которые можно квантовать. Кроме того, квантование можно применять согласно параметру квантования (QP), заданному на уровне LCU. Соответственно, один и тот же уровень квантования можно применять ко всем коэффициентам преобразования в TU, связанных с разными PU для CU в LCU. Однако вместо того чтобы сигнализировать сам QP, изменение или разность (т.е. дельта) QP можно сигнализировать с LCU для указания изменения QP по сравнению с предыдущей LCU.
[0040] Видеокодер 22 может осуществлять кодирование видеосигнала для изображений, кадров, срезов, участков кадров, групп изображений или других видеоданных с использованием LCU, CU, PU и TU, заданных согласно стандарту HEVC в качестве единиц информации кодирования видеосигнала.
[0041] Например, видеокодер 22 может кодировать одно или более изображений видеоданных, содержащих наибольшие единицы кодирования (LCU), где LCU разделены на набор единиц кодирования (CU) размером с блок согласно схеме разбиения квадродерева. Видеокодер 22 и видеодекодер 28 могут использовать CU, имеющие изменяющиеся размеры, согласующиеся со стандартом HEVC. Например, видеокодер 22 может использовать возможные размеры CU 64×64, 32×32, 16×16, 8×8 и 4×4 пикселя. Для данной видеопоследовательности, видеокодер 22 может использовать максимальный размер CU 64×64 пикселя для всех изображений в видеопоследовательности, тогда как некоторые изображения в видеопоследовательности можно кодировать с использованием наименьшего возможного размера CU 4×4 пикселя, а другие изображения в видеопоследовательности можно кодировать с использованием размера наименьшей CU 8×8 пикселей.
[0042] Как описано выше, CU, упомянутая в этом раскрытии, может означать наибольшую единицу кодирования изображения или под-CU в LCU. Видеокодер 22 может разбивать LCU на под-CU, и каждая под-CU может быть дополнительно разбита на под-CU. Видеокодер 22 может включать в себя данные синтаксиса для битового потока, заданного для указания максимальной кратности разбиения LCU. Кратность разбиения LCU может именоваться глубиной CU.
[0043] Кроме того, видеокодер 22 также может задавать наименьшую единицу кодирования (SCU) для каждого изображения в видеопоследовательности. SCU может означать размер наименьшей единицы кодирования, используемый для кодирования изображения, когда доступно несколько возможных размеров CU. Например, видеокодер 22 может быть выполнен с возможностью использовать один из возможных размеров CU 64×64, 32×32, 16×16, 8×8 и 4×4 пикселя для кодирования изображений в видеопоследовательности. В одном примере, все изображения в видеопоследовательности можно кодировать с использованием одного и того же размера SCU, например 4×4 пикселя или 8×8 пикселей. В других примерах, некоторые изображения в видеопоследовательности можно кодировать с использованием размера SCU 4×4 пикселя, а другие изображения в видеопоследовательности можно кодировать с использованием размера SCU 8×8 пикселей. Таким образом, в этом примере, изображения в видеопоследовательности могут иметь соответствующие SCU 4×4 пикселя и 8×8 пикселей, т.е. размер SCU может изменяться от кадра к кадру. Видеокодер 22 может определять минимальный размер SCU или максимальный размер SCU для видеопоследовательности. В этом примере, минимальный размер SCU будет 4×4, а максимальный размер SCU будет 8×8.
[0044] Видеокодер 22 может включать в себя различные уровни данных синтаксиса в битовом потоке, которые задают размеры LCU, CU, PU, TU и SCU. Например, видеокодер 22 может сигнализировать размер LCU с использованием синтаксиса уровня последовательностей.
[0045] Помимо сигнализации размера CU, используемого для кодирования изображения в видеопоследовательности, видеокодер 22 может использовать различные методы для сигнализации размера изображения в видеопоследовательности. Размер изображения, связанного с видеопоследовательностью, может быть равен размеру изображения для декодированного изображения, хранящегося в буфере декодированных изображений (DPB). Изображения могут иметь размер единицы, например блока выбранной высоты и ширины. Размер изображения может быть размером изображений, поддерживаемым HEVC или другим стандартом видео, например, размеры изображений могут включать в себя 320×240, 1920×1080 и 7680×4320. Кроме того, видеокодер 22 может сигнализировать элементы синтаксиса для кодирования компонентов вида текстуры в заголовке среза. Таким образом, видеокодер 22 может сигнализировать размер изображения, связанного с видеопоследовательностью, и/или минимальный размер наименьшей единицы кодирования, связанной с видеопоследовательностью, с использованием различных элементов синтаксиса. Аналогично, видеодекодер 28 может получать различные элементы синтаксиса, указывающие размер изображения, связанного с кодированной видеопоследовательностью, и/или минимальный размер наименьшей единицы кодирования, связанной с кодированной видеопоследовательностью, и использовать такие элементы синтаксиса при декодировании кодированной видеопоследовательности. В одном примере, видеокодер 22 может сигнализировать минимальный размер наименьшей единицы кодирования и размер изображения, связанного с видеопоследовательностью, в информации синтаксиса уровня последовательностей, причем размер изображения кратен минимальному размеру наименьшей единицы кодирования. В одном примере, видеодекодер 28 может получать кодированную видеопоследовательность, включающую в себя одно или более кодированных изображений, и минимальный размер наименьшей единицы кодирования для видеопоследовательности в информации синтаксиса уровня последовательностей. Видеодекодер 28 может декодировать кодированные изображения в кодированной видеопоследовательности и сохранять декодированные изображения в буфере декодированных изображений с размером изображения, кратным минимальному размеру наименьшей единицы кодирования.
[0046] В некоторых методах сжатия видеосигнала, где используются макроблоки фиксированного размера (например, 16×16), размер изображения может сигнализироваться в единицах макроблоков. Когда ширина или высота не кратна фиксированному размеру макроблока, можно использовать окно обрезки. Например, изображение 1920×1080 можно кодировать как 1920×1088 в битовом потоке, но окно обрезки сигнализирует реальное окно, позволяющее отображать изображение как 1920×1080. В других методах, размер изображения может сигнализироваться в единицах пикселя. Один пример сигнализации размера изображения в единицах пикселя обеспечивается стандартом HEVC.
[0047] В одном примере, видеокодер 22 и видеодекодер 28 могут кодировать видеоданные, где размер кодированного изображения в последовательности изображений задается в отношении конкретного типа единицы кодирования (CU). Конкретными типами кодированных блоков могут быть LCU, SCU, наименьшая CU минимального размера или наименьшая CU максимального размера каждого изображения в последовательности изображений, как описано выше. В частности, видеокодер 22 может указывать единицу, используемую для сигнализации размера изображения относительно размера единицы кодирования (CU) изображения. В одном примере, единица может иметь такой же размер, как размер наименьшей CU, разрешенный в кодированной видеопоследовательности. В ряде случаев, размер наименьшей CU одинаков для всех изображений в видеопоследовательности. В других случаях, размер наименьшей CU каждого изображения в видеопоследовательности может различаться. В этом случае, размер наименьшей CU для каждого изображения в видеопоследовательности может быть не меньше наименьшего возможного размера CU для видеопоследовательности. В другом примере, единица, указанная видеокодером 22, может иметь такой же размер, как наибольшая единица кодирования (LCU) для группы изображений. В некоторых примерах, окно обрезки можно применять к изображению видеокодером 22 или видеодекодером 28 для уменьшения размера изображения. Окно обрезки может обрезать, например, по меньшей мере, одну из правой стороны и нижней стороны изображения.
[0048] В другом примере, видеокодер 22 может сигнализировать размер изображения относительно размера выровненной CU (ACU). Размер выровненной CU может быть размером CU, который используется для указания размера изображения для декодированного изображения, хранящегося в буфере декодированных изображений (DPB). Такой размер изображения может иметь ширину и высоту, кратные ширине и высоте размера выровненной CU. Аналогично, высота изображения может быть кратна высоте выровненной CU. Размер (ширина и высота) выровненной CU может сигнализироваться таким же образом, как в других альтернативах. Например, видеокодер 22 может сигнализировать выровненные CU на различных уровнях синтаксиса.
[0049] Размер ACU можно задавать согласно следующим примерам: если все изображения в видеопоследовательности имеют один и тот же размер SCU, ACU можно определить как размер SCU. Если же изображения в видеопоследовательности имеют разные размеры SCU, ACU можно определить как максимальный или минимальный размер SCU из всех изображений. Независимо от того, как задается ACU, размер ACU может в явном виде сигнализироваться видеокодером 22 в наборе параметров последовательности (SPS) или наборе параметров изображения (PPS), связанном с видеопоследовательностью. В ряде случаев, размер ACU можно ограничивать таким образом, чтобы он был меньше или равен размеру LCU для видеопоследовательности и больше или равен размеру SCU для видеопоследовательности.
[0050] Кроме того, в некоторых примерах, видеокодер 22 может сигнализировать размер изображения в единицах LCU или единицах SCU. В некоторых примерах, единица, используемая для сигнализации размера кодированного изображения, может сигнализироваться в SPS. Эта единица может иметь такой же размер, как размер наименьшей CU, разрешенный для кодированной видеопоследовательности. В PPS, относительный размер размера наименьшей CU для изображений, ссылающихся на этот PPS, может сигнализироваться видеокодером 22. В случае когда все изображения в видеопоследовательности имеют один и тот же размер SCU, дополнительная сигнализация относительного размера наименьшей CU не обязательно осуществляется в PPS. В случае когда размер наименьшей CU изменяется между изображениями в видеопоследовательности, относительный размер наименьшей CU для части изображений в видеопоследовательности может сигнализироваться в PPS, где относительный размер наименьшей CU больше минимального размера наименьшей CU для видеопоследовательности. Относительный размер наименьшей CU может сигнализироваться в PPS как разность между относительным размером наименьшей CU для части изображений и минимальным размером наименьшей CU для видеопоследовательности.
[0051] Альтернативно, размер изображения может сигнализироваться видеокодером 22 в единицах LCU в SPS. Однако поскольку окно обрезки может дополнительно сигнализироваться видеокодером 22, использование окна обрезки может помогать видеодекодеру идентифицировать размер изображения, при условии что размер ACU известен.
[0052] Альтернативно, когда размер SCU изменяется для изображений в видеопоследовательности, единица может иметь такой же размер, как максимальный размер наименьшей CU, разрешенный для изображений в кодированной видеопоследовательности. В примере, где максимальный размер CU составляет 64×64 пикселя и некоторые изображения имеют размер CU 4×4 пикселя, тогда как другие имеют размер наименьшей CU 8×8 пикселей, единица размера изображения может составлять 8×8 пикселей. В этом примере, если изображение имеет размер 64×65 пикселей, размер изображения будет сигнализироваться видеокодером 22 как 8 на 8 пикселей, умноженные на 9 на 8 пикселей. Пиксели в изображении, размером свыше 64×65 пикселей можно обрезать с использованием элементов синтаксиса обрезки кадра.
[0053] В некоторых примерах максимальный размер CU составляет 64×64 пикселя, и некоторые изображения имеют наименьший возможный размер CU 4×4 пикселя, тогда как другие имеют размер наименьшей CU 8×8 пикселей. Для этого примера, если конкретный тип CU является минимально возможной наименьшей CU, единица размера изображения составляет 4×4 пикселя. Согласно тому же примеру, если конкретный тип CU является максимально возможной наименьшей CU, единица размера изображения составляет 8×8 пикселей.
[0054] В нижеследующих таблицах 1-7 приведен пример синтаксиса, который можно реализовать посредством видеокодера 22 и видеодекодера 28 для осуществления описанных здесь методов. Пример синтаксиса можно реализовать посредством видеокодера 22 и видеодекодера 28 с использованием оборудования, программного обеспечения, программно-аппаратного обеспечения или любой их комбинации.
[0055] Как описано выше, видеокодер 22 может сигнализировать единицу, используемую для сигнализации размера кодированного изображения в SPS (наборе параметров последовательности). В одном примере, эта единица может иметь такой же размер, как размер наименьшей CU, разрешенный в кодированной видеопоследовательности. В этом примере, если размер наименьшей CU может изменяться в кодированном битовом потоке между изображениями в группе изображений, то размер наименьшей CU не должен быть меньше размера этой единицы. В нижеследующей Таблице 1 приведен пример синтаксиса полезной нагрузки первичной байтовой последовательности SPS (RBSP), используемого для сигнализации минимального размера наименьшей CU для кодированного изображения в видеопоследовательности. В наборе параметров изображения (PPS) может сигнализироваться относительный размер размера наименьшей CU для изображений, ссылающихся на этот PPS.
[0056] В таблице 1 элемент синтаксиса log2_max_coding_block_size_minus3 может указывать максимальный размер блока кодирования. Переменная Log2MaxCUSize может быть задана равной: log2_max_coding_block_size_minus3+3.
[0057] В таблице 1 элемент синтаксиса log2_diff_max_pic_alligned_min_coding_block_size может указывать разность между минимальным размером блока кодирования во всей кодированной видеопоследовательности и максимальным размером блока кодирования. В ряде случаев, группу изображений можно задавать так, чтобы наименьший размер кодирования CU изображения в группе изображений был не меньше значения разности.
[0058] Переменная Log2SeqMinCUSize может быть задана равной log2_minmax_coding_block_size_minus3+3- log2_diff_max_pic_alligned_min_coding_block_size.
[0059] Это значение может варьироваться от 0 до log2_max_coding_block_size_minus3. Переменные Log2MaxCUSize и Log2SeqMinCUSize могут использоваться видеокодером 22 и видеодекодером 28 для обработки кодирования видеосигнала.
[0060] следует отметить, что таблица 1 включает в себя элементы синтаксиса pic_width_in_luma_samples, pic_height_in_luma_samples и log2_min_coding_block_size_minus3, которые присутствуют в таблице 1 с зачеркиванием. Эти элементы синтаксиса представляют альтернативный пример, где размер изображения может сигнализироваться видеокодером 22 в единицах пикселей. В одном примере, где размер изображения имеет ширину и высоту, кратные ширине и высоте размера ACU, где размер ACU равен минимальному размеру SCU видеопоследовательности, как описано выше, видеодекодер 28 может определять, согласуется ли битовый поток, на основании того, являются ли значения pic_width_in_luma_samples, pic_height_in_luma_samples целыми кратными log2_min_coding_block_size_minus3.
[0061] В нижеследующей таблице 2 приведен другой пример синтаксиса RBSP SPS, в соответствии с методами, которые могут осуществляться видеокодером 22 и видеодекодером 28.
[0062] Согласно таблице 2, ширина и высота изображения могут указываться видеокодером 22 относительно ширины и высоты выровненной CU. Как описано выше, выровненная CU может представлять собой CU, которая используется видеокодером 22 и видеодекодером 28 для указания размера изображения. Таким образом, ширина изображения может быть кратна ширине выровненной CU. Как описано выше, размер выровненной CU может представлять собой размер, используемый для указания размера изображения для декодированного изображения, хранящегося в буфере декодированных изображений (DPB). В некоторых примерах, изображение может содержать одну или более полных выровненных CU. В некоторых примерах, выровненная CU является выровненной наименьшей CU (SCU).
[0063] В таблице 2 высота изображения задана как pic_height_in_ alligned_scu, и ширина изображения задана как pic_width_in_alligned_scu. pic_width_in_alligned_cu может указывать ширину изображений в кодированной видеопоследовательности в единицах выровненных CU. pic_height_in_alligned_cu может указывать высоту изображений в кодированной видеопоследовательности в единицах выровненных CU.
[0064] log2_max_coding_block_size_minus3 может указывать максимальный размер блока кодирования. Переменная Log2MaxCUSize может быть задана равной log2_max_coding_block_size_minus3+3.
[0065] log2_diff_max_pic_alligned_min_coding_block_size может указывать разность между минимальным размером блока кодирования во всей кодированной видеопоследовательности и максимальным размером блока кодирования. В некоторых примерах, любое изображение не может иметь наименьший размер кодирования CU меньше этого.
[0066] В нижеследующей таблице 3 представлены дополнительные элементы синтаксиса для RBSP PPS, которые можно реализовать посредством видеокодера 22 и видеодекодера 28 совместно с RBSP SPS, представленными в таблице 1 или таблице 2.
[0067] В таблице 3 pic_scu_size_delta может указывать минимальный размер единицы кодирования изображений, ссылающихся на этот набор параметров изображения. Это значение может варьироваться от 0 до log2_diff_max_pic_alligned_min_coding_block_size.
[0068] Переменная Log2MinCUSize может быть задана равной Log2SeqMinCUSize + pic_scu_size_delta. Альтернативно, если размер выровненной CU является максимальным размером наименьшей CU всех изображений, переменная Log2MinCUSize может быть задана равной Log2SeqMinCUSize - pic_scu_size_delta. Альтернативно, если размер выровненной CU может быть любым возможным размером CU, в этом случае, pic_scu_size_delta может быть знаковым значением (se(v)) и переменная Log2MinCUSize может быть задана равной Log2SeqMinCUSize - pic_scu_size_delta.
[0069] Помимо рассмотренных выше примеров, в одном примере, размер LCU для видеопоследовательности можно определить как N на N, и размер ACU, выбранный согласно одному из вышеописанных примеров, можно определить как M на M. В этом случае, размер изображения может сигнализироваться видеокодером 22 в единицах размера LCU, можно определить как WL на HL. Таким образом, размер изображения по отношению к размеру выровненной CU может выводиться видеодекодером 28 согласно следующему уравнению:
(WL*N-crop_right_offset+M-1)/M*M на (HL*N- crop_bottom_offset+M-1)/M*M, где crop_right_offset и crop_bottom_offset сигнализируются видеокодером 22 в окне обрезки и являются количествами пикселей, обрезанных от правой и нижней границы, соответственно. Следует отметить, что WL может быть значением pic_width_in_LCU, и WH является значением pic_height_in_LCU в нижеследующей таблице 5. Следует также заметить, что операции (например, деления) в вышеприведенном уравнении могут быть целочисленными вычислениями.
[0070] В нижеследующей таблице 4 приведен другой пример дополнительных элементов синтаксиса для seq_parameter_set_rbsp( ). В этом примере, размеры одного или более изображений могут сигнализироваться видеокодером 22 относительно размера наибольшей единицы кодирования (LCU). Размеры одного или более изображений могут сигнализироваться видеокодером 22, например, в наборе параметров последовательности.
[0071] Размер изображения также может сигнализироваться видеокодером 22 с num_right_offset_ACU и num_bottom_offset_ACU, так что размер изображения равен (WL*N- M* num_right_offset_ACU) на (HL*N - M* num_bottom_offset_ACU). Эти два параметра могут сигнализироваться в SPS или PPS. Декодированное изображение подлежит сохранению в буфере декодированных изображений с изображением по отношению к выровненной CU, которая равна (WL*N- num_crop_acu_right*M) на (HL*N - num_crop_acu_right*M).
[0072] В некоторых примерах, окно обрезки может дополнительно сигнализироваться видеокодером 22. Окно обрезки может задавать, по меньшей мере, правую сторону или нижнюю сторону изображения или другие, подлежащие обрезке. Однако поскольку окно обрезки может дополнительно сигнализироваться, окно обрезки можно использовать для идентификации размера изображения, когда размер выровненной CU известен.
[0073] В примере, приведенном в таблице 4, размеры изображения в отношении ширины и высоты заданы в отношении наибольшей единицы кодирования (LCU). Таким образом, pic_width_in_LCU может указывать размер в пикселях одного или более изображений относительно LCU. Аналогично, pic_height_in_LCU может указывать размер в пикселях одного или более изображений относительно LCU. Элемент синтаксиса num_crop_acu_right может сигнализироваться в окне обрезки и задавать количество пикселей, подлежащих обрезке на правой стороне изображения или другого видеоблока. Аналогично, элемент синтаксиса num_crop_acu_bottom может сигнализироваться в окне обрезки и задавать количество пикселей, подлежащих обрезке на нижней стороне изображения или другого видеоблока. В других примерах, сигнализируются другие стороны окон обрезки.
[0074] Пример приведен исключительно в целях иллюстрации. В этом примере, размер LCU равен N на N, и размер выровненной CU равен M на M. Размер изображения сигнализируется в отношении единицы размера LCU, задается как WL на HL. В этом примере, WL является значением pic_width_in_LCU, и HL является значением pic_height_in_LCU. Crop_right_offset может задавать количество обрезаемых пикселей на правой стороне и может быть равно num_crop_acu_right. Crop_bottom_offset может задавать количество обрезаемых пикселей на нижней стороне и может быть равно num_crop_acu_bottom.
[0075] Из размера изображения относительно размера LCU и размера выровненной CU, размер изображения по отношению к размеру выровненной CU (ACU) можно определить из нижеследующих уравнений
Следует отметить, что операции в уравнениях 1 и 2 могут быть целочисленными вычислениями.
[0076] В таблице 5 приведен еще один пример дополнительных элементов синтаксиса для pic_parameter_set_rbsp( ). В этом примере может сигнализироваться, по меньшей мере, один из num_right_offset_ACU и num_bottom_offset_ACU. В Таблице 6 представлены num_right_offset_ACU и num_bottom_offset_ACU, сигнализируемые в SPS, однако эти значения могут сигнализироваться другими средствами. Например, по меньшей мере, один из num_right_offset_ACU и num_bottom_offset_ACU может сигнализироваться в PPS.
[0077] Значение num_crop_acu_right в таблице 5 может указывать количество размеров выровненных CU, подлежащих обрезке из изображения, выровненного по LCU, справа. Обрезанное изображение может сохраняться в DPB. Значение num_crop_acu_bottom может указывать количество размеров выровненных CU, подлежащих обрезке из изображения, выровненного по LCU, снизу, для получения изображения, подлежащего сохранению в DPB.
[0078] В примере, соответствующем таблице 5, размер изображения также может сигнализироваться с num_right_offset_ACU и num_bottom_offset_ACU. Размер изображения может определяться как:
(3)
(4)
[0079] Декодированное изображение, которое может сохраняться в буфере декодированных изображений с размером изображения по отношению к выровненной CU, можно задавать следующим образом:
(5)
[0080] Таким образом, размер (высота и ширина в пикселях) выровненной CU может сигнализироваться таким же образом, как в вышеприведенных примерах в отношении размера изображения. Например, если все изображения имеют одинаковый размер наименьшей CU (SCU), размер выровненной CU может быть равен размеру SCU. В порядке другого примера, если изображения имеют разные размеры SCU, размер выровненной CU может быть равен максимальному или минимальному размеру SCU для всех изображений. Размер выровненной CU может сигнализироваться в явном виде в, по меньшей мере, одном из SPS или PPS. Размер выровненной CU может быть меньше или равен размеру LCU и больше или равен размеру SCU.
[0081] В нижеследующей таблице 6 приведен один пример синтаксиса обрезки кадра, который можно использовать совместно с любым из вышеописанных иллюстративных вариантов осуществления. В одном примере, окно обрезки может находиться в наборе параметров последовательности и подчиняться той же семантике, что и в H.264/AVC.
[0082] На фиг. 2 показана блок-схема, демонстрирующая пример видеокодера, который может быть выполнен с возможностью осуществления методов, описанных в этом раскрытии. Видеокодер 50 может быть выполнен с возможностью определять размер наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность, причем размер наименьшей единицы кодирования выбирается из множества возможных размеров единиц кодирования. Кроме того, видеокодер 50 может быть выполнен с возможностью определения минимального размера единицы кодирования для видеопоследовательности на основании наименьшей единицы кодирования, определенной для каждого из множества изображений, образующих видеопоследовательность. Кроме того, видеокодер 50 может быть выполнен с возможностью определять размер изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен значению минимального размера единицы кодирования. Кроме того, видеокодер 50 может быть выполнен с возможностью сигнализировать значение минимального размера единицы кодирования в информации синтаксиса уровня последовательностей.
[0083] Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Как показано на фиг. 2, видеокодер 50 может включать в себя модуль 32 кодирования с прогнозированием, модуль 31 разбиения квадродерева, сумматоры 48 и 51 и память 34. Видеокодер 50 также может включать в себя модуль 38 преобразования и модуль 40 квантования, а также модуль 42 обратного квантования и модуль 44 обратного преобразования. Видеокодер 50 также может включать в себя модуль 46 статистического кодирования и модуль 47 фильтрации, который может включать в себя противоблоковые фильтры и послецикловые и/или внутрицикловые фильтры. Кодированные видеоданные и синтаксическая информация, которая задает способ кодирования, могут передаваться на модуль 46 статистического кодирования, который осуществляет статистическое кодирование на битовом потоке.
[0084] Как показано на фиг. 2, модуль 32 кодирования с прогнозированием может поддерживать множество разных режимов 35 кодирования, используемых при кодировании видеоблоков. Модуль 32 кодирования с прогнозированием также может содержать модуль 36 оценивания движения (ME) и модуль 37 компенсации движения (MC).
[0085] В ходе процесса кодирования, видеокодер 50 принимает входные видеоданные. Модуль 31 разбиения квадродерева может разбивать единицы видеоданных на меньшие единицы. Например, модуль 31 разбиения квадродерева может разбивать LCU на меньшие CU и PU согласно вышеописанному разбиению HEVC. Модуль 32 кодирования с прогнозированием осуществляет методы кодирования с прогнозированием на видеоблоках (например CU и PU). Для внешнего кодирования, модуль 32 кодирования с прогнозированием сравнивает CU или PU с различными прогностическими кандидатами в одном или более опорных кадрах или срезах видео (например, в одном или более “списках” опорных данных) для задания прогностического блока. Для внутреннего кодирования, модуль 32 кодирования с прогнозированием генерирует прогностический блок на основании соседних данных в том же кадре или срезе видео. Модуль 32 кодирования с прогнозированием выводит блок прогнозирования, и сумматор 48 вычитает блок прогнозирования из кодируемой CU или PU для генерации остаточного блока. По меньшей мере, некоторые видеоблоки можно кодировать с использованием передового прогнозирования вектора движения (AMVP), описанного в HEVC.
[0086] В ряде случаев, модуль кодирования с прогнозированием может включать в себя модуль скорости-искажения (R-D), который сравнивает результаты кодирования видеоблоков (например, CU или PU) в разных режимах. В этом случае, модуль 32 кодирования с прогнозированием также может включать в себя модуль выбора режима для анализа результатов кодирования в отношении скорости кодирования (т.е. битов кодирования, необходимых для блока) и искажения (например, представляющего качество видео кодированного блока относительно исходного блока) для обеспечения вариантов выбора режима для видеоблоков. Таким образом, модуль R-D может обеспечивать анализ результатов разных режимов, чтобы модуль выбора режима мог выбрать нужный режим для разных видеоблоков.
[0087] Возвращаясь к фиг. 2, после того как модуль 32 кодирования с прогнозированием выводит блок прогнозирования и сумматор 48 вычитает блок прогнозирования из кодируемого видеоблока для генерации остаточного блока остаточных пиксельных значений, модуль 38 преобразования применяет преобразование к остаточному блоку. Преобразование может содержать дискретное косинусное преобразование (DCT) или принципиально аналогичное преобразование, например, заданное стандартом ITU H.264 или стандартом HEVC. Так называемые структуры “бабочка” можно задавать для осуществления преобразований, или также можно использовать матричное умножение. В некоторых примерах, согласующихся со стандартом HEVC, размер преобразования может изменяться для разных CU, например, в зависимости от уровня разбиения, которое осуществляется по отношению к данной LCU. Единицы преобразования (TU) можно задавать для установления размера преобразования, применяемого модулем 38 преобразования. Также можно использовать вейвлетные преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. В любом случае, модуль 38 преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование, в целом, может преобразовывать остаточную информацию из пиксельной области в частотную область.
[0088] Затем модуль 40 квантования квантует остаточные коэффициенты преобразования для дополнительного снижения битовой скорости. Модуль 40 квантования, например, может ограничивать количество битов, используемых для кодирования каждого из коэффициентов. В частности, модуль 40 квантования может применять дельта QP, заданную для LCU, для задания уровня квантования, подлежащего применению (например, комбинируя дельта QP с QP предыдущей LCU или некоторыми другими известными QP). После осуществления квантования на остаточных выборках, модуль 46 статистического кодирования может сканировать и статистически кодировать данные.
[0089] CAVLC является одним типом метода статистического кодирования, поддерживаемого стандартом ITU H.264 и перспективным стандартом HEVC, который может применяться на векторизованной основе модулем 46 статистического кодирования. CAVLC использует таблицы кодирования с переменной длиной слова (VLC) таким образом, чтобы эффективно сжимать сериализованные “слова” коэффициентов и/или элементов синтаксиса. CABAC является другим типом метода статистического кодирования, поддерживаемого стандартом ITU H.264 или стандартом HEVC, который может применяться на векторизованной основе модулем 46 статистического кодирования. CABAC могут предусматривать несколько стадий, включающих в себя бинаризацию, выбор контекстной модели и двоичное арифметическое кодирование. В этом случае, модуль 46 статистического кодирования кодирует коэффициенты и элементы синтаксиса согласно CABAC. Существуют также многие другие типы методов статистического кодирования, и в будущем, вероятно, появятся новые методы статистического кодирования. Это раскрытие не ограничивается никаким конкретным методом статистического кодирования.
[0090] После осуществления статистического кодирования модулем 46 статистического кодирования, кодированный видеосигнал может передаваться на другое устройство или архивироваться для последующей передачи или извлечения. Кодированный видеосигнал может содержать статистически кодированные векторы и различную синтаксическую информацию. Такая информация может использоваться декодером для правильного конфигурирования процесса декодирования. Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для реконструкции остаточного блока в пиксельной области. Сумматор 51 суммирует реконструированный остаточный блок с блоком прогнозирования, созданным модулем 32 кодирования с прогнозированием, для создания реконструированного видеоблока для сохранения в памяти 34. Память 34 может включать в себя буфер декодированных изображений, и реконструированные видеоблоки могут формировать декодированное изображение. Однако до такого сохранения, модуль 47 фильтрации может применять фильтрацию к видеоблоку для повышения качества видео. Фильтрация, применяемая модулем 47 фильтрации, может снижать артефакты и сглаживать границы пикселей. Кроме того, фильтрация может повышать сжатие за счет генерации прогностических видеоблоков, которые содержат хорошие совпадения с кодируемыми видеоблоками.
[0091] На фиг. 3 показана блок-схема операций, демонстрирующая пример метода для кодирования видеоданных, который может осуществляться видеокодером 22 или видеокодером 50. Видеокодер 20 или видеокодер 50 может определять размер наименьшей единицы кодирования для каждого из множества изображений, задающего видеопоследовательность (302). В ряде случаев, размер наименьшей единицы кодирования можно выбирать из множества возможных размеров единиц кодирования. Например, наименьшая единица кодирования может представлять собой один из 4×4, 8×8, 16×16, 32×32 или 64×64, где 64×64 - максимально возможный размер единицы кодирования. Видеокодер 20 или видеокодер 50 может определять размер выровненной единицы кодирования для видеопоследовательности из определенных наименьших единиц кодирования (304). Видеокодер 20 или видеокодер 50 может определять размер выровненной единицы кодирования на основании вышеописанных методов. Видеокодер 20 или видеокодер 50 определяют размер изображения, связанного с видеопоследовательностью, причем размер изображения, связанного с видеопоследовательностью, кратен значению размера выровненной единицы кодирования (306). В ряде случаев размер изображения, связанного с видеопоследовательностью, может быть равен размеру изображения для декодированного изображения, хранящегося в буфере декодированных изображений. Видеокодер 20 или видеокодер 50 может сигнализировать значение размера выровненной единицы кодирования в информации синтаксиса уровня последовательностей (308).
[0092] На фиг. 4 показана блок-схема, демонстрирующая пример видеодекодера 60, который декодирует видеопоследовательность, которая кодируется описанным здесь способом. Методы этого раскрытия могут осуществляться видеодекодером 60 в некоторых примерах. Видеодекодер 60 может быть выполнен с возможностью получать кодированную видеопоследовательность, включающую в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования. Кроме того, видеодекодер 60 может быть выполнен с возможностью получать размер изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования и второго размера единицы кодирования. Кроме того, видеодекодер 60 может быть выполнен с возможностью сохранять декодированное изображение в буфере декодированных изображений.
[0093] Видеодекодер 60 включает в себя модуль 52 статистического декодирования, который осуществляет функцию декодирования, обратную кодированию, осуществляемому модулем 46 статистического кодирования, показанным на фиг. 2. В частности, модуль 52 статистического декодирования может осуществлять декодирование CAVLC или CABAC или любой другой тип статистического декодирования, используемого видеокодером 50. Видеодекодер 60 также включает в себя модуль 54 декодирования с прогнозированием, модуль 56 обратного квантования, модуль 58 обратного преобразования, память 62 и сумматор 64. В частности, наподобие видеокодера 50, видеодекодер 60 включает в себя модуль 54 декодирования с прогнозированием и модуль 57 фильтрации. Модуль 54 декодирования с прогнозированием видеодекодера 60 может включать в себя модуль 86 компенсации движения, который декодирует внутренне кодированные блоки и, возможно, включает в себя один или более интерполяционных фильтров для внутрипиксельной интерполяции в процессе компенсации движения. Модуль 54 декодирования с прогнозированием также может включать в себя модуль внутреннего прогнозирования для внутренних режимов декодирования. Модуль 54 декодирования с прогнозированием может поддерживать множество режимов 35. Модуль 57 фильтрации может фильтровать выходной сигнал сумматора 64 и может принимать статистически декодированную информацию фильтра для задания коэффициентов фильтрации, применяемых в циклической фильтрации.
[0094] Приняв кодированные видеоданные, модуль 52 статистического декодирования осуществляет декодирование, обратное кодированию, осуществляемому модулем 46 статистического кодирования (кодера 50 на фиг. 2). На декодере модуль 52 статистического декодирования анализирует битовый поток для определения LCU и соответствующего разбиения, связанного с LCU. В некоторых примерах, LCU или CU из LCU может(гут) задавать режимы кодирования, которые использовались, и эти режимы кодирования могут включать в себя режим слияния с двойным прогнозированием. Соответственно, модуль 52 статистического декодирования может пересылать на единицу прогнозирования синтаксическую информацию, которая идентифицирует режим слияния с двойным прогнозированием. Память 62 может включать в себя буфер декодированных изображений. В буфере декодированных изображений может храниться декодированное изображение. Декодированное изображение может быть связано с видеопоследовательностями, будучи изображением, на которое ссылается декодер в ходе декодирования с прогнозированием. Синтаксическая информация может использоваться видеодекодером 60 для определения размера декодированного изображения, подлежащего сохранению в буфере декодированных изображений согласно описанным здесь методам.
[0095] На фиг. 5 показана блок-схема операций, демонстрирующая пример метода для декодирования видеоданных, который может осуществляться видеодекодером 28 или видеодекодером 60. Видеодекодер 28 или видеодекодер 60 может получать кодированную видеопоследовательность, включающую в себя первое изображение, кодированное с использованием первого размера наименьшей единицы кодирования, и второе изображение, кодированное с использованием второго размера наименьшей единицы кодирования (502). В одном примере, первое изображение можно кодировать с использованием размера наименьшей единицы кодирования 4×4, и второе изображение можно кодировать с использованием размера наименьшей единицы кодирования 8×8. Видеодекодер 28 или видеодекодер 60 может получать размер изображения для декодированного изображения, подлежащего сохранению в буфере декодированных изображений, причем размер изображения кратен одному из первого размера единицы кодирования, второго размера единицы кодирования или максимального размера единицы кодирования (504). В одном примере, размер изображения может составлять 1920×1080. Видеодекодер 28 или видеодекодер 60 может сохранять декодированное изображение в буфере декодированных изображений (506). Кроме того, видеодекодер 28 или видеодекодер 60 может определять, является ли битовый поток, включающий в себя видеопоследовательность, согласованным битовым потоком, на основании того, кратен ли полученный размер изображения размеру выровненной единицы кодирования.
[0096] В одном или более примерах, описанные функции могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Будучи реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода на машиночитаемом носителе и выполняться аппаратным блоком обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствует вещественному носителю, например носителям данных или средам связи, включающим в себя любую среду, которая облегчает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем случае, могут соответствовать (1) вещественным машиночитаемым носителям данных, которые являются неизменяемыми, или (2) среде связи, например сигналу или несущей волне. Носителями данных могут быть любые доступные носители, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0097] В порядке примера, но не ограничения, такие машиночитаемые носители данных могут содержать ОЗУ, ПЗУ, ЭСППЗУ, CD-ROM или другое хранилище на основе оптического диска, хранилище на основе магнитного диска или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который можно использовать для хранения нужного программного кода в форме инструкций или структур данных, к которым может обращаться компьютер. Также любое соединение уместно именовать машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например инфракрасных, радиочастотных и микроволновых, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например инфракрасные, радиочастотные и микроволновые, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители данных и среды не включают в себя соединения, несущие волны, сигналы или другие изменяемые среды, но вместо этого означают неизменяемые, вещественные носители данных. Используемый здесь термин диск, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и диск Blu-ray, где диски обычно воспроизводят данные магнитными средствами, тогда как диски воспроизводят данные оптическими средствами с помощью лазеров. Комбинации вышеописанных устройств также подлежат включению в объем определения машиночитаемых носителей.
[0098] Инструкции могут выполняться одним или более процессорами, например одним или более цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), вентильными матрицами, программируемыми пользователем (FPGA) или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно, термин “процессор”, используемый здесь, может означать любую из вышеупомянутой структуры или любой другой структуры, подходящей для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функциональные возможности могут быть обеспечены в специализированных аппаратных и/или программных модулях, выполненных с возможностью кодирования и декодирования, или внедрены в комбинированный кодек. Также методы можно полностью реализовать в одной или более схемах или логических элементах.
[0099] Методы этого раскрытия можно реализовать в разнообразных приспособлениях или устройствах, включающих в себя беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, чипсет). Различные компоненты, модули или блоки описаны в этом раскрытии для подчеркивания функциональных аспектов устройств, выполненных с возможностью осуществления раскрытых методов, но не обязательно требуют реализации разными аппаратными блоками. Напротив, как описано выше, различные блоки могут объединяться в аппаратном блоке кодека или обеспечиваться совокупностью взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с подходящим программным обеспечением и/или программно-аппаратным обеспечением.
[0100] Были описаны различные аспекты раскрытия. Эти и другие аспекты находятся в объеме нижеследующей формулы изобретения.