Способ и устройство для кодирования видеоинформации
METHOD AND APPARATUS FOR ENCODING VIDEO

Область техники
Настоящее изобретение относится, в общем, к устройству, способу и компьютерному программному продукту для кодирования и декодирования видеоинформации.
Предпосылки создания изобретения
Данный раздел предназначен для описания предпосылок к созданию изобретения, охарактеризованного в формуле изобретения. Описание данного раздела может включать идеи, которые могли быть реализованы, но не обязательно те идеи, которые уже были предложены или разработаны ранее. Таким образом, если не указано иное, информация, представленная в данном разделе не является описанием уровня техники для предлагаемого изобретения и не признается таковой вследствие включения в данный раздел.
Как правило, в стандартах кодирования аудио- и видеоинформации определены «профили» и «уровни». «Профилем» может называться подмножество алгоритмических характеристик стандарта, а «уровнем» может называться набор предельных значений параметров кодирования, которые налагают ряд ограничений на потребление ресурсов декодером. Указание профиля и уровня может использоваться для сигнализации информации о свойствах потока мультимедийной информации, а также для сигнализации информации о возможностях декодера мультимедийной информации.
Во многих стандартах видеокодирования синтаксические структуры могут быть организованы в различные уровни, при этом уровень может быть определен как набор синтаксических структур в неразветвленной иерархии. Как правило, верхние уровни могут содержать нижние уровни. Уровни кодирования могут включать, например, уровни кодированной видеопоследовательности, уровни изображения, уровни слайсов и уровни блоков древовидной структуры. В некоторых стандартах видеокодирования введена концепция «набора параметров». Пример набора параметров может включать изображение в целом, группу изображений (group of pictures, GOP) и данные уровня последовательности, такие как размер изображения, окно отображения, использованные опциональные режимы кодирования, карту распределения макроблоков и др. Каждый экземпляр набора параметров может включать уникальный идентификатор. Каждый заголовок слайса может включать ссылку на идентификатор набора параметров, при этом значения параметров в наборе параметров, на который осуществляется ссылка, могут быть использованы при декодировании слайса. Наборы параметров могут быть использованы для развязки порядка передачи и порядка декодирования нечасто меняющихся изображений, групп GOP и данных уровня последовательности из последовательности, а также границ изображения. Наборы параметров могут передаваться отдельно от данных с использованием надежного протокола передачи при условии, если они декодируются до того, как на них будет осуществлена ссылка. Если наборы параметров передаются вместе с данными, они могут повторяться несколько раз для повышения устойчивости к ошибкам по сравнению с традиционными схемами видеокодирования. Наборы параметров могут передаваться во время установления сеанса. Однако в некоторых системах, как правило, широковещательных системах, надежная передача наборов параметров отдельно от данных не может быть осуществлена, поэтому наборы параметров передают вместе с данными в NAL-блоках набора параметров.
Сущность изобретения
В соответствии с примерами осуществления настоящего изобретения предлагаются способ, устройство и компьютерный программный продукт, которые допускают взятие значений некоторых параметров или синтаксических элементов, таких как параметры HRD и/или указатель на уровень, из синтаксической структуры, такой как набор параметров последовательности. Значения некоторых параметров или синтаксических элементов, таких как параметры HRD и/или указатель на уровень, могут браться из синтаксической структуры другого уровня, например, из самого верхнего уровня, присутствующего в блоке доступа, кодированной видеопоследовательности и/или битовом потоке, даже если этот другой уровень, например, самый верхний уровень, не декодируется. Значения синтаксических элементов из этого другого уровня, например, из самого верхнего уровня, могут быть семантически корректными и могут использоваться для проверки соответствия стандарту, тогда как значения соответствующих синтаксических элементов из других соответствующих синтаксических структур, например наборов параметров последовательности, могут быть активными или корректными в противном случае.
В одном из вариантов осуществления настоящего изобретения предлагается способ, который включает формирование, с помощью процессора, двух или более уровней масштабируемости масштабируемого потока данных. Каждый из упомянутых двух или более уровней масштабируемости может иметь отличающееся свойство кодирования, может быть связан с идентификатором уровня масштабируемости и характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры гипотетического опорного декодера (HRD). В способе согласно данному варианту осуществления настоящего изобретения также вставляют значение идентификатора первого уровня масштабируемости в первый элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. В упомянутом способе может также обеспечиваться сигнализация первого из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов в первом элементарном блоке набора параметров таким образом, что упомянутый первый элементарный блок набора параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. В способе согласно данному варианту осуществления настоящего изобретения также вставляют значение идентификатора первого уровня масштабируемости в первый элементарный блок набора параметров, а также вставляют значение идентификатора второго уровня масштабируемости во второй элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. В способе согласно данному варианту осуществления настоящего изобретения может также обеспечиваться сигнализация второго из упомянутых двух или более уровней масштабируемости с использованием упомянутых первого и второго наборов синтаксических элементов во втором элементарном блоке набора параметров таким образом, что упомянутый второй элементарный блок набора параметров может быть прочитан декодером для определения значений упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. В упомянутом способе может также выполняться вставка значения идентификатора упомянутого второго уровня масштабируемости в упомянутый второй элементарный блок набора параметров.
В данном варианте осуществления настоящего изобретения значения первого набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров являются действительными в случае, когда упомянутый первый элементарный блок обрабатывают, а упомянутый второй элементарный блок игнорируют или удаляют. Дополнительно, значения второго набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывают, а упомянутый второй элементарный блок удаляют. Значения первого набора синтаксических элементов в упомянутом втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок обрабатывают, и значения второго набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок игнорируют или обрабатывают.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, содержащее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для формирования двух или более уровней масштабируемости масштабируемого потока данных. Каждый из упомянутых двух или более уровней масштабируемости может иметь отличающееся свойство кодирования, может быть связан с идентификатором уровня масштабируемости и характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры гипотетического опорного декодера (HRD). Упомянутые память и компьютерный программный код сконфигурированы также для обеспечения, с использованием упомянутого по меньшей мере одного процессора, вставки упомянутым устройством первого значения идентификатора уровня масштабируемости в первый элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. Упомянутые память и компьютерный программный код могут быть также сконфигурированы для обеспечения, с использованием упомянутого по меньшей мере одного процессора, сигнализации первого из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов в первом элементарном блоке набора параметров таким образом, что упомянутый первый элементарный блок набора параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Упомянутые память и компьютерный программный код могут быть сконфигурированы для обеспечения, с использованием упомянутого по меньшей мере одного процессора, вставки упомянутым устройством первого значения идентификатора уровня масштабируемости в первый элементарный блок набора параметров и вставки значения второго идентификатора уровня масштабируемости во второй элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. Упомянутые память и компьютерный программный код сконфигурированы также для обеспечения, с использованием упомянутого по меньшей мере одного процессора, сигнализации, с помощью упомянутого устройства, второго из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов во втором элементарном блоке набора параметров таким образом, что упомянутый второй элементарный блок набора параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Упомянутые память и компьютерный программный код могут быть также сконфигурированы для обеспечения, с использованием упомянутого по меньшей мере одного процессора, вставки упомянутым устройством значения идентификатора второго уровня масштабируемости во второй элементарный блок набора параметров.
В данном варианте осуществления настоящего изобретения значения первого набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров являются действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а упомянутый второй элементарный блок игнорируется или удаляется. Дополнительно, значения второго набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а второй элементарный блок удаляется. Значения первого набора синтаксических элементов в упомянутом втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок обрабатывается, и значения второго набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок игнорируется или обрабатывается.
В еще одном из вариантов осуществления настоящего изобретения предлагается компьютерный программный продукт, включающий по меньшей мере один машиночитаемый носитель, на котором хранятся фрагменты исполняемого программного кода, при этом упомянутые фрагменты исполняемого программного кода включают инструкции программного кода для формирования двух или более уровней масштабируемости масштабируемого потока данных. Каждый из упомянутых двух или более уровней масштабируемости может иметь отличающееся свойство кодирования, может быть связан с идентификатором уровня масштабируемости и характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры гипотетического опорного декодера (HRD). Упомянутые фрагменты исполняемого программного кода в одном из вариантов осуществления настоящего изобретения могут также включать инструкции программного кода для вставки значения идентификатора первого уровня масштабируемости в первый элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. Упомянутые фрагменты исполняемого программного кода в одном из вариантов осуществления настоящего изобретения могут также включать инструкции программного кода для обеспечения сигнализации первого из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов в первом элементарном блоке набора параметров таким образом, что упомянутый первый элементарный блок набора параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Упомянутые фрагменты исполняемого программного кода в одном из вариантов осуществления настоящего изобретения могут также включать инструкции программного кода для вставки значения идентификатора первого уровня масштабируемости в упомянутый первый элементарный блок набора параметров и для вставки значения идентификатора второго уровня масштабируемости в упомянутый второй элементарный блок набора параметров, включающий данные из первого из двух или более уровней масштабируемости. Упомянутые фрагменты исполняемого программного кода в одном из вариантов осуществления настоящего изобретения могут также включать инструкции программного кода для сигнализации второго из упомянутых двух или более уровней масштабируемости с использованием упомянутых первого и второго наборов синтаксических элементов во втором элементарном блоке набора параметров таким образом, что упомянутый второй элементарный блок набора параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Упомянутые фрагменты исполняемого программного кода в одном из вариантов осуществления настоящего изобретения могут также включать инструкции программного кода для вставки значения идентификатора второго уровня масштабируемости в упомянутый второй элементарный блок набора параметров.
В данном варианте осуществления настоящего изобретения значения первого набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров являются действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а второй элементарный блок игнорируется или удаляется. Дополнительно, значения второго набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а упомянутый второй элементарный блок удаляется. Значения первого набора синтаксических элементов в упомянутом втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок обрабатывается, и значения второго набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок игнорируется или обрабатывается.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, которое содержит средства для формирования двух или более уровней масштабируемости масштабируемого потока данных. Каждый из упомянутых двух или более уровней масштабируемости может иметь отличающееся свойство кодирования, может быть связан с идентификатором уровня масштабируемости и характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры гипотетического опорного декодера (HRD). Устройство согласно данному варианту осуществления настоящего изобретения содержит также средства для вставки значения идентификатора первого уровня масштабируемости в первый элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. Упомянутое устройство может также содержать средства для обеспечения сигнализации первого из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов в первом элементарном блоке набора параметров таким образом, что упомянутый первый элементарный блок набора параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Устройство согласно данному варианту осуществления настоящего изобретения содержит также средства для вставки значения идентификатора первого уровня масштабируемости в упомянутый первый элементарный блок набора параметров, а также средства для вставки значения идентификатора второго уровня масштабируемости в упомянутый второй элементарный блок, включающий данные из первого из двух или более уровней масштабируемости. Устройство согласно данному варианту осуществления настоящего изобретения содержит также средства для обеспечения сигнализации второго из упомянутых двух или более уровней масштабируемости с использованием упомянутых первого и второго наборов синтаксических элементов во втором элементарном блоке набора параметров таким образом, что упомянутый второй элементарный блок набора параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Упомянутое устройство может также содержать средства для вставки значения идентификатора упомянутого второго уровня масштабируемости в упомянутый второй элементарный блок набора параметров.
В данном варианте осуществления настоящего изобретения значения первого набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров являются действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а упомянутый второй элементарный блок игнорируется или удаляется. Дополнительно, значения второго набора синтаксических элементов в упомянутом первом элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывается, а упомянутый второй элементарный блок удаляется. Значения первого набора синтаксических элементов в упомянутом втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок обрабатывается, и значения второго набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок игнорируется или обрабатывается.
В одном из вариантов осуществления настоящего изобретения предлагается способ, который включает прием первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется первым набором синтаксических элементов, включающим по меньшей мере профиль, и вторым набором синтаксических элементов, включающим уровень и/или параметры гипотетического опорного декодера (HRD). Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из упомянутых двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться в первом элементарном блоке набора параметров для первого из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Упомянутый первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что второй набор параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Способ согласно данному варианту осуществления настоящего изобретения может также включать удаление, с использованием процессора, упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, которое содержит по меньшей мере один процессор и по меньшей мере одну память, включающую компьютерный программный код, при этом упомянутые память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения приема упомянутым устройством первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие разные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется первым набором синтаксических элементов, включающим по меньшей мере профиль, и вторым набором синтаксических элементов, включающим уровень и/или параметры гипотетического опорного декодера (HRD). Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из упомянутых двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться в первом элементарном блоке набора параметров для первого из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Упомянутый первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что второй набор параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Устройство согласно данному варианту осуществления настоящего изобретения может также содержать память и компьютерный программный код, сконфигурированные для обеспечения, с помощью по меньшей мере одного процессора, удаления упомянутым устройством упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается компьютерный программный продукт, включающий по меньшей мере один машиночитаемый носитель, на котором хранятся фрагменты исполняемого программного кода, при этом упомянутые фрагменты исполняемого программного кода включают инструкции программного кода для приема первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется первым набором синтаксических элементов, включающим по меньшей мере профиль, и вторым набором синтаксических элементов, включающим уровень и/или параметры гипотетического опорного декодера (HRD). Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из упомянутых двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться в первом элементарном блоке набора параметров для первого из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Упомянутый первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что второй набор параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Упомянутые фрагменты исполняемого программного кода согласно данному варианту осуществления настоящего изобретения могут также включать инструкции программного кода для удаления упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, которое содержит средства для приема первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется первым набором синтаксических элементов, включающим по меньшей мере профиль, и вторым набором синтаксических элементов, включающим уровень и/или параметры гипотетического опорного декодера (HRD). Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из упомянутых двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться в первом элементарном блоке набора параметров для первого из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Упомянутый первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что второй набор параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Устройство согласно данному варианту осуществления настоящего изобретения может также содержать средства для удаления упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости.
В одном из вариантов осуществления настоящего изобретения предлагается способ, который включает прием первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется свойством кодирования. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из двух или более уровней масштабируемости. Первый из упомянутых двух или более уровней масштабируемости со свойствами декодирования сигнализируется в первом элементарном блоке набора параметров таким образом, что упомянутое свойство кодирования может быть прочитано декодером для определения этого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Способ согласно данному варианту осуществления настоящего изобретения может также включать прием набора значений идентификаторов уровней масштабируемости, указывающих на декодируемые уровни масштабируемости, и удаление, с использованием упомянутого процессора, упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из принятого первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости, которое не находится среди упомянутого набора значений идентификаторов уровней масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, которое содержит по меньшей мере один процессор и по меньшей мере одну память, включающую компьютерный программный код, при этом упомянутые память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения приема упомянутым устройством первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется свойством кодирования. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из двух или более уровней масштабируемости. Первый из упомянутых двух или более уровней масштабируемости со свойствами декодирования сигнализируются в первом элементарном блоке набора параметров таким образом, что упомянутое свойство кодирования может быть прочитано декодером для определения этого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Упомянутые память и компьютерный программный код могут также быть сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, приема упомянутым устройством набора значений идентификаторов уровней масштабируемости, указывающих на декодируемые уровни масштабируемости, и удаления упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из принятого первого масштабируемого потока данных на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости, которое не находится среди упомянутого набора значений идентификаторов уровней масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается компьютерный программный продукт, включающий по меньшей мере один машиночитаемый носитель, на котором хранятся фрагменты исполняемого программного кода, при этом упомянутые фрагменты исполняемого программного кода включают инструкции программного кода для приема первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется свойством кодирования. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из двух или более уровней масштабируемости. Первый из упомянутых двух или более уровней масштабируемости со свойствами декодирования сигнализируется в первом элементарном блоке набора параметров таким образом, что упомянутое свойство кодирования может быть прочитано декодером для определения этого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Упомянутые фрагменты исполняемого программного кода могут также включать инструкции программного кода для приема набора значений идентификаторов уровней масштабируемости, указывающих на декодируемые уровни масштабируемости, и инструкции программного кода для удаления упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из принятого первого масштабируемого потока на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости, которое не находится среди упомянутого набора значений идентификаторов уровней масштабируемости.
В еще одном из вариантов осуществления настоящего изобретения предлагается устройство, которое содержит средства для приема первого масштабируемого потока данных, включающего уровни масштабируемости, имеющие различные свойства кодирования. Каждый из упомянутых двух или более уровней масштабируемости связан с идентификатором уровня масштабируемости и характеризуется свойством кодирования. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из двух или более уровней масштабируемости. Первый из упомянутых двух или более уровней масштабируемости со свойствами декодирования сигнализируется в первом элементарном блоке набора параметров таким образом, что упомянутое свойство кодирования может быть прочитано декодером для определения этого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. Упомянутое устройство может также содержать средства для приема набора значений идентификаторов уровней масштабируемости, указывающих на декодируемые уровни масштабируемости, и средства для удаления упомянутого второго элементарного блока и упомянутого второго элементарного блока набора параметров из принятого первого масштабируемого потока на основе того, что упомянутый второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора упомянутого второго уровня масштабируемости, которое не находится среди упомянутого набора значений идентификаторов уровней масштабируемости.
Краткое описание чертежей
Для более полного понимания примеров осуществления настоящего изобретения последующее описание приведено со ссылками на приложенные чертежи.
На фиг. 1 показана схема электронного устройства, в котором применяются некоторые из вариантов осуществления настоящего изобретения.
На фиг. 2 показано пользовательское устройство, подходящее для применения некоторых из вариантов настоящего изобретения.
На фиг. 3 показаны соединенные с помощью проводных и беспроводных сетевых соединений электронные устройства, в которых применяются варианты осуществления настоящего изобретения.
На фиг. 4а показан один из вариантов осуществления настоящего изобретения в кодере.
На фиг. 4b показан пример осуществления устройства внутреннего предсказания в соответствии с некоторыми из вариантов осуществления настоящего изобретения.
На фиг. 5 показана упрощенная модель системы 3DV на основе DIBR.
На фиг. 6 показана упрощенная двумерная модель конфигурации стереоскопической камеры.
На фиг. 7 показан один из примеров определения блоков доступа и порядка их кодирования.
На фиг. 8 показана высокоуровневая блок-схема для одного из вариантов осуществления кодера, способного кодировать ракурсы текстуры и ракурсы глубины.
На фиг. 9 показана высокоуровневая блок-схема для одного из вариантов осуществления декодера, способного декодировать ракурсы текстуры и ракурсы глубины.
Фиг. 10-12 представляют собой блок-схемы, иллюстрирующие операции, выполняемые в соответствии с одним из примеров осуществления настоящего изобретения.
Подробное описание некоторых из примеров осуществления изобретения
Ниже более подробно описаны примеры осуществления настоящего изобретения со ссылками на приложенные чертежи, на которых показаны некоторые, но не все варианты осуществления настоящего изобретения. Изобретение может быть реализовано во многих разных формах и не ограничивается описываемыми вариантами его осуществления; эти варианты осуществления изобретения представлены для того, чтобы раскрытие изобретения удовлетворяло применимым законодательным требованиям. Одинаковыми номерами обозначены одинаковые элементы во всем описании. Используемые в описании термины «данные», «контент», «информация» и аналогичные термины являются взаимозаменяемыми и относятся к данным, которые можно передавать, принимать и/или хранить в соответствии с вариантами осуществления настоящего изобретения. Таким образом, использование этих терминов не ограничивает настоящее изобретение. Кроме того, используемый термин «схема» относится: (а) только к аппаратными реализациям схем (таким как реализации только на аналоговых и/или цифровых схемах); (b) к комбинациям схем и компьютерного программного продукта (компьютерных программных продуктов), включающего (включающих) команды программного обеспечения и/или встроенного программного обеспечения, которые хранятся в одном или более машиночитаемых запоминающих устройствах, которые работают совместно таким образом, чтобы обеспечивать выполнение устройством одной или более из рассматриваемых здесь функций; (с) к схемам, таким как например, микропроцессор (микропроцессоры) или часть микропроцессора (микропроцессоров), для работы которых требуется программное обеспечение и/или встроенное программное обеспечение, даже если программное обеспечение и/или встроенное программное обеспечение физически не присутствуют. Такое определение термина «схема» относится к любому его использованию в данном описании, включая формулу изобретения. В другом примере термин «схема» включает также реализацию, включающую один или более процессоров и/или часть (части) процессоров и сопровождающее программное обеспечение и/или встроенное программное обеспечение. В другом примере термин «схема» включает, например, интегральную схему основной полосы частот или интегральную схему процессора приложений для мобильного телефона или аналогичную интегральную схему в сервере, устройстве сотовой сети, другом сетевом устройстве и/или другом компьютерном устройстве. Используемый в описании «машиночитаемый носитель информации», который относится к физической памяти (например, к энергозависимому или энергонезависимому запоминающему устройству), отличается от «машиночитаемой среды передачи», которая относится к электромагнитному сигналу.
Далее будут описаны некоторые варианты осуществления настоящего изобретения в контексте одной из систем видеокодирования. Однако следует отметить, что настоящее изобретение не ограничено этой конкретной системой. В действительности, различные варианты осуществления настоящего изобретения могут широко применяться в любой среде, где требуются усовершенствования процедуры обработки опорных изображений. Например, настоящее изобретение может применяться в таких системах видеокодирования как системы потоковой передачи данных, DVD-проигрыватели, приемники цифрового телевидения, персональные видеомагнитофоны, системы и компьютерные программы на персональных компьютерах, наладонных компьютерах и устройствах связи, а также такие сетевые элементы как транскодеры и облачные вычислительные системы, обрабатывающие видеоданные.
Стандарт H.264/AVC был разработан объединенной командой по видео (Joint Video Team, JVT) группы экспертов по видеокодированию (Video Coding Experts Group, VCEG) отдела стандартизации телекоммуникаций Международного союза электросвязи (International Telecommunication Union, ITU-T) и группой экспертов по движущимся изображениям (Moving Picture Experts Group, MPEG) Международной организации по стандартизации (International Organization for Standardization, ISO) / Международной электротехнической комиссии (International Electrotechnical Commission, IEC). Стандарт H.264/AVC был опубликован обеими родительскими организациями по стандартизации и получил наименование Рекомендации Н.264 ITU-T и Международного стандарта ISO/IEC 14496-10, известного также как улучшенное видеокодирование (Advanced Video Coding, AVC), MPEG-4, часть 10. Были выпущены несколько версий стандарта H.264/AVC, в которых добавлялись новые расширения или элементы в спецификацию. Эти расширения включают масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видеокодирование (Multiview Video Coding, MVC).
В настоящее время объединенной командой по видеокодированию (Joint Collaborative Team - Video Coding, JCT-VC) группы VCEG и MPEG ведется работа над проектом стандарта высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC).
В настоящем разделе приведены ключевые определения, описаны структура битового потока и структура кодирования, а также концепции стандартов H.264/AVC и HEVC в качестве примера видеокодера, декодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Часть ключевых определений, структур битового потока и кодирования, а также концепций стандарта H.264/AVC являются такими же, как в проекте стандарта HEVC, поэтому они описаны ниже совместно. Аспекты настоящего изобретения не ограничены стандартом H.264/AVC, напротив, данное описание приведено лишь в качестве возможной основы для частичной или полной реализации настоящего изобретения.
Аналогично многим предшествующим стандартам видеокодирования, в стандартах H.264/AVC и HEVC описаны синтаксис и семантика битового потока, а также процесс декодирования безошибочных битовых потоков. Процесс кодирования не определен, однако кодеры должны формировать битовые потоки, соответствующие стандарту. Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического опорного декодера (Hypothetical Reference Decoder, HRD). Стандарт включает инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании не является обязательным, при этом процесс декодирования для битовых потоков с ошибками не определен.
Может использоваться общая нотация арифметических операторов, логических операторов, операторов отношений, битовых операторов, операторов назначений и нотация диапазонов, например, определенная в стандарте H.264/AVC или в проекте стандарта HEVC. Кроме того, могут использоваться общие математические функции, например, определенные в стандарте H.264/AVC или проекте стандарта HEVC, и общий порядок предшествования и исполнения (слева направо или справа налево) операторов, например, определенные в стандарте H.264/AVC или в проекте стандарта HEVC.
В описании существующих стандартов, а также в описании примеров осуществления настоящего изобретения, синтаксическим элементом называется элемент данных, представленный в битовом потоке. Синтаксической структурой могут быть названы нуль или более синтаксических элементов, совместно находящихся в битовом потоке в заданном порядке. Для описания процедуры анализа синтаксических элементов могут использоваться следующие обозначения.
- b(8): байт из битовой строки с любой последовательностью битов (8 битов).
- se(v): синтаксический элемент, представляющий собой целое значение со знаком, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита.
- u(n): Целое без знака с использованием n битов. Если в синтаксической таблице n равно "v", то количество битов изменяется в зависимости от значения других синтаксических элементов. Процедура синтаксического разбора данного дескриптора определяется следующими n битами в битовом потоке, которые интерпретируются как двоичное представление целого числа без знака, старший бит которого идет первым.
- ue(v): синтаксический элемент, представляющий собой целое значение без знака, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита.
Битовая строка, кодированная методом экспоненциального кодирования Голомба, может быть преобразована в кодовое число, например, с использованием следующей таблицы:
Кодовое число, соответствующее битовой строке, кодированной методом экспоненциального кодирования Голомба, может быть преобразовано в se(v), например, с использованием следующей таблицы:
Синтаксические структуры, семантика синтаксических элементов и процедура декодирования могут быть определены следующим образом. Синтаксические элементы в битовом потоке обозначены жирным шрифтом. Каждый синтаксический элемент описан именем (строчные буквы с символами подчеркивания), опционально указаны его одна или две синтаксические категории и один или два дескриптора способа кодированного представления. Поведение процедуры декодирования определяется значением синтаксического элемента и значениями ранее декодированных синтаксических элементов. При использовании значения синтаксического элемента в синтаксических таблицах или в тексте, оно приводится обычным (то есть не жирным) шрифтом. В некоторых случаях в синтаксических таблицах могут использоваться значения других переменных, полученных на основе значений синтаксических элементов. Такие переменные приводятся в синтаксических таблицах или в тексте с наименованиями, состоящими из комбинации строчных и прописных букв без символов подчеркивания. Переменные, начинающиеся с прописной буквы, вычисляются для декодирования текущей синтаксической структуры и всех зависимых синтаксических структур. Переменные, начинающиеся с прописной буквы, могут быть использованы в процессе декодирования последующих синтаксических структур без упоминания исходной синтаксической структуры переменной. Переменные, начинающиеся со строчной буквы, используются только в контексте их вычисления. В некоторых случаях «мнемонические» наименования значений синтаксических элементов или переменных используются взаимозаменяемо с их численными значениями. Иногда «мнемонические» наименования используются без каких-либо соответствующих численных значений. Соответствие значений и наименований определено в тексте. Наименования формируются из одной или более групп букв, разделенных символом подчеркивания. Каждая группа начинается с прописной буквы и может содержать дополнительные прописные буквы.
Синтаксическая структура может быть определена с использованием следующих обозначений. Группа выражений, заключенная в круглые скобки, является составным выражением и функционально трактуется как одно выражение. Структура "while" задает проверку истинности условия и, пока условие истинно, задает вычисление выражения (или составного выражения) в цикле до тех пор, пока данное условие не перестанет быть истинным. Структура "do … while" подразумевает однократное вычисление выражения, после чего выполнение проверки истинности условия, и если условие истинно, то повторное вычисление выражения до тех пор, пока условие не перестанет быть истинным. Структура "if … else" подразумевает проверку истинности условия, и если условие истинно, то вычисление первичного выражения и, в противном случае, вычисление альтернативного выражения. Часть "else" данной структуры и связанное с ней альтернативное выражение опускается, если вычисление альтернативного выражения не требуется. Структура "for" подразумевает вычисление исходного выражения, после чего выполнение проверки истинности условия, и если условие истинно, то повторное вычисление первичного выражения, после которого идет следующее выражение, до тех пор, пока условие не перестанет быть истинным.
Профилем может быть названо подмножество синтаксиса всего битового потока, определенного стандартом или спецификацией декодирования/кодирования. В рамках ограничений, налагаемых синтаксисом заданного профиля, все еще можно требовать большого изменения рабочих характеристик кодеров и декодеров, в зависимости от значений, принимаемых синтаксическими элементами в битовом потоке, например, заданного размера декодируемых изображений. Во многих применениях реализация декодера, способного обрабатывать все гипотетически возможные синтаксические конструкции определенного профиля, не представляется ни практичной, ни экономичной. Для решения данной проблемы могут применяться уровни. Уровнем может быть назван заданный набор ограничений, налагаемых на значения синтаксических элементов в битовом потоке и переменных, определенных в стандарте или спецификации декодирования/кодирования. Такие ограничения могут быть простыми ограничениями, накладываемыми на значения. Альтернативно или дополнительно они могут принимать форму ограничений на арифметические комбинации значений (например, ширина изображения, умноженная на высоту изображения, умноженные на количество декодируемых в секунду изображений). Для уровней могут также использоваться другие средства задания ограничений. Некоторые из ограничений, заданных для уровня, могут относиться, например, к максимальному размеру изображения, максимальной битовой скорости и максимальной скорости передачи данных в блоках кодирования, например макроблоках, за единицу времени, например в секунду. Для всех профилей могут быть определены одинаковые наборы уровней. Например, для повышения совместимости терминалов, в которых реализованы различные профили, может быть предпочтительным, чтобы большинство или все аспекты, определяющие каждый из уровней, были общими для различных профилей.
Элементарной единицей для ввода в кодер H.264/AVC или HEVC и вывода из декодера H.264/AVC или HEVC является изображение. В стандартах H.264/AVC или HEVC изображение может представлять собой кадр или поле. Кадр, как правило, включает матрицу отсчетов яркости и соответствующих отсчетов цветности. Поле представляет собой набор чередующихся строк отсчетов кадра и может использоваться в качестве входных данных для кодера в случае, когда исходный сигнал является чересстрочным. Разрешение изображений цветности может быть пониженным, по сравнению с разрешением изображений яркости. Например, при схеме выборки отсчетов 4:2:0 пространственное разрешение изображений цветности будет равно половине разрешения изображений яркости по обеим координатным осям.
В стандарте H.264/AVC макроблок представляет собой блок размером 16×16 отсчетов яркости и соответствующие блоки отсчетов цветности. Например, при схеме выборки отсчетов 4:2:0 макроблок будет содержать один блок размером 8×8 отсчетов цветности для каждого компонента цветности. В стандарте H.264/AVC изображение разбивается на одну или более групп слайсов, при этом каждая группа слайсов содержит один или более слайсов. В стандарте H.264/AVC слайс включает целое число макроблоков, упорядоченных в порядке сканирования растра в данной группе слайсов.
В проекте стандарта HEVC видеоизображения разделяют на блоки кодирования (coding units, CU), покрывающие область изображения. Блок кодирования содержит один или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания отсчетов в блоке кодирования, а также один или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для отсчетов в блоке кодирования. Как правило, блок кодирования включает квадратный блок отсчетов, размер которого выбирается из заранее заданного набора допустимых размеров блока кодирования. Блок кодирования максимально допустимого размера, как правило, называется блоком LCU (наибольший блок кодирования), при этом видеоизображение разделяется на неперекрывающиеся блоки LCU. Блок LCU может быть разбит на комбинацию менее крупных блоков кодирования, например, с помощью рекурсивного разбиения блока LCU и полученных в результате блоков кодирования. Каждый полученный в результате блок кодирования может иметь связанные с ним по меньшей один блок предсказания и по меньшей мере один блок преобразования. Каждый блок предсказания и блок преобразования также могут быть разбиты на меньшие блоки предсказания и блоки преобразования для повышения степени разбиения в процедурах предсказания и кодирования ошибки предсказания, соответственно. Разбиение блока предсказания может быть реализовано как разбиение блока кодирования на четыре квадратных блока предсказания или на два прямоугольных блока предсказания по вертикали или по горизонтали, симметрично или несимметрично. Разделение изображения на блоки кодирования и разделение блоков кодирования на блоки предсказания и блоки преобразования передается, как правило, в битовом потоке, что позволяет декодеру воспроизводить заданную структуру этих блоков.
В проекте стандарта HEVC изображение может быть разбито на ячейки, которые имеют прямоугольную форму и содержат целое число блоков LCU. В проекте стандарта HEVC разбиение на ячейки дает регулярную сетку, в которой максимальная разность между высотой и шириной ячеек равна одному блоку LCU. В проекте стандарта HEVC слайс включает целое число блоков кодирования. Блоки кодирования сканируются в порядке сканирования растра LCU в ячейках или в изображении, если ячейки не используются. В блоке LCU блоки кодирования могут иметь заданный порядок сканирования.
В 5-ой редакции рабочего проекта (Working Draft 5, WD 5) стандарта HEVC некоторые из ключевых определений и концепций для разбиения изображения определены следующим образом. Разбиением называется разделение множества на подмножества таким образом, что каждый элемент множества находится только в одном из подмножеств.
Базовым блоком кодирования в редакции WD5 стандарта HEVC является блок древовидной структуры. Блок древовидной структуры представляет собой блок размером N×N отсчетов яркости и два соответствующих блока отсчетов цветности изображения, которое имеет три массива отсчетов, или блок размером N×N отсчетов монохромного изображения или изображения, кодируемого с использованием трех различных цветовых слоев. Блок древовидной структуры для различных процедур кодирования и декодирования может разбиваться на части. Разбиение блока древовидной структуры представляет собой блок отсчетов яркости и два соответствующих блока отсчетов цветности, полученные в результате разбиения блока древовидной структуры для изображения, которое имеет три массива отсчетов изображения, или блок отсчетов яркости, полученный в результате разбиения блока древовидной структуры для монохромного изображения или изображения, кодируемого с использованием трех отдельных цветовых слоев. Каждому древовидной структуры ставится в соответствие сигнализация разбиения, предназначенная для обозначения размеров блоков для внутреннего или внешнего предсказания, а также для кодирования с преобразованием. Разбиение в данном случае представляет собой рекурсивное разбиение с использованием квадрадерева. Корень квадрадерева ассоциирован с блоком древовидной структуры. Квадрадерево разбивается на части до тех пор, пока не будет достигнут лист дерева, который называют узлом кодирования. Узел кодирования является корневым узлом двух деревьев: дерева предсказания и дерева преобразования. Дерево предсказания определяет положение и размер блоков предсказания. Дерево предсказания и связанные с ним данные предсказания называются блоком предсказания. Дерево преобразования определяет положение и размер блоков преобразования. Дерево преобразования и связанные с ним данные преобразования называются блоком преобразования. Информация о разбиении для яркости и цветности является идентичной для дерева предсказания, при этом для дерева преобразования она может быть как одинаковой, так и различной. Узел кодирования, вместе со связанными с ним блоками предсказания и преобразования, образуют блок кодирования.
В редакции WD5 стандарта HEVC изображения разделяют на слайсы и ячейки. Слайс может представлять собой последовательность блоков древовидной структуры, но (в случае так называемого слайса с мелкой гранулярностью) может иметь также границу внутри блока древовидной структуры, в местоположении совмещения блока преобразования и блока предсказания. Блоки древовидной структуры внутри слайса кодируются и декодируются в порядке сканирования растра. Для первичного кодированного изображения деление каждого изображения на слайсы является разбиением.
В редакции WD5 стандарта HEVC ячейка определена как целое число блоков древовидной структуры, совместно расположенных в одном столбце и одной строке, упорядоченных в порядке сканирования растра в ячейке. Для первичного кодированного изображения деление изображения на ячейки является разбиением. Ячейки упорядочены в порядке сканирования растра в изображении. Слайс содержит блоки древовидной структуры кодирования, которые являются последовательными в порядке сканирования растра в ячейке и не обязательно являются последовательными в порядке сканирования растра в изображении. Слайсы и ячейки не обязательно содержат одинаковую последовательность блоков древовидной структуры. Ячейка может включать блоки древовидной структуры, содержащиеся более чем в одном слайсе. Аналогично, слайс может включать блоки древовидной структуры, содержащиеся в нескольких ячейках.
В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, использование слайсов можно считать способом деления кодированного изображения на независимо декодируемые части, и, следовательно, слайсы часто рассматриваются как элементарные единицы передачи. Во многих случаях кодеры могут указывать в битовом потоке на то, какие типы предсказания внутри изображения с переходом через границы слайсов запрещены, при этом декодер учитывает данную информацию, например, при определении доступных источников предсказания. Например, отсчеты из соседнего макроблока или блока кодирования могут считаться недоступными для внутреннего предсказания, если этот соседний макроблок или блок кодирования расположен в другом слайсе.
Элементарной единицей для вывода из кодера H.264/AVC или HEVC и для ввода в декодер H.264/AVC или HEVC, соответственно, является блок уровня сетевой абстракции (Network Abstraction Layer, NAL). Для передачи по сетям пакетной передачи данных или хранения в структурированных файлах NAL-блоки, как правило, инкапсулируются в пакеты или в аналогичные структуры. В стандарте H.264/AVC и HEVC для сред передачи или хранения, не поддерживающих структуру кадров, определен формат байтового потока. В формате байтового потока NAL-блоки отделяются друг от друга с помощью прикрепления стартового кода перед каждым NAL-блоком. Чтобы исключить ложное обнаружение границ NAL-блоков в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке NAL-блока, если в противном случае в ней будет присутствовать стартовый код. Для обеспечения прозрачного шлюзового взаимодействия между системами пакетной и потоковой передачи данных предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат байтового потока или нет.NAL-блок может быть определен как синтаксическая структура, содержащая указание на тип следующих данных и байты, содержащие эти данные в форме полезной нагрузки последовательности исходных байтов (raw byte sequence payload, RBSP), чередующиеся, при необходимости, с байтами предотвращения эмуляции. Полезная нагрузка RBSP может быть определена как синтаксическая структура, включающая целое число байтов и инкапсулированная в NAL-блоке. Полезная нагрузка RBSP может быть либо пустой, либо иметь форму строки информационных битов, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и нуль или более последующих битов, равных 0.
NAL-блоки включают заголовок и полезную нагрузку. В стандартах H.264/AVC и HEVC заголовок NAL-блока указывает на тип данного NAL-блока, а также на то, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения.
NAL-блок в стандарте H264/AVC включает двухбитный синтаксический элемент nal_ref_idc, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью неопорного изображения, и, если он больше 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью опорного изображения. Проект стандарта HEVC включает однобитный синтаксический элемент nal_ref_jdc, называемый также nal_ref_flag, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью неопорного изображения, и, если он равен 1, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью опорного изображения. Заголовок NAL-блоков расширений SVC и MVC может дополнительно содержать различные указания, связанные с масштабированием и многоракурсной иерархией.
В проекте стандарта HEVC для всех определенных типов NAL-блоков используется двухбайтный заголовок NAL-блока. Первый байт заголовка NAL-блока содержит один зарезервированный бит, однобитный индикатор nal_ref_flag, главным образом указывающий на то, является ли передаваемое в данном блоке доступа изображение опорным или неопорным, и шестибитный индикатор типа NAL-блока. Второй байт заголовка NAL-блока включает трехбитный индикатор temporal_id для временного уровня и пятибитное зарезервированное поле (называемое reserved_one_5bits), которое в проекте стандарта HEVC должно иметь значение, равное 1. Синтаксический элемент temporal_id можно считать временным идентификатором NAL-блока.
В проекте стандарта HEVC синтаксис NAL-блока определен следующим образом:
jd
Это пятибитное зарезервированное поле предназначено для использования расширениями, например, будущими расширениями масштабируемого или трехмерного видео. Подразумевается, что эти пять битов могут нести информацию об иерархии масштабирования, например, параметр quality_id или аналогичную информацию, параметр dependency_ или аналогичную информацию, или идентификатор уровня любого другого типа, порядковой номер ракурса или аналогичную информацию, идентификатор ракурса, идентификатор, аналогичный priority_id в стандарте SVC, указывающий на корректность выделения битового подпотока, если из битового потока удалены все NAL-блоки со значениями идентификаторов, превышающими заданное значение идентификатора. Без потери общности в некоторых примерах осуществления настоящего изобретения на основе значения reserved_one_5bits вычисляют переменную Layerld, например, следующим образом: Layerld=reserved_one_5bits - 1. Параметр reserved_one_5bits в расширениях масштабируемости стандарта HEVC может представлять собой идентификатор уровня, например, с использованием следующего синтаксиса.
NAL-блоки могут быть разделены на две категории: NAL-блоки уровня видеокодирования (Video Coning Layer, VCL) и NAL-блоки, не являющиеся блоками VCL. NAL-блоки VCL, как правило, представляют собой NAL-блоки кодированного слайса. В стандарте H.264/AVC NAL-блоки кодированного слайса содержат синтаксические элементы, представляющие собой один или более кодированных макроблоков, каждый из которых соответствует блоку отсчетов несжатого изображения. В стандарте HEVC NAL-блоки кодированного слайса содержат синтаксические элементы, представляющие собой один или более блоков кодирования. В стандартах H.264/AVC и HEVC может осуществляться указание на то, что NAL-блок кодированного слайса является кодированным слайсом изображения мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR) или кодированным слайсом изображения, не являющегося IDR-изображением. В стандарте HEVC может осуществляться указание на то, что NAL-блок кодированного слайса является кодированным слайсом изображения чистого обновления декодирования (Clean Decoding Refresh, CDR) или изображения с чистым произвольным доступом (Clean Random Access, CRA).
NAL-блок, не являющийся блоком VCL, может иметь, например, один из следующих типов: набор параметров последовательности, набор параметров изображения, NAL-блок дополнительной информации расширения (supplemental enhancement information, SEI), ограничитель блока доступа, NAL-блок конца последовательности, NAL-блок конца потока или NAL-блок данных заполнения. Набор параметров может быть необходим для восстановления декодированных изображений, при этом многие из остальных типов NAL-блоков, не являющихся блоками VCL, не являются необходимыми для восстановления декодированных значений отсчетов.
В набор параметров последовательности могут включаться параметры, которые остаются неизменными на протяжении всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы в процессе декодирования, набор параметров последовательности может опционально включать информацию по используемости видео (video usability information, VUI), включающую параметры, важные для буферизации, синхронизации вывода изображения, воспроизведения изображения и резервирования ресурсов. В стандарте H.264/AVC определены три типа NAL-блоков, несущих наборы параметров последовательности: NAL-блок набора параметров последовательности, содержащий все данные для NAL-блоков VCL стандарта H.264/AVC в последовательности, NAL-блок расширения набора параметров последовательности, содержащий данные вспомогательных кодированных изображений, и набор параметров последовательности подмножества для NAL-блоков VCL MVC и SVC. В проекте стандарта HEVC полезная нагрузка RBSP набора параметров последовательности включает параметры, на которые может ссылаться полезная нагрузка RBSP набора параметров изображения или один или более NAL-блоков SEI, содержащих SEI-сообщение с периодом буферизации. Набор параметров изображения содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений. Полезная нагрузка RBSP набора параметров изображения может включать параметры, на которые могут ссылаться NAL-блоки кодированного слайса одного или более кодированных изображений.
В проекте стандарта HEVC имеется также третий тип наборов параметров, который в настоящем документе называется набором параметров адаптации (Adaptation Parameter Set, APS) и включает параметры, которые с большой вероятностью остаются неизменными в нескольких кодированных слайсах, но способные изменяться, например, в каждом изображении или в каждых нескольких изображениях. В проекте стандарта HEVC синтаксическая структура набора APS содержит параметры или синтаксические элементы, относящиеся к матрицам квантования (quantization matrices, QM), адаптивному смещению отсчетов (adaptive sample offset, SAO), адаптивной петлевой фильтрации (adaptive loop filtering, ALF) и фильтрации для устранения блочности. В проекте стандарта HEVC APS-набор представляет собой NAL-блок и кодируется без ссылок на другие NAL-блоки и без предсказания на основе других NAL-блоков. В NAL-блок набора APS включают идентификатор, имеющий наименование синтаксического элемента aps_id, который включается в заголовок слайса для указания на конкретный набор APS. В другом проекте стандарта HEVC синтаксическая структура набора APS содержит только параметры ALF. В проекте стандарта HEVC полезная нагрузка RBSP набора параметров адаптации включает параметры, которые могут быть названы NAL-блоками кодированного слайса одного или более изображений, если флаг sample_adaptive_offset_enabled_flag и/или флаг adaptive_loop_filter enabled_flag равны 1.
В проекте стандарта HEVC имеется также четвертый тип набора параметров, который называется набором видеопараметров (video parameter set, VPS) и был предложен, например, в документе JCTVC-H0388 (http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wq11/JCTVC-H0388-v4.zip). Полезная нагрузка RBSP набора видеопараметров может включать параметры, на которые могут ссылаться одна или более полезных наргузок RBSP набора параметров последовательности.
Ниже описаны взаимосвязь и иерархия набора видеопараметров (VPS), набора параметров последовательности (SPS) и набора параметров изображения (SPS). Набор VPS расположен на один уровень выше набора SPS в иерархии наборов параметров и в контексте масштабируемости и/или 3DV. Набор VPS может включать параметры, являющиеся общими для всех слайсов во всех уровнях (масштабируемости или ракурсов) всей кодированной видеопоследовательности. Набор SPS включает параметры, являющиеся общими для всех слайсов на данном уровне (масштабируемости или ракурсов) всей кодированной видеопоследовательности, которые при этом могут быть также общими для нескольких уровней (масштабируемости или ракурсов). Набор PPS включает параметры, которые являются общими для всех слайсов в данном представлении уровня (представлении уровня масштабируемости или ракурса в одном блоке доступа) и которые с большой вероятностью являются общими для всех слайсов в нескольких представлениях уровня.
Набор VPS может предоставлять информацию об отношениях зависимости уровней в битовом потоке, а также много другой информации, применимой для всех слайсов во всех уровнях (масштабируемости или ракурсов) всей кодированной видеопоследовательности. В расширении масштабируемости стандарта HEVC набор VPS может включать, например, постановку в соответствие значения Layerld, полученного из заголовка NAL-блока, одному или более значениям размерности масштабируемости, например, соответствующим параметрам dependency_id, quality_id, view_id и depth_flag для уровня, определенным аналогично расширениям SVC и MVC. Набор VPS может включать информацию о применяемых профиле и уровне для одного или более уровней, а также о профиле и/или уровне стандарта для одного или более временных подуровней (состоящих из NAL-блоков VCL со значениями, меньшими или равными заданным значениям temporal_id) представления уровня.
Синтаксис стандартов H.264/AVC и HEVC допускает наличие множества экземпляров наборов параметров, при этом каждый экземпляр имеет уникальный идентификатор. Чтобы ограничить использование памяти, необходимой для наборов параметров, был ограничен диапазон значений для идентификаторов наборов параметров. В стандарте H.264/AVC и в проекте стандарта HEVC каждый заголовок слайса включает идентификатор набора параметров изображения, который является активным для декодирования изображения, содержащего этот слайс, при этом каждый набор параметров изображения содержит идентификатор активного набора параметров последовательности. В стандарте HEVC заголовок слайса дополнительно включает идентификатор набора APS. Следовательно, передача наборов параметров изображения и последовательности не обязательно должна быть точно синхронизирована с передачей слайсов. Напротив, достаточно, чтобы активные наборы параметров последовательности и изображения были приняты до момента осуществления ссылки на них, что позволяет передавать наборы параметров отдельно от данных с использованием более надежных механизмов передачи, по сравнению с протоколами, применяемыми для передачи данных слайсов. Например, наборы параметров могут включаться в качестве параметра в описание сеанса для сеансов транспортного протокола реального времени (Real-time Transport Protocol, RTP). Если наборы параметров передаются вместе с данными, то для повышения устойчивости к ошибкам они могут повторяться.
Наборы параметров могут активироваться с помощью ссылки из слайса или из другого активного набора параметров, или, в некоторых случаях, из другой синтаксической структуры, например, из сообщения SEI с периодом буферизации. Далее приведены не ограничивающие изобретение примеры активации наборов параметров в проекте стандарта HEVC.
Полезная нагрузка RBSP каждого набора параметров адаптации исходно считается неактивной в начале работы процедуры декодирования. Полезная нагрузка RBSP максимум одного набора параметров адаптации считается активной в любой заданный момент времени процедуры декодирования, при этом активация полезной нагрузки RBSP любого из набора параметров адаптации приводит к деактивации предыдущей активной полезной нагрузки RBSP набора параметров адаптации (если она имелась).
Когда полезная нагрузка RBSP набора параметров адаптации (с определенным значением aps_id) неактивна, и на нее осуществляется ссылка с помощью NAL-блока кодированного слайса (с использованием данного значения aps_id), то она становится активной. Полезная нагрузка RBSP набора параметров адаптации называется активной полезной нагрузкой RBSP набора параметров адаптации до тех пор, пока она не будет деактивирована с помощью активации полезной нагрузки RBSP другого набора параметров адаптации. Полезная нагрузка RBSP набора параметров адаптации с этим конкретным значением aps_id является доступной в процедуре декодирования до ее активации, при этом она включена по меньшей мере в один блок доступа с temporal_id, меньшим или равным temporal_id NAL-блока данного набора параметра адаптации, если только набор параметров адаптации не предоставляется с помощью внешних средств.
Полезная нагрузка RBSP каждого набора параметров изображения исходной считается неактивной в начале работы процедуры декодирования. Полезная нагрузка RBSP максимум одного набора параметров изображения считается активной в любой заданный момент времени процедуры декодирования, при этом активация полезной нагрузки RBSP любого из набора параметров изображения приводит к деактивации предыдущей активной полезной нагрузки RBSP набора параметров изображения (если она имелась).
Когда полезная нагрузка RBSP набора параметров изображения (с определенным значением pic_parameter_set_id) неактивна, и на нее осуществляется ссылка с помощью NAL-блока кодированного слайса или NAL-блока разбиения А кодированного слайса (с использованием этого значения pic_parameter_set_id), она становится активной. Полезная нагрузка RBSP набора параметров изображения называется активной полезной нагрузкой RBSP набора параметров изображения до тех пор, пока она не будет деактивирована с помощью активации полезной нагрузки RBSP другого набора параметров изображения. Полезная нагрузка RBSP набора параметров изображения с этим конкретным значением pic_parameter_set_id является доступной в процедуре декодирования до ее активации, при этом она включена по меньшей мере в один блок доступа с temporal_id, меньшим или равным temporal_id NAL-блока набора параметра изображения, если только набор параметров изображения не предоставляется с помощью внешних средств.
Полезная нагрузка RBSP каждого набора параметров последовательности исходно считается неактивной в начале работы процедуры декодирования. Полезная нагрузка RBSP максимум одного набора параметров последовательности считается активной в любой заданный момент времени процедуры декодирования, при этом активация полезной нагрузки RBSP любого из набора параметров последовательности приводит к деактивации предыдущей активной полезной нагрузки RBSP набора параметров последовательности (если она имелась).
Когда полезная нагрузка RBSP набора параметров последовательности (с конкретным значением seq_parameter_set_id) уже неактивна, и на нее осуществляется ссылка с помощью активации полезной нагрузки RBSP набора параметров изображения (с использованием этого значения seq_parameter_set_id) или ссылка с помощью NAL-блока SEI, содержащего сообщение SEI с периодом буферизации (с использованием этого значения seq_parameter_set_id), она становится активной. Полезная нагрузка RBSP этого набора параметров последовательности называется активной полезной нагрузкой RBSP набора параметров последовательности до тех пор, пока она не будет деактивирована с помощью активации полезной нагрузки RBSP другого набора параметров последовательности. Полезная нагрузка RBSP набора параметров последовательности с этим конкретным значением seq_parameter_set_id является доступной в процедуре декодирования до ее активации, при этом она включена по меньшей мере в один блок доступа с temporal_id, меньшим или равным 0, если только набор параметров последовательности не предоставляется с помощью внешних средств. Активированная полезная нагрузка RBSP набора параметров последовательности остается активной для всей кодированной видеопоследовательности.
Полезная нагрузка RBSP каждого набора видеопараметров исходно считается неактивной в начале работы процедуры декодирования. Полезная нагрузка RBSP максимум одного набора видеопараметров считается активной в любой заданный момент времени работы процедуры декодирования, при этом активация полезной нагрузки RBSP любого из набора видеопараметров приводит к деактивации предыдущей активной полезной нагрузки RBSP набора видеопараметров (если она имелась).
Когда полезная нагрузка RBSP набора видеопараметров (с конкретным значением video_parameter_set_id) уже неактивна, и на нее осуществляется ссылка с помощью активации RBSP набора параметров последовательности (с использованием этого значения video_parameter_set_id), она становится активной. Полезная нагрузка RBSP этого набора видеопараметров называется активной полезной нагрузкой RBSP набора видеопараметров до тех пор, пока она не будет деактивирована с помощью активации полезной нагрузки RBSP другого набора видеопараметров. Полезная нагрузка RBSP набора видеопараметров с этим конкретным значением video_parameter_set_id является доступной в процедуре декодирования до ее активации, при этом она включена по меньшей мере в один блок доступа с temporal_id, меньшим или равным 0, если только набор видеопараметров не предоставляется с помощью внешних средств. Активированная полезная нагрузка RBSP набора видеопараметров остается активной для всей кодированной видеопоследовательности.
В течение работы процедуры декодирования в проекте стандарта HEVC значения параметров активного набора видеопараметров, активного набора параметров последовательности, активной полезной нагрузки RBSP набора параметров изображения и активной полезной нагрузки RBSP набора параметров адаптации считаются действительными. Для интерпретации сообщений SEI значения параметров активного набора видеопараметров, активного набора параметров последовательности, активной полезной нагрузки RBSP набора параметров изображения и активной полезной нагрузки RBSP набора параметров адаптации считаются действительными в процедуре декодирования для NAL-блоков VCL кодированного изображения в одном блоке доступа, если только иное не указано в семантике сообщения SEI.
NAL-блок SEI содержит одно или более SEI-сообщений, которые не требуются для декодирования выходных изображений, но могут быть полезными в связанных с этим процедурах, например процедурах синхронизации вывода изображения, воспроизведения, обнаружения ошибок, маскирования ошибок и резервирования ресурсов. В стандартах H.264/AVC и HEVC определены несколько типов SEI-сообщений, при этом SEI-сообщения с пользовательскими данными позволяют организациям и компаниям определять SEI-сообщения для собственного использования. Стандарты H.264/AVC и HEVC содержат синтаксис и семантику сообщений SEI, однако процедура обработки сообщений на стороне приемника не определена. Следовательно, кодеры должны следовать стандарту H.264/AVC или HEVC при формировании SEI-сообщений, при этом от декодеров, отвечающих стандарту H.264/AVC или HEVC, не требуется обрабатывать SEI-сообщения так, чтобы обеспечивать соответствие порядка вывода. Одной из причин включения синтаксиса и семантики SEI-сообщений в стандарты H.264/AVC и HEVC является обеспечение идентичной интерпретации дополнительной информации в различных системных спецификациях и, следовательно, возможности их взаимодействия. Предполагается, что системные спецификации могут требовать применения конкретных SEI-сообщений как на стороне кодера, так и на стороне декодера, при этом может быть дополнительно определена процедура обработки конкретных SEI-сообщений на стороне приемника.
В стандарте H.264/AVC определены следующие типы NAL-блоков и их разделение на NAL-блоки VCL и NAL-блоки, не являющиеся блоками VCL.
В проекте стандарта HEVC определены следующие типы NAL-блоков и их разделение на NAL-блоки VCL и NAL-блоки, не являющиеся блоками VCL:
Кодированное изображение представляет собой кодированное представление изображения. Кодированное изображение в стандарте H.264/AVC включает NAL-блоки VCL, которые необходимы для декодирования изображения. В стандарте H.264/AVC кодированное изображение может быть либо первичным кодированным изображением, либо резервным кодированным изображением. Первичное кодированное изображение используется в процедуре декодирования безошибочных битовых потоков, тогда как резервное кодированное изображение является резервным представлением и декодируется только тогда, когда первичное кодированное изображение не может быть успешно декодировано. В проекте стандарта HEVC резервное кодированное изображение не определено.
В стандартах H.264/AVC и HEVC блок доступа включает первичное кодированное изображение и связанные с ним NAL-блоки. В стандарте H.264/AVC порядок появления NAL-блоков внутри блока доступа задан следующим образом. На начало блока доступа может указывать опциональный NAL-блок, являющийся ограничителем блока доступа. За ним следует нуль или более NAL-блоков SEI. Далее идут кодированные слайсы первичного кодированного изображения. В стандарте H.264/AVC после кодированных слайсов первичного кодированного изображения могут следовать кодированные слайсы нуля или более резервных кодированных изображений. Резервное кодированное изображение представляет собой кодированное представление изображения или части изображения. Резервное кодированное изображение может декодироваться, если первичное кодированное изображение не принято в декодере, например, в результате потерь при передаче или в результате ошибки в физическом носителе памяти.
В стандарте H.264/AVC блок доступа может также включать вспомогательное кодированное изображение, которое дополняет первичное кодированное изображение и может использоваться, например, в процедуре отображения. Вспомогательное кодированное изображение может, например, использоваться в качестве альфа-канала или альфа-плоскости, задающей уровень прозрачности отсчетов декодированных изображений. Альфа-канал или альфа-плоскость может использоваться в многоуровневой системе формирования или воспроизведения изображений, где выходное изображение образуется накладывающимися друг поверх друга частично прозрачными изображениями. Вспомогательное кодированное изображение имеет те же синтаксические и семантические ограничения, что и монохромное резервное кодированное изображение. В стандарте H.264/AVC вспомогательное кодированное изображение содержит то же количество макроблоков, что и первичное кодированное изображение.
Кодированная видеопоследовательность определена как ряд последовательных блоков доступа в порядке декодирования от блока доступа IDR, включая его, до следующего блока доступа IDR, не включая его, или до конца битового потока, в зависимости от того, что появится раньше.
Далее приведено определение и характеристики группы изображений (group of pictures, GOP). Группа GOP может быть декодирована независимо от того, были ли декодированы какие-либо предшествующие изображения или нет. Открытая группа изображений представляет собой такую группу изображений, в которой изображения, предшествующие исходному изображению с внутренним предсказанием в порядке вывода, могут быть декодированы некорректно, если декодирование начинается с исходного изображения с внутренним предсказанием открытой группы изображений. Другими словами, изображения открытой группы GOP могут ссылаться (для внешнего предсказания) на изображения из предшествующей группы GOP. Декодер стандарта H.264/AVC способен распознавать изображение с внутренним предсказанием в начале открытой группы GOP на основе SEI-сообщения в точке восстановления в битовом потоке стандарта H.264/AVC. Декодер, соответствующий стандарту HEVC, способен распознавать изображение с внутренним предсказанием в начале открытой группы GOP благодаря конкретному типу NAL-блоков, CRA, который используется для кодируемых слайсов этого изображения. Закрытая группа изображений представляет собой группу изображений, в которой все изображения могут быть декодированы корректно, если декодирование начинается с исходного изображения с внутренним предсказанием закрытой группы изображений. Другими словами, ни одно из изображений в закрытой группе GOP не ссылается на изображение из предшествующих групп GOP. В стандарте H.264/AVC закрытая группа GOP начинается с блока доступа IDR. В результате структура закрытой группы GOP имеет более высокий потенциал устойчивости к ошибкам, по сравнению со структурой открытой группы GOP, однако за счет возможного снижения эффективности сжатия. Структура кодирования с открытой группой GOP дает потенциально более эффективное сжатие благодаря большей гибкости при выборе опорных изображений.
Синтаксис битового потока стандарта H.264/AVC и HEVC указывает на то, является ли конкретное изображение опорным для внешнего предсказания другого изображения. Изображения с любым типом кодирования (I, Р, В, SB) в стандарте H.264/AVC и HEVC могут быть как опорными изображениями, так и неопорными изображениями. Заголовок NAL-блока указывает на тип данного NAL-блока, а также на то, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения.
Многие гибридные видеокодеки, включающие функциональность H.264/AVC и HEVC, кодируют видеоинформацию в два этапа. На первом этапе выполняется предсказание значений пикселей или отсчетов в некоторой области изображения или «блоке». Эти значения пикселей или отсчетов могут предсказываться, например, с использованием механизмов компенсации движения, подразумевающих нахождение и указание области в одном из ранее кодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку. Дополнительно, значения пикселей или отсчетов могут предсказываться с использованием пространственных механизмов, подразумевающих нахождение и указание взаимосвязи пространственных областей.
Подходы для предсказания, в которых используется информация ранее кодированных изображений, могут также называться методами внешнего предсказания, а также временным предсказанием и компенсацией движения. Подходы для предсказания, в которых используется информация этого же изображения, могут называться методами внутреннего предсказания.
Второй этап представляет собой этап кодирования расхождения между предсказанным блоком пикселей или отсчетов и исходным блоком пикселей или отсчетов. Это может осуществляться с помощью преобразования разности значений пикселей или отсчетов с использованием заданного преобразования. Таким преобразованием может быть дискретное косинусное преобразование (Discrete Cosine Transform, DCT) или его вариант. После преобразования разности преобразованную разность квантуют и выполняют ее энтропийное кодирование.
С помощью изменения точности процесса квантования кодер может управлять балансом между точностью представления пикселей или отсчетов (то есть визуальным качеством изображения) и размером результирующего кодированного представления видео (то есть размером файла или битовой скоростью передачи).
Декодер восстанавливает выходное видео путем применения механизма предсказания, аналогичного используемому в кодере, для формирования предсказанного представления блоков пикселей или отсчетов (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении изображения) и декодирования ошибки предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания в пространственной области).
После применения процедур предсказания пикселей или отсчетов и декодирования ошибки декодер объединяет сигналы предсказания и ошибки предсказания (значений пикселей или отсчетов) для формирования выходного видеокадра.
В декодере (и кодере) могут также применяться дополнительные процедуры фильтрации для повышения качества выходного видеоизображения перед передачей его для отображения и/или хранения в качестве опорного для предсказания последующих изображений видеопоследовательности.
Во многих видеокодеках, включая H.264/AVC и HEVC, информацию о движении указывают с помощью векторов движения, связанных с каждым из блоков изображения с компенсацией движения. Каждый из таких векторов движения представляет смещение блока изображения в кодируемом изображении (на стороне кодера) или декодируемом изображении (на стороне декодера) и исходного блока предсказания в одном из ранее кодированных или декодированных изображениях. В стандартах H.264/AVC и HEVC, как и во многих других стандартах сжатия видео, изображение разделяется на сетку из прямоугольников, для каждого из которых указывается аналогичный блок в одном из опорных изображений для внешнего предсказания. Местоположение блока предсказания кодируется как вектор движения, указывающий на положение блока предсказания относительно кодируемого бока.
Процедура внешнего предсказания может быть охарактеризована с помощью одного или более из описанных ниже факторов.
Точность представления вектора движения. Например, векторы движения могут иметь четверть-пиксельную точность, при этом значения отсчетов с дробнопиксельными положениями могут быть получены с помощью фильтра с конечной импульсной характеристикой (finite impulse response, FIR).
Разбиение на блоки для внешнего предсказания. Многие стандарты кодирования, включая H.264/AVC и HEVC, допускают выбор размера и формы блока, для которого применяется вектор движения для компенсации движения в кодере, при этом выбранный размер и форма указываются в битовом потоке, чтобы декодеры могли воспроизвести предсказание с компенсацией движения, выполняемое в кодере.
Количество опорных изображений для внешнего предсказания. Источниками для внешнего предсказания являются ранее декодированные изображения. Во многих стандартах кодирования, включая H.264/AVC и HEVC, обеспечивается возможность хранения множества опорных изображений для внешнего предсказания и выбора используемого опорного изображения для каждого блока. Например, опорные изображения могут выбираться на уровне макроблока или разбиения макроблока в стандарте H.264/AVC и на уровне блока предсказания или блока кодирования в стандарте HEVC. Многие стандарты кодирования, такие как H.264/AVC и HEVC, имеют синтаксические структуры битового потока, обеспечивающие возможность создания в декодере одного или более списков опорных изображений. Для указания на то, какое из опорных изображений следует использовать для внешнего предсказания конкретного блока, используется указатель на опорное изображение в списке опорных изображений. Указатель на опорное изображение в некоторых режимах кодирования с внешним предсказанием может кодироваться кодером в битовый поток или в других режимах кодирования с внешним предсказанием может определяться (например, кодером и декодером), например, с использованием соседних блоков.
Предсказание векторов движения. Для эффективного представления векторов движения в битовом потоке может выполняться их разностное кодирование относительно предсказанного вектора движения, зависящего от блока. Во многих видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, с помощью вычисления медианного вектора между кодированным или декодированным векторами движения смежных блоков. Другим способом создания предсказаний векторов движения является формирование списка возможных предсказаний на основе соседних блоков и/или сорасположенных блоков во временных опорных изображениях предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение для ранее кодированного или декодированного изображения. Указатель на опорное изображение, как правило, предсказывается на основе соседних блоков и/или сорасположенных блоков во временном опорном изображении. Разностное кодирование векторов движения через границы слайса, как правило, не разрешено.
Многогипотезное предсказание с компенсацией движения. Стандарты H.264/AVC и HEVC позволяют использовать один блок предсказания в Р-слайсах (в настоящем документе также называемых слайсами с однонаправленным предсказанием) или линейную комбинацию двух блоков предсказания с компенсацией движения для слайсов с двунаправленным предсказанием, которые в настоящем документе также называются В-слайсами. Для отдельных блоков в В-слайсах может использоваться двунаправленное предсказание, однонаправленное предсказание или внутреннее предсказание, а для отдельных блоков в Р-слайсах может использоваться однонаправленное предсказание или внутреннее предсказание. Опорные изображения для изображения с двунаправленным предсказанием не ограничиваются последующим и предыдущим изображениям в порядке вывода, а напротив, могут использоваться любые опорные изображения. Во многих стандартах кодирования, в том числе в стандартах H.264/AVC и HEVC, один список опорных изображений, который называется списком 0 опорных изображений, создается для Р-слайсов и SP-слайсов, и два списка опорных изображений, список 0 и список 1, создаются для В-слайсов. Для В-слайсов предсказание в прямом направлении может представлять собой предсказание на основе опорного изображения из списка 0 опорных изображений, а предсказание в обратном направлении может представлять собой предсказание на основе опорного изображения из списка 1 опорных изображений, хотя опорные изображения предсказания могут иметь любой порядок декодирования или вывода, по отношению друг к другу или к текущему изображению.
Взвешенное предсказание. Во многих стандартах кодирования применяется вес предсказания, равный 1, для блоков предсказания изображения с внешним предсказанием (Р) и вес, равный 0,5, для каждого блока предсказания В-изображения (в результате чего происходит усреднение). В стандарте H.264/AVC обеспечивается возможность взвешенного предсказания и для Р-слайсов, и для В-слайсов. При неявном взвешенном предсказании веса пропорциональны порядковым номерам изображений, тогда как при явном взвешенном предсказании веса предсказания указываются явно.
Во многих видеокодеках разность предсказания после компенсации движения сначала преобразуют с помощью ядра преобразования (например, DCT) и только затем кодируют. Причиной этому является то, что часто имеется некоторая корреляция в разностной ошибке, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование.
В проекте стандарта HEVC каждый блок предсказания имеет связанную с ним информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного блока предсказания (например, информацию вектора движения для блоков предсказания с внешним предсказанием или информацию о направленности внутреннего предсказания для блоков предсказания с внутренним предсказанием). Аналогично, каждый блок преобразования связан с информацией, описывающей процедуру декодирования ошибки предсказания для отсчетов в данном блоке преобразования (включая, например, информацию о коэффициентах DCT). Как правило, сигнализируется, применяется ли кодирование ошибки предсказания для каждого блока кодирования. Если нет разностной ошибки предсказания, связанного с блоком кодирования, то можно считать, что для данного блока кодирования отсутствуют блоки преобразования.
В некоторых форматах кодирования и кодеках вводится различие между так называемыми краткосрочными и долгосрочными опорными изображениями. Такое различие может влиять на часть процедур декодирования, например, масштабирование векторов движения во временном прямом режиме предсказания или при неявном взвешенном предсказании. Если оба опорных изображения, используемых во временном режиме предсказания, являются краткосрочными опорными изображениями, то вектор движения, используемый при предсказании, может масштабироваться в соответствии с разностью порядковых номеров кадра (picture order count, РОС) между текущим изображением и каждым из опорных изображений. Однако, если по меньшей мере одно опорное изображение для временного прямого режима предсказания является долгосрочным опорным изображением, то используется заданное по умолчанию масштабирование вектора движения, например, масштабирование движения в два раза. Аналогично, если краткосрочное опорное изображение используется для неявного взвешенного предсказания, то весовой коэффициент предсказания может масштабироваться в соответствии с разностью РОС между текущим изображением и опорным изображением. Однако если для неявного взвешенного предсказания используется долговременное опорное изображение, то может использоваться заданный по умолчанию весовой коэффициент предсказания, например, равный 0,5, при неявном взвешенном предсказании блоков с двунаправленным предсказанием.
В некоторых форматах видеокодирования, например, H.264/AVC, имеется синтаксический элемент frame_num, который используется в различных процедурах декодирования, связанных с множеством опорных изображений. В стандарте H.264/AVC значение frame_num для IDR-изображений равно 0. Значение frame_num для изображений, не являющихся IDR-изображениями, равно номеру frame_num предыдущего опорного изображения в порядке декодирования, увеличенному на 1 (в модульной арифметике, то есть значение frame_num циклически возвращается в 0 после максимального значения frame_num).
В стандартах H.264/AVC и HEVC существует понятие порядкового номера изображения (РОС). Значение РОС вычисляется для каждого изображения и является неубывающим с увеличением позиции изображения в порядке вывода. Соответственно, РОС указывает на порядок вывода изображений. РОС может использоваться в процессе декодирования, например, для неявного масштабирования векторов движения во временном прямом режиме слайсов с двунаправленным предсказанием, для неявно вычисляемых весовых коэффициентов при взвешенном предсказании и для инициализации списка опорных изображений. Кроме того, РОС может использоваться при проверке соответствия порядка вывода. В стандарте H.264/AVC РОС определяется относительно предыдущего IDR-изображения или изображения, содержащего операцию управления памятью, с помощью которой все изображения помечаются как «не используемые в качестве опорных».
В стандарте H.264/AVC определена процедура маркировки декодированного опорного изображения для управления потреблением памяти в декодере. Максимальное количество опорных изображений для внешнего предсказания обозначается M и определяется в наборе параметров последовательности. При декодировании опорного изображения оно маркируется как «используемое в качестве опорного». Если в результате декодирования опорного изображения более M изображений были помечены как «используемые в качестве опорного», то по меньшей мере одно из этих изображений помечают как «не используемое в качестве опорного». Имеется два типа операций маркировки декодированного опорного изображения: адаптивное управление памятью и скользящее окно. Режим маркировки декодированного опорного изображения может выбираться для каждого изображения. Адаптивное управление памятью обеспечивает явную сигнализацию, при которой изображения помечаются как «не используемые в качестве опорных», причем также возможно назначение долгосрочных указателей на краткосрочные опорные изображения. Адаптивное управление памятью может требовать наличия в битовом потоке параметров операций управления памятью (memory management control operation, MMCO). Если применяется режим работы со скользящим окном и M изображений помечены как «используемые в качестве опорных», то краткосрочное опорное изображение, которое было первым декодированным изображением среди краткосрочных опорных изображений, помеченных как «используемые в качестве опорных», помечается как «не используемое в качестве опорного». Другими словами, режим работы со скользящим окном обеспечивает работу с краткосрочными опорными изображениями по типу буфера «первый вошел, первый вышел».
Одна из операций управления памятью в стандарте H.264/AVC обеспечивает маркировку всех опорных изображений, кроме текущего изображения, как «не используемых в качестве опорных». Изображение мгновенного обновления декодирования (IDR) содержит только слайсы с внутренним предсказанием и вызывает аналогичный «сброс» опорных изображений.
В проекте стандарта HEVC синтаксические структуры для маркировки опорных изображений и соответствующие процедуры декодирования не применяются, но вместо этого для аналогичных целей используется синтаксическая структура и процедура декодирования набора опорных изображений (reference picture set, RPS). Набор опорных изображений, являющийся действительным или активным для изображения, включает все опорные изображения для данного изображения и все опорные изображения, которые остаются помеченными как «используемые в качестве опорных» для последующих изображений в порядке декодирования. В наборе опорных изображений имеется шесть подмножеств, которые обозначаются RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Нотация обозначений этих шести подмножеств имеет следующее значение. "Curr" относится к опорным изображениям, которые включены в списки опорных изображений для текущего изображения и, следовательно, могут быть использованы как опорное изображение при внешнем предсказании для текущего изображения. "Foll" относится к опорным изображениям, которые не включены в списки опорных изображений для текущего изображения, но могут быть использованы в качестве опорных изображений для последующих изображений в порядке декодирования. "St" относится к краткосрочным опорным изображениям, которые в общем случае могут идентифицироваться с помощью определенного количества младших битов в их значении РОС. "Lt" относится к долгосрочным опорным изображениям, которые идентифицируются и, как правило, имеют большее отличие в значениях РОС от текущего изображения, чем это может быть отражено с помощью упомянутого определенного количества младших битов. "0" обозначает те опорные изображения, которые имеют меньшее значение РОС, тем текущее изображение. "1" обозначает те опорные изображения, которые имеют большее значение РОС, чем текущее изображение. RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1 совместно называются краткосрочным подмножеством набора опорных изображений. RefPicSetLtCurr и RefPicSetLtFoll совместно называются долгосрочным подмножеством набора опорных изображений.
В проекте стандарта HEVC набор опорных изображений может быть задан в наборе параметров последовательности и может использоваться в заголовке слайса с помощью указателя на набор опорных изображений. Набор опорных изображений может задаваться также и в заголовке слайса. Долгосрочное подмножество набора опорных изображений, как правило, задается только в заголовке слайса, тогда как краткосрочные подмножества того же набора опорных изображений могут задаваться в наборе параметров изображения или в заголовке слайса. Набор опорных изображений может кодироваться независимо или может быть предсказываемым на основе другого набора опорных изображений (это называется внешним предсказанием RPS). При независимом кодировании набора опорных изображений синтаксическая структура включает до трех циклов с итерацией по различным типам опорных изображений: краткосрочные опорные изображения со значениями РОС, меньшими текущего изображения, краткосрочные опорные изображения со значениями РОС, большими текущего изображения, и долгосрочные опорные изображения. Каждая такая циклическая запись определяет, что изображение должно быть помечено как «используемое в качестве опорного». В общем случае изображение определяется с использованием дифференциального значения РОС. При внешнем предсказании RPS используется то, что набор опорных изображений для текущего изображения может быть предсказан на основе набора опорных изображений ранее декодированного изображения. Это возможно, поскольку все опорные изображения для текущего изображения являются либо опорными изображениями для предыдущего изображения, либо ранее декодированным изображением. Необходимо только указать, какие из этих изображений должны быть опорными и использоваться для предсказания текущего изображения. В обоих типах кодирования набора опорных изображений для каждого опорного изображения дополнительно передают флаг (used_by_curr_pic_X_flag), который указывает на то, используется ли данное изображение в качестве опорного для текущего изображения (то есть входит в список *Curr) или нет (то есть входит в список *Foll). Изображения из набора опорных изображений, используемых для текущего слайса, помечают как «используемые в качестве опорных», а изображения, не входящие в набор опорных изображений, используемых для текущего слайса, помечают как «не используемые в качестве опорных». Если текущее изображение является IDR-изображением, то RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll установлены пустыми.
В кодере и/или декодере может применяться буфер декодированных изображений (Decoded Picture Buffer, DPB). Имеются две причины для буферизации декодированных изображений: для использования в качестве опорных при внешнем предсказании и для изменения порядка декодированных изображений в выходной последовательности. Стандарты H.264/AVC и HEVC дают значительную гибкость как для маркировки опорных изображений, так и для переупорядочения выходной последовательности, однако отдельные буферы для опорных изображений и изображений выходной последовательности могут приводить к нерациональному расходованию ресурсов памяти. Следовательно, DPB может включать унифицированную процедуру буферизации декодированных опорных изображений и переупорядочения выходной последовательности. Декодированное изображение может удаляться из буфера DPB, когда оно больше не используется в качестве опорного и не требуется для вывода.
Во многих режимах кодирования стандартов H.264/AVC и HEVC на опорное изображение внешнего предсказания указывают с помощью указателя на список опорных изображений. Указатель может кодироваться с использованием кодов переменной длины, что обычно дает меньшие указатели с меньшим числовым значением для соответствующего синтаксического элемента. В стандартах H.264/AVC и HEVC формируются два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) для каждого слайса с двунаправленным предсказанием (В-слайса) и один список опорных изображений (список 0 опорных изображений) для каждого слайса, кодируемого с внешним предсказанием (Р-слайса). Дополнительно для В-слайсов в стандарте HEVC строится комбинированный список (список С), называемый также списком слияния, после завершения построения финальных списков опорных изображений (списка 0 и списка 1). Комбинированный список может использоваться для однонаправленного предсказания в В-слайсах.
Список опорных изображений, например список 0 или список 1, как правило, формируется в два шага; сначала формируют первичный список опорных изображений. Первичный список опорных изображений может формироваться, например, на основе параметров frame_num, РОС, temporal_id или информации об иерархии предсказания, например, из структуры GOP, или на основе какой-либо комбинации перечисленного. На втором шаге первичный список опорных изображений может быть переупорядочен с помощью команд переупорядочения списка опорных изображений (reference picture list reordering, RPLR), также называемых синтаксической структурой модификации списка опорных изображений, которая может содержаться в заголовках слайсов. Команды RPLR указывают на изображения, которые переставлены в начало соответствующего списка опорных изображений. Этот второй шаг может также быть назван процедурой модификации списка опорных изображений, а команды RPLR могут включаться в синтаксическую структуру модификации списка опорных изображений. Если используются наборы опорных изображений, то список 0 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr0, за которым следует RefPicSetStCurr1 и затем RefPicSetLtCurr. Список 1 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr1 и затем RefPicSetStCulr0. Первичные списки опорных изображений могут модифицироваться с помощью синтаксической структуры модификации списка опорных изображений, в которой изображения в первичных списках опорных изображений могут идентифицироваться с помощью записи-указателя на список.
Во многих кодеках эффективного видеокодирования например, в кодеках, соответствующих проекту стандарта HEVC, применяется дополнительный механизм кодирования/декодирования информации о движении, часто называемый режимом/процессом/механизмом слияния, в котором вся информация о движении блока / блока предсказания предсказывается и используется без какой-либо модификации или коррекции. Упомянутая выше информация о движении для блока предсказания включает: 1) информацию о том, применяется ли для данного блока предсказания однонаправленное предсказание с использованием только списка 0 опорных изображений, или применяется ли для данного блока предсказания однонаправленное предсказание с использованием только списка 1 опорных изображений, или применяется ли для данного блока предсказания двунаправленное предсказание с использованием обоих списков опорных изображений, списка 0 и списка 1; 2) значение вектора движения, соответствующее списку 0 опорных изображений; 3) указатель на опорное изображение в списке 0 опорных изображений; 4) значение вектора движения, соответствующее списку 1 опорных изображений; 5) указатель на опорное значение в списке 1 опорных изображений. Аналогично, предсказание информации о движении выполняют с использованием информации о движении соседних блоков и/или сорасположенных блоков во временных опорных изображениях. Список, часто называемый списком слияния, строится с помощью включения возможных предсказаний движения, связанных с доступными смежными / сорасположенными блоками, при этом сигнализируется указатель на выбранное возможное предсказание движения в списке, и информацию о движении выбранного кандидата копируют в информацию о движении текущего блока предсказания. Если применяется механизм слияния для всего блока кодирования, и при этом сигнал предсказания для блока кодирования используется в качестве сигнала восстановления, то есть ошибка предсказания не обрабатывается, то такой тип кодирования/декодирования блока кодирования называется, как правило, режимом пропуска или режимом пропуска на основе слияния. В дополнение к режиму пропуска для отдельных блоков предсказания применятся также механизм слияния (не обязательно для всего блока кодирования, как в режиме пропуска), и в этом случае ошибка предсказания может использоваться для повышения качества предсказания. Такой тип режима предсказания называют, как правило, режимом с внешним слиянием.
Список слияния может формироваться на основе списка 0 опорных изображений и/или списка 1 опорных изображений, например, с использованием синтаксической структуры комбинации списков опорных изображений, имеющейся в синтаксисе заголовка слайса. Может присутствовать синтаксическая структура комбинации списков опорных изображений, которая создается в битовом потоке кодером и декодируется из битового потока декодером, при этом она указывает на содержимое списка слияния. Эта синтаксическая структура может указывать на то, что список 0 опорных изображений и список 1 опорных изображений объединены в дополнительную комбинацию списков опорных изображений для блоков предсказания, для которых используется однонаправленное предсказание. Данная синтаксическая структура может включать флаг, который, если он равен заданному значению, указывает на то, что список 0 опорных изображений и список 1 опорных изображений являются идентичными, и следовательно, в качестве комбинации списков опорных изображений используется список 0 опорных изображений. Данная синтаксическая структура может включать список, состоящий из записей, каждая из которых определяет список опорных изображений (список 0 или список 1) и указатель на заданный список опорных изображений, при этом каждая запись определяет опорное изображение, включаемое в список слияния.
В системе видеокодирования может присутствовать синтаксическая структура для маркировки опорных изображений. Например, после завершения декодирования изображения, синтаксическая структура для маркировки декодированных опорных изображений, если она имеется, может использоваться для адаптивной маркировки изображений как «не используемых в качестве опорных» или «используемых в качестве долгосрочных опорных». Если синтаксической структуры для маркировки декодированных опорных изображений нет, и количество изображений, помеченных как «используемые в качестве опорных» больше увеличиваться не может, то может применяться маркировка изображений с помощью скользящего окна, при которой самое раннее (в порядке декодирования) декодированное опорное изображение помечается как «не используемое в качестве опорного».
При масштабируемом видеокодировании видеосигнал может кодироваться в базовый уровень и в один или более уровней расширения. Уровень расширения может повышать временное разрешение (то есть частоту кадров), пространственное разрешение или просто качество видеоконтента, представленного другим уровнем или его частью. Каждый уровень вместе со всеми зависимыми уровнями является одним представлением видеосигнала с определенным пространственным разрешением, временным разрешением и уровнем качества. В данном документе масштабируемый уровень вместе со всеми зависимыми уровнями называется «представлением масштабируемого уровня» Часть масштабируемого битового потока, соответствующая представлению масштабируемого уровня, может быть извлечена и декодирована для получения представления исходного сигнала с определенной точностью.
Некоторые из стандартов кодирования допускают также создание масштабируемых битовых потоков. Содержательное декодированное представление может быть получено, даже если декодируются только определенные части масштабируемого битового потока. Масштабируемые битовые потоки могут применяться, например, для адаптации скорости заранее кодированных потоков одноадресного вещания в сервере потоковой передачи или для передачи одного битового потока в оконечные устройства, имеющие различные возможности и/или находящиеся в различных сетевых условиях. Список других случаев применения масштабируемого видеокодирования приведен в выходном документе N5540 ISO/IEC JTC1 SC29 WG11 (MPEG), озаглавленном «Приложения и требования масштабируемого видекодирования» ("Applications and Requirements for Scalable Video Coding"), 64-ая встреча группы MPEG, 10-14 марта 2003 года, Паттайя, Тайланд.
В некоторых случаях данные в уровне расширения могут отсекаться после определенного местоположения или даже после произвольной позиции, при этом каждая позиция отсечения может включать дополнительные данные, представляющие все более высокое визуальное качество. Такая масштабируемость называется мелкозернистой (или мелкогранулярной) масштабируемостью (fine grained (granularity) scalability, FGS). Масштабирование FGS входило в некоторые из проектов стандарта SVC, но в конечном счете не было включено в принятый стандарт. Затем масштабируемость FGS обсуждалась в контексте некоторых версий проекта стандарта SVC. Масштабируемость, обеспечиваемая уровнями расширения, которые не могут быть отсечены, называется грубозернистой (или грубогранулярной) масштабируемостью (coarse-grained (granularity) scalability, CGS). Оно совместно включает традиционное масштабирование качества (SNR) и пространственную масштабируемость. Стандарт SVC поддерживает так называемое среднезернистое масштабирование (medium-grained scalability, MGS), при котором изображения, повышающие качество, кодируются аналогично масштабируемым изображениям уровней SNR, но указания на них осуществляются с помощью высокоуровневых синтаксических элементов, аналогичных изображениям уровней FGS, с помощью назначения синтаксическому элементу quality_id значения, большего 0.
В SVC используется механизм межуровнего предсказания, в котором определенная информация может предсказываться на основе других уровней, не являющихся текущим восстанавливаемым уровнем или следующим за ним нижним уровнем. Информация, предсказываемая с помощью механизма межуровневого предсказания, включает информацию внутри текстуры, движение и разностные данные. Межуровневое предсказание движения включает предсказание режима кодирования блока, информацию заголовка и т.п., при этом движение нижних уровней может использоваться для предсказания движения верхних уровней. В случае внутреннего кодирования возможно предсказание на основе соседних или сорасположенных макроблоков нижних уровней. В таких методах предсказания не применяется информация из ранее кодированных блоков доступа, поэтому они называются методами внутреннего предсказания. Кроме того, разностные данные от нижних уровней также могут применяться для предсказания текущего уровня.
Стандарт SVC определяет концепцию, назваемую однопетлевым декодированием. Его возможность обеспечивается с помощью режима предсказания внутри текстуры, за счет чего межуровневое предсказание внутри текстуры может применяться к макроблокам, для которых соответствующий блок базового уровня расположен внутри макроблоков, предсказываемых с использованием внутреннего предсказания. В то же время для этих макроблоков с внутренним предсказанием в базовом уровне используется ограниченное внутреннее предсказание (например, они имеют синтаксический элемент "constrained_intra_pred_flag", равный 1). При однопетлевом декодировании декодер выполняет компенсацию движения и восстановление полного изображения только для масштабируемого уровня, необходимого для воспроизведения (который называют «требуемым уровнем» или «целевым уровнем»), за счет чего значительно снижается сложность декодирования. Все уровни, помимо требуемого уровня, не требуют полного декодирования, поскольку часть данных или все данные их макроблоков не используются для межуровнего предсказания (будь это межуровневое предсказание внутри текстуры, межуровневое предсказание движения или межуровневое разностное предсказание) и не являются необходимыми для восстановления требуемого уровня.
Одна петля декодирования необходима для декодирования большинства изображений, тогда как вторая петля декодирования выборочно применяется для восстановления базовых представлений, необходимых как опорных для предсказания, но не для вывода или отображения, при этом они восстанавливаются только для так называемых ключевых изображений (для которых флаг "store_ref_base_pic_flag" установлен в значение 1).
Структура масштабируемости в проекте стандарта SVC характеризуется тремя синтаксическими элементами: "temporal_id", "dependency_id" и "quality_id". Синтаксический элемент "temporal_id" используется для указания иерархии временной масштабируемости или, косвенно, частоты кадров. Представление масштабируемого уровня, включающее изображения с меньшим максимальным значением "temporal_id" будет иметь меньшую частоту кадров, чем представление масштабируемого уровня, включающее изображения с большим максимальным значением "temporal_id". Временной уровень зависит, как правило, от нижних временных уровней (то есть временных уровней с меньшими значениями "temporal_id"), но не зависит от вышележащих временных уровней. Синтаксический элемент "dependency_id" используется для указания иерархии зависимости межуровневого кодирования CGS (которая, как отмечалось ранее, включает и SNR, и пространственную масштабируемость). В любом местоположении временного уровня изображение с меньшим значением "dependency_id" может использоваться для межуровневого предсказания при кодировании изображения с большим значением "dependency_id". Синтаксический элемент "quality_id" используется для указания иерархии уровня качества уровня FGS или MGS. В любой момент времени видеопоследовательности, при одинаковом значении "dependency_id", для межуровневого предсказания изображения с "quality_id", равным QL, может быть использовано изображение с "quality_id", равным QL-1. Кодированный слайс с "quality_id" больше 0 может кодироваться либо как отсекаемый FGS-слайс, либо как неотсекаемый MGS-слайс.
Для простоты все блоки данных (например, в контексте SVC - блоки уровня сетевой абстракции, NAL-блоки) в одном блоке доступа, имеющие одинаковое значение "dependency_id", называются блоком зависимости или представлением зависимости. В одном блоке зависимости все блоки данных с одинаковыми значениями "quality_id" называются блоком качества или представлением уровня.
Базовое представление, также называемое декодированным базовым изображением, является декодированным изображением, полученным в результате декодирования NAL-блоков уровня видеокодирования (Video Coding Layer, VCL) блока зависимости с "quality_id", равным 0, для которого флаг "store_ref_basepic_flag" установлен равным 1. Представление расширения, также называемое декодированным изображением, получается в результате обычного процесса декодирования, при котором декодируются все представления уровней, присутствующие для самого верхнего представления зависимости.
Как отмечалось выше, масштабируемость CGS включает пространственную масштабируемость и SNR-масштабируемость. Пространственная масштабируемость первоначально предназначена для поддержки представлений видеоинформации с различным разрешением. NAL-блоки VCL для каждого момента времени кодируются в одном и том же блоке доступа, при этом данные NAL-блоки VCL могут соответствовать различным разрешениям. В процессе декодирования NAL-блоки VCL низкого разрешения дают поле движения и разностные данные, которые опционально могут наследоваться при окончательном декодировании и восстановлении изображения высокого разрешения. По сравнению с предшествующими стандартами сжатия видеоинформации пространственная масштабируемость в стандарте SVC была обобщена, чтобы сделать базовый уровень кадрированной и смасштабированной версией уровня расширения.
Уровни качества MGS указываются с помощью "quality_id", аналогично уровням качества FGS. Для каждого блока зависимости (с тем же "dependency_id") имеется уровень с "quality_id", равным 0, и также могут присутствовать другие уровни с "quality_id", большим 0. Эти уровни, имеющие "quality_id" больше 0, являются либо уровнями MGS, либо уровнями FGS, в зависимости от того, являются ли слайсы кодируемыми как отсекаемые слайсы.
В базовой форме уровней расширения FGS используется только межуровневое предсказание. Следовательно, уровни расширения FGS могут свободно отсекаться, без распространения ошибок в декодированной последовательности. Однако такая базовая форма FGS имеет низкую эффективность сжатия. Это проблема возникает по причине использования изображений с низким качеством как опорных при внешнем предсказании. Соответственно, было предложено, чтобы в качестве опорных изображений внешнего предсказания использовались изображения расширения FGS. Однако при отбрасывании части данных FGS, это может приводить к несовпадению кодирования-декодирования, которое называется дрейфом.
Одна из особенностей проекта стандарта SVC заключается в том, что NAL-блоки FGS могут свободно отсекаться или отбрасываться, а особенность стандарта SVCV заключается в том, что NAL-блоки MGS могут свободно отбрасываться (но не могут отсекаться) без нарушения соответствия битового потока стандарту. Как обсуждалось выше, если эти данные FGS или MGS использовались как опорные для внешнего предсказания при кодировании, то отбрасывание или отсечение этих данных приведет к несовпадению декодированных изображений на стороне кодера и декодера. Такое несовпадение также называется дрейфом.
Для контроля дрейфа, возникающего вследствие отбрасывания или отсечения данных FGS или MGS, в стандарте SVC применяется следующее решение: в блоке зависимости базовое представление (с помощью декодирования только изображения CGS с "quality_id", равным 0, и всех данных, зависящих от нижних уровней) сохраняется в буфере декодированных изображений. При кодировании последующего блока зависимости с таким же значением "dependency_id для внешнего предсказания всех NAL-блоков, включающих NAL-блоки FGS или NAL, в качестве опорного используется базовое представление. Следовательно, любой дрейф, возникающий в результате отбрасывания или отсечения NAL-блоков FGS или MGS в более раннем блоке доступа, прекращается в данном блоке доступа. Для обеспечения высокой эффективности кодирования в других блоках зависимости с тем же значением "dependency_id" для всех NAL-блоков в качестве опорных изображений внешнего предсказания используются декодированные изображения.
Каждый NAL-блок включает в своем заголовке синтаксический элемент "use_ref_basepic_flag". Когда значение этого элемента равно 1, при декодировании NAL-блока в процессе внешнего предсказания используются базовые представления опорных изображений. Синтаксический элемент "store_ref_basepic_flag" определяет, следует ли (если он равен 1) сохранять базовое представление текущего изображения для будущих изображений для использования при внешнем предсказании или нет (если он равен 0).
NAL-блоки с "quality_id" больше 0 не содержат синтаксических элементов, связанных с построением списков опорных изображений и взвешенным предсказанием, то есть отсутствуют синтаксические элементы "num_ref_active_x_minus1" (х=0 или 1), синтаксическая таблица переупорядочения списка опорных изображений и синтаксическая таблица взвешенного предсказания. Следовательно, при необходимости, уровни MGS или FGS должны наследовать эти синтаксические элементы от NAL-блоков с "quality_id", равным 0, в том же блоке зависимости.
В стандарте SVC список опорных изображений включает либо только базовые представления (когда флаг "use_ref_base_pic_flag" равен 1) или только декодированные изображения, не помеченные как «базовое представление» (когда флаг "use_ref_base_pic_flag" равен 0), но никогда оба одновременно.
Значение переменной DQId для процедуры декодирования SVC может быть установлено равным dependency_id × 16 + quality_id или, что эквивалентно, (dependency_id << 4) + quality_id, где << обозначает операцию побитового сдвига влево. Значение переменной DQIdMax в SVC может быть установлено равным наибольшему значению DQId среди всех NAL-блоков VCL в декодируемом блоке доступа. Переменная DependencyldMax может быть установлена равной (DQIdMax >> 4), где >> обозначает операцию побитового сдвига вправо. В кодированных видеопоследовательностях, соответствующих стандарту SVC, значение DependencyldMax является одинаковым для всех блоков доступа кодированной видеопоследовательности.
В стандарте SVC определено сообщение SEI с масштабируемой вложенностью. Сообщение SEI с масштабируемой вложенностью представляет собой механизм связывания сообщений SEI с подмножествами битового потока, например, с указанными представлениями зависимости или другими масштабируемыми уровнями. Сообщение SEI с масштабируемой вложенностью содержит одно или более сообщений SEI, которые не являются сами сообщениями SEI с масштабируемой вложенностью. Сообщение SEI, содержащееся в сообщении SEI с масштабируемой вложенностью, называется вложенным сообщением SEI. Сообщение SEI, которое не содержится в сообщении SEI с масштабируемой вложенностью, называется невложенным сообщением SEI. Объем применения сообщения SEI с масштабируемой вложенностью указывается с помощью синтаксических элементов all_layer_representations_in_au_flag, num_layer_representations_minus1, sei_dependency_id[i], sei_quality_id[i] и sei_temporal_id, когда они имеются в этом сообщении SEI с масштабируемой вложенностью. Флаг all_layer_representations_in_au_flag, равный 1, определяет, что данное вложенное сообщение SEI применяется ко всем представлениям уровней блока доступа. Флаг all_layer_representations_in_au_flag, равный 0, определяет, что объем сообщения SEI с вложенностью определен синтаксическими элементами num_layer_representations_minus1, sei_dependency_id[i], sei_quality_id[i], и sei_temporal_id. Параметр num_layer_representations_minus1 плюс 1 определяет, при наличии параметра num_layer_representations_minus1, количество пар синтаксических элементов sei_dependency_id[i] и sei_quality_id[i], присутствующих в сообщении SEI с масштабируемой вложенностью. Если параметр num_layer_representations_minus1 не присутствует, его получают как равный (numSVCLayers - 1), где numSVCLayers - количество представлений уровня, присутствующих в первичном кодированном изображении блока доступа. Параметры sei_dependency_id[i] и sei_quality_id[i] указывают значения dependency_id и quality_id, соответственно, представлений уровня, к которым применимо данное сообщение SEI с вложенностью. Блок доступа не обязательно должен содержать представления уровня с dependency_id, равным sei_dependency_id[i], и quality_id, равным sei_quality_id[i]. В случае, когда параметр num_layer_representations_minus1 отсутствует, значения sei_dependency_id[i] и sei_quality_id[i] для i в диапазоне от 0 до num_layer_representations_minus1 (где значение num_layer_representations_minus1 будет получено) включительно определяют в соответствии со следующим описанием:
1. Пусть setDQId является набором значений DQId для всех представлений уровня, присутствующих в первичном кодированном изображении блока доступа.
2. Для i, изменяющегося от 0 до num_layer_representations_minus1 включительно, выполняется следующее:
a. sei_dependency_id[i] и sei_quality_id[i] вычисляют как (minDQId >> 4) и (minDQId & 15), соответственно, где minDQId является наименьшим (наименьшим значением DQId) в наборе setDQId.
b. Это наименьшее значение (наименьшее значение DQId) в наборе setDQId удаляют из setDQId, и, соответственно, количество элементов в наборе setDQId уменьшается на 1.
Параметр set_temporal_id указывает значение temporal_id подмножества битового потока, к которому применяется данное сообщение SEI с вложенностью. Если параметр sei_temporal_id отсутствует, его значение принимается равным temporal_id данного блока доступа.
В стандарте SVC, в дополнение к полезной нагрузке RBSP активного набора параметров изображения, могут быть также активными нуль или более полезных нагрузок RBSP наборов параметров изображения для представлений уровня (с конкретным значением DQId, меньшим, чем DQIdMax), ссылки на которые могут осуществляться с помощью межуровневого предсказания при декодировании представления целевого уровня. Такая полезная нагрузка RBSP набора параметров изображения называется активной полезной нагрузкой RBSP набора параметров изображения уровня для конкретного значения DQId (меньшего DQIdMax). Ограничения на активную полезную нагрузку RBSP набора параметров изображения применимы также к активным полезным нагрузкам RBSP набора параметров изображения уровня с определенным значением DQId.
В стандарте SVC, когда полезная нагрузка RBSP набора параметров изображения (с конкретным значением pic_parameter_set_id) не является активной полезной нагрузкой RBSP набора параметров изображения, и на нее осуществляется ссылка с помощью NAL-блока кодированного слайса с DQId, равным DQIdMax (с использованием этого значения pic_parameter_set_id), она становится активной. Полезная нагрузка RBSP набора параметров изображения называется активной RBSP набора параметров изображения до тех пор, пока она не будет деактивирована, когда полезная нагрузка RBSP другого набора параметров изображения станет активной полезной нагрузкой RBSP набора параметров изображения. Полезная нагрузка RBSP набора параметров изображения с этим конкретным значением pic_parameter_set_id является доступной в процедуре декодирования до ее активации.
В стандарте SVC, когда полезная нагрузка RBSP набора параметров изображения (с конкретным значением pic_parameter_set_id) не является активным набором параметров изображения уровня для конкретного значения DQId, меньшего DQIdMax, и на нее осуществляется ссылка с помощью NAL-блока кодированного слайса с этим конкретным значением DQId (с использованием данного значения pic_parameter_set_id), она становится активной для представлений уровня с этим конкретным значением DQId. Полезная нагрузка RBSP набора параметров изображения называется активной полезной нагрузкой RBSP набора параметров изображения уровня до тех пор, пока она не будет деактивирована, когда полезная нагрузка RBSP другого набора параметров изображения станет активной полезной нагрузкой RBSP набора параметров изображения уровня для этого конкретного значения DQId или когда будет декодирован блок доступа с DQIdMax, меньшим или равным этому конкретному значению DQId. Полезная нагрузка RBSP набора параметров изображения с этим конкретным значением pic_parameter_set_id является доступной в процедуре декодирования до ее активации.
В стандарте SVC полезная нагрузка RBSP набора параметров последовательности SVC может служить общим термином для полезной нагрузки RBSP набора параметров последовательности и полезной нагрузки RBSP поднабора параметров последовательности.
В стандарте SVC, когда полезная нагрузка RBSP набора параметров последовательности SVC с конкретным значением seq_parameter_set_id уже не является активной полезной нагрузкой RBSP набора параметров последовательности SVC, и на нее выполняется ссылка с помощью активации RBSP набора параметров изображения (с использованием этого значения seq_parameter_set_id) в качестве активной полезной нагрузки RBSP набора параметров изображения, полезная нагрузка RBSP данного набора параметров последовательности SVC становится активной. Полезная нагрузка RBSP набора параметров последовательности SVC остается активной до тех пор, пока она не будет деактивирована, когда полезная нагрузка RBSP другого набора параметров последовательности SVC станет активной полезной нагрузкой RBSP набора параметров последовательности SVC. Полезная нагрузка RBSP набора параметров последовательности SVC с этим конкретным значением seq_parameter_set_id является доступной в процедуре декодирования до ее активации.
В стандарте SVC параметры profile_idc и level_idc в полезной нагрузке RBSP набора параметров последовательности SVC указывают на профиль и уровень, которым соответствует кодированная последовательность, когда полезная нагрузка RBSP этого набора параметров последовательности SVC является активной полезной нагрузкой RBSP набора параметров последовательности SVC.
В дополнение к активной полезной нагрузке RBSP набора параметров последовательности SVC, нуль или более полезных нагрузок RBSP наборов параметров последовательности SVC могут быть активны для представлений уровня (с конкретным значением DQId, меньшим, чем DQIdMax), ссылки на которые могут осуществляться с помощью межуровневого предсказания при декодировании представления целевого уровня. Такая полезная нагрузка RBSP набора параметров последовательности SVC называется активной полезной нагрузкой RBSP набора параметров последовательности SVC уровня для конкретного значения DQId (меньшего DQIdMax). Ограничения для активной полезной нагрузки RBSP набора параметров последовательности SVC применимы также к активным полезным нагрузкам RBSP набора параметров последовательности SVC уровня с конкретным значением DQId.
В стандарте SVC, когда полезная нагрузка RBSP набора параметров последовательности с конкретным значением seq_parameter_set_id уже не является активной полезной нагрузкой RBSP набора параметров SVC уровня, и на нее выполняется ссылка с помощью активации полезной нагрузки RBSP набора параметров изображения (с использованием этого значения seq_parameter_set_id), и эта полезная нагрузка RBSP набора параметров изображения активируется с помощью NAL-блока кодированного слайса базового уровня или сообщения SEI с периодом буферизации, при этом DQIdMax больше 0 (полезная нагрузка RBSP набора параметров изображения становится активной полезной нагрузкой RBSP набора параметров изображения уровня для DQId, равного 0), эта полезная нагрузка RBSP набора параметров последовательности становится активной для представлений уровня с DQId, равным 0. Такая полезная нагрузка RBSP набора параметров последовательности называется активной полезной нагрузкой RBSP набора параметров последовательности SVC уровня с DQId равным 0, до тех пор, пока она не будет деактивирована, когда полезная нагрузка RBSP другого набора параметров последовательности SVC станет активной полезной нагрузкой RBSP набора параметров последовательности SVC уровня с DQId, равным 0, или когда будет декодирован блок доступа с DQIdMax, равным 0. Полезная нагрузка RBSP набора параметров последовательности с этим конкретным значением seq_parameter_set_id является доступной в процедуре декодирования до ее активации.
В стандарте SVC, когда полезная нагрузка RBSP поднабора набора параметров последовательности с конкретным значением seq_parameter_set_id уже не является активной полезной нагрузкой RBSP набора параметров SVC уровня с конкретным значением DQId, меньшим DQIdMax, и на нее выполняется ссылка с помощью сообщения SEI с периодом буферизации для уровня активации для конкретного значения DQId (с использованием значения seq_parameter_set_id), включенного в сообщение SEI с масштабируемой вложенностью, полезная нагрузка RBSP этого поднабора параметров последовательности становится активной для представлений уровня с этим конкретным значением DQId. Такая полезная нагрузка RBSP поднабора параметров последовательности называется активной полезная нагрузкой RBSP набора параметров последовательности SVC уровня для этого конкретного значения DQId до тех пор, пока она не будет деактивирована, когда полезная нагрузка RBSP другого набора параметров последовательности SVC станет активной полезной нагрузкой RBSP набора параметров последовательности SVC уровня для этого конкретного значения DQId или когда будет декодирован блок доступа с DQIdMax, меньшим или равным этому конкретному значению DQId. Полезная нагрузка RBSP поднабора набора параметров последовательности с этим конкретным значением seq_parameter_set_id является доступной в процедуре декодирования до ее активации.
Пусть spsA и spsB - две полезных нагрузки RBSP набора параметров последовательности SVC с одним из следующих свойств:
- spsA - это полезная нагрузка RBSP набора параметров последовательности SVC, на которую осуществляется ссылка с помощью NAL-блоков кодированного слайса (с использованием набора параметров изображения) представления уровня с конкретным значением dependency_id и quality_id, равным 0), a spsB - полезная нагрузка RBSP набора параметров последовательности SVC, на которую осуществляется ссылка с помощью NAL-блоков кодированного слайса (с использованием набора параметров изображения) другого представления уровня в том же блоке доступа с тем же значением dependency_id и quality_id, большим 0,
- spsA - это полезная нагрузка RBSP активного набора параметров последовательности SVC для блока доступа, a spsB -полезная нагрузка RBSP набора параметров последовательности SVC, на которую осуществляется ссылка с помощью NAL-блоков кодированного слайса (с использованием набора параметров изображения) представления уровня с DQId, равным DQIdMax,
- spsA - это полезная нагрузка RBSP активного набора параметров последовательности SVC для блока доступа IDR, a spsB -полезная нагрузка RBSP активного набора параметров последовательности SVC для любого блока доступа, не являющегося IDR, той же кодированной видеопоследовательности.
Полезные нагрузки RBSP набора параметров последовательности SVC, spsA и spsB, ограничены в отношении их содержимого в соответствии с приведенным ниже описанием.
- Значения синтаксических элементов в синтаксической структуре данных набора параметров последовательности в spsA и spsB могут отличаться только для следующих синтаксических элементов (для остальных они должны быть одинаковы): profile_idc, constraint_setX_flag (где X равен значению от 0 до 5 включительно), reserved_zero_2bits, level_idc, seq_parameter_set_id, timing_info_present_flag, num_units_in_tick, time_scale, fixed_frame_rate_flag, nal_hrd_parameters_present_flag, vcl_hrd_parameters_present_flag, low_delay_hrd_flag, pic_struct_present_flag и синтаксические структуры hrd_parameters(). В общем, отличаться могут только указатели, относящиеся к профилю и уровню стандарта, указатели, связанные с совместимостью профиля, параметры HRD и указания, связанные с синхронизацией изображений.
- Когда spsA является активной полезной нагрузкой RBSP набора параметров последовательности, a spsB - полезной нагрузкой RBSP набора параметров последовательности SVC, на которую осуществляется ссылка с помощью NAL-блоков кодированного слайса представления уровня кодирования с DQId, равным DQIdMax, уровень, заданный параметром level_idc (или параметрами level_idc и constraint_set3_flag) в spsA является не меньшим, чем уровень, заданный level_idc (или параметрами level idc и constraint_set3_flag) в spsB.
- Когда синтаксическая структура seq_parameter_set_svc_extension() присутствует одновременно в spsA и в spsB, значения всех синтаксических элементов в синтаксической структуре seq_parameter_set_svc_extension() являются идентичными.
В стандарте SVC в сообщении SEI с информацией масштабируемости передается информация масштабируемости для подмножеств битового потока. Сообщение SEI с информацией масштабируемости не включается в сообщение SEI с масштабируемой вложенностью. Сообщение SEI с информацией масштабируемости может присутствовать в блоке доступа, где все представления зависимости являются представлениями зависимости IDR. Набор блоков доступа, включающий блок доступа, связанный с сообщением SEI с информацией масштабируемости, и все последующие блоки в порядке декодирования до следующего блока доступа, не включая его, в котором все представления зависимости являются представлениями зависимости IDR (при их наличии) или до конца битового потока (в противном случае) называют целевым набором блоков доступа. Сообщение SEI с информацией масштабируемости применимо к целевому набору блоков доступа. В сообщении SEI с информацией масштабируемости предоставляется информация для поднаборов целевого набора блоков доступа. Эти поднаборы называют масштабируемыми уровнями. Масштабируемый уровень представляет собой множество NAL-блоков внутри целевого набора блоков доступа, которое включает NAL-блоки VCL с одинаковыми значениями dependency_id, quality_id и temporal_id, указанными в сообщении SEI с информацией масштабируемости, и связанные с ними NAL-блоки, не являющиеся блоками VCL. Представлением масштабируемого уровня является набор NAL-блоков, которые представляют собой объединенный набор масштабируемого уровня и всех масштабируемых уровней, от которых этот масштабируемый уровень прямо или косвенно зависит. Представление масштабируемого уровня называют также масштабируемым представлением уровня. Выражения «представление масштабируемого уровня» и «масштабируемое представление уровня» могут также использоваться для обозначения набора блоков доступа, который может быть сформирован из NAL-блоков представления масштабируемого уровня. Представление масштабируемого уровня может декодироваться независимо от всех NAL-блоков, не принадлежащих данному представлению масштабируемого уровня. Результатом декодирования представления масштабируемого уровня кодирования является набор декодированных изображений, получаемых при декодировании набора блоков доступа представления масштабируемого уровня.
Помимо прочего, сообщение SEI с информацией масштабируемости в SVC может определять один или более масштабируемых уровней с помощью набора значений dependency_id, quality_id, и temporal_id. В частности, сообщение SEI с информацией масштабируемости может включать для каждого масштабируемого уровня i синтаксические элементы dependency_id[i], quality_id[i] и temporal_id[i], равные значениям dependency_id, quality_id и temporal_id, соответственно, для NAL-блоков VCL данного масштабируемого уровня. Все NAL-блоки VCL масштабируемого уровня имеют одинаковые значения dependency_id, quality_id и temporal_id.
Помимо прочего, сообщение SEI с информацией о масштабируемости в SVC может включать параметр layer_profile_level_idc[i] для масштабируемого уровня i, указывающий на точку соответствия представления масштабируемого уровня. Параметр layer_profile_level_idc[i] представляет собой точную копию трех байтов, включающих параметры profile_idc, constraint_set0_flag, constraint_set1 _flag, constraint_set2_flag, constraint_set3_flag, constraint_set4_flag, constraint_set5_flag, reserved_zero_2bits и level_idc, как если бы эти элементы использовались для определения соответствия профиля и уровня представления текущего масштабируемого уровня.
Как отмечалось выше, MVC является расширением стандарта H.264/AVC. Многие определения, концепции, синтаксические структуры, семантика и процедуры декодирования H.264/AVC применимы также к MVC полностью или с некоторыми обобщениями или ограничениями. Далее описаны некоторые определения, концепции, синтаксические структуры, семантика и процедуры декодирования MVC.
Блок доступа в MVC определен как набор NAL-блоков, следующих друг за другом в порядке декодирования и содержащих в точности одно первичное кодированное изображение, включающее один или более компонентов ракурса. В дополнение к первичному кодированному изображению блок доступа может также включать одно или более резервных кодированных изображений, одно вспомогательное кодированное изображение или другие NAL-блоки, не содержащие слайсов или разбиений данных слайсов кодированного изображения. В результате декодирования блока доступа всегда получают одно декодированное изображение, включающее один или более компонентов ракурса, если не происходит ошибок декодирования, ошибок битового потока или других ошибок, которые могут повлиять на декодирование. Другими словами, блок доступа в MVC содержит компоненты ракурсов для одного момента времени вывода.
Под компонентом ракурса в MVC понимается кодированное представление ракурса в одном блоке доступа.
В MVC может использоваться межракурсное предсказание, под которым понимается предсказание компонента ракурса на основе декодированных отсчетов различных компонентов ракурса одного и того же блока доступа. В MVC межракурсное предсказание реализуется аналогично внешнему предсказанию. К примеру, опорные изображения межракурсного предсказания помещаются в один и тот же список (или списки) опорных изображений, что и опорные изображения для внешнего предсказания, а указатель на опорное изображение, как и вектор движения, кодируются или вычисляются аналогично для опорных изображений межракурсного предсказания и внешнего предсказания.
Якорное изображение представляет собой кодированное изображение, для всех слайсов которого в качестве опорных могут использоваться только слайсы в том же блоке кодирования, то есть может использоваться межракурсное предсказание, но внешнее предсказание не используется; при этом для всех последующих кодированных изображений в порядке вывода не используется внешнее предсказание на основе изображений, предшествующих этому кодированному изображению в порядке декодирования. Межракурсное предсказание может использоваться для компонентов ракурса IDR, образующих часть ракурса, не являющегося базовым. Базовый ракурс в MVC представляет собой ракурс, который имеет минимальное значение порядкового номера ракурса в кодированной видеопоследовательности. Базовый ракурс может быть декодирован независимо от остальных ракурсов, при этом для него не используется межракурсное предсказание. Базовый ракурс может декодироваться с помощью декодеров, соответствующих стандарту H.264/AVC, которые поддерживают только одноракурсные профили, например, базовый профиль (Baseline Profile) или верхний профиль (High Profile) стандарта H.264/AVC.
В стандарте MVC во многих из подпроцедур процедуры декодирования MVC используются соответствующие подпроцедуры стандарта H.264/AVC с заменой терминов «изображение», «кадр» и «поле» в спецификации этих процедур в стандарте H.264/AVC на «компонент ракурса», «компонент ракурса кадра» и «компонент ракурса поля», соответственно. Аналогично, термины «изображение», «кадр» и «поле» далее часто используются как обозначающие «компонент ракурса», «компонент ракурса кадра» и «компонент ракурса поля», соответственно.
В масштабируемом многоракурсном видеокодировании один и тот же битовый поток может содержать кодированные компоненты ракурса для множества ракурсов, при этом по меньшей мере некоторые из кодированных компонентов ракурса могут кодироваться с использованием масштабирования качества и/или пространственного масштабирования.
Ракурсом текстуры называется ракурс, который представляет обычный видеоконтент, например, записанный с использованием обычной камеры и, как правило, подходит для воспроизведения на дисплее. Ракурс текстуры обычно включает изображения, имеющие три компоненты: одну компоненту яркости и две компоненты цветности. В дальнейшем, изображение текстуры обычно включает все его изображения компонент или компоненты цветности, если не указано обратное, например, с использованием таких терминов как изображение яркости текстуры и изображение цветности текстуры.
Под видеоинформацией с расширенной глубиной понимается видеоинформация текстуры, имеющая один или более ракурсов, связанных с видеоинформацией глубины, имеющей один или более ракурсов глубины. Для отображения видеоинформации с расширенной глубиной может использоваться несколько различных подходов, которые включают использование технологий «видео плюс глубина» (video plus depth, V+D), «многоракурсное видео плюс глубина» (multiview video plus depth, MVD) и видео с многоуровневой глубиной (layered depth video, LDV). При представлении типа «видео плюс глубина» (V+D) один ракурс текстуры и соответствующий ракурс глубины представлены как последовательности изображений текстуры и изображений глубины, соответственно. Представление типа MVD содержит набор ракурсов текстуры и соответствующие ракурсы глубины. В представлении типа LDV текстура и глубина центрального ракурса представлены традиционным образом, тогда как текстура и глубина других ракурсов частично представлены и охватывают только неперекрытые области, требуемые для корректного синтеза промежуточных ракурсов.
Видеоинформация с расширенной глубиной может кодироваться таким образом, что текстура и глубина кодируются независимо друг от друга. Например, ракурсы текстуры могут кодироваться как один битовый поток MVC, а ракурсы глубины могут кодироваться как другой битовый поток MVC. Альтернативно, видеоинформация с расширенной глубиной может кодироваться таким образом, что текстура и глубина кодируются совместно. При применении совместного кодирования ракурсов текстуры и ракурсов глубины для представления видеоинформации с расширенной глубиной часть декодируемых отсчетов изображения текстуры или элементов данных для декодирования изображения текстуры предсказывается или вычисляется на основе части декодированных отсчетов изображения глубины или элементов данных, полученных в процессе декодирования изображения глубины. Альтернативно или дополнительно, часть декодируемых отсчетов изображения глубины или элементов данных для декодирования изображения глубины предсказывается или вычисляется на основе части декодированных отсчетов изображения текстуры или элементов данных, полученных в процессе декодирования изображения текстуры.
Было найдено, что решением для некоторых применений трехмерного многоракурсного видео является наличие ограниченного количества входных ракурсов, например, моно- или стереоракурс плюс некоторые дополнительные данные, и воспроизведение (то есть синтез) всех требуемых ракурсов локально на стороне декодера. Из нескольких существующих технологий воспроизведения ракурса конкурентоспособной альтернативой показало себя воспроизведение на основе изображения глубины (depth image-based rendering, DIBR).
Упрощенная модель 3DV-системы на основе DIBR показана на фиг. 5. На вход трехмерного видеокодека поступают стереоскопическое видео и соответствующая информация глубины со стереоскопической базовой линией b0. Затем трехмерный видеокодек синтезирует набор виртуальных ракурсов между двумя входными ракурсами с базовой линией (bi<b0). Алгоритмы DIBR могут также обеспечивать возможности экстраполяции ракурсов за границы двух входных ракурсов, а не только между ними. Аналогично, алгоритмы DIBR могут обеспечивать возможности синтеза ракурсов на основе одного ракурса текстуры и соответствующего ракурса глубины. Однако для возможности многоракурсного воспроизведения на базе DIBR на стороне декодера должны быть доступны данные текстуры вместе с соответствующими данными глубины.
В таких 3DV-системах информация глубины формируется на стороне кодера в форме изображений глубины (называемых также картами глубины) для каждого видеокадра. Карта глубины представляет собой изображение с информацией глубины для каждого пикселя. Каждый отсчет карты глубины отражает расстояние соответствующего отсчета текстуры от плоскости расположения камеры. Другими словами, если ось z лежит на оси съемки камер (и, следовательно, перпендикулярно плоскости расположения камер), то отсчет карты глубины представляет собой значение на оси z.
Информация глубины может быть получена с помощью различных средств. Например, глубина в трехмерной сцене может вычисляться на основе диспарантности, регистрируемой ведущими съемку камерами. Алгоритм вычисления глубины принимает стереоскопический ракурс на входе и вычисляет локальную диспарантность между двумя смещенными изображениями ракурса. Каждое изображение обрабатывается попиксельно в перекрывающихся блоках, при этом для каждого блока пикселей выполняют горизонтальный локализованный поиск соответствующего блока в смещенном изображении. После вычисления пиксельной диспарантности соответствующее значение z глубины получают с помощью уравнения (1):
где f - фокусное расстояние камеры, a b - расстояние базовой линии между камерами, как показано на фиг. 6. При этом d обозначает диспарантность, наблюдаемую между двумя камерами, а смещение Δd камеры отражает возможное несовпадение оптических центров двух камер по горизонтали. Однако поскольку такой алгоритм основан на преобразовании блоков, качество оценки глубины на основе диспарантности зависит от контента и во многих случаях не является высоким. Например, не существует простого решения для оценки глубины во фрагментах изображения, где встречаются очень гладкие области без текстур или с высоким уровнем шума.
Карты диспарантности или параллакса, такие как карты параллакса, определенные в международном стандарте 23002-3 ISO/IEC, могут обрабатываться аналогично картам глубины. Глубина и диспарантность имеют прямое соответствие и могут вычисляться на основе друг друга с использованием математического уравнения.
t
t
t+1
t+1
t+2
t+2
t
t
t+1
t+1
t+2
t+2
t
t
t
t
t+1
t+1
t+1
t+1
Порядок кодирования и декодирования компонентов ракурсов текстуры и ракурсов глубины в блоке доступа, как правило, является таким, чтобы данные кодированного компонента ракурса не чередовались с другим кодированным компонентом ракурса, а данные блока доступа не чередовались с данными другого блока доступа в битовом потоке или в порядке декодирования. Например, могут присутствовать два ракурса текстуры и два ракурса глубины (T0, T1, T0, T1, T0, T1, D0, D1, D0, D1, D0, D1) в различных блоках доступа (t, t+1, t+2), как показано на фиг. 7, где блок t доступа, включающий компоненты (T0, T1, D0, D1) ракурса текстуры и ракурса глубины предшествует в битовом потоке и в порядке декодирования блоку t+1 доступа, включающему компоненты ракурса текстуры и ракурса глубины (T0, T1, D0, D1).
Порядок кодирования и декодирования компонентов ракурса в блоке доступа может задаваться форматом кодирования или определяться кодером. Компонент ракурса текстуры может кодироваться перед соответствующим ракурсом глубины для того же ракурса, и, следовательно, компоненты ракурса глубины могут предсказываться на основе компонентов ракурса текстуры этого же ракурса. Например, такие компоненты ракурса текстуры могут кодироваться MVC-кодером и декодироваться MVC-декодером. Расширенным компонентом ракурса текстуры в настоящем документе называется компонент ракурса текстуры, который кодируется после соответствующего компонента ракурса глубины для того же ракурса и, следовательно может предсказываться на основе соответствующего компонента ракурса глубины. Компоненты ракурса текстуры и глубины в одном блоке доступа кодируются, как правило, в порядке зависимости ракурсов. Компоненты ракурса текстуры и глубины могут иметь любой порядок относительно друг друга, если их порядок не нарушает описанные выше ограничения.
Ракурсы текстуры и глубины могут кодироваться в один битовый поток, в котором часть ракурсов текстуры может быть совместима с одним или более стандартами видеокодирования, например H.264/AVC и/или MVC. Другими словами, декодер может быть способен декодировать часть ракурсов текстуры в таком битовом потоке, при этом остальные ракурсы текстуры и ракурсы глубины он может отбрасывать.
В этом контексте кодер, который кодирует один или более ракурсов текстуры и глубины в один битовый поток, совместимый с H.264/AVC и/или MVC, называют кодером 3DV-ATM. Битовые потоки, формируемые таким кодером, могут быть названы битовыми потоками 3DV-ATM. Битовые потоки 3DV-ATM могут включать часть ракурсов текстуры, которые декодеры H.264/AVC и/или MVC не способны декодировать, а также ракурсы глубины. Декодер, способный декодировать все ракурсы битовых потоков 3DV-ATM, может называться декодером 3DV-ATM.
Битовые потоки 3DV-ATM могут включать выбранное количество AVC/MVC-совместимых ракурсов текстуры. Ракурсы глубины для AVC/MVC-совместимых ракурсов текстуры могут предсказываться на основе этих ракурсов текстуры. Для остальных ракурсов текстуры может использоваться расширенное кодирование текстуры, а для ракурсов глубины может использоваться кодирование глубины.
Во многих стандартах видеокодирования для битовых потоков определены модели буферизации и параметры буферизации. Такие модели буферизации могут быть названы гипотетическим опорным декодером (HRD) или устройством проверки видеобуфера (Video Buffer Verifier, VBV). Битовый поток, соответствующий стандарту, отвечает модели буферизации, набор параметров буферизации для которой определен в соответствующем стандарте. Эти параметры буферизации для битового потока могут сигнализироваться явно или неявно. «Неявная сигнализация» означает то, что применяются заданные по умолчанию значения параметров буферизации в соответствии с профилем и уровнем. Параметры HRD/VBV используются, помимо прочего, для наложения ограничений на изменения битовой скорости битовых потоков, соответствующих стандарту.
Проверка соответствия стандарту с помощью HRD может относиться, например, к следующим двум типам битовых потоков. Первым таким типом битового потока, называемым типом I битового потока, является поток NAL-блоков, содержащий только NAL-блоки VCL и NAL-блоки с данными заполнения для всех блоков доступа в битовом потоке. Второй тип битового потока, называемый типом II битового потока, может содержать, в дополнение к NAL-блокам VCL и NAL-блокам данных заполнения, для всех блоков доступа в битовом потоке, дополнительные NAL-блоки, не являющиеся блоками VCL и не являющиеся NAL-блоками с данными заполнения и/или такими синтаксическими элементами как leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, образующими байтовый поток из потока NAL-блоков.
Могут использоваться HRD-параметры двух типов (HRD-параметры NAL и HRD-параметры VCL). Параметр HRD может указываться с помощью информации об используемости видео, включенной в синтаксическую структуру набора параметров последовательности.
Наборы параметров последовательности и наборы параметров изображения, на которые осуществляются ссылки в NAL-блоках VCL, а также соответствующие сообщения SEI с периодом буферизации и сообщения SEI синхронизации изображений, могут своевременно передаваться в устройство HRD либо в битовом потоке (с помощью NAL-блоков, не являющихся блоками VCL), либо посредством передачи отдельно от данных, вне битового потока, например, с использованием механизма сигнализации, такого как параметры мультимедийной информации, включенные в строку мультимедийной информации в описании сеанса, например, в формате согласно протоколу описания сеансов (Session Description Protocol, SDP). При подсчете битов в декодере HRD могут учитываться только соответствующие биты, фактически присутствующие в битовом потоке. При передаче содержимого NAL-блока, не являющегося VCL, для его применения, не с помощью его включения в битовый поток, а иными средствами, для представления содержимого этого NAL-блока, не являющегося VCL, может использоваться тот же синтаксис, который использовался бы, если NAL-блоки, не являющиеся блоками VCL, имелись бы в битовом потоке, однако это не является обязательным.
Декодер HRD может включать буфер кодированных изображений (coded picture buffer, СРВ), процедуру мгновенного декодирования, буфер декодированных изображений (picture buffer, DPB) и процедуру выходного кадрирования.
Буфер СРВ может выполнять операции над блоками декодирования. Блок декодирования может быть блоком доступа или подмножеством блока доступа, например, целым числом NAL-блоков. Выбор блока декодирования может быть указан кодером в битовом потоке.
Ниже описано функционирование декодера HRD. Данные, связанные с блоками декодирования, поступающие в буфер СРВ в соответствии с заданным расписанием поступления, могут предоставляться из гипотетического планировщика потока (Hypothetical Stream Scheduler, HSS). Расписание поступления данных может определяться кодером и указываться, например, с помощью сообщений SEI синхронизации изображения, и/или расписание поступления может быть получено, например, на основе битовой скорости, что может быть указано, например, в качестве части параметров HRD в информации об используемости видео. Параметр HRD в информации об используемости видео может содержать множество наборов параметров, каждый из которых относится к различной битовой скорости или расписанию доставки данных. Данные, связанные с каждым из блоков декодирования, могут удаляться и декодироваться мгновенно с помощью процедуры мгновенного декодирования в моменты времени удаления данных из буфера СРВ. Время удаления данных из буфера СРВ может определяться, например, с использованием начальной задержки буферизации в буфере СРВ, которая может определяться кодером и указываться, например, с помощью сообщения SEI с периодом буферизации и с использованием дифференциальных задержек удаления, указываемых для каждого изображения, например, с помощью сообщений SEI синхронизации изображений. Каждое декодированное изображение помещается в буфер DPB. Декодированное изображение может быть удалено из буфера, либо после вывода из буфера DPB, либо после момента времени, когда оно становится ненужным как опорное для внешнего предсказания, в зависимости от того, какой момент времени наступит позднее. Таким образом, функционирование буфера СРВ декодера HRD может включать синхронизацию поступления битового потока, синхронизацию удаления блоков декодирования и декодирование блоков декодирования, тогда так функционирование буфера DPB декодера HRD может включать удаление изображений из буфера DPB, вывод изображений, а также маркировку и хранение текущего декодируемого изображения.
Декодер HRD может использоваться для проверки соответствия битовых потоков и декодеров стандарту.
Требования к соответствию стандартам в декодере HRD могут, например, включать описанные ниже и/или аналогичные требования. Не допускается переполнение буфера СРВ (относительно размера, который может быть указан, например, в параметрах HRD информации об используемости видео), а также его «незаполнение» (то есть время удаления блока декодирования не может быть меньше, чем время поступления последнего бита этого блока декодирования). Может требоваться, чтобы количество изображений в буфере DPB было меньше или равно определенному максимальному количеству, которое может указываться, например, в наборе параметров последовательности. Может требоваться, чтобы все изображения, используемые в качестве опорных для предсказания, присутствовали в буфере DPB. Может требоваться, чтобы интервал вывода последовательных изображений из буфера DPB не был меньше определенного минимального значения.
Требования соответствия декодера HRD стандарту могут, например, включать описанные ниже и/или аналогичные требования. От декодера, в отношении которого заявлено соответствие определенному профилю и уровню, может требоваться успешное декодирование всех соответствующих стандарту битовых потоков, определенных для соответствия декодера стандарту, при условии, что все наборы параметров последовательности и наборы параметров изображения, на которые осуществляются ссылки в NAL-блоках VCL, а также сопутствующие сообщения SEI с периодом синхронизации и сообщения SEI синхронизации изображений передаются в декодер своевременно либо в битовом потоке (с использованием NAL-блоков, не являющихся блоками VCL), либо с помощью внешних средств. Для декодера может быть заявлено два типа соответствия стандарту: соответствие по синхронизации вывода и соответствие по порядку вывода.
Для проверки соответствия декодера стандарту тестовые битовые потоки, соответствующие заявленному профилю и уровню, могут передаваться, с помощью гипотетического планировщика потока (hypothetical stream scheduler, HSS), одновременно в декодер HRD и тестируемый декодер (decoder under test, DUT). Может требоваться, чтобы все изображения, выводимые декодером HRD, выводились также и декодером DUT, и для каждого изображения на выходе декодера HRD значения всех отсчетов на выходе декодера DUT для соответствующего изображения были равны значениям отсчетов на выходе декодера HRD.
Для соответствия синхронизации вывода планировщик HSS может работать, например, с использованием расписаний доставки, выбираемых из указанных в параметрах HRD информации об используемости видео или с использованием «интерполированных» расписаний доставки. Одно и то же расписание доставки может использоваться для обоих декодеров, HRD и DUT. Для соответствия синхронизации вывода декодера может требоваться, чтобы время (относительно момента доставки первого бита) вывода изображения для обоих декодеров, HRD и DUT, было одинаковым и не превышало фиксированной задержки.
Для соответствия порядка вывода декодера планировщик HSS может доставлять битовый поток в декодер DUT «по требованию» из DUT, что означает, что HSS доставляет биты (в порядке декодирования), только если декодеру DUT нужно больше битов для продолжения выполняемой им обработки. Планировщик HSS может доставлять битовый поток HRD с использованием одного из расписаний, указанных в битовом потоке и ограничивающих битовую скорость и размер буфера СРВ. Может требоваться, чтобы порядок вывода изображений был одинаковым для обоих декодеров, HRD и DUT.
В стандарте SVC сообщение SEI с периодом буферизации, которое инициирует декодер HRD, выбирают следующим образом. Если блок доступа содержит одно или более сообщений SEI с периодом буферизации, которые включены в сообщения SEI с масштабируемой вложенностью и связаны со значениями DQId в диапазоне от (DQIdMax >> 4) << 4) до (((DQIdMax >> 4) << 4)+15) включительно, последнее из этих сообщений SEI с периодом буферизации в порядке декодирования будет сообщением SEI с периодом буферизации, которое инициирует декодер HRD. Пусть hrdDQId - наибольшее значение выражения 16 * sei_dependency_id[i] + sei_quality_id[i], которое связано с сообщением SEI с масштабируемой вложенностью, содержащим сообщение SEI с периодом буферизации, которое инициализирует декодер HRD, и пусть hrdDId и hrdQId равны hrdDQId >> 4 и hrdDQId & 15 соответственно, a hrdTId - значение sei_temporal_id, связанное с сообщением SEI с масштабируемой вложенностью, которое содержит сообщение SEI с периодом буферизации, инициализирующее декодер HRD. В стандарте SVC сообщения SEI синхронизации изображений, которые могут определять время удаления блоков доступа из буфера СРВ и время вывода из буфера DPB, являются сообщениями SEI синхронизации изображений, которые включены в сообщения SEI с масштабируемой вложенностью, связанные со значениями sei_dependency_id[i], sei_quality_id [i] и sei_temporal_id, равными hrdDId, hrdQId и hrdTId, соответственно. В стандарте SVC наборы параметров HRD, используемые для проверки соответствия стандарту, представляют собой наборы параметров HRD, включенные в расширение SVC информации об используемости видео активного набора параметров последовательности SVC, который связан со значениями vui_ext_dependency_id[i], vui_ext_quality_id[i] и vui_ext_temporal_id[i], равными hrdDId, hrdQId и hrdTId соответственно.
В стандарте SVC информация об используемости видео расширена и включает по выбору информацию синхронизации, наборы параметров HRD и наличие информации о структуре изображения для подмножеств битового потока кодированных видеопоследовательностей (включая полные кодированные видеопоследовательности). Кодером может быть выбрано и указано в расширении параметров VUI (video usability information, информация об используемости видео) любое количество подмножеств битового потока, для которых предоставляется расширенная информация VUI. Каждое такое подмножество битового потока характеризуется значениями dependency_id, quality_id и temporal_id, которые включены в синтаксические элементы vui_extjdependency_id[i], vui_ext_quality[i] и vui_ext_temporal_id[i] соответственно, где i - порядковый номер подмножества битового потока. Подмножество битового потока с порядковым номером i, для которого могут быть заданы информация синхронизации, наборы параметров HRD и наличие информации о структуре изображения, может быть получено применением процедуры извлечения битового подпотока с параметрами vui_ext_dependency_id[i], vui_ext_quality[i] и vui_ext_temporal_id[i] в качестве ее входных данных.
На фиг. 8 представлена высокоуровневая блок-схема одного из вариантов осуществления кодера 200, способного кодировать ракурсы текстуры и ракурсы глубины, а на фиг. 9 представлен декодер 210, способный декодировать ракурсы текстуры и ракурсы глубины. На данных чертежах сплошными линиями обозначен основной поток данных, а штриховыми линиями обозначена сигнализация информации управления. Кодер 200 может принимать компоненты 201 текстуры, подлежащие кодированию кодером 202 текстуры, и компоненты 203 карты глубины, подлежащие кодированию кодером 204 глубины. Во время кодирования кодером 200 компонентов текстуры в соответствии AVC/MVC, первый выключатель 205 может быть разомкнут. Во время кодирования кодером 200 расширенных компонентов текстуры первый выключатель 205 может быть замкнут, чтобы информация, формируемая кодером 204 глубины, могла поступать в кодер 202 текстуры. Кодер в данном примере включает также второй выключатель 206, который может управляться описанным ниже способом. Второй выключатель 206 замыкается во время кодирования кодером информации глубины ракурсов AVC/MVC, при этом во время кодирования кодером информации глубины расширенных ракурсов текстуры второй выключатель 206 размыкается. Кодер 200 может выводить битовый поток 207, содержащий кодированную видеоинформацию.
Декодер 210 может функционировать аналогичным образом, но по меньшей мере частично в обратном порядке. Декодер 210 может принимать битовый поток 207, содержащий кодированную видеоинформацию. Декодер 210 включает декодер 211 текстуры для декодирования информации текстуры и декодер 212 глубины для декодирования информации глубины. Может иметься третий выключатель 213 для управления доставкой информации из декодера 212 глубины в декодер 211 текстуры, и четвертый выключатель 214 для управления доставкой информации из декодера 211 текстуры в декодер 212 глубины. Когда декодер 210 декодирует ракурсы текстуры AVC/MVC, третий выключатель 213 может быть разомкнут, а когда декодер 210 декодирует расширенные ракурсы текстуры, третий выключатель 213 может быть замкнут. Когда декодер 210 декодирует информацию глубины для ракурсов текстуры AVC/MVC четвертый выключатель 214 может быть замкнут, а когда декодер 210 декодирует информацию глубины для расширенных ракурсов текстуры, четвертый выключатель 214 может быть разомкнут. Декодер 210 может выводить восстановленные компоненты 215 текстуры и восстановленные компоненты 216 карты глубины.
Во многих видекодерах для поиска режимов кодирования с оптимальным соотношением "битовая скорость - искажение", например, для поиска необходимого режима макроблоков и связанных с ними векторов движения, используется целевая функция Лагранжа. В целевой функции такого типа используется весовой коэффициент, или λ, связывающий точное или оцененное искажение изображения в результате кодирования с потерями и точное или оцененное количество информации, необходимое для представления значений пикселей или отсчетов в некоторой области изображения. Целевая функция Лагранжа может быть представлена следующим уравнением:
C=D+λR,
где С - минимизируемое значение целевой функции, D - искажение изображения (например, среднеквадратичная ошибка между значениями пикселей или отсчетов в исходном блоке изображения и в кодированном блоке изображения) для рассматриваемых в текущий момент режима и векторов движения, λ - коэффициент Лагранжа, a R - количество битов, необходимых для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления возможных векторов движения).
В стандарт или в спецификацию кодирования могут входить процедуры извлечения битовых подпотоков, например, такие процедуры определены в стандартах SVC, MVC и HEVC. Под процедурой извлечения битового подпотока понимается преобразование битового потока путем перемещения NAL-блоков в битовый подпоток. Такой битовый подпоток остается соответствующим стандарту. Например, в проекте стандарта HEVC битовый поток, формируемый исключением всех NAL-блоков VCL с temporal_id, большим или равным выбранному значению, и включением всех остальных NAL-блоков VCL, остается соответствующим стандарту. Следовательно, для изображений с temporal_id, равным TID, в качестве опорных для предсказания не используются изображения с temporal_id, большим TID.
Первый профиль стандарта или спецификации кодирования, например, базовый профиль стандарта H.264/AVC, может быть определен как включающий только конкретные типы изображений или режимы кодирования, например изображения или режимы кодирования с внутренним предсказанием (I) и с внешним предсказанием (Р). Второй профиль стандарта или спецификации кодирования, например, высокий профиль стандарта H.264/AVC, может быть определен как включающий больше различных типов изображений или режимов кодирования, например изображения или режимы кодирования с внутренним предсказанием, внешним предсказанием и с двунаправленным предсказанием (В). Битовый поток соответствует второму профилю, при этом битовый поток, содержащий подмножество его изображений, может также соответствовать первому профилю. Например, в общей группе последовательность изображений представляет собой IBBP, то есть между опорным кадром внутреннего предсказания (I) и внешнего предсказания (Р) расположены два неопорных кадра (В). Базовый уровень кодирования может в этом случае состоять из опорных кадров. Битовый поток в целом может соответствовать верхнему профилю (который допускает наличие В-изображений), тогда как битовый поток базового уровня кодирования может также соответствовать базовому профилю (который не допускает наличия В-изображений).
Процедура извлечения битового подпотока может применяться для множества различных целей, при этом некоторые из них приведены в качестве примеров ниже. В первом примере формируется мультимедийное сообщение, для которого весь битовый поток соответствует конкретному профилю и уровню стандарта, при этом битовый подпоток, включающий базовый уровень кодирования, соответствует другому профилю и уровню. В момент создания сообщения оконечное устройство, направляющее это сообщение, не имеет информации о возможностях принимающего оконечного устройства. Центр службы обмена мультимедийными сообщениями (Multimedia Messaging Service Center, MMSC) или аналогичный элемент, напротив, осведомлен о возможностях приемного оконечного устройства и отвечает за соответствующую адаптацию сообщения. В данном примере приемное оконечное устройство способно декодировать подмножество битового потока, включающее базовый уровень кодирования, но не весь битовый поток. Следовательно, процедура адаптации с использованием настоящего изобретения требует только отбрасывания или удаления NAL-блоков с идентификатором масштабируемого уровня, указывающим на уровень выше базового уровня, в соответствии с процедурой извлечения битового подпотока.
Во втором примере масштабируемый битовый поток кодируется и хранится на сервере потоковой передачи информации. Профиль, уровень, а также, возможно, параметры HRD/VBV для каждого уровня кодирования, сигнализируются в хранимом файле. При описании доступного сеанса сервер может создавать описание, например, в соответствии с протоколом описания сеанса (SDP) или описанием представления медиаданных (Media Presentation Description, MPD), или аналогичными протоколами, для каждого уровня, или альтернативно масштабируемого битового потока в том же самом файле, таким образом, чтобы клиент потоковой передачи информации мог принять решение о наиболее подходящем уровне кодирования и выбрать этот наиболее подходящий уровень для потокового воспроизведения в соответствии с SDP или аналогичным описанием. Если сервер не обладает априорной информацией о возможностях приемника, предпочтительно, создаются множественные SDP- или аналогичные описания на основе одного контента, и эти описания затем рассматриваются как альтернативы. Впоследствии клиент может выбирать описание, наиболее соответствующее его возможностям. Если сервер обладает информацией о возможностях приемника (например, с помощью механизма UAProf, определенного в документе 3GPP TS 26.234), то, предпочтительно, сервер выбирает наиболее подходящий профиль и уровень для приемника из профилей и уровней стандарта всего битового потока и всех подпотоков. Процедура извлечения битового подпотока может выполняться с принятием решения о передаче данных на основе их соответствия выбранному SDP-или аналогичному описанию.
В третьем примере поток, например, описанный для второго примера, рассылается посредством многоадресной или широковещательной передачи в несколько оконечных устройств. Сервер многоадресной/широковещательной передачи данных может объявлять о всех доступных уровнях или альтернативах декодирования и воспроизведения, каждая из которых характеризуется комбинацией профиля и уровня и, возможно, также параметрами HRD/VBV. Клиент в этом случае может быть осведомлен, из объявления о сеансе многоадресной/широковещательной передачи данных, о наличии наиболее подходящего для него уровня кодирования и может выбирать наиболее подходящий уровень кодирования для воспроизведения. Процедура извлечения битового подпотока может использоваться для принятия решения о передачи элементарных блоков данных, например, NAL-блоков, в каждой группе многоадресной передачи или аналогичной группе.
В четвертом примере использования настоящего изобретения, для локальных приложений воспроизведения, даже если переданный поток не может быть декодирован полностью, остается возможность декодировать и просматривать его часть. Как правило, если проигрыватель получает информацию о том, что весь поток имеет комбинацию профиля и уровня вместе с параметрами HRD/VBV, не подходящую для декодирования, в нем принимается решение о невозможности декодирования и воспроизведения. Альтернативно или дополнительно, пользователь может выбрать операцию ускоренного воспроизведения в прямом и в обратном направлении, при этом в проигрывателе уровень может выбран таким образом, чтобы позволять декодировать данные быстрее, чем в реальном времени. В случае если в проигрывателе выбран уровень, не являющийся самым высоким уровнем в битовом потоке, может выполняться процедура извлечения битового подпотока.
На фиг. 1 показана схема системы видеокодирования в соответствии с одним из вариантов осуществления настоящего изобретения, в виде схемы примера устройства или электронного устройства 50, которое может включать кодек, соответствующий одному из вариантов осуществления настоящего изобретения. На фиг. 2 показана схема устройства в соответствии с одним из примеров осуществления настоящего изобретения. Далее будут описаны элементы, показанные на фиг. 1 и 2.
Электронное устройство 50 может являться, например, мобильным терминалом или пользовательским устройством системы беспроводной связи. Однако следует отметить, что варианты настоящего изобретения могут быть реализованы в рамках любого электронного устройства или устройства, для которого может требоваться кодирование и/или декодирование видеоизображений. Например, в некоторых из вариантов осуществления настоящего изобретения устройство может быть реализовано в виде микросхемы или чипсета (который, в свою очередь, может применяться в одном из упомянутых выше устройств). Другими словами, устройство может включать один или более физических корпусов (например, микросхем), включающих материалы, компоненты и/или провода в конструктивном узле (например, на материнской плате). Такой конструктивный узел может обеспечивать физическую прочность, малые размеры и/или ограничение электрического взаимодействия для расположенных в нем схем компонентов. Такое устройство может, соответственно, в некоторых случаях быть сконфигурировано для реализации одного из вариантов осуществления настоящего изобретения в одной микросхеме, или в качестве одной «системы на кристалле». Собственно, в некоторых случаях микросхема или чипсет могут являться средством выполнения одной или более операций для обеспечения описанной в настоящем документе функциональности.
Устройство 50 может содержать корпус 30 для размещения и защиты компонентов устройства. Устройство 50 может также содержать дисплей 32, выполненный в виде жидкокристаллического дисплея. В других вариантах осуществления настоящего изобретения дисплей может быть выполнен в соответствии с любой подходящей технологией для воспроизведения изображений или видео. Устройство 50 может также содержать клавиатуру 34. В других вариантах осуществления настоящего изобретения могут использоваться любые подходящие механизмы интерфейса ввода данных или пользовательского интерфейса. Например, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного экрана. Устройство может содержать микрофон 36 или любое подходящее средство ввода аудиосигнала, которое может являться средством ввода цифрового или аналогового сигнала. Устройство 50 может также содержать средство вывода аудиосигнала, которое в вариантах осуществления настоящего изобретения может представлять собой одно из следующих средств: наушники 38, динамик либо аналоговое или цифровое подключение к аудиовыходу. Устройство 50 может также содержать батарею 40 (или в других вариантах осуществления настоящего изобретения устройство может получать питание от любого подходящего мобильного источника энергии, такого как солнечный фотоэлемент, топливный элемент или аккумулятор часового механизма). Устройство может также содержать инфракрасный порт 42 для ближней связи с другими устройствами. В других вариантах осуществления настоящего изобретения устройство 50 может также содержать любое подходящее решение для ближней связи, такое как беспроводное соединение Bluetooth или проводное соединение USB/firewire.
Устройство 50 может включать контроллер или процессор для управления устройством 50 (причем термины «контроллер» и «процессор» в настоящем документе являются синонимами и обозначены цифрой 56). Контроллер 56 может быть соединен с памятью 58, в которой, согласно вариантам осуществления настоящего изобретения, могут храниться данные изображения и аудиоданные и/или инструкции для выполнения контроллером 56. Контроллер 56 может быть также соединен со схемой 54 кодека, подходящей для выполнения кодирования и декодирования аудио и/или видео или участия в кодировании и декодировании, выполняемых контроллером 56.
Процессор 56 может быть реализован различными способами. Например, процессор может быть реализован в виде одного или более различных аппаратных средств обработки данных, таких как сопроцессор, микропроцессор, контроллер, цифровой сигнальный процессор (digital signal processor, DSP), процессорный элемент с сопровождающим процессором DSP или без него, или любые другие схемы обработки данных, включая интегральные схемы, например, такие как ASIC (application specific integrated circuit, специализированная интегральная схема), FPGA (field programmable gate array, программируемая вентильная матрица), микроконтроллерный блок (microcontroller unit, MCU), аппаратный ускоритель, специализированная компьютерная микросхема и т.п. Соответственно, в некоторых из вариантов осуществления настоящего изобретения процессор может включать одно или более процессорных ядер, сконфигурированных для независимой работы. Многоядерный процессор позволяет выполнять многопроцессорную обработку данных в одном физическом корпусе. Дополнительно или альтернативно, процессор может включать один или более процессоров, сконфигурированных для работы в тандеме с помощью шины для обеспечения независимого исполнения инструкций, конвейеризации и/или многопоточной обработки.
В одном из примеров осуществления настоящего изобретения процессор 56 может быть сконфигурирован для исполнения инструкций, хранимых в запоминающем устройстве 58 или доступных для процессора иным образом. Альтернативно или дополнительно, процессор может быть сконфигурирован для исполнения аппаратно запрограммированной функциональности. Процессор, сконфигурированный посредством аппаратных или программных средств, или их комбинации, может представлять собой объект (например, физически реализованный в виде схем), способный выполнять операции в соответствии с одним из вариантов осуществления настоящего изобретения, если он сконфигурирован надлежащим образом. Таким образом, например, если процессор реализован в виде схемы ASIC, FPGA или аналогичной схемы, процессор может представлять собой аппаратное обеспечение, сконфигурированное для выполнения описанных в настоящем документе операций. Альтернативно, в качестве другого примера, когда процессор реализован как устройство исполнения программных инструкций, эти инструкции могут конфигурировать процессор для выполнения алгоритмов и/или операций, описанных в настоящем документе, при исполнении этих инструкций. Однако в некоторых случаях процессор может представлять собой процессор конкретного устройства (например, вычислительного устройства), приспособленного для применения одного из вариантов осуществления настоящего изобретения с помощью дополнительного конфигурирования процессора посредством инструкций для выполнения алгоритмов и/или операций, описанных в настоящем документе. Процессор может включать, помимо прочего, схему синхронизации, арифметико-логическое устройство (arithmetic logic unit, ALU) и логические вентили, сконфигурированные для поддержки функционирования процессора.
Память 58 может включать, например, запоминающее устройство, например, одно или более энергозависимых и/или энергонезависимых запоминающих устройств. Другими словами, например, запоминающее устройство может представлять собой электронное устройство для хранения данных (например, машиночитаемый носитель), включающее вентили, сконфигурированные для хранения данных (например, битов), которые могут извлекаться машиной (например, таким вычислительным устройством как процессор). Запоминающее устройство может быть сконфигурировано для хранения данных, приложений, инструкций и т.п.для обеспечения возможности исполнения указанным устройством различных функций в соответствии с примерами осуществления настоящего изобретения. Например, запоминающее устройство может быть сконфигурировано для буферизации входных данных, обрабатываемых процессором. Дополнительно или альтернативно, запоминающее устройство может быть сконфигурировано для хранения инструкций, исполняемых процессором 56. Устройство 50 может также содержать считыватель 48 с карты и смарт-карту 46, например, UICC, и считыватель UICC для предоставления пользовательской информации, которые подходят для предоставления аутентификационной информации для аутентификации и авторизации пользователя в сети.
Устройство 50 может включать интерфейс связи, который может представлять собой любые средства, например, устройство или схемы, реализованные в аппаратном обеспечении или в комбинации аппаратного и программного обеспечения, которые сконфигурированы для приема данных в устройстве и/или для передачи данных из устройства. В связи с этим, устройство 50 может содержать схему 52 радиоинтерфейса, соединенную с контроллером и позволяющую генерировать сигналы для беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или локальной сетью беспроводной связи. Устройство 50 также может включать антенну 44, соединенную со схемой 52 радиоинтерфейса для передачи радиочастотных сигналов, формируемых в схеме 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств). В определенном окружении интерфейс связи может альтернативно или дополнительно поддерживать проводную связь. Соответственно, например, интерфейс связи может включать модем связи и/или иное аппаратное/программное обеспечение для поддержки связи по кабелю, цифровой абонентской линии (digital subscriber line, DSL), по шине USB или с помощью других механизмов.
В некоторых вариантах осуществления настоящего изобретения устройство 50 содержит камеру, позволяющую записывать или обнаруживать отдельные кадры, которые затем передаются для обработки в кодек 54 или в контроллер. В других вариантах осуществления настоящего изобретения устройство может принимать для обработки данные видеоизображения от соседнего устройства перед передачей и/или сохранением этих данных. В других вариантах осуществления настоящего изобретения устройство 50 может принимать изображение для кодирования/декодирования по беспроводному или проводному соединению.
На фиг. 3 показана система видеокодирования, включающая множество устройств, сетей и сетевых элементов в соответствии с одним из примеров осуществления настоящего изобретения. На фиг. 3 показана система, в которой могут использоваться варианты осуществления настоящего изобретения. Система 10 содержит множество устройств связи, которые могут взаимодействовать друг с другом через одну или более сетей. Система 10 может включать любое объединение проводных или беспроводных сетей, включая, не ограничиваясь этим, беспроводную телефонную сотовую сеть (например, сеть GSM, UMTS, CDMA и т.д.), локальную беспроводную сеть (WLAN, wireless local area network), определенную, например, любым из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную сеть Ethernet, кольцевую локальную сеть с маркерным доступом (token ring), глобальную сеть и Интернет.
Система 10 может содержать как проводные, так и беспроводные средства связи или устройства 50, подходящие для реализации вариантов настоящего изобретения. Например, система, показанная на фиг. 3, включает мобильную телефонную сеть 11 и Интернет 28. Соединение с Интернетом 28 может включать, не ограничиваясь этим, беспроводные соединения для дальней связи, беспроводные соединения для ближней связи и различные проводные соединения, включая, не ограничиваясь этим, телефонные линии, кабельные линии, линии электропитания и аналогичные тракты связи.
Примеры устройств связи, показанные в системе 10, могут включать, не ограничиваясь этим, электронное устройство или устройство 50, объединение персонального цифрового помощника (PDA, personal digital assistant) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (IMD, integrated messaging device), настольный компьютер 20, ноутбук 22. Устройство 50 может быть стационарным или мобильным устройством, перемещаемым отдельным пользователем. Устройство 50 может также располагаться в транспортном средстве, включая, не ограничиваясь этим, легковой автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.
Некоторые устройства могут посылать и принимать вызовы и сообщения и осуществлять связь с провайдерами услуг через беспроводное соединение 25 с базовой станцией 24. Базовая станция 24 может соединяться с сетевым сервером 26, который позволяет выполнять связь между мобильной телефонной сетью 11 и Интернетом 28. Система может содержать дополнительные устройства связи и устройства связи различных типов.
Устройства связи могут осуществлять связь с использованием различных технологий передачи, включая, не ограничиваясь этим, множественный доступ с кодовым разделением каналов (CDMA, code division multiple access), глобальные системы мобильной связи (GSM, global system for mobile communications), универсальную систему мобильной связи (UMTS, universal mobile telecommunications system), множественный доступ с временным разделением каналов (TDMA, time divisional multiple access), множественный доступ с частотным разделением каналов (FDMA, frequency division multiple access), протокол управления передачей/Интернет-протокол (TCP-IP, transmission control protocol-internet protocol), службу обмена короткими сообщениями (SMS, short messaging service), службу обмена мультимедийными сообщениями (MMS, multimedia messaging service), электронную почту, службу мгновенного обмена сообщениями (IMS, instant messaging service), Bluetooth, IEEE 802.11 и любые другие аналогичные технологии беспроводной связи. Устройства связи, задействованные в реализации различных вариантов осуществления настоящего изобретения, могут осуществлять связь с использованием различных сред передачи, включая, не ограничиваясь этим, радиосоединения, инфракрасные, лазерные, кабельные соединения и любые другие подходящие соединения.
На фиг. 4а и 4b показаны схемы кодирования и декодирования видеоинформации в соответствии с одним из примеров осуществления настоящего изобретения.
На фиг. 4а показан кодер, который включает устройство 302 предсказания пикселей, кодер 303 ошибки предсказания и декодер 304 ошибки предсказания. Также на фиг. 4а показан один из вариантов осуществления устройства 302 предсказания пикселей, включающего устройство 306 внешнего предсказания, устройство 308 внутреннего предсказания, селектор 310 режима, фильтр 316 и память 318 опорных кадров. В данном варианте осуществления настоящего изобретения селектор 310 режима включает процессор 381 блоков и вычислитель 382 целевой функции. Кодер может также включать энтропийный кодер 330 для энтропийного кодирования битового потока.
На фиг. 4b показан один из вариантов осуществления устройства 306 внешнего предсказания. Устройство 306 внешнего предсказания включает селектор 360 опорного кадра для выбора опорного кадра или кадров, устройство 361 определения векторов движения, формирователь 363 списка предсказаний и селектор 364 вектора движения. Все эти элементы или часть из них могут быть реализованы, например, в процессоре 362 предсказания или с помощью других средств.
Устройство 302 предсказания пикселей принимает кодируемое изображение 300 одновременно в устройство 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 с компенсацией движения) и в устройство 308 внутреннего предсказания (которое определяет предсказание для блока изображения только на основе уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 310 режима. Устройство 306 внешнего предсказания и устройство 308 внутреннего предсказания могут иметь более одного режима внутреннего предсказания. Следовательно, для каждого режима может осуществляться внешнее предсказание и внутреннее предсказание, и затем сигнал предсказания может предоставляться в селектор 310 режима. В селектор 310 режима передается также копия изображения 300.
Селектор 310 режима определяет, какой режим кодирования следует использовать для кодирования текущего блока. Если в селекторе 310 режима принимается решение об использовании режима внешнего предсказания, то он передает на выход селектора 310 режима выходные данные устройства 306 внешнего предсказания. Если в селекторе 310 режима принимается решение об использовании режима внутреннего предсказания, то он передает на выход селектора 310 режима выходные данные одного из режимов внутреннего предсказания.
В блоке 382 вычисления целевой функции селектора 310 режима, например, могут использоваться целевые функции Лагранжа для выбора режимов кодирования и значений их параметров, таких как векторы движения, указатели на опорные изображения и направление внутреннего предсказания, как правило, для каждого блока. В целевой функции такого типа используется весовой коэффициент lambda, связывающий (точное или оцененное) искажение изображения в результате кодирования с потерями и (точное или оцененное) количество информации, необходимое для представления значений пикселей в области изображения: С=D+lambda×R, где С - минимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество битов, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (например, включая количество данных для представления возможных векторов движения).
Выходные данные селектора режима передают в первое суммирующее устройство 321. Первое суммирующее устройство может вычитать выходные данные устройства 302 предсказания пикселей из изображения 300 для формирования первого сигнала 320 ошибки предсказания, который подают на вход кодера 303 ошибки предсказания.
Устройство 302 предсказания пикселей также принимает от устройства 339 предварительного восстановления комбинацию предсказанного представления блока 312 изображения и выходных данных 338 декодера 304 ошибки предсказания. Предварительно восстановленное изображение 314 может быть передано в устройство 308 внутреннего предсказания и фильтр 316. В фильтре 316, принимающем это предварительное представление, может выполняться его фильтрация и вывод окончательного восстановленного изображения 340, которое может быть сохранено в памяти 318 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и предоставлять опорное изображение, с которым сравнивают будущее изображение 300 при выполнении операций внешнего предсказания. Во многих вариантах осуществления настоящего изобретения память 318 опорных кадров может быть способна хранить более одного декодированного изображения, при этом одно или более из них могут быть использованы устройством 306 внешнего предсказания в качестве опорных изображений, с которыми сравниваются будущие изображения 300 во время выполнения операций внешнего предсказания. Память 318 опорных кадров в некоторых случаях может называться буфером декодированных изображений.
Устройство 302 предсказания пикселей может быть сконфигурировано таким образом, чтобы выполнять любой из известных в уровне техники алгоритмов предсказания пикселей.
Устройство 302 предсказания пикселей может также включать фильтр 385 для фильтрации предсказанных значений перед выводом их из устройства 302 предсказания пикселей.
Далее более подробно будет описана работа кодера 302 ошибки предсказания и декодера 304 ошибки предсказания. В рассмотренных ниже примерах кодер формирует изображения в виде макроблоков 16x16 пикселей, из которых формируется полное изображение или кадр. Однако следует отметить, что фиг. 4а не ограничивает размер блока 16x16, в общем случае может использоваться любой размер и форма блока и, аналогично, фиг. 4а не ограничивает разбиение изображение на макроблоки, и может использоваться любое другое разбиение изображения на блоки, например, на блоки кодирования. Таким образом, в приведенных ниже примерах устройство 302 предсказания пикселей выдает последовательность предсказанных макроблоков размером 16×16 пикселей, а первое суммирующее устройство 321 выдает последовательность макроблоков разностных данных (размером 16×16 пикселей), которые могут представлять разность между первым макроблоком в изображении 300 и предсказанным макроблоком (выходными данными устройства 302 предсказания пикселей).
Кодер 303 ошибки предсказания включает блок 324 преобразования и квантователь 344. Блок 342 преобразования преобразует первый сигнал 320 ошибки предсказания в область преобразования. Таким преобразованием является, к примеру, преобразование DCT или его вариант. Квантователь 344 квантует сигнал, например коэффициенты DCT, в области преобразования для формирования квантованных коэффициентов.
Декодер 304 ошибки предсказания принимает выходные данные из кодера 303 ошибки предсказания и формирует декодированный сигнал 338 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312 изображения во втором суммирующем устройстве 339 дает предварительное восстановленное изображение 314. Декодер ошибки предсказания можно рассматривать как включающий деквантователь 346, который деквантует квантованные значения коэффициентов, например коэффициентов DCT, для приближенного восстановления сигнала преобразования, а также как включающий блок 348 обратного преобразования, который выполняет обратное преобразование восстановленного сигнала преобразования, при этом выходные данные блока 348 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр макроблоков (не показан), который может выполнять фильтрацию восстановленного макроблока в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
Ниже более подробно описана работа одного из примеров осуществления устройства 306 внешнего предсказания. В устройстве 306 внешнего предсказания принимается текущий блок для выполнения внешнего предсказания. Предполагается, что текущий блок пикселей уже имеет один или более соседних блоков пикселей, которые были кодированы и для которых уже были определены векторы движения. К примеру, такими блоками пикселей могут быть блок пикселей слева от текущего блока пикселей и/или блок пикселей над текущим блоком. Пространственные предсказания векторов движения для текущего блока пикселей могут быть сформированы, например, с помощью векторов движения уже кодированных смежных блоков пикселей и/или несмежных блоков пикселей в одном и том же слайсе или кадре, с использованием линейных или нелинейных функций пространственного предсказания векторов движения, с использованием комбинирования различных операций пространственного предсказания векторов движения с линейными или нелинейными операциями, или с помощью любых других подходящих средств, не использующих опорную информацию временного предсказания. Кроме того, получение предсказаний векторов движения может осуществляться с помощью комбинирования информации и пространственного, и временного предсказания для одного или более кодированных блоков. Такие предсказания векторов движения могут быть названы пространственно-временными предсказаниями векторов движения.
Опорные кадры, используемые при кодировании, могут храниться в памяти опорных кадров. Каждый опорный кадр может входить в один или более списков опорных изображений, при этом в списке опорных изображений каждая запись имеет указатель на опорное изображение, определяющий опорный кадр. Если опорный кадр более не используется в качестве опорного, он может быть удален из памяти опорных кадров или помечен как «неиспользуемый в качестве опорного», или как кадр, не являющийся опорным, при этом местоположение хранения этого опорного кадра может быть занято новым опорным кадром.
В соответствии с предшествующим описанием блок доступа может содержать слайсы с различными типами компонентов (например, первичный компонент текстуры, резервный компонент текстуры, вспомогательный компонент, компоненты глубины/диспарантности) для различных ракурсов и различных масштабируемых уровней.
Было предложено, чтобы по меньшей мере подмножество синтаксических элементов, которые традиционно включались в заголовок слайса, включались кодером в набор параметров группы слайсов GOS (Group of Slices). Кодер может кодировать набор параметров GOS как NAL-блок. NAL-блоки набора параметров GOS могут быть включены в битовый поток, например, вместе с кодированными NAL-блоками, но могут и передаваться отдельно от данных, как это было описано выше в контексте других наборов параметров.
Синтаксическая структура набора параметров GOS может включать идентификатор, который может использоваться для ссылки на конкретный экземпляр набора параметров GOS, например, из заголовка слайса или из другого набора параметров GOS. Альтернативно, синтаксическая структура набора параметров GOS не включает идентификатор, но идентификатор может формироваться в кодере и в декодере, например, с использованием порядка синтаксических структур набора параметров GOS в битовом потоке и заранее заданной схемы нумерации.
Кодер и декодер могут формировать содержимое экземпляра набора параметров GOS на основе других синтаксических структур, уже кодированных или декодированных, или присутствующих в битовом потоке. Например, заголовок слайса компонента ракурса текстуры базового ракурса может неявно формировать набор параметров GOS. Кодер и декодер могут вычислять значение идентификатора для полученных наборов параметров GOS. Например, набор параметров GOS, сформированный на основе заголовка слайса компонента ракурса текстуры для базового ракурса, может формироваться таким образом, чтобы иметь значение идентификатора, равное 0.
Набор параметров GOS может быть действительным внутри конкретного блока доступа, который с ним связан. Например, если синтаксическая структура набора параметров GOS включена в последовательность NAL-блоков конкретного блока доступа, и эта последовательность упорядочена в порядке декодирования или в порядке битового потока, то данный набор параметров GOS может быть действительным от местоположения его появления до окончания данного блока доступа. Альтернативно, набор параметров GOS может быть действительным для множества блоков доступа.
Для блока доступа кодер может кодировать множество наборов параметров GOS. В кодере может приниматься решение о кодировании набора параметров GOS, если известно, ожидается или прогнозируется, что по меньшей мере подмножество значений синтаксических элементов в заголовке кодируемого слайса будут такими же в заголовке следующего слайса.
Для идентификатора набора параметров GOS может использоваться ограниченное пространство нумерации. Например, может использоваться код фиксированной длины, который интерпретируется как целое значение без знака в определенном диапазоне. В кодере значение идентификатора набора параметров GOS может использоваться для первого набора параметров GOS и затем для второго набора параметров GOS, если на первый набор параметров GOS впоследствии не ссылается, например, ни один из заголовков слайсов или наборов параметров GOS. Кодер может повторять синтаксическую структуру набора параметров GOS в битовом потоке, например, для обеспечения большей устойчивости к ошибкам передачи.
Во многих вариантах осуществления настоящего изобретения синтаксические элементы, которые могут включаться в набор параметров GOS, на концептуальном уровне объединяются в наборы синтаксических элементов. Набор синтаксических элементов для набора параметров GOS может формироваться, например, на основе одного или более из следующего:
- синтаксические элементы, указывающие на масштабируемый уровень и/или другие элементы масштабируемости;
- синтаксические элементы, указывающие на ракурс и/или другие элементы многоракурсного кодирования;
- синтаксические элементы, относящиеся к конкретному типу компонентов, например, глубины/диспарантности;
- синтаксические элементы, относящиеся к идентификации блока доступа, порядку декодирования и/или порядку вывода, и/или другие синтаксические элементы, которые могут оставаться неизменными для всех слайсов блока доступа;
- синтаксические элементы, которые могут оставаться неизменными во всех слайсах компонента ракурса;
- синтаксические элементы, относящиеся к модификации списка опорных изображений;
- синтаксические элементы, относящиеся к используемому набору опорных изображений;
- синтаксические элементы, относящиеся к маркировке опорных изображений декодирования;
- синтаксические элементы, относящиеся к таблицам весовых коэффициентов предсказания для взвешенного предсказания;
- синтаксические элементы для управления фильтрацией для устранения «блочности»;
- синтаксические элементы для управления адаптивной петлевой фильтрацией;
- синтаксические элементы для управления адаптивным смещением отсчетов;
- любая комбинация перечисленных выше наборов.
Для каждого набора синтаксических элементов в кодере могут иметься один или более следующих вариантов при кодировании набора параметров GOS:
- Набор синтаксических элементов может кодироваться в синтаксическую структуру набора параметров GOS, то есть кодированные значения синтаксических элементов в наборе синтаксических элементов могут включаться в синтаксическую структуру набора параметров GOS.
- Набор синтаксических элементов может быть включен в набор параметров GOS посредством ссылки. Ссылка может предоставляться как идентификатор другого набора параметров GOS. Для различных наборов синтаксических элементов в кодере могут использоваться различные опорные наборы параметров GOS.
- Указание на набор синтаксических элементов или вывод о его отсутствии может осуществляться на основе набора параметров GOS.
Варианты, из которых кодер может выбирать конкретный набор синтаксических элементов при кодировании набора параметра GOS, могут зависеть от типа набора синтаксических элементов. Например, набор синтаксических элементов, связанный с масштабируемыми уровнями, может всегда присутствовать в наборе параметров GOS, тогда как набор синтаксических элементов, который может оставаться неизменным во всех слайсах компонента ракурса, может быть недоступным для включения посредством ссылки, но может опционально присутствовать в наборе параметров GOS, а синтаксические элементы, относящиеся к модификации списка опорных изображений могут включаться посредством ссылки, включаться непосредственно или не присутствовать в синтаксической структуре набора параметров GOS. Кодер может кодировать указание на вариант, использованный при кодировании, в битовом потоке, например, в синтаксической структуре набора параметров GOS. Таблица кодирования и/или энтропийное кодирование может зависеть от типа набора синтаксических элементов. В декодере, в зависимости от типа декодируемого набора синтаксических элементов, используют кодовую таблицу и/или энтропийное декодирование, соответствующие кодовой таблице и/или энтропийному кодированию, используемым кодером.
Кодер может иметь множество средств для указания на связь между набором синтаксических элементов и набором параметров GOS, используемым как источник значений набора синтаксических элементов. Например, кодер может кодировать циклическую структуру синтаксических элементов, при этом каждая запись циклической структуры будет кодироваться как синтаксические элементы, указывающие значение идентификатора набора параметров GOS, используемое в качестве опорного, и указывающее также наборы синтаксических элементов, скопированных из опорного набора параметров GOP. В другом примере кодер может кодировать несколько синтаксических элементов, каждый из которых указывает на набор параметров GOS. Последний набор параметров GOS в циклической структуре, содержащий определенный набор синтаксических элементов, является опорным для этого набора синтаксических элементов в наборе параметров GOS, который кодер в настоящий момент кодирует в битовый поток. Декодер выполняет анализ кодированных наборов параметров GOS из битового потока соответствующим образом и воспроизводит такие же наборы параметров GOS, что и кодер.
Было предложено ввести механизм частичного обновления для набора параметров адаптации для уменьшения размера NAL-блоков APS, а также для снижения битовой скорости передачи NAL-блоков APS. Несмотря на то, что APS является эффективным подходом для совместного использования информации адаптации изображений, общей на уровне слайсов, независимое кодирование NAL-блоков APS может быть не оптимальным, если по сравнению с одним или более ранними наборами параметров адаптации изменяется только часть параметров APS.
В документе JCTVC-H0069 ((http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H0069-v4.zip) синтаксическая структура APS разделена на группы синтаксических элементов, каждая из которых связана с определенной технологией кодирования (например, адаптивный внутренний фильтр (Adaptive In-Loop Filter, ALF) или адаптивное смещение отсчетов (Sample Adaptive Offset, SAO)). Каждой из таких групп в синтаксической структуре APS предшествует флаг, указывающий на ее наличие. Синтаксическая структура APS включает также условную ссылку на другой набор APS. Флаг ref_aps_flag сигнализирует о наличии параметра ref_aps_id, на который ссылается текущий набор APS. С помощью такого механизма ссылок может быть создан список со ссылками на множество наборов APS. Процедура декодирования во время активации APS использует ссылку из заголовка слайсов для обращения к первому набору APS из связанного списка. Эти группы синтаксических элементов, для которых установлен соответствующий флаг (например, флаг aps_adaptive_Ioop_filter_data_present_flag), декодируются на основе зависимого набора APS. После декодирования выполняется переход к следующему связанному набору APS из связанного списка (если он присутствует, на что указывает флаг ref_aps_flag, равный 1). Из текущего набора APS декодируются только те группы, на присутствие которых не указывалось ранее, но указывается в текущем наборе APS. Механизм продолжает свою работу, проходя по списку связанных наборов APS до тех пор, пока не будет выполнено одно из трех следующих условий: (1) все необходимые группы синтаксических элементов (указанные с помощью SPS, PPS или профиля/уровня) из связанной цепочки APS были декодированы, (2) обнаружен конец списка, и (3) был выполнен переход по фиксированному, возможно, зависящему от профиля, количеству ссылок, при этом минимальное их количество равно единице. Если имеются группы, для которых не было сигнализировано наличие ни в одном из связанных наборов APS, то соответствующий инструмент декодирования для данного изображения не используется. Условие (2) исключает замкнутые циклы ссылок. Сложность механизма ссылок также ограничивается конечным размером таблицы APS. В документе JCTVC-H0069 предложено выполнение операции исключения ссылок, то есть нахождения источника для каждой группы синтаксических элементов, всякий раз при активации APS, как правило, один раз в начале декодирования слайса.
Также в документе JCTVC-H0255 предложено включение в заголовок слайса множества идентификаторов APS, каждый из которых определяет исходный набор APS для заданной группы синтаксических элементов, то есть один набор APS является источником для матриц квантования, а другой набор APS является источником параметров ALF. В документе JCTVC-H0381 предложен флаг «копирования» для каждого типа параметров APS, который позволяет копировать параметры APS этого типа из другого набора APS. В документе JCTVC-H0505 предложен набор параметров группы (Group Parameter Set, GPS), в котором собраны идентификаторы наборов параметров различных типов наборов параметров ((SPS, PPS, APS), которые могут содержать несколько идентификаторов наборов параметров APS. Кроме того, в документе JCTVC-H0505 было предложено, чтобы заголовок слайса содержал идентификатор GPS, используемый для декодирования слайса, вместо отдельных идентификаторов PPS и APS.
Ниже в общих чертах описан механизм частичного обновления APS, который также был предложен в документе JCTVC-10070. Кодер задает диапазон значений aps_id с помощью синтаксического элемента max_aps_id в наборе параметров последовательности. Другими словами, значение aps_id может находиться в диапазоне от 0 до max_aps_id включительно. Кодер задает также диапазон значений aps_id, которые считаются «использованными» и указывает этот диапазон для декодера в параметре max_aps_id_diff. Этот диапазон задается относительно последнего принятого NAL-блока APS и, следовательно, определяет скользящее окно действительных значений aps_id. NAL-блоки APS, которые имеют значение aps_id вне диапазона этого скользящего окна, считаются «неиспользованными», при этом могут быть переданы новые блоки NAL-блоки APS с такими же значениями aps_id. При каждом приеме NAL-блока APS обновляется положение скользящего окна диапазона значений aps_id, которые считаются «использованными». Рекомендуется увеличение кодером значений aps_id на единицу относительно значения в предыдущем NAL-блоке APS в порядке декодирования. Значения aps_id могут циклически обнуляться, так как при определении значений aps_id внутри диапазона скользящего окна используется модульная арифметика. Благодаря управляемой маркировке значений aps_id, которые могут быть повторно использованы для новых NAL-блоков APS, количество наборов APS ограничено значением (max_aps_id_diff+1), а также могут обнаруживаться потери NAL-блоков APS при передаче. В документе JCTVC-10070 было предложено, чтобы синтаксис APS включал возможность копировать любую группу синтаксических элементов (QM, фильтр для устранения «блочности», SAO, ALF) либо из того же набора APS или из других наборов APS, указанных с помощью значения их aps_id, при этом наборы APS, на которые осуществляется ссылка, должны быть помечены как «использованные». Предложено, чтобы ссылки частичного обновления разрешались во время декодирования NAL-блока APS, то есть набор APS декодируется с помощью копирования данных, на которые осуществлена ссылка, из указанного исходного набора APS в декодируемый набор APS. Другими словами, разрешение ссылок на другие NAL-блоки APS выполняется только один раз.
Существующий уровень техники был описан выше в отношении стандарта SVC, например, в отношении активации набора параметров, сообщений SEI, параметров HRD, а также SEI сообщений с периодом буферизации и синхронизации изображений, однако нужно понимать, что аналогичные процедуры и синтаксические структуры могут также присутствовать в стандарте MVC.
Авторы обнаружили по меньшей мере следующие затруднения и недостатки в структуре стандартов SVC и MVC:
1. В полезной нагрузке RBSP набора параметров последовательности, на который осуществляется ссылка из базового уровня кодирования, уровень должен быть задан таким образом, чтобы охватывать также битовую скорость с учетом NAL-блоков уровня расширения, так как декодеры H.264/AVC без функциональности SVC будут активировать эту полезную нагрузку RBSP набора параметров последовательности, и, следовательно, предполагаемая уровнем битовая скорость должна охватывать битовую скорость всего битового потока. Аналогично, в полезной нагрузке RBSP набора параметров последовательности, на который осуществляется ссылка из базового ракурса, уровень должен быть задан таким образом, чтобы охватывать также битовую скорость с учетом NAL-блоков ракурса, не являющегося базовым, так как декодеры H.264/AVC без функциональности MVC будут активировать эту полезную нагрузку RBSP набора параметров последовательности. Уровень, соответственно, может быть излишне высоким для декодеров, которые могут осуществлять доступ к битовому потоку достаточно быстро и пропускать NAL-блоки уровня расширения или NAL-блоки ракурса, не являющегося базовым, например, декодеры, как правило, считывают битовый поток из файла. Уровень для подмножества битового потока, состоящего только из базового уровня кодирования, может быть указан с помощью сообщения SEI с информацией масштабируемости (для SVC) или сообщения SEI с информацией масштабируемости ракурсов (для MVC), но декодеры, соответствующие стандарту H.264/AVC, с большой вероятностью будут неспособны декодировать эти сообщения SEI, поскольку они определены в расширениях SVC и MVC, соответственно.
2. Как отмечалось выше, в полезной нагрузке RBSP активного набора параметров последовательности SVC и полезной нагрузке RBSP активного набора параметров последовательности SVC уровня могут отличаться только указатели, относящиеся к профилю и уровню, указатели, связанные с совместимостью профиля, параметры HRD и указания, связанные синхронизацией изображений. Аналогично, в полезной нагрузке RBSP активного набора параметров последовательности ракурса по сравнению с полезной нагрузкой RBSP активного набора параметров последовательности могут оставаться неизменными многие, но не все, синтаксические элементы. Соответственно, полезные нагрузки RBSP набора параметров последовательности дублируют информацию, то есть имеют одни и те же значения для соответствующих синтаксических элементов. Одним из подходов для уменьшения такой непроизводительной нагрузки, вызванной дублированием информации в полезных нагрузках RBSP наборов параметров последовательности, является повторное использование одинаковых полезных нагрузок RBSP для различных уровней или ракурсов, то есть активация одинаковой полезной нагрузки RBSP набора параметров последовательности для более одного уровня или ракурса. Однако в этом случае уровень будет выбран неоптимально, а также параметры HRD будут выбраны неоптимально или будут отсутствовать (и, следовательно, не помогут декодеру при инициализации буфера, буферизации, синхронизации изображений и т.п.)
3. Соответствие декодера профилям ограничено максимум двумя профилями в следующем смысле: базовый уровень кодирования или ракурс может соответствовать профилю, определенному в приложении А стандарта H.264/AVC, то есть одному из профилей немасштабируемого (и немногоракурсного) кодирования. Остальные уровни могут соответствовать профилю, определенному в приложении G стандарта H.264/AVC, то есть одному из профилей масштабируемого кодирования. Аналогично, остальные ракурсы кодирования могут соответствовать профилю, определенному в приложении G стандарта H.264/AVC, то есть одному из профилей многоракурсного кодирования. Значения параметров profile_idc и level_idc полезной нагрузки RBSP набора параметров последовательности SVC представляют собой значения, которые являются действительными, если полезная нагрузка RBSP набора параметров последовательности SVC является активным набором параметров последовательности SVC. Аналогично, значения параметров profile_idc и level_idc полезной нагрузки RBSP набора параметров последовательности MVC представляют собой значения, которые являются действительные, если полезная нагрузка RBSP набора параметров последовательности MVC является активным набором параметров последовательности MVC. Однако в общем случае битовый поток может содержать дополнительные типы масштабирования, например кодированные ракурсы глубины, которые декодер, соответствующий приложению G и приложению Н, декодировать не способен. Декодер, соответствующий приложению G или приложению Н, не осведомлен о том, присутствуют ли NAL-блоки этих дополнительных типов масштабируемости в битовом потоке, то есть для NAL-блоков таких дополнительных типов масштабируемости будет использован механизм расширения, например, заранее зарезервированные значения типа NAL-блоков, которые декодер, соответствующий приложению G или приложению Н, будет игнорировать. Однако NAL-блоки таких дополнительных типов масштабируемости будут влиять на битовую скорость битового потока и, потенциально, на такие параметры HRD как исходная задержка или время буферизации СРВ. Даже если битовый поток содержит NAL-блоки таких дополнительных типов масштабируемости, декодер, соответствующий приложению G или приложению Н, будет все равно активировать полезную нагрузку RBSP набора параметров последовательности SVC или MVC в соответствии со стандартом SVC и MVC и будет предполагать их соответствие стандарту SVC или MVC. Следовательно, значение level_id должно назначаться неоптимально для охватывания также битовой скорости данных в битовом потоке, не являющихся данными SVC или MVC. Кроме того, параметры HRD должны охватывать данные в битовом потоке, не являющиеся данными SVC или MVC.
4. Если извлечение битового подпотока выполняется в соответствии с процедурой, определенной в приложении G или приложении H стандарта H.264/AVC, для битового потока, содержащего дополнительные типы масштабируемости, которые декодер, соответствующий приложению G или приложению H стандарта H.264/AVC, не может декодировать, то NAL-блоки, содержащие данные таких дополнительных типов масштабируемости в результирующем битовом подпотоке сохраняются без изменений. Однако данные этих дополнительных типов масштабируемости могут иметь такие же размерности масштабирования, как в приложении G или приложении Н. Например, в 3DV-ATM кодированные ракурсы глубины связаны с temporal_id и view_id, как и ракурсы текстуры, кодированные с использованием MVC. Следовательно, извлечение битового подпотока на основе temporal_id и/или view_id затронет также ракурсы глубины. Однако если процедура извлечения битового подпотока, в которой используются существующие размерности масштабирования, такие как temporal_id и/или view_id, применяется также для NAL-блоков, содержащих дополнительные типы масштабирования, например ракурсов глубины, то указатель на уровень стандарта и параметры HRD, присутствующие в приложении G или приложении Н, могут быть просроченными, поскольку они предполагают извлечение битового подпотока, определенное в приложении G или приложении Н, то есть сохранение NAL-блоков, содержащих такие дополнительные типы масштабируемости, например, ракурсов глубины, присутствующих в результирующем битовом подпотоке.
5. Декодеры, соответствующие профилю, определенному в приложении А стандарта H.264/AVC, то есть одному из профилей немасштабируемого (и немногоракурсного) кодирования, рассматривают кодированные слайсы SVC и MVC (то есть NAL-блоки с nal_unit_type, равным 20) как NAL-блоки, не являющиеся блоками VCL, тогда как декодеры, соответствующие профилю, определенному в приложении G или приложении Н, рассматривают их как NAL-блоки VCL. Соответственно, параметры HRD VCL и NAL будут отличаться. Например, семантика расширения информации об используемости видео в MVC и сообщение SEI с масштабируемой вложенностью в MVC, используемое для передачи сообщений SEI синхронизации изображений и сообщений SEI с периодом буферизации, основана на процедуре извлечения битового подпотока, определенной в параграфе Н.8.5.3, где NAL-блоки с nal_unit_type, равным 21, считаются NAL-блоками, не являющимися VCL, и для них не выполняется извлечение на основе temporal_id и view_id. Следовательно, невозможно передать корректные параметры HRD для битовых подпотоков, содержащих только ракурсы текстуры.
В 3DV-ATM некоторые из описанных выше недостатков могут быть устранены следующим образом. В некоторых из вариантов осуществления настоящего изобретения предлагается передача параметров HRD битового подпотока текстуры, например, во втором экземпляре mvc_vui_parameters_extension(), к примеру, в наборе параметров последовательности 3DVC, при этом параметры HRD в сообщениях SEI синхронизации изображений и сообщениях SEI с периодом буферизации, или аналогичных им, передаются в конкретной структуре данных, действительность которой может быть ограничена как сохраняющаяся только для битового подпотока исключительно с ракурсами текстуры, например, сообщения SEI с вложенным битовым подпотоком HRD текстуры 3DVC. Если битовой подпоток текстуры извлечен с использованием процедуры извлечения битового подпотока, эти вложенные параметры HRD и сообщения SEI могут заменять соответствующие параметры HRD и сообщения SEI MVC, которые, как указывалось ранее, подразумевают работу с NAL-блоками с nal_unit_type=21 как с NAL-блоками, не являющимися блоками VCL.
Например, для полезных нагрузок RBSP набора параметров последовательности 3DVC может быть использована следующая синтаксическая структура поднабора параметров последовательности.
В представленном примере синтаксической структуры, конкретные синтаксические элементы могут быть определены следующим образом. Флаг 3dvc_vui_parameters_present_flag, равный 0, определяет, что синтаксическая структура mvc_vui_parameters_extension(), соответствующая расширению параметров VUI 3DVC, отсутствует. Флаг 3dvc_vui_parameters_present_flag, равный 1, определяет, что синтаксическая структура mvc_vui_parameters_extension() присутствует, и на нее осуществляется ссылка как на расширение параметров VUI 3DVC. Флаг texture_vui_parameters_present_flag, равный 0, определяет, что синтаксическая структура mvc_vui_parameters_extension(), соответствующая расширению параметров VUI битового подпотока текстуры 3DVC, отсутствует.Флаг texture_vui_parameters_present_flag, равный 1, определяет, что синтаксическая структура mvc_vui_parameters_extension() присутствует, и на нее осуществляются ссылка как на расширение параметров VUI битового подпотока текстуры 3DVC.
В декодере HRD для 3DV-ATM может быть определено, что если кодированная видеопоследовательность соответствует одному или более профилям, определенным в 3DV-ATM, то наборы параметров HRD сигнализируются с помощью расширения информации об используемости видео 3DVC, которая является частью синтаксической структуры поднабора параметров последовательности. Кроме того, может быть определено, что если кодированная видеопоследовательность соответствует 3DV-ATM, и применяется процедура декодирования 3DV-ATM, то используются параметры HRD, указанные для 3DV-ATM.
Синтаксис сообщения SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC может быть определен следующим образом:
Семантика сообщения SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC может быть определена следующим образом. Сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC может содержать, например, одно сообщение SEI с полезной нагрузкой типа 0 или 1 (то есть SEI сообщение с периодом буферизации или сообщение SEI синхронизации изображений) или одно и только одно сообщение с вложенностью с масштабируемостью MVC, содержащее одно сообщение SEI с полезной нагрузкой типа 0 или 1. Сообщение SEI, включенное в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC, и не включенное в сообщение SEI с вложенностью с масштабируемостью MVC, называется вложенным сообщением SEI. Семантика вложенного сообщения SEI применима для битового подпотока, полученного с использованием процедуры извлечения битового подпотока 3DV-ATM, с depthPresentFlagTarget, равным 0, tldTarget, равным texture_subbitstream_temporal_id, и viewldTargetList, состоящим из texture_subbitstream_view_id[i] для всех значений i в диапазоне от 0 до num_texture_subbitstream_view_components_minus1 включительно, в качестве входных данных. Параметр num_texture_subbitstream_view_components_minus1 определяет количество компонентов ракурса для рабочей точки, к которой применимо данное вложенное сообщение SEI. Параметр texture_subbitstream_view_id[i] определяет view_id компонента i ракурса, к которому применимо данное вложенное сообщение SEI. Параметр texture_subbitstream_temporal_id определяет максимальный temporal_id подмножества битового потока, к которому применимо данное вложенное сообщение SEI. Бит sei_nesting_zerojDit равен 0.
В некоторых из вариантов осуществления настоящего изобретения процедура извлечения битового подпотока 3DV-ATM может быть определена следующим образом. Входными данными для этой процедуры могут быть переменная depthPresentFlagTarget (при ее наличии), переменная pldTarget (при ее наличии), переменная tldTarget (при ее наличии), список viewldTargetList, состоящий из одного или более значений viewldTarget (при его наличии). Выходными данными этой процедуры могут быть битовый подпоток и список VOIdxList значений VOIdx. Если переменная depthPresentFlagTarget не присутствует в качестве входных данных, значение depthPresentFlagTarget может быть принято равным 0. Если переменная pldTarget не присутствует в качестве входных данных, значение pldTarget может быть принято равным 63. Если переменная tldTarget не присутствует в качестве входных данных, значение tldTarget может быть принято равным 7. Если значение viewldTargetList не присутствует в качестве входных данных, может присутствовать одно значение viewldTarget, полученное в списке viewldTargetList, и это значение viewldTarget может приниматься равным view_id базового ракурса. В процедуре извлечения битового подпотока, если переменная depthPresentFlagTarget равна 0, или если введено аналогичное указание на необходимость удаления ракурсов глубины из результирующего битового подпотока, параметры HRD, указанные для битовых подпотоков текстуры, могут быть преобразованы в структуры данных, определенные в стандарте H.264/AVC и/или MVC. Например, для преобразования структур данных, связанных с параметрами HRD, в процедуре извлечения битового подпотока могут использоваться одна или более из следующих операций:
- Замена NAL-блока SEI, в котором переменная payloadType указывает на сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC, на NAL-блок SEI, полезная нагрузка которого состоит из сообщения SEI, вложенного в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC.
- Замена синтаксической структуры mvc_vui_parameters_extension() в полезных нагрузках RBSP активного набора параметров последовательности 3DVC на синтаксическую структуру mvc_vui_parameters_extension() расширения параметров VUI битового подпотока текстуры 3DVC.
Например, битовый подпоток может быть получен последовательным применением следующих операций:
1. Вычисление переменной VOIdxList для включения всех ракурсов, необходимых для декодирования всех ракурсов, включенных в список viewldTargetList, в соответствии с межракурсными зависимостями, указанными в активном наборе параметров последовательности. Если depthPresentFlagTarget равен 1, то при получении VOIdxList могут учитываться межракурсные зависимости ракурсов глубины. Маркировка NAL-блоков всех компонентов ракурсов, не вошедших в список VOIdxList, как «удаляемых из битового потока».
2. Маркировка всех NAL-блоков VCL и NAL-блоков с данными заполнения как «удаляемых из битового потока», для которых истинным является любое из следующих условий:
- priority_id больше, чем pldTarget,
- temporal_id больше, чем tldTarget,
- флаг anchor_pic_flag равен 1, и view_id не помечен как «необходимый для якорного»,
- anchor_pic_flag равен 0, и view_id не помечен «необходимый для неякорного»,
- nal_ref_idc равен 0, и inter_view_flag равен 0, и view_id не равен ни одному из значений в списке viewldTargetList,
- NAL-блоки содержат кодированный слайс для компонента ракурса глубины, и переменная depthPresentFlagTarget равна 0.
3. Удаление всех блоков доступа, для которых все NAL-блоки VCL помечены как «удаляемые из битового потока».
4. Удаление всех NAL-блоков VCL и NAL-блоков с данными заполнения, помеченных как «удаляемые из битового потока».
5. Удаление всех NAL-блоков с nal_uni_type, равным 6, в которых первое сообщение SEI имеет payloadType, равный 0 или 1, или первое сообщение SEI имеет payloadType, равный 37 (сообщение SEI с вложенностью с масштабируемостью MVC) и флаг operation_point_flag в первом сообщении SEI равен 1.
6. Если переменная depthPresentFlagTarget равна 0, применяется следующее.
- Замена всех NAL-блоков с nal_unit_type, равным 6, в котором переменная payloadType указывает на сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC, на nal_unit_type, равный 6, с полезной нагрузкой, состоящей из сообщения SEI, которое вложено в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC.
- Для RBSP каждого активного набора параметров последовательности текстуры 3DVC применимо следующее: Замена синтаксической структуры mvc_vui_parameters_extension() в RBSP активного набора параметров последовательности 3DVC на синтаксическую структуру mvc_vui_parameters_extension() расширения параметров VUI битового подпотока текстуры 3DVC, если обе синтаксические структуры mvc_vui_parameters_extension() применимы для одних и тех же ракурсов. В противном случае удаление синтаксической структуры mvc_vui_parameters_extension() из RBSP активного набора параметров последовательности 3DVC.
- Удаление всех NAL-блоков SEI, с nal_unit_type, определенным в 3DV-АТМ, и не применимых для H.264/AVC или MVC.
7. Пусть maxTId - максимальное значение temporal_id всех оставшихся NAL-блоков VCL. Удаление всех NAL-блоков с nal_unit_type, равным 6, которые содержат только сообщения SEI, являющиеся частью сообщения SEI с вложенностью с масштабируемостью MVC или сообщения SEI с вложенностью с масштабируемостью 3DVC с любым из следующих свойств:
- флаг operation_point_flag равен 0, и флаг all_view_components_in_au_flag равен 0, и ни один из sei_view_id[i] для всех i в диапазоне от 0 до num_view_components_minus1 включительно не соответствует ни одному из значений VOIdx, входящих в список VOIdxList,
- флаг operation_point_flag равен to 1, и либо sei_op_temporal_id больше, чем maxTId, либо список sei_op_view_id[i] для всех i в диапазоне от 0 до num_view_components_op_minus1 включительно, не является подмножеством списка viewldTargetList (то есть ложно, что sei_op_view_id[i] для всех i в диапазоне от 0 до num num_view_components_op_minus1 включительно равно одному из значений viewldTargetList).
8. Пусть maxTId - максимальное значение temporal_id всех оставшихся NAL-блоков VCL. Удаление всех NAL-блоков с nal_unit_type, равным 6, которые содержат только сообщения SEI, являющиеся частью сообщения SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC с любым из следующих свойств:
- либо параметр texture_subbitstream_temporal_id больше maxTId, либо список texture_subbitstream_view_id[i] для всех i в диапазоне от 0 до num_texture_subbitstream_components_minus_1 включительно не является подмножеством списка viewldTargetList (то есть ложно, что sei_texture_subbitstream_view_id[i] для всех i в диапазоне от 0 до num_texture_subbitstream_components_minus1 включительно равно одному из значений viewldTargetList).
9. Удаление каждого сообщения SEI с информацией масштабируемости и каждого сообщения SEI об отсутствии рабочей точки, при их наличии.
10. Если список VOIdxList не содержит ни одного значения VOIdx, равного minVOIdx, ракурс с VOIdx, равным минимальному значению VOIdx в списке VOIdxList, преобразуют в базовый ракурс извлеченного битового подпотока.
В некоторых из вариантов осуществления настоящего изобретения для сообщений SEI с периодом буферизации и сообщений SEI синхронизации изображений, то есть сообщений SEI с payloadType, равным 0 или 1, применимо следующее.
Если сообщение SEI с периодом буферизации или сообщение SEI синхронизации изображений включено в сообщение SEI с вложенностью с масштабируемостью 3DVC и не включено в сообщение SEI с вложенностью с маштабируемостью MVC или в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC, может применяться следующее. Когда это сообщение SEI и все остальные сообщения SEI с payloadType, равным 0 или 1, включенные в сообщение SEI с вложенностью с масштабируемостью 3DVC с идентичными значениями sei_op_temporal_id и sei_op_view_id[i] для всех i в диапазоне от 0 до num_view_components_op_minus1, используются в качестве сообщений SEI с периодом буферизации и сообщений SEI синхронизации изображений для проверки соответствия битового потока декодеру HRD, битовый поток, который бы мог быть получен вызовом процедуры извлечения битового подпотока 3DV-ATM с флагом depthPresentTargetFlag, равным 1, tldTarget, равным sei_op_temporal_id, и viewldTargetList, равным sei_op_view_id[i] для всех i в диапазоне от 0 до num_view_components_op_minus1 включительно, соответствует стандарту 3DV-ATM.
Если сообщение SEI с периодом буферизации или сообщение SEI синхронизации изображений включено в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC, может применяться следующее. Когда это сообщение SEI и все остальные сообщения SEI, включенные в сообщение SEI с вложенностью с параметрами HRD битового подпотока текстуры 3DVC с идентичными значениями texture_subbitstream_temporal_id и texture_subbitstream_view_id[i] для всех i в диапазоне от 0 до num_texture_subbitstream_view_components_minus1 включительно, используются в качестве сообщений SEI с периодом буферизации и сообщений SEI синхронизации изображений для проверки соответствия битового потока декодеру HRD, битовый поток, который мог быть получен вызовом процедуры извлечения битового потока 3DV-ATM с флагом depthPresentTargetFlag, равным 1, tldTarget, равным texture_subbitstream_temporal_id, и viewldTargetList, равным texture_subbitstream_view_id[i] для всех i в диапазоне от 0 до num_texture_subbitstream_view_components_minus1 включительно, соответствует стандарту 3DV-ATM.
Из приведенного выше описания можно сделать вывод, что расширение стандартов H.264/AVC, SVC и MVC новыми типами масштабируемости, такими, например, как ракурсы глубины, может осложняться по меньшей мере по следующим причинам:
1. NAL-блоки кодированного слайса новых типов масштабируемости представляют собой NAL-блоки VCL, соответствующие новым дополнениям, однако в соответствии со «старыми» версиями стандарта они не являются NAL-блоками VCL. Поскольку декодер HRD при функционировании различает NAL-блоки VCL, и NAL-блоки, не являющиеся блоками VCL, необходимы различные наборы параметров HRD, в зависимости от интерпретации типов NAL-блоков - как блоков VCL или не VCL.
2. Процедура извлечения битового подпотока определена для NAL-блоков и типов масштабируемости «старых» версий стандарта, например, для dependency_id, quality_id, temporal_id и priority_id в приложении G стандарта H.264/AVC и для temporal_id, priority_id и view_id в приложении H стандарта H.264/AVC. Однако для новых типов масштабируемости вводятся новые типы NAL-блоков, такие как NAL-блоки со значением типа, равным 21, для кодированных ракурсов глубины и, потенциально, для расширенных ракурсов текстуры, определенных в стандарте 3DV-ATM, при этом существующая процедура извлечения битового подпотока в стандартах SVC или MVC оставляет NAL-блоки таких новых типов без изменения, несмотря на то, что они могут содержать «старые» размерности масштабирования, такие как temporal_id и view_id в случае ракурсов глубины. Несмотря на то, что в проект стандарта HEVC не входят элементы масштабируемости, помимо временной масштабируемости, авторы нашли, что модель, используемая в проекте стандарта HEVC, может при ее расширении для поддержки расширений масштабируемости, вызывать затруднения, аналогичные моделям SVC и MVC. Более конкретно, авторы выявили по меньшей мере следующие проблемы или затруднения, присущие модели проекта стандарта HEVC:
1. Наборы параметров последовательности, связанные с различными уровнями, с большой вероятностью будут сходными независимо от типа масштабируемости (например, масштабируемости качества, пространственной масштабируемости, многоракурсной масштабируемости и/или расширения глубины/диспарантности). Например, пространственное разрешение изображений при многоракурсном кодировании в различных ракурсах может быть идентичным. В другом примере для различных уровней могут использоваться одинаковые алгоритмы и параметры кодирования, которые могут, следовательно, иметь одинаковые значения соответствующих синтаксических элементов в наборах параметров последовательности. Соответственно, битовая скорость, используемая для наборов параметров последовательности, и объем памяти, необходимый для хранения наборов параметров последовательности в декодерах, могут быть излишне высокими. Например, в приложениях широковещательной передачи наборы параметров последовательности могут передаваться один раз для каждого изображения IDR/CRA/BLA.
2. Отсутствует возможность указывать различные профили и уровни для каждого подмножества битового потока, полученного в результате выполнения процедуры извлечения битового подпотока со значением temporal_id в качестве входных данных. Данная проблема является также более общей. К примеру, если битовый поток содержит многоракурсную видеоинформацию с соответствующими ракурсами глубины, а обработку битового потока выполняет декодер, способный декодировать только видеоинформацию текстуры, то он активирует наборы параметров последовательности, которые применимы для ракурсов текстуры. Однако эти наборы параметров последовательности формируются кодером так, что битовая скорость, используемая для кодированной информации глубины, учитывается в параметрах HRD и уровне. В общем, если битовый поток содержит NAL-блоки для уровней, не документированных в активном наборе параметров последовательности, уровень и параметр HRD, указанные в активном наборе параметров последовательности, будут все равно охватывать весь битовый поток. На данный момент не существует механизма для указания уровня для подмножества битового потока, состоящего только из некоторых уровней.
3. Если битовый поток содержит NAL-блоки уровней, не являющимися базовыми (то есть NAL-блоки, имеющие параметр reserved_one_5bits/layer_id_plus1, не равный 1), в наборе SPS для базового уровня будет указан профиль базового уровня, при этом уровень и параметры HRD будут действительными для всего битового потока, включающего NAL-блоки уровней кодирования, не являющихся базовым. На данный момент не существует механизма для указания уровня для подмножества битового потока, содержащего только NAL-блоки базового уровня кодирования.
В некоторых из вариантов осуществления настоящего изобретения значения конкретных параметров или синтаксических элементов, например, параметра HRD и/или указателя на уровень, могут браться из синтаксической структуры, например, из набора параметров последовательности самого верхнего уровня кодирования, имеющегося в блоке доступа, в кодированной видеопоследовательности и/или в битовом потоке, даже если этот самый верхний уровень не декодируется. Данный самый верхний уровень может быть определен, например, как имеющий наибольшее значение параметров reserved_one_5bits или layer_id_plus1 в расширении масштабируемости HEVC, хотя могут присутствовать и другие способы определения верхнего уровня. Эти значения синтаксических элементов из самого верхнего уровня могут быть семантически корректными и могут использоваться для проверки соответствия стандарту, например, с использованием декодера HRD, тогда как значения соответствующих синтаксических элементов из других соответствующих синтаксических структур, например наборов параметров последовательности, могут быть активными или корректными в противном случае.
Ниже более подробно описаны некоторые из примеров осуществления настоящего изобретения для проекта стандарта HEVC или аналогичного стандарта. Нужно понимать, что для других стандартов или спецификаций кодирования могут применяться аналогичные варианты осуществления настоящего изобретения.
Такие синтаксические структуры как наборы параметров последовательности могут инкапсулироваться в виде NAL-блоков, которые могут включать идентификаторы масштабируемых уровней кодирования, такие как temporal_id и/или layer_id_plus1, например, в заголовке NAL-блока.
В некоторых из вариантов осуществления настоящего изобретения одно и то же значение seq_parameter_set_id может использоваться для полезных нагрузок RBSP наборов параметров последовательности, имеющих различные значения синтаксических элементов. Полезные нагрузки RBSP наборов параметров последовательности, имеющие одинаковые значения seq_parameter_set_id, могут быть связаны друг с другом, например, таким образом, что на полезные нагрузки RBSP наборов параметров последовательности с одинаковым значением seq_parameter_set_id осуществляются ссылки из различных изображений компонентов, например, из представлений уровня или компонентов ракурса одного блока доступа.
В некоторых из примеров осуществления настоящего изобретения в синтаксической структуре SPS может обеспечиваться возможность применения механизма частичного обновления, например, следующим образом. Для каждой группы синтаксических элементов (например, указаний на профиль и уровень, параметров HRD, пространственного разрешения) в кодере могут иметься, например, один или более следующих вариантов при кодировании синтаксической структуры SPS:
- Группа синтаксических элементов может кодироваться в синтаксическую структуру SPS, то есть кодированные значения синтаксических элементов в наборе синтаксических элементов могут быть включены в синтаксическую структуру набора параметров последовательности.
- Группа синтаксических элементов может быть включена в набор SPS с помощью ссылки. Ссылка может предоставляться как идентификатор другого набора SPS или может быть неявной. Если используется идентификатор ссылки, то в некоторых из вариантов осуществления настоящего изобретения в кодере может использоваться различные идентификаторы ссылки APS для различных групп синтаксических элементов. Если ссылка на набор SPS осуществляется неявно, то набор SPS, на который выполняется ссылка, может, к примеру, иметь тот же самый seq_parameter_set_id или аналогичный идентификатор, а также иметь идентификатор масштабируемости, например, layer_id_plus1, непосредственно предшествующий в порядке зависимости между изображениями компонент, или уровнями, или ракурсами, или может являться активным набором SPS для уровня или ракурса, от которого зависит уровень или ракурс, для которого кодируемый набор SPS является активным SPS.
- Может выполняться указание или делаться вывод об отсутствии в SPS данной группы наборов синтаксических элементов.
Варианты, которые кодер может выбирать для конкретной группы синтаксических элементов при кодировании SPS, могут зависеть от типа группы синтаксических элементов. Например, может требоваться, чтобы синтаксические элементы определенного типа всегда присутствовали в синтаксической структуре SPS, тогда как другие группы синтаксических элементов могут включаться с помощью ссылки или присутствовать в синтаксической структуре SPS. Кодер может кодировать указание на вариант, использованный при кодировании, в битовом потоке, например, в синтаксической структуре SPS. Таблица кодирования и/или энтропийное кодирование может зависеть от группы синтаксических элементов. В декодере, в зависимости от типа декодируемой группы синтаксических элементов, может использоваться кодовая таблица и/или энтропийное декодирование, соответствующие кодовой таблице и/или энтропийному кодированию, использованным в кодере.
Кодер может иметь множество средств для указания на связь между группой синтаксических элементов и SPS, используемым как источник значений набора синтаксических элементов. Например, кодер может кодировать циклическую структуру синтаксических элементов, при этом каждая запись циклической структуры будет кодироваться как синтаксические элементы, указывающие значение идентификатора SPS, которое используется в качестве опорного, и указывающее также наборы синтаксических элементов, которые копируются из опорного SPS. В другом примере кодер может кодировать несколько синтаксических элементов, каждый из которых указывает на набор SPS. Последний набор SPS в такой циклической структуре, содержащей конкретную группу синтаксических элементов, является опорным для этой группы синтаксических элементов в наборе SPS, который кодер в настоящий момент кодирует в битовый поток. Декодер выполняет анализ кодированных наборов параметров адаптации из битового потока соответствующим образом и воспроизводит такие же наборы параметров адаптации, что и кодер.
Механизм частичного обновления для SPS может, например, позволять копировать синтаксические элементы, помимо указаний на профиль и уровня и, возможно, параметров HRD, из другого набора параметров последовательности с тем же самым seq_parameter_set_id. В некоторых из вариантов осуществления настоящего изобретения RBSP набора параметров последовательности с temporal_id, большим 0, может наследовать значения синтаксических элементов, помимо указаний на профиль и уровень, а также, избирательно, параметров VUI, из RBSP набора параметров последовательности с такими же значениями seq_parameter_set_id и reserved_one_5bits. В некоторых из вариантов осуществления настоящего изобретения RBSP набора параметров последовательности с reserved_one_5bits/layer_id_plus1, большим 1, избирательно включает или наследует (что управляется, например, синтаксическим элементом short_sps_flag, описанным ниже) значения синтаксических элементов, помимо указаний на профиль и уровень из RBSP набора параметров последовательности, с тем же значением seq_parameter_set_id и reserved_one_5bits, равным указанному набору параметров последовательности (указанному src_layer_id_plus1).
В некоторых из вариантов осуществления настоящего изобретения максимальное значение temporal_id и набор значений reserved_one_5bits/layer_id_plus1, подлежащих декодированию, могут представляться в процедуру декодирования, например, с помощью процедуры приема или с помощью приемника. Если передача в процедуру декодирования не выполняется, NAL-блоки VCL со всеми значениями temporal_id и reserved_one_5bits/layer_id_plus1, равным 1, могут декодироваться, тогда как остальные NAL-блоки VCL могут игнорироваться. Например, переменная TargetLayerldPluslSet может включать набор значений reserved_one_5bits декодируемых NAL-блоков VCL. Переменная TargetLayerldPlus1 может предоставляться для процедуры декодирования, или, если она не предоставлена для процедуры декодирования, TargetLayerldPlus1 содержит одно значение для параметра reserved_one_5bits, которое равно 1. Переменная TargetTemporalld может предоставляться для процедуры декодирования, или, если она не предоставлена для процедуры декодирования, TargetTemporalld равно 7. Применяется процедура извлечения битового подпотока с TargetLayerldPlus1Set и TargetTemporalld в качестве входных переменных, а выходные данные назначаются в битовый поток, обозначенный BitstreamToDecode. Процедура декодирования выполняет операции над потоком BitstreamToDecode.
В некоторых из вариантов осуществления настоящего изобретения может применяться процедура извлечения битового подпотока с temporal_id и набором значений reserved_one_5bits в качестве входных данных. NAL-блоки набора параметров последовательности могут подлежать извлечению в битовый подпоток на основе значений reserved_one_5bits/layer_id_plus1 и temporal_id. Например, входными для процедуры извлечения битового подпотока являются переменные tldTarget и layerldPlusISet, а выходными данными этой процедуры является битовый подпоток. Например, битовый подпоток получают удалением из битового потока всех NAL-блоков, temporal_id которых больше, чем tldTarget, или для которых значение reserved_one_5bits не находится среди значений в layerldPlus1Set.
В некоторых из вариантов осуществления настоящего изобретения для RBSP набора параметров последовательности может использоваться следующий синтаксис:
В приведенном выше синтаксисе флаг short_sps_flag может определять наличие или необходимость формирования значений синтаксических элементов RBSP набора параметров последовательности, например, следующим образом. Если флаг short_sps_flag отсутствует и temporal_id больше 0, то флаг short_sps_flag принимается равным 1, а переменная SrcLayerldPlus1 назначается равной reserved_one_5bits. Если флаг short_sps_flag отсутствует и temporal_id равен 0, флаг short_sps_flag принимается равным 0. Если флаг short_sps_flag присутствует, переменная SrcLayerldPlus1 назначается равной параметру src_layer_id_plus1. Если флаг short_sps_flag равен, или получен равным, 1 и полезная нагрузка RBSP набора параметров последовательности является активной, значения синтаксических элементов в синтаксической структуре seq_parameter_set_rbsp(), помимо profile_space, profile_idc, constraint_flags, level_idc, profile_compatibility_flag[i], seq_parameter_set_id, short_sps_flag и src_layer_id_plus1, назначаются равным значениям соответствующих синтаксических элементов в синтаксической структуре seq_parameter_set_rbsp(), имеющей то же значение seq_parameter_set_id и значение reserved_one_5bits, равное src_layer_id_plus1. Если флаг short_sps_flag равен, или назначен равным, 1 и полезная нагрузка RBSP набора параметров последовательности является либо активной, либо используемой гипотетическим опорным декодером, значения тех синтаксических элементов в информации об используемости видео, которые отсутствуют в RBSP набора параметров последовательности, назначаются равным значениям соответствующих синтаксических элементов, при их наличии, в синтаксической структуре seq_parameter_set_rbsp(), имеющей то же значение of seq_parameter_set_id и значение reserved_one_5bits, равное src_layer_id_plus1.
В некоторых из вариантов осуществления настоящего изобретения, например, когда используется или разрешена только временная масштабируемость, активация полезной нагрузки RBSP набора параметров последовательности может выполняться следующим образом. Когда полезная нагрузка RBSP набора параметров последовательности (с определенным значением seq_parameter_set_id) уже неактивна, и на нее осуществляется ссылка с помощью активации RBSP набора параметров изображения (с использованием этого значения seq_parameter_set_id) или ссылка с помощью NAL-блока SEI, содержащего сообщение SEI с периодом буферизации (с использованием этого значения seq_parameter_set_id), полезная нагрузка RBSP набора параметров последовательности активируется следующим образом:
- Допустим множество полезных нагрузок RBSP наборов параметров последовательности, potentialSPSSet, содержит те полезные нагрузки RBSP набора параметров последовательности, которые имеют определенное значение seq_parameter_set_id и значение temporal_id, меньшее или равное TargetTemporalld, а также значение reserved_one_5bits, равное 1.
- Если в potentialSPSSet имеется полезная нагрузка RBSP только одного набора параметров последовательности, она становится активной.
- В противном случае активируют полезную нагрузку RBSP набора параметров последовательности с наибольшим значением temporal_id среди всех полезных нагрузок RBSP наборов параметров последовательности с наибольшим значением reserved_one_5bits в potentialSPSSet.
В некоторых из вариантов осуществления настоящего изобретения, например, когда одновременно используется или разрешены временная масштабируемость, что указано с помощью temporal_id, и по меньшей мере один другой тип масштабируемости, что указано с помощью layer_id_plul, активация полезных нагрузок RBSP набора параметров последовательности может выполняться следующим образом. Когда полезная нагрузка RBSP набора параметров последовательности (с определенным значением seq_parameter_set_id) уже неактивна, и на нее осуществляется ссылка с помощью активации полезной нагрузки RBSP набора параметров изображения (с использованием этого значения seq_parameter_set_id) или ссылка с помощью NAL-блока SEI, содержащего сообщение SEI с периодом буферизации (с использованием этого значения seq_parameter_set_id), полезная нагрузка RBSP набора параметров последовательности активируется для уровня, имеющего reserved_one_5bits, равное LldPlus1, и для значений LldPlus1, равных каждому значению в TargetLayerldPluslSet, следующим образом:
- Допустим множество полезных нагрузок RBSP наборов параметров последовательности, potentialSPSSet, содержит те полезные нагрузки RBSP наборов параметров последовательности, которые имеют определенное значение seq_parameter_set_id и значение temporal_id, меньшее или равное TargetTemporalld, а также значение reserved_one_5bits, находящееся в TargerLayerldPluslSet и меньшее или равное LldPlusl
- Если в potentialSPSSet имеется полезная нагрузка RBSP только одного набора параметров последовательности, она становится активной.
- В противном случае, если в potentialSPSSet имеется только одна полезная нагрузка RBSP набора параметров последовательности, имеющая значение reserved_one_5bits, большее, чем значение reserved_one_5bits RBSP любого другого набора параметров последовательности в potentialSPSSet, то активируют эту полезную нагрузку RBSP набора параметров последовательности.
- В противном случае активируют полезную нагрузку RBSP набора параметров последовательности с наибольшим значением temporal_id среди всех полезных нагрузок RBSP наборов параметров последовательности с наибольшим значением reserved_one_5bits в potentialSPSSet.
В некоторых из вариантов осуществления настоящего изобретения полезная нагрузка RBSP набора параметров последовательности, которую используют для наборов параметров HRD, относящихся к соответствию битового потока, conformanceSPS, может быть выбрана следующим образом:
- Допустим, множество полезных нагрузок RBSP наборов параметров последовательности, potentialSPSSet, содержит те полезные нагрузки RBSP набора параметров последовательности, которые имеют то же значение seq_parameter_set_id, что и активная полезная нагрузка RBSP набора параметров последовательности, и имеют значение temporal_id, меньшее или равное наибольшему значению temporal_id среди NAL-блоков VCL битового потока, а также значение reserved_one_5bits, меньшее или равное наибольшему значению reserved_one_5bits среди NAL-блоков VCL битового потока.
- Если в potentialSPSSet имеется полезная нагрузка RBSP только одного набора параметров последовательности, то conformanceSPS становится эта полезная нагрузка RBSP набора параметров последовательности.
- В противном случае, если в potentialSPSSet имеется только одна полезная нагрузка RBSP набора параметров последовательности, имеющая значения reserved_one_5bits, большее, чем значение reserved_one_5bits RBSP любого другого набора параметров последовательности в potentialSPSSet, то conformanceSPS становится эта полезная нагрузка RBSP набора параметров последовательности.
- В противном случае, среди множества полезных нагрузок RBSP наборов параметров последовательности, имеющих наибольшее значение reserved_one_5bits в potentialSPSSet, conformanceSPS становится полезная нагрузка RBSP набора параметров последовательности с наибольшим значением temporal_id.
В некоторых из вариантов осуществления настоящего изобретения могут быть определены и использованы термины «компонентная последовательность» и «компонентное изображение». Компонентной последовательностью может быть, например, ракурс текстуры, ракурс глубины или уровень расширения пространственной масштабируемости / масштабируемости качества. Каждая компонентная последовательность может ссылаться на отдельный набор параметров последовательности, при этом несколько компонентных последовательностей могут ссылаться на один и тот же набор параметров последовательности. Каждая компонентная последовательность может уникально идентифицироваться с помощью переменной CPId или Layerld, которые в контексте стандарта HEVC, могут быть получены из 5 зарезервированных битов (reserved_one_5bits) во втором байте заголовка NAL-блока. Временные подмножества кодированной видеопоследовательности не могут считаться компонентными последовательностями; вместо этого, temporal_id может быть ортогональным свойством. Компонентные изображения могут появляться в блоке доступа с CPId в порядке возрастания. В общем случае кодированная видеопоследовательность может содержать одну или более компонентных последовательностей. Блок доступа может включать одно или более компонентных изображений. В описании проекта стандарта HEVC компонентное изображение может быть определено как кодированное изображение блока доступа, при этом в будущих расширениях масштабируемости HEVC оно может представлять собой, например, компонент ракурса, карту глубины или представление уровня.
В некоторых из вариантов осуществления настоящего изобретения набор параметров последовательности или набор видеопараметров, или другая синтаксическая структура (структуры) могут содержать синтаксические элементы, указывающие на зависимости, например, отношения предсказания, между компонентными последовательностями. К примеру, синтаксис набора VPS может включать: зависимости между компонентными последовательностями и информацию о соответствии CPId конкретным свойствам масштабируемости (например, dependency id, quality id, порядковый номер ракурса).
В одном из примеров, называемом кросс-уровневым набором VPS, в наборе VPS описаны зависимости между уровнями всей кодированной видеопоследовательности и свойства этих уровней. Один набор VPS может быть активным для всех уровней. Если уровни извлекаются из битового потока, кросс-уровневый набор VPS может описывать уровни, которые более не присутствуют в битовом потоке. Кросс-уровневый набор VPS может являться расширением набора VPS, определенного в проекте стандарта HEVC следующим образом:
Поскольку типы масштабируемости и синтаксические элементы, их представляющие, могут быть неизвестны, а новые типы масштабируемости могут быть введены позднее, предложенный синтаксис обеспечивает возможность анализа набора VPS, даже если типы масштабируемости неизвестны декодеру. Декодер должен быть способен декодировать подмножество битового потока, включающее известные ему типы масштабируемости.
Семантика кросс-уровневого набора VPS может быть определена следующим образом. Параметр num_ref_component_seq[i] определяет количество компонентных последовательностей, от которых зависит компонентная последовательность с CPId, равным i. Параметр ref_component_seq_id[i][j] определяет значения vps_id компонентных последовательностей, от которых зависит компонентная последовательность с CPId, равным i. Параметр component_sequence_type[i] определяет тип компонентной последовательности с порядковым номером типа, равным i, при этом component_sequence_type[0] считается указывающим на базовую компонентную последовательность стандарта HEVC. Параметр component_sequence_property_len[i] определяет размер синтаксического элемента component_sequence_property[] в битах, которому предшествует синтаксический элемент component_sequence_type_idx[], имеющий значение, равное i. Параметр component_sequence_type_idx[i] определяет порядковый номер типа компонентой последовательности с CPId, равным i. Компонентная последовательность с CPId, равным i, имеет тип component_sequence_type[component_sequence_type_idx [i]]. Параметр component_sequence_property[i] определяет значение или значения, характеризующую компонентную последовательность с CPId, равным i. Семантика component_sequence_property[i] определена в соответствии с component_sequence_type[component_sequence_type_idx [i]].
В одном из примеров, называемом многоуровневым набором VPS, NAL-блок VPS описывает зависимости и свойства каждого отдельного уровня кодирования или компонентной последовательности. В NAL-блоке многоуровневого набора VPS используется параметр reserved_one_5bits и, следовательно, NAL-блоки VPS извлекаются из битового потока вместе с остальными NAL-блоками, относящимися к уровню, в процедуре извлечения битового подпотока. Для каждого уровня может быть активным различный набор VPS, несмотря на то, что для всех активных наборов VPS может использоваться одно значение vps_id. Может требоваться, чтобы значение vps_id во всех активных наборах параметров (уровня или ракурса) было идентичным. Многоуровневый набор VPS может являться расширением набора VPS, определенного в проекте стандарта HEVC следующим образом:
Семантика многоуровневого набора VPS может быть определена следующим образом. Параметр num_ref_component_seq определяет количество компонентных последовательностей, от которых зависит данная компонентная последовательность. Параметр ref_component_seq_id[j] определяет значения vps_id компонентных последовательностей, от которых зависит данная компонентная последовательность. Параметр component_sequence_type определяет тип компонентной последовательности. Значения параметра component_sequence_type являются зарезервированными. Параметр component_sequence_property_len определяет размер синтаксического элемента component_sequence_property в битах. Параметр component_sequence_property определяет значение или значения, характеризующую данную компонентную последовательность. Семантика component_sequence_property определена в соответствии с component_sequence_type.
В некоторых из вариантов осуществления настоящего изобретения может быть определена процедура извлечения битового подпотока, на вход которой подается набор выходных уровней кодирования или компонентных последовательностей. Такая процедура извлечения битового подпотока может определять компонентные последовательности, необходимые для декодирования выходных компонентных последовательностей, например, с помощью информации о зависимости, предоставленной в наборе (или наборах) параметров последовательности или в наборе (или наборах) видеопараметров. Выходные компонентные последовательности и компонентные последовательности, необходимые для декодирования, могут называться целевыми компонентными последовательностями, а соответствующие значения идентификаторов масштабируемых уровней - целевыми значениями идентификаторов масштабируемых уровней. В процедуре извлечения битового подпотока могут удаляться все NAL-блоки, включая NAL-блоки наборов параметров, в которых значение идентификатора масштабируемого уровня не находится среди целевых значений идентификаторов масштабируемых уровней.
Рассмотрим фиг. 10, где проиллюстрированы операции, которые могут выполняться устройством 50, сконфигурированным в соответствии с одним из примеров осуществления настоящего изобретения. Устройство может включать средства, например, процессор 56 или аналогичный элемент, для формирования двух или более уровней масштабируемости масштабируемого потока данных. Упомянутые средства, например, процессор 56 или аналогичный элемент, могут включать, например, блоки, реализующие схему кодирования в соответствии с фиг. 4а, или аналогичную схему, потенциально включающую также межуровневое предсказание, межракурсное предсказание и/или предсказание на основе синтеза ракурсов, или аналогичные типы предсказания (не проиллюстрированные на фиг. 4а). Рассмотрим блок 400 на фиг. 10. Каждый из двух или более уровней масштабируемости может иметь отличающееся свойство кодирования, может быть связан с идентификатором уровня масштабируемости и может характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры HRD. В соответствии с фиг. 10 в блоке 402 устройство согласно данному варианту осуществления настоящего изобретения может также включать средства, например, процессор 56 или аналогичный элемент, для вставки значения идентификатора первого масштабируемого уровня в первый элементарный блок, включающий данные из первого из двух или более масштабируемых уровней. Устройство согласно данному варианту осуществления настоящего изобретения может также включать средства например, процессор, интерфейс связи или аналогичный элемент, для обеспечения сигнализации первого из упомянутых двух или более масштабируемых уровней с использованием упомянутых первого и второго наборов синтаксических элементов в первом элементарном блоке набора параметров, таким образом, что первый элементарный блок набора параметров может быть прочитан декодером для определения значений первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости масштабируемого потока данных. Рассмотрим блок 404 на фиг. 10. Первый набор синтаксических элементов может включать, например, указатель профиля, а второй набор синтаксических элементов может включать, например, указатель на уровень и параметры HRD. Устройство в одном из вариантов осуществления настоящего изобретения может также включать средства, например, процессор или аналогичный элемент, для вставки значения идентификатора первого уровня масштабируемости в упомянутый первый элементарный блок набора параметров, а также средства, например, процессор или аналогичный элемент, для вставки значения идентификатора второго уровня масштабируемости в упомянутый второй элементарный блок, включающий данные из второго из двух или более уровней масштабируемости. Рассмотрим блоки 406 и 408 на фиг. 10. Элементарным блоком набора параметров может быть, например, NAL-блок, включающий набор параметров. Идентификатором первого и второго уровней масштабируемости могут быть, например, один пли более синтаксических элементов, например, reserved_one_5bits в стандарте HEVC, включенных в заголовок NAL-блока. В соответствии с фиг. 10 в блоке 410 устройство в одном из вариантов осуществления настоящего изобретения может также включать средства, например, процессор, интерфейс связи или аналогичный элемент, для обеспечения сигнализации второго из упомянутых двух или более уровней масштабируемости с использованием упомянутого первого и второго наборов синтаксических элементов во втором элементарном блоке набора параметров таким образом, что второй элементарный блок набора параметров может быть прочитан декодером для определения упомянутого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Устройство согласно данному варианту осуществления настоящего изобретения может также включать средства, например, процессор или аналогичный элемент, для вставки значения идентификатора упомянутого второго уровня масштабируемости в упомянутый второй элементарный блок набора параметров. См. блок 412 на фиг. 10.
В данном варианте осуществления настоящего изобретения значения первого набора синтаксических элементов и первого элементарного блока набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывают, а упомянутый второй элементарный блок игнорируют или удаляют. Второй элементарный блок может удаляться в процедуре извлечения битового подпотока, которая может удалять уровень масштабируемости или компонентную последовательность, включающие упомянутый второй элементарный блок. При отсутствии второго элементарного блока или всей компонентной последовательности, содержащей второй элементарный блок, могут быть действительны значения первого набора синтаксических элементов, таких как индикатор профиля первого набора параметров. Значения второго набора синтаксических элементов в первом элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый первый элементарный блок обрабатывают, а упомянутый второй элементарный блок удаляют. Например, параметры HRD и/или индикатор уровня, входящий во второй набор синтаксических элементов, могут быть действительными для битового подпотока, который содержит первый элементарный блок, и во многих случаях для компонентной последовательности, которая содержит первый элементарный блок, но не содержит второй элементарный блок, а также во многих случаях для компонентной последовательности, которая содержит второй элементарный блок. Значения первого набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок обрабатывают. Например, если декодируется битовый поток, включающий второй элементарный блок, значения первого набора синтаксических элементов, например индикатор профиля стандарта, могут быть действительны и могут использоваться при декодировании. Дополнительно, значения второго набора синтаксических элементов во втором элементарном блоке набора параметров могут быть действительными в случае, когда упомянутый второй элементарный блок игнорируют или удаляют. Например, если декодируется компонентная последовательность, содержащая первый элементарный блок, но второй элементарный блок игнорируют, и во многих случаях эта компонентная последовательность содержит второй элементарный блок, параметры HRD и/или level_idc второго набора параметров могут характеризовать битовую скорость битового потока и/или буферизацию битового потока, и/или другие его свойства и, следовательно, могут быть действительными и использоваться для декодирования. В другом примере, если декодируется битовый поток, содержащий одновременно первый и второй элементарные блоки, параметры HRD и/или level_idc второго набора параметров могут характеризовать битовую скорость битового потока и/или буферизацию битового потока, и/или другие его свойства и, следовательно, могут быть действительными и использоваться для декодирования.
Рассмотрим фиг. 11, где проиллюстрированы операции, которые могут выполняться устройством 50, сконфигурированным в соответствии с еще одним из примеров осуществления настоящего изобретения. Устройство может включать средства, например, процессор 56, интерфейс связи или аналогичный элемент, для приема первого масштабируемого потока данных, включающего уровни масштабируемости с различными свойствами кодирования. Рассмотрим блок 420 на фиг. 11. Каждый из двух или более уровней масштабируемости может быть связан с идентификатором уровня масштабируемости и может характеризоваться первым набором синтаксических элементов, который включает по меньшей мере профиль, и вторым набором синтаксических элементов, который включает уровень и/или параметры HRD. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, включающем данные из первого из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться в первом элементарном блоке набора параметров для первого из двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго набора синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров с использованием второго из упомянутых двух или более уровней масштабируемости таким образом, что второй набор параметров может быть прочитан декодером для определения упомянутого свойства декодирования без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. В соответствии с фиг. 11 в блоке 422 устройство согласно данному варианту осуществления настоящего изобретения может также включать средства, например, процессор или аналогичный элемент, для удаления из принятого первого масштабируемого потока данных упомянутых второго элементарного блока и второго элементарного блока набора параметров. Второй элементарный блок и второй элементарный блок набора параметров могут удаляться на основе того, что второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора второго уровня масштабируемости.
Рассмотрим фиг. 12, где проиллюстрированы операции, которые могут выполняться устройством 50, сконфигурированным в соответствии с еще одним из примеров осуществления настоящего изобретения. Устройство может включать средства, например, процессор 56, интерфейс связи или аналогичный элемент, для приема первого масштабируемого потока данных, который включает уровни масштабируемости с различными свойствами кодирования. Каждый из упомянутых двух или более уровней масштабируемости может быть связан с идентификатором уровня масштабируемости и может характеризоваться свойством кодирования. Значение идентификатора первого уровня масштабируемости может располагаться в первом элементарном блоке, который включает данные из первого из двух или более уровней масштабируемости. Первый из упомянутых двух или более уровней масштабируемости со свойством кодирования может сигнализироваться в первом элементарном блоке набора параметров таким образом, что упомянутое свойство кодирования может быть прочитано декодером для определения этого свойства кодирования без декодирования уровня масштабируемости масштабируемого потока данных. Значение идентификатора упомянутого первого уровня масштабируемости может располагаться в упомянутом первом элементарном блоке набора параметров. Значение идентификатора второго уровня масштабируемости может располагаться во втором элементарном блоке, включающем данные из второго из двух или более уровней масштабируемости. Первый и второй наборы синтаксических элементов могут сигнализироваться во втором элементарном блоке набора параметров для второго из упомянутых двух или более уровней масштабируемости таким образом, что первый набор параметров может быть прочитан декодером для определения значений упомянутых первого и второго наборов синтаксических элементов без декодирования уровня масштабируемости упомянутого масштабируемого потока данных. Значение идентификатора упомянутого второго уровня масштабируемости может располагаться в упомянутом втором элементарном блоке набора параметров. В соответствии с иллюстрацией в блоке 432 устройство согласно данному варианту осуществления настоящего изобретения может включать средства, например, процессор, интерфейс связи или аналогичный элемент, для приема набора значений идентификаторов уровней масштабируемости, указывающих на декодируемые уровни масштабируемости. Устройство согласно данному варианту осуществления настоящего изобретения может также включать средства, например, процессор или аналогичный элемент, для удаления из принятого первого масштабируемого потока данных упомянутых второго элементарного блока и второго элементарного блока набора параметров. Например, второй элементарный блок и второй элементарный блок набора параметров могут удаляться на основе того, что второй элементарный блок и упомянутый второй элементарный блок набора параметров включают значение идентификатора второго уровня масштабируемости, не находящееся среди упомянутого набора значений идентификаторов уровней масштабируемости. См. блок 434 на фиг. 12.
В приведенном выше описании примеры осуществления настоящего изобретения были описаны с помощью синтаксиса битового потока. Однако нужно понимать, что соответствующая структура и/или компьютерная программа может располагаться в кодере для формирования битового потока и/или в декодере для декодирования битового потока. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на кодер, нужно понимать, что результирующий поток и декодер также включают соответствующие элементы. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на декодер, нужно понимать, что кодер включает структуру и/или компьютерную программу для формирования битового потока, декодируемого декодером.
Выше варианты осуществления настоящего изобретения были рассмотрены на примере набора параметров последовательности. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы с использованием наборов параметров любого типа, например, наборов видеопараметров, параметров изображения, наборов параметров GOS, наборов параметров адаптации или синтаксических структур других типов, таких как NAL-блоки SEI и сообщения SEI.
Технологии, применяемые в мультимедийных приложениях, помимо прочего, включают кодирование, хранение и передачу мультимедийной информации. Типы мультимедийной информации включают голосовую информацию, аудиоинформацию, изображения, видеоинформацию, графику и текстовую информацию времени. В данном документе в качестве примера применения настоящего изобретения описано видеокодирование, однако варианты осуществления изобретения этим не ограничены. Специалистам понятно, что варианты осуществления настоящего изобретения могут использоваться для любых типов мультимедийной информации, а не только для видеоинформации.
Хотя в приведенных выше примерах описываются варианты осуществления настоящего изобретения, работающие в рамках кодека внутри электронного устройства, следует принимать во внимание, что изобретение, как будет описано ниже, может быть реализовано как часть любого видеокодека. Таким образом, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, который может выполнять кодирование видеосигнала, передаваемого по фиксированным или проводным трактам связи.
Таким образом, пользовательское устройство может содержать видеокодек, такой как кодеки, описанные в представленных выше вариантах осуществления настоящего изобретения. Следует отметить, что термин пользовательское устройство охватывает пользовательское оборудование беспроводной связи любого подходящего типа, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.
Кроме того, элементы наземной сети мобильной связи общего пользования (PLMN, public land mobile network) также могут содержать описанные выше видеокодеки.
В целом, различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или специализированных схем, программного обеспечения, логических схем или любой комбинации указанных средств. Например, некоторые аспекты могут быть реализованы в виде аппаратных средств, в то время как другие аспекты могут быть реализованы в виде встроенного программного или программного обеспечения, которое может выполняться контроллером, микропроцессором или другим вычислительным устройством, хотя изобретение не ограничено перечисленными средствами. Хотя различные аспекты настоящего изобретения могут быть проиллюстрированы и описаны в виде структурных схем, блок-схем или с использованием некоторых других графических представлений, очевидно, что описанные здесь блоки, устройства, системы, методы или способы могут быть реализованы, не ограничиваясь приведенными примерами, в виде аппаратного, программного, встроенного программного обеспечения, специализированных схем или логических схем, универсальных аппаратных средств или контроллера или других вычислительных устройств, или некоторой их комбинации.
Различные варианты осуществления настоящего изобретения могут быть реализованы с помощью компьютерного программного кода, размещенного в памяти и обеспечивающего реализацию настоящего изобретения соответствующими устройствами. Например, оконечное устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код в памяти и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным оконечным устройством. Кроме того, сетевое устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код в памяти и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным сетевым устройством.
Как отмечалось выше, блоки памяти могут быть любого типа, подходящего к локальной технической среде, и могут быть реализованы с использованием любых подходящих технологий хранения данных и представлять собой, например, устройства полупроводниковой памяти, устройства и системы магнитной памяти, устройства и системы оптической памяти, несъемную и съемную память. Процессоры данных могут быть любого типа, подходящего для локальной технической среды, и могут включать в качестве не ограничивающих изобретение примеров один или более универсальных компьютеров, специализированных компьютеров, микропроцессоров, цифровых сигнальных процессоров (DSP, digital signal processor) и процессоров на основе многоядерной архитектуры в соответствии с дальнейшим более подробным описанием.
Варианты осуществления настоящего изобретения могут быть выполнены в виде различных компонентов, таких как модули интегральных схем. В целом, конструирование интегральных схем является высокоавтоматизированным процессом. Имеются комплексные и эффективные программные средства для преобразования разработки логического уровня в полупроводниковую схему, подготовленную для травления и формирования полупроводниковой основы.
Программы, производимые, например, компаниями Synopsys, Inc., Маунтин Вью, Калифорния, и Cadence Design, Сан Хосе, Калифорния, автоматически разводят проводники и размещают компоненты на полупроводниковом кристалле с использованием установленных правил разработки, а также библиотек заранее сохраненных модулей разработки. По окончании разработки полупроводниковой схемы полученный в результате проект в стандартизованном электронном формате (например, Opus, GDSII и т.п.) может быть передан на производство полупроводникового устройства для изготовления.
В соответствии с приведенным выше описанием фиг. 10-12 представляют собой блок-схемы алгоритма, устройства и программного продукта, соответствующих примерам осуществления настоящего изобретения. Нужно понимать, что каждый блок этих блок-схем, а также комбинации блоков на блок-схемах, могут быть реализованы с помощью различных средств, например, с помощью аппаратного обеспечения, встроенного программного обеспечения, процессора, схем и/или другого устройства, связанного с исполнением программного обеспечения, включающего одну или более инструкций программного кода. Например, одна или более из описанных выше процедур может быть реализована с помощью компьютерных программных инструкций. Компьютерные программные инструкции, реализующие описанные выше процедуры, могут храниться в запоминающем устройстве 58 устройства 50, в котором применяется один из вариантов осуществления настоящего изобретения, и исполняться процессором 56 устройства. Нужно понимать, что любые такие компьютерные программные инструкции могут быть загружены в компьютер или в другое программируемое устройство (например, аппаратное обеспечение) для создания машины, и таким образом компьютер или другое программируемое устройство будут являться реализацией механизма выполнения функций, описанных в блоках блок-схемы алгоритма. Эти компьютерные программные инструкции могут храниться на машиночитаемом носителе (который следует отличать от среды передачи данных, например, несущей волны или электромагнитного сигнала), который может обеспечивать функционирование компьютера или иного программируемого устройства таким образом, что упомянутые инструкции, хранимые в машиночитаемой памяти, образуют изделие, которое реализует функцию, заданную в блоках блок-схемы. Компьютерные программные инструкции могут также загружаться в компьютер или в иное программируемое устройство для обеспечения выполнения последовательности операций в компьютере или ином программируемом устройстве, в результате чего формируется реализуемый компьютером процесс, таким образом, что инструкции, которые исполняются в компьютере или ином программируемом устройстве, обеспечивают операции для реализации функций, заданных в блоке (или блоках) блок-схемы. Операции на фиг. 10-12 при их исполнении преобразуют компьютер или схему обработки данных в машину, сконфигурированную для выполнения одного из примеров настоящего изобретения. Соответственно, операции на фиг. 10-12 определяют алгоритм конфигурирования компьютера или схемы обработки данных (например, процессора) для выполнения одного из примеров настоящего изобретения. В некоторых случаях компьютер общего назначения может быть сконфигурирован для выполнения функций, проиллюстрированных на фиг. 10-12, (например, с помощью конфигурирования процессора), за счет чего компьютер общего назначения преобразуется в машину, сконфигурированную для выполнения одного из примеров настоящего изобретения.
Соответственно, блоки блок-схем поддерживают комбинации средств для выполнения заданных функций, комбинации операций для выполнения заданных функций и программные инструкции для выполнения заданных функций. Также нужно понимать, что один или более блоков блок-схем, а также комбинации блоков блок-схем могут быть реализованы с помощью специализированных компьютерных систем, которые выполняют заданные функции или операции, или комбинации специализированного аппаратного обеспечения и компьютерных инструкций.
В некоторых из вариантов осуществления настоящего изобретения некоторые из описанных выше операций могут быть изменены или расширены. Кроме того, в некоторых из вариантов осуществления настоящего изобретения могут быть введены опциональные дополнительные операции. Изменения, дополнения или расширения описанных выше операций могут выполняться в любой последовательности и в любых комбинациях.
Специалистами могут быть выполнены множество изменений и других вариантов осуществления настоящего изобретения, изложенного в предшествующем описании и проиллюстрированного на приложенных чертежах, с сохранением преимуществ изобретения. Соответственно, нужно понимать, что настоящее изобретение не ограничено описанными конкретными вариантами его осуществления, и все такие изменения и другие варианты осуществления изобретения входят в объем приложенной формулы изобретения. В приведенном выше описании и на приложенных чертежах примеры осуществления настоящего изобретения описаны в контексте конкретных примеров комбинаций элементов и/или функций, однако нужно понимать, что в альтернативных вариантах осуществления настоящего изобретения могут использоваться другие комбинации элементов и/или функций в пределах сущности приложенной формулы изобретения. Например, в некоторых пунктах приложенной формулы изобретения могут быть изложены отличающиеся от явно описанных выше комбинации элементов и/или функций. В настоящем документе конкретные термины использованы в общем и описательном смысле и не ограничивают изобретение.