СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОДАННЫХ
METHOD AND DEVICE FOR VIDEO CODING AND DECODING

Область техники
[0001] Настоящая заявка относится, в общем, к устройству, способу и компьютерной программе для кодирования и декодирования видеоданных. А именно, различные варианты осуществления настоящего изобретения относятся к кодированию и декодированию чересстрочных исходных видеоданных.
Предпосылки создания изобретения
[0002] Настоящий раздел имеет целью представить текущий уровень техники, или контекст настоящего изобретения, заявленного в пунктах формулы изобретения. Описание может включать идеи, не обязательно уже предложенные или получившие развитие. Соответственно, в настоящем документе, если не указано на обратное, описание в данном разделе не является существующим уровнем техники для формулы изобретения настоящей заявки.
[0003] Система видеокодирования может иметь в своем составе кодер, при помощи которого входные видеоданные преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодер, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра пользователем. В кодере часть информации исходной видеопоследовательности может отбрасываться с целью представления видеоинформации в более компактной форме, например, для обеспечения возможности передачи или хранения видеоинформации с меньшим битрейтом (т.е. битовой скоростью потока), чем это потребовалось бы в обратном случае.
[0004] Масштабируемым видеокодированием называться такая структура кодирования, в которой один битовый поток может содержать несколько представлений контента с различным битрейтом, разрешением, частотой смены кадров и/или другими типами масштабируемости. Масштабируемый битовый поток может состоять из базового уровня, обеспечивающего наименьшее из доступных качество видеоинформации, а также из одного или более уточняющих слоев, которые повышают качество видеоинформации при их приеме и декодировании вместе с нижними уровнями. С целью повышения эффективности кодирования уточняющих слоев их кодированные представления могут зависеть от нижележащих уровней. Каждый уровень вместе со всеми зависимыми от него уровнями является одним из представлений видеосигнала с определенным пространственным разрешением, временным разрешением, уровнем качества и/или определенной «рабочей точкой» масштабирования других типов.
[0005] В настоящее время ведутся исследования и разработки технологий предоставления трехмерных (3D) видеоданных. В частности, активно исследуются различные применения многоракурсных видеоизображений, в которых зритель может наблюдать только одну пару стереоскопических видеоизображений с определенной точки зрения и еще одну пару стереоскопических видеоизображений с другой точки зрения. Одним из наиболее целесообразных подходов для практической реализации таких многоракурсных технологий стал подход, в котором на сторону декодера передают только ограниченное количество входных ракурсов, например моно- или стереоскопическое видеоизображение плюс некоторые вспомогательные данные, а все необходимые ракурсы для отображения на дисплее затем отрисовываются (т.е. синтезируются) локально в декодере.
[0006] При кодировании трехмерного видеоконтента могут применяться такие системы сжатия видеоинформации, как стандарт улучшенного видеокодирования (Advanced Video Coding) H.264/AVC, его расширение - многоракурсное видеокодирование (Multiview Video Coding, MVC), или масштабируемые расширения стандарта HEVC.
Сущность изобретения
[0007] В некоторых из вариантов осуществления настоящего изобретения предложен способ кодирования и декодирования видеоинформации. Цель некоторых из вариантов осуществления настоящего изобретения - обеспечить возможность адаптивного изменения разрешения с использованием расширения масштабируемого видеокодирования, например, SHVC. Это может быть реализовано при помощи указания, в битовом потоке масштабируемого видеокодирования, на то, что в уточняющем уровне для межуровневого предсказания применяются только определенные типы изображений (к примеру, RAP-изображения, или изображения другого типа, на которые указывают с использованием другого типа NAL-блока). Также, в битовом потоке может быть выполнено указание на операцию адаптивного изменения разрешения, таким образом, чтобы в изображениях, где переключение не выполняется, каждый блок доступа (AU) в последовательности содержал одно изображение из единственного уровня (которые может быть изображением базового уровня или другого уровня) а блоки доступа, в которых выполняется переключение, содержали изображения из двух уровней, и при этом могут также применяться межуровневые инструменты масштабирования.
[0008] Описанная выше схема кодирования позволяет получить ряд преимуществ. Например, при использовании такого указания адаптивное изменение расширения может применяться в окружении конференц-видеосвязи с поддержкой расширения масштабирования, где наличие промежуточного узла позволяет обеспечить повышенную гибкость при регулировке битового потока и его адаптации для оконечных узлов, обладающих различными возможностями.
[0009] Различные аспекты примеров настоящего изобретения рассмотрены в разделе с его подробным описанием.
[0010] В соответствии с первым аспектом настоящего изобретения предложен способ, включающий:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля; в ответ на выявление точки переключения с декодирования кодированных кадров на декодирование кодированных полей, выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля; изменение разрешения одного или более полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0011] В соответствии со вторым аспектом настоящего изобретения предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения выполнения упомянутым устройством по меньшей мере следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля;
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0012] В соответствии с третьим аспектом настоящего изобретения предложен компьютерный программный продукт, выполненный на машиночитаемом носителе, который содержит компьютерный программный код, сконфигурированный, при исполнении по меньшей мере на одном процессоре, для обеспечения выполнения, устройством или системой, следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает: в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второй пары кодированных полей второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля;
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0013] В соответствии с четвертым аспектом настоящего изобретения предложен способ, включающий:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, при этом кодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей; в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего: кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня, при этом кодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0014] В соответствии с пятым аспектом настоящего изобретения предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения выполнения упомянутым устройством по меньшей мере следующего: прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, с использованием первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня; восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле; изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня с использованием второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0015] В соответствии с шестым аспектом настоящего изобретения предложен компьютерный программный продукт, выполненный на машиночитаемом носителе, который содержит компьютерный программный код, сконфигурированный, при исполнении по меньшей мере на одном процессоре, для обеспечения выполнения, устройством или системой, следующего:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, с использованием первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения;
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня с использованием второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0016] В соответствии с седьмым аспектом настоящего изобретения предложен видеодекодер, сконфигурированный для декодирования битового потока блоков данных визуальной информации, при этом упомянутый видеодекодер дополнительно сконфигурирован для выполнения следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля; в ответ на выявление точки переключения с декодирования кодированных кадров на декодирование кодированных полей, выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0017] В соответствии с восьмым аспектом настоящего изобретения предложен видеокодер, сконфигурированный для кодирования битового потока блоков данных визуальной информации, при этом упомянутый видеокодер дополнительно сконфигурирован для выполнения следующего:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, при этом кодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня, при этом кодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
Краткое описание чертежей
[0018] Для более полного понимания примеров осуществления настоящего изобретения необходимо обратиться к дальнейшему описанию, которое осуществляется с связи с приложенными чертежами, где:
[0019] на фиг. 1 эскизно проиллюстрировано электронное устройство, в котором применяются некоторые из вариантов осуществления настоящего изобретения;
[0020] на фиг. 2 эскизно проиллюстрировано абонентское оборудование, подходящее для применения некоторых из вариантов настоящего изобретения;
[0021] на фиг. 3 также эскизно проиллюстрированы электронные устройства, в которых применяются некоторые из вариантов осуществления настоящего изобретения и которые соединены при помощи проводных и/или беспроводных сетевых соединений;
[0022] на фиг. 4а эскизно проиллюстрирован один из вариантов осуществления кодера;
[0023] на фиг. 4b эскизно проиллюстрирован один из вариантов осуществления устройства кодирования с пространственным масштабированием в соответствии с некоторыми из вариантов осуществления настоящего изобретения;
[0024] на фиг. 5а эскизно проиллюстрирован один из вариантов осуществления декодера;
[0025] на фиг. 5b эскизно проиллюстрирован один из вариантов осуществления устройства декодирования с пространственным масштабированием в соответствии с некоторыми из вариантов осуществления настоящего изобретения;
на фиг. 6а и 6b показан один из примеров применения значений смещения для расширенного пространственного масштабирования;
[0026] на фиг. 7 показан пример изображения, состоящего из двух тайлов;
[0027] фиг. 8 является графическим представлением типовой системы мультимедийной связи;
[0028] на фиг. 9 показан пример, в котором кодированные поля располагаются в базовом уровне, а кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в уточняющем уровне;
[0029] на фиг. 10 показан пример, в котором кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в базовом уровне, BL, а кодированные поля располагаются в уточняющем уровне;
[0030] на фиг. 11 показан пример, в котором кодированные поля располагаются в базовом уровне, а кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в уточняющем уровне, и при этом используют диагональное предсказание;
[0031] на фиг. 12 показан пример, в котором кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в базовом уровне, BL, а кодированные поля располагаются в уточняющем уровне, и при этом используют диагональное предсказание;
[0032] на фиг. 13 показан пример «лесенки» уровней с кодированными кадрами и полями;
[0033] на фиг. 14 показан один из примеров размещения кодированных полей и кодированных кадров по уровням в виде связанных пар уровней с двунаправленным диагональным межуровневым предсказанием;
[0034] на фиг. 15 показан пример, в котором для внешне-предсказываемых изображений базового уровня применяют межуровневое предсказание;
[0035] на фиг. 16 показан пример, в котором совместно с внешне-предсказываемыми изображениями базового уровня применяют пропускаемые изображения;
[0036] на фиг. 17 показан пример, в котором кодированные поля располагаются в базовом уровне, а кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в уточняющем уровне, и в котором изображение уточняющего уровня, сорасположенное с кадром или парой полей базового уровня, используют для повышения качества одного или обоих полей в кадре или паре полей базового уровня.
[0037] на фиг. 18 показан пример, в котором кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в базовом уровне, BL, а кодированные поля располагаются в уточняющем уровне, и в котором изображение уточняющего уровня, сорасположенное с кадром или парой полей базового уровня, используют для повышения качества одного или обоих полей в кадре или паре полей базового уровня;
[0038] на фиг. 19 показан пример верхнего и нижнего полей в различных уровнях;
[0039] на фиг. 20а показан пример определения деревьев уровней; и
[0040] на фиг. 20b показан пример дерева уровней с двумя независимыми уровнями.
Подробное описание некоторых примеров осуществления изобретения
[0041] Далее будут описаны несколько вариантов осуществления настоящего изобретения в контексте одной из систем видеокодирования. Следует однако отметить, что настоящее изобретение не ограничено данным конкретным применением. Напротив, различные варианты осуществления настоящего изобретения могут иметь широкое применения в любых системах, где необходимо повышение эффективности кодирования при переключении между кодированными полями и кадрами. Например, настоящее изобретение может применяться в таких системах видеокодирования как системы потоковой передачи данных, DVD-проигрыватели, приемники цифрового телевидения, персональные видеорекордеры, системы и компьютерные программы на персональных компьютерах, наладонных компьютерах и устройствах связи, а также такие сетевые элементы, как транскодеры и облачные вычислительные системы, обрабатывающие видеоданные.
[0042] Ниже несколько вариантов осуществления настоящего изобретения будут описаны с использованием условного обозначения "(де)кодирование", которое означает, что данные варианты осуществления настоящего изобретения могут применяться как для декодирования, так и для кодирования.
[0043] Стандарт усовершенствованного видеокодирования (Advanced Video Coding, сокращенно: AVC или 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), 10-ая часть MPEG-4. Были выпущены несколько версий стандарта H.264/AVC, в спецификацию каждой из которых добавлялись новые расширения или элементы. В число этих расширений вошли масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видекодирование (Multiview Video Coding, MVC).
[0044] Объединенной командой по видеокодированию (Joint Collaborative Team - Video Coding, JCT-VC) группы VCEG и MPEG был создан разработан высокоэффективного видеокодирования (High Efficiency Video Coding, сокращенно: HEVC или H.265/HEVC). Стандарт опубликован обеими родительскими организациями по стандартизации и имеет наименование Рекомендации Н.265 ITU-T и Международного стандарта ISO/IEC 23008-2, известного также как высокоэффективное видеокодирование (HEVC), 2-ая часть MPEG-H. В настоящее время продолжаются работы по стандартизации, имеющие целью определить расширения стандарта H.265/HEVC, включая расширения масштабируемого, многоракурсного, трехмерного кодирования и расширение диапазона точности, которые, соответственно, имеют наименования SHVC, MV-HEVC, HEVC и REXT. В настоящем описании, если прямо не указано на обратное, ссылки на стандарты H.265/HEVC, SHVC, MV-HEVC, 3D-HEVC и REXT, которые могут осуществляться с целью разъяснения определений, структур или концепций спецификаций этих стандартов, следует трактовать как ссылки на новейшие редакции этих стандартов, существующие до момента подачи настоящей заявки.
[0045] При описании стандартов H.264/AVC и HEVC, а также примеров осуществления настоящего изобретения, может использоваться общепринятая нотация арифметических операторов, логических операторов, операторов отношений, битовых операторов, операторов назначений, и нотация диапазонов, например, определенная в стандарте H.264/AVC или HEVC. Также, могут использоваться общие математические функции, например, определенные в стандарте H.264/AVC или HEVC, и общий порядок предшествования и исполнения (слева направо или справа налево) операторов, например, определенные в стандарте H.264/AVC или HEVC.
[0046] При описании стандартов H.264/AVC и HEVC, а также различных примеров осуществления настоящего изобретения, для описания процедуры синтаксического анализа синтаксических элементов могут использоваться следующие обозначения.
- b(8): байт из битовой строки с любой последовательностью бит (8 бит).
- se(v): синтаксический элемент, представляющий собой целое значение со знаком, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита. - u(n): целое без знака с использованием n бит. Если в синтаксической таблице n равно "v", то количество бит изменяется в зависимости от значения других синтаксических элементов. Процедура синтаксического разбора данного дескриптора определяется следующими n битами в битовом потоке, которые интерпретируются как двоичное представление целого числа без знака, старший бит которого идет первым.
- ue(v): синтаксический элемент, представляющий собой целое значение без знака, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита.
[0047] Битовая строка, кодированная методом экспоненциального кодирования Голомба, может быть преобразована в кодовое число (coneNum), например, с использованием следующей таблицы:
[0048] Кодовое число, соответствующее битовой строке, кодированной методом экспоненциального кодирования Голомба, может быть преобразовано в se(v), например, с использованием следующей таблицы:
[0049] При описании стандартов H.264/AVC и HEVC, а также различных примеров осуществления настоящего изобретения, синтаксические структуры, семантика синтаксических элементов и процедура декодирования могут быть определены описанным ниже образом. Синтаксические элементы в битовом потоке обозначены жирным шрифтом. Каждый синтаксический элемент описан именем (строчные буквы с символами подчеркивания), опционально, указаны его одна или две синтаксические категории, и один или два дескриптора метода кодированного представления. Поведение процедуры декодирования определяется значением синтаксического элемента и значениями ранее декодированных синтаксических элементов. При использовании значений синтаксических элементов в синтаксических таблицах или в тексте, они приводятся обычным (т.е. не жирным) шрифтом. В некоторых случаях в синтаксических таблицах могут использоваться значения других переменных, вычисленных на основе значений синтаксических элементов. Такие переменные приводятся в синтаксических таблицах или в тексте с наименованиями, состоящими из смеси строчных и прописных букв, без символов подчеркивания. Переменные, начинающиеся с прописной буквы, вычисляются для декодирования текущей синтаксической структуры и всех зависимых синтаксических структур. Переменные, начинающиеся с прописной буквы, могут быть использованы в процессе декодирования последующих синтаксических структур без упоминания исходной синтаксической структуры переменной. Переменные, начинающиеся со строчной буквы, используются только в контексте их вычисления. В некоторых случаях «мнемонические» наименования значений синтаксических элементов или переменных используются взаимозаменяемо с их численными значениями. Иногда «мнемонические» наименования используются без каких-либо соответствующих численных значений. Соответствие значений и наименований определено в тексте. Наименования формируются из одной или более групп алфавитных символов, разделенных символом подчеркивания. Каждая группа начинается с прописной буквы и может содержать дополнительные прописные буквы.
[0050] При описании стандартов H.264/AVC и HEVC, а также различных примеров осуществления настоящего изобретения, синтаксическая структура может быть определена с использованием следующих обозначений. Группа выражений, заключенная в круглые скобки, является составным выражением и функционально трактуется как одно выражение. Структура "while" задает проверку истинности условия, и при истинности условия задает вычисление выражения (или составного выражения) в цикле до тех пор, пока данное условие не перестанет быть истинным. Структура "do … while" подразумевает однократное вычисление выражения, после чего выполняется проверка истинности условия, и в случае истинности - повторное вычисление выражения, до тех пор, пока условие не перестанет быть истинным. Структура "if … else" подразумевает проверку истинности условия, и если условие истинно, - вычисление первичного выражения, и в противном случае, вычисление альтернативного выражения. Часть "else" данной структуры и связанное с ней альтернативное выражение опускается, если вычисление альтернативного выражения не требуется. Структура "for" подразумевает вычисление исходного выражения, после чего выполняется проверка истинности условия, и в случае истинности - повторное вычисление первичного выражения, после которого идет следующее выражение, до тех пор, пока условие не перестанет быть истинным.
[0051] В настоящем разделе приведены ключевые определения, описана структура битового потока и кодирования, а также основные понятия стандартов H.264/AVC и HEVC, а также некоторых из их расширений. Они использованы в качестве примера видеокодера, декодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Часть ключевых определений, структур битового потока и кодирования, а также основных понятий стандарта H.264/AVC совпадают с проектом стандарта HEVC, в этом случае они описаны ниже совместно. Аспекты настоящего изобретения не ограничены стандартами H.264/AVC и HEVC, или их расширениями, напротив, данное описание приведено в качестве одного из примеров базы для частичной или полной реализации настоящего изобретения.
[0052] Аналогично многим предшествующим стандартам видеокодирования, в стандартах H.264/AVC и HEVC определены синтаксис и семантика битового потока, а также процесс декодирования безошибочных битовых потоков. Процесс кодирования не определен, однако кодеры должны формировать битовые потоки, соответствующие стандарту. Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического опорного декодера (Hypothetical Reference Decoder (HRD). Стандарт включает в себя инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании не является обязательным, а процесс декодирования для битовых потоков с ошибками не определен.
[0053] Элементарной единицей для ввода в декодер H.264/AVC или HEVC и вывода из декодера H.264/AVC или HEVC, соответственно, является изображение. Изображение, поданное в качестве входных данных в кодер, может называться исходным изображением, а изображение, декодированное декодером, может называться декодированным изображением.
[0054] Исходное и декодированное изображения, каждое, могут состоять из одного или более массивов отсчетов, например, одного или более наборов массивов отсчетов:
- Только составляющая яркости (Y) (монохромное изображение).
Составляющая яркости и две составляющие цветности (YCbCr или YCgCo).
Составляющие зеленого, синего и красного (GBR или RGB).
Массивы, представляющие другие неопределенные монохромные или трехкомпонентные цветовые отсчеты (например, YZX, которые также называют XYZ).
[0055] Далее в настоящем описании такие массивы называются компонентами яркости (или L, или Y) и компонентами цветности, при этом два массива цветности могут обозначаться за Cb и Cr; независимо от реально используемого метода представления информации о цвете. Реально используемый способ представления цветовой информации может, например, указываться в битовом потоке, например, с использованием синтаксиса информации об используемости видео (Video Usability Information, VUI) в стандарте H.264/AVC и/или HEVC. Компонент может быть определен как массив отсчетов, или одиночный отсчет, из одного из трех массивов отчетов (одного яркости и двух цветности), или как массив отсчетов, или одиночный отсчет, из массива, образующего изображение в монохромном формате.
[0056] В случае стандартов H.264/AVC и HEVC изображение может представлять собой кадр или поле. Кадр включает в себя матрицу отсчетов яркости, и возможно также, соответствующих отсчетов цветности. Поле - это набор чередующихся строк отсчетов кадра. Например, поля могут использоваться в качестве входных данных для кодера, когда исходный сигнал является чересстрочным. Массивы отсчетов цветности могут отсутствовать (и следовательно, могут применяться монохромные значения) или массивы отсчетов цветности могут иметь пониженное разрешение по сравнению с массивами отсчетов яркости. Ниже кратко описаны некоторые из форматов представления цветности.
При дискретизации в монохромном формате имеется только один массив отсчетов, который, по определению, считают массивом яркости.
При дискретизации с форматом 4:2:0 каждый из двух массивов цветности имеет половину высоты массива яркости и половину его ширины.
При дискретизации с форматом 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту с массивом яркости, но половину ширины.
При дискретизации с форматом 4:4:4, если не используются отдельных цветовых плоскостей, каждый из двух массивов цветности ту же высоту и ширину, что и массив яркости.
[0057] В стандартах H.264/AVC и HEVC массивы отсчетов могут кодироваться в виде отдельных цветовых плоскостей в битовом потоке, и соответственно, может выполняться декодирование отдельно кодированных цветовых плоскостей из битового потока. Если применяются отдельные цветовые плоскости, каждую из них обрабатывают отдельно (в кодере и/или декодере) как изображение с монохромным представлением.
[0058] Если для компонентов цветности применяют меньшую частоту дискретизации (например, формат 4:2:0 или 4:2:2 представления цветовой информации), то местоположение отсчетов цветности относительно отсчетов яркости может определяться на стороне кодера (например, в качестве шага предварительной обработки или в качестве части процедуры кодирования). Положения отсчетов яркости относительно отсчетов цветности могут быть заранее заданы, например, в стандарте кодирования, в случае H.264/AVC или HEVC, или могут быть указаны в битовом потоке, например, как часть информации VUI в стандартах H.264/AVC или HEVC.
[0059] В общем случае исходная видеопоследовательность (или последовательности), предоставленная в качестве входных данных для кодирования, может представлять собой чересстрочные исходные видеоданные или прогрессивные исходные видеоданные. Поля противоположной четности, которые используют для чересстрочных исходных видеоданных, могут захватываться в различные моменты времени. Прогрессивные исходные видеоданные содержат захваченные кадры. Кодер может кодировать поля чересстрочных исходных данных двумя методами: пара чересстрочных полей может кодироваться в виде кодированного кадра или каждое отдельное поле может кодироваться в виде кодированного поля. Аналогично, кодер может кодировать кадры прогрессивного исходного контента двумя способами: кадр прогрессивного исходных видеоданных может кодироваться в виде кодированного кадра или в виде пары кодированных полей. Пара полей, или комплементарная пара полей, может быть определена как два смежных поля в порядке декодирования и/или вывода, которые имеют противоположную четность (т.е. одно из них является верхним полем, а второе - нижним полем), и ни одно из которых не принадлежит никакой другой комплементарной паре полей. В некоторых из стандартов или схем видеокодирования допускается смешивание кодированных кадров и кодированных полей в одной кодированной видеопоследовательности. При этом, при кодировании и/или декодировании, может обеспечиваться возможность предсказания кодированного поля на основе некоторого поля в кодированном кадре и/или предсказание кодированного кадра на основе комплементарной пары полей (кодированной в виде полей).
[0060] Разбиением называют такое разделение множества на подмножества, при котором каждый из элементов множества находится только в одном из подмножеств. Разбиение изображения может быть определено как разделение изображения на менее крупные, неперекрывающиеся элементы. Разбиение блока может быть определено как разделение блока на менее крупные неперекрывающиеся подблоки. В некоторых случаях выражение «разбиение на блоки» можно считать охватывающим несколько уровней разбиения, к примеру, разбиение изображения на слайсы, а также разбиение каждого из слайсов на менее крупные блоки, такие как макроблоки в стандарте H.264/AVC. Следует отметить, что один и тот же элемент, например, изображение, может иметь более одного разбиения. К примеру, блок кодирования в проекте стандарта HEVC может быть разбит на блоки предсказания, а также, независимо от этого, на блоки преобразования, с использованием другого дерева квадратов (квадрадерева).
[0061] В стандарте H.264/AVC макроблок представляет собой блок отсчетов яркости размером 16x16 и соответствующие блоки отсчетов цветности. Например, при схеме дискретизации 4:2:0 макроблок будет содержать один блок отсчетов размером 8x8 для каждого компонента цветности. В стандарте H.264/AVC изображение разбивается на одну или более групп слайсов, при этом каждая группа слайсов содержит один или более слайсов. В стандарте H.264/AVC слайс состоит из целого числа макроблоков, упорядоченных в порядке сканирования растра в данной группе слайсов.
[0062] В ходе стандартизации HEVC терминология, к примеру, относящаяся к элементам разбиения изображений, претерпела некоторые изменения. В следующих абзацах приведены неограничивающие примеры терминологии, относящейся к стандарту HEVC.
[0063] В одной из версий проекта стандарта HEVC изображения разбивают на блоки кодирования (CU), покрывающие область изображения. Каждый из блоков кодирования состоит из одного или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания элементов изображения в блоке кодирования, а также одного или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для отсчетов в блоке кодирования. Как правило, блок кодирования состоит из квадратного массива отсчетов, размер которого выбирается из заранее заданного множества допустимых размеров блока кодирования. Блок кодирования максимально допустимого размера, как правило, называется LCU (наибольший блок кодирования), при этом изображение в видео разделяется на неперекрывающиеся LCU. Блок LCU может быть разбит на комбинацию менее крупных блоков кодирования, например, при помощи рекурсивного разбиения LCU и результирующих блоков кодирования. Каждый из результирующих блоков кодирования, как правило, имеет связанными с ним по меньшей мере один блок предсказания и один блок преобразования. Каждый блок преобразования и блок преобразования могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения детализации процедур предсказания и кодирования ошибки предсказания соответственно. Разбиение блока предсказания может быть реализовано как разбиение блока кодирования на четыре квадратных блока предсказания или разбиение блока кодирования на два прямоугольных блока предсказания по вертикали или по горизонтали, симметрично или несимметрично. Разделение изображения на блоки кодирования, и разделение блоков кодирования на блоки предсказания и блоки преобразования, сигнализируемые, как правило, в битовом потоке, позволяет декодеру воспроизводить заданную структуру этих блоков.
[0064] В проекте стандарта HEVC изображение может быть разбито на тайлы (ячейки), которые имеют прямоугольную форму и содержат целое число блоков LCU. В проекте стандарта HEVC разбиение на тайлы дает регулярную сетку, в которой максимальная разность между высотой и шириной тайлов равна одному LCU. В проекте стандарта HEVC каждый слайс состоит из целого числа блоков кодирования. Блоки кодирования сканируются в порядке сканирования растра LCU в тайлах или в изображении в целом, если тайлы не используются. В LCU блоки кодирования могут иметь заданный порядок сканирования.
[0065] В 5-ой редакции рабочего проекта (Working Draft 5, WD 5) стандарта HEVC некоторые из ключевых определений и понятий, связанных с разбиением изображения, определены следующим образом. Разбиением называется разделение множества на подмножества таким образом, при котором каждый элемент множества находится только в одном из подмножеств.
[0066] Базовой единицей кодирования в проекте стандарта HEVC является блок с древовидной структурой кодирования. Блок с древовидной структурой кодирования представляет собой блок отсчетов яркости размера N×N и два соответствующих блока отсчетов цветности изображения, которые имеют по меньшей мере три массива значений, или блок значений размера N×N монохромного изображения, или изображения, кодируемого с использованием трех различных цветных слоев. Блок с древовидной структурой кодирования для последующих процедур кодирования и декодирования может разбиваться на части. Разбиение блока с древовидной структурой кодирования представляет собой блок отсчетов яркости и два соответствующих блока отсчетов цветности, полученные в результате разбиения блока с древовидной структурой кодирования для изображения, которое имеет три массива отсчетов, или блок отсчетов яркости, полученный в результате разбиения блока с древовидной структурой кодирования для монохромного изображения или изображения, кодируемого с использованием трех цветных слоев. Каждому блоку с древовидной структурой кодирования ставится в соответствие сигнализация разбиения, предназначенная для обозначения размеров блоков для внутреннего или внешнего предсказания, а также для кодирования с преобразованием. Разбиение в данном случае представляет собой рекурсивное разбиение с использованием дерева квадратов. Корень дерева квадратов ставится в соответствие блоку с древовидной структурой кодирования. Дерево квадратов разбивается на части до тех пор, пока не будет достигнут лист дерева, который называют узлом кодирования. Узел кодирования является корневым узлом двух деревьев, дерева предсказания и дерева преобразования. Дерево предсказания определяет положение и размер блоков предсказания. Дерево предсказания и связанные с ним данные предсказания называют блоком предсказания. Дерево преобразования определяет положение и размер блоков преобразования. Дерево преобразования и связанные с ним данные преобразования называют блоком преобразования. Информация о разбиении для компонентов яркости и цветности является идентичной для дерева предсказания, при этом для дерева преобразования она может быть как идентичной, так и отличаться. Узел кодирования, вместе со связанными с ним блоками предсказания и преобразования, образуют блок кодирования.
[0067] В проекте стандарта HEVC изображения разделяют на слайсы и тайлы. Слайс может представлять собой последовательность блоков с древовидной структурой кодирования, но (в случае так называемого слайса высокой детализации) может иметь также границу внутри блока с древовидной структурой кодирования, в местоположении совмещения блока преобразования и блока предсказания. Функциональность слайсов высокой детализации входила в некоторые из проектов стандарта HEVC, однако не была включена в окончательный стандарт. Блоки с древовидной структурой кодирования внутри слайса кодируются и декодируются в порядке сканирования растра. Деление изображения на слайсы является разбиением.
[0068] В проекте стандарта HEVC ячейка определена как целое число блоков с древовидной структурой кодирования, совместно расположенных в одном столбце и одной строке, упорядоченных в порядке сканирования растра в тайле. Деление изображения на тайлы является разбиением. Тайлы упорядочены в порядке сканирования растра в изображении. Слайс содержит блоки с древовидной структурой кодирования, упорядоченные в порядке сканирования растра в тайле, однако несмотря на это, такие блоки с древовидной структурой кодирования не обязательно сами расположены в порядке сканирования растра в изображении. Слайсы и тайлы не обязательно содержат одинаковую последовательность блоков с древовидной структурой кодирования. Тайл может включать блоки с древовидной структурой кодирования, содержащиеся более чем в одном слайсе. Аналогично, слайс может включать блоки с древовидной структурой кодирования, содержащиеся в нескольких тайлах.
[0069] Различия между блоками кодирования и блоками кодирования с древовидной структурой могут быть определены например, описанным ниже образом. Слайс может быть определен как последовательность из одного или более блоков с древообразной структурой кодирования (CTU) в порядке сканирования растра внутри тайлы или внутри изображения, если тайлы не применяются. Каждый CTU-блок может включать один древообразный блок кодирования яркости (luma coding treeblock, СТВ) и, возможно (в зависимости от применяемого формата цветности), два древообразных блока кодирования цветности. Блок с древообразной структурой кодирования (CTU) может быть определен как блок отсчетов яркости с древообразной структурой кодирования, два соответствующих блока отсчетов цветности с древообразной структурой кодирования изображения, имеющего три массива отсчетов, или блок отсчетов с древообразной структурой кодирования монохромного изображений, или изображения, которое кодируют с использованием трех отдельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов. Деление слайса на блоки с древообразной структурой кодирования может считаться разбиением. СТВ-блок может быть определен как блок отсчетов размера N×N для некоторого значения N. Деление одного из массивов, входящих в состав изображения, которое имеет три массива отсчетов, или массива, который входит в состав изображения в монохромном формате, или изображения, которое кодируют с использованием трех отдельных цветных слоев, на блоки с древообразной структурой кодирования может считаться разбиением. Блок отсчетов для кодирования может быть определен как блок отсчетов размером N×N, для некоторого значения N, такого, что разделение блока отсчетов с древообразной структурой кодирования на блоки отсчетов для кодирования является разбиением.
[0070] В стандарте HEVC слайс может быть определен как целое количество блоков с древообразной структурой кодирования, содержащихся в одном независимом сегмента слайса и во всех последующих зависимых сегментах слайса (если они присутствуют), которые предшествуют следующему независимому следующему независимому сегменту слайса (если он существует) внутри одного блока доступа. Независимый сегмент слайса может быть определен как сегмент слайса, для которого значения синтаксических элементов в заголовке слайса не вычисляют на основе значений предшествующего сегмента слайса. Зависимый сегмент слайса может быть определен как сегмент слайса, для которого значения некоторых из синтаксических элементов в заголовке слайса вычисляют на основе значений предшествующего сегмента слайса в порядке декодирования. Другими словами, только независимый сегмент слайса может иметь «заполненный» заголовок слайса. Независимый сегмент слайса может передаваться в одном NAL-блоке (без других сегментов слайса в этом же NAL-блоке), и аналогично, зависимый сегмент слайса может передаваться в одном NAL-блоке (без других сегментов слайса в этом же NAL-блоке).
[0071] В стандарте HEVC кодированный сегмент слайса рассматривается как включающий заголовок сегмента слайса и данные сегмента слайса. Заголовок сегмента слайса может быть определен как кодированный сегмент слайса, содержащий элементы данных, относящиеся к первому блоку с древообразной структурой кодирования или ко всем блокам с древообразной структурой кодирования, представленным в сегменте слайса. Заголовок слайса может быть определен как заголовок независимого сегмента слайса, то есть текущего сегмента слайса или последнего независимого сегмента слайса, который предшествовал текущему сегменту слайса в порядке декодирования. Данные сегмента слайса могут содержать целое число синтаксических структур древообразного блока кодирования.
[0072] В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, слайсы можно считать способом деления кодированного изображения на независимо декодируемые части, и следовательно, слайсы часто считаются элементарными единицами передачи. Во многих случаях кодеры могут указывать в битовом потоке, какие типы внутреннего предсказания с переходом между границами слайсов запрещены, при этом декодер учитывает данную информацию при своей работе, например, делая вывод о доступных источниках предсказания. Например, элементы изображения из соседних макроблоков, или блоков кодирования, могут считаться недоступными для внутреннего предсказания, если эти соседние макроблоки, или блоки кодирования, расположены в различных слайсах.
[0073] Синтаксическим элементом может быть назван элемент данных, представленных в битовом потоке. Синтаксической структурой может быть назван ноль или более синтаксических элементов, совместно находящихся в битовом потоке в заданном порядке.
[0074] Элементарной единицей для вывода из декодера H.264/AVC или HEVC и ввода в декодер H.264/AVC или HEVC, соответственно, является блок уровня сетевой абстракции (Network Abstraction Layer, NAL). С целью передачи по сетям пакетной передачи данных или хранения в структурированных файлах NAL-блоки могут инкапсулироваться в пакеты или в аналогичные структуры. Формат битового потока определен в стандартах H.264/AVC и HEVC для сред передачи или хранения, не обеспечивающих структуру кадров. В формате битового потока NAL-блоки отделяются друг от друга при помощи прикрепления стартового кода перед каждым NAL-блоком. Чтобы исключить ложное обнаружение границ NAL-блоков в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке NAL-блока, если в противном случае в ней будет присутствовать стартовый код. Для обеспечения прозрачного шлюзового взаимодействия между системами пакетной и потоковой передачи данных, предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат битового потока или нет.
[0075] NAL-блок может быть определен как синтаксическая структура, содержащая указание на тип данных, следующих за ней, и байты, содержащие эти данные в форме RBSP, чередующиеся, при необходимости, с байтами предотвращения эмуляции. Последовательность исходных байтов полезной нагрузки (raw byte sequence payload, RBSP) может быть определена как синтаксическая структура, включающая целое число байт и инкапсулированная в NAL-блоке. Последовательность RBSP может быть либо пустой, либо иметь форму строки информационных бит, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и ноль или более последующих бит, равных 0.
[0076] NAL-блоки состоят из заголовка и полезной нагрузки. В стандарте H.264/AVC заголовок NAL-блока указывает на тип данного NAL-блока, а также на то, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения. Стандарт H264/AVC включает 2-битный синтаксический элемент nal_ref_idc, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в NAL-блоке, является частью неопорного изображения, и если он больше 0, указывает на то, что кодированный слайс, содержащийся в NAL-блоке, является частью опорного изображения. Заголовок NAL-блока в расширениях SVC и MVC может дополнительно содержать различные указания, связанные с масштабированием и многоракурсной иерархией.
[0077] В стандарта HEVC для всех определенных типов NAL-блоков используется двухбайтный заголовок NAL-блока. Заголовок NAL-блока содержит один зарезервированный бит, шестибитный индикатор типа NAL-блока (именуемый nal_unit_type), шестибитное зарезервированное поле (имеющее наименование nuh_layer_id) и трехбитный указатель temporal_id_plus1 временного уровня. Синтаксический элемент temporal_id_plus1 можно считать временным идентификатором NAL-блока, при этом отсчитываемая от нуля переменная Temporalid может быть вычислена следующим образом: Temporalid = temporal_id_plus 1-1. Случай, в котором Temporalid равна нулю, соответствует наименьшему временному уровню. Значение temporal_id_plus1 должно быть ненулевым, чтобы не возникала эмуляция стартового кода, в который входит два байта заголовка NAL-блока. Битовый поток, формируемый исключением всех NAL-блоков VCL, чей temporal_id больше или равен выбранному значению, и включением всех остальных NAL-блоков VCL, остается соответствующим стандарту. Следовательно, для изображений с temporal_id, равным TID, в качестве опорных для предсказания не используются изображения с temporal_id, большим TID. Подуровень или временной подуровень может быть определен как уровень временного масштабирования или битовый поток с временным масштабированием, состоящий из NAL-блоков VCL с конкретным значением переменной temporal_id, а также из соответствующих NAL-блоков, не являющихся блоками VCL. Без потери общности в некоторых примерах осуществления настоящего изобретения вычисляют переменную Layerld получают на основе значения nuh_layer_id, например, следующим образом: Layerld = nuh_layer_id. В дальнейшем описании идентификатор уровня, Layerld, nuh_layer_id и layer_id могут использоваться взаимозаменяемо, если только не будет указано на обратное.
[0078] В расширениях стандарта HEVC элемент nuh_layer_id и/или аналогичные синтаксические элементы в заголовке NAL-блока содержат информацию масштабируемого уровня. К примеру, значение layer_id, nuh_layer_id, и/или аналогичные синтаксические элементы могут быть отображены на значения переменных и/или других синтаксических элементов, описывающих различные масштабируемые величины.
[0079] NAL-блоки могут быть разделены на две категории: NAL-блоки уровня видеокодирования (Video Coning Layer, VCL) и NAL-блоки, не являющиеся блоками VCL. NAL-блоки категории VCL представляют собой NAL-блоки со стандартным кодированием слайсов. В стандарте H.264/AVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более кодированных макроблоков, каждый из которых соответствует блоку значений несжатого изображения. В стандарте HEVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более блоков кодирования.
[0080] В стандарте H.264/AVC может быть выполнено указание на то, что кодированный NAL-блок слайса является кодированным слайсом изображения мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR) или кодированным слайсом изображения, не являющегося IDR-изображением.
[0081] В стандарте HEVC может выполняться указание на то, что NAL-блок VLC кодированного слайса имеет один из типов, показанных в приведенной ниже таблице.
[0082] Сокращения для типов изображений могут быть определены следующим образом: запаздывающее изображение (trailing picture, TRAIL), изображение доступа к временному подуровню (Temporal Sub-layer Access, TSA), изображение пошагового доступа к временному подуровню (Stepwise Temporal Sub-layer Access, STSA), опережающее декодируемое изображение с произвольным доступом (Random Access Decodable Leading, RADL), опережающее пропускаемое изображение с произвольным доступом (Random Access Skipped Leading, RASL), изображение разорванной цепи доступа (Broken Link Access, BLA), изображение мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR), изображение с чистым произвольным доступом (Clean Random Access, CRA).
[0083] Изображение точки произвольного доступа (Random Access Point, RAP), которое может, альтернативно, называться изображением внутренней точки произвольного доступа (intra random access point, IRAP), - это изображение, в котором каждый слайс или сегмент слайса имеет параметр nal_unit_type в диапазоне от 16 до 23 включительно. RAP-изображение содержит слайсы только с внутренним кодированием (в независимо кодируемом уровне), и может являться BLA-изображением, CRA-изображением или IDR-изображением. Первое изображение в битовом потоке является RAP-изображением. При условии, что нужные наборы параметров доступны, когда они должны быть активированы, изображение RAP и следующие за ним в порядке декодирования изображения, не являющиеся RASL-изображениями, могут быть корректно декодированы без выполнения процедуры декодирования каких-либо изображений, предшествующих этому RAP-изображению в порядке декодирования. В битовом потоке могут присутствовать изображения, которые содержать только внутренне кодируемые слайсы, однако не являются RAP-изображениями.
[0084] В стандарте HEVC CRA-изображение может быть первым изображением в битовом потоке в порядке декодирования, или может появляться в битовом потоке позднее. CRA-изображения в стандарте HEVC позволяют иметь так называемые опережающие изображения, которые следуют за CRA-изображением в порядке декодирования, однако предшествуют ему в порядке вывода. Для некоторых из опережающих изображений, так называемых RASL-изображений, в качестве опорных могут использоваться изображения, декодированные перед CRA-изображением. Изображения, которые следуют за CRA-изображением и в порядке декодирования, и в порядке вывода, являются декодируемыми при осуществлении произвольного доступа в точке CRA-изображения, и следовательно, может осуществляться чистый произвольный доступ, аналогично функциональности чистого произвольного доступа IDR-изображения.
[0085] CRA-изображения может иметь связанные с ним RADL- или RASL-изображения. Когда CRA-изображение является первым изображением в битовом потоке в порядке декодирования, это CRA-изображение является первым изображением кодированной видеопоследовательности в порядке декодирования, и все связанные с ним RASL-изображения не выводятся декодером и могут не быть декодируемыми, поскольку могут содержать отсылки к изображениям, которых нет в битовом потоке.
[0086] Опережающее изображение, это изображение, которое предшествует связанному с ним RAP-изображению в порядке вывода. Связанное с ним RAP-изображение - это предыдущее RAP-изображение в порядке декодирования (если оно имеется). Опережающее изображение может представлять собой либо RADL-изображение, либо RASL-изображение.
[0087] Все RASL-изображения являются опережающими изображениями для связанных с ними BLA-изображений или CRA-изображений. Когда RAP-изображение, связанное с RASL-изображением, является BLA-изображением или является первым кодированным изображением в битовом потоке, это RASL-изображение не выводят и оно при этом может не быть корректно декодируемым, поскольку RASL-изображение может содержать ссылки на изображения, которых нет в битовом потоке. Однако RASL-изображение может быть корректно декодируемым, если декодирование начато с RAP-изображения, которое предшествует RAP-изображению, связанному с данным RASL-изображением. RASL-изображения не используются в качестве опорных в процессе декодирования изображений других типов (не являющихся RASL-изображениями). Если они присутствуют, все RASL-изображения предшествуют, в порядке декодирования, всем запаздывающим изображениям для одного связанного с ним RAP-изображения. В некоторых из проектов стандарта HEVC RASL-изображения назывались изображениями, помеченными для отбрасывания (Tagged for Discard, TFD).
[0088] Все RADL-изображения являются опережающими изображениями. RADL-изображения не используются в качестве опорных в процессе декодирования запаздывающих изображений для связанного с ними RAP-изображения. Если они присутствуют, все RADL-изображения предшествуют, в порядке декодирования, всем запаздывающим изображениям для одного связанного с ним RAP-изображения. RADL-изображение не ссылается ни на какое изображение, предшествующее связанному с ним RAP-изображению в порядке декодирования, и следовательно, может быть корректно декодировано, если декодирование начинается со связанного с ним RAP-изображения. В некоторых более ранних проектах стандарта HEVC RADL-изображения назывались декодируемыми опережающими изображениями (Decodable Leading Picture, DLP).
[0089] Декодируемые опережающие изображения могут быть корректно декодированы, когда декодирование начинают с CRA-изображения. Другими словами в декодируемых опережающих изображениях для внешнего предсказания используют только первое CRA-изображение или изображения, следующие за ним в порядке декодирования. Недекодируемые опережающие изображения не могут быть корректно декодируемыми, когда декодирование начинают с исходного CRA-изображения. Другими словами в недекодируемых опережающих изображениях для внешнего предсказания используют изображения, предшествующие CRA-изображению в порядке декодирования.
[0090] Если часть битового потока, начинающуюся с CRA-изображения, включают в другой битовый поток, то RASL-изображения, связанные с этим CRA-изображением, могут не быть корректно декодируемыми, поскольку некоторые из их опорных изображений могут отсутствовать в комбинированном битовом потоке. Чтобы сделать операцию «склеивания» потоков более простой, тип NAL-блока в случае CRA-изображения может быт изменен и указывать на то, что оно является BLA-изображением. RASL-изображения, связанные с BLA-изображением, могут не быть корректно декодируемыми, их не выводят и/или не отображают. При этом RASL-изображения, связанные с BLA-изображением, могут быть пропущены при декодировании.
[0091] BLA-изображение может быть первым изображением в битовом потоке, в порядке декодирования, или может появляться в битовом потоке позднее. Каждое BLA-изображение начинает новую кодированную видеопоследовательность, и оказывает влияние на процесс декодирования, аналогичное IDR-изображению. Однако BLA-изображение содержит синтаксические элементы, определяющие непустой набор опорных изображений. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, оно может иметь связанные с ним RASL-изображения, которые не выводятся декодером и могут не быть декодируемыми, поскольку могут содержать ссылки на изображения, отсутствующие в битовом потоке. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, оно может иметь связанные с ним RADL-изображения, которые определены как декодируемые. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_RADL (который обозначался BLA_W_DLP в некоторых из проектов стандарта HEVC), оно не имеет связанных с ним RASL-изображений, однако может иметь связанные с ним RADL-изображения, которые определены как декодируемые. BLA_W_RADL может также обозначаться как BLA_W_DLP. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, то оно не имеет никаких связанных с ним опережающих сообщений.
[0092] IDR-изображение, имеющее значение параметра nal_unit_type, равное IDR_N_LP не имеет связанных с ним опережающих сообщений в битовом потоке. IDR-изображение, имеющее значение параметра nal_unit_type, равное IDR_W_LP, не имеет связанных с ним RASL-сообщений в битовом потоке, однако может иметь связанные с ним RADL-изображения в битовом потоке. IDR_W_RADL может также обозначаться как IDR_W_DLP.
[0093] В стандарте HEVC для множества типов изображений (например, TRAIL_R, TRAIL_N) имеются два типа NAL-блоков, которые применяют в зависимости от того, может ли изображение быть использовано в качестве опорного для внешнего предсказания последующих изображений, в порядке декодирования, в том же подуровне. Неопорное изображение подуровня (которое часто обозначают с помощью "_N" в сокращениях для типов изображений) может быть определено как изображение, содержащее отсчеты, которые не могут быть использованы для внешнего предсказания в процессе декодирования следующих за ним в порядке декодирования изображений того же подуровня. Неопорные изображения подуровня могут быть использованы в качестве опорных для изображений с большим значением Temporalld. Опорное изображение подуровня (которое часто обозначают с помощью "_R" в сокращениях для типов изображений) может быть определено как изображение, содержащее отсчеты, которые могут быть использованы для внешнего предсказания в процессе декодирования следующих за ним в порядке декодирования изображений того же подуровня.
[0094] Когда значение параметра nal_unit_type равно TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14, декодированное изображение не используют в качестве опорного ни для какого другого изображения с тем же nuh_layer_id и в том же временном подуровне. То есть, в проекте стандарта HEVC, если значение параметра nal_unit_type равно TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14, декодированное изображение не включают в значения RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr никакого изображения с тем же значением Temporalld. Кодированное изображение со значением параметра, равным TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14 может быть отброшено без влияния на декодируемость остальных изображений с тем же значением Temporalld.
[0095] Изображения с любым типом кодирования (I, Р, В) в стандартах H.264/AVC и HEVC могут быть как опорными изображениями, так и неопорными изображениями. Слайсы внутри одного изображения могут иметь различные типы кодирования.
[0096] Запаздывающее изображение может быть определено как изображение, следующее за связанным с ним RAP-изображением в порядке вывода. Никакое изображение, являющееся запаздывающим, не может иметь параметр nal_unit_type равным RADL_N, RADL_R, RASL_N или RASL_R. Любое изображение, являющееся опережающим, в порядке декодирования должно предшествовать всем запаздывающим изображением, связанным с тем же RAP-изображением. В битовом потоке не могут присутствовать RASL-изображения, которые связаны с BLA-изображением, параметр nal_unit_type которого равен BLA_W_RADL или BLA_N_LP. В битовом потоке не могут присутствовать RADL-изображения, связанные с BLA-изображением, параметр nal_unit_type которого равен BLA_N_LP, или связанные с IDR-изображением, параметр nal_unit_type которого равен IDR_N_LP. Любое RASL-изображение, связанное с CRA-изображением или BLA-изображением, должно предшествовать в порядке вывода всем RADL-изображением, связанным с данными CRA-изображением или BLA-изображением. Любое RASL-изображение, связанное с CRA-изображением, должно следовать в порядке вывода за всем другими RAP-изображениями, которые предшествуют данному CRA-изображению в порядке декодирования.
[0097] В стандарте HEVC имеются два типа изображений, TSA-изображения и STSA-изображения, которые могут использоваться для указания на точки переключения временных подуровней. Если временные подуровни со значениями Temporalld вплоть до N были декодированы до появления TSA-изображения или STSA-изображения (исключительно), и данное TSA-изображение или STSA-изображение имеет значение Temporalld, равное N+1, то данное TSA-изображение или STSA-изображение указывает на возможность декодирования всех последующих (в порядке декодирования) изображений, имеющих значение Temporalld равным N+1. Тип TSA-изображения может налагать ограничения на само TSA-изображения, а также на все изображения в том же подуровне, которые следуют за этим TSA-изображением в порядке декодирования. Ни для одного из этих изображений не допускается применение внешнего предсказания на основе изображений в том же подуровне, предшествующих данному TSA-изображению в порядке декодирования. Определение TSA-изображения может также налагать ограничения на изображения в верхних подуровнях, которые следуют за данным TSA-изображением в порядке декодирования. Ни одно из этих изображений, если оно принадлежит тому же подуровню, что и TSA-изображение, или более высокому подуровню, не должно ссылаться на изображения, предшествующие данному TSA-изображению в порядке декодирования. TSA-изображения имеют значение Temporalld больше 0. STSA-изображение аналогично TSA-изображению, однако не налагает ограничений на изображения в более высоких подуровнях, следующие за STSA-изображением в порядке декодирования, и следовательно, позволяют выполнять переключение только на тот подуровень, в котором находится STSA-изображение.
[0098] NAL-блок, не являющийся, блоком VCL, может, например, иметь один из следующих типов: набор параметров последовательности, набор параметров изображения, NAL-блок дополнительной уточняющей информации (supplemental enhancement information, SEI), разделитель блока доступа, конец последовательности NAL-блоков, конец потока NAL-блоков или NAL-блок с данными фильтрации.
Набор параметров может быть необходим для восстановления декодированных изображений, при этом многие из остальных типов NAL-блоков, не являющихся блоками VCL, не являются необходимыми для восстановления декодированных изображений.
[0099] В приведенной ниже таблице описаны типы NAL-блоков, не являющихся блоками VCL, Которые были определены стандарте HEVC.
[0100] В набор параметров последовательности могут включаться параметры, которые остаются неизменными на протяжении всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы в процессе декодирования, набор параметров последовательности опционально может включать информацию по используемости видео (video usability information, VUI), включающую параметры, важные для буферизации, синхронизации вывода изображения, отрисовки и резервирования ресурсов. В стандарте H.264/AVC определены три типа NAL-блоков, несущих наборы параметров последовательности: NAL-блоки с параметрами последовательности (nal_unit_type которых равен 7), содержащие все данные для NAL-блоков VCL стандарта H.264/AVC в последовательности, расширенные NAL-блоки набора параметров последовательности, содержащие данные внешне кодируемых изображений и блоки, содержащие подмножество набора параметров для NAL-блоков MVC и SVC VCL. Синтаксические структуры, входящие в NAL-блок набора параметров последовательности по стандарту H.264/AVC (имеющие nal_unit_type равным 7) могут называться данными набора параметров последовательности, или базовыми данными набора параметров последовательности (Sequence Parameter Set, SPS). К примеру, в базовые SPS-данные могут входить профиль стандарта, уровень стандарта, размер изображения и формат представления цветности. Набор параметров изображения содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений.
[0101] В проекте стандарта 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. Однако APS-наборы не были включены в окончательный стандарт H.265/HEVC.
[0102] Стандарт H.265/HEVC включает также другой тип набора параметров, который называют набором видеопараметров (video parameter set, VPS). RBSP набора видеопараметров может включать в себя параметры, ссылки на которые могут осуществляться в RBSP одной или более наборов параметров последовательности.
[0103] Взаимоотношения и иерархия наборов VPS, SPS и PPS может быть описана следующим образом. Набор VPS располагается на один уровень выше набора SPS в иерархии наборов параметров и в контексте масштабируемости и/или 3DV. Набор VPS может включать в себя параметры, являющиеся общими для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом. Набор SPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне (масштабируемости или ракурсов) кодированной видеопоследовательности в целом, которые при этом могут быть также общими для нескольких уровней (масштабируемости или ракурсов). Набор PPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне представления (представления уровня масштабируемости или ракурса в одном блоке доступа) и которые с большой вероятностью являются общими для всех слайсов в нескольких представлениях уровня кодирования.
[0104] Набор VPS может предоставлять информацию о отношениях зависимости уровней кодирования в битовом потоке, а также множество другой информации, применимой для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом.
[0105] Синтаксис стандартов H.264/AVC и HEVC допускает наличие множественных экземпляров наборов параметров, при этом каждый экземпляр имеет уникальный идентификатор. Чтобы ограничить использование памяти, необходимой для наборов параметров, был ограничен диапазон значений для идентификаторов наборов параметров. В стандарте H.264/AVC и в проекте стандарта HEVC каждый заголовок слайса включает идентификатор набора параметров изображения, который является активным для декодирования изображения, содержащего этот слайс, при этом каждый набор параметров изображения содержит идентификатор активного набора параметра последовательности. В проекте стандарта HEVC заголовок слайса дополнительно включает идентификатор набора APS. Следовательно, передача наборов параметров изображения и последовательности не обязательно должна быть точно синхронизирована с передачей слайсов. Напротив, достаточно, чтобы активные наборы параметров последовательности и изображения были приняты до момента осуществления ссылки на них, что позволяет передавать наборы параметров с использованием более надежных механизмов передачи, по сравнению с протоколами, применяемыми для передачи данных слайсов. Например, наборы параметров могут включаться в качестве параметров в описание сеанса для сеансов транспортного протокола реального времени (Real-time Transport Protocol, RTP). Если наборы параметров передаются в основной полосе, то в целях повышения устойчивости к ошибкам они могут повторяться.
[0106] Наборы параметров могут активироваться при помощи ссылки из слайса или из другого активного набора параметров, или, в некоторых случаях, из других синтаксических структур, например, из сообщения SEI с периодом буферизации.
[0107] 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 на стороне приемника может быть определена дополнительно.
[0108] Как в стандарте H.264/AVC, так и в H.265/HEVC, часть диапазона значений типа NAL-блоков оставлена неопределенной. Предполагается, что эти неопределенные значения типа NAL-блоков могут быть задействованы в других спецификациях. NAL-блоки со значениями типа, неопределенными в стандарте, могут применяться для мультиплексирования данных внутри битового потока, например, данных, необходимых для протокола связи. Если NAL-блоки с подобными неопределенными значениями типа не передают в декодер, то нет необходимости выполнять предотвращение эмуляции стартового когда, чтобы исключить эмуляцию стартового кода в битовом потоке видеоданных, где сформированы подобные NAL-блоки, и также при этом также нет необходимости выполнять устранение, из битового потока видеоданных, битов, предотвращающих эмуляцию стартового кода, перед передачей его в декодер. Если есть вероятность, что NAL-блоки с неопределенными значениями типа могут содержать эмуляцию стартового кода, такие NAL-блоки могут быть описаны как структуры, не являющиеся NAL-блоками. В отличие от реальных NAL-блоков такие структуры, аналогичные NAL-блокам, могут содержать эмуляцию стартового кода.
[0109] В стандарте HEVC неопределенные типы NAL-блоков имеют значения nal_unit_type в диапазоне от 48 до 63 включительно и могут быть определены, в табличном формате, следующим образом:
[0110] В стандарте HEVC определено, что NAL блоки типов UNSPEC48-UNSPEC55 включительно (т.е. имеющие значение nal_unit_type в диапазоне от 48 до 55 включительно) могут служить началом блока доступа, тогда как NAL-блоки типа UNSPEC56-UNSPEC63 (т.е. имеющие значения nal_unit_type в диапазоне от 56 до 63 включительно) могут служить концом блока доступа.
[0111] Кодированное изображение - это кодовое представление изображения. Кодированное изображение в стандарте H.264/AVC включает NAL-блоки VCL, которые необходимы для декодирования изображения. В стандарте H.264/AVC кодированное изображение может быть либо первично кодированным изображением, либо избыточно кодированным изображением. Первично кодированное изображение используется в процедуре декодирования безошибочных битовых потоков, тогда как избыточно кодированное изображение является представлением с избыточностью и декодируется, только если первично кодированное изображение не может быть успешно декодировано.
[0112] В стандартах H.264/AVC и HEVC блок доступа включает первично кодированное изображение и связанные с ним NAL-блоки. В стандарте HEVC блок доступа определен как набор NAL-блоков, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат в точности одно кодированное изображение. В стандарте H.264/AVC порядок появления NAL-блоков внутри блока доступа задан следующим образом. На начало блока доступа может указывать опциональный NAL-блок, являющийся разделителем блоков доступа. За ним следует ноль или более NAL-блоков SEI. Далее идут кодированные слайсы первично кодированного изображения. В стандарте H.264/AVC после кодированных слайсов первично кодированного изображения могут следовать кодированные слайсы нуля или более избыточно кодированных изображений. Избыточно кодированное изображение - это кодовое представление изображения или части изображения. Избыточно кодированное изображение может декодироваться, если первично кодированное изображение не принято в декодере, например, в результате потерь при передаче или в результате ошибки в физическом носителе.
[0113] В стандарте H.264/AVC блок доступа может также включать внешне кодированное изображение, которое дополняет первично кодированное изображение и может использоваться, например, в процедуре отображения. Внешне кодированное изображение может, например, использоваться в качестве альфа-канала или альфа-слоя, задающего уровень прозрачности пикселей декодированных изображений. Альфа-канал, или альфа-слой, может использоваться в многоуровневой системе формирования или отрисовки изображений, где выходное изображение образуется накладывающимися друг поверх друга частично прозрачными изображениями. Внешне кодированное изображение имеет те же синтаксические и семантические ограничения, что и монохромное избыточно кодированное изображение. В стандарте H.264/AVC внешне кодированное изображение содержит то же количество макроблоков, что и первично кодированное изображение.
[0114] В стандарте HEVC кодированное изображение может быть определено как кодированное представление изображения, содержащее все блоки с древообразной структурой кодирования для этого изображения. В стандарте HEVC блок доступа может быть определен как набор NAL-блоков, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат одно или более кодированных изображений с различными значениями nuh_layer_id. Помимо NAL-блоков VCL кодированного изображения, блок доступа может содержать также NAL-блоки, не являющиеся блоками VCL.
[0115] В стандарте H.264/AVC кодированная видеопоследовательность определена как ряд последовательных блоков доступа в порядке декодирования от блока доступа IDR включительно до следующего блока доступа IDR исключительно или до конца битового потока, - в зависимости от того, что появляется раньше.
[0116] В стандарте HEVC кодированная видеопоследовательность (coded video sequence, CVS) может быть определена, например, как последовательность блоков доступа, которые состоят, в порядке декодирования, из блока доступа IRAP-изображения с флагом NoRaslOutputFlag, равным 1, за которым следуют ноль или более блоков доступа, не являющихся блоками доступа IRAP-изображения и имеющих флаг NoRaslOutputFlag, равный 1, включая все последующие блоки доступа вплоть до (но не включая) первого последующего блока доступа, который является блоком доступа IRAP-изображения с флагом NoRaslOutputFlag, равным 1. Блок доступа IRAP-изображения может быть блоком доступа IDR-изображения, блоком доступа BLA-изображения или блоком доступа CRA-изображения. Значение флага NoRaslOutputFlag равно 1 для любого блока доступа IDR-изображения, любого блока доступа BLA-изображения и любого блока доступа CRA-изображения, который является первым блоком доступа, в порядке декодирования, в битовом потоке, является первым блоком доступа после конца NAL-блока последовательности, в порядке декодирования, или имеет флаг HandleCraAsBlaFlag равным 1. Если флаг NoRaslOutputFlag равен 1, это означает, что RASL-изображения, связанные с IRAP-изображением, для которых установлено такое значение флага NoRaslOutputFlag, не выводятся декодером. Флаг HandleCraAsBlaFlag может быть установлен в 1, например, проигрывателем, который осуществляет поиск новой позиции в битовом потоке или подключается к трансляции и начинает декодирование, и в этом случае он будет начинать декодирование с CRA-изображения.
[0117] Далее приведено определение и характеристики группы изображений (group of pictures, GOP). Группа GOP может быть декодирована независимо от того, были ли декодированы какие-либо предшествующие изображения или нет. Открытая группа изображений - это группа изображений, в которой изображения, предшествующие исходному внутренне предсказываемому изображению в порядке вывода, могут не быть декодированы корректно, если декодирование начинается с исходного внутренне предсказываемого изображения открытой группы изображений. Другими словами, изображения в открытой GOP могут ссылаться (для внутреннего предсказания) на изображения из предшествующей GOP. Декодер, соответствующий стандарту H.264/AVC, способен распознавать внутренне предсказываемое изображение в начале открытой GOP на основе сообщения SEI, указывающего на точку восстановления в битовом потоке стандарта H.264/AVC. Декодер, соответствующий стандарту HEVC, способен распознавать внутренне предсказываемое изображение в начале открытой GOP благодаря специальному типу NAL-блоков, CRA, который используется для кодируемых слайсов этого изображения. Закрытая группа изображений - это группа изображений, в которой все изображения могут быть декодированы корректно, если декодирование начинается с первого внутренне предсказываемого изображения закрытой группы изображений. Другими словами, ни одно из изображений в закрытой GOP не ссылается ни на одно изображение из предшествующих GOP. В стандартах H.264/AVC и HEVC закрытая группа GOP начинается с блока доступа IDR. В стандарте HEVC закрытая группа изображений, GOP, может также начинаться с изображения BLA_W_RADL или BLA_N_LP. В результате структура закрытой GOP имеет более высокий потенциал устойчивости к ошибкам, по сравнению со структурой открытой GOP, однако за счет возможного понижения эффективности сжатия. Структура кодирования с открытыми GOP дает потенциально более эффективное сжатие благодаря большей гибкости при выборе опорных изображений.
[0118] Структура изображений (Structure of Pictures, SOP) может быть определена как одно или более кодированных изображений, следующих друг за другом в порядке декодирования, при этом первое кодированное изображение в порядке декодирования является опорным изображением в самом нижнем временном подуровне, и ни одно кодированное изображение, кроме, потенциально, первого кодированного изображения в порядке декодирования, не является RAP-изображением. Относительный порядок декодирования изображений на чертежах проиллюстрирован числовыми обозначениями. Любое изображение в предшествующей SOP имеет меньшее значение порядка декодирования, чем любое изображение в текущей SOP, а любое изображение в последующей SOP имеет значение порядка декодирования большее, чем любое изображение в текущей SOP. Термин группа изображений (GOP) в некоторых случаях может использоваться взаимозаменяемо с термином SOP и имеет тот же значение, за исключением значения закрытых и открытых GOP, описанных выше.
[0119] Под адаптивным к изображению кодированием кадров/полей (picture-adaptive frame-field coding, PAFF) понимают способность кодера или схемы кодирования определять, на основе изображения, что в нем закодировано - кодированное поле (поля) или кодированный кадр. Под адаптивным к последовательности кодированием кадров/полей (sequence-adaptive frame-field coding, SAFF) понимают способность кодера или схемы кодирования определять, для последовательности изображений (например, кодированной видеопоследовательности, группы изображений (GOP) или структуры изображений(SOP), что в ней закодировано - кодированные поля или кодированные кадры.
[0120] Ниже будут кратко описаны различные методы для указания на поля (в отличие от кадров) и на тип сканирования исходных видеоданных, входящие в стандарт HEVC. В стандарте HEVC в набор SPS с nuh_layer_id, равным 0, а также в набор VPS входит синтаксическая структура profile_tier_level(). Когда синтаксическая структура profile_tier_level() входит в набор VPS, но не входит в синтаксическую структуру vps_extension(), соответствующим набором уровней, к которым применима синтаксическая структура profile_tier_level(), является набор уровней, определенный порядковым номером (индексом) 0, т.е. набор, содержащий только базовый уровень. Когда синтаксическая структура profile_tier_level() входит в набор SPS, набором уровней, к которым применима синтаксическая структура profile_tier_level(), является набор уровней, определенный порядковым номером 0, т.е. набор, содержащий только базовый уровень. Синтаксическая структура profile_tier_level() включает синтаксические элементы general_progressive_source_flag и general_interlaced_source_flag. Элементы general_progressive_source_flag и general_interlaced_source_flag могут интерпретироваться следующим образом:
- если флаг general_progressive_source_flag равен 1, и флаг general_interlaced_source_flag равен 0, тип сканирования исходных видеоданных изображений в последовательности CVS должен интерпретироваться как исключительно прогрессивный.
- в противном случае, если флаг general_progressive_source_flag равен 0, и флаг general_interlaced_source_flag равен 1, тип сканирования исходных видеоданных изображений в последовательности CVS должен интерпретироваться как исключительно чересстрочный. - в противном случае, если флаг general_progressive_source_flag равен 0, и флаг general_interlaced_source_flag равен 0, тип сканирования исходных видеоданных изображений в последовательности CVS должен интерпретироваться как неизвестный или неопределенный.
- в противном случае, если флаг general_progressive_source_flag равен 1, и флаг general_interlaced_source_flag равен 1, тип сканирования исходных видеоданных для каждого изображения в последовательности CVS указывают для каждого отдельного изображения при помощи синтаксического элемента source_scan_type в SEI-сообщении синхронизации изображений.
[0121] Согласно стандарту HEVC набор SPS может содержать информацию VUI (в синтаксической структуре vui_parameters), однако это не является обязательным. Информация VUI может включать синтаксическую структуру field_seq_flag, которая, когда она равна 1, могут указывать на то, что данная последовательность CVS содержит изображения, являющиеся представлением полей, а также может определять, что в каждом блоке доступа текущей последовательности CVS присутствует SEI-сообщение синхронизации изображений. Флаг field_seq_flag, равный 0, может указывать на то, что данная последовательность CVS содержит изображения, являющиеся представлением кадров, и на то, что в любом из блоков доступа текущей последовательности SEI-сообщение синхронизации изображений может как присутствовать, так и отсутствовать. Когда флаг field_seq_flag отсутствует, он может быть принят равным 0. Синтаксическая структура profile_tier_level() может включать синтаксический элемент general_frame_only_constraint_flag, который, когда он равен 1, может указывать на то, что field_seq_flag равен 0. Если флаг general_frame_only_constraint_flag равен 0, это указывает на то, что field_seq_flag может быть как равен 0, однако это не является обязательным.
[0122] Согласно стандарту HEVC информация VUI может также включать синтаксический элемент frame_field_info_present_flag, который, когда она равен 1, может указывать на то, что SEI-сообщения синхронизации изображений присутствуют для каждого изображения и включают при этом синтаксические элементы pic_struct, source_scan_type и duplicate_flag. Флаг frame_field_info_present_flag, равный 0, может указывать на то, что синтаксический элемент pic_struct в SEI-сообщениях синхронизации изображений отсутствует. Когда флаг frame_field_info_present_flag отсутствует, его значение может быть получено следующим образом: если флаг general_progressive_source_flag равен 1, и флаг general_interlaced_source_flag равен 1, то делают вывод о том, что флаг frame_field_info_present_flag равен 0. В противном случае флаг frame_field_info_present_flag считают равным 0.
[0123] Итак, синтаксический элемент pic_struct в SEI-сообщении синхронизации изображений стандарта HEVC может быть описан следующим образом: элемент pic_struct указывает, должно ли изображение отображаться в виде кадра или в виде одного или более полей, в случае отображения изображений при fixed_pic_rate_within_cvs_flag (который может входить в состав информации VUI набора SPS), равном 1, может указывать на период дублирования или утроения кадров для дисплеев, в которых применяют фиксированный интервал обновления кадра. Интерпретация синтаксического элемента pic_struct может быть определена при помощи следующей таблицы:
[0124] Синтаксический элемент source_scan_type в SEI-сообщении стандарта HEVC может быть кратко описан следующим образом: source_scan_type, равный 1, может указывать на то, что тип сканирования исходных видеоданных соответствующего изображения должен интерпретироваться как прогрессивный, source_scan_type, равный 0, может указывать на то, что тип сканирования исходных видеоданных должен интерпретироваться как чересстрочный, a source_scan_type, равный 2, может указывать на то, что тип сканирования исходных видеоданных соответствующего изображения неизвестен или не определен.
[0125] Синтаксический элемент duplicate_flag в SEI-сообщении стандарта HEVC может быть кратко описан следующим образом: duplicate_flag, равный 1, может указывать на то, что текущее изображение помечено как дубликат предыдущего изображения в порядке вывода, duplicate_flag, равный 0, может указывать на то, что текущее изображение не помечено как дубликат предыдущего изображения в порядке вывода. Флаг duplicate_flag может использоваться для пометки кодированных изображений, для которых известно, что они были получены в результате процедуры повторения, например, в процедуре преобразования 3:2 (pull-down) или других подобных методов дублирования или интерполяции частоты смены кадров. Флаг field_seq_flag равен 1, и флаг duplicate_flag равен 1, могут быть интерпретированы как указание на то, что данный блок доступа содержит поле, являющееся дубликатом предыдущего поля в порядке вывода с такой же четностью, что и текущее поле, если только пары не обозначены другим способом, с помощью значения pic_struct в диапазоне от 9 до 12 включительно.
[0126] Многие гибридные видеокодеки, включающие функциональность H.264/AVC и HEVC, кодируют видеоинформацию в два этапа. На первом этапе применяют кодирование с предсказанием, например, так называемое предсказание отсчетов и/или предсказание синтаксических элементов. При предсказании отсчетов предсказывают значения пикселей, или отсчетов, в некоторой области изображения, или «блоке». Значения пикселей, или отсчетов, могут быть предсказаны, например, при помощи одного или более из следующих методов:
- механизмы компенсации движения, подразумевающие нахождение области в одном из предварительно закодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку, и указание на эту область;
- межвидовое предсказание, которое подразумевает нахождение области в одном из предварительно закодированных компонентов вида, которая близко соответствует кодируемому в настоящий момент блоку, и указание на эту область;
- предсказание на основе синтеза ракурсов, которое подразумевает синтез блока предсказания или области изображения, из которой получен блок предсказания, на основе восстановленной или декодированной информации ранжирования;
- межуровневое предсказание с использованием восстановленных/декодированных отсчетов, например, так называемый режим предсказания внутри базового уровня (IntraBL) расширения SVC;
- межуровневое предсказание остатка, при котором, например, кодированный остаток опорного уровня или вычисленный остаток от разности восстановленного/декодированного изображения опорного уровня и соответствующего восстановленного/декодированного изображения уточняющего уровня может быть использован для предсказания блока остатка текущего блока уточняющего уровня. Блок остатка может быть суммирован, например, с блоком предсказания на основе компенсации движения, в результате чего может быть получен окончательный блок предсказания для текущего блока уточняющего уровня;
- внутреннее предсказание, при котором значения пикселей, или отсчетов, могут предсказываться с использованием пространственных механизмов, подразумевающих нахождение и указание на взаимоотношение пространственных областей.
[0127] При предсказании синтаксиса, которое может также называться предсказанием параметров, синтаксические элементы и/или значения синтаксических элементов, и/или переменные, вычисляемые на основе синтаксических элементов, предсказывают на основе (де)кодированных ранее синтаксических элементов и/или ранее вычисленных переменных. Ниже будут приведены неограничивающие примеры предсказания синтаксиса: При предсказании векторов движения кодирование векторов движения, например, для внутриракурсного и/или межракурсного предсказания может выполняться дифференциально относительно вектора движения, предсказанного для конкретного блока. Во многих видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков. Другим способом создания предсказаний векторов движения, который иногда называют улучшенным предсказанием векторов движение (advanced motion vector prediction, AMVP) является формирование списка кандидатных предсказаний на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображения временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение ранее кодированного или декодированного изображения. Указатель на опорное изображение может предсказываться на основе соседних блоков и/или сорасположенных блоков в опорном изображении временного предсказания. Разностное кодирование векторов движения с переходом границы слайса может быть запрещено. Может выполняться предсказание разбиения блока, например, от CTU-блоков до блоков кодирования и вплоть до блоков предсказания. При предсказании параметров фильтрации может выполняться предсказание параметров фильтрации, например, для адаптивного смещения отсчетов.
[0128] Методы предсказания, в которых используется информация ранее закодированных изображений, при этом могут называться методами внешнего предсказаниями, а также временным предсказанием и компенсацией движения. Методы предсказания, в которых для предсказания значений пикселей или отсчетов используется информация этого же изображения, могут называться методами внутреннего предсказаниями.
[0129] Второй этап - это этап кодирования расхождения между предсказанным блоком пикселей или значений и исходным блоком пикселей или значений. Это может осуществляться при помощи преобразования разности значений пикселей или отсчетов с использованием заданного преобразования. Таким преобразованием может быть дискретное косинусное преобразование (Discrete Cosine Transform, DCT) или его вариант. После преобразования разности преобразованную разность квантуют и выполняют ее энтропийное кодирование.
[0130] С помощью регулирования точности процесса квантования кодер может управлять балансом между достоверностью представления пикселей или отсчетов (т.е. визуальным качеством изображения) и размером результирующего кодированного представления видеоинформации (т.е. размером файла или битовой скоростью передачи, битрейтом).
[0131] Декодер восстанавливает выходную видеоинформацию, применяя механизм предсказания, аналогичный используемому в кодере, для формирования предсказанного представления блоков пикселей или отсчетов (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении изображения) и декодирования ошибки предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания в пространственном домене).
[0132] После применения процедур предсказания пикселей или отсчетов и декодирования ошибки декодер комбинирует сигналы предсказания и ошибки предсказания (значения пикселей или отсчетов), формируя выходной видеокадр.
[0133] В декодере (и кодере) могут также применяться дополнительные процедуры фильтрации, имеющие целью повышение качества выходного видеоизображения перед передачей его на отображение и/или хранение в качестве опорного для предсказания последующих изображений видеопоследовательности.
[0134] Для ослабления различных артефактов, например, пикселизации или звона, или других артефактов в опорных изображениях может применяться фильтрация. После компенсации движения и последующего сложения с остатком, прошедшим обратное преобразование, получают восстановленное изображение. Изображение может иметь различные артефакты, например, пикселизацию, звон и т.п. Для устранения этих артефактов могут применяться различные операции постобработки. Если изображения, прошедшие постобработку, используют в качестве опорных в петле компенсации движения, то такие операции, или фильтры, постобработки называют петлевыми фильтрами. Применение петлевых фильтров позволяет повысить качество опорных изображений. В результате может быть достигнута большая эффективность кодирования.
[0135] Фильтрация может включать деблокирующую фильтрацию, адаптивное смещение отсчетов (sample adaptive offset, SAO), и/или адаптивную петлевую фильтрацию (adaptive loop filtering, ALF).
[0136] Деблокирующий фильтр может применяться в качестве одного из петлевых фильтров. Деблокирующий фильтр присутствует как в стандарте H.264/AVC, так и в стандарте HEVC. Задача деблокирующего фильтра - удалить артефакты пикселизации, возникающие на границе блоков. Это обеспечивается при помощи фильтрации вдоль границы блока.
[0137] При выполнении SAO-фильтрации изображения разделяют на области, в которых, независимо для каждой области, принимают решение о необходимости выполнения SAO-фильтрации. Информацию о SAO-фильтрации в области инкапсулируют в блок параметров адаптации SAO (блок SAO), при этом в стандарте HEVC базовым блоком для размещения параметров SAO является блок CTU (соответственно, областью SAO является блок пикселей, охватываемый соответствующим CTU-блоком).
[0138] В алгоритме SAO-фильтрации элементы изображения в CTU-блоках классифицируют согласно определенному набору правил, при этом каждый набор отсчетов, отнесенный к своему классу, уточняют при помощи добавления значений смещения. Значения смещения сигнализируют в битовом потоке. Существуют два типа смещений: 1) Полосовое смещение; 2) Краевое смещение. Для CTU-блоков либо не применяют SAO-фильтрацию, либо применяют или полосовое смещение, или краевое смещение. Выбор: не применять SAO-фильтрацию, применять полосовое смещение или применять краевое смещение, может осуществляться кодером, например, с сигнализацией в декодер информации об оптимизации «битовая скорость - искажения» (rate distortion optimization, RDO).
[0139] При полосовом смещении весь диапазон значений отсчетов, в некоторых вариантах осуществления настоящего изобретения, разделяют на 32 полосы равной ширины. Например, в случае 8-битных отсчетов, ширина полосы будет равна 8 (=256/32). Из этих 32 полос выбирают 4 и для каждой из выбранных полос сигнализируют различные смещения. Решение по выбору принимается кодером и может быть сигнализировано следующим образом: сигнализируют порядковый номер первой полосы, и затем делают вывод, что выбранными являются четыре полосы, следующие за ней. Полосовое смещение может быть полезным для исправления ошибок в однородных областях.
[0140] При краевом (типе) смещении тип краевого смещения (edge offset (ЕО) может быть выбран из четырех возможных типов (или категорий края), каждый из которых связан с определенным направлением: 1) вертикальный; 2) горизонтальный; 3) диагональный с углом 135 градусов; и 4) диагональный с углом 45 градусов. Выбор направления осуществляется кодером и сигнализируется в декодер. Каждый из типов определяет местоположение двух смежных отсчетов для заданного отсчета в зависимости от угла. Затем каждый элемент изображения в блоке CTU относят к одной из пяти категорий, на основе сравнения значения отсчета со значениями двух смежных с ним отсчетов. Эти пять категорий заданы описанным ниже образом.
1. Значение текущего отсчета меньше, чем значение двух смежных с ним отсчетов.
2. Значение текущего отсчета меньше, чем значение одного из смежных с ним, и равно второму смежному с ним отсчету.
3. Значение текущего отсчета больше, чем значение одного из смежных с ним, и равно второму смежному с ним отсчету.
4. Значение текущего отсчета больше, чем значение двух смежных с ним отсчетов.
5. Ничто из перечисленного выше.
[0141] Сигнализация этих пяти категорий в декодер не является обязательной, поскольку классификация основана только на восстановленных элементах изображения, и может выполняться, идентичным образом, как в кодере, так и в декодере. После того, как каждый из отсчетов в CTU-блоке, имеющем краевой тип смещения, будет отнесен к одной из пяти категорий, определяют значение смещения для каждой из первых четырех категорий и передают их в декодер. Смещение для каждой категории складывают со значениями отсчетов, относящихся к соответствующей категории. Краевые смещения могут быть эффективными для исправления ложного оконтуривания в изображениях.
[0142] Параметры SAO-фильтрации в данных CTU-блоков могут сигнализироваться с интерливингом (т.е. с чередованием). На более высоком уровне, над CTU-блоком, заголовок слайса содержит синтаксический элемент, который определяет, применяется ли в данном слайсе SAO-фильтрация. Если SAO-фильтрация используется, то два дополнительных синтаксических элемента определяют, применяется ли SAO-фильтрация к составляющим Cb и Cr. Для каждого CTU-блока возможны три варианта: 1) копирование параметров SAO-фильтрации из CTU-блока, расположенного слева, 2) копирование параметров SAO-фильтрации из CTU-блока, расположенного сверху; или 3) сигнализация новых параметров SAO-фильтрации.
[0143] Выше описана одна из конкретных реализаций SAO-фильтрации, однако нужно понимать, что возможны и другие ее реализации, аналогичные описанной выше. К примеру, вместо сигнализации параметров, с интерливингом, в данных CTU-блока, может применяться сигнализация на уровне изображения, с использованием сегментации квадрадерева. Слияние параметров SAO-фильтрации (например, использование тех же параметров, что присутствовали в расположенном слева или сверху CTU-блоке) в структуре квадрадерева может определяться кодером, например, при помощи процедуры оптимизации «битовая скорость - искажения».
[0144] Адаптивный петлевой фильтр (adaptive loop filter, ALF) - это еще один способ повышения качества восстановленных отсчетов. Оно может достигаться при помощи циклической фильтрации отсчетов. ALF-фильтр - это фильтр с конечной импульсной характеристикой (finite impulse response, FIR), коэффициенты фильтрации для которого определяются кодером и кодируются в битовый поток. Кодер может выбирать коэффициенты фильтрации, позволяющие потенциально минимизировать искажения относительно исходного несжатого изображения, например, с использованием метода наименьших квадратов или оптимизации винеровского фильтра. Коэффициент фильтрации могут быть размещены, например, в наборе параметров адаптации или в заголовке слайса, или они могут помещаться в данных слайса для блоков кодирования, с чередованием другими данными, относящимися к блоку кодирования.
[0145] Во многих видеокодеках, включающих в себя функциональность стандартов H.264/AVC и HEVC, на информацию о движении указывают при помощи векторов движения, связанных с каждым из блоков изображения, для которых используется компенсация движения. Каждый из таких векторов движения представляется смещение блока изображения в кодируемом изображении (в кодере) или декодируемом изображении (в декодере) и исходный блок предсказания в одном из ранее кодированных иди декодированных изображениях (или кадрах). В стандартах H.264/AVC и HEVC, как и во многих других стандартах сжатия видео, изображение разбивается на сетку из прямоугольников, для каждого из которых, в целях внешнего предсказания, указывается аналогичный блок в одном из опорных изображений. Местоположение блока предсказания кодируется как вектор движения, указывающий на положение блока предсказания относительно кодируемого бока.
[0146] Процедура внешнего предсказания может быть охарактеризована, например, с использованием одного или более из описанных ниже параметров.
Точность представления вектора движения
[0147] К примеру, векторы движения могут иметь четвертьпиксельную точность, полупиксельную точность, или целопиксельную точность, при этом значения отсчетов с дробнопиксельными координатами могут быть получены с помощью фильтра с конечной импульсной характеристикой (finite impulse response, FIR).
Разбиение на блоки для внешнего предсказания
[0148] Многие стандарты кодирования, включая H.264/AVC и HEVC, допускают выбор размера и формы блока, для которого применяется вектор движения с целью предсказания с компенсацией движения в кодере, при этом выбранный размер и форма указываются в битовом потоке, чтобы декодеры могли воспроизвести предсказание с компенсацией движения, выполняемое в кодере. Такой блок может быть назван разделом движения.
Количество опорных изображений для внешнего предсказания
[0149] Источником информации для внешнего предсказания являются ранее декодированные изображения. Во многих стандартах кодирования, включая H.264/AVC и HEVC, обеспечивается возможность хранения множества опорных изображений для внешнего предсказания и выбора используемого опорного изображения для каждого отдельного блока. Например, опорные изображения могут выбираться на уровне макроблока или разбиения макроблока в стандарте H.264/AVC и на уровне блока предсказания или блока кодирования в стандарте HEVC. Многие стандарты кодирования, в том числе H.264/AVC и HEVC, имеют синтаксические структуры битового потока, обеспечивающие возможности создания в декодере одно или более списков опорных изображений. Для указания на то, какое из нескольких опорных изображений используется для внешнего предсказания конкретного блока, используется указатель на опорное изображение ив списке опорных изображений. Указатель на опорное изображение в некоторых режимах кодирования с внешним предсказанием может кодироваться кодером в битовый поток, или, в других режимах кодирования с внешним предсказанием, может вычисляться (например, кодером и декодером), например, с использованием соседних блоков.
Предсказание векторов движения
[0150] С целью эффективного представления векторов движения в битовом потоке может выполняться их разностное кодирование относительно вектора движения, предсказанного для конкретного блока. Во многих видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков. Другим способом создания предсказаний векторов движения, который иногда называют улучшенным предсказанием векторов движение (advanced motion vector prediction, AMVP) является формирование списка кандидатных предсказаний на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображения временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение ранее кодированного или декодированного изображения. Указатель на опорное изображение может предсказываться на основе соседних блоков и/или сорасположенных блоков в опорном изображении временного предсказания. Разностное кодирование векторов движения с переходом границы слайса может быть запрещено.
Многогипотезное предсказание с компенсацией движения
[0151] Стандарты H.264/AVC и HEVC позволяют использовать один блок предсказания в P-слайсах (предсказываемых слайсах, в настоящем документе также называемых слайсами с однонаправленным предсказанием) или линейную комбинацию двух блоков предсказания с компенсацией движения для двунаправленно предсказываемых слайсов, которые в настоящем документе также называются В-слайсами. Отдельные блоки в B-слайсах могут предсказываться двунаправленно, однонаправленно или с помощью внутреннего предсказания, а отдельные блоки в P-слайсах могут предсказываться однонаправленно или с помощью внутреннего предсказания. Опорные изображения для двунаправленно предсказываемого изображения могут не ограничиваться последующим и предыдущим изображениям выходной последовательности, напротив, могут использоваться любые опорные изображения. Во многих стандартах кодирования, в том числе в H.264/AVC и HEVC, один список опорных изображений, который называется списком 0 опорных изображений, создается для P-слайсов, и два списка опорных изображений, список 0 и список 1, создаются для В-слайсов. Для В-слайсов предсказание в прямом направлении может представлять собой предсказание на основе опорных изображений из списка 0 опорных изображений, а предсказание в обратном направлении может представлять собой предсказание на основе опорных изображений из списка 1 опорных изображений, даже не смотря на то, что опорные изображения предсказания могут иметь любой порядок декодирования или вывода - относительно друг друга или относительно текущего изображения.
Взвешенное предсказание
[0152] Во многих стандартах кодирования применяется весовой коэффициент, равный 1, для блоков предсказания изображения с внешним предсказанием (Р) и весовой коэффициент, равный 0,5, для каждого блока предсказания В-изображения (в результате чего выполняется усреднение). В стандарте H.264/AVC обеспечивается возможность взвешенного предсказания и для P-, и для В-слайсов. При неявном взвешенном предсказании весовые коэффициенты пропорциональны порядковым номерам изображений, тогда как при явном взвешенном предсказании весовые коэффициенты предсказания указываются явно. Весовые коэффициенты для явного взвешенного предсказания могут быть указаны, например, в одной или более из следующих синтаксических структур: заголовок слайса, заголовок изображения, набор параметров изображения, набор параметров адаптации или в любой аналогичной синтаксической структуре.
[0153] Во многих видеокодеках остаток предсказания после компенсации движения сначала преобразуют с помощью ядра преобразования (например, DCT), и только затем кодируют. Причиной тому является частое наличие остаточной корреляции в остатке предсказания, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование.
[0154] В проекте стандарта HEVC каждый блок предсказания имеет информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного блока предсказания (например, информацию вектора движения в случае блока предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого блока предсказания). Аналогично, каждый блок преобразования связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном блоке преобразования (включая, например, информацию о коэффициентах DCT). Информация о необходимости применения кодирования ошибки предсказания для каждого блока кодирования, может сигнализироваться на уровне блока кодирования. Если остатка или ошибки предсказания, связанного с блоком кодирования нет, то может быть сделан вывод о том, что для данного блока кодирования отсутствуют блоки преобразования.
[0155] В некоторых форматах и кодирования и кодеках вводится различие между так называемыми краткосрочными и долгосрочными опорными изображениями. Такое различение может влиять на часть процедур декодирования, например, на масштабирование векторов движения во временном режиме предсказания движения или при неявном взвешенном предсказании. Если оба опорных изображения, используемых во временном режиме предсказания движения, являются краткосрочными опорными изображениями, то вектор движения, используемый при предсказании, может масштабироваться в соответствии с разностью порядковых номеров кадра (picture order count, POC) между текущим кадром и каждым из опорных кадров. Однако, если по меньшей мере одно опорное изображение для режима временного предсказания движения является долгосрочным опорным изображением, то может использоваться заданное по умолчанию масштабирование вектора движения, например, масштабирование вектора движения до половины. Аналогично, если краткосрочное опорное изображение используется для неявного взвешенного предсказания, то весовой коэффициент предсказания может масштабироваться в соответствии с разностью POC между текущим изображением и опорным изображением. Однако если для неявного взвешенного предсказания используется долговременно опорное изображение, то может использоваться заданный по умолчанию весовой коэффициент, например, равный 0,5 при неявном взвешенном предсказании двунаправленно предсказываемых блоков.
[0156] В некоторых форматах видеокодирования, например, H.264/AVC, имеется синтаксический элемент frame_num, который используется в различных процедурах декодирования, связанных с множественными опорными изображениями. В стандарте H.264/AVC значение frame_num для IDR-изображений равно 0.3 значение frame_num дли изображений, не являющихся IDR-изображениями, равно frame_num предыдущего опорного изображения в порядке декодирования, увеличенному на 1 (в модульной арифметике, т.е. значение frame_num циклически возвращается в 0 после максимального значения frame_num).
[0157] В стандартах H.264/AVC и HEVC существует понятие порядкового номера изображения (POC). Значение POC вычисляется для каждого изображения и является неубывающим с увеличением позиции изображения в порядке вывода. Соответственно, POC указывает на порядок вывода изображений. POC может использоваться в процессе декодирования, например, для неявного масштабирования векторов движения в режиме временного предсказания движения двунаправленно предсказываемых слайсов, для неявно вычисляемых весовых коэффициентов при взвешенном предсказании и для инициализации списка опорных изображений. Также, POC может использоваться при проверке выходной последовательности на соответствие стандарту. В стандарте H.264/AVC POC определяется в отношении предшествующего IDR-изображения или изображения, содержащего операцию управления памятью, с помощью которой все изображения помечены как «не используемые в качестве опорных».
[0158] В системе видеокодирования может присутствовать синтаксическая структура для маркировки декодированных опорных изображений. Например, после завершения декодирования изображения, синтаксическая структура для маркировки опорных изображений, если она имеется, может использоваться для адаптивной маркировки изображений как «не используемых в качестве опорных» или «используемых в качестве долгосрочных опорных». Если синтаксической структуры для маркировки опорных изображений не имеется, и количество изображений, помеченных как «используемые в качестве опорных» больше увеличиваться не может, то может применяться маркировка изображений методом скользящего окна, при которой самое ранее (в порядке декодирования) опорное изображение помечается как «не используемое в качестве опорного».
[0159] В стандарте H.264/AVC определена процедура маркировки декодированного опорного изображения с целью управления потреблением памяти в декодере. Максимальное количество опорных изображений для внешнего предсказания обозначается за М и определяется в наборе параметров последовательности. При декодировании опорного изображения оно маркируется как «используемое в качестве опорного». Если в результате декодирования опорного изображения более М изображений были помечены как «используемые в качестве опорного», то по меньшей мере одно из этих изображений помечают как «не используемое в качестве опорного». Имеются два типа операций маркировки декодированного опорного изображения: адаптивное управление памятью и скользящее окно. Режим маркировки декодированного опорного изображения может выбираться для каждого изображения в отдельности. Адаптивное управление памятью обеспечивает явную сигнализацию, при которой изображения помечаются как «не используемые в качестве памяти», причем также возможно назначение долгосрочных указателей на краткосрочные опорные изображения. Адаптивное управление памятью может требовать наличия в битовом потоке параметров операций управления памятью (memory management control operation, MMCO). Параметры ММСО могут быть включены в синтаксическую структуру, маркирующую декодированное опорное изображение. Если применяется режим работы со скользящим окном, и М изображений помечены как «используемые в качестве опорных», то краткосрочное опорное изображение, являвшееся первым декодированным изображением среди краткосрочных опорных изображений, помеченных «используемыми в качестве опорных», помечается как «не используемое в качестве опорного». Другими словами, режим работы со скользящим окном обеспечивает работу с краткосрочными опорными изображениями по типу буфера «первый вошел, первый вышел».
[0160] Одна из операций управления памятью в стандарте H.264/AVC обеспечивает маркировку всех опорных изображений, кроме текущего изображения, как «не используемых в качестве опорных». Изображение мгновенного обновления декодирования (IDR) содержит только слайсы с внутренним предсказанием и вызывает аналогичный «сброс» опорных изображений.
[0161] В проекте стандарта HEVC синтаксические структуры для маркировки опорных изображений и соответствующие процедуры декодирования не применяются. Вместо этого, с аналогичными целями, используется синтаксическая структура и процедура декодирования набора опорных изображений (reference picture set, RPS). Набор опорных изображений, являющийся действительным или активным для изображения, включает все опорные изображения для данного изображения и все опорные изображения, которые остаются помеченными как «используемые в качестве опорных» для последующих изображений в порядке декодирования. В наборе опорных изображений существует шесть подмножеств, которые обозначаются RefPicSetStCurr0 (или, альтернативно, RefPicSetStCurrBefore), RefPicSetStCurr1 (или, альтернативно, RefPicSetStCurrAfter), RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. В некоторых спецификациях, являвшихся проектами стандарта HEVC, RefPicSetStFollO и RefPicSetStFolll трактуют как одно подмножество, которое может быть обозначено RefPicSetStFoll. Обозначения для всех шести подмножеств описаны ниже. "Curr" обозначает опорное изображение, которое включено в список опорных изображения для текущего изображения, и следовательно, может быть использовано как опорное изображение при внешнем предсказании текущего изображения. "Foll" обозначает опорное изображение, которое не включено в список опорных изображений для текущего изображения, но может быть использовано как опорное изображение для последующих изображений в порядке декодирования. "St" обозначает краткосрочные опорные изображения, которые в общем случае могут идентифицироваться при помощи определенного количества младших бит в их значении POC (порядкового номера). "Lt" обозначает долгосрочные опорные изображения, которые идентифицируются специальным образом и, как правило, имеют большее отличие в значениях POC от текущего изображения, чем это может быть отражено с помощью упомянутого определенного количества младших бит. "0" обозначает те опорные изображения, которые имеют меньшее значение POC, тем текущее изображение. "1" обозначает те опорные изображения, которые имеют большее значение POC, чем текущее изображение. RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1 совместно называют краткосрочным подмножеством набора опорных изображений. RefPicSetLtCurr и RefPicSetLtFoll совместно называют долгосрочным подмножеством набора опорных изображений.
[0162] В проекте стандарта HEVC набор опорных изображений может быть задан в наборе параметров последовательности и использоваться в заголовке слайса при помощи указателя на конкретный набор опорных изображений. Набор опорных изображений может также задаваться в заголовке слайса. Долгосрочное подмножество набора опорных изображений, как правило, задается только в заголовке слайса, тогда как краткосрочные подмножества того же самого набора опорных изображений могут задаваться в наборе параметров изображения или в заголовке слайса. Набор опорных изображений может кодироваться независимо или может быть предсказываемым на основе другого набора опорных изображений (это называется внешним предсказанием RPS). При независимом кодировании набора опорных изображений синтаксическая структура включает вплоть до трех циклически определяемых элементов с итерацией по различным типам опорных изображений: краткосрочные опорные изображения со значениями POC, меньшими текущего изображения, краткосрочные опорные изображения со значениями POC, большими текущего изображения, и долгосрочные опорные изображения. Каждая такая циклическая запись определяет, что изображение должно быть помечено как «используемое в качестве опорного». В большинстве случаев изображение задается с использованием дифференциального значения POC. При внешнем предсказании набора RPS используется тот факт, что набор опорных изображений для текущего изображения может быть предсказан на основе набора опорных изображений ранее декодированного изображения. Это возможно, поскольку все опорные изображения для текущего изображения являются либо опорными изображениями для предыдущего изображения, либо непосредственно декодированным изображением. Необходимо только указать, какие из этих изображений должны быть опорными и использоваться для предсказания текущего изображения. В обоих типах кодирования опорных изображений для каждого опорного изображения дополнительно устанавливают флаг (used_by_curr_pic_X_flag), который указывает, используется ли данное изображение в качестве опорного для текущего изображения (т.е. входит в список *Curr) или нет (т.е. входит в список *Foll). Опорное изображение может декодироваться один раз для каждого изображения, при этом оно может декодироваться после декодирования заголовка первого слайса, однако до декодирования любого блока кодирования, а также до построения списков опорных изображений. Изображения из набора опорных изображений, используемых для текущего слайса, помечают как «используемые в качестве опорных», а изображения, не входящие в набор опорных изображений, используемых для текущего слайса, помечают как «не используемые в качестве опорных». Если текущее изображение является IDR-изображением, то RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll назначаются равным пустому множеству.
[0163] В кодере и/или декодере может применяться буфер декодированных изображений (Decoded Picture Buffer, DPB). Имеются две причины для буферизации декодированных изображений - для использования в качестве опорных при внешнем предсказании и для изменения порядка декодированных изображений в выходной последовательности. Стандарты H.264/AVC и HEVC дают значительную гибкость как для маркировки опорных изображений, так и для переупорядочивания выходной последовательности, однако отдельные буферы для опорных изображений и изображений выходной последовательности могут приводить к нерациональному расходованию ресурсов памяти. Следовательно, буфер DPB может включать унифицированную процедуру буферизации опорных изображений и переупорядочивания выходной последовательности. Декодированное изображение может удаляться из буфера DPB, когда оно больше не используется в качестве опорного и не требуется для вывода.
[0164] Во многих режимах кодирования стандартов H.264/AVC и HEVC, на опорное изображение внешнего предсказания указывают с помощью указателя на список опорных изображений. Указатель может кодироваться с использованием кодирования переменной длины (неравномерного кодирования), что обычно дает более короткие значения указателей с меньшим числовым значением для соответствующих синтаксических элементов. В стандартах H.264/AVC и HEVC формируются два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) для каждого двунаправленно предсказываемого слайса (В-слайса), и один список опорных изображений (список 0 опорных изображений) для каждого слайса, кодируемого с внешним предсказанием (P-слайса).
[0165] Список опорных изображений, например список 0 или список 1, как правило, могут формироваться в два шага. Сначала формируют первичный список опорных изображений. Первичный список опорных изображений может формироваться, например, на основе параметров frame_num, POC, temporal_id или информации из иерархической структуры, используемой для предсказания, например, из структуры GOP, или на основе какой-либо комбинации перечисленного. На втором шаге первичный список опорных изображений может быть переупорядочен с помощью команд переупорядочения списка опорных изображений (reference picture list reordering, RPLR), также называемых синтаксической структурой модификации списка опорных изображений, которая может содержаться в заголовках слайсов. Команды RPLR указывают на изображения, которые упорядочены в направлении к началу соответствующего списка опорных изображений. Этот второй шаг может также быть назван процедурой модификации списка опорных изображений, а команды RPLR могут включаться в синтаксическую структуру модификации списка опорных изображений. Если используются наборы опорных изображений, то список 0 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr0, за которым следует RefPicSetStCurr1 и затем RefPicSetLtCurr. Список 1 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr1 и затем RefPicSetStCulr0. Первичные списки опорных изображений могут модифицироваться при помощи синтаксической структуры модификации списка опорных изображений, в которой изображения в первичных списках опорных изображений могут идентифицироваться при помощи записи-указателя на список.
[0166] Во многих кодеках эффективного видеокодирования, например, в кодеках, соответствующих проекту стандарта HEVC, применяется дополнительный механизм кодирования и декодирования информации, часто называемый режимом (или процессом, или механизмом) слияния, в котором информация о движении блока пикселей или блока предсказания предсказывается и используется без какой-либо модификации или коррекции. Упомянутая выше информация о движении блока предсказания может включать одно или более из следующего: 1) информация о том, является ли «данный блок предсказания однонаправленно предсказываемым с использованием только списка О опорных изображений», или «данный блок предсказания является однонаправленно предсказываемым с использованием только списка 1 опорных изображений», или «данный блок предсказания является двунаправленно предсказываемым с использованием обоих списков опорных изображений, списка 0 и списка 1»; 2) значение вектора движения, соответствующее списку 0 опорных изображений, которое может включать горизонтальную и вертикальную составляющую вектора движения; 3) указатель на опорное изображение в списке 0 опорных изображений и/или идентификатор опорного изображения, на которое указывает вектор движения, соответствующий списку 0 опорных изображений, при этом идентификатор опорного изображения может представлять собой, например, значение порядкового номера изображения, значение идентификатора уровня кодирования (для межуровневого предсказания), или пару из значения порядкового номера изображения и значения идентификатора уровня кодирования; 4) информация маркировки опорного изображения, например, информация о том, было ли опорное изображение помечено как «используемое в качестве краткосрочного опорного изображения» или как «используемое в качестве долгосрочного опорного изображения»; 5)-7) аналогично п.п. 2)-4), соответственно, но для списка 1 опорных изображений.
[0167] Аналогично, предсказание информации о движении выполняют с использованием информации о движении соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображениях временного предсказания. Список, часто называемый списком слияния, формируют при помощи включения кандидатных предсказаний движения, связанных с доступными смежными/сорасположенными группами пикселей, при этом сигнализируется указатель на выбранное кандидатное предсказание движения в списке, а информация о движении выбранного кандидата копируется в информацию о движении текущего блока предсказания. Если применяется механизм слияния для всего блока кодирования, и при этом сигнал предсказания для блока кодирования используется в качестве сигнала восстановления, т.е. остаток предсказания не обрабатывается, то такой тип кодирования и декодирования блока кодирования называется, как правило, режимом пропуска или режимом пропуска, основанным на слиянии. В дополнение к режиму пропуска для отдельных блоков предсказания применятся также механизм слияния (не обязательно для всего блока кодирования, как в режиме пропуска) и в этом случае остаток предсказания может использоваться для повышения качества предсказания. Такой тип режима предсказания, называют, как правило, режимом внешнего слияния.
[0168] Одним из кандидатов в списке слияния может быть TMVP-кандидат, который может быть получен на основе сорасположенного блока пикселей внутри опорного изображения, на которое было указано, или которое было вычислено, например, внутри опорного изображения, на которое было выполнено указание, например, в заголовке слайса, к примеру, с использованием синтаксического элемента ref_idx сорасположенного изображения или аналогичного ему элемента.
[0169] В стандарте HEVC, когда режимом кодирования является режим слияния, указатель на так называемое целевое опорное изображение для временного предсказания вектора движения в списке слияния назначают равным 0. Когда режимом кодирования движения в стандарте HEVC, при использовании временного предсказания векторов движения, является режим улучшенного предсказания векторов движения, значение указателя на целевое опорное изображение указывают явно (например, для каждого блока кодирования).
[0170] После определения значения указателя на целевое опорное изображение значение вектора движения, основанное на временном предсказании вектора движения, может быть получено следующим образом: вычисляют вектор движения в группе пикселей, которая сорасположена с соседним, справа-снизу, блоком кодирования для текущего блока кодирования. Изображение, в котором находится этот сорасположенный блок, может быть определено, например, согласно указателю на опорное изображение, сигнализированному в заголовке слайса в соответствии с предшествующим описанием. Найденный вектор движения для сорасположенного блока пикселей масштабируют пропорционально первой разности порядковых номеров изображений и второй разности порядковых номеров изображений. Первую разность порядковых номеров изображений вычисляют между изображением, содержащим данный сорасположенный блок, и опорным изображением вектора движения этого сорасположенного блока пикселей. Вторую разность порядковых номеров изображений вычисляют между текущим изображением и целевым опорным изображением. Если одно (но не оба) из изображений, целевого опорного изображения и опорного изображение вектора движения сорасположенного блока пикселей, является долгосрочным опорным изображением (то есть, второе является краткосрочным опорным изображением), то кандидатное TMVP-предсказание может считаться недоступным. Если оба изображения, целевое опорное изображение и опорное изображение вектора движения сорасположенного блока пикселей, являются долгосрочными опорными изображениями, то масштабирование вектора движения на основе POC неприменимо.
[0171] Типы параметров движения, или информации о движении, могут включать, без ограничения перечисленным, один или более из следующих типов:
- указание на тип предсказания (например, внутреннее предсказание, однонаправленное предсказание, двунаправленное предсказание) и/или на количество опорных изображений;
- указание на направление предсказания, например, внешнее (также называемое временным) предсказание, межуровневое предсказание, предсказание на основе синтеза ракурсов (view synthesis prediction, VSP), межкомпонентное предсказание (указание на которое может быть выполнено для конкретного опорного изображения или для конкретного типа предсказания, и при этом в некоторых из вариантов осуществления настоящего изобретения межвидовое предсказание и предсказание на основе синтаксиса ракурсов может считаться одним направлением предсказания); и/или
- указание на тип опорных изображений, например, краткосрочное опорное изображение и/или долгосрочное опорное изображение, и/или опорное изображение межуровневого предсказания (при этом указание может выполняться, например, для каждого опорного изображения);
- указатель на список опорных изображений и/или любой другой идентификатор, указывающий на опорные изображения (при этом указание может выполняться, например, для каждого типа опорного изображения, тип которого может зависеть от направления предсказания и/или от типа опорного изображения, и которое при этом может сопровождаться другими соответствующими фрагментами информации, например, информацией о списке опорных изображений или аналогичной структуре, к которой относится указатель на опорные изображения);
- горизонтальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.); - вертикальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.);
- один или более параметров, таких как разность порядковых номеров изображений и/или относительное расстояние между камерами, для изображений, содержащих параметры движения и соответствующее опорное изображение, или связанных с ними, которые могут применяться для масштабирования горизонтальной составляющей вектора движения и/или вертикальной составляющей вектора движения в процессе предсказания одного или более векторов движения (при этом упомянутые один или более параметров могут быть указаны, например, для каждого опорного изображения, для каждого указателя на опорные изображения и т.п.);
- координаты блока пикселей, к которому применимы параметры движения и/или информация о движении, например, координаты верхнего левого отсчета в блоке пикселей для блоков отсчетов яркости;
- размеры (например, ширина и длина) блока пикселей, к которому применимы параметры движения и/или информация о движении.
[0172] Поле движения, связанное с изображением, может рассматриваться как включающее множество информации о движении, сформированной для каждого кодированного блока изображения. Доступ к полю движения может, например, по координатам блока пикселей. Поле движения может применяться, например, при TMVP-предсказании или в любом другом механизме предсказания движения, где для предсказания, помимо текущего (де)кодируемого изображения, применяют также другие исходные, или опорные, изображения.
[0173] Для представления и/или хранения поля движения могут применяться различный уровень пространственной детализации, или различные элементы. К примеру, может применяться регулярная сетка из пространственных элементов. Например, изображение может быть разбито на прямоугольные блоки заданного размера (за потенциальным исключением блоков на краях изображения, то есть, на правой и нижней границах изображения). К примеру, размер пространственных элементов может быть равен наименьшему размеру, для которого кодером в битовом потоке может быть указано различимое движение, например, это может быть блок размером 4x4 для блоков отсчетов яркости. К примеру, может применяться так называемое сжатое поле движения, в котором пространственные элементы могут быть равными заранее заданному или указанному размеру, к примеру, блок пикселей 16×16 для блоков отсчетов яркости, причем его размер может быть больше, чем наименьший размер для указания различимого движения. К примеру, кодер и/или декодер по стандарту HEVC может быть реализован таким образом, чтобы для каждого декодированного поля движения применялась процедура сжатия хранимых данных о движении (motion data storage reduction, MDSR), перед использованием поля движения для внешнего предсказания изображений. В одной из реализаций стандарта HEVC MDSR-сжатие обеспечивает возможность снижения детализации данных о движении до блоков размером 16×16 для блоков отсчетов яркости за счет хранения информации о движении, применимой к верхнему левому отсчету из блока размером 16×16 в несжатом поле движения. Кодер может кодировать указание (или указания), относящиеся к пространственному элементу несжатого поля движения в виде одного или более синтаксических элементов и/или значений синтаксических элементов, к примеру, в некоторой синтаксической структуре, относящейся к последовательности, такой как набор видеопараметров или набор параметров последовательности. В некоторых способах и/или устройствах (де)кодирования поле движения может быть представлено и/или может храниться согласно разбиению блока для предсказания движения (например согласно блокам предсказания в стандарте HEVC). В некоторых способах и/или устройствах (де)кодирования может применяться комбинация регулярной сетки и разбиения на блоки, так что информацию о движении, связанную с фрагментами, имеющими размер больше, чем заранее заданный или указанный размер пространственного элемента, представляют и/или хранят в связи с этими фрагментами, тогда как информацию о движении, связанную с фрагментами, меньшими, чем заранее заданный или указанный размер пространственного элемента, или с несовпадающими с ними фрагментами, представляют и/или хранят для заранее заданных или указанных элементов.
[0174] Масштабируемым видеокодированием может называться такая структура кодирования, в которой один битовый поток может содержать несколько представлений контента с различным битрейтом, разрешением и/или частотой смены кадров. В этих случаях приемная сторона может извлекать требуемое представление в зависимости от его характеристик (например, разрешение, наиболее подходящее для дисплейного устройства). Альтернативно, сервер или сетевой элемент может извлекать части битового потока для передачи в приемник в зависимости, например, от характеристик сети или вычислительных возможностей приемника.
[0175] Масштабируемый битовый поток может состоять из базового уровня, обеспечивающего наименьшее из доступных качество видеоинформации, а также из одного или более уточняющих слоев, которые повышают качество видеоинформации при их приеме и декодировании вместе с нижними уровнями. Уточняющий уровень, например, может повышать временное разрешение (т.е. частоту смены кадров), пространственное разрешение или просто качество видеоконтента, представленного в другом уровне, или его части. С целью повышения эффективности кодирования уточняющих слоев их кодированные представления могут зависеть от низлежащих уровней. Например, информация о движении и режиме уточняющего уровня может предсказываться на основе низлежащих уровней. Аналогично, данные пикселей нижних уровней могут применяться для формирования предсказания уточняющего уровня (или уровней).
[0176] Режимы масштабирования, или масштабируемые величины, могут включать, без ограничения перечисленным, описанные ниже режимы.
- Масштабирование качества: изображения базового уровня кодируют с меньшим качеством, чем изображения уточняющих уровней, что может быть реализовано, например, за счет использования более высокого значения параметра квантования (т.е. большего размера шага квантования для квантования коэффициентов преобразования) в базовом уровне, по сравнению с уточняющим уровнем. Масштабируемость качества может, в свою очередь, подразделяться на мелкозернистую или мелкогранулярную масштабируемость (fine-grain или fine-granularity scalability, FGS), среднезернистую или среднегранулярную масштабируемость (medium-grain или medium-granularity scalability, MGS) и/или крупнозернистую или крупногранулярную масштабируемость (coarse-grain или coarse-granularity scalability, CGS) которые будут описаны ниже.
- Пространственная масштабируемость: изображения базового уровня кодируют с меньшим разрешением (т.е. имеют меньше количество отсчетов), чем изображения уточняющих уровней. Пространственная масштабируемость и масштабируемость качества, особенно ее крупногранулярный тип, иногда относят к одному типу масштабируемости.
- Масштабируемость битовой глубины: изображения базового уровня кодирования кодируют с меньшей битовой глубиной (например, 8 бит), чем изображения уточняющих уровней (например, 10 или 12 бит).
- Масштабируемость формата цветности: изображения базового уровня кодирования обеспечивают меньшее пространственное разрешение в массивах отсчетов цветности (например, кодированы в формате цветности 4:2:0), чем изображения уточняющих уровней (например, формат 4:4:4).
- Масштабируемость цветового охвата: изображения уточняющего уровня имеют более емкий, или широкий, диапазон представления цвета, чем изображения базового уровня, например, уточняющий уровень может иметь цветовой охват по стандарту UHDTV (ITU-R ВТ.2020), а базовый уровень может иметь цветовой охват по стандарту ITU-R ВТ.709.
- Масштабируемость ракурсов, которая может также называться многоракурсным кодированием. Базовый уровень представляет собой первый ракурс, тогда как уточняющий уровень является вторым ракурсом.
- Масштабируемость глубины, которая может также называться кодированием с уточнением глубины. Один или несколько уровней в битовом потоке могут представлять собой ракурс (или ракурсы) текстуры, тогда как другой уровень, или уровни, могут представлять собой ракурс (или ракурсы) глубины.
- Масштабируемость областей интереса (описана ниже).
- Чересстрочно-прогрессивная масштабируемость (описана далее).
- Масштабируемость с гибридным кодеком: изображения базового уровня кодируют согласно стандарту или формату кодирования, отличающего от кодирования изображений уточняющего уровня. К примеру, базовый уровень может быть закодирован с использованием стандарта H.264/AVC, а уточняющий уровень может быть закодирован с использованием расширения HEVC.
[0177] Нужно понимать, что многие из типов масштабируемости могут комбинироваться и применяться совместно. К примеру, комбинироваться могут масштабируемость цветового охвата и масштабируемость битовой глубины.
[0178] Во всех описанных выше случаях масштабируемости информация базового уровня может использоваться для кодирования уточняющего уровня в целях минимизации битрейта служебных данных.
[0179] Термин «уровень» может использоваться в контексте любых типов масштабируемости, включая масштабируемость ракурсов и уточнение глубины. Уточняющий уровень может иметь отношение к любому типу уточнения, например, повышению отношения сигнал/шум, пространственному уточнению, многоракурсному уточнению, уточнению глубины, битовой глубины, формата цветности и/или и/или увеличению цветового охвата. Базовый уровень может иметь отношение к любому типу базовой видеопоследовательности, например, к базовому ракурсу, базовому уровню для пространственной масштабируемости или масштабируемости отношения сигнал/шум, или к базовому ракурсу текстуры для видеокодирования с уточнением глубины.
[0180] Под кодированием на основе области интереса (Region of Interest, ROI) может пониматься кодирование некоторой области в видеоизображении с более высокой детализацией. Для определения ROI-областей во входных кодируемых изображениях существуют несколько различных методов, применяемых в кодерах и/или других узлах. К примеру, может применяться распознавание лиц, и лица могут быть определены в качестве ROI-областей. Дополнительно или альтернативно, в другом примере объекты, находящиеся в фокусе, могут выявляться и определяться в качестве ROI-областей, а объекты не в фокусе могут быть определены, как находящиеся вне ROI-областей. Дополнительно или альтернативно, в другом примере, может оцениваться или быть известным расстояние до объектов, например, на основе показаний датчика глубины, и при этом ROI-области могут быть определены как соответствующие объектам, которые расположены ближе к камере относительно фона.
[0181] ROI-масштабируемость может быть определена как тип масштабируемости, в котором уточняющий уровень уточняет только часть изображения опорного уровня, например, пространственно, по качеству, по битовой глубине и/или в отношении других масштабируемых величин. ROI-масштабируемость может применяться совместно с другими типами масштабируемости, при этом можно сказать, что она создает другую классификацию типов масштабируемости. Существуют несколько различных применений ROI-кодирования с различными требованиями, которые могут быть реализованы с использованием ROI-масштабируемости. К примеру, уточняющий уровень может передаваться с целью повышения качества и/или разрешения некоторой области в базовом уровне. Декодер, который принимает одновременно битовые потоки уточняющего и базового уровней может декодировать оба уровня и накладывать декодированные изображения друг на друга, отображая результирующее изображение.
[0182] Пространственное соотношение между изображением уточняющего уровня и областью опорного уровня, или, что аналогично, областью опорного уровня, и изображением базового уровня, может быть указано кодером и/или декодировано декодером с помощью, например, так называемых смещений масштабированного опорного уровня. Смещения масштабированного опорного уровня можно трактовать как элементы, определяющие положение угловых отсчетов опорного уровня, имеющего повышенное разрешение, относительно соответствующих угловых элементов изображения уточняющего уровня. Значения смещений могут иметь знак, что позволяет применять значения смещения для обоих типов расширенной пространственной масштабируемости, в соответствии с иллюстрацией фиг. 6а и фиг. 6b. В случае масштабируемости на основе областей интереса (фиг. 6а) изображение 110 уточняющего уровня соответствует области 112 изображения 116 опорного уровня, а смещения масштабированного опорного уровня указывают на углы изображения опорного уровня, имеющего повышенное разрешение, которое занимает область масштабированного опорного уровня. Смещения масштабированного опорного уровня могут быть указаны при помощи четырех синтаксических элементов (например, для каждой пары из уточняющего уровня и его опорного уровня), которые могут иметь наименования scaled_ref_layer_top_offset 118, scaled_ref_layer_bottom_offset 120, scaled_ref_layer_right_offset 122 и scaled_ref_layer_left_offset 124. Имеющая повышенное разрешение область опорного уровня может быть определена кодером и/или декодером путем пропорционального уменьшения смещений масштабированного опорного уровня согласно отношению между высотой или шириной изображения уточняющего уровня и высотой или шириной изображения опорного уровня с повышенным разрешением соответственно. Пропорционально уменьшенное смещение масштабированного опорного уровня может затем использоваться для получения области опорного уровня, которая имеет повышенное разрешение, и/или для определения того, какие из отсчетов опорного уровня сорасположены с заданными элементами изображения опорного уровня. В случае, когда изображение опорного уровня соответствует области изображения уточняющего уровня (фиг. 6b), смещения масштабированного опорного уровня указывают на углы изображения опорного уровня, имеющего повышенное разрешение, которое расположено внутри этой области изображения уточняющего уровня. Смещение масштабированного опорного уровня может использоваться для определения, какие из отсчетов опорного уровня, имеющего повышенное разрешение, сорасположены с заданными элементами изображения уточняющего уровня. Возможно также комбинированное применение расширенной пространственной масштабируемости, то есть, один из типов может применяться в горизонтальном направлении, а второй - в вертикальном. Смещения масштабированного опорного уровня могут указываться кодером и/или декодироваться кодером, например, в синтаксической структуре, относящейся к последовательности, такой как набор SPS и/или VPS. Точность смещения масштабированного опорного уровня может быть заранее заданной, например, в стандарте кодирования, и/или задана кодером и/или декодирована декодером из битового потока. К примеру, может применяться точность, равная 1/16 от размера отсчета цветности в уточняющем уровне. Смещения масштабированного опорного уровня могут указываться, декодироваться и/или применяться в процессе кодирования, декодирования и/или отображения, только когда между двумя уровнями не выполняется межуровневое предсказание.
[0183] Каждый масштабируемый уровень вместе со всеми зависимыми уровнями является одним из представлений видеосигнала с определенным пространственным разрешением, временным разрешением и/или другой масштабируемой величиной. В данном документе масштабируемый уровень вместе со всеми зависимыми уровнями называется «представлением масштабируемого уровня». Часть масштабируемого битового потока, соответствующая представлению масштабируемого уровня, может быть извлечена и декодирована, в результате чего получают представление исходного сигнала с определенной точностью.
[0184] Масштабируемость может обеспечиваться двумя основными способами: либо при помощи введения новых режимов кодирования для выполнения предсказания значения пикселей или синтаксических элементов на основе нижних уровней кодирования масштабируемого представления, либо при помощи помещения изображений нижнего уровня в буфер опорных изображений (например, буфер декодированных изображений (decoded picture buffer, DPB)) вышележащего уровня. Первый подход более может обеспечить большую гибкость, и следовательно, в большинстве случаев позволяет получить более эффективное кодирование. Однако второй подход, т.е. масштабируемость, основанная на опорных кадрах, может быть очень эффективно реализована, лишь с минимальными изменениями в одноуровневых кодеках и с сохранением большинства преимуществ в эффективности кодирования. По существу, кодек с масштабируемостью на основе опорных кадров может быть реализован с применением одинаковых аппаратных или программных реализаций для всех уровней, необходимо лишь решить вопрос управления буфером DPB с помощью внешних средств.
[0185] Кодер масштабируемого видеокодирования с масштабируемостью качества (также называемой масштабируемостью соотношения сигнал/шум, или SNR (Signal-to-Noise)) и/или пространственной масштабируемостью, может быть реализован описанным ниже способом. Для базового уровня кодирования могут применяться традиционные видеокодер и видеодекодер без масштабируемости. Восстановленные или декодированные изображения базового уровня вносят в буфер опорных изображений и/или в список опорных изображений для уточняющего уровня. В случае пространственной масштабируемости может выполняться изменение разрешения (увеличение разрешения) восстановленного, или декодированного, изображения базового уровня перед его добавлением в список опорных изображений для изображения уточняющего уровня. Декодированные изображения базового уровня могут вноситься в список (или списки) опорных изображений для кодирования/декодирования изображения уточняющего уровня, аналогично декодированным опорным изображениям уточняющего уровня. Следовательно, в кодере опорное изображение базового уровня может выбираться в качестве опорного для внешнего предсказания, при этом указание на его использование, как правило, выполняют с помощью указателя на опорное изображение в кодированном битовом потоке. В декодере из битового потока, например, на основе указателя на опорное изображение декодируется информация о том, что в качестве опорного изображения внешнего предсказания для уточняющего уровня было использовано изображение базового уровня. При использовании декодированного изображения базового уровня в качестве опорного для предсказания уточняющего уровня, оно называется опорным изображением межуровневого предсказания.
[0186] В предыдущем абзаце был описан видеокодек с масштабируемостью, в котором применялись два уровня масштабируемости: уточняющий уровень и базовый уровень. Нужно понимать, что это описание может быть обобщено для любых двух уровней в иерархии масштабируемости с более чем двумя уровнями. В таком случае второй уточняющий уровень может зависеть от первого уточняющего уровня в процессе кодирования и/или декодирования, и соответственно, первый уточняющий уровень может считаться базовым уровнем для кодирования и/или декодирования второго уточняющего уровня. Также, нужно понимать, что в буфере опорных изображений или списках опорных изображений уточняющего уровня могут присутствовать опорные изображения межуровневого предсказания более чем из одного уровня кодирования, и при этом каждое из этих опорных изображений межуровневого предсказания может рассматриваться как располагающееся в базовом, или опорном, уровне для кодируемого и/или декодируемого уточняющего уровня.
[0187] Схема масштабируемого кодирования и/или декодирования может включать многопроходное кодирование и/или декодирование, которые описаны ниже. При кодировании и декодировании изображение базового уровня может восстанавливаться, или декодироваться, с целью его использования в качестве опорного изображения компенсации движения для последующих изображений в порядке кодирования, или декодирования, в том же уровне кодирования, или в качестве опорного для межуровневого (или межракурсного, или межкомпонентного) предсказания. Восстановленное, или декодированное, изображение базового уровня может сохраняться в буфер DPB. Изображение уточняющего уровня, аналогично, может восстанавливаться, или декодироваться, с целью его использования в качестве опорного изображения компенсации движения для последующих изображений в порядке кодирования, или декодирования, в том же уровне кодирования, или в качестве опорного для межуровневого (или межракурсного или межкомпонентного) предсказания более высоких уточняющих уровней, если они присутствуют. В дополнение к восстановленным, или декодированным, значениям отсчетов, для межуровневого (или межкомпонентного, или межракурсного) предсказания могут также использоваться значения синтаксических элементов базового, или опорного, уровня или переменные, полученные на основе значений синтаксических элементов базового, или опорного, уровня.
[0188] В некоторых случаях данные в уточняющем уровне могут отсекаться после определенного местоположения, или даже после произвольной позиции, при этом каждая позиция отсечения может включать дополнительные данные, представляющие все более высокое визуальное качество. Такая масштабируемость называется мелкозернистой (или мелкогранулярной) масштабируемостью (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.
[0189] В стандарте SVC используется механизм межуровневого предсказания, в котором часть информации может предсказываться на основе других уровней кодирования, не являющихся текущим восстанавливаемым уровнем, или следующим за ним нижним уровнем. Информация, предсказываемая с помощью механизма межуровневого предсказания включает внутреннюю текстуру, информацию о движении и данные остатка. Межуровневое предсказание движения включает предсказание режима кодирования блока, информации заголовка и т.п., при этом движение нижних уровней кодирования может использоваться для предсказания движения верхних уровней. В случае внутреннего кодирования возможно предсказание на основе соседних или сорасположенных макроблоков нижних уровней. В таких методах предсказания не применяется информация из ранее закодированных блоков доступа и следовательно, они называются методами внутреннего предсказания. Кроме того, данные остатка предсказания нижних уровней кодирования также могут применяться для предсказания текущего уровня, Которое может называться межуровневым предсказанием остатка.
[0190] Масштабируемое видео(де)кодирование может быть реализовано на основе принципа, получившего название однопроходного декодирования, при котором декодируемые опорные изображения восстанавливают только для наивысшего декодируемого уровня, тогда как изображения в нижележащих уровнях могут не декодироваться полностью или могут отбрасываться после их использования для межуровневого предсказания. При однопроходном декодировании декодер выполняет компенсацию движения и восстановление изображения полностью только для масштабируемого уровня, необходимого для воспроизведения (который называют «требуемым уровнем» или «целевым уровнем»), за счет чего значительно снижается сложность декодирования, по сравнению с многопроходным декодированием. Все уровни кодирования, помимо требуемого, не обязательно должны быть декодированы полностью, поскольку для восстановления требуемого уровня кодирования не требуются все данные кодированного изображения, или часть этих данных. Однако нижележащие уровни (по сравнению с целевым уровнем) могут использоваться для межуровневого предсказания синтаксиса или параметров, например, для межуровневого предсказания движения.
В дополнение или альтернативно, нижележащие уровни могут использоваться для межуровневого внутреннего предсказания, и следовательно, может быть необходимо декодирование внутренне-кодируемых блоков нижележащих уровней. Дополнительно или альтернативно, может применяться межуровневое предсказание остатка, при котором информация остатка нижележащих уровней может использоваться для декодирования целевого уровня, и при этом может требоваться декодирование или восстановление информации остатка. В некоторых схемах кодирования для кодирования большинства изображений достаточно одной петли декодирования, тогда как вторая петля декодирования может применяться, избирательно, для восстановления так называемых базовых представлений (т.е. декодированных изображений базового уровня), которые могут быть необходимы в качестве опорных для предсказания, но не для вывода или отображения.
[0191] В стандарте SVC допускается применение однопроходного декодирования. Оно обеспечивается с помощью режима внутреннего предсказания текстуры, за счет чего межуровневое предсказание внутренней текстуры может применяться к макроблокам (MB), для которых соответствующая группа пикселей базового уровня расположена внутри макроблоков, предсказываемых внутренне. В то же время для этих внутренне предсказываемых макроблоков в базовом уровне кодирования используется ограниченное внутреннее предсказание (например, они имеют синтаксический элемент "'constrained_intra_pred_flag", равный 1). При однопроходном декодировании декодер выполняет компенсацию движения и восстановление изображения полностью только для масштабируемого уровня, необходимого для воспроизведения (который называют «требуемым уровнем» или «целевым уровнем»), за счет чего значительно снижается сложность декодирования. Все уровни кодирования, помимо требуемого, не обязательно должны быть декодированы полностью, поскольку часть данных, или все данные их макроблоков не используются для межуровневого предсказания (будь это межуровневое предсказание внутренней текстуры, межуровневое предсказание движения или межуровневое предсказание остатка) и не являются необходимыми для восстановления требуемого уровня. Одна петля декодирования необходима для декодирования большинства изображений, тогда как вторая петля декодирования выборочно применяется для восстановления базовых представлений, необходимых как опорных для предсказания, но не для вывода или отображения, при этом они восстанавливаются только для так называемых ключевых изображений (для которых флаг "store_ref_base_pic_flag" установлен в значение 1).
[0192] Структура масштабирования в проекте стандарта SVC характеризуется тремя синтаксическими элементами: "temporal_id," "dependency_id" и "quality_id." Синтаксический элемент "temporal_id" используется для указания иерархии временной масштабируемости, или, косвенно, частоты смены кадров. Представление масштабируемого уровня, включающее изображения с меньшим максимальным значением '"temporaljd" будет иметь меньшую частоту смену кадров, чем представление масштабируемого уровня, включающее изображение с большим максимальным значением "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-слайс.
[0193] Для простоты все блоки данных (например, в контексте SVC - блоки сетевой абстракции, NAL-блоки) в одном блоке доступа, имеющие одинаковое значение "dependency_id", называются блоком зависимости или представлением зависимости. В одном блоке зависимости все блоки данных с одинаковыми значениями "quality_id" называются блоком качества или представлением уровня кодирования.
[0194] Базовое представление, также называемое декодированным базовым изображением, представляет собой декодированное изображение, полученное в результате декодирования NAL-блоков уровня видеокодирования (Video Coding Layer, VCL) блока зависимости, чей "'quality_id" равен 0 и для которого флаг "store_ref_basepic_flag" установлен равным 1. Уточняющее представление, также называемое декодированным изображением, получают в результате обычного процесса декодирования, при котором декодируются все представления уровней, присутствующие для самого верхнего представления зависимости.
[0195] Как отмечалось выше, масштабируемость CGS включает и пространственную масштабируемость, и SNR-масштабируемость. Пространственная масштабируемость исходно предназначена для поддержки представлений видеоинформации с различным разрешением. NAL-блоки VCL для каждого момента времени кодируются в одном блоке доступа, причем эти NAL-блоки VCL могут соответствовать различным разрешениям. В процессе декодирования NAL-блоки VCL низкого разрешения дают поле движения и остаток, который опционально может наследоваться при окончательном декодировании и восстановлении изображения высокого разрешения. По сравнению с предшествующими стандартами сжатия видеоинформации пространственная масштабируемость в стандарте SVC была обобщена и позволяет базовому уровню быть кадрированной, или зуммированной, версией уточняющего уровня.
[0196] Уровни качества MGS указываются с помощью "quality_id", аналогично уровням качества FGS. Для каждого блока зависимости (с одинаковыми "dependency_id") имеется уровень с "quality_id", равным 0, и также могут присутствовать другие уровни, с "quality_id", большим 0. Эти уровни, имеющие "quality_id", больший 0, являются либо уровнями MGS, либо уровнями FGS, в зависимости от того, являются ли слайсы кодируемыми как отсекаемые слайсы.
[0197] В базовой форме уточняющих уровней FGS используется только межуровневое предсказание. Следовательно, уточняющие уровни FGS могут свободно отсекаться, без риска распространения ошибок в декодированной последовательности. Однако такая базовая форма FGS страдает низкой эффективностью сжатия. Это проблема возникает по причине использования изображений с низким качеством как опорных при внешнем предсказании. Соответственно, было предложено, чтобы в качестве опорных изображений внешнего предсказания использовались уточняемые с помощью FGS изображения. Однако, при отбросе части данных FGS, это может приводить к несовпадению кодирования-декодирования, которое называется дрейфом.
[0198] Одна из особенностей проекта стандарта SVC заключается в том, что NAL-блоки FGS могут свободно отсекаться или отбрасываться, а особенность стандарта SVCV - NAL-блоки могут свободно отбрасываться MGS (но не могут отсекаться), без нарушения соответствия битового потока стандарту. Как обсуждалось выше, если эти данные FGS или MGS использовались как опорные для внешнего предсказания при кодировании, то отбрасывание или отсечение этих данных приведет к несовпадению декодированных изображений на стороне кодера и декодера. Такое несовпадение также называют дрейфом.
[0199] Для контроля дрейфа, возникающего вследствие отбрасывания или отсечения данных FGS или MGS, в стандарте SVC применяется следующее решение: в каждом блоке зависимости базовое представление (при помощи декодирования только изображения CGS с "quality_id", равным 0, и всех данных, зависящих от нижних уровней) восстанавливается в буфере декодированных изображений. При декодировании последующего блока зависимости с таким же значением "dependency_id" для внешнего предсказания всех NAL-блоков, включающих NAL-блоки FGS или NAL, в качестве опорного используется базовое представление. Следовательно, любой дрейф, возникающий в результате отбрасывания или отсечения NAL-блоков FGS или MGS, прекращается на данном блоке доступа. В целях обеспечения высокой эффективности кодирования в других блоках зависимости с тем же значением "dependency_id" для всех NAL-блоков в качестве опорных изображений внешнего предсказания используются декодированные изображения.
[0200] Каждый NAL-блок включает в своем заголовке синтаксический элемент "use_ref_basepic_flag". Когда значение этого элемента равно 1, при декодировании NAL-блока в процессе внешнего предсказания используются базовые представления опорных изображений. Синтаксический элемент "store_ref_basepic_flag" определяет, следует ли (если он равен 1) сохранять базовое представление текущего изображения для будущих изображений с целью использования при внешнем предсказании или нет (если он равен 0).
[0201] NAL-блоки с "quality_id", большим 0, не содержат синтаксических элементов, связанных с построением списков опорных изображений и взвешенным предсказанием, т.е. отсутствуют синтаксические элементы "'num_ref_active_x_minus1" (x=0 или 1), синтаксическая таблица переупорядочивания списка опорных изображений и синтаксическая таблица взвешенного предсказания. Следовательно, при необходимости, уровни MGS или FGS должны наследовать эти синтаксические элементы от NAL-блоков с "quality_id", равным 0, в том же блоке зависимости.
[0202] В стандарте SVC список опорных изображений состоит либо только из базовых представлений (когда флаг "use_ref_base_pic_flag" равен 1) или только из декодированных изображений, не помеченных как «базовое представление» (когда флаг "use_ref_base_pic_flag" равен 0), но никогда из обоих одновременно.
[0203] В стандартах AVC и HEVC были определены, а также предложены независимо, несколько типов контейнерных сообщений SEI. Принцип контейнеризации сообщений SEI заключается в помещении одного или более сообщений SEI внутри контейнерного сообщения SEI и в обеспечении механизма для связывания вложенных сообщений SEI с подмножеством битового потока и/или подмножеством декодированных данных. Может предъявляться требование, чтобы контейнерное сообщение SEI содержало одно или более сообщений SEI, которые сами не являются контейнерными сообщениями SEI. Сообщение SEI, содержащееся в контейнерном сообщении SEI называется вложенным сообщением SEI. Сообщение SEI, не содержащееся в контейнерном сообщении SEI называется невложенным сообщением SEI. Сообщения SEI с масштабируемой вложенностью в стандарте HEVC позволяют указывать либо на подмножество битового потока (полученное при помощи процедуры извлечения битового подпотока), либо на набор уровней, к которому применимы вложенные сообщения SEI. Подмножество битового потока может также называться битовым подпотоком.
[0204] В стандарте SVC определено сообщение SEI с масштабируемой вложенностью. Сообщение SEI с масштабируемой вложенностью представляет собой механизм связывания сообщений SEI с подмножествами битового потока, например, указанными представления зависимостями или другими масштабируемыми уровнями. Сообщение SEI с масштабируемой вложенностью содержит одно или более сообщений SEI, которые не являются сами сообщениями SEI с масштабируемой вложенностью. Сообщение SEI, содержащееся в сообщении SEI с масштабируемой вложенностью называется вложенным сообщением SEI. Сообщение SEI, которое не содержится в сообщении SEI с масштабируемой вложенностью называется невложенным сообщением SEI.
[0205] В настоящее время ведутся работы по спецификации расширения масштабируемости и многоракурсного расширения стандарта HEVC. Многоракурсное расширение стандарта HEVC, которое обозначается MV-HEVC, аналогично расширению MVC стандарта H.264/AVC. Аналогично стандарту MVC, в MV-HEVC опорные изображения межракурсного предсказания могут включаться в список (или списки) опорных изображений для текущего кодируемого или декодируемого изображения. Расширение масштабирования стандарта HEVC, обозначаемое SHVC, планируют определить таким образом, чтобы в нем применялась операция многопроходного декодирования (в отличие от расширения SVC стандарта H.264/AVC). Расширение SHVC основано на указателях на опорные изображения, то есть опорное изображение межуровневого предсказания может включаться в один или более списков опорных изображений для текущего кодируемого или декодируемого изображения (в соответствии с предшествующим описанием).
[0206] Для расширений MV-HEVC и SHVC могут использоваться множество одинаковых синтаксических структур, семантики и процедур декодирования. Другие типы масштабируемости, например, видео с уточнением глубины, могут также быть реализованы с использованием таких же, как в расширениях MV-HEVC и SHVC, или аналогичных синтаксических структур, семантики и процедур декодирования.
[0207] Для кодирования уточняющего уровня в расширениях SHVC, MV-HEVC и/или SMV-HEVC могут применяться те же самые принципы и инструменты кодирования, что и в HEVC. Однако в кодеки SHVC, MV-HEVC и/или SMV-HEVC, или аналогичные кодеки, с целью эффективного кодирования уточняющего уровня, могут быть встроены дополнительные инструменты межуровневого предсказания, в которых применяются уже кодированные данные (включая восстановленные элементы изображений и параметры движения, которые также называют информацией о движении) из опорного уровня.
[0208] В расширениях MV-HEVC, SHVC и/или аналогичных расширениях, набор VPS может включать, например, указание на соответствие значения Layerld, полученного из заголовка NAL-блока, одному или более значениям масштабируемой величины например, соответствующим параметрам dependency_id, quality_id, view_id и depth_flag для уровня, определенным аналогично расширениям SVC и MVC.
[0209] В расширениях MV-HEVC/SHVC, в наборе VPS, может выполняться указание на то, что уровень, значение идентификатора которого больше 0, не имеет прямых (непосредственных) опорных уровней, т.е. межуровневое предсказание для этого уровня на основе каких-либо других уровней не выполняется. Другими словами, битовый поток в расширениях MV-HEVC/SHVC может содержать независимые друг от друга уровни, которые могут называться уровнями одновременной передачи.
[0210] Часть набора VPS, которая определяет масштабируемые величины, которые могут присутствовать в битовом потоке, соответствие между значениями nuh_layer_id и значениями масштабируемых величин, а также зависимости между уровнями могут быть заданы при помощи следующих синтаксических элементов:
[0211]
[0212] В последующих абзацах описаны возможные определения семантики, проиллюстрированной выше части набора VPS.
[0213] Флаг splitting_flag, равный 1, указывает на то, что синтаксические элементы dimension_id [i][j] отсутствуют, и на то, что двоичное представление значения nuh_layer_id в заголовке NAL-блока разбито на NumScalabilityTypes сегментов, длина которых в битах соответствует значениям dimension_id_len_minus_1 [j], а также на то, что значения dimension_id[ LayerldxInVpsf [ nuh_layer_id][j] вычисляют на основе NumScalability Types сегментов, а флаг splitting_flag, равный 0, указывает на то, что синтаксические элементы dimension_id[i][j] присутствуют. В приведенном ниже примере семантики, без потери общности, допущено, что флаг splitting_flag равен 0.
[0214] Флаг scalability_mask_flag[i], равный 1, указывает на то, что присутствуют синтаксические элементы масштабирования, соответствующие i-ой масштабируемой величине в приведенной ниже таблице.
Флаг scalability_mask_flag[i], равный 0, указывает на то, что синтаксические элементы масштабирования, соответствующие i-ой масштабируемой величине в приведенной ниже таблице, отсутствуют.
[0216] В будущих трехмерных расширениях стандарта HEVC, синтаксический элемент scaiability_mask_index_0 может использоваться для указания на карты глубины.
[0217] Синтаксический элемент dimension_id_len_minus_1[j] плюс 1 определяет длину, в битах, синтаксического элемента dimension_id[i][j].
[0218] Флаг vps_nuh_layer_id_present_flag, равный 1, определяет, что присутствуют layer_id_in_nuh[i], для i от 0 до MaxLayersMinus_1 (который равен максимальному количеству уровней в битовом потоке минус 1), включительно. Флаг vps_nuh_layer_id_present_flag, равный 0, определяет, что layer_id_in_nuh[i], для i от 0 до MaxLayersMinus_1, включительно, отсутствуют.
[0219] Синтаксический элемент layer_id_in_nuh[i] определяет значение синтаксического элемента nuh_layer_id в NAL-блоках VCL i-го уровня. Для i в диапазоне от 0 до MaxLayersMinus_1 включительно, когда layer_id[i] отсутствует, значение принимают равным i. Когда i больше 0, layer_id_in_nuh[i] больше, чем layer_id_in_nuh[i-1]. Для i в диапазоне от 0 до MaxLayersMinus_1 включительно переменную LayerldxlnVps[layer_id_in_nuh[i]] назначают равной i.
[0220] Синтаксический элемент dimension_id[i][j] определяет идентификатор j-го присутствующего типа масштабируемой величины для i-го уровня. Количество бит, используемых для представления dimension_id[i][j] равно dimension_id_len_minus_1 [j]+1 бит. Когда флаг splitting_flag равен 0, для j от 0 до NumScalabilityTypes - 1 включительно, dimension_id[0][j] принимают равным 0.
[0221] Переменную Scalability Id [i][smldx], определяющую идентификатор smldx-го типа масштабируемой величины для i-го уровня, переменную ViewOrderldx[layer_id_in_nuh[i]], определяющую порядковый номер в порядке ракурсов для i-го уровня, переменную Dependencyld[layer_id_in_nuh[i]], определяющую идентификатор пространственной масштабируемости / масштабируемости качества для i-го уровня и переменную ViewScalExtLayerFlag[layer_id_in_nuh[i]], определяющую, является ли i-ый уровень уровнем расширения с масштабированием ракурсов, вычисляют следующим образом:
[0222] Для уточняющих уровней, или уровней, значение идентификатора уровня которых больше 0, может быть указано на то, что они содержат вспомогательные видеоданные, дополняющие базовый уровень или другие уровни. К примеру, в текущем проекте MV-HEVC вспомогательные изображения могут кодироваться в битовый поток с использованием уровней вспомогательных изображений. Уровень вспомогательных изображений связан с собственным значением масштабируемой величины, Auxld (аналогично, например, порядковому номеру ракурса). Уровни с Auxld большим 0 содержат вспомогательные изображения. Каждый уровень может содержать только один тип вспомогательных изображений, при этом тип вспомогательных изображений, включенных в уровень, может быть указан при помощи значения Auxld. Другими словами, значения Auxld могут быть поставлены во взаимно однозначное соответствие со вспомогательными изображениями. К примеру, Auxld, равный 1, может указывать на альфа-слои, a Auxld, равный 2, может указывать на изображения глубины. Вспомогательное изображение может быть определено как изображение, не обязательно влияющее на процедуру декодирования основных изображений. Другими словами, для основных изображений (Auxld которых равен 0) может быть введено ограничение, запрещающее их предсказание на основе вспомогательных изображений. Вспомогательное изображение может предсказываться с использованием основного изображения, но при этом могут присутствовать ограничения, запрещающие подобное предсказание, например, в зависимости от значения Auxld.
Сообщения SEI могут применяться для передачи более детализированных характеристик уровней вспомогательных изображений, например, диапазона глубины, представленного вспомогательным уровнем глубины. Текущий проект расширения MV-HEVC включает поддержку вспомогательных уровней глубины.
[0223] Могут применяться различные типы вспомогательных изображений включая, без ограничения перечисленным: изображений глубины, альфа-изображения, оверлейные изображения и маркерные изображения. В изображениях глубины значение каждого отсчета представляет собой диспарантность между точкой зрения (или положением камеры) изображения глубины, или глубину (дистанцию). В альфа-изображениях (которые также называют альфа-слоями или матирующими альфа-изображениями) значение каждого отсчета является представлением прозрачности или непрозрачности. Альфа-изображения могут указывать, для каждого пикселя, степень прозрачности, или, что эквивалентно, степень непрозрачности. Альфа-изображения могут быть монохромными, или составляющие цветности в альфа-изображениях могут быть назначены таким образом, чтобы указывать на отсутствие цветности (например, равны 0, когда значения отсчетов цветности интерпретируют как имеющие знак, или 128, когда значения пикселей цветности являются 8-битными без знака). Оверлейные изображения могут накладываться поверх основных изображений при их отображении. Оверлейные изображения могут содержать несколько областей и фон, при этом все области, или их подмножество, могут иметь наложение при отображении, а для фона наложение не выполняется. Маркерные изображения содержат различные маркеры для различных областей наложения, которые могут применяться для идентификации отдельных областей наложения.
[0224] Продолжим рассмотрение одного из примеров спецификации семантики фрагмента набора VPS, предложенного в настоящем изобретении: Синтаксический элемент view_id_len определяет длину синтаксического элемента view_id_val[i] в битах. Синтаксический элемент view_id_val[i] определяет идентификатор i-го ракурса, заданного набором VPS. Длина синтаксического элемента view_id_val[i] равна view_idjen бит. Если синтаксический элемент view_id_val[i] отсутствует, его значение принимают равным 0. Для каждого уровня, nuh_layer_id которого равен nuhLayerld, значение Viewld[nuhLayerld] ghbybvf.n равным view_id_val[ViewOrderldx[ nuhLayerld]].direct_dependency_flag[i][j], равный 0, определяет, что уровень с порядковым номером j не является прямым опорным уровнем для уровня с порядковым номером i. Флаг direct_dependency_flag[i][j], равный 1, определяет, что уровень с индексом j может быть прямым опорным уровнем для уровня с индексом i. Когда флаг direct_dependency_flag[i][j] отсутствует, для i и j в диапазоне от 0 до MaxLayersMinus_1, его принимают равным 0.
[0225] Для уточняющих уровней, или уровней, значение идентификатора уровня которых больше 0, может быть указано на то, что они содержат вспомогательные видеоданные, дополняющие базовый уровень или другие уровни. К примеру, в текущем проекте MV-HEVC вспомогательные изображения могут кодироваться в битовый поток с использованием уровней вспомогательных изображений. Уровень вспомогательных изображений связан с собственным значением масштабируемой величины, Auxld (аналогично, например, порядковому номеру ракурса). Уровни с Auxld большим 0 содержат вспомогательные изображения. Каждый уровень может содержать только один тип вспомогательных изображений, при этом тип вспомогательных изображений, включенных в уровень, может быть указан при помощи значения Auxld. Другими словами, значения Auxld могут быть поставлены во взаимно однозначное соответствие со вспомогательными изображениями. К примеру, Auxld, равный 1, может указывать на альфа-слои, a Auxld, равный 2, может указывать на изображения глубины. Вспомогательное изображение может быть определено как изображение, не обязательно влияющее на процедуру декодирования основных изображений. Другими словами, для основных изображений (Auxld которых равен 0) может быть введено ограничение, запрещающее их предсказание на основе вспомогательных изображений. Вспомогательное изображение может предсказываться с использованием основного изображения, но при этом могут присутствовать ограничения, запрещающие подобное предсказание, например, в зависимости от значения Auxld. Сообщения SEI могут применяться для передачи более детализированных характеристик уровней вспомогательных изображений, например, диапазона глубины, представленного вспомогательным уровнем глубины. Текущий проект расширения MV-HEVC включает поддержку вспомогательных уровней глубины.
[0226] Могут применяться различные типы вспомогательных изображений включая, без ограничения перечисленным: изображений глубины, альфа-изображения, оверлейные изображения и маркерные изображения. В изображениях глубины значение каждого отсчета представляет собой диспарантность между точкой зрения (или положением камеры) изображения глубины, или глубину (дистанцию). В альфа-изображениях (которые также называют альфа-слоями или матирующими альфа-изображениями) значение каждого отсчета является представлением прозрачности или непрозрачности. Альфа-изображения могут указывать, для каждого пикселя, степень прозрачности, или, что эквивалентно, степень непрозрачности. Альфа-изображения могут быть монохромными, или составляющие цветности в альфа-изображениях могут быть назначены таким образом, чтобы указывать на отсутствие цветности (например, равны 0, когда значения отсчетов цветности интерпретируют как имеющие знак, или 128, когда значения пикселей цветности являются 8-битными без знака). Оверлейные изображения могут накладываться поверх основных изображений при их отображении. Оверлейные изображения могут содержать несколько областей и фон, при этом все области, или их подмножество, могут иметь наложение при отображении, а для фона наложение не выполняется. Маркерные изображения содержат различные маркеры для различных областей наложения, которые могут применяться для идентификации отдельных областей наложения.
[0227] В расширениях SHEVC, MV-HEVC и/или аналогичных разрешениях для поддержки межуровневого предсказания текстуры не требуется изменений синтаксиса и процедур декодирования на уровне блоков. Необходима модификация (по сравнению со стандартом HEVC) только более высокоуровневого синтаксиса, что, в общем, означает синтаксические структуры, включающие заголовок слайса, наборы PPS SPS и VPS, чтобы восстановленные изображения (при необходимости, с повышением разрешения) из опорного уровня в одном блоке доступа могли использоваться в качестве опорных изображений для кодирования текущего изображения уточняющего уровня. Опорные изображения межуровневого предсказания, также как и опорные изображения временного предсказания, включают в списки опорных изображений. Сигнализируемый указатель на опорное изображение применяют для указания на то, что текущий блок предсказания (PU) может быть предсказан на основе опорного изображения временного предсказания или опорного изображения межуровневого предсказания. Применение такой функциональности может осуществляться под управлением декодера, а указания могут выполняться, например, в наборе видеопараметров, в наборе параметров последовательности, в одном из параметров изображения и/или в заголовке слайса. Указание (или указания) могут относиться, например, к конкретному уточняющему уровню, опорному уровню, к паре из уточняющего уровня и опорного уровня, к конкретным значениям Temporalld, к конкретным типам изображений (например, RAP-изображениям), к конкретным типам слайсов (например, P-слайсы или B-слайсы, но не I-слайсы), изображения с конкретными значениями POC и/или к конкретным блокам доступа. Область действия и/или длительность действия указания (или указаний), могут быть указаны вместе с самими указаниями и/или могут быть вычислены.
[0228] В расширениях SHVC, MV-HEVC и/или аналогичных разрешениях, список (или списки) опорных изображений могут инициализироваться с использованием специальной процедуры, в которой опорное изображение (или изображения) межуровневого предсказания, если таковое имеется, может быть включено в исходный список (или списки) опорных изображений, которые формируют описанным ниже образом. Например, опорные изображения временного предсказания могут сначала добавляться в списки (список 0, список 1) опорных изображений тем же образом, что и при построении списка опорных изображений в стандарте HEVC. После того, как добавлены опорные изображения временного предсказания, могут быть добавлены опорные изображения межуровневого предсказания. Опорные изображения межуровневого предсказания могут быть найдены, например, на основе информации о зависимостях уровней, предоставленной в расширении VPS. Опорные изображения межуровневого предсказания могут быть добавлены в исходный список 0 опорных изображений, если текущий слайс уточняющего уровня является P-слайсом, и могут быть добавлены в оба исходных списка 0 и 1 опорных изображений, если слайс текущего уточняющего уровня является B-слайсом. Опорные изображения межуровневого предсказания могут добавляться в списки опорных изображений в определенном порядке, который не обязательно должен быть одинаковым в обоих списках опорных изображений. Например, в исходном списке 1 опорных изображений, в отличие от исходного списка 0 опорных изображений, может применяться обратный порядок добавления опорных изображений межуровневого предсказания. К примеру, опорные изображения межуровневого предсказания могут вноситься в исходный список 0 опорных изображений в порядке возрастания идентификатора nuh_layer_id, тогда как для инициализации исходного списка 1 опорных изображений может использоваться обратный порядок.
[0229] В процессе кодирования и/или декодирования опорные изображения межуровневого предсказания могут рассматриваться как долгосрочные опорные изображения.
[0230] Один из типов межуровневого предсказания, который может называться межуровневым предсказанием движения, может быть реализован описанным ниже образом. Процедура предсказания временного вектора движения, например, TMVP в стандарте H.265/HEVC, может применяться с целью эксплуатации избыточности данных о движении между различными уровнями. Это может быть реализовано следующим образом: когда декодированное изображение базового уровня имеет повышенное разрешение, данные движения базового изображения также преобразуют к разрешению уточняющего уровня. Если для изображения уточняющего уровня применяют предсказание векторов движения на основе изображения базового уровня, например, с использованием такого механизма предсказания векторов движения, как TMVP в стандарте H.265/HEVC, соответствующее предсказание вектора движения получают на основе согласованного по разрешению поля движения базового уровня. Благодаря этому корреляция между данными о движении различных уровней может быть использована для повышения эффективности кодирования в масштабируемом видеокодере.
[0231] В расширении SHVC и/или аналогичных разрешениях межуровневое предсказание параметров движения может выполняться при помощи назначения опорного изображения межуровневого предсказания в качестве сорасположенного опорного изображения для вычисления TMVP-предсказания. Может выполняться процедура согласования полей движения между двумя уровнями, например, чтобы исключить необходимость модификации процедуры декодирования на уровне блока пикселей при вычислении TMVP. Применение функции согласования полей движения может осуществляться под управлением декодера, а указания в битовом потоке могут размещаться, например, в наборе видеопараметров, в наборе параметров последовательности, в одном из параметров изображения и/или в заголовке слайса. Указание (или указания) могут относиться, например, к конкретному уточняющему уровню, опорному уровню, к паре из уточняющего уровня и опорного уровня, к конкретным значениям Temporalid, к конкретным типам изображений (например, RAP-изображениям), к конкретным типам слайсов (например, P-слайсы или B-слайсы, но не I-слайсы), изображения с конкретными значениями POC и/или к конкретным блокам доступа. Область действия и/или длительность действия указания (или указаний), могут быть указаны вместе с самими указаниями и/или могут быть вычислены.
[0232] В процедуре согласования полей движения для пространственной масштабируемости на основе поля движения соответствующего изображения опорного уровня может быть получено поле движения опорного изображения межуровневого предсказания, имеющее повышенное разрешение. Параметры движения (которые могут включать, например, значение горизонтальной и/или вертикальной составляющей вектора движения и указатель на опорное изображение) и/или режим предсказания для каждого блока пикселей в имеющем повышенное разрешение опорном изображении межуровневого предсказания могут быть получены на основе соответствующих параметров движения и/или режима предсказания сорасположенного блока пикселей в изображении опорного уровня.
Размер блока пикселей, применяемого для вычисления параметров движения и/или режима предсказания в имеющем повышенное разрешение опорном изображении межуровневого предсказания, может составлять, например, 16×16. Тот же размер блока пикселей, 16×16, применяется в процедуре вычисления TMVP-предсказания в стандарте HEVC, где используется сжатое поле движение опорного изображения.
[0233] Межуровневое изменение разрешения
[0234] Кодер и/или декодер могут вычислять коэффициент горизонтального масштабирования (например, хранимый в переменной ScaleFactorX) и коэффициент вертикального масштабирования (например, хранимый в переменной ScaleFactorY) для каждой пары из уточняющего уровня и его опорного уровня, например, на основе смещений масштабированного опорного уровня для этой пары. Если один из коэффициентов или оба этих коэффициента не равны 1, разрешение изображения опорного уровня может быть изменено, в результате чего может быть сформировано опорное изображение для предсказания изображения уточняющего уровня. Процедура и/или фильтр, используемые для изменения разрешения могут быть заранее заданы, например, в стандарте кодирования, или могут быть указаны кодером в битовом потоке (например, в виде порядкового номера среди заранее заданных процедур или фильтров изменения разрешения) и/или декодированы декодером из битового потока. В зависимости от значений коэффициента масштабирования различные процедуры изменения разрешения могут быть указаны кодером и/или могут быть декодированы декодером, и/или могут быть вычислены кодером и/или декодером. К примеру, когда оба коэффициента масштабирования меньше 1, может быть сделан вывод о применении заранее заданной процедуры понижения разрешения, а когда оба коэффициента масштабирования больше 1, может делаться вывод о применении заранее заданной процедуры повышения разрешения. Дополнительно или альтернативно, в зависимости от обрабатываемого массива отсчетов, различные процедуры изменения разрешения могут быть указаны кодером и/или могут быть декодированы декодером, и/или могут быть вычислены кодером и/или декодером. К примеру, для массивов отсчетов яркости может делаться вывод о применении первой процедуры изменения разрешения, а для массивов отсчетов цветности может делаться вывод о применении второй процедуры изменения разрешения.
L
L
[0235] Ниже приведен один из примеров межуровневой процедуры изменения разрешения для получения отсчетов цветности с повышенным разрешением. Ссылку на входной массив отсчетов яркости, который может также называться массивом опорных отсчетов яркости, выполняют с помощью переменной rlPicSampleL. Значения отсчетов яркости с измененным разрешением получают для всех местоположений отчетов яркости (хр, yp) относительно верхнего левого отсчета яркости в изображении уточняющего уровня. В результате этой процедуры формируют отсчет яркости с измененным разрешением, доступ к которому осуществляют при помощи переменной intLumaSample. В данном примере для процедуры изменения разрешения яркости используют 8-отводный фильтр с коэффициентами f [р, x], где p =0…15 и x=0…7. (В дальнейшем описании обозначение с использованием нижнего индекса и без него может использоваться взаимозаменяемо. Например, f может считаться идентичным fL.)
[0236] Значение интерполированного отсчета яркости IntLumaSample может быть вычислено за счет применения описанной далее последовательности шагов.
[0237] 1. Местоположение отсчета опорного уровня, соответствующее или сорасположенное с (xP, yP) может быть вычислено, например, на основе смещений масштабированного опорного уровня. Это местоположение отсчета опорного уровня обозначают (xRef16, yRef16 ), при этом оно имеет точность в 1/16-ю отсчета.
[0238] 2. Переменные xRef и xPhase вычисляют следующим образом:
xRef=(xRefl6»4)
xPhase=(xRef16)%16,
где операция "»" представляет собой операцию битового сдвига вправо, т.е. арифметический сдвиг вправо двух комплементарных представлений целого числа x с использованием у двоичных цифр. Эта функция может быть определена только для неотрицательных целых значений y. Биты, выдвигаемые в MSB (most significant bits, старшие биты) в результате сдвига вправо, имеют значение, равное старшему биту x до операции сдвига. Операция "%" представляет собой операцию деления по модулю, т.е. операцию взятия остатка от целочисленного деления x на у, определенную только для целых значений x и y, причем x >= 0 и y > 0.
[0239] 3. Переменные yRef и у Phase вычисляют следующим образом:
yRef=(yRef16»4)
yPhase = (yRef16)%16.
[0240] 4. Переменные shift1, shift2 и offset вычисляют следующим образом:
shift1=RefLayerBitDepthY-8
shift2=20-BitDepthY
offset=1«(shift2-1),
где RefLayerBitDepthY - количество бит в каждом отсчете яркости опорного уровня. BitDepthY - количество бит в каждом отсчете яркости уточняющего уровня. Операция "«" представляет собой операцию битового сдвига влево, т.е. арифметический сдвиг влево двух комплементарных представлений целого числа x с использованием y двоичных цифр. Эта функция может быть определена только для неотрицательных значений y. Биты, выдвигаемые в младший бит (LSB, least significant bits) в результате левого сдвига, имеют значение, равное 0.
[0241] 5. Значение отсчета tempArray[n], где n=0…7, вычисляют следующим образом:
где RefLayerPicHeightlnSamplesY - высота изображения опорного уровня в отсчетах яркости. Переменная RefLayerPicWidthlnSamplesY определяет ширину изображения опорного уровня в отсчетах яркости.
[0242] 6. Интерполированное значение отсчета яркости intLumaSample вычисляют следующим образом:
[0243] Межуровневая процедура изменения разрешения, в результате которой получают значения отсчетов цветности с измененным разрешением, может быть определена идентично или аналогично описанной выше процедуре для значения отсчетов яркости. Например, в отличие от отсчетов яркости для отсчетов цветности может использоваться фильтр с другим количеством отводов.
[0244] Изменение разрешения может выполняться, например, для каждого отдельного изображения (для изображения опорного уровня в целом или для его некоторой области, изменение которой требуется изменить), для каждого отдельного слайса (например, для области опорного уровня, соответствующей слайсу уточняющего уровня) или для каждого отдельного блока (например, для области опорного уровня, соответствующей блоку с древообразной структурой кодирования уточняющего уровня). Изменение разрешения изображения опорного уровня для заданной области (например, изображения слайса или блока с древообразной структурой кодирования в изображении опорного уровня) может, например, быть выполнено при помощи циклического прохода по всем местоположениям отсчетов в заданной области и выполнения процедуры изменения разрешения для каждого отдельного отсчета в каждом местоположении. Однако нужно понимать, что существуют и другие возможности для изменения разрешения заданной области, например, для фильтрации некоторых из местоположений отсчетов могут применяться значения переменных из предшествующих местоположений отсчетов.
[0245] При одном из типов масштабируемости, которая может называться чересстрочно-прогрессивной масштабируемостью или масштабируемостью типа «поле-кадр», исходные кодированные чересстрочные данные базового уровня уточняют с использованием уточняющего уровня, который представляет прогрессивные исходные данные. Кодированные чересстрочные данные в базовом уровне могут содержать кодированные поля, кодированные кадры, представляющие пары полей, или их комбинацию. При чересстрочно-прогрессивной масштабируемости разрешение изображения базового уровня может быть изменено таким образом, чтобы оно подходило в качестве опорного изображения для одного или более изображений уточняющего уровня.
[0246] При чересстрочно-прогрессивной масштабируемости может также применяться изменение разрешения декодированного изображения опорного уровня, являющегося представлением исходных чересстрочных данных. Кодер может указывать на дополнительное фазовое смещение, которое зависит от того, выполняется ли изменение разрешения для верхнего поля или для нижнего поля. Декодер может принимать и декодировать это дополнительное фазовое смещение. Альтернативно, кодер и/или декодер может вычислять дополнительное фазовое смещение, например, на основе указания, какое (или какие) из полей представлены изображениями базового уровня и уточняющего уровня. К примеру, в зависимости от некоторого условия, в заголовок слайса уточняющего уровня может включаться флаг phase_position_flag[RefPicLayerld[i]]. Когда флаг phase_position_flag[RefPicLayerld[i]] отсутствует, он может приниматься равным 0. Флаг phase_position_flag[ RefPicLayerld[i] может определять фазовое смещение в вертикальном направлении между текущим изображением и изображением опорного уровня, чей nuh_layer_id равен RefPicLayerldf[i], и которое используют в процедуре вычисления местоположения отсчетов опорного уровня. Это дополнительное фазовое смещение может учитываться, например, в описанной выше межуровневой процедуре изменения разрешения, а именно, при вычислении переменной yPhase. Переменная yPhase может быть обновлена до значения yPhase+(phase_position_flag[RefPicLayerld[i]]«2).
[0247] При изменении разрешения, которое может применяться к восстановленным или декодированным изображениям базового уровня с целью получения опорных изображений для межуровневого предсказания, фильтрация, меняющая разрешение, может пропускать каждую вторую строку. Аналогично, изменение разрешения может включать шаг децимации, на котором, перед шагом фильтрации, выполняемым с целью изменения разрешения, исключают каждую вторую строку отсчетов. В более общем случае кодером, или другим элементом, например, мультиплексором битового потока, может быть указан или вычислен коэффициент вертикальной децимации, - при помощи одного или более указаний. Упомянутые одно или более указаний могут, например, располагаться в заголовках слайсов уточняющего уровня, в префиксных NAL-блоках базового уровня, в NAL-блоках уточняющего уровня (или аналогичных им блоках), инкапсулированных в битовом потоке базового уровня, в NAL-блоках базового уровня (или аналогичных им блоках), инкапсулированных в битовом потоке уточняющего уровня, в метаданных файла или метаданных для файла, который содержит базовый уровень и/или уточняющий уровень, или ссылается на них, и/или в метаданных протокола связи, например, в дескрипторах транспортного потока MPEG-2. Упомянутые одно или более указаний могут выполняться для каждого отдельного изображения, если базовый уровень может содержать комбинацию кодированных полей и пар полей, кодированных в виде кадров, являющих представлением чересстрочных исходных данных. Альтернативно или дополнительно, упомянутые одно или более указаний могут относиться к конкретному моменту времени и/или к паре из уточняющего уровня и его опорного уровня. Альтернативно или дополнительно, упомянутые одно или более указаний могут относиться к конкретному моменту времени и/или к паре из уточняющего уровня и его опорного уровня (и могут указываться для последовательности изображений, например, для кодированной видеопоследовательности). Упомянутые одно или более указаний могут быть, например, флагом vert_decimation_flag в заголовке слайса, который может принадлежать опорному уровню. На основе этого флага может вычисляться переменная, например, переменная VertDecimationFactor может вычисляться на основе флага следующим образом: значение переменной VertDecimationFactor может назначаться равным vert_decimation_flag+1. Декодер или другой элемент, например, демультиплексор битового потока, могут принимать и декодировать упомянутые одно или более указаний, и получать коэффициент вертикальной децимации, и/или они могут вычислять коэффициент вертикальной децимации. Коэффициент вертикальной децимации может, например, быть вычислен на основе информации о том, является ли изображение базового уровня полем или кадром, а также о том, является ли изображение уточняющего уровня полем или кадром. Когда определено, что изображение базового уровня - это кадр, который содержит пару полей, являющихся представлением чересстрочных исходных видеоданных, и определено, что соответствующее изображение уточняющего уровня - это кадр, являющийся представлением прогрессивных исходных видеоданных, коэффициент вертикальной децимации может быть принят равным 2, т.е. указывать на то, что при изменения разрешения должна быть обработана каждая вторая строка отсчетов декодированного изображения уточняющего уровня (например, его массив отсчетов яркости). Когда определено, что изображение базового уровня - это поле, и определено, что соответствующее изображение уточняющего уровня - это кадр, являющийся представлением прогрессивных исходных данных, коэффициент вертикальной децимации может быть принят равным 1, т.е. указывать на то, что при изменении разрешения должны быть обработаны все строки отсчетов декодированного изображения уточняющего уровня (например, его массив отсчетов яркости).
[0248] Коэффициент вертикальной децимации, который далее представлен переменной VertDecimationFactor, может применяться при изменения разрешения, например, в соответствии с приведенным ниже описанием, для ранее описанной процедуры межуровневой изменения разрешения. В фильтрации будут принимать участие только те строки отсчетов изображения уточняющего уровня, которые находятся на расстоянии VertDecimationFactor друг от друга. В шаге 5 процедуры изменения разрешения переменная VertDecimationFactor может, аналогично, применяться описанным ниже образом.
[0249] 5. Значение отсчета tempArray[n], где n=0…7, вычисляют следующим образом:
где RefLayerPicHeightlnSamplesY - высота изображения опорного уровня в отсчетах яркости. Переменная RefLayerPicWidthlnSamplesY представляет собой ширину изображения опорного уровня в отсчетах яркости.
[0250] Пропускаемое изображение может быть определено как изображение уточняющего уровня, для которого применяют только межуровневое предсказание и для которого не кодируют ошибку предсказания. Другим словами, для пропускаемых изображений не используют ни внутреннее предсказание, ни внешнее предсказание (внутри одного уровня). В стандарте MV-HEVC/SHVC указание на использование пропускаемых изображений может быть выполнено с помощью флага higherjayer_irap_skip_flag в информации VUI набора VPS, который может быть определен следующим образом: флаг higher_layer_irap_skip_flag, равный 1, указывает на то, что для каждого IRAP-изображения, ссылающегося на набор VPS, для которого имеется другое изображение в том же блоке доступа с меньшим значением nuh_layer_id, применяются следующие ограничения:
Для всех слайсов IRAP-изображения:
- тип слайса должен быть равен P;
- оба флага sao_luma_flag и slice_sao_chroma слайса должны быть равны 0, - синтаксический элемент five_minus_max_num_merge_cand должен быть равен 4; - флаг weighted_pred_flag должен быть равен 0 в наборе PPS, на который ссылаются слайсы;
Для всех блоков кодирования IRAP-изображения:
- флаг cu_skip_flag[i][j] должен быть равен 1;
- флаг higher_layer_irap_skip_flag, равный 0, указывает на то, что применение описанных выше ограничений не является обязательным.
[0251 ] Масштабируемость с гибридным кодеком
[0252] Одним из типов масштабируемости при масштабируемом видеокодировании является масштабируемость стандарта кодирования, которая может также называться масштабируемостью с гибридным кодеком. При масштабируемости с гибридным кодеком синтаксис, семантика и процедура декодирования для базового уровня и уточняющего уровня определены различными стандартами видеокодирования. Например, базовый уровень может кодироваться в соответствии с одним стандартом кодирования, таким как H.264/AVC, а уточняющий уровень может кодироваться в соответствии с другим стандартом кодирования, таким как MV-HEVC/SHVC. Таким образом, один и тот же битовый поток может декодироваться как традиционными Н.264/AVC-системами, так и системами на основе HEVC.
[0253] В более общем случае при масштабируемости с гибридным кодеком один или более уровней могут кодироваться согласно одному стандарту или спецификации кодирования, и еще один или более уровней могут кодироваться согласно другому стандарту или спецификации кодирования. Например, могут присутствовать два уровня, кодированные согласно расширению MVC стандарта H.264/AVC (из которых один является базовым уровнем, кодированным согласно стандарту H.264/AVC), и могут присутствовать один или более дополнительных уровней, кодированных согласно расширению MV-HEVC. При этом количество стандартов или спецификаций кодирования при масштабируемости с гибридным кодеком, согласно которым кодируют различные уровни одного битового потока, не обязательно ограничены двумя.
[0254] Масштабируемость с гибридным кодеком может применяться совместно с другими типами масштабируемости, например, временной масштабируемости, масштабируемости качества, пространственного разрешения, многоракурсной масштабируемости, масштабируемости с уточнением глубины, вспомогательных изображений, битовой глубины, цветового охвата, формата цветности и/или ROI-масштабируемости. Поскольку масштабируемость с гибридным кодеком может применяться совместно с другими типами масштабируемости, можно считать, что она создает другую классификацию типов масштабируемости.
[0255] Указание на применение масштабируемости с гибридным кодеком может выполняться, например, в битовом потоке уточняющего уровня. Например, в стандартах MV-HEVC, SHVC и/или аналогичных стандартах указание на применение масштабируемости с гибридным кодеком может выполняться в наборе VPS. Например, может использоваться следующий синтаксис набора VPS:
[0256] Семантика vps_base_layer_internal_flag может быть определена следующим образом:
флаг vps_base_layer_internal_flag, равный 0, определяет, что базовый уровень предоставлен при помощи внешних средств, не определенных в стандартах MV-HEVC, SHVC и/или аналогичном стандарте, а флаг vps_base_layer_internal_flag, равный 0, определяет, что базовый уровень предоставлен внутри битового потока.
[0257] Во многих системах обмена видеоинформацией или передачи видеоинформации, транспортных механизмах и форматах мультимедийных контейнерных фалов имеются механизмы для передачи или хранения базового уровня отдельно от уточняющего уровня или уровней. Можно считать, что уровни хранят или передают по отдельным логическим каналам. Ниже будут рассмотрены соответствующие примеры.
- Базовый формат медиафайлов стандарта ISO (ISOBMFF, международный стандарт ISO/IEC 14496-12): базовый уровень может храниться в виде трека, а все уточняющие уровни могут храниться в других треках. Аналогично, в случае масштабируемости с гибридным кодеком базовый уровень, кодированный не в соответствии с HEVC, может храниться в виде трека (например, с типом записи сэмпла 'avcl'), тогда как уточняющий уровень (или уровни) могут храниться в виде другого трека, который связан с треком базового уровня при помощи так называемых трековых ссылок.
- Транспортный протокол реального времени (Real-time Transport Protocol, RTP): для логического разделения различных уровней могут использоваться мультиплексирование сеанса RTP или мультиплексирование источника синхронизации (synchronization source, SSRC).
- Транспортный поток (TS) MPEG-2: каждый уровень может иметь отличающее значение идентификатора пакета (PID).
[0258] Во многих системах обмена или передачи видеоинформации, транспортных механизмах и форматах контейнерных медиафайлов обеспечены средства для связывания кодированных данных различных логических каналов, например, различных треков или сеансов, друг с другом. Например, существуют механизмы для связывания друг с другом кодированных данных одного блока доступа. К примеру, в формате контейнерного файла или в транспортном механизме могут предоставляться времена декодирования или вывода, и при этом кодированные данные с одинаковыми временами декодирования или вывода могут рассматриваться как образующие блок доступа.
[0259] Существующие стандарты для форматов медиафайлов включают базовый формат медиафайла стандарта ISO (ISO/IEC 14496-12, который имеет аббревиатуру ISOBMFF), формат файлов MPEG-4 (ISO/IEC 14496-14, также называемый форматом МР4), формат файлов для видео со структурой из NAL-блоков (ISO/IEC 14496-15) и формат файлов 3 GPP (3 GPP TS 26.244, также известный под называнием формата 3GP). Формат файлов ISO является базовым для получения всех упомянутых выше форматов файла (за исключением собственно формата файлов ISO). Эти форматы файлов (включая собственно формат файлов ISO) называют семейством форматов файлов ISO.
[0260] Ниже будут описаны некоторые из понятий, структур и спецификаций ISOBMFF, в качестве примера формата контейнерного файла, на основе которого могут быть реализованы варианты осуществления настоящего изобретения. Аспекты настоящего изобретения не ограничены стандартом ISOBMFF, напротив, данное описание приведено исключительно в качестве базы для частичной или полной реализации настоящего изобретения.
[0261] Элементарная единица построения базового формата медиафайлов ISO называется «боксом» (box). Каждый бокс имеет заголовок и полезную нагрузку. В заголовке бокса указывают тип бокса и размер бокса, выраженный в байтах. Бокс может включать внутри себя другие боксы, при этом в формате файлов ISO определены типы боксов, которые могут находиться внутри бокса каждого типа. При этом, также, некоторые боксы должны присутствовать в каждом файле обязательно, тогда как другие боксы могут быть опциональными. В дополнение, для боксов некоторого типа, допустимо наличие нескольких экземпляров бокса в одном файле. Таким образом, в базовом формате медиафайлов ISO по существу определена иерархическая структура боксов.
[0262] В соответствии с форматом файлов семейства ISO файл включает мультимедийные данные и метаданные, инкапсулированные в боксах. Каждый бокс идентифицируют при помощи четырехсимвольного кода (4СС), и при этом каждый бокс начинается с заголовка, который несет информацию о типе и размере бокса.
[0263] В файлах, соответствующих базовом формату медиафайлов ISO мультимедийные данные могут располагаться в боксе мультимедийных данных mdat, а для размещения метаданных может использоваться бокс фильма moov. В некоторых случаях для того, чтобы файл мог быть обработан, обязательно должны присутствовать оба указанных бокса, бокс mdat и бокс moov. Бокс фильма (moov) может содержать один или несколько треков («дорожек»), при этом каждый трек занимает один соответствующий бокс трека (trak). Трек может иметь один из множества различных треков, включая мультимедийный трек, который представляет собой сэмплы (фрагменты видеоинформации), отформатированные согласно формату сжатия мультимедийных данных (и правилам его инкапсуляции в базовый формат медиафайлов ISO). Можно считать, что трек является логическим каналом.
[0264] Каждый трек связан с указателем, идентифицируемым четырехсимвольным кодом, который определяет тип трека. Треки видео-, аудиопоследовательности и последовательности изображений могут называться мультимедийными треками, при этом они содержат элементарный поток мультимедийных данных. Другие типы треков включают треки указаний и треки синхронизированных метаданных. Треки содержат сэмплы, например, аудио- или видеокадры. Мультимедийный трек представляет собой сэмплы (которые могут также называться мультимедийными сэмплами), отформатированные согласно формату сжатия мультимедийных данных (и правилам его инкапсуляции в базовый формат медиафайлов ISO). Мультимедийный трек представляет собой сэмплы указаний, содержащие инструкции по формированию пакетов для передачи по указанному протоколу связи. Такие инструкции могут содержать указания по формированию заголовка пакета и указания по формированию полезной нагрузки пакета. При формировании полезной нагрузки пакета могут осуществляться ссылки на данные, расположенные в других треках или в других элементах. То есть, например, могут выполняться указания на данные, размещенные в других треках или элементах, при помощи ссылки, указывающей, какой фрагмент данных в конкретном треке или в конкретном элементе должен, согласно инструкциям, быть скопирован в пакет в ходе процедуры формирования пакета. Трек синхронизированных метаданных может ссылаться на сэмплы, описывающие мультимедийные сэмплы или сэмплы указаний, на которые осуществлена ссылка. Для представления одного типа мультимедийных данных может быть выбран, как правило, один мультимедийный трек.
[0265] Фрагменты фильма могут использоваться, например, при записи содержимого в файлы ISO, к примеру, чтобы исключить потери данных в случае сбоя в приложении записи, нехватки объема памяти или возникновения других аварийных ситуаций. Без фрагментов фильма могут происходить потери данных, поскольку форматы файлов, как правило, требуют, чтобы все метаданные, например, бокс фильма, были записаны в одной непрерывной области файла. Также, при записи файла, может возникать нехватка объема памяти (например, память с произвольным доступом, RAM) для буферизации бокса фильма под доступный размер хранилища, а повторное вычисление содержимого бокса фильма при закрытии фильма может быть слишком медленным. Также, при этом, фрагменты фильма позволяют обеспечить одновременную запись и воспроизведение файла с использованием обычного анализатора файлов ISO. Также, при применении фрагментов фильма может требоваться меньшая длительность начальной буферизации при постепенной подгрузке файла, например, при одновременном приеме и воспроизведении файла, и при этом первый бокс фильма может быть меньше, по сравнению с файлом с тем же мультимедийными данными, но структурированным без использования фрагментов фильма.
[0266] Функциональность фрагментов фильма может обеспечивать возможность удобного разбиения метаданных, которые в противном случае размещались в боксе фильма с разбиением на несколько частей. Каждая часть может соответствовать определенному периоду времени трека. Другими словами, функциональность фрагментов фильма может давать возможность чередования метаданных и мультимедийных данных в файле.
Следовательно, размер бокса фильма может быть ограничен и могут быть реализованы описанные выше сценарии применения.
[0267] В некоторых из примеров мультимедийные сэмплы для фрагментов фильма могут располагаться в боксе mdat, как обычно, если они находятся в том же файле, что и бокс moov. Однако для метаданных фрагментов фильма может присутствовать бокс moof. Бокс moot может включать информацию для определенного интервала времени воспроизведения, который ранее был в боксе moov. Бокс moov может при этом сам являться полноценным «фильмом», однако при этом он может включать в дополнение бокс mvex, который указывает на то, какие фрагменты фильма следуют за ним в этом файле. Фрагменты фильма позволяют увеличить временную длительность презентации, связанной с боксом moov.
[0268] Внутри фрагмента фильма может присутствовать набор сегментов трека, включающий в себя любое количество (ноль и более) треков. Фрагменты трека, в свою очередь, могут включать в себя любое количество (ноль и более) отрезков (run) трека, каждый из которых (document) представляет собой непрерывную последовательность смежных сэмплов в этом треке. Внутри эти структур присутствует множество опциональных полей, которые могут иметь заданные по умолчанию значения. Метаданные, которые могут входить в бокс moof, могут быть ограничены подмножеством метаданных, допускающих включение в бокс moov, и в некоторых случаях могут кодироваться отличающимся образом. Подробная информация о боксах, которые могут входить в состав бокса moof приведена в спецификации базового формата медиафайлов ISO. Автономный (самодостаточный) фрагмент фильма может быть определен как фрагмент, состоящий из бокса moof и бокса mdat, которые следуют друг за другом в порядке файла, и в котором бокс mdat содержит сэмплы фрагмента фильма (метаданные для которого содержит бокс moof) и не содержит сэмплов каких-либо других фрагментов фильма (т.е. никаких других боксов moof).
[0269] Базовый формат медиафайлов ISO содержит три механизма для синхронизированных метаданных, которые могут быть связаны с конкретными сэмплами: группы сэмплов, треки синхронизированных метаданных и вспомогательная информация о сэмплах. Производные спецификации могут предоставлять аналогичную функциональность с использованием одного или более из этих трех механизмов.
[0270] Группирование сэмплов в базовом формате медиафайлов ISO и в производных от него форматах, таких как формат файлов AVC или формат файлов SVC, может быть определено как назначение каждого сэмпла в треке в качестве члена одной из групп сэмплов на основе критерия группирования. Группа сэмплов при группировании сэмплов не ограничена непрерывной последовательностью смежных сэмплов и может включать содержать сэмплы, не являющиеся соседними друг с другом. Поскольку сэмплы в треке могут группироваться более чем одним способом, каждая группа сэмплов может иметь поле типа, в котором указывают тип группирования. Группы сэмплов могут представлены двумя взаимосвязанными структурами данных: (1) бокс SampleToGroup (соответствия сэмпл-группа) (sgpd), который отражает назначения сэмплов в группы сэмплов; и (2) бокс SampleGroupDescription (описание группы сэмплов) (sgpd), который содержит запись группы сэмплов, описывающую свойства группы, для каждой группы сэмплов. Могут присутствовать несколько экземпляров боксов SampleToGroup и SampleGroupDescription для различных критериев группирования. Они могут отличаться полем типа, которое используют для указания на тип группирования.
[0271] Применение вспомогательной информации о сэмплах может быть необходимо, когда эта информация непосредственно и взаимно однозначно связана с сэмплами, при этом она может быть необходима для обработки и отображения мультимедийных сэмплов. Вспомогательная информация для каждого сэмпла может храниться в любом месте файла сэмплов, а также непосредственно в данных сэмпла. В случае автономных мультимедийных файлов таким местом может быть бокс mdat. Вспомогательная информация о сэмплах может храниться в виде множества фрагментов, при этом количество сэмплов в фрагменте, а также количество фрагментов, совпадает с фрагментацией исходных данных сэмплов, или может храниться в виде единого фрагмента для всех сэмплов в таблице сэмплов фильма (или фрагмента фильма). Вспомогательную информацию для всех сэмплов, содержащуюся в едином фрагменте (или части трека) хранят в виде единого блока (аналогично данных сэмплов). Вспомогательная информация сэмплов, когда она присутствует, может храниться в том же файле, что и сэмплы, к которым она относится, поскольку для них совместно используют одну или ту же структуру ссылок на данные (dref). Однако внутри этого файла подобные данные могут располагаться в любом месте, причем для указания на местоположение этих данных могут использоваться смещения вспомогательной информации (saio). Местоположение вспомогательной информации сэмплов может быть установлено с помощью двух боксов, бокса размеров вспомогательной информации сэмплов и бокса смещения вспомогательной информации сэмплов ('saio'). Для обоих этих боксов задают или вычисляют синтаксические элементы aux_info_type и aux_info_type_parameter (оба которых представляют собой 32-битные целые без знака, или, что эквивалентно, четырехсимвольные коды). Синтаксический элемент aux_info_type определяет формат вспомогательной информации, и при этом могут применяться несколько потоков вспомогательной информации, имеющих одинаковый формат, если их значение aux_info_type_parameter отличается. В боксе размеров вспомогательной информации сэмплов находится размер вспомогательной информации для каждого сэмпла, тогда как в боксе смещений вспомогательной информации сэмплов находится (начальное) местоположение (или местоположения) сплошных фрагментов треков со вспомогательной информацией сэмплов.
[0272] Формат файлов Matroska позволяет хранить (без ограничения перечисленным) любые видео-, аудиотреки, треки изображений или субтитров в одном файле. Формат Matroska может быть использован как основа для производных форматов файлов, таких как WebM. В качестве базы для формата Matroska использован расширяемый двоичный метаязык (Extensible Binary Meta Language, EBML). Язык EBML представляет собой двоичный формат с выравниванием по октетам (байтам), вдохновленный принципами языка XML. Язык EBML - это обобщенное описание метода разметки двоичных данных. Файл Matroska состоит из «элементов» (Elements), которые составляют «документ» на языке EBML. Элементы содержат идентификатор элемента, дескриптор размера элемента и собственно двоичные данные. Элементы могут быть вложенными. Сегментный элемент (Segment Element) в формате Matroska - это контейнер для других элементов верхнего уровня (уровня 1). Файл Matroska может содержать (не будучи при этом им ограниченным) один «сегмент» (Segment). Мультимедийные данные в файлах Matroska организованы в «кластеры» (Clusters) или «кластерные элементы» (Cluster Elements), каждый из которых, как правило, содержит несколько секунд мультимедийных данных. Каждый кластер содержит элементы BlockGroup («группа блоков»), которые, в свою очередь, содержат «блочные элементы» (Block Elements). Элементы-подсказки (Cues Element) содержат метаданные, которые могут быть вспомогательным средством при произвольном доступе или поиске и могут содержать файловые указатели на местоположение в файле или соответствующие временные метки для точек поиска.
[0273] Транспортный протокол реального времени (Real-time Transport Protocol, RTP) широко применяют для передачи синхронизированных мультимедийных данных в реальном времени, например, для передачи аудио- и видеоданных. Протокол RTP может работать на базе протокола пользовательских датаграмм (User Datagram Protocol, UDP), который, в свою очередь, может функционировать на основе протокола Интернета (Internet Protocol, IP). Протокол RTP определен в Рабочем предложении (Request for Comments, RFC) №3550 Инженерного совета Интернета (Internet Engineering Task Force, IETF), текст которого доступен по ссылке: www.ietf.org/rfc/rfc3550.txt. В транспортном протоколе RTP мультимедийные данные инкапсулируют в RTP-пакеты. Как правило, каждый тип мультимедийных данных или формат кодирования мультимедийных данных имеет отдельный формат полезной нагрузки RTP.
[0274] Сеанс протокола RTP представляет собой соединение между группой участников, осуществляющих связь при помощи протокола RTP. Он является каналом групповой связи, по которому, потенциально, может передаваться несколько RTP-потоков. RTP-поток представляет собой поток RTP-пакетов, содержащих мультимедийные данные. RTP-поток идентифицируется источником синхронизации, SSRC, принадлежащим конкретному RTP-сеансу. Сокращение SSRC относится либо к источнику синхронизации, либо к идентификатору источника синхронизации, то есть, 32-битному полю SSRC в заголовке RTP-пакета. Источник синхронизации характеризуется тем, что все пакеты от источника синхронизации являются частью одного пространства временных отсчетов и порядковых номеров, то есть, приемник, в целях воспроизведения, может группировать пакеты по источникам синхронизации. Примеры источников синхронизации включают передатчик потока пакетов, полученных от источника сигнала, такого как микрофон или камера, или RTP-микшер. Каждый RTP-поток идентифицируется SSRC, который уникален для внутри RTP-сеанса. RTP-поток может рассматриваться как логический канал.
[0275] RTP-пакет состоит из заголовка RTP-пакета и полезной нагрузки RTP-пакета. Полезную нагрузку можно рассматривать как включающую заголовок полезной нагрузки RTP и данные полезной нагрузки RTP, которые форматированы согласно применяемой спецификации формата полезной нагрузки RTP. В проекте формата полезной нагрузки для стандарта Н.265 (HEVC) определено, что заголовок полезной нагрузки RTP может быть расширен при помощи структуры расширения заголовка полезной нагрузки (payload header extension structure, PHES). Расширение PHES может рассматриваться как включаемое в состав структуры, аналогичной NAL-блоку, которая может называться «содержательной информацией полезной нагрузки» (payload content information, PACI) и появляется в качестве первого NAL-блока внутри данных полезной нагрузки RTP. Когда применяют такой механизм расширения заголовка полезной нагрузки, то полезную нагрузку RTP-пакета рассматривают как включающую заголовок полезной нагрузки, структуру расширения заголовка полезной нагрузки (PHES) и полезную нагрузку PACI. Полезная нагрузка PACI может включать NAL-блоки или аналогичные им структуры, например, блоки фрагментации (содержащие части NAL-блоков), или группу (или набор) из нескольких NAL-блоков. Полезная нагрузка PACI - это расширяемая структура, которая при определенных условиях может содержать различные расширения, что управляется флагами присутствия в заголовке PACI. Проект полезной нагрузки для Н.265 (HEVC) определяет одно расширение PACI, называемое «управляющей информацией временной масштабируемости» (Temporal Scalability Control Information). Полезная нагрузка RTP позволяет задать порядок декодирования входящих в ее состав блоков данных (например, NAL-блоков), при помощи включения и/или вычисления для этих блоков данных порядкового номера декодирования (decoding order number, DON), или аналогичного параметра, указывающего на порядок декодирования.
[0276] Представляется полезным формат, который бы позволял инкапсулировать NAL-блоки и/или другие блоки кодированных данных двух или более стандартов или систем кодирования в один битовый поток, байтовый поток, поток NAL-блоков или аналогичную структуру. Такой подход может носить название инкапсулированной масштабируемости с гибридным кодеком. В дальнейшем описании рассмотрены механизмы включения NAL-блоков AVC и NAL-блоков HEVC в один поток NAL-блоков. Нужно понимать, что эти механизмы аналогичным образом могут быть реализованы для других кодированных блоков данных, вместо NAL-блоков, для формата битового или байтового потока и для любых стандартов или систем кодирования. В приведенном ниже описании допущено, что базовый уровень кодируется при помощи AVC, а уточняющий уровень - при помощи одного из расширений HEVC, например, SHVC или MV-HEVC. Нужно понимать, что эти механизмы могут быть аналогичным образом реализованы, если к первому стандарту или системе кодирования, например, AVC или его расширению MVC, относятся более одного уровня, и/или если ко второму стандарту кодирования также относится более одного уровня. Аналогично, нужно понимать, что эти механизмы могут быть реализованы, если урони относятся более чем к двум стандартам кодирования. К примеру, базовый уровень может кодироваться при помощи AVC, уточняющий уровень может кодироваться при помощи MVC и являться представлением небазового вида, и при этом один или оба из этих уровней могут уточняться с использованием уровня пространственной масштабируемости или масштабируемости качества, кодированного с помощью SHVC.
[0277] Варианты для формата потока NAL-блоков, в который инкапсулируют одновременно NAL-блоки AVC и HEVC, включают, без ограничения перечисленным, перечисленные ниже варианты.
[0278] NAL-блоки AVC могут размещаться в потоке NAL-блоков, отвечающему стандарту HEVC. Для указания на NAL-блок AVC могут быть определены один или более типов NAL-блоков, которые могут быть названы AVC-контейнерными NAL-блоками, среди значений nal_unit_type, определенных в стандарте HEVC. NAL-блок AVC, который может включать заголовок NAL-блока AVC, может затем быть включен в состав полезной нагрузки NAL-блока в AVC-контейнерном NAL-блоке.
[0279] NAL-блоки HEVC могут размещаться в потоке NAL-блоков, отвечающем стандарту AVC. Для указания на NAL-блок HEVC могут быть определены один или более типов NAL-блоков, которые могут быть названы HEVC-контейнерными NAL-блоками, среди значений nal_unit_type, определенных в стандарте HEVC. NAL-блок HEVC, который может включать заголовок NAL-блока HEVC, может затем быть включен в состав полезной нагрузки NAL-блока в HEVC-контейнерном NAL-блоке.
[0280] Вместо включения блоков данных первого стандарта или системы кодирования, в битовом потоке, байтовом потоке, потоке NAL-блоков или аналогичной структуре второго стандарта или системы кодирования, могут выполняться ссылки на блоки данных первого стандарта кодирования. В дополнение к этому в битовом потоке, байтовом потоке, потоке NAL-блоков или аналогичной структуре второго стандарта или системы кодирования могут предоставляться свойства блоков данных первого стандарта кодирования. Эти свойства могут относиться к операциям маркировки, обработки и буферизации декодированных опорных изображений, которые могут быть частью операций декодирования, кодирования и/или HRD-декодирования. Альтернативно или дополнительно, эти свойства могут относиться к задержкам буферизации, например, к задержкам буферизации в буферах СРВ и DPB, и/или к синхронизации HRD, например, к временам удаления из СРВ и т.п. Альтернативно или дополнительно, эти свойства могут относиться к идентификации изображений или к связи с блоками доступа, например, к порядковому номеру изображения. Эти свойства могут давать возможность обрабатывать декодированные изображения первого стандарта или системы кодирования в процедуре декодирования и/или HRD-декодирования второго стандарта декодирования таким образом, как будто декодируемые изображения декодируются согласно второму стандарту кодирования. Например, эти свойства могут давать возможность обрабатывать декодированное изображение базового уровня AVC в процедуре декодирования и/или HRD-декодирования SHVC или MV-HEVC, как если бы декодированное изображение было изображением базового уровня HEVC.
[0281] Представляется желательным определение интерфейса для процедуры декодирования, который бы обеспечивал возможность предоставления одного или более декодированных изображений, подходящих для использования в качестве опорных в процедуре декодирования. Такой подход может носить название неинкапсулированной масштабируемости с гибридным кодеком. В некоторых случаях процедура декодирования представляет собой процедуру декодирования уточняющего уровня, в соответствии с которой могут декодироваться один или более уточняющих уровней. В некоторых случаях процедура декодирования представляет собой процедуру декодирования подуровня, в соответствии с которой могут декодироваться один или более уточняющих подуровней. Упомянутый интерфейс может быть определен, например, при помощи одной или более переменных, значения которых могут быть заданы при помощи внешних средств, например, при помощи управляющей логики медиапроигрывателя или декодера. При неинкапсулированной масштабируемости с гибридным кодеком базовый уровень может называться внешним базовым уровнем, это означает, что базовый уровень является внешним по отношению к битовому потоку уточняющего уровня (который может также называться битовым потоком EL). Внешний базовый уровень битового потока уточняющего уровня, соответствующего расширению HEVC, может быть назван не-HEVC базовым уровнем.
[0282] При неинкапсулированной масштабируемости с гибридным кодеком связывание декодированного изображения базового уровня с блоком доступа в декодере или битовом потоке уточняющего уровня реализуют при помощи средств, которые могут быть не определены в спецификации декодирования и/или битового потока уточняющего уровня. Такое связывание может быть реализовано, например, с помощью одного или более из описанных ниже средств (но без ограничения перечисленным).
[0283] Может выполняться указание на время декодирования и/или время отображения, с использованием, например, метаданных формата контейнерного файла и/или заголовков протокола передачи. В некоторых случаях изображение базового уровня может считаться связанным с изображением уточняющего уровня, если время их отображения идентично. В некоторых случаях изображение базового уровня может считаться связанным с изображением уточняющего уровня, если время их декодирования идентично.
[0284] Может применяться структура, аналогичная NAL-блоку, которую включают, в основной полосе, в битовый поток уточняющего уровня. Например, в битовых потоках MV-HEVC/SHVC могут применяться структуры, аналогичные NAL-блоку, nal_unit_type которых находится в диапазоне от UNSPEC48 до UNSPEC55 включительно. Такие структуры, аналогичные NAL-блоку, могут идентифицировать изображение базового уровня, связанное с блоком доступа уточняющего уровня, который содержит данную структуру, аналогичную NAL-блоку. К примеру, в файле, полученном на основе базового формата медиафайлов ISO, некоторая структура, например, «экстрактор» (или «экстракторный NAL-блок»), определенная в стандарте ISO/IEC 14496-15, может содержать ссылку на нумерованный трек (для указания на трек, содержащий базовый уровень) и разницу времен декодирования (для указания на местоположение сэмпла формата файла в треке базового уровня относительно времени декодирования текущего сэмпла формата файла в треке уточняющего уровня). Экстрактор, определенный в стандарте ISO/IEC 14496-15, включает указание на диапазон байт из сэмпла трека, на которые осуществляют ссылку (например, трека с базовым уровнем) при помощи ссылки на трек, содержащий экстрактор. В другом примере, структура, аналогичная NAL-блоку, включает идентификатор кодированной видеопоследовательности базового уровня, например, значение idr_pic_id в стандарте H.264/AVC, и идентификатор изображения в кодированной видеопоследовательности базового уровня, например, значение frame_num или POC в стандарте H.264/AVC.
[0285] Могут применяться метаданные протокола и/или формата файла, которые могут быть связаны с конкретным изображением уточняющего уровня. К примеру, в качестве дескриптора транспортного потока MPEG-2 может быть включен идентификатор изображения базового уровня, при этом такой дескриптор может быть связан с битовым потоком уточняющего уровня.
[0286] Метаданные протокола и/или формата файла могут быть связаны с изображениями базового уровня и уточняющего уровня. Когда метаданные для изображений базового уровня и уточняющего уровня совпадают, может быть сделан вывод о том, что они принадлежат одному моменту времени или блоку доступа. Например, может применяться кроссуровневый идентификатор блока доступа, при этом значение идентификатора блока доступа должно отличаться от значений других кроссуровневых идентификаторов блока доступа в определенном диапазоне или объеме данных, в порядке декодирования или в порядке битового потока.
[0287] Существуют по меньшей мере два подхода для обработки выходных данных декодированных изображений базового уровня при масштабируемости с гибридным кодеком. В первом подходе, который может быть назван методом масштабируемости с гибридным кодеком с отдельным буфером DPB, декодер базового уровня отвечает за выходные данные декодированных изображений базового уровня. Декодер уточняющего уровня должен иметь один буфер для хранения декодированных изображений базового уровня (например, подбуфер-DPB, выделенный для базового уровня). После декодирования каждого блока доступа буфер хранения изображений базового уровня может очищаться. При втором подходе, который может быть назван методом масштабируемости с гибридным кодеком с разделяемым буфером DPB, выходные данные декодированных изображений базового уровня обрабатывают с помощью декодера уточняющего уровня, тогда как декодер базового уровня не должен выдавать изображения базового уровня. При подходе с разделяемым буфером DPB декодированные изображения базового уровня могут, по меньшей мере логически, располагаться в буфере DPB декодера уточняющего уровня. Подход с отдельным DPB-буфером может применяться как с инкапсулированной, так и с неинкапсулированной масштабируемостью с гибридным кодеком.
Аналогично, подход с разделяемым DPB-буфером может применяться как с инкапсулированной, так и с неинкапсулированной масштабируемостью с гибридным кодеком.
[0288] Для корректной работы DPB-буфера в случае масштабируемости с гибридным кодеком с разделяемым DPB-буфером (т.е. когда базовый уровень кодирован не в соответствии с HEVC), изображения базового уровня могут, по меньшей мере логически, буферизоваться при работе DPB-буфера масштабируемого битового потока, и при этом им могут быть назначены одно или более из следующих свойств, или аналогичные свойства:
1. NoOutputOfPriorPicsFlag (для IRAP-изображений);
2. PicOutputFlag;
3. PicOrderCntVal;
4. Набор опорных изображений.
[0289] Упомянутые свойства дают возможность обрабатывать изображения базового уровня при работе DPB-буфера аналогично изображениям любых других уровней. Например, когда базовый уровень кодирован при помощи AVC, а уточняющий уровень кодирован при помощи HEVC, упомянутые свойства дают возможность управлять функциональностью, связанной с базовым уровнем AVC, при помощи синтаксических элементов HEVC, описанных ниже.
- В некоторых наборах выходных уровней базовый уровень может находиться среди выходных уровней, тогда как в других наборах выходных уровней базовый уровень может и не выходить в их состав.
- Выходные данные изображения базового уровня AVC могут быть синхронизированы с выходными данными изображений других уровней в одном блоке доступа.
- Изображениям базового уровня может быть назначена информация, специфичная для операции вывода, например, флаги no_output_of_prior_pics_flag и pic_output_flag.
[0290] Интерфейс для неинкапсулированной масштабируемости с гибридным кодеком может передавать, без ограничения перечисленным, один или более из описанных ниже фрагментов.
- Указание на то, что присутствует изображение базового уровня, которое может использоваться для межуровневого предсказания некоторого изображения уточняющего уровня.
- Массив (или массивы) отсчетов декодированного изображения базового уровня.
- Формат представления декодированного изображения базового уровня, включая ширину и высоту в отсчетах яркости, формат цветности, битовую глубину яркости и битовую глубину цветности.
- Тип изображения или тип NAL-блока, связанный с изображением базового уровня. К примеру, указание на то, является ли изображение базового уровня IRAP-изображением, и если изображение базового уровня является IRAP-изображением, тип NAL-блока этого IRAP-изображение, который, к примеру, может указывать на IDR-изображение, CRA-изображение или BLA-изображение.
- Указание на то, является ли изображение кадром или полем. Если изображение является полем, указание на четность поля (верхнее поле или нижнее поле). Если изображение является кадром, указание на то, является ли кадр представлением комплементарной пары полей.
- Одно или более из следующего: NoOutputOfPriorPicsFlag, PicOutputFlag, PicOrderCntVal и набор опорных изображений, которые могут быть необходимы для масштабируемости с гибридным кодеком с разделяемым DPB-буфером.
[0291] В некоторых случаях изображения базового уровня, кодированные не в соответствии с HEVC, могут быть связаны с одним или более из упомянутых выше свойств. Такое связывание может быть выполнено при помощи внешних средств (вне формата битового потока) или при помощи указания на свойства в специальных NAL-блоках или SEI-сообщениях в битовом потоке HEVC, или при помощи указания на свойства в конкретных NAL-блоках или SEI-сообщениях в битовом потоке AVC. Такие специальные NAL-блоки в битовом потоке HEVC могут называться «NAL-блоками для инкапсуляции базового уровня», и аналогично, такие специальные SEI-сообщения в битовом потоке HEVC могут называться «SEI-сообщениями для инкапсуляции базового уровня». Такие специальные NAL-блоки в битовом потоке AVC могут называться «NAL-блоками для инкапсуляции уточняющего уровня», и аналогично, такие специальные SEI-сообщения в битовом потоке AVC могут называться «SEI-сообщениями для инкапсуляции уточняющего уровня». В некоторых случаях NAL-блоки для инкапсуляции базового уровня, входящие в состав битого потока HEVC, могут включать кодированные данные базового уровня. В некоторых случаях NAL-блоки для инкапсуляции уточняющего уровня, входящие в состав битого потока AVC, могут включать кодированные данные уточняющего уровня.
[0292] Значения некоторых синтаксических элементов и/или переменных, необходимых в процедуре декодирования и/или HRD-декодирования, в случае применения масштабируемости с гибридным кодеком, для декодированных изображений базового уровня могут быть вычисляемыми. К примеру, при декодировании уточняющего уровня на базе HEVC, nuh_layer_id декодированных изображений базового уровня могут приниматься равными 0, а порядковые номера декодированных изображений базового уровня могут приниматься равными порядковым номерам соответствующих изображений уточняющего уровня для того же момента времени или блока доступа. При этом Temporalld для внешнего изображения базового уровня может приниматься равным Temporalld других изображений в блоке доступа, с которым связано данное внешнее изображение базового уровня.
[0293] Контейнерное SEI-сообщение масштабируемости с гибридным кодеком может содержать одно или более SEI-сообщений HRD, например, SEI-сообщение с периодом буферизации (например, соответствующее H.264/AVC или HEVC) или SEI-сообщение синхронизации изображений (например, соответствующее H.264/AVC или HEVC).. Альтернативно или в дополнение, контейнерное SEI-сообщение масштабируемости с гибридным кодеком может содержать HRD-параметры, относящиеся к битовому потоку или последовательности, например, синтаксическую структуру hrd_parameters() стандарта H.264/AVC. Альтернативно или в дополнение, контейнерное SEI-сообщение масштабируемости с гибридным кодеком может содержать синтаксические элементы, часть которых может быть идентична или аналогична синтаксическим элементам в HRD-параметрах, относящихся к битовому потоку или последовательности (например, синтаксической структуре hrd_parameters() стандарта H.264/AVC) и/или в SEI-сообщении с периодом буферизации (например, соответствующее H.264/AVC или HEVC) или в SEI-сообщении синхронизации изображений (например, соответствующее H.264/AVC или HEVC). Нужно понимать, что SEI-сообщения или другие синтаксические структуры, которые могут быть вложенными в контейнерном SEI-сообщении масштабируемости с гибридным кодеком, не ограничены перечисленными выше примерами.
[0294] Контейнерное SEI-сообщение масштабируемости с гибридным кодеком может размещаться в битовом потоке базового уровня и/или в битовом потоке уточняющего уровня. Контейнерное SEI-сообщение масштабируемости с гибридным кодеком может включать синтаксические элементы, которые определяют уровни, подуровни, подмножества битового потока и/или фрагменты битового потока, к которым применимы вложенные SEI-сообщения.
[0295] Профиль и/или уровень стандарта базового уровня (и/или подобная информация о совместимости), применимая в случае, когда для масштабируемости с гибридным кодеком используют HRD-параметры базового уровня, может быть закодирована в специальное SEI-сообщение (и декодироваться из него), которое может быть названо SEI-сообщением с профилем и уровнем стандарта базового уровня. В соответствии с одним из вариантов осуществления настоящего изобретения профиль и/или уровень стандарта базового уровня (и/или подобная информация о совместимости), применимая с случае, когда для масштабируемости с гибридным кодеком используют HRD-параметры базового уровня, может быть закодирована в специальное SEI-сообщение, синтаксис и семантика которого зависят от формата кодирования базового уровня. Например, может быть определено SEI-сообщение с профилем и уровнем стандарта базового уровня AVC, в котором полезная нагрузка SEI-сообщения может содержать синтаксический элемент profile_idc для H.264/AVC, второй байт синтаксической структуры seq_parameter_set_data() H.264/AVC (которая может включать синтаксические элементы constraint_setX_flag, где X имеет значение в диапазоне от 0 до 5 включительно, а также reserverved_zero_2bits) и/или level_idc стандарта H.264/AVC.
[0296] SEI-сообщение (или сообщения) с инициализационными HRD-параметрами (или аналогичные им сообщения), SEI-сообщение (или сообщения) с периодом буферизации базового уровня (или аналогичные им сообщения), контейнерное SEI-сообщение (или сообщения) масштабируемости с гибридным кодеком (или аналогичные им сообщения) и/или SEI-сообщение (или сообщение) с профилем и уровнем стандарта базового уровня (или аналогичные им сообщения) могут быть включены в одну или более из описанных ниже синтаксических структур и/или механизмов (и/или могут быть декодированы из них).
Префиксные NAL-блоки (или аналогичные структуры), связанные с изображениями базового уровня внутри битового потока базового уровня.
NAL-блоки для инкапсуляции уточняющего уровня (или аналогичные структуры) внутри битового потока базового уровня.
- «Самостоятельные» (т.е. неинкапсулированные или неконтейнерные) SEI-сообщения внутри битового потока базового уровня.
SEI-сообщения с масштабируемой вложенностью (или аналогичные им сообщения) внутри битового потока базового уровня, при этом целевые уровни могут быть определены как включающие базовый уровень и уточняющий уровень.
NAL-блоки для инкапсуляции базового уровня (или аналогичные структуры) внутри битового потока уточняющего уровня.
- «Самостоятельные» (т.е. неинкапсулированные или неконтейнерные) SEI-сообщения внутри битового потока уточняющего уровня.
SEI-сообщения с масштабируемой вложенностью (или аналогичные им сообщения) внутри битового потока уточняющего уровня, при этом может быть определено, что целевым уровнем является базовый уровень.
Метаданные согласно формату файла, которые располагаются в файле, или на которые ссылается файл, включающий битовый поток базового уровня и битовый поток уточняющего уровня, или ссылающийся на них. Метаданные в протоколе связи, например, в дескрипторах транспортного потока MPEG-2.
[0297] Когда применяют масштабируемость с гибридным кодеком, первый мультиплексор битового потока может принимать на вход битовый поток базового уровня и битовый поток уточняющего уровня, и формировать мультиплексированный битовый поток, например, транспортный поток MPEG-2 или его часть. Альтернативно или дополнительно, второй мультиплексор битового потока (который может быть при этом скомбинирован с первым мультиплексором битового потока) может инкапсулировать блоки данных базового уровня, например, NAL-блоки, в блоки данных, например, NAL-блоки, битового потока уточняющего уровня. Альтернативно, второй мультиплексор битового потока может инкапсулировать блоки данных уточняющего уровня, например, NAL-блоки, в блоки данных, например, NAL-блоки, битового потока базового уровня.
[0298] Кодер или другой элемент, например, формирователь файлов, может принимать информацию о требуемых свойствах отображения различных кодируемых уровней, через интерфейс. Требуемые свойства отображения могут определяться, например, пользователем или пользователями, создающими контент, при помощи пользовательского интерфейса, настройки в котором впоследствии будут влиять на требуемые свойства отображения, которые кодер примет через интерфейс.
[0299] Кодер или другой элемент, например формирователь файлов, может определять требуемые свойства отображения на основе входных видеоданных и/или параметров кодирования. К примеру, если в качестве уровней на вход для кодирования поданы два ракурса, кодер может определить, что требуемыми свойствами отображения (или требуемым поведением при отображении) будет отображение этих ракурсов по отдельности (например, на стереоскопическом дисплее). В другом примере кодер принимает настройки кодирования, указывающие на то, что должен быть кодирован уточняющий уровень для некоторой области интереса. Кодер может, например, иметь эвристическое правило, определяющее, что если коэффициент масштабирования между уточняющим уровнем области интереса и его опорным уровнем (RL) меньше или равен некоторому пределу, например, 2, то требуемыми свойствами отображения будет наложение изображения уточняющего уровня поверх соответствующего изображения опорного уровня, разрешение которого требуется повысить.
[0300] На основе принятых и/или полученных другим образом свойств отображения кодер, или другой элемент, например, формирователь файлов, может кодировать указание на требуемые свойства отображения двух или более уровней в битовый поток, к примеру, в синтаксической структуре, относящейся к последовательности, например, наборе VPS и/или SPS (где это указание может располагаться в соответствующих частях информации VUI), или в виде информации SEI, например, в SEI-сообщении. Альтернативно или в дополнение, кодер или другой элемент, например, формирователь файлов, может кодировать указание на требуемые свойства отображения для двух или более уровней в контейнерный файл, который содержит кодированные изображения. Альтернативно или в дополнение, кодер или другой элемент, например, формирователь файлов, может кодировать указание на требуемые свойства отображения для двух или более уровней в информации описания, например, медиапараметрах MIME, SDP или MPD.
[0301] Декодер, или другой элемент, например, медиапроигрыватель или анализатор файлов, может декодировать указание на требуемые свойства отображения двух или более уровней из битового потока, к примеру, из синтаксической структуры, относящейся к последовательности, например, набора VPS и/или SPS (где это указание может располагаться в соответствующих частях информации VUI), или при помощи механизма SEI, например, из SEI-сообщения. Альтернативно или в дополнение декодер, или другой элемент, например, медиапроигрыватель или анализатор файлов, может декодировать указание на требуемые свойства отображения для двух или более уровней из контейнерного файла, который содержит кодированные изображения. Альтернативно или в дополнение декодер, или другой элемент, например, медиапроигрыватель или анализатор файлов, может декодировать указание на требуемые свойства отображения для двух или более уровней из информации описания, например, медиапараметрах MIME, SDP или MPD. На основе декодированных свойств отображения декодер или другой элемент, например, медиапроигрыватель или анализатор файлов, может создавать одно или более отображаемых изображений на основе декодированных (и возможно, кадрированных) изображений одного или более уровней. Декодер, или другой элемент, например, медиапроигрыватель или анализатор файлов, может также отображать одно или более подлежащих отображению изображений.
[0302] Диагональное межуровневое предсказание
[0303] Согласно еще одном типу классификации межуровневого предсказания разделяют линейное межуровневое предсказание и диагональное (или направленное) межуровневое предсказание. Линейное межуровневое предсказание может выполняться на основе изображений, входящих в тот же блок доступа, что и предсказываемое изображение. Опорное изображение межуровневого предсказания может быть определено как опорное изображение, которое находится не в уровне предсказываемого изображения (например, в контексте HEVC, имеет значение nuh_layer_id, отличающееся от значения текущего изображения). Опорное изображение линейного межуровневого предсказания может быть определено как опорное изображение межуровневого предсказания, входящее в блок доступа, который содержит также и текущее изображение. Диагональное межуровневое предсказание может выполняться на основе изображений, расположенных вне блока доступа, который содержит текущее предсказываемое изображение.
[0304] Опорные изображения диагонального предсказания и/или диагонального межуровневого предсказания могут быть реализованы описанным ниже образом. В заголовок сегмента слайса может быть включен дополнительный набор кратковременных опорных изображений (reference picture set, RPS) или аналогичная ему структура. Этот дополнительный кратковременный RPS-набор, или аналогичная ему структура, связан с прямым опорным уровнем, который указывается в заголовке сегмента слайса кодером, и декодируется из заголовка сегмента слайса декодером. Указание может выполняться например, путем нумерации доступных прямых опорных уровней согласно информации о зависимости уровней, которая, к примеру, может быть располагаться в наборе VPS. Это указание, например, может быть значением порядкового номера среди пронумерованных прямых опорных слоев, или это указание может быть битовой маской, включающей непосредственные опорные уровни, при этом позиция в маске указывает на конкретный непосредственный опорный уровень, а битовое значение маски указывает на то, используется ли данный уровень в качестве опорного для диагонального межуровневого предсказания (и следовательно, присутствует ли для этого уровня связанный с ним краткосрочный набор RPS, или аналогичная структура). Дополнительная синтаксическая структура краткосрочного набора RPS, или аналогичная структура, определяет изображения из непосредственного опорного уровня, которые входят в исходный список (или списки) опорных изображений для текущего изображения. В отличие от традиционного краткосрочного набора RPS, присутствующего в заголовке сегмента слайса, декодирование дополнительного кратковременного набора RPS, или аналогичной ему структуры, не приводит к изменениям в маркировке изображений (например, «используемое в качестве опорного» или «используемое в качестве долгосрочного опорного»). Для дополнительного краткосрочного набора RPS не обязательно должен применяться тот же синтаксис, что и для традиционного краткосрочного набора RPS. В частности, могут быть отброшены флаги, указывающие на то, что данное изображение может использоваться в качестве опорного для текущего изображения или на то, что данное изображение не может использоваться в качестве опорного изображения для текущего изображения, однако может использоваться как опорное для последующих изображений в порядке декодирования. Процедура декодирования для структуры списков опорных изображений может быть модифицирована так, чтобы включать опорные изображения из синтаксической структуры краткосрочного набора RPS, или аналогичной структуры, для опорного изображения.
[0305] Под адаптивным изменением разрешения понимают динамическое изменение разрешения внутри видеопоследовательности, например, в случае применения для видео конференцсвязи. Адаптивное изменение разрешения может применяться, например, для более эффективной адаптации к сетевым условиям и для повышения устойчивости к ошибкам. Для более эффективной адаптации к изменяющимся сетевым требованиям для различных видеоданных желательно иметь возможность, помимо качества, изменять также и временное и/или пространственное разрешение. Адаптивное изменение разрешения позволяет также обеспечивать ускоренный запуск, при этом время запуска сеанса может быть сокращено за счет передачи в начале кадров с низким разрешением, а впоследствии разрешение может быть повышено. Адаптивное изменение разрешения может также применяться при организации конференцсвязи. К примеру, когда один из участников начинает говорить, разрешение его данных может быть увеличено. Выполнение этой операции над IDR-кадром может приводить к «проседанию» качества, поскольку IDR-кадры должны быть кодированы со сравнительно низким качеством во избежание значительного повышения задержек.
[0306] Ниже будут более подробно рассмотрены некоторые из сценариев применения адаптивного изменения разрешения с использованием системы масштабируемого видеокодирования. Масштабируемое видеокодирование само по себе имеет механизмы для изменения разрешения, благодаря которым возможна эффективная поддержка адаптивного изменения разрешения. В блоке доступа, где происходит переключение разрешения, могут быть закодированы и/или из него могут быть декодированы два изображения. Изображение в верхнем уровне может представлять собой IRAP-изображение, т.е. для его декодирования и декодирования может не применяться внешнее предсказание, однако при этом для его кодирования и декодирования может применяться межуровневое предсказание. Изображение в вышележащем уровне может быть пропускаемым изображением, т.е. оно может не уточнять нижележащее изображение по качеству и/или другим масштабируемым величинам за исключением пространственного разрешения. Блоки доступа, в которых не происходит изменения разрешения, могут содержать только одно изображение, для которого может выполняться внешнее предсказание на основе предшествующих изображений того же уровня.
[0307] В информации VUI набора VPS стандартов MV-HEVC и HEVC были определены следующие синтаксические элементы, относящиеся к адаптивному изменению разрешения.
[0308] Семантика описанных выше синтаксических элементов может быть определена следующим образом:
[0309] флаг single_layer_for_non_irap_flag, равный 1, указывает либо на то, что все NAL-блоки VCL блока доступа имеют одно и то же значение nuh_layer_id, либо на то, что для NAL-блоков VCL блока доступа используются два значения nuh_layer_id, причем изображение с большим значением nuh_layer_id является IRAP-изображением; флаг single_layer_for_non_irap_flag, равный 0 указывает на то, что ограничения, налагаемые при single_layer_for_non_irap_flag, равном 1, применяются не обязательно.
[0310] Флаг higher_layer_irap_skip_flag, равный 1, указывает на то, что для каждого IRAP-изображения, ссылающегося на набор VPS, для которого в том же блоке доступа присутствует изображение с меньшим значением nuh_layer_id, накладываются ограничения, описанные ниже.
Для всех слайсов IRAP-изображения:
- тип слайса должен быть равен P;
- оба флага sao_luma_flag и slice_sao_chroma слайса должны быть равны 0;
синтаксический элемент five_minus_max_num_merge_cand должен быть равен 4; - флаг weighted_pred_flag должен быть равен 0 в наборе PPS, на который ссылаются слайсы.
Для всех блоков кодирования IRAP-изображения:
- флаг cu_skip_flag[i][j] должен быть равен 1;
- флаг higher_layer_irap_skip_flag, равный 0, указывает на то, что применение описанных выше ограничений не является обязательным.
[0311] Кодер может назначать оба флага, non_irap_flag и higher_layer_irap_skip_flag, равными 1, чтобы указать декодеру на то, что всякий раз, когда в одном блоке доступа присутствуют два изображения, одно из них, с большим значением nuh_layer_id, будет IRAP-изображением, для которого декодированные элементы изображения могут быть получены при помощи применения процедуры изменения разрешения для опорных изображений межуровневого предсказания, а второе изображение при этом будет использовано в качестве входных данных процедуры.
[0312] В настоящее время ведутся исследования и разработки технологий предоставления трехмерных (3D) видеоданных. Можно считать, что при стереоскопическом, или двухракурсном, видео одну видеопоследовательность, или ракурс, отображают для левого глаза, тогда как параллельный ракурс отображают для правого глаза. Для приложений, допускающих переключение точки съемки, а также для автостереоскопических дисплеев, которые могут отображать большое количество ракурсов одновременно и давать зрителю возможность просматривать контент с различных точек зрения, может требоваться боле двух параллельных ракурсов. Интенсивные исследования направлены на разработку видеокодирования для автостереоскопических дисплеев, и другие подобные применения многоракурсных видеоизображений, в которых зритель может наблюдать только одну пару стереоскопических видеоизображений с определенной точки зрения и еще одну пару стереоскопических видеоизображений с другой точки зрения. Одним из наиболее целесообразных подходов для практической реализации таких многоракурсных технологий стал подход, в котором на сторону декодера передают только ограниченное количество ракурсов, например моно- или стереоскопическое видеоизображение плюс некоторые вспомогательные данные, а все необходимые ракурсы для отображения на дисплее затем отрисовываются (т.е. синтезируются) локально в декодере.
[0313] Упаковкой кадров называется способ, при котором более одного кадра упаковывают в один кадр на стороне кодера, в качестве шага предварительной обработки перед кодированием, и затем кадры, с упакованными в них кадрами, кодируют с использованием традиционного двумерного механизма видеокодирования. Выходные кадры, формируемые декодером, следовательно, содержат в себе составляющие кадры, соответствующие входным кадрам, пространственно упакованным в одном кадре на стороне кодера. Упаковка кадров может использоваться для стереоскопической видеоинформации, при этом пару кадров, один из которых соответствует левому глазу/камере/ракурсу, а второй соответствует правому глазу/камере/ракурсу, упаковывают в один кадр. Упаковка кадров может, дополнительно или альтернативно, использоваться для видеоинформации, сопровождаемой информацией глубины или диспарантности, при этом один из кадров, составляющих упакованный кадр, будет представлять информацию глубины или диспарантности, соответствующую второму кадру, составляющему упакованный кадр и содержащему обычную цветовую информацию (информацию яркости и цветности). Возможны и другие применения упаковки кадров. Использование упаковки кадров может сигнализироваться в битовом потоке видеоинформации, например, с использованием сообщения SEI со схемой упаковки кадров в стандарте H.264/AVC или с помощью аналогичного сообщения. На использование упаковки кадров может также, альтернативно или дополнительно, выполняться указание через видеоинтерфейсы, например, по мультимедийному интерфейсу высокой четкости (High-Definition Multimedia Interface, HDMI). На использование упаковки кадров может также, дополнительно или альтернативно, выполняться указание, и/или оно может быть согласовано, с использованием различных протоколов обмена информацией о возможностях и режимах, например, протокола описания сеанса (Session Description Protocol, SDP).
[0314] Упаковка пакетов может применяться в кадрово-совместимом стереоскопическом видео, когда выполняют пространственную упаковку стереопары в один кадр на стороне кодера, на шаге предварительной обработки перед кодированием, и затем кадры, упакованные в один кадр, кодируют с помощью традиционной схемы кодирования двумерной видеоинформации. Выходные кадры, формируемые декодером, содержат исходные кадры стереопары. В нормальном режиме работы пространственное разрешение исходных кадров для каждого ракурса и упакованный отдельный кадр имеют одинаковое разрешение. В этом случае кодер перед операцией упаковки понижает разрешение двух ракурсов стереоскопического видео. Для пространственной упаковки может применяться, например, формат «бок о бок» или «один под другим», и при этом также должно выполняться соответствующее понижение разрешения.
[0315] Ракурс может быть определен как последовательность изображений, представляющих одну камеру или одну точку зрения. Изображения, представляющие ракурс, могут при этом называться компонентами ракурса. Другими словами, «компонент ракурса» может быть определен как кодированное представление ракурса в одном блоке доступа. При многоракурсном видеокодировании в битовый поток кодируют более одного ракурса. Поскольку ракурсы, как правило, предназначены для отображения на стереоскопическом или многракурсном автостереоскопическом дисплее, или предназначены для использования в других 3D-системах, они чаще всего относятся к одной и той же сцене и при этом их содержимое частично перекрывается, несмотря на то, что они являются представлением различных точек зрения на объект съемки. Следовательно, при многоракурсном видеокодировании может применяться межракурсное предсказание, что позволяет использовать корреляцию между ракурсами для повышения эффективности сжатия. Один из методов реализации межракурсного предсказания - включение одного или более из декодированных изображений одного или более из других ракурсов в список (или списки) опорных изображений для кодируемого или декодируемого изображения в первом ракурсе. Понятие масштабируемости ракурсов может относиться к таким битовым потокам многоракурсного видеокодирования, или многоракурсного видео, которые допускают удаление, или отбрасывание, одного или более из кодированных ракурсов, в результате чего сохраняется соответствие стандарту, а видеоинформация оказывается представлена с помощью меньшего количества ракурсов, чем исходная информация.
[0316] Было предложено, чтобы видео с упаковкой кадров уточнялось таким образом, чтобы отдельное уточняющее изображение кодировалось и декодировалось для каждого составного кадра в изображении с упаковкой кадров. К примеру, изображения, уточняющие пространственное разрешение составляющих кадров, представляющих левый ракурс, могут передаваться внутри одного уточняющего уровня, а в внутри другого уточняющего уровня могут передаваться изображения, уточняющие пространственное разрешение составляющих кадров, представляющих правый ракурс. К примеру, в 9-й редакции стандарта H.264/AVC определено уточнение с кадровой совместимостью и множеством различных значений разрешения (multi-resolution frame-compatible, MFC) для стереоскопического видеокодирования, а также один профиль стандарта, в котором применяется MFC-уточнение. При MFC-уточнении базовый уровень (также называемый базовым ракурсом) содержит стереоскопическое видео с упаковкой кадров, тогда как все компоненты небазовых ракурсов содержат уточнение для одного из составляющих ракурсов базового уровня в полном разрешении.
[0317] Как отмечалось выше, MVC является одним из расширений стандарта H.264/AVC. Многие из определений, понятий, синтаксических структур, часть семантики и процедур декодирования H.264/AVC применимы также к MVC полностью или с некоторыми обобщениями, или с ограничениями. Далее описаны некоторые и определений, понятий, синтаксических структур, семантики и процедур декодирования MVC.
[0318] Блок доступа в MVC определен как набор NAL-блоков, следующих друг за другом в порядке декодирования и содержащих в точности одно первично кодированное изображение, состоящее из одного или более компонентов ракурса. В дополнение к первично кодированному изображению блок доступа может также включать одно или более избыточно кодированных изображений, одно внешне кодированное изображение или другие NAL-блоки, не содержащие слайсов или разбиений данных слайсов кодированного изображения. В результате декодирования блока доступа получается одно декодированное изображение, состоящее из одного или более декодированных компонентов ракурса, если не происходит ошибок декодирования, т.е. ошибок битового потока или других ошибок, которые могут повлиять на декодирование. Другими словами блок доступа в MVC содержит компоненты ракурса для ракурсов в одном моменте времени вывода.
[0319] Под компонентом ракурса в MVC понимается кодированное представление ракурса в одном блоке доступа.
[0320] В MVC может использоваться межракурсное предсказание, под которым понимается предсказание компонента ракурса на основе декодированных значений различных компонентов ракурса того же блока доступа. В MVC межракурсное предсказание реализуется аналогично внешнему предсказанию. К примеру, опорные изображения межракурсного предсказания помещаются в тот же список (или списки) опорных изображений, что и опорные изображения для внешнего предсказания, а указатель на опорное изображение, как и на вектор движения, кодируются или вычисляются аналогично для опорных изображений межракурсного предсказания и внешнего предсказания.
[0321] Якорное изображение в MVC - это кодированное изображение, для всех слайсов которого в качестве опорных могут использоваться только слайсы в том же блоке кодирования, т.е. межракурсное предсказание может использоваться, но внешнее предсказание не используется, при этом для всех последующих изображений в порядке вывода не используется внешнее предсказание на основе изображений, предшествующих этому кодированному изображению в порядке декодирования. Межракурсное предсказание может использоваться для компонентов ракурса IDR, являющихся частью небазового ракурса. Базовый ракурс в MVC - это ракурс, который имеет минимальное значение порядкового номера ракурса в кодированной видеопоследовательности. Базовый ракурс может быть декодирован независимо от остальных видов, при этом для него не используется межракурсное предсказание. Базовый ракурс может декодироваться при помощи декодеров, соответствующих стандарту H.264/AVC, которые поддерживают только одноракурсные профили, например, базовый профиль (Baseline Profile) или верхний профиль (High Profile) стандарта H.264/AVC.
[0322] В стандарте MVC во многих из подпроцедур процедуры декодирования MVC используются соответствующие подпроцедуры стандарта H.264/AVC с заменой терминов «изображение», «кадр» и «поле» в спецификации этих процедур стандарта H.264/AVC на «компонент ракурса», «компонент ракурса кадра» и компонент ракурса поля» соответственно. Аналогично, термины «изображение», «кадр» и «поле» далее часто используются как обозначающие «компонент ракурса», «компонент ракурса кадра» и «компонент ракурса поля» соответственно.
[0323] Как отмечалось выше, небазовые ракурсы в битовых потоках MVC могут представлять собой NAL-блоки подмножества набора параметров. Подмножество набора параметров последовательности для MVC включает базовую структуру данных SPS и MVC-расширение структуры данных набора параметров последовательности. При MVC-кодировании для кодированных изображений из различных ракурсов могут применяться различные наборы параметров последовательности. Набор SPS в MVC-кодировании (а именно, часть набора SPS, являющаяся MVC-расширением) может содержать информацию о зависимостях ракурсов для межракурсного предсказания. Она может использоваться, например, медиашлюзами, которые выполняют анализ сигнализации, для построения дерева зависимости ракурсов.
[0324] В стандартах SVC и MVC префиксным NAL-блоком может называться NAL-блок, который непосредственно предшествует в порядке декодирования NAL-блоку VCL для кодированных слайсов базового уровня/ракурса. NAL-блок, непосредственно за префиксным NAL-блоком в порядке декодирования может называться ассоциированным NAL-блоком. Префиксный NAL-блок содержит данные, связанные с ассоциированным NAL-блоком, которые могут считаться частью ассоциированного NAL-блока. Префиксный NAL-блоком может быть использован для размещения синтаксических элементов, влияющих на декодирование кодированных слайсов базового уровня/ракурса, когда применяют процедуру декодирования SVC или MVC. Декодер базового уровня H.264/AVC может пропускать префиксный NAL-блок в своей процедуре декодирования.
[0325] В масштабируемом многоракурсном видеокодировании один и тот же битовый поток может содержать кодированные компоненты ракурса для нескольких ракурсов, при этом по меньшей мере некоторые из кодированных компонентов ракурса могут кодироваться с использованием масштабирования пространственного разрешения и/или масштабирования качества.
[0326] Ведутся работы по стандартизации видеокодирования с уточнением глубины, при котором кодируют одновременно ракурсы текстуры и ракурсы глубины.
[0327] Ракурсом текстуры называется ракурс, который является представлением обычного видеоконтента, например, записанного с использованием обычной камеры, и как правило подходит для отрисовки на дисплее. Ракурс текстуры как правило включает изображения, имеющие три составляющие, одну составляющую яркости и две составляющие цветности. В дальнейшем, как правило, под изображением текстуры понимаются все его составляющие, или составляющие цветности, если не указано обратное, например, с использованием таких терминов как изображение яркости текстуры и изображение цветности текстуры.
[0328] Под ракурсом глубины понимается ракурс, который является представлением информации о расстоянии отсчетов текстуры от датчика камеры, информации о диспарантности, или параллаксе, между одним отсчетом текстуры и соответствующим отсчетом текстуры в другом ракурсе, или аналогичной информации. Ракурс текстуры может включать изображения текстуры (также называемые «картами текстуры»), составляющая которых аналогична составляющей яркости для ракурсов текстуры. Карта глубины - это изображение с информацией глубины, или аналогичной информацией, для каждого пикселя. Например, каждый отсчет в карте глубины отражает расстояние соответствующего отсчета (или отсчетов) текстуры от плоскости расположения камеры. Другими словами, если ось z лежит на оси съемки камер (и следовательно, перпендикулярно плоскости расположения камер), то каждый элемент карты глубины представляет собой координату на оси z. Семантика значений глубины может, например, включать описанное ниже.
1. Каждое значение отсчета яркости в кодированном компоненте ракурса глубины представляет собой значение, обратное реальной дистанции (Z), т.е. 1/Z, нормализованное в динамическом диапазоне отсчетов яркости, то есть, в диапазоне от 0 до 255 включительно для 8-битного представления яркости. Нормализация может выполняться таким образом, чтобы значения 1/Z были одинаковыми для каждого значения диспарантности.
2. Каждое значение отсчета яркости в кодированном компоненте ракурса глубины представляет собой значение, обратное реальной дистанции (Z), т.е. 1/Z, которое отображают на динамический диапазон отсчетов яркости, например, диапазон от 0 до 255 включительно для 8-битного представления яркости, с использованием функции f(1/Z) отображения, например, кусочно-линейного отображения. Другими словами, значения карты глубины имеют своим результатом применение функции f(1/Z).
3. Каждое значение отсчета яркости в кодированном компоненте ракурса глубины представляет собой значение реальной дистанции (Z), нормализованное в динамическом диапазоне отсчетов яркости, то есть, в диапазоне от 0 до 255 включительно для 8-битного представления яркости.
4. Каждое значение отсчета яркости в кодированном компоненте глубины является представлением значения диспарантности или глубины между текущим ракурсом глубины и другим, указанным или найденным ракурсом глубины или местоположением глубины.
[0329] Семантика значений карты глубины может быть указана в битовом потоке, например, в синтаксической структуре набора видеопараметров, синтаксической структуре набора параметров последовательности, синтаксической структуре информации об используемости видео, синтаксической структуре набора параметров изображения, синтаксической структуре набора параметров камеры/глубины/адаптации, сообщении дополнительной уточняющей информации и т.п.
[0330] Для описания различных вариантов осуществления настоящего изобретения использованы такие выражения, как ракурс глубины, компонент ракурса глубины, изображение глубины и карта глубины, однако нужно понимать, что в различных вариантах осуществления настоящего изобретения может использоваться любая семантика значений карты глубины, без ограничения рассмотренными выше. К примеру, варианты осуществления настоящего изобретения могут быть применимы для изображений глубины, в которых значения отсчетов указывают на значения диспарантности.
[0331] Система кодирования, или любой другой элемент, который создает или модифицирует битовый поток, содержащий кодированные карты глубины, может формировать и включать информацию о семантике отсчетов глубины и о принципе количественного измерения отсчетов глубины в битовый поток. Такая информация о семантике отсчетов глубины и о принципе количественного измерения отсчетов глубины может быть включена, например, в структуру набора видеопараметров, в структуру набора параметров последовательности или в SEI-сообщение.
[0332] Под видеоинформацией с уточнением глубины понимается видеоинформация текстуры, имеющая один или более ракурсов, связанных с видеоинформацией глубины (имеющим одно или более ракурсов глубины). Для отображения видеоинформации с уточнением глубины может использоваться несколько различных подходов, которые включают использованием технологий «видео плюс глубина» (video plus depth, V+D), «многоракурсное видео плюс глубина» (multiview video plus depth, MVD) и видео с многоуровневой глубиной (layered depth video, LDV). При представлении типа «видео плюс глубина» (V+D) один ракурс текстуры и соответствующий ракурс глубины представлены как последовательность из изображения текстуры и изображений глубины соответственно. Представление типа MVD содержит набор ракурсов текстуры и соответствующие ракурсы глубины. В представлении типа LDV текстура и глубина центрального ракурса представлены традиционным образом, тогда как текстура и глубина других ракурсов частично представлена и охватывается только неперекрытыми областями, требуемыми для корректного построения промежуточных ракурсов.
[0333] «Компонент текстуры» может быть определен как кодированное представление текстуры некоторого ракурса в одном блоке доступа. Компоненты ракурса текстуры в битовом потоке видео с утонением глубины могут кодироваться методом, совместимым с одноракурсным битовым потоком текстуры или многоракурсным битовым потоком текстуры, благодаря чему одноракурсный или многоракурсный декодер может декодировать ракурсы текстуры, даже если он не способен декодировать ракурсы глубины. К примеру, декодер H.264/AVC может декодировать один ракурс текстуры из битового потока H.264/AVC с уточнением глубины. Альтернативно, компоненты ракурса текстуры могут кодироваться таким образом, чтобы декодер, способный декодировать одноракурсную или многоракурсную текстуру, например, декодер H.264/AVC или MVC, не был способен декодировать компоненты ракурса текстуры, например, по той причине, что для них применяют инструменты кодирования глубины. «Компонент глубины» может быть определен как кодированное представление глубины некоторого ракурса в одном блоке доступа. Парой компонентов ракурса могут быть названы компонент ракурса текстуры и компонент ракурса глубины для одного ракурса в одном блоке доступа.
[0334] Видео с уточнением глубины может кодироваться таким образом, что текстура и глубина кодируются независимо друг от друга. Например, ракурсы текстуры могут кодироваться как один битовый поток MVC, а ракурсы глубины могут кодироваться как другой поток MVC. Видео с уточнением глубины может также кодироваться методом, при котором текстура и глубина кодируются совместно. При применении совместного кодирования ракурсов текстуры и ракурсов глубины, часть декодируемых отсчетов изображения текстуры или элементов данных для декодирования изображения текстуры предсказывается или вычисляется на основе части декодированных значений изображения глубины или элементов данных, полученных в процессе декодирования изображения глубины. Альтернативно или дополнительно, часть декодируемых значений изображения глубины или элементов данных для декодирования изображения глубины, предсказывается или вычисляется на основе части декодированных значений изображения текстуры или элементов данных, полученных в процессе декодирования изображения текстуры. В другом варианте, кодированные видеоданные текстуры и кодированные видеоданные глубины не предсказывают на основе друг друга или не кодируют/декодируют на основе друг друга, однако кодированные ракурсы текстуры и глубины могут мультиплексироваться в один битовый поток при кодировании и демультиплексироваться из битового потока при декодировании. В еще одном из вариантов, несмотря на то, что кодированные видеоданные текстуры не предсказывают на основе кодированных видеоданных глубины, например, в нижележащем уровне слайса, некоторые из высокоуровневых структур кодирования ракурсов текстуры и ракурсов глубины могут быть использоваться совместно или предсказываться на основе друг друга. К примеру, заголовок кодированного слайса глубины может предсказываться на основе заголовка кодированного слайса текстуры. При этом некоторые из наборов параметров могут применяться одновременно как для кодированных ракурсов текстуры, так и для кодированных ракурсов глубины.
[0335] Форматы видеокодирования с уточнением глубины позволяют формировать виртуальные ракурсы или изображения в положениях камеры, которые не представлены ни одним из кодированных ракурсов. В общем случае для синтеза ракурсов может применяться любой алгоритм отрисовки на основе изображения глубины (depth image-based rendering, DIBR).
[0336] Ведутся также работы по спецификации расширений видеокодирования с уточнением глубины для стандарта HEVC, которые могут быть названы 3D-HEVC, где ракурсы текстуры и ракурсы глубины могут кодироваться в один битовый поток, причем некоторые из ракурсов текстуры могут быть совместимы со стандартом HEVC. Другими словами, декодер HEVC может быть способен декодировать часть ракурсов текстуры в таком битовом потоке, при этом остальные ракурсы текстуры и ракурсы глубины он может отбрасывать.
[0337] При масштабируемом и/или многоракурсном видеокодировании могут поддерживаться по меньшей мере два описанных ниже принципа кодирования изображений и/или блоков доступа, обладающих свойством произвольного доступа.
- RAP-изображение внутри уровня может быть внутренне-кодируемым изображением без межуровневого/межракурсного предсказания. Такое изображение обеспечивает возможность произвольного доступа к уровню, или ракурсу, в котором оно расположено.
- RAP-изображение в уточняющем уровне может быть изображением без внешнего предсказания (т.е. временного предсказания), но может быть разрешено межуровневое/межракурсное предсказание. Такое изображение обеспечивает возможность начала декодирования уровня/ракурса, в котором это изображение расположено, при условии, что доступны все опорные уровни/ракурсы. При однопроходном декодировании может быть достаточно, чтобы были доступны опорные кодированные уровни/ракурсы (это условие выполнено в SVC, например, в случае IDR-изображений, dependency_id которых больше 0). При многопроходном декодировании может требоваться, чтобы опорные уровни/ракурсы были декодированы. Такие изображения могут, например, называться изображениями пошагового доступа к уровню (stepwise layer access, STLA) или RAP-изображениями уточняющего уровня.
- Под якорным блоком доступа или полным блоком доступа RAP может пониматься блок доступа, который включает, во всех уровнях, только внутренне предсказываемое изображения (или изображение) и STLA-изображения. При многопроходном декодировании такие блоки доступа обеспечивают возможность произвольного доступа ко всем уровням, или ракурсам. Одним из примеров подобных блоков доступа является якорный блок доступа в MVC (специальным случаем которого является блок доступа IDR).
- Пошаговый блок доступа RAP может быть определен как блок доступа, включающий RAP-изображение в базовом уровне, однако не обязательно содержащий RAP-изображение во всех уточняющих уровнях. Пошаговый блок доступа RAP позволяет запускать декодирование базового уровня, причем декодирование уточняющего уровня может начинаться тогда, когда уточняющий уровень содержит RAP-изображение, и (в случае многопроходного декодирования) на этот момент декодированы все его опорные уровни/ракурсы.
[0338] В расширении масштабируемого кодирования HEVC или любом другом расширении масштабируемого кодирования для одноуровневой схемы кодирования, аналогичной HEVC, IRAP-изображения могут быть определены как имеющие один или более параметров, описанных ниже. - Для указания на точки произвольного доступа уточняющего уровня могут использоваться значения nal_unit_type IRAP-изображений, имеющих nuh_layer_id больше 0.
- IRAP-изображение уточняющего уровня может быть определено как изображение, которое обеспечивает возможность запуска декодирования уточняющего уровня, когда декодированы все его опорные уровни, предшествующие данному IRAP-изображению уточняющего уровня.
- Межуровневое предсказание может быть разрешено для NAL-блоков IRAP-изображения, имеющих nuh_layer_id больше 0, тогда как внешнее предсказание может быть запрещено.
- NAL-блоки IRAP-изображения не обязательно должны быть выровнены друг с другом в различных уровнях. Другими словами, блок доступа может содержать как IRAP изображения, так и изображения других типов.
- После BLA-изображения в базовом уровне декодирование уточняющего уровня начинают, когда уточняющий уровень содержит IRAP-изображение и началось декодирование всех его опорных уровней. Другими словами, BLA-изображение в базовом уровне является триггером для процедуры поуровневого запуска.
- Когда декодирование уточняющего уровня начинается с CRA-изображение, его RASL-изображения обрабатывают аналогично RASL-изображениям BLA-изображения (в версии 1 HEVC).
[0339] Масштабируемые битовые потоки могут применяться вместе IRAP-изображениями, или аналогичными структурами, которые не выровнены в различных уровнях, например, в базовом уровне могут присутствовать более часто встречающиеся IRAP-изображения, которые могут иметь меньший размер в кодированном виде, например, из-за меньшего пространственного расширения. Процедура, или механизм, поуровневого запуска декодирования может быть включен в схему видеокодирования. Соответственно, декодер может начинать декодирование битового потока, когда базовый уровень содержит IRAP, и пошагово начинать декодирование остальных слоев, когда они содержат IRAP-изображения. Другими словами, при поуровневом запуске процедуры декодирования декодер постепенно увеличивает количество декодируемых уровней (причем эти уровни могут представлять собой уточнение пространственного разрешения, уровня качества, ракурсы, дополнительные компоненты, такие как глубина, или их комбинацию) по мере декодирования последующих изображений из дополнительных уточняющих уровней в процессе декодирования. Постепенное увеличение количества декодируемых уровней может восприниматься, например, как постепенное повышение качества изображения (в случае масштабируемости качества и пространственной масштабируемости).
[0340] Механизм поуровневого запуска позволяет формировать недоступные изображения для опорных изображений первого изображения, в порядке декодирования, в конкретном уточняющем уровне. Альтернативно, декодер может не выполнять декодирование изображений, предшествующих IRAP-изображению, с которого может начинаться декодирование уровня. Эти изображения, которые могут быть отброшены, могут быть явно помечены кодером, или другим элементом, в битовом потоке. Например, для них могут применяться одно или более специальных значений типа NAL-блока. Эти изображения могут быть названы межуровневыми пропускаемыми изображениями произвольного доступа (cross-layer random access skip, CL-RAS).
[0341] Механизм поуровневого запуска может обеспечивать начало вывода изображений уточняющего уровня с IRAP-изображения в этом уточняющем уровне, когда все опорные уровни для этого уточняющего уровня были инициализированы аналогичным образом, с появлением IRAP-изображений в опорных уровнях. Другими словами, никакое изображение (внутри одного уровня), предшествующее упомянутому IRAP-изображению в порядке вывода, не может быть выведено из декодера и/или не может быть отображено. В некоторых случаях декодируемые опережающие сообщения, связанные с подобным IRAP-изображением, могут быть выведены, однако остальные изображения, предшествующие этому IRAP-изображению, не подлежат выводу.
[0342] Конкатенация кодированных видеоданных, которая может также называться «сплайсингом» (стыковкой), может выполняться, например, когда кодированные видеопоследовательности объединяют в битовом потоке, подлежащем вещанию или потоковой передаче, или сохранению в запоминающем устройстве большой емкости. К примеру, кодированные видеопоследовательности, представляющие собой рекламу, могут объединяться с кинофильмами или иным «главным» содержимым.
[0343] Масштабируемые битовые потоки видеоданных могут содержать IRAP-изображения, не выровненные в различных уровнях. Однако, представляется удобным иметь возможность конкатенации кодированных видеопоследовательностей, содержащих IRAP-изображение в базовом уровне, в первом блоке доступа, даже если оно не присутствует во всех уровнях. Вторая кодированная видеопоследовательность, которую помещают в стык с первой кодированной последовательностью, должна инициировать процедуру пошагового запуска декодирования. Это необходимо, поскольку первый блок доступа в упомянутой второй кодированной видеопоследовательности может не содержать IRAP-изображения во всех уровнях, и следовательно, некоторые из опорных изображений для He-IRAP-изображений в этом блоке доступа могут быть недоступны (в объединенном битовом потоке), и соответственно, не могут быть декодированы. Элемент, выполняющий конкатенацию кодированных видеопоследовательностей (который далее будет именоваться «сплайсером»), должен, следовательно, изменить первый блок доступа второй кодированной видеопоследовательности таким образом, чтобы он запускал процедуру поуровневого запуска в декодере (или декодерах).
[0344] В синтаксисе битового потока может иметься указание (или указания), которые указывают на инициирование процедуры поуровневого запуска. Такое указание (или указания) может формироваться кодером или сплайсером, и может исполняться декодером. Такие указания могут применяться исключительно для конкретного типа (или типов) изображений или конкретных типов NAL-блоков, например, только для IDR-изображений, тогда как в других вариантах осуществления настоящего изобретения эти указания могут применяться для изображений любых типов. Без потери общности, ниже рассмотрен пример, в котором в заголовок сегмента слайса включено указание, имеющее наименование cross_layer_bla_flag. Нужно понимать, что дополнительно или альтернативно может применяться аналогичное указание, с любым другим наименованием или включенное в любую другую синтаксическую структуру.
[0345] Независимо от указаний, инициирующих процедуру поуровневого запуска, определенные типы NAL-блоков и/или типы изображений также могут инициировать эту процедуру. К примеру, BLA-изображение в базовом уровне может быть триггером для процедуры поуровневого запуска.
[0346] Механизм поуровневого запуска может быть активирован в одном или более из описанных ниже случаев.
- В начале битового потока.
- В начале кодированной видеопоследовательности, с явным управлением, например, когда выполняется запуск или перезапуск процедуры декодирования, например, в ответ на переключение канала вещания или на поиск позиции в файле или в потоке. В качестве входных данных процедура декодирования может принимать переменную, например, имеющую наименование NoClrasOutputFlag, которая может управляться при помощи внешних средств, таких как видеопроигрыватель или аналогичный элемент.
- BLA-изображение базового уровня.
- IDR-изображение базового уровня, которое имеет cross_layer_bla_flag, равный 1. (или IRAP-изображение базового уровня с cross_layer_bla_flag, равным 1).
[0347] Когда механизм поуровневого запуска активирован, все изображения в буфере DPB могут быть помечены как «не используемые в качестве опорных». Другими словами, все изображения во всех уровнях могут быть помещены как «не используемые в качестве опорных» и не будут использоваться в качестве опорных для предсказания изображения, инициировавшего механизм поуровневого запуска, а также для всех последующих изображений в порядке декодирования.
[0348] Межуровневые пропускаемые изображения произвольного доступа (CL-RAS) могут обладать следующим свойством: когда происходит вызов механизма поуровневого запуска (например, когда флаг NoClrasOutputFlag равен 1), изображения CL-RAS не выводят, и они не могут быть корректно декодированы, поскольку CL-RAS-изображения могут содержать ссылки на изображения, отсутствующие в битовом потоке. В стандарте может быть определено, что CL-RAS-изображения не могут использоваться в качестве опорных в процедуре декодирования He-CL-RAS-изображений.
[0349] Может выполняться явное указание на CL-RAS-изображения, например, с использованием одного или более типов NAL-блоков или флагов в заголовке слайса (например, при помощи переименования cross_layer_bla_flag в cross_layer_constraint_flag и переопределения семантики cross_layer_bla_flag для не-IRAP-изображений. Изображение может считаться CL-RAS-изображением, когда оно не является IRAP изображением (что определяют, например, по его nal_unit_type), расположено в уточняющем уровне и имеет cross_layer_constraint_flag (или аналогичный), равным 1. В противном случае изображение может быть классифицировано как не-CL-RAS-изображение, флаг cross_layer_bla_flag может быть принят равным 1 (или соответствующая переменная может быть назначена равной 1), и если данное изображение является IRAP-изображением (что определяют, например, при помощи его nal_unit_type), оно расположено в базовом уровне и его cross_layer_constraint_flag равен 1. В противном случае флаг cross_layer_bla_flag может быть принят равным 0 (или соответствующая переменная может быть назначена равной 0).
Альтернативно, CL-RAS изображения могут вычисляться. Например, если изображение имеет nuh_layer_id равным layer_id, то может быть сделан вывод, что оно является CL-RAS-изображением, когда флаг LayerlnitializedFlag [layerld ] равен 0.
[0350] Процедура декодирования может быть определена таким образом, чтобы необходимость применения процедуры поуровневого запуска управлялась при помощи некоторой переменной. К примеру, может применяться переменная NoClrasOutputFlag, которая, когда она равна 0, указывает нормальную операцию декодирования, а когда она равна 1, указывает на операцию поуровневого запуска. Флаг NoClrasOutputFlag может быть назначен, например, при помощи одного или более из описанных ниже шагов.
1) Если текущее изображение является IRAP-изображением, которое представляет собой первое изображение в битовом потоке, NoClrasOutputFlag назначают равным 1.
2) В противном случае, если имеются внешние средства для назначения переменной NoClrasOutputFlag равной значению для IRAP-изображения базового уровня, переменную NoClrasOutputFlag назначают равным значению, предоставленному внешними средствами.
3) В противном случае, если текущее изображение является BLA-изображением, которое представляет собой первое изображение в кодированной видеопоследовательности (CVS), NoClrasOutputFlag назначают равным 1.
4) В противном случае, если текущее изображение является IDR-изображением, которое представляет собой первое изображение в кодированной видеопоследовательности (CVS) и флаг cross_layer_bla_flag равен 1, NoClrasOutputFlag назначают равным 1.
5) В противном случае NoClrasOutputFlag назначают равным 0.
[0351] Описанный выше шаг 4 может, альтернативно, быть описан в более общем виде, например так:
«В противном случае, если текущее изображение является IRAP-изображением, которое представляет собой первое изображение в CVS-последовательности, и с данным IRAP-изображением связано указание на процедуру поуровневого запуска, флаг NoClrasOutputFlag назначают равным 1» Описанный выше шаг 3 может быть опущен, при этом может быть определено, что BLA-изображение инициирует процедуру поуровневого запуска (т.е. NoClrasOutputFlag назначают равным 1), когда его cross_layer_bla_flag равен 1. Нужно понимать, что могут существовать и другие, равноприменимые способы определения этих условий. [0352] Процедура декодирования для поуровневого запуска может управляться, например.при помощи двух переменных-массивов LayerlnitializedFlag[i] и FirstPiclnLayerDecodedFlag [i], которые могут иметь записи для каждого из уровней (возможно, включая базовый уровень, а также другие независимые уровни). Когда вызвана процедура поуровневого запуска, например, в ответ на флаг NoClrasOutputFlag, равный 1, эти переменные-массивы могут быть сброшены в заданные по умолчанию значения. К примеру, когда доступны 64 уровня (например, при 6-битном nuh_layer_id), эти переменные могут быть реинициализированы следующим образом: переменную LayerlnitializedFlag[i] назначают равной 0 для всех значений i от 0 до 63 включительно, и переменную FirstPiclnLayerDecodedFlag[i] назначают равной 0 для всех значений i от 1 до 63 включительно.
[0353] Процедура декодирования может включать описанный ниже или аналогичный способ управления выводом RASL-изображений. Когда текущее изображение является IRAP-изображением, применимы описанные ниже условия.
- Если флаг LayerlnitializedFlag [nuh_layer_id] равен 0, переменную NoRaslOutputFlag назначают равной 1.
- В противном случае, если имеются внешние средства для назначения HandleCraAsBlaFlag равным значению для текущего изображения, переменную HandleCraAsBlaFlag назначают равной значению, предоставленному внешними средствами, а переменную NoRaslOutputFlag назначают равной HandleCraAsBlaFlag.
- В противном случае переменную HandleCraAsBlaFlag назначают равно 0, и переменную NoRaslOutputFlag также назначают равной 0.
[0354] Процедура декодирования может включать описанные ниже шаги обновления флага LayerlnitializedFlag в каждом уровне. Когда текущее изображение является IRAP-изображением и выполнено одно из приведенных ниже условий, LayerlnitializedFlag [nuh_layer_id] назначают равным 1.
- nuh_layer_id равен 0.
- Флаг LayerlnitializedFlag [nuh_layer_id] равен 0 и LayerlnitializedFlag [refLayerld] равен 1 для всех значений refLayerld, равных RefLayerld [nuh_layer_id] [j], где j - значение в диапазоне от 0 до NumDirectRefLayers[ nuh_layer_id ] - 1 включительно.
[0355] Когда флаг FirstPiclnLayerDecodedFlag [nuh_layer_id] равен 0, перед декодированием текущего изображения может быть вызвана процедура декодирования для формирования отсутствующих опорных изображений. Процедура декодирования для формирования отсутствующих опорных изображений позволяет сформировать изображения для каждого из изображений в наборе опорных изображений с заданными по умолчанию значениями. Процедура формирования отсутствующих опорных изображений может быть определена, главным образом, для определения синтаксических ограничений по CL-RAS-изображениям, при этом CL-RAS-изображение может быть определено как изображение с nuh_layer_id, равным layer_id, и LayerlnitializedFlag [layerld], равным 0. В операциях HRD-декодирования CL-RAS-изображения может быть необходим учет CL-RAS-изображений при вычислении моментов времени поступления и удаления в буфере СРВ. Декодеры могут игнорировать все CL-RAS, поскольку эти изображения не предназначены для вывода и не влияют на процесс декодирования каких-либо иных изображений, предназначенных для вывода.
[0356] В стандарте или системе кодирования может упоминаться такое выражение как «рабочая точка» (operation point), или аналогичный термин, который может указывать на масштабируемые уровни и/или подуровни, для которых выполняется декодирования и/или которые могут быть связан с битовым подпотоком, включающим декодируемые масштабируемые уровни и/или подуровни. Ниже приведены несколько неограничивающих определений рабочей точки.
[0357] В стандарте HEVC рабочая точка определена как битовый поток, созданный на основе другого битового потока при помощи процедуры извлечения битового подпотока, входными данными которой являются упомянутый другой битовый поток, целевой наивысший Temporalld, и список идентификаторов целевых уровней.
[0358] Для этих наборов уровней в наборе VPS стандарта HEVC определены наборы уровней и HRD-параметры. Набор уровней может использоваться в качестве списка идентификаторов целевых уровней в процедуре извлечения подпотока.
[0359] В стандартах SHVC и MV-HEVC определение рабочей точки может включать анализ набора целевых выходных уровней. В стандарте SHVC и MV-HEVC рабочая точка определена как битовый поток, который создан на основе другого битового потока при помощи процедуры извлечения битового подпотока, входными данными которой являются упомянутый другой битовый поток, целевой наивысший Temporalld, и список идентификаторов целевых уровней, и который связан с набором целевых выходных уровней.
[0360] Набор выходных уровней может быть определен как набор уровней, состоящий из уровней из одного или более заданных наборов уровней, при этом для одного или более уровней в этом наборе уровней указано, что они являются выходными уровнями. Выходной уровень может быть определен как уровень из набора выходных уровней, который выводят при работе декодера и/или HRD-декодера с использованием данного набора выходных уровней в качестве целевого набора выходных уровней. В стандарте MV-HEVC/SHVC переменная TargetOptLayerSetldx может определять, какой из наборов выходных уровней является целевым, при помощи назначения TargetOptLayerSetldx равного порядковому номеру набора выходных уровней, который является целевым набором выходных уровней. Значение TargetOptLayerSetldx может назначаться, например, HRD-декодером, и/или может назначаться при помощи внешних средств, к примеру, проигрывателем или аналогичным элементом, при помощи интерфейса, обеспеченного декодером. В стандарте MV-HEVC/SHVC целевой выходной уровень может быть определен как уровень, который подлежит выводу и является одним из выходных уровней в наборе выходных уровней с порядковым номером olsldx, то есть, TargetOptLayerSetldx для которого равен olsldx.
[0361] В MV-HEVC/SHVC возможно вычисление «заданного по умолчанию» набора выходных уровней для каждого из наборов уровней, определенных в наборе VPS, с использованием специального механизма или при помощи явного указания на выходные уровни. Могут быть определены два специальных механизма: в наборе VPS может быть определено, что каждый уровень является выходным уровнем, или что только наивысший уровень является выходным уровнем в «заданном по умолчанию» наборе выходных уровней. Если используются упомянутые специальные механизмы, то уровни вспомогательных изображений могут быть исключены из рассмотрения при определении, является ли уровень выходным. При этом для «заданных по умолчанию» наборов выходных уровней расширение VPS позволяет задать дополнительные наборы выходных уровней, в для выбранных выходных уровней указывают на то, что они являются выходными.
[0362] В стандарте MV-HEVC/SHVC с каждым из наборов выходных уровней связана синтаксическая структура profile_tier_level(). Точнее, в расширении VPS присутствует список из синтаксических структур profile_tier_level(), при этом порядковый номер применимого profile_tier_level() внутри списка задают для каждого набора выходных уровней. Другими словами, для каждого набора выходных уровней указывают комбинацию из профиля, яруса и уровня стандарта.
[0363] Постоянный набор выходных уровней хорошо подходит для сценариев применения и битовых потоков, в которых, в каждом блоке доступа, наивысший уровень остается неизменным, однако при этом не поддерживаются сценарии применения, в которых наивысший уровень меняется при переходе между блоками доступа. Соответственно, было предложено, чтобы кодеры могли определять использование альтернативных выходных уровней внутри битового потока, и при этом, если будет указано на необходимость применения альтернативных выходных уровней, декодеры должны выводить декодированное изображение из альтернативного выходного уровня, когда отсутствует изображение в выходном уровне внутри того же блока доступа. Существуют несколько возможных способов указания на альтернативные выходные уровни. Например, каждый из выходных уровней в наборе выходных уровней может быть связан с минимальным альтернативным выходным уровнем, и специальный синтаксический элемент (или элементы), относящийся к выходному уровню, может использоваться для указания на альтернативный выходной уровень (или уровни) для всех выходных уровней. Альтернативно, применение механизма альтернативных выходных уровней может быть ограничено только наборами выходных уровней, содержащих ровно один выходной уровень, и при этом специальный синтаксический элемент (или элементы), относящийся к выходному уровню, может использоваться для указания на альтернативный выходного уровень (или уровни) для этого набора выходных уровней. Альтернативно, применение механизма альтернативных выходных уровней может быть ограничено только битовыми потоками или последовательностями CVS, в которых все указанные наборы выходных уровней содержат ровно один выходной уровень, и при этом указание на альтернативный выходной уровень (или уровни) может выполняться при помощи синтаксического элемента (или элементов), относящихся к битовому потоку или CVS-последовательности. Указание на альтернативный выходной уровень (или уровни) может быть выполнено, например, при помощи перечисления, к примеру, в наборе VPS, альтернативных выходных уровней (к примеру, с помощью их идентификаторов уровней или порядковых номеров в списке непосредственных или косвенных опорных уровней), при помощи указания на минимальный альтернативный выходной уровень (к примеру, с помощью его идентификатора уровня или порядкового номера в списке непосредственных или косвенных опорных уровней) или при помощи флага, указывающего на то, что какой-либо из непосредственных или косвенных опорных уровней является альтернативным выходным уровнем. Если разрешено использование более чем одного альтернативного выходного уровня, может быть указано на то, что выводу подлежит первое прямое или косвенное опорное изображение межуровневого предсказания в блоке доступа, в порядке убывания идентификаторов уровней, вплоть до указанного минимального альтернативного выходного уровня.
[0364] HRD-декодирование масштабируемого битового потока видеоданных может функционировать аналогично HRD-декодированию битовому потока, состоящего только из одного уровня. Однако могут быть необходимы, или желательны, некоторые изменения, в особенности это касается работы буфера DPB при многопроходном декодировании масштабируемого битового потока. Работа DPB-буфера при многопроходном декодировании масштабируемого битового потока может быть определена множеством различных способов. При поуровневом подходе каждый уровень может иметь, логически, собственный буфер DPB, который может функционировать во всех смыслах независимо, кроме того, что некоторые из параметров DPB могут предоставляться совместно для всех поуровневых буферов DPB, и того, что вывод изображений может осуществляться синхронно, то есть, изображения с одинаковыми временами вывода могут выводиться одновременно, или, при проверке выходной последовательности на соответствие стандарту, изображения из одного блока доступа могут выводиться следом друг за другом. В другом подходе, который носит название метода с привязкой к разрешению, для уровней с одинаковыми ключевыми свойствами применяют один подбуфер DPB. Ключевые свойства могут включать одно или более из следующего: ширина изображения, высота изображения, формат цветности, битовая глубина, формат цвета/цветового охвата.
[0365] Возможна поддержка одновременно поуровневого метода и метода с привязкой к разрешению в одной модели буферов DPB, которая может называться моделью подбуферов DPB. DPB-буфер разбивают на несколько подбуферов DPB и каждым подбуфером управляют практически независимо, за исключением того, что некоторые из параметров DPB могут предоставляться совместно для всех подбуферов DPB, и того, что вывод изображений может осуществляться синхронно, то есть, изображения с одинаковыми временами вывода могут выводиться одновременно, или, при проверке выходной последовательности на соответствие стандарту, изображения из одного блока доступа могут выводиться следом друг за другом.
[0366] DPB буфер можно считать логически разбитым на подбуферы DPB, каждый из которых содержит буферы для хранения изображений. Каждый из подбуферов DPB может быть связан с одним из уровней (в поуровневом режиме) или с конкретной комбинацией разрешения, формата цветности и битовой глубины (в так называемом режиме привязки к разрешению), и все изображения в уровне (или уровнях) могут храниться в соответствующем подуровне DPB. Функционирование подбуферов DPB может быть независимым друг от друга в том, что касается добавления, маркировки и удаления декодированных изображений, а также размера каждого из подбуферов DPB, однако вывод декодированных изображений из различных подбуферов DPB может быть синхронизирован при помощи их времен вывода или значений порядковых номеров изображений. В режиме привязки к разрешению кодеры могут обеспечивать, для каждого подбуфера DPB и/или каждого уровня, несколько буферов изображений, а декодеры или HRD-декодеры могут использовать либо один, либо оба типа из этого набора буферов изображений в ходе операций буферизации. К примеру, при декодировании с целью проверки выходной последовательности на соответствие стандарту может вызываться процедура «бампинга» (bumping), когда количество сохраненных изображений в уровне достигает заданного для каждого уровня количества буферов изображений или превосходит это количество, и/или когда количество изображений, хранимых в подбуфере DPB достигает заданного количества буферов изображений для этого подбуфера DPB или превосходит его.
[0367] В текущих проектах стандартов MV-HEVC и SHVC характеристики DPB-буфера включают в синтаксическую структуру "DPB size", которая также может обозначаться как dpb_size(). Синтаксическая структура "DPB size" входит в расширение набора VPS. Синтаксическая структура "DPB size" присутствует для каждого набора выходных уровней (за исключением 0-го набора выходных уровней, содержащего только базовый уровень), при этом для каждого подуровня (вплоть до максимального подуровня) могут присутствовать описанные ниже фрагменты информации, или же эта информация может быть принята равной соответствующей информации, применимой для низлежащего подуровня:
- max_vps_dec_pic_buffering_minus1 [i][k][j]+1 определяет максимальный требуемый размер k-го подуровня DPB для CVS-последовательности в i-ом наборе выходных уровней, измеряемый в количестве буферов хранения изображений для максимального Temporalld (т.е. HighestTid), равного j;
- max_vps_layer_dec_pic_buff_minus1 [i][k][j]+1 определяет максимально количество декодированных изображений k-го уровня для CVS-последовательности в i-ом наборе выходных уровней, которые должны храниться в DPB-буфере, когда HighestTid равен j.
- max_vps_num_reorder_pics[i][j] определяет, когда HighestTid равен j, максимальное разрешенное количество блоков доступа, содержащих изображение с PicOutputFlag, равным 1, которые могут предшествовать какому либо блоку доступа, auA, содержащему изображение с PicOutputFlag, равным 1, в i-ом наборе выходных уровне в CVS-последовательности, в порядке декодирования, и следовать за блоком доступа, auA, содержащим изображение с PicOutputFlag, равным 1, в порядке вывода.
- max_vps_latency_increase_plus1[i][j] не равное 0 используют для вычисления значения VpsMaxLatencyPictures[i][j], которое, когда HighestTid равен j, определяет максимальное количество блоков доступа, содержащих изображение с PicOutputFlag, равным 1, в i-ом наборе выходных уровней, которые могут предшествовать какому либо блоку доступа, auA, содержащему изображение с PicOutputFlag, равным 1, в CVS-последовательности, в порядке вывода, и следовать за блоком доступа, auA, содержащим изображение с PicOutputFlag, равным 1, в порядке декодирования.
[0368] Для вычисления значений POC в таких расширениях HEVC, как MV-HEVC и SHVC, были предложены несколько подходов. Ниже описан один из подходов, получивший название сброса POC. Такой метод вычисления POC описан как один из примеров вычисления POC, с использованием которого могут быть реализованы различные варианты осуществления настоящего изобретения. Необходимо понимать, что рассмотренные варианты осуществления настоящего изобретения могут быть реализованы с любым методом вычисления POC, и описание подхода со сбросом POC является исключительно неограничивающим примером.
[0369] Подход со сбросом POC основан на указании, в заголовке слайса, на то, что значения POC должны быть сброшены, в соответствии с чем POC текущего изображения получают из предоставленной сигнализации POC для текущего изображения и POC предыдущих изображений в порядке декодирования и увеличивают на заданное значение.
[0370] Всего могут быть реализованы четыре режима сброса POC, описанные ниже.
- Сброс старшего бита POC в текущем блоке доступа. Этот режим может применяться, когда уточняющий уровень содержит IRAP-изображение. (На этот режим указывают при помощи синтаксического элемента poc_reset_idc_equal, равного 1).
- Полный сброс POC (и старший бит и младший бит сбрасывают в 0) в текущем блоке доступа. Этот режим может применяться, когда базовый уровень содержит IDR-изображение. (На этот режим указывают в при помощи синтаксического элемента poc_reset_idc, равного 2).
- Отложенный сброс старшего бита POC. Это может применяться к изображениям с nuh_layer_id, равным nuhLayerld, так, чтобы не было изображений с nuh_layer_id равным nuhLayerld в предшествующем (в порядке декодирования) блоке доступа, которое бы вызвало сброс старшего бита POC. (На этот режим указывают в при помощи синтаксического элемента poc_resetJdc, равного 3 и full_poc_reset_flag, равного 0).
- «Отложенный» полный сброс POC. Это может применяться к изображениям с nuh_layer_id, равным nuh_layer_id, так, чтобы не было изображений с nuh_layer_id равным nuhLayerld в предшествующем (в порядке декодирования) блоке доступа, которое бы вызвало полный сброс POC. (На этот режим указывают в при помощи синтаксического элемента poc_reset_idc, равного 3 и full_poc_reset_flag, равного 1).
[0371] Сигнализация «отложенного» сброса POC может также применяться в целях повышения устойчивости к ошибкам (для обеспечения устойчивости к потерям предшествующих изображений в том же уровне, которые включают сигнализацию сброса POC).
[0372] Может быть определено понятие периода сброса POC, основанное на идентификаторе периода сброса POC, который может быть указан, например, с использованием синтаксического элемента poc_reset_period_id, размещаемого в расширении заголовка сегмента слайса. Каждое не-IRAP-изображение, которое принадлежит блоку доступа, содержащему по меньшей мере одной IRAP-изображение может быть началом периода сброса POC в уровне, содержащем это не-IRAP-изображение. В этом блоке доступа каждое изображение может быть началом периода сброса POC в уровне, содержащем данное изображение. Сброс POC и обновление значений POC для изображений одного уровня в DPB-буфере применяют только для первого изображения в каждом периоде сброса POC.
[0373] Значения POC предыдущих изображений всех уровней в буфере DPB могут обновляться в начале каждого блока доступа, в котором необходим сброс POC и начинается новый периода сброса POC (перед декодированием первого изображения, принятого для этого блока доступа, но после анализа и декодирования информации заголовка первого слайса этого изображения). Альтернативно, значения POC предыдущих изображений в уровне текущего изображения, в DPB-буфере, могут обновляться в начале декодирования изображения, которое является первым изображением в уровне для периода сброса POC. Альтернативно, значения POC предыдущих изображений для дерева кодирования текущего изображения, в DPB-буфере, могут обновляться в начале декодирования изображения, которое является первым изображением в дереве уровня для периода сброса POC. Альтернативно, значения POC предыдущих изображений текущего уровня, а также его прямых и косвенных опорных уровней, в DPB-буфере, могут обновляться (если они еще не обновлены) в начале декодирования изображения, которое является первым изображением в уровне для периода сброса POC.
[0374] Для вычисления разности значений POC (дельта-значения), используемой для обновления значений POC изображений того же уровня в буфере DPB, а также для вычисления старшего бита POC значения POC текущего изображения, значение младшего бита (синтаксический элемент poc_lsb_val) сигнализируют, при определенных условиях, в заголовке сегмента слайса (для режимов «отложенного» сброса POC, а также для изображений базового уровня с полным сбросом POC, например, IDR-изображений базового уровня). Когда применяют режимы «отложенного» сброса POC, poc_lsb_val может быть назначено равным значению младшего бита POC (PL (slice_pic_order_cnt_lsb) блока доступа, в котором POC был сброшен. Когда в базовом уровне применяют полный сброс POC, poc_lsb_val может быть назначено равным младшему биту POC из prevTidOPic (в соответствии с приведенным выше описанием).
[0375] Для первого изображения, в порядке декодирования, с конкретным значением nuh_layer_id и внутри периода сброса POC, значение DeltaPocVal вычисляют, путем вычитания, на основе изображений, которые в текущий момент находятся в буфере DPB. Основная идея заключается в том, что в случае сброса старших битов POC переменная DeltaPocVal будет равна старшим бита значения POC для изображения, которое запускает сброс, а в случае полного сброса POC переменная DeltaPocVal будет равна POC изображения, которое запускает сброс (однако отложенный сброс POC обрабатывается несколько иначе). Значения PicOrderCntVal всех декодированных изображений всех уровней или текущего уровня, или текущего дерева уровней в буфере DPB, уменьшают на значение DeltaPocVal. Соответственно, основная идея заключается в том, что после сброса старших битов POC изображения в буфере DPB могут иметь значения POC вплоть до MaxPicOrderCntLsb (не включительно), а после полного сброса POC изображения в буфере DPB могут иметь значения POC вплоть до 0 (не включительно), однако и в этом случае отложенный сброс POC обрабатывается несколько иным образом.
[0376] Блок доступа для масштабируемого видеокодирования может быть определен различными способами, включая приведенное выше определение блока доступа HEVC, однако без ограничения им. К примеру, определение блока доступа в HEVC может быть менее строгим, то есть, блок доступа может включать кодированные изображения, связанные с одним моментом времени вывода и принадлежащие одному дереву кодирования. Когда битовый поток имеет несколько деревьев кодирования, блок доступа может (но не обязательно должен) включать кодированные изображения, связанные с одним моментом времени вывода и принадлежащие различным деревьям кодирования.
[0377] Во многих видеокодерах для поиска режимов кодирования с оптимальным соотношением «битовая скорость - искажения», например, необходимого режима макроблоков и связанных с ними векторов движения, используется целевая функция Лагранжа (функция стоимости). В целевой функции такого типа используется весовой коэффициент, или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей или отсчетов в некоторой области изображения: Целевая функция Лагранжа может быть представлена следующим уравнением:
C=D+λR,
где - С минимизируемое значение целевой функции, D - искажение изображения (например, среднеквадратичная ошибка между значениями пикселей, или отсчетов, в исходном блоке изображения и в кодированном блоке изображения) для рассматриваемых в текущий момент режима и векторов движения, L - коэффициент Лагранжа, a R - количество бит, необходимых для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
[0378] В стандарт кодирования могут входить процедуры извлечения битовых подпотоков, например, такие процедуры определены в стандартах SVC, MVC и HEVC. Под процедурой извлечения битового подтопотка понимается преобразование битового потока путем перемещения NAL-блоков в битовый подпоток. Такой битовый подпоток остается соответствующим стандарту. Например, в проекте стандарта HEVC битовый поток, формируемый исключением всех NAL-блоков VCL, чей temporal_id больше выбранного значения, и включением всех остальных NAL-блоков VCL, остается соответствующим стандарту. В другой предварительной версии стандарта HEVC процедура извлечения битового подпотока принимает в качестве входных данных Temporalid и/или список значений layer_id и выдает битовый подпоток (называемый также подмножеством битового потока), полученный при помощи удаления из битового потока всех NAL-блоков с Temporalid большим, чем значение поданного на вход Temporalid, или значение layer_id которых не находится среди значений во входном списке значений layer_id.
[0379] В проекте стандарта HEVC рабочая точка, которую использует декодер, может быть назначена при помощи переменных TargetDecLayerldSet и HighestTid в соответствии с приведенным ниже описанием. Список TargetDecLayerldSet который определяет набор значений layer_id для декодируемых NAL-блоков VCL может назначаться при помощи внешних средств, например, управляющей логики декодера. Если он не задан внешними средствами, список TargetDecLayerldSet содержит одно значение layer_id, которое указывает на базовый уровень (т.е. равно 0 в проекте стандарта HEVC). Переменная HighestTid, которая указывает на наивысший временной подуровень, может задаваться внешними средствами. Если она не задана внешними средствами, HighestTid назначают равной наибольшему значению Temporalid, которое может присутствовать в кодированной видеопоследовательности или битовом потоке, например, значению sps_max_sub_layers_minus1 в проекте стандарта HEVC. Процедура извлечения битового подпотока может применяться с переменными TargetLayerldSet и TargetTemporalld в качестве входных данных, а выходные данные могут направляться в битовый поток, обозначенный BitstreamToDecode (битовый поток для декодирования). Процедура декодирования может выполняться для каждого кодированного изображения в битовом потоке BitstreamToDecode.
[0380] В соответствии с предшествующим описанием стандарт HEVC позволяет выполнять кодирование чересстрочных исходных данных либо в виде полей, либо в виде кадров (представляющих комплементарные пары полей), а также имеет сложную сигнализацию, относящуюся к типу исходных данных и их требуемому представлению. Во многих из вариантов осуществления настоящего изобретения реализуют алгоритмы адаптивного к изображению кодирования кадров-полей, которые могут устранять необходимость во внутреннем кодировании при переключении между кодированными полями и кадрами.
[0381] В одном из примеров осуществления настоящего изобретения кодированный кадр, который представляет собой комплементарную пару полей, располагается в другом масштабируемом уровне относительно пары кодированных полей, при этом одно или оба из полей пары кодированных полей может использоваться в качестве опорного для предсказания кодированного кадра, и наоборот. Соответственно, обеспечивается возможность адаптивного к изображению кодирования в виде кадров и полей, без модификации низкоуровневых инструментов кодирования, согласно типу текущего изображения и/или опорного изображения (кодированный кадр или кодированные поля), и/или согласно типу исходного сигнала (чересстрочный или прогрессивный).
[0382] Кодер может определять, необходимо ли кодирование комплементарной пары полей в виде кодированного кадра или в виде двух кодированных полей, исходя, например, из оптимизации «битовая скорость - искажения», в соответствии с приведенным выше описанием. К примеру, если кодированный кадр дает меньшее значение функции Лагранжа, чем значение для двух кодированных полей, кодер может принимать решение о кодировании комплементарной пары полей в виде кодированного кадра.
[0383] На фиг. 9 показан пример, в котором кодированные поля 102, 104 расположены в базовом уровне (BL), а кодированные кадры 106, содержащие комплементарные пары полей чересстрочных исходных видеоданных, расположены в уточняющем уровне (EL). На фиг. 9, как и на некоторых из последующих чертежей, узкими прямоугольниками могут быть обозначены кадры (например, 106), малыми незакрашенными прямоугольниками (например, 102) могут быть обозначены поля заданной четности (например, нечетные поля), а малыми диагонально заштрихованными прямоугольниками (например, 104) могут быть обозначены поля противоположной четности (например, четные поля). Внутри уровней может применяться предсказание из любой иерархии предсказания. В данном примере, когда кодер определяет необходимость переключения с кодирования в виде полей на кодирование в виде кадров, он может кодировать пропускаемое изображение 108. Пропускаемое изображение 108 показано на чертеже закрашенным прямоугольником. Пропускаемое изображение 108 может применяться, аналогично любым другим изображениям, в качестве опорного для внешнего предсказания последующих изображений, в порядке (де)кодирования, внутри того же уровня. Для пропускаемого изображения 108 может быть указано, что оно не подлежит выводу или отображению декодером (например, в стандарте HEVC, при помощи назначения setting_pic_output_flag равным 0). Изображения, не принадлежащие базовому уровню, не обязательно должны кодироваться в те же блоки доступа или в те же моменты времени, что представлены изображениями уточняющего уровня. Когда кодер делает вывод о необходимости переключения обратно с кодирования в виде кадров на кодирование в виде полей, он может (это, однако, не является обязательным) использовать предшествующие изображения базового уровня в качестве опорных для предсказания, что показано стрелками 114, 116 на фиг. 9. Прямоугольниками 100 обозначен чересстрочный исходный сигнал, который может, например, быть сигналом, поданным в кодер в качестве входного.
[0384] На фиг. 10 показан пример, в котором кодированные кадры, содержащие комплементарные пары полей чересстрочных исходных видеоданных, располагаются в базовом уровне, BL, а кодированные поля располагаются в уточняющем уровне, EL. В остальном кодирование аналогично фиг. 9. На иллюстрации фиг. 10 переключение с кодирования в виде кадров на кодирование в виде полей происходит в крайнем левом кадре базового уровня, тогда как пропускаемое поле 109 может быть передано в верхнем уровне, которым в данном примере является уточняющий уровень, EL Позднее может выполняться обратное переключение на кодирование в виде кадров, и при этом один или более предшествующих кадров базового уровня может (хотя это и не является обязательным) использоваться для предсказания следующего кадра базового уровня. Также на фиг. 10 проиллюстрировано еще одно переключение с кодирования в виде кадров на кодирование в виде полей.
[0385] На фиг. 11 и фиг. 12 представлены примеры, аналогичные фиг. 9 и фиг. 10 соответственно, однако вместо пропускаемых изображений в этих примерах используют диагональное межуровневое предсказание. В примере фиг. 11, когда происходит переключение с кодирования в виде полей на кодирование в виде кадров, первый кадр уточняющего уровня диагонально предсказывают на основе последнего поля потока базового уровня. Когда выполняют обратное переключение, с кодирования в виде кадров на кодирование в виде полей, следующее поле (или поля) может предсказываться на основе последнего поля (или полей), кодированного или декодированного перед предыдущим переключением с кодирования в виде полей на кодирование в виде кадров. На фиг. 11 это показано при помощи стрелок 114, 116. В примере фиг. 12, когда происходит переключение с кодирования в виде кадров на кодирование в виде полей, первые два поля уточняющего уровня диагонально предсказывают на основе последнего кадра в потоке базового уровня. Когда выполняют обратное переключение, с кодирования в виде полей на кодирование в виде кадров, следующий кадр может предсказываться на основе последнего кадра, кодированного или декодированного перед предыдущим переключением с кодирования в виде кадров на кодирование в виде полей. На фиг. 12 это показано стрелкой 118.
[0386] Далее будут кратко описаны некоторые из неограничивающих примеров осуществления настоящего изобретения, которые используют для определения местоположения кодированных полей и кодированных кадров в уровнях. В одном из примеров осуществления настоящего изобретения предложена своего рода «лесенка» из уровней, кодируемых в виде кадров и в виде полей, в соответствии с иллюстрацией фиг. 13. Согласно этому примеру, когда выполняют переключение с кодированных кадров на кодированные поля или наоборот, для межуровневого предсказания кодированных полей на основе кадров, или наоборот, задействуют второй уровень сверху. В примере ситуации, показанной на фиг. 13, пропускаемые изображения 108, 109 кодируют в уровне, на который выполняют переключения, когда выполняют переключение с кодированных полей на кодированные кадры или наоборот, однако схема кодирования может быть реализована аналогичным образом и при использовании диагонального межуровневого предсказания. На фиг. 13 базовый уровень содержит кодированные поля 100 чересстрочного исходного сигнала. В точке, где должно произойти переключение с кодированных полей на кодированные кадры в верхнем уровне передают пропускаемое изображение 108 (в данном примере - это первый уточняющий уровень EL1), за которым следуют закодированные в кадре пары 106 полей. Пропускаемый кадр 108 может быть сформирован с использованием межуровневого предсказания на основе низлежащего уровня (например, на основе уровня, из которого выполняется переключение) В точке, где должно произойти переключение с кодированных кадров на кодированные поля в еще более высоком уровне передают пропускаемое изображение 109 (в данном примере - это второй уточняющий уровень EL1), за которым следуют кодированные поля 112. Переключение между кодированными кадрами и кодированными полями может быть реализовано с использованием межуровневого предсказания до тех пор, пока не будет достигнут максимальный уровень, при кодировании IDR-изображения или BLA-изображения (или аналогичного им) это изображение может кодироваться в самом нижнем уровне (базовом уровне или первом уточняющем уровне), содержащем кодированные кадры или кодированные поля, в зависимости от того, определено ли, что IDR-изображение или BLA-изображение кодировано в виде кодированного кадра или кодированного поля соответственно. На фиг. 13 проиллюстрирована конфигурация, в которой базовый уровень содержит кодированные поля, однако нужно понимать, что может быть реализована аналогичная конфигурация, в который базовый уровень содержит кодированные кадры, первый уточняющий уровень (EL1) содержит кодированные поля, второй уточняющий уровень (EL2) содержит кодированные кадры, третий уточняющий уровень (EL3) содержит кодированные поля и т.п.
[0387] Кодер может указывать на использование адаптивного изменения разрешения для битового потока, кодированного с использованием «лесенки» из уровней с кодированными полями и кадрами, в соответствии с иллюстрацией фиг. 13. Например, кодер может назначать флаг single_layer_for_non_irap_flag, равным 1, в информации VUI набора VPS битового потока, кодированного с использованием MV-HEVC, SHVC и/или аналогичной схемы. Кодер может указывать на использование пропускаемых изображений для битового потока, кодированного с использованием «лесенки» из уровней с кодированными полями и кадрами, в соответствии с иллюстрацией фиг. 13. Например, кодер может назначать higher_layer_irap_skip_flag, равным 1, в информации VUI набора VPS битового потока, кодированного с использованием MV-HEVC, SHVC и/или аналогичной схемы.
[0388] Если подбуферы DPB организованы с использованием описанного выше подхода с привязкой к разрешению, для уровней, имеющих одинаковые ключевые свойства, такие как ширину изображения, ширину изображения, формат цветности, битовую глубины и/или формат цвета, или цветовой охват, применяют один разделяемый подбуфер DPB. К примеру, на примере фиг. 13, базовый уровень и второй уточняющий уровень могут иметь один общий подбуфер DPB. В общем случае, в примере осуществления настоящего изобретения, где кодируют и/или декодируют «лесенку» из уровней кодированных в виде кадров и в виде полей, как это было описано в предыдущем абзаце, для множества уровней может совместно использоваться один подбуфер DPB. В соответствии с предшествующим описанием, в стандарте HEVC и его расширениях, набор опорных изображений декодируют после начала декодирования изображения. Затем, по завершении декодирования изображения, это изображение и все его опорные изображения помечают как «используемые в качестве опорных», и следовательно, оставляют в DPB-буфере. Эти опорные изображения могут быть помечены как «не используемые в качестве опорных», самое раннее тогда, когда будет декодировано следующее изображение того же уровня (если текущее изображение не является неопорным изображением подуровня с наивысшим декодированным Temporalld), или когда будут декодированы все изображения, для которых текущее изображение может быть использовано в качестве опорного при межуровневом предсказании (когда текущее изображение является неопорным изображением подуровня с наивысшим декодированным Temporalld). После этого многие изображения могут по прежнему оставаться помеченными как «используемые в качестве опорных» и сохранять свое место в буферах хранения изображений в DPB буфере, даже если они не будут использоваться в качестве опорных ни для каких последующих изображений в порядке декодирования.
[0389] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо от других вариантов осуществления настоящего изобретения или вместе с ними, в частности, вместе с вариантом осуществления настоящего изобретения, рассмотренном на примере фиг. 13, кодер или другой элемент может включать в битовый поток команды, или аналогичные структуры, которые обеспечивают маркировку опорного изображения как «не используемого в качестве опорного» в заданном уровне до того, как начнется декодирование следующего изображения этого уровня. Примеры подобных команд, включают, без ограничения перечисленным, описанные ниже команды.
- Включение в битовый поток набора опорных изображений (reference picture set, RPS), который должен применяться после декодирования изображения внутри данного уровня. Такой набор RPS может называться постдекодированным набором RPS. Постдекодированный набор RPS может применяться, например, когда завершено декодирование изображения, перед декодированием следующего изображения в порядке декодирования. Если изображение в текущем уровне может быть использовано в качестве опорного изображения межуровневого предсказания, постдекодированный набор RPS, декодированный после завершения декодирования изображения, может не приводить к пометке текущего изображения как «не используемого в качестве опорного», поскольку оно все еще может применяться в качестве опорного для межуровневого предсказания. Альтернативно, постдекодированный набор RPS может применяться, например, после завершения декодирования блока доступа (это гарантирует, что никакое изображение, все еще используемое в качестве опорного для межуровневого предсказания, не будет помечено как «не используемое в качестве опорного»). Постдекодированный набор RPS может включаться например, в специальный NAL-блок, в суффиксный NAL-блок или в префиксный NAL-блок, и/или в расширение заголовка слайса. Может предъявляться требование, чтобы постдекодированный набор RPS был идентичен набору RPS следующего изображения в том же уровне, или чтобы он обеспечивал сохранение тех же изображений в буфере DPB. Может предъявляться требование, например, в стандарте кодирования, чтобы постдекодированный набор RPS не вызывал маркировки изображений, чей Temporalld меньше текущего изображения, как «не используемых в качестве опорных». Включение в битовый поток синтаксической структуры набора опорных изображений (RPS), которая может называться отложенным постдекодированным набором RPS. Отложенный постдекодированный набор RPS может быть связан с указанием, которое определяет, например, местоположение, в порядке декодирования (следующее за текущем изображением в порядке декодирования) или изображение, расположенного далее в порядке декодирования (относительно текущего изображения). Указание, например, может представлять собой значение разности POC, которое, при сложении с POC текущего изображения позволяет определить второе значение POC, так что если декодировано изображение с POC большим или равным упомянутому второму значению POC, может быть декодирован отложенный постдекодированный набор RPS (до или после декодирования изображения, в соответствии с предварительным определением, например, в стандарте кодирования, или в соответствии с указанием в битовом потоке). В другом примере указание может представлять собой значение разности frame_num (или аналогичное значение) которое, при сложении с frame_num (или аналогичным значением) текущего изображения позволяет определить второе значение frame_num (или аналогичное значение), так что если декодировано изображение с frame_num (или аналогичным значением) большим или равным упомянутому второму значению frame_num (или аналогичному значению), может быть декодирован отложенный постдекодированный набор RPS (до или после декодирования изображения, в соответствии с предварительным определением, например, в стандарте кодирования, или в соответствии с указанием в битовом потоке).
- Включение, например, в заголовок сегмента слайса, к примеру, с использованием битовой позиции синтаксического элемента slice_reserved[i] в заголовке сегмента слайса HEVC, флага, который обеспечивает маркировку всех изображений внутри уровня (включая текущее изображение, для которого этого флаг установлен равным 1) как «не используемых в качестве опорных» после декодирования текущего изображения, например, когда блок доступа, содержащий текущее изображение, будет полностью декодирован. Это флаг может включать или исключать текущее изображение (т.е. изображение, содержащее слайс, в котором этот флаг находится) в свой семантике, - это может быть заранее задано в стандарте кодирования или независимо указано в битовом потоке.
- Упомянутый выше флаг может зависеть от Temporalld, то есть, обеспечивать маркировку как «не используемых в качестве опорных» изображений со значениями Temporalld, большими или равными Temporalld текущего изображения (причем семантика флага в остальном может быть идентична описанной выше) или обеспечивать маркировку изображений со значениями Temporalld, строго больше Temporalld текущего изображения (причем семантика флага в остальном также может быть идентична описанной выше).
- Команда ММСО или аналогичная структура, обеспечивающая маркировку декодированных опорных изображений.
[0390] Декодер и/или HRD-декодер, и/или другой элемент, например, сетевой элемент, способный анализировать мультимедийные данные, может декодировать одну или более из упомянутых выше команд, или аналогичных структур, из битового потока и после этого помечать опорные изображения как «не используемые в качестве опорных». Маркировка изображения как «не используемого в качестве опорного» может влиять на очистку или освобождение ресурсов буфером хранения изображений в DPB-буфере, в соответствии с предшествующим описанием.
[0391] Кодер может кодировать одну или более из упомянутых выше команд, или аналогичных структур, в битовый поток, когда выполняют переключение с кодированных полей на кодированные кадры или наоборот. Одна или более из упомянутых выше команд, или аналогичных структур, могут быть включены в последнее, в порядке декодирования, изображение исходного уровня переключения (т.е. опорного уровня, например, базового уровня на фиг. 13 при переключении уровней на изображении 108), перед переключением на кодированные изображения в другом уровне (т.е. предсказываемом уровне, например, первый уточняющий уровень EL1 на фиг. 13 при переключении уровней на изображении 108). Одна или более из упомянутых выше команд, или аналогичных структур, могут вызывать маркировку изображений в исходном уровне переключения как «не используемых в качестве опорных», и впоследствии, также очищения буферов хранения изображений DPB.
[0392] В текущих проектах MV-HEVC и SHVC имеется функциональность, которую иногда называют «ранней маркировкой», которая позволяет помечать неопорное изображение подуровня как «не используемое в качестве опорного», если его Temporalld равен наивысшему декодированному значению Temporalld (т.е. наивысшему Temporalld используемой в текущий момент рабочей точки), и если декодированы все изображения, для которых это неопорное изображение подуровня может применяться в качестве опорного изображения межуровневого предсказания. Соответственно, буфер хранения изображений может очищаться быстрее, по сравнению с ситуацией, когда раннюю маркировку не применяют, что позволяет снизить максимально требуемую вместимость DPB-буфера, в особенности, при функционировании подбуферов DPB в режиме привязки к разрешению. Однако имеется сложность, которая заключается в том, что не всегда известно, каким будет наивысшее значение nuh_layer_id в битовом потоке и/или в конкретном блоке доступа, где применяют раннюю маркировку. Следовательно, первое изображение может оставаться помеченным как «используемое в качестве опорного», если ожидалось, или если была возможность (например, исходя из информации, относящейся к последовательности, такой как набор VPS), что этот блок доступа мог содержать последующие изображения (в порядке декодирования), для которых первое изображение могло бы использоваться в качество опорного изображения межуровневого предсказания.
[0393] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения, раннюю маркировку, в соответствии с описанием в предыдущем абзаце, применяют не только после декодирования изображения внутри блока доступа (например, после декодирования каждого изображения), но также и после того, как будут декодированы все изображения блока доступа, ток, что каждое неопорное изображение подуровня блока доступа будет помечено как «не используемое в качестве опорного», если его Temporalld равен наивысшему декодированному Temporalld (т.е. наивысшему Temporalld используемой в текущий момент рабочей точки). Таким образом, даже если блок доступа не содержит изображений во всех предсказываемых уровнях, как «не используемые в качестве опорных» помечают изображения в опорных уровнях.
[0394] Однако остается проблема, связанная с отсутствием информации о том, каким было последнее кодированное изображение или последний NAL-блок блока доступа перед приемом одного или более NAL-блоков следующего блока доступа. Поскольку следующий блок доступа может быть принят не сразу после окончания декодирования текущего блока доступа, может присутствовать задержка, по которой можно распознать последнее кодированное изображение или NAL-блок блока доступа, которая, соответственно, предшествует процедурам, подлежащим выполнению после декодирования всех кодированных изображений блока доступ, например, ранней маркировке, которую выполняют в конце декодирования блока доступа, в соответствии с описанием в предыдущем абзаце.
[0395] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения кодер кодирует в битовый поток указание, например, NAL-блок типа «конец NAL-блока» (end-of-NAL-unit, EoNALU), которым помечают последний, в порядке декодирования, фрагмент данных блока доступа. В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения декодер декодирует из битового потока указание, например, NAL-блок типа «конец NAL-блока» (end-of-NAL-unit, EoNALU), которым помечают последний, порядке декодирования фрагмент данных блока доступа. В ответ на декодирование такого указания декодер выполняет процедуры, подлежащие выполнению после декодирования всех кодированных изображений блока доступа, но перед декодированием следующего, в порядке декодирования, блока доступа. Например, в ответ на декодирование подобного указания декодер выполняет раннюю маркировку в конце декодирования блока доступа, в соответствии с описанием в предыдущем абзаце и/или процедуру определения PicOutputFlag для изображений блока доступа, в соответствии с предшествующим описанием. Может допускаться отсутствие NAL-блока EoNALU, например, в случае присутствия в блоке доступа последнего NAL-блока последовательности или последнего NAL-блока битового потока.
[0396] В другом примере осуществления настоящего изобретения размещение кодированных полей и кодированных кадров может быть реализовано в виде связанных пар уровней с двунаправленным межуровневым предсказанием. Один из примеров такого подхода показан на фиг. 14. В такой конфигурации пару уровней связывают друг с другом, в результате чего они не могут образовывать традиционное иерархическое отношение и не могут входить в отношение однонаправленного межуровневого предсказания, однако при этом образуют пару или группу уровней, в которой может выполняться двунаправленное межуровневое предсказание. На такую связанную пару уровней может выполняться явное указание, и при извлечении битового подпотока связанная пара уровней может обрабатываться как единое целое, извлекаемое из битового потока или сохраняемое в нем, однако ни один из уровней связанной пары не может быть извлечен из битового потока отдельно (без извлечения второго уровня). Поскольку ни один из уровней связанной пары не является корректным для процедуры декодирования базового уровня (поскольку не применяется межуровневое предсказание), оба этих уровня могут быть уточняющими. Сигнализация зависимости уровней (например, в наборе VPS) может быть модифицирована так, чтобы связанные пары уровней обрабатывались особым образом, например, как единое целое, при указании на зависимости уровней (при этом может делаться вывод о том, что межуровневое предсказание уровней связанной пары уровней разрешено). На фиг. 14 использовано диагональное межуровневое предсказание, которое позволяет указать, какие из опорных изображений в опорном уровней могут быть использованы как опорные для предсказания изображения в текущем уровне. Система кодирования может быть реализована аналогичным способом и с использованием традиционного (линейного) межуровневого предсказания, при условии, что порядок (де)кодирования изображений в различных блоках доступа может отличаться и использоваться для определения, является ли уровень N опорным для уровня М или наоборот.
[0397] В еще одном примере осуществления настоящего изобретения размещение кодированных полей и кодированных кадров может быть реализовано в виде связанных пар в битовых потоках уточняющих уровней с внешним базовым уровнем. Один из примеров такой системы кодирования, называемой «битовыми потоками со связанной парой уточняющих уровней и внешним базовым уровнем», показан на фиг. 15. В такой системе кодируют два битовых потока, один из которых содержит кодированные кадры, представляющие комплементарные пары полей чересстрочных исходных видеоданных, а второй содержит кодированные поля. Оба битовых потока кодируют в виде битовых потоков уточняющих уровней с масштабируемостью с гибридным кодеком. Другими словами в обоих битовых потоках кодируют только уточняющий уровень и указывают, что базовый уровень является внешним. Эти битовые потоки могут мультиплексироваться в мультиплексированный битовый поток, который не обязательно должен соответствовать формату битового потока для процедуры декодирования уточняющего уровня. Альтернативно, эти битовые потоки могут храниться и/или передаваться с использованием отдельных логических каналов, например, отдельных треков в контейнерном файле или отдельных PID в транспортном потоке MPEG-2. Формат мультиплексированного битового потока и/или другая сигнализация (например, в метаданных формата файла или в протоколе связи) может определять, какие из изображений первого битового потока используются в качестве опорных для предсказания изображений во втором битовом потоке и/или наоборот, и/или определять пары, или группы, изображений в первом и втором битовых потоках, входящих в подобное отношение предсказания между битовыми потоками или межуровневого предсказания. Когда для предсказания кодированного кадра используют кодированное поле, его разрешение может быть повышено, в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не являются частью процесса декодирования первого битового потока. Когда для предсказания кодированного кадра используют комплементарную пару кодированных полей второго битового потока, эти поля могут быть представлены с чередованием (строк) в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не являются частью процесса декодирования первого битового потока. Когда для предсказания кодированного поля используют кодированный кадр, его разрешение может быть уменьшено, или из него может быть излечена вторая строка отсчетов, в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не являются частью процесса декодирования первого битового потока. На фиг. 15 показан пример, в котором для изображений внешнего базового уровня используют диагональное межуровневое предсказание. Данная схема кодирования может быть реализована аналогичным образом, когда вместо использования диагонального межуровневого предсказания кодируют пропускаемые изображения. В соответствии с фиг. 16, когда для предсказания кодированного кадра используют кодированное поле, его разрешение может быть повышено, в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не являются частью процесса декодирования первого битового потока. Когда для предсказания кодированного кадра используют комплементарную пару кодированных полей второго битового потока, эти поля могут быть представлены с чередованием (строк) в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не является частью процесса декодирования первого битового потока. В обоих случаях упомянутый кодированный кадр может быть пропускаемым изображением. В соответствии с фиг. 16, когда для предсказания кодированного поля используют кодированный кадр, его разрешение может быть уменьшено, или из него может быть извлечена каждая вторая строка отсчетов, в процессе декодирования первого битового потока, или при помощи межпотоковой процедуры, которая не являются частью процесса декодирования первого битового потока, и при этом кодированное поле может являться пропускаемым изображением.
[0398] В некоторых из вариантов осуществления настоящего изобретения кодер может указывать в битовом потоке, и/или декодер может декодировать из битового потока, в отношении систем кодирования, аналогичных применяемым в различных вариантах осуществления настоящего изобретения, на одно или более из описанного ниже.
- Битовый поток (или мультиплексированный битовый поток в некоторых из вариантов осуществления настоящего изобретения, например, в варианте осуществления настоящего изобретения, показанном на фиг. 15) является представлением чересстрочных исходных видеоданных. При кодировании на базе HEVC такое указание может быть выполнено при помощи флага general_progressive_source_flag, равного 0, и флага general_interlaced_source_flag, равного 1, в синтаксических структурах profile_tier_level, применимых для данного битового потока.
- Последовательность выходных изображений (для которых указано на необходимость вывода кодером и/или вывода декодером) является представлением чересстрочных исходных видеоданных.
- Может быть указано, состоит ли уровень из кодированных изображений, являющихся представлением кодированных полей или кодированных потоков. При кодировании на базе HEVC такое указание может быть выполнено с помощью флага field_seq_flag в информации VUI SPS. Для каждого уровня может быть активирован отличающийся набор SPS, и поэтому флаг field_seq_flag может назначаться индивидуально для каждого уровня.
- Каждый момент времени, или блок доступа, в соответствующей последовательности содержит либо одиночное изображение из одиночного уровня (которое не обязательно должно быть изображением базового уровня), либо содержит два изображения, из которых изображение верхнего уровня является IRAP-изображением. При кодировании на базе HEVC (например, SHVC) такое указание может быть выполнено при помощи флага single_layer_for_non_irap_flag, равного 1. В таком случае дополнительно может быть указано на то. Что когда имеются два изображения для одного момента времени или блока доступа, изображение в верхнем уровне является пропускаемым изображением. При кодировании на базе HEVC такое указание может выполняться при помощи флага higher_layer_irap_skip_flag, равного 1.
- Каждый момент времени, или блок доступа, в соответствующей последовательности содержит одиночное изображение из единственного уровня.
[0399] Упомянутые выше указания могут располагаться, например, в одной или более синтаксических структур, относящихся к последовательности, например, VPS, SPS, VPS VUI, SPS VUI и/или в одном или более сообщениях SEI.
Альтернативно или в дополнение упомянутые выше указания могут располагаться, например, в метаданных формата контейнерного файла, например, в конфигурационной записи декодера в случае ISOBMFF, и/или в заголовках протокола связи, например, в дескрипторе (или дескрипторах) транспортного потока MPEG-2.
[0400] В некоторых из вариантов осуществления настоящего изобретения кодер может указывать в битовом потоке, и/или декодер может декодировать из битового потока, в отношении систем кодирования, аналогичных применяемым в различных вариантах осуществления настоящего изобретения, на одно или более из описанного ниже.
- Для кодированного поля, указание на верхнее поле или на нижнее поле.
- Для кодированного поля, которое может использоваться в качестве опорного для межуровневого предсказания, и/или для кодированного кадра, который предсказывают с помощью межуровневого предсказания, вертикальное фазовое смещение для повышающего разрешение фильтра, применяемого к полю.
- Для кодированного поля, которое может использоваться в качестве опорного для межуровневого предсказания, и/или для кодированного кадра, который предсказывают с помощью межуровневого предсказания, указание на вертикальное смещение кодированного поля с повышенным разрешением внутри этого кодированного кадра. К примеру, может использоваться сигнализация, аналогичная смещениям масштабируемого опорного уровня SHVC, однако для каждого изображения индивидуально.
- Для кодированного кадра, который может использоваться в качестве опорного для межуровневого предсказания и/или для кодированного поля, которое предсказывают с помощью межуровневого предсказания, исходное вертикальное смещение в кадре и/или коэффициент вертикальной децимации (например, описанный выше VertDecimationFactor), применяемые при изменении разрешения кадра.
[0401] Упомянутые выше указания могут располагаться, например, в одной или более синтаксических структур, относящихся к последовательности, например, VPS и/или SPS. Может быть определено, что эти указания применимы только для подмножества блоков доступа или изображений, например, исходя из указанных уровней, подуровней или значений Temporalld, типов изображений и/или типов NAL-блоков. К примеру, синтаксическая структура, относящаяся к последовательности, может включать одно или более упомянутых выше указаний для пропускаемых изображений. Альтернативно или в дополнение упомянутые выше указания могут располагаться в синтаксических структурах, относящихся к блоку доступа, изображению или слайсу, например, наборах PPS, APS, заголовке или разделителе блока доступа, заголовке или разделителе изображения и/или заголовке слайса. Альтернативно или в дополнение упомянутые выше указания могут располагаться, например, в метаданных формата контейнерного файла, например, в дополнительной информации сэмпла в случае ISOBMFF, и/или в заголовках протокола связи, например, в дескрипторе (или дескрипторах) транспортного потока MPEG-2.
[0402] Ниже будут описаны некоторые из дополнительных и/или альтернативных вариантов осуществления настоящего изобретения
[0403] Межуровневое предсказание с уточнением качества
[0404] В одном из вариантов осуществления настоящего изобретения первая несжатая комплементарная пара полей идентична второй несжатой комплементарной паре полей или представляет идентичный момент времени. Можно считать, что изображение уточняющего уровня, которое представляет тот же момент времени, что и изображение базового уровня, может повышать качество одного или обоих полей в изображении базового уровня. На фиг. 17 и 18 представлены примеры, аналогичные примерам фиг. 9 и 10, соответственно, но в них, вместо пропускаемых изображений в уточняющем уровне EL, качество одного или более полей кадра или пары полей базового уровня может повышаться при помощи изображения (или изображений) уточняющего уровня, сорасположенного с кадром или парой полей базового уровня.
[0405] Разнесение верхних и нижних полей в различные уровни
[0406] В первой версии стандарта HEVC имеется поддержка указания на чересстрочные исходные данные, например, при помощи флага field_seq_flag в информации VUI и элемента pic_struct в SEI-сообщении синхронизации изображений. Однако возможность корректного отображения чересстрочных исходных данных зависит от процедуры отображения. Допускается, что проигрыватели могут игнорировать такие указания, как синтаксический элемент pic_struct в SEI-сообщениях синхронизации изображений и отображать поля так, как если бы они были кадрами, что может приводить к неудовлетворительным характеристикам воспроизведения. За счет разнесения полей различной четности по различным уровням декодеры базового уровня могут отображать поля только одной четности, что позволяет добиться стабильных и удовлетворительных характеристик при отображении.
[0407] Различные варианты осуществления настоящего изобретения могут быть реализованы таким образом, чтобы верхние и нижние поля располагались в различных уровнях. На фиг. 19 проиллюстрирован пример, аналогичный примеру фиг. 11. Чтобы обеспечить возможность разнесения верхних и нижних полей в различные уровни, может быть разрешено изменение разрешения изображений опорного уровня, когда коэффициент масштабирования равен 1, при определенных условиях, например, когда указано конкретное вертикальное фазовое смещение для фильтрации, и/или когда указано, что изображение опорного уровня является полем заданной четности, тогда как предсказываемое изображение является полем противоположной четности.
[0408] PAFF-кодирование с масштабируемыми уровнями и чересстрочно-прогрессивной масштабируемостью в одном битовом потоке
[0409] В некоторых из вариантов осуществления настоящего изобретения PAFF-кодирование может быть реализовано с использованием одного или более из описанных выше вариантов осуществления настоящего изобретения. В дополнение могут также кодироваться и/или декодироваться один или более уровней, являющихся уточнением прогрессивных исходных данных, например, в соответствии с предшествующим описанием. При кодировании и/или декодировании уровня, являющегося представлением прогрессивных исходных видеоданных, его опорным уровнем может быть уровень, который содержит кодированные кадры из комплементарных пар полей, являющихся представлением чересстрочных исходных видеоданных, и/или один или два уровня, содержащих кодированные поля.
[0410] Необходимо отметить, что использование указаний, связанных с типом сканирования исходных видеоданных (прогрессивным или чересстрочным) и типом изображение (кадр или поле) в MV-HEVC/SHVC на данный момент не определено четко, по описанным ниже причинам.
- В синтаксической структуре profile_tier_level() имеются флаги general_progressive_source_flag и general_interlaced_source_flag. В стандарте MV-HEVC/SHVC с набором выходных уровней связана синтаксическая структура profile_tier_level(). Однако семантика general_progressive_source_flag и general_interlaced_source_flag относится к CVS, что, по видимому, означает все уровни, а не только уровни из набора выходных уровней, с которым связана синтаксическая структура profile_tier_level().
- В отсутствие информации VUI набора SPS флаги general_progressive_source_flag и general_interlaced_source_flag используют для получения значения frame_field_info_present_flag, который определяет, присутствуют ли в SEI-сообщениях синхронизации изображений синтаксические элементы pic_struct, source_scan_type, и duplicate_flag. Однако general_progressive_source_flag и general_interlaced_source_flag отсутствуют в наборах SPS при nuh_layer_id больше 0, поэтому неясно, какая из синтаксических структур profile_tier_level() будет использована для получения general_interlaced_source_flag.
[0411] Кодер может кодировать одно или более указаний в битовый поток, а декодер может декодировать одно или более указаний из битового потока, например, в такой синтаксической структуре (или из синтаксической структуры), относящейся к последовательности, как набор VPS, при этом упомянутые указания могут указывать, например, для каждого уровня, является ли уровень представлением чересстрочных исходных видеоданных или прогрессивных исходных видеоданных.
[0412] Альтернативно или дополнительно, в расширениях стандарта HEVC, в синтаксисе и/или семантике, и/или кодировании, и/или декодировании, могут быть выполнены описанные ниже изменения.
- Синтаксис набора SPS модифицируют таким образом, чтобы он включал синтаксические элементы layer_progressive_source_flag и layer_interlaced_source_flag_syntax, которые включают в набор SPS, когда в наборе SPS отсутствует profile_tier_level(). Эти синтаксические элементы определяют тип сканирования исходных видеоданных, аналогично тому, как general_progressive_source_flag и general_interlaced_source_flag в наборе SPS при nuh_layer_id равном 0 определяют тип сканирования исходных видеоданных для базового уровня.
Когда флаги general_progressive_source_flag, general_interlaced_source_flag, general_non_jacked_constraint_flag и general_frame_only_constraint_flag появляются в наборе SPS, они применимы к тем изображениям, для которых данный набор SPS является активным набором SPS.
Когда флаги general_progressive_source_flag, general_interlaced_source_flag, general_non_jacked_constraint_flag и general_frame_only_constraint_flag появляются в синтаксической структуре profile_tier_level(), связанной с набором выходных уровней, они применимы к выходным уровням и альтернативным выходным уровням (если они имеются) этого набора выходных уровней.
- Ограничения и способ вычисления значения флага frame_field_info_present_flag (в информации VUI набора SPS) получают на основе флагов general_progressive_source_flag и general_interlaced_source_flag, если они присутствуют в наборе SPS, и в противном случае - на основе флагов layer_progressive_source_flag and layer_interlaced_source_flag.
[0413] Альтернативно или в дополнение, в расширениях стандарта HEVC, семантика флагов general_progressive_source_flag и general_interlaced_source_flag может быть дополнена в соответствии с приведенным ниже описанием. Когда синтаксическую структуру profile_tier_level() включают в набор SPS, который является активным набором SPS для независимого уровня, флаги general_progressive_source_flag и general_interlaced_source_flag указывают на то, содержит ли данный уровень чересстрочные или прогрессивные исходные видеоданные, или тип исходных видеоданных неизвестен, или на то, что тип исходных видеоданных указывают для каждого изображения индивидуально. Когда синтаксическая структура profile_tier_level() входит в набор VPS, флаги general_progressive_source_flag и general_interlaced_source_flag указывают, содержат ли выходные изображения чересстрочные или прогрессивные исходные видеоданные, или тип исходных видеоданных неизвестен, или на то, что тип исходных видеоданных указывают для каждого изображения индивидуально, причем выходные изображения определяют согласно набору выходных уровней, ссылающемуся на данную синтаксическую структуру profile_tier_level().
[0414] Альтернативно или в дополнение, в расширениях стандарта HEVC, семантика флагов general_progressive_source_flag и general_interlaced_source_flag может быть дополнена в соответствии с приведенным ниже описанием. Флаги general_progressive_source_flag и general_interlaced_source_flag в синтаксической структуре profile_tier_level(), связанной с набором выходных уровней, указывают на то, содержат ли уровни из набора выходных уровней чересстрочные или прогрессивные исходные видеоданные, или тип исходных видеоданных неизвестен, или на то, что тип исходных видеоданных указывают для каждого изображения индивидуально. Если в наборе выходных уровней есть уровни, которые представляют другой тип сканирования, а не тот, который указан в наборе VPS для набора выходных уровней, то активный набор SPS для этих уровней включает синтаксическую структуру profile_tier_level(), где значения general_progressive_source_flag и general_interlaced_source_flag указывают на отличающийся тип сканирования.
[0415] Описанные выше варианты осуществления настоящего изобретения позволяют выполнять адаптивное к изображению кодирование полей-кадров для чересстрочных исходных видеоданных с использованием масштабируемого видеокодирования, например, SHVC, без необходимости модификации низкоуровневых инструментов кодирования. Может также обеспечиваться возможность предсказания кодированных полей и кадров на основе друг друга, благодаря чему может быть достигнута высокая эффективность сжатия, сравнимая со сжатием в кодеках, где для предсказания кодированных кадров и полей на основе друг друга адаптируют низкоуровневые инструменты кодирования.
[0416] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. Кодер, мультиплексор, или аналогичный элемент с целью обеспечения масштабируемости с гибридным кодеком может кодировать и/или включать, в битовый поток базового уровня, SEI-сообщения, которые могут быть названы SEI-сообщениями свойств HEVC. SEI-сообщения свойств HEVC могут быть вложены, например, в SEI-сообщения масштабируемости с гибридным кодеком. В SEI-сообщениях свойств HEVC может быть указано одно или более из описанного ниже.
- Синтаксические элементы, используемые для определения значений входных переменных для соответствующего изображения внешнего базового уровня, согласно требованиями MV-HEVC, SHVC или других стандартов. Например, SEI-сообщение может включать указание на то, является ли данное изображение IRAP-изображением для процедуры декодирования уточняющего уровня, и/или указание на тип изображения.
- Синтаксические элементы, используемые для идентификации изображения или блока доступа в битовом потоке уточняющего уровня, для которого соответствующее изображение базового уровня является изображением опорного уровня, которое может применяться в качество опорного для межуровневого предсказания. Например, могут быть включены синтаксические элементы, относящиеся к периоду сброса POC и/или POC.
- Синтаксические элементы, используемые для указания на то, что изображение или блок доступа в битовом потоке уточняющего уровня, который непосредственно предшествует в порядке декодирования соответствующему изображению базового уровня или непосредственно следует за ним, является изображением опорного уровня. К примеру, если изображение базового уровня выступает в роли BLA-изображения при декодировании уточняющего уровня, и при этом считается, что ни одно из изображений битового потока уточняющего уровня не соответствует тому же моменту времени, что и данное BLA-изображение, может быть необходимо указание, какое изображение в битовом потоке уточняющего уровня предшествует BLA-изображению или следует за ним, поскольку BLA-изображение может влиять на декодирование битового потока уточняющего уровня.
- Синтаксические элементы, указывающие на необходимость изменения разрешения для соответствующего изображения или изображений (например, комплементарной пары полей) перед предоставлением этого изображения в качестве декодированного изображения внешнего базового уровня для декодирования уточняющего уровня и/или в качестве части обработки данных при межуровневом предсказании для декодированного изображения внешнего базового уровня в процессе декодирования уточняющего уровня.
[0417] В одном из вариантов осуществления настоящего изобретения для SEI-сообщений со свойствами HEVC может использоваться описанный ниже, или аналогичный, синтаксис.
[0418] Семантика SEI-сообщения со свойствами HEVC может быть определена описанным ниже образом. Флаг hevc_irap_flag, равный 0, определяет, что соответствующее изображение не является IRAP-изображением внешнего базового уровня. Флаг hevc_irap_flag, равный 1, определяет, что соответствующее изображение является IRAP-изображением внешнего базового уровня. Hevc_irap_type, равный 0, 1 или 2 определяет, что nal_unit_type равен IDR_W_RADL, CRA_NUT и BLA_W_LP, соответственно, когда соответствующее изображение используют в качестве изображения внешнего базового уровня. Элемент hevc_poc_reset_period_id определяет значение poc_reset_period_id соответствующего блока доступа HEVC. Если hevc_pic_order_cnt_val_sign равен 1, hevcPoc принимают равным hevc_abs_pic_order_cnt_val; в противном случае hevcPoc принимают равным hevc_abs_pic_order_cnt_val - 1. При этом hevcPoc определяет значение PicOrderCntVal соответствующего блока доступа HEVC внутри периода сброса POC, заданного hevc_poc_reset_period_id.
[0419] В дополнение к SEI-сообщению со свойствами HEVC, или вместо него, информация, аналогичная предоставляемой в синтаксических элементах SEI-сообщений, может представляться в другом месте, например, в одном или более из описанных ниже элементов.
- В префиксных NAL-блоках (или аналогичных структурах), связанных с изображениями базового уровня внутри битового потока базового уровня. В NAL-блоках для инкапсуляции уточняющего уровня (или аналогичных структурах) внутри битового потока базового уровня.
- В NAL-блоках для инкапсуляции базового уровня (или аналогичных структурах) внутри битового потока уточняющего уровня.
- В SEI-сообщениях или в указаниях внутри SEI-сообщений внутри битового потока уточняющего уровня.
- Метаданные, соответствующие формату файла, которые располагаются в файле, или на которые ссылается файл, включающий битовый поток базового уровня и битовый поток уточняющего уровня, или ссылающийся на них. Например, для трека, включающего базовый уровень, может использоваться вспомогательная информация сэмпла, информация о группировании сэмплов и/или треки синхронизированных метаданных базового формата медиафайлов ISO.
- Метаданные в протоколе связи, например, в дескрипторах транспортного потока MPEG-2.
[0420] Далее будет рассмотрен один из примеров осуществления настоящего изобретения, относящийся к предоставлению свойств изображений базового уровня, аналогичных описанному выше SEI-сообщению со свойствами HEVC, при помощи механизма вспомогательной информации сэмплов базового формата медиафайлов ISOBMFF. Когда в многоуровневом битовом потоке HEVC используют внешний базовый уровень (например, когда активный набор VPS битового потока HEVC имеет флаг vps_base_layer_internal_flag, равный 0), вспомогательная информация сэмплов, с использованием aux_info_type, равного 'Ihvc' (или какому-либо другому выбранному четырехсимвольному коду) и aux_info_type_parameter, равного 0 (или какому-либо другому значению), предоставляется, например, формирователем файла, для трека, для которого внешний базовый уровень может использоваться в качестве опорного для межуровневого предсказания. Хранение вспомогательной информации сэмплов соответствует спецификации формата ISOBMFF. Синтаксис вспомогательной информации сэмпла при aux_info_type, равном ‘Ihvc’ имеет следующий, или аналогичный, вид:
[0421] Семантика вспомогательной информации сэмпла при aux_info_type, равном ‘Ihvc’, может быть определена описанным ниже образом или аналогично. В упомянутой семантике, термин «текущий сэмпл» относится к сэмплу, с которым связана эта вспомогательная информация сэмпла и которая должна быть предоставлена для декодирования сэмпла.
- Флаг bl_pic_used_flag, равный 0, указывает, что для декодирования текущего сэмпла не используется декодированное изображение базового уровня. Флаг bl_pic_used_flag, равный 1, указывает, что для декодирования текущего сэмпла может быть использовано декодированное изображение базового уровня.
- Флаг bl_irap_pic_flag указывает, когда bl_pic_used_flag равен 1, значение переменной BllrapPicFlag для соответствующего декодированного изображения, когда это декодированное изображение предоставляют в качестве декодированного изображения базового уровня для декодирования текущего сэмпла.
- Флаг bl_irap_nal_unit_type указывает, когда bl_pic_used_flag равен 1 и bl_irap_pic_flag равен 1, значение синтаксического элемента nal_unit_type для соответствующего декодированного изображения, когда это декодированное изображение предоставляют в качестве декодированного изображения базового уровня для декодирования текущего сэмпла.
- Смещение sample_offset задает, когда bl_pic_used_flag равен 1, относительный индекс соответствующего сэмпла в связанном треке. Декодированное изображение, полученное в результате декодирования соответствующего сэмпла в связанном треке, - это соответствующее декодированное изображение, которое должно быть предоставлено для декодирования текущего сэмпла. Смещение sample_offset, равное 0, указывает, что соответствующий сэмпл имеет такое же или наиболее близкое предшествующее время декодирования по сравнению со временем декодирования текущего сэмпла; sample_offset, равное 1, указывает, что соответствующий сэмпл представляет собой следующий сэмпл по сравнению с соответствующим сэмплом, извлеченным для sample_offset, равного 0; sample_offset, равное -1, указывает, что соответствующий сэмпл представляет собой предыдущий сэмпл по сравнению с соответствующим сэмплом, извлеченным для sample_offset, равного 0, и так далее.
[0422] Далее будет описан один из примеров осуществления настоящего изобретения, относящийся к анализу свойств изображений базового уровня, аналогичных описанному выше SEI-сообщению со свойствами HEVC, переданных при помощи механизма вспомогательной информации сэмплов базового формата медиафайлов ISOBMFF. Когда в многоуровневом битовом потоке HEVC используют внешний базовый уровень (например, когда активный набор VPS битового потока HEVC имеет флаг vps_base_layer_internal_flag, равный 0), вспомогательная информация сэмпла, с использованием aux_info_type, равного ‘Ihvc’ (или какому-либо другому выбранному четырехсимвольному коду) и aux_info-type_parameter, равного 0 (или какому-либо другому значению), анализируется, например, анализатором файла, для трека, для которого внешний базовый уровень может использоваться в качестве опорного для межуровневого предсказания. Синтаксис и семантика вспомогательной информации сэмпла при aux_info_type, равном ‘Ihvc’ может быть аналогичной описанным выше. Когда для сэмпла трека уточняющего уровня анализ показывает, что bl_pic_used_flag равен 0, это значит, что для процедуры декодирования уточняющего уровня текущего сэмпла (в треке уточняющего уровня) не предоставлено декодированного изображения базового уровня. Когда для сэмпла трека уточняющего уровня анализ показывает, что bl_pic_used_flag равен 1, декодируют указанное изображение базового уровня (если оно уже не было декодировано ранее) и декодированное изображение базового уровня предоставляют в процедуру декодирования уточняющего уровня текущего сэмпла. Когда анализ показывает, что флаг bl_pic_used_flag равен 1, анализируют по меньшей мере некоторые из синтаксических элементов bl_irap_pic_flag, bl_irap_nal_unit_type и sample_offset. Изображение базового уровня определяют при помощи синтаксического элемента sample_offset, в соответствии с предшествующим описанием. Вместе с декодированным изображением базового уровня, или в связи с ним, полученную в результате анализа информацию bl_irap_pic_flag и bl_irap_nal_unit_type (или любую аналогичную индикаторную информацию) также предоставляют в процедуру декодирования уточняющего уровня текущего сэмпла. Процедура декодирования уточняющего уровня может функционировать в соответствии с приведенным выше описанием.
[0423] Далее будет рассмотрен один из примеров осуществления настоящего изобретения, относящийся к предоставлению свойств изображения базового уровня, аналогично описанному выше SEI-сообщению со свойствами HEVC, при помощи структуры экстракторного NAL-блока внешнего базового уровня. Экстракторный NAL-блок внешнего базового уровня определен аналогично обычному экстракторному NAL-блоку в стандарте ISO/IEC 14496-15, однако с дополнительным наличием BllrapPicFlag и nal_unit_type для декодированных изображений базового уровня. Когда декодированное изображение базового уровня используют в качестве опорного для декодирования сэмплов уточняющего уровня, формирователь файлов (или другой элемент) включает в этот сэмпл уточняющего уровня экстракторный NAL-блок внешнего базового уровня, со значениями синтаксических элементов, указывающими на трек базового уровня, при этом сэмпл базового уровня используют в качестве входных данных при декодировании изображения базового уровня, и (опционально) диапазон байтов внутри сэмпла базового уровня используют в качестве входных данных при декодировании изображения базового уровня. Формирователь файлов также получает значения BllrapPicFlag и nal_unit_type для декодируемых изображений базового уровня и включает их в экстракторный NAL-блок внешнего базового уровня.
[0424] Далее будет рассмотрен один из примеров осуществления настоящего изобретения, относящийся к синтаксическому анализу свойств изображения базового уровня, аналогично описанному выше SEI-сообщению со свойствами HEVC, переданных при помощи структуры экстракторного NAL-блока внешнего базового уровня. Анализатор файлов (или другой элемент) выполняет анализ экстракторного NAL-блока внешнего базового уровня, извлекая его из сэмпла уточняющего уровня, и затем делает вывод о том, что декодированное изображение базового уровня может быть использовано в качестве опорного для декодирования этого сэмпла уточняющего уровня. Анализатор файлов, анализируя экстракторный NAL-блок внешнего базового уровня, получает информацию о том, какое из изображений базового уровня необходимо декодировать для получения декодированного изображения базового уровня, которое можно использовать в качестве опорного при декодировании сэмпла уточняющего уровня. Например, анализируя синтаксические элементы экстракторного NAL-блока внешнего базового уровня, указывающие на трек базового уровня, анализатор файлов может определять сэмпл базового уровня, используемый как входные данные при декодировании изображения базового уровня (или при помощи времени декодирования, в соответствии с приведенным выше описанием механизма экстракторов стандарта ISO/IEC14496-15), и (опционально) байтовый диапазон внутри сэмпла базового уровня, используемый в качестве входных данных при декодировании изображения базового уровня. Анализатор файлов может также получать значения BllrapPicFlag и nal_unit_type для декодируемых изображений базового уровня из экстракторного NAL-блока внешнего базового уровня. Вместе с декодированным изображением базового уровня, или в связи с ним, полученную в результате анализа информацию BllrapPicFlag и nal_unit_type (или любую аналогичную индикаторную информацию) также предоставляют в процедуру декодирования уточняющего уровня текущего сэмпла. Процедура декодирования уточняющего уровня может функционировать в соответствии с приведенным выше описанием.
[0425] Далее будет рассмотрен один из примеров осуществления настоящего изобретения, относящийся к предоставлению свойств изображений базового уровня, аналогичных описанному выше SEI-сообщению со свойствами HEVC, при помощи формата пакетирования, например, формата полезной нагрузки протокола RTP. Свойства изображений базового уровня могут предоставляться, например, при помощи одного или более из описанных ниже средств.
- Заголовок полезной нагрузки пакета, содержащего кодированное изображение уточняющего уровня (его фрагменты или полностью). К примеру, может применяться механизм расширения заголовка полезной нагрузки. Например, для включения структуры, которая содержит информацию, указывающую на BllrapPicFlag, и, по меньшей мере когда флаг BllrapPicFlag имеет значение «истина», nal_unit_type для декодированного изображения базового уровня, может использоваться расширение PACI (определенное для формата полезной нагрузки RTP в стандарте Н.265) или аналогичное расширение.
- Заголовок полезной нагрузки пакета, содержащего кодированное изображение базового уровня (его фрагменты или полностью).
- Структура, аналогичная NAL-блоку, например, сходная с описанным выше экстракторным NAL-блоком внешнего базового уровня, внутри пакета, который содержит изображение уточняющего уровня (его фрагменты или полностью), в которой, однако, соответствие между изображением уточняющего уровня и требуемым изображением базового уровня устанавливают не при помощи средств, относящихся к треку и описанных выше, а при помощи других средств. Например, упомянутая структура, аналогичная NAL-блоку, может содержать информацию, указывающую на BllrapPicFlag, и, по меньшей мере когда флаг BllrapPicFlag имеет значение «истина», nal_unit_type для декодированного изображения базового уровня.
- Структура, аналогичная NAL-блоку, внутри пакета, который содержит изображение базового уровня (его фрагменты или полностью).
[0426] В приведенных выше примерах соответствие между изображением уточняющего уровня и требуемым изображением базового уровня может быть установлено явно, если допустить, что изображение базового уровня и изображение уточняющего уровня имеют одинаковые временные метки RTP. Альтернативно, соответствие между изображением уточняющего уровня и требуемым изображением базового уровня может быть установлено путем включения идентификатора изображения базового уровня, например, порядкового номера декодирования (decoding order number, DON) первого блока изображения базового уровня или порядкового номера изображения (РОС) изображения базового уровня, в структуру, аналогичную NAL-блоку, или расширение заголовка, связанное с изображением уточняющего уровня; или наоборот, путем включения идентификатора изображения уточняющего уровня в структуру, аналогичную NAL-блоку, или расширение заголовка, связанное с изображением базового уровня.
[0427] В одном из вариантов осуществления настоящего изобретения, когда декодированное изображение базового уровня может использоваться в качестве опорного для декодирования изображения уточняющего уровня, передатчик, шлюз или другой элемент указывает, например, в заголовке полезной нагрузки, внутри структуры, аналогичной NAL-блоку, и/или с использованием SEI-сообщения, информацию, указывающую на значения BllrapPicFlag и, по меньшей мере когда BllrapPicFlag имеет значение «истина», nal_unit_type для декодированного изображения базового уровня.
[0428] В одном из вариантов осуществления настоящего изобретения приемник, шлюз или другой элемент, анализируя, например, заголовок полезной нагрузки, структуру, аналогичную NAL-блоку и/или SEI-сообщения, получает информацию, указывающую на значения BllrapPicFlag и, по меньшей мере когда флаг BllrapPicFlag имеет значение «истина», nal_unit_type для декодированного изображения базового уровня. Вместе с декодированным изображением базового уровня, или в связи с ним, полученную в результате анализа информацию BllrapPicFlag и nal_unit_type (или любую аналогичную индикаторную информацию) также предоставляют в процедуру декодирования соответствующего изображения уточняющего уровня. Процедура декодирования уточняющего уровня может функционировать в соответствии с приведенным выше описанием.
[0429] Кодер битового потока уточняющего уровня или декодер битового потока уточняющего уровня может запрашивать изображение внешнего базового уровня из кодера битового потока базового уровня или декодера битового потока базового уровня, например, при помощи предоставления значений poc_reset_period_id и PicOrderCntVal кодируемого или декодируемого изображения уточняющего уровня. Если кодер битового потока базового уровня или декодер битового потока базового уровня сделает вывод, например, исходя из декодированных SEI-сообщений со свойствами HEVC, о том, что имеются два изображения базового уровня, связанные с одним изображением или блоком доступа уточняющего уровня, оба этих декодированных изображения базового уровня могут быть предоставлены в кодер битового потока уточняющего уровня или декодер битового потока уточняющего уровня в заранее заданном порядке, например, в соответствующем порядке декодирования изображений базового уровня, или так, чтобы изображение, выступающее в роли IRAP-изображения при кодировании или декодировании битового потока уточняющего уровня, предшествовало изображению, не являющемуся IRAP-изображению при кодировании или декодировании битового потока уточняющего уровня. Если кодер битового потока базового уровня или декодер битового потока базового уровня сделает вывод, например, исходя из декодированных SEI-сообщений со свойствами HEVC, о том, что имеются два изображения базового уровня, связанные с одним изображением или блоком доступа уточняющего уровня, оба этих декодированных изображения базового уровня могут быть предоставлены в кодер битового потока уточняющего уровня или декодер битового потока уточняющего уровня в заранее заданном порядке, например, в соответствующем порядке декодирования изображений базового уровня, или так, чтобы изображение, выступающее в роли IRAP-изображения при кодировании или декодировании битового потока уточняющего уровня предшествовало изображению, не являющемуся IRAP-изображению при кодировании или декодировании битового потока уточняющего уровня. Если кодер битового потока базового уровня или декодер битового потока базового уровня сделает вывод, например, исходя из декодированных SEI-сообщений со свойствами HEVC, о том, что изображения базового уровня, связанные с одним изображением или блоком доступа уточняющего уровня, отсутствуют, кодер битового потока базового уровня или декодер битового потока базового может предоставлять, в кодер битового потока уточняющего уровня или декодер битового потока уточняющего уровня, указание на то, что соответствующее изображение базового уровня отсутствует.
[0430] Когда применяют диагональное предсказание на основе внешнего базового уровня, кодер битового потока уточняющего уровня или декодер битового потока уточняющего уровня может запрашивать изображение внешнего базового уровня из кодера битового потока базового уровня или декодера битового потока базового уровня при помощи предоставления значений poc_reset_period_id и PicOrderCntVal каждого изображения, которое может быть использовано или которое используют в качестве опорного для диагонального предсказания. Например, в дополнительном краткосрочном наборе RPS, или аналогичной структуре, которую используют для идентификации опорных изображений диагонального предсказания, значения PicOrderCntVal, указанные в краткосрочном дополнительном наборе RPS или вычисленные на его основе, могут использоваться кодером битового потока уточняющего уровня или декодером битового потока уточняющего уровня для запроса изображений внешнего базового уровня из кодера битового потока базового уровня или декодера битового потока базового уровня, и при этом poc_reset_period_id текущего кодируемого или декодируемого изображения уточняющего уровня также могут использоваться при запросе изображений внешнего базового уровня.
[0431] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. Кадрово-совместимое видео (также называемое «видео с упаковкой кадров») кодируют в базовый уровень и/или декодируют из базового уровня. Для базового уровня может быть указано, кодером (или другим элементом), и/или декодировано, декодером (или другим элементом), что базовый уровень включает содержимое с упаковкой кадров, например, при помощи SEI-сообщения, такого как SEI-сообщения со схемой упаковки кадров в стандарте HEVC, и/или при помощи наборов параметров, например, general_non_packed_constraint_flag в синтаксической структуре profile_tier_level() HEVC, которая может быть включена в набор VPS и/или SPS. Флаг general_non_packed_constraint_flag, равный 1, определяет, что в CVS не присутствуют ни SEI-сообщения со схемой упаковки пакетов, ни SEI-сообщения сегментированной прямоугольной упаковки пакетов, т.е. для базового уровня не указывают на то, что он включает видеоданные с упаковкой пакетов. Флаг general_non_packed_constraint_flag, равный 0, определяет, что в CVS может присутствовать одно или более SEI-сообщений со схемой упаковки пакетов или SEI-сообщений сегментированной прямоугольной упаковки пакетов, однако это не является обязательным, т.е. для базового уровня указывают на то, что он может включать видеоданные с упаковкой пакетов. В битовом потоке может быть закодировано и/или из битового потока может быть декодировано, например, при помощи синтаксической структуры, относящейся к последовательности, такой как набор VPS, что уточняющий уровень представляет собой уточнение, в полном разрешении, одного из ракурсов, представленных базовым уровнем. Указание на пространственное соотношение ракурса, упакованного в изображениях базового уровня, и уточняющего уровня может быть закодировано кодером в битовый поток или декодировано декодером из битового потока, например, с использованием смещений масштабированного опорного уровня и/или аналогичной информации. Пространственное соотношение может указывать на повышенное разрешение составляющих изображений базового уровня, которые представляют один из ракурсов, то есть, на необходимость применения повышения разрешения для использования составляющих изображений, имеющих повышенное разрешения, в качестве опорных для предсказания изображений уточняющего уровня. Для указания, кодером, или декодирования, декодером, связи между изображением базового уровня и изображением уточняющего уровня могут использоваться различные варианты осуществления настоящего изобретения, описанные в настоящем документе.
[0432] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. В данном варианте осуществления настоящего изобретения кодируют и/или декодируют по меньшей мере одно избыточное изображение. По меньшей мере одно кодированное избыточное изображение помещают в уточняющий уровень, который в контексте HEVC имеет nuh_layer_id, больший 0. Уровень, содержащий по меньшей мере одно избыточное изображение не содержит основных изображений. Уровню избыточных изображений назначают собственный тип идентификатора масштабируемости (который может иметь наименование Scalabilityld в контексте расширений HEVC) или он может быть уровнем вспомогательных изображений (и, в контексте расширений HEVC, ему может быть присвоено значение Auxld). Значение Auxld может быть определено таким образом, чтобы указывать на уровень избыточных изображений. Альтернативно, может применяться значение Auxld, которое еще не определено (например, в контексте расширений HEVC, значение в диапазоне от 128 до 143 включительно), при этом с помощью SEI-сообщения (например, может быть определено SEI-сообщение со свойствами избыточного изображения) может быть указано на то, что уровень вспомогательных изображений содержит избыточные изображения.
[0433] Кодер может указывать в битовом потоке и/или декодер может декодировать из битового потока информацию о том, что для избыточного изображения может применяться межуровневое предсказание на основе уровня «основных» изображений (который может быть базовым уровнем). К примеру, в контексте расширений HEVC, для этой цели может использоваться флаг direct_dependency_flag в расширении набора VPS.
[0434] Может предъявляться требование, например, в стандарте кодирования, о том, чтобы для избыточных изображений не применялось внешнее предсказание на основе других изображений в том же уровне, или о том, чтобы для них использовалось только диагональное межуровневое предсказание (на основе уровня основных изображений).
[0435] Может предъявляться требование, например, в стандарте кодирования, о том, чтобы всякий раз, когда в уровне избыточных изображений присутствует избыточное изображение, в том же блоке доступа присутствовало основное изображение.
[0436] Уровень избыточных изображений, семантически, может быть охарактеризован следующим образом: декодированные изображения уровня избыточных изображений имеют содержимое, аналогичное изображениям уровне основных изображений в одном блоке доступа. Следовательно, избыточное изображение может использоваться в качестве опорного для предсказания изображений в уровне основных изображений при отсутствии (т.е. случайной потере всего изображения) или при ошибке в декодировании (например, частичной потере изображения) основного изображения в том же блоке доступа, в котором находится данное избыточное изображение.
[0437] Необходимо отметить, что вследствие описанных выше требований необходимость декодирования избыточных изображений может возникать, только когда соответствующие основные изображения не декодированы (успешно), а также, что для избыточных изображений не требуется поддержание отдельного подбуфера DPB.
[0438] В одном из вариантов осуществления настоящего изобретения уровень основных изображений представляет собой уточняющего уровня в первом битового потоке уточняющего уровня (с внешним базовым уровнем), а уровень избыточных изображений представляет собой уточняющий уровень во втором битовом потоке уточняющего уровня (с внешним базовым уровнем). Другими словами, при такой схеме кодируют два битовых потока, один из которых содержит основные изображения, а второй - одержит избыточные изображения. Оба битовых потока кодируют в виде битовых потоков уточняющих уровней с масштабируемостью с гибридным кодеком. Другими словами в обоих битовых потоках кодируют только уточняющий уровень и указывают, что базовый уровень является внешним. Эти битовые потоки могут мультиплексироваться в мультиплексированный битовый поток, который не обязательно должен соответствовать формату битового потока для процедуры декодирования уточняющего уровня. Альтернативно, эти битовые потоки могут храниться и/или передаваться с использованием отдельных логических каналов, например, отдельных треков в контейнерном файле или отдельных PID в транспортном потоке MPEG-2.
[0439] Кодер может кодировать изображения битового потока основных изображений уточняющего уровня таким образом, чтобы для них могли использоваться только внутреннее и внешнее предсказание (внутри того же уровня) и не применялось межуровневое предсказание, за исключением специальных случаев, описанных ниже. Кодер может кодировать изображения битового потока избыточных изображений уточняющего уровня таким образом, чтобы для них могли использоваться внутреннее и внешнее предсказание (внутри того же уровня), а также межуровневое предсказание на основе внешнего базового уровня, соответствующего битовому потоку основных изображений уточняющего уровня. Однако, в соответствии с предшествующим описанием, кодер может опускать применение внешнего предсказания (на основе изображений в том же уровне) в битовом потоке избыточных изображений уточняющего уровня. Кодер и/или мультиплексор могут указывать, в формате мультиплексированного битового потока и/или при помощи другой сигнализации (например, в метаданных формата файла или в протоколе связи), какие из изображений первого битового потока (например, битового потока основных изображений уточняющего уровня) используются в качестве опорных для предсказания изображений во втором битовом потоке (например, битового потока избыточных изображений уточняющего уровня) и/или наоборот, и/или определять пары, или группы, изображений в первом и втором битовых потоках, входящих в подобное отношение предсказания между битовыми потоками или межуровневого предсказания. В особых случаях кодер может кодировать в мультиплексированный битовый поток указание на то, что изображение в битовом потоке избыточных изображений уточняющего уровня используется в качестве опорного для предсказания изображения битового потока основных изображений уточняющего уровня. Другими словами, при помощи такого указания определяют, что избыточное изображение может быть использовано так, как если бы оно было изображением опорного уровня для внешнего базового уровня битового потока основных изображений уточняющего уровня. Такой особый случай может определяться кодером (или аналогичным элементом), например, на основе одного или более сообщений обратной связи от удаленной стороны связи - декодера, приемника или аналогичного элемента. Одно или более сообщений обратной связи могут указывать на то, что отсутствуют или не были успешно декодированы одно или более изображений (или их частей) битового потока основных изображений уточняющего уровня. В дополнение, одно или более сообщений обратной связи могут указывать на то, что было принято и успешно декодировано избыточное изображение из битового потока избыточных изображений уточняющего уровня. Следовательно, чтобы исключить использование непринятых или неуспешно декодированных изображений битового потока основных изображений уточняющего уровня в качестве опорных для предсказания последующих изображений битового потока основных изображений уточняющего уровня, кодер может определять и указывать на то, что необходимо использовать одно или более изображений битового потока избыточных изображений уточняющего уровня в качестве опорных для предсказания последующих изображений битового потока основных изображений уточняющего уровня. Декодер, демультиплексор или аналогичных элемент может декодировать из мультиплексированного битового потока указание на то, что изображение в битовом потоке избыточных изображений уточняющего уровня используется в качестве опорного для предсказания изображения битового потока основных изображений уточняющего уровня. В ответ на это декодер, демультиплексор или аналогичный элемент может декодировать изображение, на которое было указано, из битового потока избыточных изображений уточняющего уровня, и предоставлять декодированное избыточное изображение в качестве декодированного изображения внешнего базового уровня для декодирования битового потока основных изображений уточняющего уровня. Предоставленное декодированное изображение внешнего базового уровня может применяться в качестве опорного для межуровневого предсказания при декодировании одного или более изображений из битового потока основных изображений уточняющего уровня.
[0440] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. В данном варианте осуществления настоящего изобретения кодер кодирует по меньшей мере два битовых потока уточняющего уровня, с различным пространственным разрешением, что позволяет реализовать функциональность адаптивного изменения разрешения. Когда происходит переключение с низкого разрешения на повышенное разрешение, одно или более декодированных изображений из битового потока уточняющего уровня с низким разрешением предоставляют в качестве изображений внешнего базового уровня для кодирования и/или декодирования битового потока уточняющего уровня с повышенным разрешением, при этом изображения внешнего базового уровня могут использоваться в качестве опорных для межуровневого предсказания. Когда происходит переключение с повышенного разрешения на низкое разрешение, одно или более декодированных изображений из битового потока уточняющего уровня с повышенным разрешением предоставляют в качестве изображений внешнего базового уровня для кодирования и/или декодирования битового потока уточняющего уровня с низким разрешением, при этом изображения внешнего базового уровня могут использоваться в качестве опорных для межуровневого предсказания. В этом случае может выполняться понижение разрешения декодированных изображений повышенного разрешения, например, при помощи межпотоковой процедуры или в ходе кодирования и/или декодирования битового потока уточняющего уровня с низким разрешением. Следовательно, в отличие от традиционного способа реализации адаптивного изменения разрешения при масштабируемом видеокодировании, может выполняться межуровневое предсказание изображений с низким разрешением (традиционно располагаемых в нижнем уровне) на основе изображений с повышенным разрешением (традиционно располагаемых в верхнем уровне).
[0441] В вариантах осуществления настоящего изобретения могут использоваться приведенные ниже определения. Дерево уровней может быть определено как набор уровней, связанных зависимостями межуровневого предсказания. Базовое дерево уровней может быть определено как дерево уровней, содержащее базовый уровень. Мебазовое дерево уровней может быть определено как дерево уровней, не содержащее базовый уровень. Независимый уровень может быть определен как уровень, который не имеет прямых опорных уровней. Независимый небазовый уровень может быть определен как независимый уровень, не являющийся базовым уровнем. Один из пример этих определений в MV-HEVC (или аналогичном стандарте) показан на фиг. 20а. В данном примере показано, каким образом могут быть распределены значения nuh_layer_id для трехракурсного битового потока MV-HEVC типа «видео плюс глубина». Поскольку в MV-HEVC невозможно предсказание текстурных видеоданных на основе глубины и наоборот, присутствует независимый небазовый уровень, который содержит «базовый» ракурс глубины. В битовом потоке имеются два дерева уровней, одно из них (базовое дерево уровней) уровни для текстурных видеоданных, а второе (небазовое дерево уровней) содержит уровни глубины.
[0442] Дополнительно, могут быть использованы описанные ниже определения. Поддерево уровней может быть определено как подмножество уровней дерева уровней, включающее все прямые и косвенные опорные уровни для уровней внутри подмножества. Небазовое поддерево уровней может быть определено как поддерево уровней, не содержащее базовый уровень. Обратимся к фиг. 20а, поддерево уровней может, например, состоять из уровней с nuh_layer_id, равными 0 и 2. Один из примеров небазового поддерева уровней состоит из уровней с nuh_layer_id равными 1 и 3. Поддерево уровней может также содержать все уровни дерева уровней. Дерево уровней может содержать несколько независимых уровней. Соответственно, разделом может быть названо подмножество уровней в дереве уровней, включающее ровно один независимый уровень, а также все уровни, предсказываемые прямо или косвенно на его основе, которые не входят в раздел того же дерева уровней с меньшим порядковым номером. Разделы дерева уровней могут формироваться в порядке увеличения идентификаторов независимых уровней дерева уровней (например, в порядке увеличения nuh_layer_id в случае MV-HEVC, SHVC или других аналогичных стандартов). На фиг. 20b представлен пример дерева уровней с двумя независимыми уровнями. Уровень с nuh_layer_id, равным 1, может быть, например, уточнением области интереса базового уровня, тогда как уровень с nuh_layer_id, равным 2, может уточнять изображение базового уровня полностью, в отношении качества или пространственного разрешения. Дерево уровней на фиг. 20b разделено на два раздела дерева уровней, показанных на чертеже. Небазовым поддеревом уровней может быть, соответственно, подмножество небазового дерева уровней или раздел базового дерева уровней с порядковым номером раздела, большим 0. Например, первый раздел дерева уровней на фиг. 20b является небазовым поддеревом уровней.
[0443] Дополнительно, могут быть использованы описанные ниже определения. Дополнительный набор уровней может быть определен как набор уровней битового потока с внешним базовым уровнем или набор уровней из одного или более небазовых поддеревьев уровней. Дополнительный независимый набор уровней может быть определен как набор уровней, состоящих из одного или более небазовых поддеревьев уровней.
[0444] В некоторых из вариантов осуществления настоящего изобретения может применяться контейнерное SEI-сообщение набора выходных уровней. Контейнерное SEI-сообщение набора выходных уровней может быть определено таким образом, чтобы обеспечить механизм связывания SEI-сообщений с одним или более дополнительными наборами уровней или с одним или более наборами выходных уровней. Синтаксис SEI-сообщения набора выходных уровней может, например, иметь следующий (или аналогичный) вид:
[0445] Семантика контейнерного SEI-сообщения набора выходных уровней может быть определена, например, описанным ниже образом. Контейнерное SEI-сообщение набора выходных уровней обеспечивает механизм связывания SEI-сообщений с одним или более дополнительными наборами уровней или с одним или более наборами выходных уровней. Контейнерное SEI-сообщение набора выходных уровней содержит одно или более SEI-сообщений, при этом флаг ols_flag, равный 0, определяет, что вложенные SEI-сообщения связаны с дополнительными наборами уровней, указанными при помощи ols_idx[i]. Флаг olsjag, равный 1, определяет, что вложенные SEI-сообщения связаны с наборами выходных уровней, указанными при помощи ols_idx[i]. Когда NumAddLayerSets равно 0, флаг ols_flag должен быть равен 1. Значение num_ols_indices_minus1+1 определяет количество порядковых номеров дополнительных наборов уровней или наборов выходных уровней, с которыми связаны вложенные SEI-сообщения. Значение ols_idx[i] определяет порядковый номер набора дополнительных уровней или набора выходных уровней, заданных в активном наборе VPS, с которыми связаны вложенные SEI-сообщений, при этом может быть необходимо, например, требоваться стандартом, чтобы бит ols_nesting_zero_bit был равен 0.
[0446] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. Кодер может указывать в битовом потоке и/или декодер может декодировать из битового потока указания, относящиеся к наборам дополнительных уровней. К примеру, наборы дополнительных уровней могут быть определены в расширении набора VPS в одном или в обоих из описанных ниже диапазонах значений порядковых номеров наборов уровней: первый диапазон порядковых номеров для наборов дополнительных уровней, когда применяют внешний базовый уровень, и второй диапазон порядковых уровней для наборов дополнительных независимых уровней (которые могут быть преобразованы в независимый битовый поток, соответствующий стандарту). Может быть определено, например, в стандарте кодирования, что указанные наборы дополнительных уровней не требуются для формирования отвечающих стандарту битовых потоков при использовании традиционной процедуры извлечения битового подпотока.
[0447] В синтаксисе определения наборов дополнительных уровней может задействоваться информация о зависимостях уровней, указанная в структурах, относящихся к последовательности, например, наборе VPS. В одном из примеров осуществления настоящего изобретения кодер указывает на наивысший уровень в каждом разделе дерева уровней, что позволяет задать набор дополнительных уровней, и эти указания декодируются декодером, в результате чего получают набор дополнительных уровней. К примеру, указание на набор дополнительных уровней может быть выполнено с использованием единичного порядкового номера для каждого раздела каждого дерева уровней (в заранее заданном порядке, например, в порядке увеличения идентификаторов независимых уровней в каждом разделен дерева уровней), а нулевой порядковый номер может использоваться для указания на то, что в дереве уровней отсутствуют изображения из соответствующего раздела дерева уровней. Для наборов дополнительных независимых уровней кодер может дополнительно указывать, какой из независимых уровней должен становиться базовым уровнем после применения процедуры извлечения небазового поддерева уровней. Если уровень содержит только один независимый небазовый уровень, эта информация, вместо явного указания, например, в расширении VPS кодером, и/или декодирования, например, из расширения VPS декодером, может быть вычислена кодером и/или декодером.
[0448] Некоторые свойства, например, VPS для перезаписанного битового потока и/или HRD-параметры (к примеру, в случае HEVC, SEI-сообщения периода буферизации, синхронизации сообщений и/или информации блока декодирования), могут быть помещены в специальное контейнерное SEI-сообщение, для которого указано, что оно применимо только в процессе перезаписи, когда эту информацию извлекают. В одном из вариантов осуществления настоящего изобретения контейнерное SEI-сообщение применимо к указанному набору уровней, который может идентифицироваться, например, порядковым номером набора уровней. Когда порядковый набора уровней указывает на набор уровней из одного или более небазовых поддеревьев уровней, может быть сделан вывод о необходимости его применения в процессе перезаписи (т.е. записи данных из битового потока в новый формируемый битовый поток) для упомянутых одного или более небазовых поддеревьев уровней. В одном из вариантов осуществления настоящего изобретения для указания на набор дополнительных уровней, к котором применимы вложенные SEI-сообщения, может использоваться SEI-сообщение набора выходных уровней, идентичное или аналогичное описанному выше.
[0449] Кодер может формировать один или более наборов VPS, применимых к наборам дополнительных независимых уровней после их перезаписи в виде отвечающего стандарту отдельного битового потока и включать эти наборы VPS, например, в SEI-сообщение перезаписи VPS. SEI-сообщение перезаписи VPS, или аналогичное сообщение, может быть включено в соответствующее контейнерное SEI-сообщение, например, в описанное выше контейнерное SEI-сообщение набора выходных уровней. В дополнение, кодер, устройство HRD-контроля или иной элемент могут формировать HRD-параметры, которые применимы к набору дополнительных независимых уровне, после их перезаписи в виде отвечающего стандарту отдельного битового потока и включать их в соответствующее контейнерное SEI-сообщение, например, в описанное выше контейнерное SEI-сообщение набора выходных уровней.
[0450] Ниже будет описан один из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами осуществления настоящего изобретения или независимо. Процедура извлечения небазового поддерева уровней может обеспечивать преобразование одного или более небазовых поддеревьев уровней в отдельный битовый поток, отвечающий стандарту. Процедура извлечения небазового поддерева уровней может получать на вход значение порядкового номера Isldx набора дополнительных независимых уровней. Процедура извлечения небазового поддерева уровней может включать один или более шагов, описанных ниже.
- Удаление NAL-блоков, чьи nuh_layer_id не входят в набор уровней.
- Перезапись nuh_layer_id, равных указанному новому базовому уровню, связанному с Isldx, в нулевое значение.
- Извлечение набора VPS из SEI-сообщения перезаписи VPS.
- Извлечение SEI-сообщений периода буферизации, синхронизации изображений и информации блока декодирования из контейнерных SEI-сообщений набора выходных уровней.
- Удаление NAL-блоков SEI из контейнерных SEI-сообщений, которые могут быть неприменимыми к перезаписанному битовому потоку.
[0451] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или вместе с другими вариантами осуществления настоящего изобретения, кодер или другой элемент, например, устройство HRD-контроля, может указывать параметры буферизации для одного из следующих типов битового потока, или для обоих этих типов: битовые потоки, где имеются CL-RAS-изображения IRAP-изображений, для которых флаг NoClrasOutputFlag равен 1, и битовые потоки, в которых отсутствуют CL-RAS-изображения IRAP-изображений, для которых флаг NoClrasOutputFlag равен 1. Например, размер и битрейты буферов СРВ могут указываться отдельно друг от друга, к примеру, в информации VUI для одного из упомянутых выше типов потоков или для обоих этих типов. В дополнение или альтернативно, кодер или другой элемент может указывать исходную задержку СРВ и/или DPB, и/или другие параметры буферизации и/или синхронизации, для одного из упомянутых выше типов потоков или для обоих этих типов. Кодер или другой элемент может, например, включать, в контейнерное SEI-сообщение набора выходных уровней, SEI-сообщение периода буферизации (например, с использованием описанных выше, или аналогичных) синтаксиса и семантики), где могут быть указаны битовый подпоток, набор уровней или набор выходных уровней, к которым применимо вложенное SEI-сообщение периода буферизации. SEI-сообщение периода буферизации в HEVC поддерживает указание двух наборов параметров: один для случая, когда имеются опережающие сообщения, связанные с IRAP-изображением (с которым также связано SEI-сообщение периода буферизации), и второй для случая, когда опережающие сообщения отсутствуют. В случае, когда SEI-сообщение периода буферизации содержится в SEI-сообщении с масштабируемой вложенностью, второй (альтернативный) набор параметра может трактоваться как относящийся к битовому потоку, где отсутствуют CL-RAS-изображения, связанные с IRAP-изображением (с которым также связано SEI-сообщение периода буферизации). В общем случае упомянутый второй набор параметров буферизации может относиться к битовому потоку, где отсутствуют CL-RAS-изображения, связанные с IRAP-изображением, для которого флаг NoClrasOutputFlag равен 1. Для описания данного варианта осуществления настоящего изобретения были использованы конкретные термины и наименования переменных, однако нужно понимать, что он может быть аналогичным образом реализован с использованием другой терминологии, и при этом использовании таких же или аналогичных переменных не является обязательным, при условии, что функционирование декодера остается аналогичным.
[0452] Далее, главным образом в контексте MV-HEVC/SHVC, будет описана предложенная операция буферизации, основанная на разделах битового потока. Однако принцип предложенной буферизации разделов битового потока является универсальным и применим для любого масштабируемого кодирования. Описанная ниже или аналогичная операция буферизации может использоваться как часть HRD-декодирования.
[0453] Раздел битового потока может быть определен как последовательность бит, в форме потока NAL-блоков, или потока байт, которая является подмножеством битового потока согласно операции разбиения. Разбиение битового потока может быть выполнено, например, на основе уровней и/или подуровней. Битовый поток может быть разбит на один или более разделов битового потока. Декодирование раздела 0 битового потока (также называемого базовым разделом битового потока) не зависит от остальных разделов битового потока. К примеру, базовым разделом может быть базовый уровень (и NAL-блоки, связанные с базовым уровнем), тогда как раздел 1 битового потока может состоять из всего остального битового потока, за исключением базового раздела битового потока. Базовый раздел битового потока может быть определен как раздел битового потока, который сам по себе также является битовым потоком, отвечающим стандарту. Могут использоваться различные разделы битового потока, например, в различных наборах выходных уровней, и соответственно, на разделы битового потока могут выполняться указания для каждого отдельного набора выходных уровней.
[0454] Для разделов битового потока могут быть заданы HRD-параметры. Когда для разделов битового потока предоставляют HRD-параметры, проверка битового потока на соответствие стандарту, для раздела битового потока, может выполняться на основе операции HRD-декодирования, в которой гипотетическое планирование и буферизация кодированных изображений выполняются для каждого раздела битового потока.
[0455] Когда разделы битового потока используются декодером и/или HRD-декодером, необходима поддержка более одного буфера кодированных изображений, которые называют буфером раздела битового потока (ВРВ0, ВРВ1, …). Битовый поток может быть разбит на один или более разделов битового потока. Декодирование раздела 0 битового потока (также называемого базовым разделом битового потока) не зависит от остальных разделов битового потока. К примеру, базовым разделом может быть базовый уровень (и NAL-блоки, связанные с базовым уровнем), тогда как раздел 1 битового потока может состоять из всего остального битового потока, за исключением базового раздела битового потока. В операции СРВ, описанной в настоящем документе, периоды обработки блоков декодирования (decoding unit, DU) (от исходного поступления в буфер СРВ до удаления из буфера СРВ) могут перекрываться в различных буферах ВРВ. Соответственно, HRD-модель по определению поддерживает параллельную обработку, с тем допущением, что в процедуре декодирования для каждого раздела битового потока возможно декодирование, в реальном времени, поступающего раздела битового потока с запланированной для него скоростью.
[0456] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения, кодирование параметров буферизации может включать кодирование контейнерной структуры данных, которая указывает на раздел битового потока, и кодирование параметров буферизации внутри этой контейнерной структуры данных. Период буферизации и информация синхронизации изображений для разделов битового потока могут, например, передаваться при помощи SEI-сообщений периода буферизации, синхронизации сообщений и информации блока декодирования, включенных в контейнерные SEI-сообщения. Например, для указания на раздел битового потока, к которому применимы вложенные SEI-сообщения, может применяться контейнерное SEI-сообщения раздела битового потока. Синтаксис контейнерного SEI-сообщения раздела битового потока включает одно или более указаний на то, к какому типу разбиения и/или к какому разделу битового потока (для указанного типа разбиения битового потока) оно применимо. Такие указания могут представлять собой порядковые номера, относящиеся к синтаксической структуре (уровня последовательности), в которой заданы тип разбиения и/или разделы битового потока, и при этом, например, тип разбиения и/или раздел явно пронумерованы согласно порядку их определения или их нумерация явно указана с использованием некоторого синтаксического элемента. Контейнерное SEI-сообщения набора выходных уровней может определять набор выходных уровней, котором применимо вложенное SEI-сообщение, и может включать контейнерное SEI-сообщение раздела битового потока, указывающие, к какому из разделов битового потока в наборе выходных уровней применимо данное SEI-сообщение. Контейнерное SEI-сообщение раздела битового потока может, в свою очередь, включать одно или более SEI-сообщений периода буферизации, синхронизации изображений и информации блока декодирования для заданного набора уровней и раздела битового потока.
[0457] На фиг. 4а проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 4а проиллюстрирован кодер для двух уровней, однако нужно понимать, что проиллюстрированный кодер может быть расширен и выполнять кодирование более чем двух уровней. На фиг. 4а проиллюстрирован один вариантов осуществления видеокодера, включающий первый сегмент 500 кодера для базового уровня (кодирования) и второй сегмент 502 кодера для уточняющего уровня. Каждый из сегментов, первый сегмент 500 кодера и второй сегмент 502 кодера, могут включать аналогичные элементы для кодирования поступающих изображений. Сегменты 500, 502 кодера могут включать устройство 302, 402 предсказания пикселей, кодер 303, 403 ошибки предсказания и декодер 304, 404 ошибки предсказания. Также, на фиг. 4а показан один из вариантов осуществления устройства 302, 402 предсказания пикселей, включающего устройство 306, 406 внешнего предсказания, устройство 308, 408 внутреннего предсказания, селектор 310,410 режима, фильтр 316,416 и память 318,418 опорных кадров. Устройство 302 предсказания пикселей в первом сегменте 500 кодера принимает изображения 300 базового уровня кодируемого видеопотока одновременно в устройстве 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 компенсации движения) и в устройстве 308 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания могут быть переданы в селектор 310 режима. Устройство 308 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 310 режима. В селектор 310 режима передается также копия изображения 300 базового уровня. Соответственно, устройство 402 предсказания пикселей во втором сегменте 502 кодера принимает изображения 400 уточняющего уровня кодируемого видеопотока одновременно в устройстве 406 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 418 компенсации движения) и в устройстве 408 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 410 режима. Устройство 408 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 410 режима. В селектор 410 режима передается также копия изображения 400 уточняющего уровня.
[0458] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения, кодер или аналогичный элемент (например, устройство HRD-контроля) может указывать в битовом потоке, например, в наборе VPS или в SEI сообщение, второй размер подбуфера DPB или аналогичный параметр для уровня или набора уровней, содержащих пропускаемые изображения, при этом во второй подбуфер DPB не включают пропускаемые изображения. Указание на размер второго подбуфера DPB может выполняться в дополнение к указанию на размер, или размеры, обычного подбуфера DPB, например, при помощи элементов max_vps_dec_pic_buffering_minus I [i][k][j] и/или max_vps_layer_dec_pic_buff_minus 1 [i][k][j] в текущих проектах спецификации MV-HEVC и SHVC. Нужно понимать, что может выполняться указание на применение индивидуальных, для каждого уровня, размеров подбуфера DPB без присутствия пропускаемых изображений и/или на размер подбуфера DPB для работы DPB-буфера в режиме привязки к разрешению.
[0459] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения, декодер или аналогичный элемент (HRD-декодер) может декодировать из битовом потока, например, из набора VPS или из SEI-сообщения, второй размер подбуфера DPB или аналогичный параметр для уровня или набора уровней, содержащих пропускаемые изображения, при этом во второй подбуфер DPB не включают пропускаемые изображения. Может быть декодирован размер второго подбуфера DPB, в дополнение к декодированию размера, или размеров, обычного подбуфера DPB, например, max_vps_dec_pic_buffering_minus I [i][k][j] и/или max_vps_layer_dec_pic_buff_minus 1 [i][k][j] в текущих проектах спецификации MV-HEVC и SHVC. Нужно понимать, что может выполняться декодирование индивидуальных, для каждого уровня, размеров подбуфера DPB без присутствия пропускаемых изображений и/или на размер подбуфера DPB для работы DPB-буфера в режиме привязки к разрешению. Декодер, или аналогичный элемент, может использовать упомянутый второй размер подбуфера DPB, или аналогичную информацию, для выделения буфера под декодированные изображения. Декодер, или аналогичный элемент, может не сохранять декодированные пропускаемые изображения в DPB-буфере. Вместо этого, когда пропускаемое изображение используются в качестве опорного для предсказания, декодер, или другой элемент, может использовать, в качестве опорного для предсказания, изображение опорного уровня, соответствующее данному пропускаемому изображению. Если для изображения опорного уровня необходима межуровневая обработка, например, изменение разрешения, прежде чем оно может быть использовано в качестве опорного, декодер может обрабатывать, например, изменять разрешение изображения опорного уровня, соответствующего пропускаемому изображению, и использовать обработанное изображение опорного уровня в качестве опорного изображения для предсказания.
[0460] В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения кодер или другой элемент (например, устройство HRD-контроля) может указывать в битовом потоке, например, с использованием битовой позиции в синтаксическом элементе slice_reserved[i], в заголовке сегмента слайса HEVC, и/или в SEI-сообщении, на то, что изображение является пропускаемым изображением. В одном из вариантов осуществления настоящего изобретения, который может применяться независимо или совместно с другими вариантами осуществления настоящего изобретения, кодер или другой элемент (например, устройство HRD-контроля) может декодировать из битового потока, например, из битовой позиции в синтаксическом элементе slice_reserved[i], в заголовке сегмента слайса HEVC, и/или в SEI-сообщении, на то, что изображение является пропускаемым изображением.
[0461] В блоке 382 вычисления значения целевой функции (функции стоимости) селектора 310 режима, например, могут использоваться целевые функции Лагранжа для выбора требуемого режима кодирования и значений их параметров, таких как векторы движения, указатели на опорные изображения и направление внутреннего предсказания, как правило, для каждого отдельного блока. В целевой функции такого типа может использоваться весовой коэффициент или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей или отсчетов в некоторой области изображения: С = D + lambda × R, где С - оптимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество бит, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (например, включая количество данных для представления кандидатных векторов движения).
[0462] В зависимости от режима кодирования выбранного для кодирования текущего блока пикселей, на выход селектора 310, 410 режима передают выходные данные устройства 306, 406 внешнего предсказания, выходные данные одного из опциональных режимов внутреннего предсказания или выходные данные поверхностного кодера из состава селектора режима. Выходные данные селектора режима передают в первое суммирующее устройство 321, 421. Первое суммирующее устройство может вычитать выходные данные устройства 302, 402 предсказания пикселей из изображения 300 базового уровня, или изображения 400 уточняющего уровня, соответственно, с формированием первого сигнала 320, 420 ошибки предсказания, который подают на вход кодера 303, 403 ошибки предсказания.
[0463] Также, устройство 302, 402 предсказания пикселей принимает от устройства 339, 439 предварительного восстановления комбинацию предсказанного представления блока 312, 418 изображения и выходные данные 338, 438 кодера 304, 404 ошибки предсказания. Предварительно восстановленное изображение 314, 414 может быть передано в устройство 308, 408 внутреннего предсказания и фильтр 316, 416. В фильтре 316, 416 где принимается это предварительное представление, может выполняться его фильтрация и вывод окончательного восстановленного изображения 340, 440, которое может быть сохранено в память 318, 418 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 300 базового уровня при выполнении операций внешнего предсказания. При условии, что базовый уровень выбран в качестве источника для межуровневого предсказания сэмплов и/или для межуровневого предсказания информации о движении уточняющего уровня, и если на это также выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, память 318 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и может использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания. При этом память 418 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущие изображения 400 уточняющего уровня при выполнении операций внешнего предсказания.
[0464] При условии, что базовый уровень выбран в качестве источника для предсказания параметров фильтрации уточняющего уровня, и на это выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, параметры фильтрации из фильтра 316 первого сегмента 500 кодера могут передаваться во второй сегмент 502 кодера.
[0465] Кодер 303, 403 ошибки предсказания включает блок 342, 442 преобразования и квантователь 344, 444. Блок 342 преобразования преобразует первый сигнал 320, 420 ошибки предсказания в домен преобразования. Таким преобразованием является, к примеру, преобразование DCT. Квантователь 344, 444 квантует сигнал, например, коэффициенты DCT, в домене преобразования и формирует квантованные коэффициенты.
[0466] Декодер 304, 404 ошибки предсказания принимает выходные данные из кодера 303, 403 ошибки предсказания и выполняет процедуры, обратные процедурам кодера 303, 403 ошибки предсказания, в результате чего получают декодированный сигнал 338, 438 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312, 412 изображения во втором суммирующем устройстве 339, 439 дает предварительное восстановленное изображение 314, 414. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 361, 461 который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 363, 463 обратного преобразования, который выполняет обратное преобразование над восстановленным сигналом преобразования, при этом выходные данные блока 363, 463 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр блоков, который может выполнять фильтрацию восстановленного блока (или блоков) в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
[0467] Энтропийный кодер 330, 430 принимает выходные данные из кодера 303, 403 ошибки предсказания и может выполнять соответствующее кодирование переменной длины и/или энтропийное кодирование сигнала для обеспечения возможности обнаружения и исправления ошибок. Выходные данные энтропийных кодеров 330, 430 могут быть введены в битовый поток, например, при помощи мультиплексора 508.
[0468] На фиг. 4b показана высокоуровневая блок-схема одного из вариантов осуществления настоящего изобретения устройства 400 кодирования с пространственным масштабированием, которое включает элемент 500 кодирования базового уровня и элемент 502 кодирования уточняющего уровня. Элемент 500 кодирования базового уровня кодирует входной видеосигнал 300 в битовый поток 506 базового уровня, и соответственно, элемент 502 кодирования уточняющего уровня кодирует входной видеосигнал 300 в битовый поток 507 уточняющего уровня. Устройство 400 кодирования с масштабированием пространственного разрешения может включать устройство 404 понижения разрешения для понижения разрешения входного видеосигнала, если разрешение представления базового уровня и представления уточняющего уровня отличаются друг от друга. К примеру, коэффициент масштабирования между базовым уровнем и уточняющим уровнем может быть равен 1:2, то есть, разрешение уточняющего уровня может вдвое превышать разрешение базового уровня (как в горизонтальном, так и вертикальном направлении).
[0469] Элемент 500 кодирования базового уровня и элемент 502 кодирования уточняющего уровня могут содержать элементы, сходные с элементами кодера, показанного на фиг. 4а или они могут отличаться друг от друга.
[0470] Во многих из вариантов осуществления настоящего изобретения память 318, 418 опорных кадров может быть приспособлена для хранения декодированных изображений различных уровней, или для хранения изображений различных уровней могут присутствовать различные запоминающие устройства.
[0471] Функционирование устройств 302, 402 предсказания пикселей может быть сконфигурировано таким образом, чтобы выполнять любой алгоритм предсказания пикселей.
[0472] Для ослабления различных артефактов, например, пикселизации или звона, или других артефактов в опорных изображениях может применяться фильтр 316.
[0473] Фильтр 316 может включать деблокирующий фильтр, фильтр адаптивного смещения отсчетов (sample adaptive offset, SAO), и/или адаптивный петлевой фильтр (adaptive loop filter, ALF).B некоторых из вариантов осуществления настоящего изобретения кодер определяет, например, исходя из информации RDO, какие из областей изображения подлежат фильтрации, а также коэффициенты фильтрации, и эту информацию передают в декодер.
[0474] Если в элементе 502 кодирования уточняющего уровня будет выбран SAO-фильтр, то в нем может применяться рассмотренный выше алгоритм SAO-фильтрации.
[0475] Кодер 303, 403 ошибки предсказания может включать блок 342, 442 преобразования и квантователь 344, 444. Блок 342 преобразования преобразует первый сигнал 320, 420 ошибки предсказания в домен преобразования. Таким преобразованием является, к примеру, преобразование DCT. Квантователь 344, 444 квантует сигнал, например, коэффициенты DCT, в домене преобразования и формирует квантованные коэффициенты.
[0476] Декодер 304, 404 ошибки предсказания принимает выходные данные из кодера 303, 403 ошибки предсказания и выполняет процедуры, обратные процедурам кодера 303, 403 ошибки предсказания, в результате чего получают декодированный сигнал 338, 438 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312, 412 изображения во втором суммирующем устройстве 339, 439 дает предварительное восстановленное изображение 314, 414. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 361, 461 который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 363, 463 обратного преобразования, который выполняет обратное преобразование над восстановленным сигналом преобразования, при этом выходные данные блока 363, 463 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр макроблоков (не показан на чертеже), который может выполнять фильтрацию восстановленного макроблок в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
[0477] Энтропийный кодер 330, 430 принимает выходные данные из кодера 303, 403 ошибки предсказания и может выполнять соответствующее кодирование переменной длины и/или энтропийное кодирование сигнала для обеспечения возможности обнаружения и исправления ошибок. Выходные данные энтропийных кодеров 330, 430 могут быть введены в битовый поток, например, при помощи мультиплексора 508.
[0478] В некоторых из вариантов осуществления настоящего изобретения фильтр 440 содержит фильтр адаптивной фильтрации отсчетов, в других вариантах осуществления настоящего изобретения фильтр 440 содержит адаптивный петлевой фильтр, а в некоторых дополнительных вариантах осуществления настоящего изобретения фильтр 440 содержит одновременно фильтр адаптивной фильтрации отсчетов и адаптивный петлевой фильтр.
[0479] Если разрешения базового уровня и уточняющего уровня отличаются друг от друга, может быть необходимым повышение разрешения фильтрованных значений отсчетов базового уровня при помощи устройства 450 повышения разрешения. Выходные данные устройства 450 повышения разрешения, то есть фильтрованные значения отсчетов базового уровня, с повышенным разрешением, затем передают в элемент 502 кодирования уточняющего уровня в качестве опорных для предсказания пиксельных значений для текущего блока уточняющего уровня.
[0480] Для полноты далее будет описан соответствующий декодер. Однако некоторые декодеры могут быть неспособны обрабатывать данные уточняющего уровня, и поэтому они могут быть неспособны декодировать все принятые изображения. Декодер может анализировать битовый поток и определять значения двух флагов, например, inter_layer_jred_for_el_rap_only_flag и single_layer_for_non_rap_flag. Если значение первого из этих флагов указывает на то, что межуровневое предсказание в уточняющем уровне может применяться только для изображений произвольного доступа, и на то, что для не-RAP изображение уточняющего уровня никогда не применяется межуровневое предсказание, декодер может делать вывод о том, что межуровневое предсказание используют только для RAP-изображений.
[0481] На стороне декодера выполняют аналогичные операции с целью восстановления блоков изображения. На фиг. 5а проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. В данном варианте осуществления настоящего изобретения видеодекодер 550 включает первый сегмент 552 декодера для компонентов базового ракурса и второй сегмент 554 декодера для компонентов небазового ракурса. Блок 556 иллюстрирует демультиплексор, предназначенный для предоставления информации о компонентах базового ракурса в первый сегмент 552 декодера, а также для предоставления информации о компонентах небазового ракурса во второй сегмент 554 декодера. В составе декодера показан энтропийный декодер 700, 800, который выполняет энтропийное декодирование (Е1) принятого сигнала. Таким образом, энтропийный декодер выполняет операцию, обратную энтропийному кодеру 330, 430 из состава описанного выше кодера. Энтропийный декодер 700, 800 выводит результаты энтропийного декодирования в декодер 701, 801 ошибки предсказания и устройство 704, 804 предсказания пикселей. P'n - предсказанные представления блока пикселей изображения. D'n - восстановленные сигналы ошибки предсказания. Блоки 705, 805 иллюстрируют предварительно восстановленные изображения или блоки изображения (I'n). R'n - окончательное восстановленное изображение или блок изображения. Блоками 703, 803 проиллюстрированное обратное преобразование (Т1). Блоками 702, 802 проиллюстрированное обратное квантование (Q1). Блоками 706, 806 проиллюстрирована память опорных кадров (reference frame memory, RFM). Блоками 707, 807 проиллюстрировано предсказание (Р) (либо внутреннее, либо внешнее предсказание). Блоками 708, 808 проиллюстрирована фильтрация (F). Блоки 709, 809 могут использоваться для комбинирования декодированной информации ошибки предсказания с предсказанными компонентами базового или небазового ракурса, в результате чего получают предварительно восстановленные изображения (I'n). Предварительно восстановленные и прошедшие фильтрацию изображения базового ракурса могут выводиться (710) из первого сегмента 552 декодера, а предварительно восстановленные и прошедшие фильтрацию изображения базового ракурса могут выводиться (810) из второго сегмента 554 декодера.
[0482] Устройство 704, 804 предсказания пикселей принимает выходные данные из энтропийного декодера 700, 800. Выходные данные энтропийного декодера 700, 800 могут включать указание на режим предсказания, использованный при кодировании текущего блока пикселей. Селектор 707, 807 устройства предсказания из состава устройства 704, 804 предсказания пикселей может определять, что текущий блок пикселей должен быть декодирован как блок пикселей уточняющего уровня. Следовательно, селектор 707, 807 устройства предсказания может выбирать для использования информацию из соответствующего блока пикселей или другого уровня, например, базового уровня, с целью фильтрации блока предсказания базового уровня при декодировании текущего блока пикселей уточняющего уровня. Указание на то, что блок предсказания базового уровня был отфильтрован перед его использованием для предсказания уточняющего уровня кодером, может быть принято декодером, где устройство 704, 804 предсказания пикселей может использовать это указание для предоставления восстановленных значений блока пикселей базового уровня в фильтр 708, 808, а также для определения, какой тип фильтра был использован, например, SAO-фильтр и/или адаптивный петлевой фильтр, или могут существовать другие методы определения, следует ли применять модифицированный режим декодирования.
[0483] Селектор устройства предсказания может также выдавать предсказанное представление блока P'n изображения в первый объединитель 709. Предсказанное представление блока 616 изображения в сочетании с восстановленным сигналом D'n ошибки предсказания используют для формирования предварительно восстановленного изображения I'n. Предварительно восстановленное изображение может быть использовано в устройстве 704, 804 предсказания или может быть передано в фильтр 708, 808. В фильтре применяется фильтрация, на выходе которой получают окончательный восстановленный сигнал R'n. Окончательный восстановленный сигнал R'n может храниться в памяти 706, 806 опорных кадров, при этом память 706, 806 опорных кадров также соединена с устройством 707, 807 предсказания для выполнения операций предсказания.
[0484] Декодер 702, 802 ошибки предсказания принимает выходные данные из энтропийного декодера700, 800. Деквантователь 702, 802 из состава декодера 702, 802 ошибки предсказания может деквантовать выходной сигнал энтропийного декодера 700, 800, а блок 703, 803 обратного преобразования может выполнять операцию обратного преобразования над деквантованным сигналом на выходе деквантователя 702,802. Выходной сигнал энтропийного декодера 700, 800 может также указывать на то, что сигнал ошибки предсказания применять не следует, и в этом случае декодер ошибки предсказания формирует выходной сигнал, состоящий из нулей.
[0485] Нужно понимать, что на фиг. 5а для различных блоков может применяться межуровневое предсказание, даже если на фиг. 5а это не проиллюстрировано. Межуровневое предсказание может включать предсказание отсчетов и/или предсказание синтаксиса/параметров. Например, опорное изображение из одной секции декодера (к примеру, RFM 706) может использоваться для предсказания отсчетов в другой секции декодера (например, в блоке 807). В другом примере синтаксические элементы или параметры из одной секции декодера (например, параметры фильтрации из блока 708) могут использоваться для предсказания синтаксиса/параметров в другой секции декодера (например, в блоке 808).
[0486] В некоторых из вариантов осуществления настоящего изобретения ракурсы могут кодироваться не с помощью стандарта H.264/AVC или HEVC, а с помощью какого-либо иного стандарта.
[0487] На фиг. 5b показана блок-схема устройства 800 декодирования с масштабированием пространственного разрешения, которое включает элемент 810 декодирования базового уровня и элемент 820 декодирования уточняющего уровня. Элемент 810 декодирования базового уровня декодирует кодированный битовый поток 802 базового уровня в виде декодированного видеосигнала 818 базового уровня, и соответственно, элемент 820 декодирования уточняющего уровня декодирует кодированный битовый поток 804 уточняющего уровня в виде декодированного видеосигнала 828 уточняющего уровня. Устройство 800 декодирования с масштабированием пространственного разрешения может также включать фильтр 840 для фильтрации восстановленных значений пикселей базового уровня, а также устройство 850 повышения разрешения для повышения разрешения фильтрованных восстановленных значений пикселей базового уровня.
[0488] Элемент 810 декодирования базового уровня и элемент 820 декодирования уточняющего уровня могут содержать элементы, сходные с элементами кодера, показанного на фиг. 4а или они могут отличаться друг от друга. Другими словами, и элемент 810 декодирования базового уровня, и элемент 820 декодирования уточняющего уровня, могут включать некоторые из элементов декодера, показанного на фиг. 5а, или часть его элементов. В некоторых из вариантов осуществления настоящего изобретения одинаковые схемы декодера могут использоваться для реализации операций элемента 810 декодирования уточняющего уровня и элемента 820 декодирования уточняющего уровня, при этом декодер получает информацию об уровне, который он декодирует в текущий момент.
[0489] Допускается также применение любых модулей постобработки уточняющего уровня, которые используют в качестве препроцессоров для данных базового уровня, включая пост-фильтры HEVC SAO и HEVC ALF. Модули постобработки уточняющего уровня не могут быть изменены во время работы с данными базового уровня. К примеру, некоторые режимы могут быть деактивированы, или могут быть добавлены некоторые новые режимы.
[0490] Фиг. 8 является графическим представлением типовой системы мультимедийной связи, в которой могут быть реализованы различные варианты осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 8, источник 900 данных предоставляет исходный сигнал в аналоговом, несжатом цифровом или сжатом цифровом формате, или в любой комбинации из этих форматов. Кодер 910 кодирует исходный сигнал в кодированный битовый поток мультимедийных данных. Следует отметить, что кодируемый битовый поток может приниматься, напрямую или опосредованно, от удаленного устройства, расположенного в сети практически любого типа. Также, битовый поток может приниматься от локального аппаратного или программного обеспечения. Кодер 910 может быть способен кодировать более одного типа мультимедийных данных, например, аудио- и видеоданные, или могут требоваться более одного кодера 910 для кодирования различных типов исходного сигнала. Кодер 910 может также получать входные данные, полученные при помощи синтеза, такие как графику или текст, или может быть способен формировать кодированные битовые потоки синтезированных мультимедийных данных. Ниже, для простоты описания, будет рассмотрена обработка только одного кодированного битового потока, содержащего однотипные мультимедийные данные. Однако нужно отметить, что обычно мультимедийные сервисы включают несколько потоков (как правило, по меньшей мере один аудиопоток и один видеопоток). Также, нужно отметить, что система может включать множество кодеров, однако на фиг. 8, для простоты описания, без потери общности, показан только один кодер 910. Описание и примеры в настоящем документы описывают именно процедура кодирования, однако при этом специалисты в данной области техники должны понимать, что те же самые принципы и идеи применимы и для соответствующей процедуры декодирования, и наоборот.
[0491] Кодированный битовый поток мультимедийных данных передают в хранилище 920. Хранилище 920 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока мультимедийных данных. Формат кодированного битового потока мультимедийных данных в хранилище 920 может быть элементарным автономным форматом битового потока, или один или более кодированных битовых потоков мультимедийных данных могут быть инкапсулированы в контейнерный файл. Если один или более битовых потоков мультимедийных данных инкапсулируют в контейнерный файл, может применяться формирователь файлов (не показан на чертежа) для сохранения одного или более битовых потоков мультимедийных данных в файл и для формирования метаданных формата файла, которые также сохраняют в файл. Кодер 910 и/или хранилище 920 могут включать формирователь файлов, или же формирователь файлов может быть функционально связан кодером 910 и/или хранилищем 920. Некоторые системы работают «на лету», то есть не используют память и передают кодированный битовый поток мультимедийных данных из кодера 910 непосредственно в передатчик 930. Затем кодированный битовый поток мультимедийных данных передают, когда это необходимо, в передатчик 930, также именуемый сервером. Формат, используемый при передаче, может быть элементарным автономным форматом битового потока, или один или более кодированных битовых потоков мультимедийных данных могут быть инкапсулированы в контейнерный файл. Кодер 910, хранилище 920 и передатчик 930 могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств. Кодер 910 и сервер 930 могут работать с данными реального времени, и в этом случае кодированный битовый поток мультимедийных данных, как правило, не хранят на постоянной основе, а буферизуют в течение небольших промежутков времени в кодере 910 видеоданных и/или на сервере 230 для сглаживания колебаний задержек на обработку, задержек на передачу и битрейта кодированных мультимедийных данных.
[0492] Сервер 930 передает кодированный битовый поток мультимедийных данных с использованием стека протоколов связи. Стек может включать, без ограничения перечисленным, протокол передачи в реальном времени (RTP), протокол пользовательских датаграмм (UDP) и протокол Интернета (IP). Когда стек протоколов связи является пакетным, сервер 930 инкапсулирует кодированный битовый поток мультимедийных данных в пакеты. Например, когда используется протокол RTP, сервер 930 инкапсулирует кодированный битовый поток мультимедийных данных в пакеты RTP согласно формату полезной нагрузки протокола RTP. Как правило, каждый тип мультимедийных данных имеет отдельный формат полезной нагрузки RTP. Следует еще раз отметить, что система может содержать более одного сервера 930, но для простоты в последующем описании рассмотрен только один сервер 930.
[0493] Если мультимедийные данные инкапсулированы в контейнерный файл для хранилища 920 или для ввода данных в передатчик 930, передатчик 930 может иметь в своем составе «анализатор передаваемого файла» (не показан на чертеже) или может быть функционально связан с подобным элементом. В частности, если контейнерный файл сам по себе не передают, но по меньшей мере содержащийся в нем кодированный битовый поток мультимедийных данных инкапсулируют для передачи по протоколу связи, анализатор передаваемого файла находит соответствующие фрагменты кодированного битового потока мультимедийных данных, подлежащие передаче по протоколу связи. Анализатор передаваемого файла может также быть полезен при создании корректного формата для протокола связи, например, заголовков и полезной нагрузки пакетов. Мультимедийный контейнерный файл может содержать инструкции по инкапсуляции, такие как треки указаний в базовом формате медиафайлов ISO, используемые для инкапсуляции по меньшей мере одного кодированного битового потока мультимедийных данных в протокол связи.
[0494] Сервер 930 может быть связан со шлюзом 940 по сети связи, однако это не является обязательным. Шлюз 940, который может альтернативно называться «промежуточным узлом» или сетевым элементом, осведомленным о мультимедийных данных (MANE), может выполнять функции, например различных типов, например трансляцию потока пакетов, соответствующую одному стеку протоколов связи, в другой стек протоколов связи, слияние и разветвление потоков данных и манипуляцию потоками данных согласно возможностям нисходящей линии связи и/или приемника, например, управление битовой скоростью передачи данных перенаправляемого потока согласно превалирующим сетевым условиям в нисходящей линии связи. Примеры шлюзов 940 включают устройство управления многоточечной конференцсвязью (multipoint conference control unit, MCU,), шлюзы между устройствами видеотелефонии с коммутацией каналов и с коммутацией пакетов, серверы сервиса «нажми и говори в сотовой сети» (Push-to-talk over Cellular, POC), IP-инкапсуляторы в системах цифрового телевизионного вещания на портативные устройства (стандарт DVB-H) или телевизионные приставки, которые перенаправляют вещание локально в домашние беспроводные сети. При использовании протокола RTP шлюз 940 называют RTP-микшером или RTP-транслятором, при этом он может выступать в роли конечной точки соединения RTP. В соединении между передатчиком 930 и приемником 950 могут присутствовать от нуля до любого количества шлюзов.
[0495] Система включает один или более приемников 950, которые, в общем случае, способны принимать, демодулировать и/или декапсулировать переданный сигнал с получением кодированного битового потока мультимедийных данных. Кодированный битовый поток мультимедийных данных передают в записывающее хранилище 955. Записывающее хранилище 955 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока мультимедийных данных. Записывающие хранилище 955 может, дополнительно или альтернативно, включать вычислительную память, например, память с произвольным доступом. Формат кодированного битового потока мультимедийных данных в записывающем хранилище 955 может быть элементарным автономны форматом битового потока, или один или более кодированных битовых потоков мультимедийных данных могут быть инкапсулированы в контейнерный файл. Если имеются несколько кодированных битовых потоков мультимедийных данных, например, аудиопоток и видеопоток, связанные друг с другом, то, как правило, применяют контейнерный файл, и при этом приемник 950 содержит формирователь контейнерного файла (или связан с подобным формирователем), формирующий контейнерный файл на основе входных потоков. Некоторые системы работают «на лету», то есть передают кодированный битовый поток мультимедийных данных из приемника 950 непосредственно в декодер, без задействования записывающего хранилища 955. В некоторых системах в записывающем хранилище 955 хранят только последнюю по времени часть записанного потока, например, последний 10-минутный фрагмент записанного потока, тогда как все ранее записанные данные удаляют из записывающего хранилища 955.
[0496] Кодированный битовый поток мультимедийных данных из записывающего хранилища 955 передают в декодер 960. Если имеются несколько кодированных битовых потоков мультимедийных данных, например, аудиопоток и видеопоток, связанные друг с другом и инкапсулированные в контейнерный файл, или один битовый поток, который инкапсулирован в контейнерный файл, например, для более простого доступа, то применяют анализатор файлов (не показан на чертеже) для декапсуляции всех кодированных битовых потоков мультимедийных данных из контейнерного файла. Записывающее хранилище 955 или декодер 960 могут иметь анализатор файлов в своем составе, или анализатор файлов может быть связан с записывающим хранилищем 955, или с декодером 960.
[0497] Кодированный битовый поток мультимедийных данных может далее обрабатываться декодером 960, на выходе которого получают один или более несжатых потоков мультимедийных данных. Наконец, устройство 970 воспроизведения может воспроизводить несжатые потоки мультимедийных данных, например, с помощью громкоговорителя или дисплея. Приемник 950, записывающее хранилище 955, декодер 960 и устройство 970 воспроизведения могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств.
[0498] На фиг. 1 показана блок-схема системы видеокодирования в соответствии с одним из вариантов осуществления настоящего изобретения, в виде блок-схемы примера аппаратуры или электронного устройства 50, которое может включать в своей состав кодек, соответствующий одному из вариантов осуществления настоящего изобретения. На фиг. 2 показана схема устройства в соответствии с одним из примеров осуществления настоящего изобретения. Далее будут описаны элементы фиг. 1 и 2.
[0499] Электронное устройство 50 может, например, быть мобильным терминалом или абонентским оборудованием системы беспроводной связи. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы в любом электронном устройстве или аппаратуре, где требуется кодирование и декодирование, или только кодирование, или же только декодирование видеоизображений.
[0500] Устройство 50 может иметь корпус 30 для размещения и защиты устройства. Устройство 50 может также включать дисплей 32 в форме дисплея на жидких кристаллах. В других вариантах осуществления настоящего изобретения упомянутый дисплей может быть выполнен по любой технологии, подходящей для отображения изображений или видеоинформации. Устройство 50 может также включать клавиатуру 34. В других вариантах осуществления настоящего изобретения может применяться любой подходящий интерфейс обмена данными или пользовательский интерфейс. К примеру, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного дисплея. Устройство может включать микрофон 36 или любое другое подходящее устройство ввода аудиоинформации, которое может быть устройством ввода цифрового или аналогового сигнала. Устройство 50 может также включать устройство вывода аудиоинформации, которое в вариантах осуществления настоящего изобретения может представлять собой любое из следующего: головной телефон 38, громкоговоритель или же аналоговое или цифровое соединение для вывода аудиоинформации. Устройство 50 может также включать аккумулятор 40 (или в других вариантах осуществления настоящего изобретения устройство может снабжаться электроэнергией от любого подходящего мобильного энергетического устройства, например, солнечной батареи, топливной батареи или заводного генератора). Устройство может дополнительно включать камеру 42, способную записывать, или захватывать, изображения и/или видеоинформацию. В некоторых из вариантов осуществления настоящего изобретения устройство 50 может также включать инфракрасный порт 50 для связи с другими устройствами в ближней зоне прямой видимости. В других вариантах осуществления настоящего изобретения устройство 50 может включать любые подходящие решения связи малой дальности, например, беспроводное соединение Bluetooth или проводное соединение USB/Firewire.
[0501] Устройство 50 может включать контроллер 56 или процессор для управления устройством 50. Контроллер 56 может быть соединен с памятью 58, которая в различных вариантах осуществления настоящего изобретения может хранить данные, одновременно в форме видеоинформации и аудиоинформации, и/или может также хранить инструкции для исполнения в контроллере 56. Контроллер 56 может быть также соединен со схемами 54 кодека, способными осуществлять кодирование и декодирование аудио- и/или видеоданных или являться вспомогательным средством при кодировании и декодировании, выполняемом контроллером 56.
[0502] Устройство 50 может также включать устройство 48 чтения карт и смарт-карту 46, например, карту UICC и устройство чтения UICC-карт для предоставления информации об абоненте, и для обеспечения возможности предоставления аутентификационной информации с целью аутентификации и авторизации абонента в сети.
[0503] Устройство 50 может включать схемы 52 радиоинтерфейса, связанные с контроллером, которые могут использоваться для формирования сигналов беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или беспроводной локальной вычислительной сетью. Устройство 50 может также включать антенну 44, связанную со схемами 52 радиоинтерфейса, для передачи радиочастотных сигналов, формируемых в схемах 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств).
[0504] В некоторых вариантах осуществления настоящего изобретения устройство 50 включает камеру, способную записывать или регистрировать отдельные кадры, которые затем передают в кодек 54 или контроллер для обработки. В некоторых вариантах осуществления настоящего изобретения устройство может принимать от другого устройства данные видеоизображений для обработки перед их передачей и/или хранением. В некоторых из вариантов осуществления настоящего изобретения устройство 50 может принимать изображение для кодирования/декодирования либо беспроводным способом, либо по проводному соединению.
[0505] На фиг. 3 показана система видеокодирования, включающая множество устройств, сетей и сетевых элементов в соответствии с одним из примеров осуществления настоящего изобретения. С помощью фиг. 3 проиллюстрирован один из примеров системы, в которой могут использоваться различные варианты осуществления настоящего изобретения. Система 10 включает несколько устройств связи, способных осуществлять связь при помощи одной или нескольких сетей. В состав системы 10 может входить любая комбинация проводных и беспроводных сетей, включая, без ограничения перечисленным, беспроводную сотовую телефонную сеть (например, сеть GSM, UMTS, CDMA и т.п.), беспроводную локальную вычислительную сеть (wireless local area network, WLAN), например, в соответствии с определением в любом из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную вычислительную сеть Ethernet, локальную вычислительную сеть типа «маркерное кольцо» глобальную сеть и Интернет.
[0506] Система 10 может включать как проводные, так и беспроводные устройства связи, а также устройство 50, подходящее для реализации вариантов осуществления настоящего изобретения. В качестве примера на фиг. 3 показана мобильная телефонная сеть 11 и изображение сети Интернет 28. Соединение с Интернетом 28 может включать, без ограничения перечисленным, беспроводные соединения с большим радиусом действия, беспроводные соединения с малым радиусом действия, а также различные проводные соединения, включая, без ограничения перечисленным, телефонные линии, кабельные линии, линии электропередач и аналогичные каналы связи.
[0507] Примерами устройств связи в системе 10 могут служить, без ограничения перечисленным, электронная аппаратура или устройство 50, комбинация карманного персонального компьютера (personal digital assistant, PDA) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (integrated messaging device, IMD), настольный компьютер 20, ноутбук 22. Устройства 50 связи могут быть как стационарными, так и мобильными, например, они могут переноситься лицами, находящимися в движении. Устройство 50 может также размещаться на транспортном средстве, включая, без ограничения перечисленным, автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.
[0508] Некоторые из этих или других устройств могут как посылать, так и принимать вызовы и сообщения, а также осуществлять связь с операторами связи при помощи беспроводного соединения 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между средствами 11 связи и Интернетом 28. Система может включать дополнительные устройства связи, а также устройства связи других типов.
[0509] Устройства связи могут осуществлять связь с использованием различных технологий передачи данных, включая, без ограничения перечисленным, множественный доступ с кодовым разделением (Code Division Multiple Access, CDMA), глобальную систему мобильной связи (Global System for Mobile Communications, GSM), универсальную систему мобильной связи (Universal Mobile Telecommunication System, UMTS), множественный доступ с разделением по времени (Time Division Multiple Access, TDMA), множественный доступ с разделением по частоте (Frequency Division Multiple Access, FDMA), протокол управления передачей/протокол Интернета (Transmission Control Protocol/Internet Protocol, TCP-IP), службу коротких сообщений (Short Messaging Service, SMS), службу мультимедийных сообщений (Multimedia Messaging Service, MMS), электронную почту, сервис мгновенной передачи сообщений (Instant Messaging Service, IMS), Bluetooth, IEEE 802.11, и любые аналогичные технологии беспроводной связи. Устройство связи, используемое при реализации различных вариантов осуществления настоящего изобретения, может осуществлять связь с использованием различных сред передачи данных, включая, без ограничения, радиосоединения, инфракрасные, лазерные, кабельные соединения или любые другие подходящие соединения.
[0510] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере конкретных типов наборов параметров. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы с использованием любых других типов наборов параметров или иных синтаксических структур в битовом потоке.
[0511] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере кодирования указаний, синтаксических элементов и/или синтаксических структур в битовом потоке или в кодированной видеопоследовательности, и/или на примере декодирования указаний, синтаксических элементов и/или синтаксических структур из битового потока или из кодированной видеопоследовательности. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы при кодировании указаний, синтаксических элементов и/или синтаксических структур, в синтаксическую структуру или блок данных, который является внешним по отношению к битовому потоку или кодированной видеопоследовательности, содержащий данные уровней видеокодирования, например, кодированные слайсы, и/или при декодировании указаний, синтаксических элементов и/или синтаксических структур, из синтаксической структуры или блока данных, который является внешним по отношению к битовому потоку или кодированной видеопоследовательности, содержащей данные уровней видеокодирования, например, кодированных слайсов. Например, в некоторых из вариантов осуществления настоящего изобретения указание, соответствующее любому из рассмотренных выше вариантов осуществления настоящего изобретения, может кодироваться в набор видеопараметров или в набор параметров последовательности, который передают внешним образом по отношению к кодированной видеопоследовательности, к примеру, при помощи такого управляющего протокола, как SDP. Развивая этот пример, приемник может получать набор видеопараметров или набор параметров последовательности, к примеру, при помощи упомянутого управляющего протокола, и предоставлять набор видеопараметров или набор параметров последовательности для декодирования.
[0512] В приведенном выше описании примеры осуществления настоящего изобретения были описаны с помощью синтаксиса битового потока. Однако нужно понимать, что соответствующая структура и/или компьютерная программа может располагаться в кодере, и служить для формирования битового потока, и/или в декодере, и служить для декодирования битового потока. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на кодер, нужно понимать, что результирующий поток и декодер также включают соответствующие элементы. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на декодер, нужно понимать, что кодер включает структуру и/или компьютерную программу для формирования битового потока, декодируемого декодером.
[0513] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере уточняющего уровня и базового уровня. Нужно понимать, что базовым уровнем может быть также любой другой уровень, при условии, что он является опорным уровнем для уточняющего уровня. Также, нужно понимать, что кодер может формировать и помещать в битовый поток более двух уровней, а декодер может декодировать из битового потока более двух уровней. Варианты осуществления настоящего изобретения могут быть реализованы с использованием любой пары из уточняющего уровня и его опорного уровня. Аналогично, многие из вариантов осуществления настоящего изобретения могут быть реализованы с обработкой более двух уровней.
[0514] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере единственного уточняющего уровня. Нужно понимать, что варианты осуществления настоящего изобретения не ограничены кодированием и/или декодированием только одного уточняющего уровня, напротив, кодироваться и/или декодироваться может большее количество уточняющих уровней. Например, может кодироваться и/или декодироваться уровень вспомогательных изображений. В другом примере может кодироваться и/или декодироваться дополнительный уточняющий уровень, являющийся представлением прогрессивных исходных видеоданных.
[0515] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены с использованием пропускаемых изображений, тогда как другие варианты осуществления настоящего изобретения были описаны с использованием диагонального межуровневого предсказания. Нужно понимать, что пропускаемые изображения и диагональное межуровневое предсказание не обязательно исключают друг друга, и соответственно, варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с использованием, одновременно, пропускаемых изображений и диагонального межуровневого предсказания. К примеру, в одном блоке доступа, пропускаемое изображение может применяться для реализации переключения с кодированных полей на кодированные кадры или наоборот, а в другом блоке доступа для переключения с кодированных полей на кодированные кадры или наоборот может применяться диагональное межуровневое предсказание.
[0516] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере чересстрочных исходных видеоданных. Нужно понимать, что варианты осуществления настоящего изобретения могут быть применимы независимо от типа сканирования исходных видеоданных. Другими словами, варианты осуществления настоящего изобретения могут в равной степени быть применимы для прогрессивных исходных видеоданных и/или для комбинации из чересстрочных и прогрессивных исходных видеоданных.
[0517] В предшествующем описании некоторые из вариантов осуществления настоящего изобретения были рассмотрены на примере единственного кодера и/или единственного декодера. Нужно понимать, что аналогичным образом в вариантах осуществления настоящего изобретения могут применяться более одного кодера и/или более одного декодера. К примеру, для каждого кодированного и/или декодированного уровня может применяться один кодер и/или один декодер.
[0518] Рассмотренные выше примеры описывают работу вариантов осуществления настоящего изобретения в кодеке из состава электронного устройства, однако нужно понимать, что настоящее изобретение, в соответствии с дальнейшим описанием, может быть реализовано как часть любого видеокодека. Так, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, в котором видеокодирование может быть реализовано по фиксированным, или проводным, каналам связи.
[0519] Соответственно, абонентское оборудование может включать видеокодек, например, аналогичный рассмотренным в приведенном выше описании настоящего изобретения. Нужно понимать, что выражение «абонентское оборудование» используется как охватывающие любые подходящие типы беспроводного абонентского оборудования, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.
[0520] При этом элементы наземной сети мобильной связи общего пользования (public land mobile network, PLMN) также могут включать видеокодеки в соответствии с предшествующим описанием.
[0521] В общем случае различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или схем специального назначения, программного обеспечения, логики или какой-либо их комбинации. К примеру, некоторые из аспектов могут быть реализованы в виде аппаратного обеспечения, тогда как другие аспекты могут быть реализованы в виде микропрограммного или программного обеспечения, которое может исполняться контроллером, микропроцессором или иным вычислительным устройством, без ограничения настоящего изобретения перечисленным. Различные аспекты настоящего изобретения допускают иллюстрацию и описание в виде блок-схем, блок-схем алгоритмов или с помощью некоторых других наглядных представлений, но при этом нужно понимать, что блоки, устройства, системы, методы или способы, описанные в настоящем документе, могут быть реализованы, в качестве неограничивающих примеров, в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, схем или логики специального назначения, аппаратного обеспечения или контроллера общего назначения, или же иных вычислительных устройств, или некоторой их комбинации.
[0522] Варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения, исполняемого процессором данных мобильного устройства, например, процессорным элементом, или с помощью аппаратного обеспечения, или с помощью комбинации программного и аппаратного обеспечения. Также в этом отношении следует отметить, что любые блоки последовательностей логических операций, проиллюстрированные на чертежах, могут представлять собой шаги программы или взаимосвязанные логические схемы, блоки и функции, или комбинацию программных шагов и логических схем, блоков и функций. Программное обеспечение может храниться на таких физических носителях, как микросхемы памяти или блоки памяти, реализованные внутри процессора, магнитные носители, например, жесткий диск или гибкий диск, и оптические носители, например, DVD и их варианты для хранения данных, CD.
[0523] Различные варианты осуществления настоящего изобретения могут быть реализованы с помощью компьютерного программного кода, размещенного в памяти и обеспечивающего осуществление настоящего изобретения соответствующими устройствами. Например, оконечное устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным оконечным устройством. И также, сетевое устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным сетевым устройством.
[0524] Память может относиться к любому типу, соответствующему локальному техническому окружению, при этом она может быть реализована с использованием любой подходящей технологии хранения данных, например, запоминающие устройства на полупроводниках, магнитные запоминающие устройства и системы, оптические запоминающие устройства и системы, несъемная или съемная память. Процессоры данных могут относиться к любому типу, соответствующему локальному техническому окружению и могут включать одно или более из следующего: компьютеры общего назначения, компьютеры специального назначения, микропроцессоры, цифровые сигнальные процессоры (digital signal processors, DSP), процессоры на основе многоядерной архитектуры - в качестве неограничивающих примеров.
[0525] Варианты осуществления настоящего изобретения могут применяться на практике в различных компонентах, например, в модулях интегральных схем. Процесс разработки интегральных схем, в целом, в высокой степени автоматизирован. Существуют сложные и мощные программные инструменты для преобразования проектов логического уровня в конструкции полупроводниковых схем, готовые для вытравливания и формовки на полупроводниковой подложке.
[0526] Программы, подобные поставляемой фирмой Synopsys, Inc (Маунтин-Вью, Калифорния) или фирмой Cadence Design (Сан-Хосе, Калифорния), осуществляют автоматическую разводку проводников и позиционирование компонентов на полупроводниковом кристалле с использованием общепринятых правил разработки, а также с использованием библиотек заранее сохраненных модулей проектов. По завершении разработки полупроводниковой схемы результирующая конструкция, в стандартизированном электронном формате (например, Opus, GDSII и т.п.) может быть передана на полупроводниковое производство для изготовления микросхемы.
[0527] В предшествующем изложении с помощью иллюстративных и неограничивающих примеров было обеспечено полное и информативное описание одного из примеров осуществления настоящего изобретения. Однако в свете предшествующего описания, рассматриваемого в сочетании с приложенными чертежами, специалистам в соответствующих областях техники могут быть очевидны различные модификации и доработки. Тем не менее, любые такие или аналогичные им модификации концепции настоящего изобретения все равно попадают в его рамки.
[0528] Далее будут приведены некоторые из примеров.
[0529] В соответствии с первым примером предложен способ, включающий:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля; в ответ на выявление точки переключения с декодирования кодированных кадров на декодирование кодированных полей, выполнение следующего: декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0530] В некоторых из вариантов осуществления настоящего изобретения способ включает одно или более из следующего:
прием указания на первое опорное изображение;
прием указания на второе опорное изображение.
[0531] В некоторых из вариантов осуществления настоящего изобретения способ включает:
прием указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0532] В некоторых из вариантов осуществления настоящего изобретения способ включает:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0533] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0534] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0535] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0536] В некоторых из вариантов осуществления настоящего изобретения способ включает:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения (уточнения) качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0537] В некоторых из вариантов осуществления настоящего изобретения способ включает:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0538] В некоторых из вариантов осуществления настоящего изобретения способ включает: диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0539] В некоторых из вариантов осуществления настоящего изобретения способ включает:
декодирование второго опорного изображения в качестве изображения, не подлежащего выводу.
[0540] В соответствии со вторым примером предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения выполнения упомянутым устройством по меньшей мере следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля;
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0541] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
прием указания на первое опорное изображение;
прием указания на второе опорное изображение.
[0542] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
прием указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0543] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0544] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0545] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0546] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0547] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0548] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0549] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0550] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
декодирование второго опорного изображения в качестве изображения, не подлежащего выводу.
[0551] В соответствии с третьим примером предложен компьютерный программный продукт, выполненный на машиночитаемом носителе, который содержит компьютерный программный код, сконфигурированный, при исполнении по меньшей мере на одном процессоре, для обеспечения выполнения, устройством или системой, следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля;
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0552] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
прием указания на первое опорное изображение; прием указания на второе опорное изображение.
[0553] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
прием указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0554] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0555] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0556] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0557] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0558] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0559] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0560] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0561] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
декодирование второго опорного изображения в качестве изображения, не подлежащего выводу.
[0562] В соответствии с четвертым примером предложен способ, включающий:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, при этом кодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня, при этом кодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0563] В некоторых из вариантов осуществления настоящего изобретения способ включает одно или более из следующего:
предоставление указания на первое опорное изображение;
предоставление указания на второе опорное изображение.
[0564] В некоторых из вариантов осуществления настоящего изобретения способ включает:
предоставление указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0565] В некоторых из вариантов осуществления настоящего изобретения способ включает:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0566] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0567] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0568] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0569] В некоторых из вариантов осуществления настоящего изобретения способ включает:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0570] В некоторых из вариантов осуществления настоящего изобретения способ включает: предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0571] В некоторых из вариантов осуществления настоящего изобретения способ включает: диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0572] В некоторых из вариантов осуществления настоящего изобретения способ включает: кодирование второго опорного изображения в качестве изображения, не подлежащего выводу из процедуры декодирования.
[0573] В соответствии с пятым примером предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения выполнения упомянутым устройством по меньшей мере следующего:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, с использованием первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня с использованием второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0574] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление указания на первое опорное изображение;
предоставление указания на второе опорное изображение.
[0575] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0576] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0577] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0578] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0579] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0580] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0581] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0582] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0583] В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством по меньшей мере одного из следующего:
кодирование второго опорного изображения в качестве изображения, не подлежащего выводу из процедуры декодирования.
[0584] В соответствии с шестым примером предложен компьютерный программный продукт, выполненный на машиночитаемом носителе, который содержит компьютерный программный код, сконфигурированный, при исполнении по меньшей мере на одном процессоре, для обеспечения выполнения, устройством или системой, следующего:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, с использованием первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения;
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня с использованием второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0585] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление указания на первое опорное изображение;
предоставление указания на второе опорное изображение.
[0586] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление указания по меньшей мере на одно из следующего: первый масштабируемый уровень, второй масштабируемый уровень, третий масштабируемый уровень и четвертый масштабируемый уровень, при этом масштабируемый уровень содержит кодированные изображения, являющиеся представлением кодированных полей или кодированных кадров.
[0587] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
использование одного уровня в качестве первого масштабируемого уровня и четвертого масштабируемого уровня; и
использование другого уровня в качестве второго масштабируемого уровня и третьего масштабируемого уровня.
[0588] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый другой уровень является уточняющим уровнем масштабируемого видеокодирования.
[0589] В некоторых из вариантов осуществления настоящего изобретения упомянутый другой уровень является базовым уровнем масштабируемого видеокодирования, а упомянутый один уровень является уточняющим уровнем масштабируемого видеокодирования.
[0590] В некоторых из вариантов осуществления настоящего изобретения упомянутый один уровень является первым уточняющим уровнем масштабируемого видеокодирования, а упомянутый другой уровень является другим уточняющим уровнем масштабируемого видеокодирования.
[0591] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и
в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве второго масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый первый масштабируемый уровень в иерархии масштабируемых уровней.
[0592] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
предоставление иерархии масштабируемых уровней, включающей множество масштабируемых уровней, упорядоченных в порядке повышения качества видеоизображения; и в ответ на определение того, что первая комплементарная пара полей должна быть закодирована в качестве первого кодированного кадра а вторая несжатая комплементарная пара полей должна быть закодирована в качестве второй пары кодированных полей, использование, в качестве четвертого масштабируемого уровня, масштабируемого уровня, который выше, чем упомянутый третий масштабируемый уровень в иерархии масштабируемых уровней.
[0593] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
диагональное предсказание упомянутого второго опорного изображения на основе первой пары кодированных полей.
[0594] В некоторых из вариантов осуществления настоящего изобретения компьютерный программный продукт включает компьютерный программный код, сконфигурированный, при исполнении упомянутым по меньшей мере одним процессором, для обеспечения выполнения, устройством или системой, по меньшей мере следующего:
кодирование второго опорного изображения в качестве изображения, не подлежащего выводу из процедуры декодирования.
[0595] В соответствии с седьмым примером предложен видеодекодер, сконфигурированный для декодирования битового потока блоков данных визуальной информации, при этом упомянутый видеодекодер дополнительно сконфигурирован для выполнения следующего:
прием одного или более указаний, которые используют для определения, присутствует ли в битовом потоке точка переключения с декодирования кодированных полей на декодирование кодированных кадров или с декодирования кодированных кадров на декодирование кодированных полей, при этом если такая точка переключения присутствует, способ дополнительно включает:
в ответ на выявление точки переключения с декодирования кодированных полей на декодирование кодированных кадров выполнение следующего:
прием первого кодированного кадра первого масштабируемого уровня и второго кодированного поля второго масштабируемого уровня;
восстановление первого кодированного кадра с получением первого восстановленного кадра;
изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
декодирование второго кодированного поля с получением второго восстановленного поля, при этом декодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания второго кодированного поля;
в ответ на выявление точки переключения с декодирования кодированных кадров на декодирование кодированных полей выполнение следующего:
декодирование первой пары кодированных полей третьего масштабируемого уровня с получением первой восстановленной комплементарной пары полей или декодирование первого кодированного поля третьего масштабируемого уровня с получением первого восстановленного поля;
изменение разрешения одного или обоих полей в первой восстановленной комплементарной паре полей или в первом восстановленном поле с получением второго опорного изображения;
декодирование второго кодированного кадра четвертого масштабируемого уровня с получением второго восстановленного кадра, при этом декодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.
[0596] В соответствии с примером предложен видеокодер, сконфигурированный для кодирования битового потока блоков данных визуальной информации, при этом упомянутый видеокодер дополнительно сконфигурирован для выполнения следующего:
прием первой несжатой комплементарной пары полей и второй несжатой комплементарной пары полей;
определение, следует ли кодировать первую комплементарную пару полей в качестве первого кодированного кадра или первой пары кодированных полей и вторую несжатую комплементарную пару полей в качестве второго кодированного кадра или второй пары кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первого кодированного кадра первого масштабируемого уровня; восстановление первого кодированного кадра с получением первого восстановленного кадра; изменение разрешения первого восстановленного кадра с получением первого опорного изображения; и
кодирование второй комплементарной пары полей в качестве второй пары кодированных полей второго масштабируемого уровня, при этом кодирование включает использование первого опорного изображения в качестве опорного изображения для предсказания по меньшей мере одного поля во второй паре кодированных полей;
в ответ на определение того, что первую комплементарную пару полей следует кодировать в качестве первого кодированного кадра и вторую несжатую комплементарную пару полей следует кодировать в качестве второй пары кодированных полей, выполнение следующего:
кодирование первой комплементарной пары полей в качестве первой пары кодированных полей третьего масштабируемого уровня;
восстановление по меньшей мере одного поля из первой пары кодированных полей по меньшей мере с получением одного из следующего: первое восстановленное поле и второе восстановленное поле;
изменение разрешения первого восстановленного поля и/или второго восстановленного поля с получением второго опорного изображения; и
кодирование второй комплементарной пары полей в качестве второго кодированного кадра четвертого масштабируемого уровня, при этом кодирование включает использование второго опорного изображения в качестве опорного изображения для предсказания второго кодированного кадра.