Область техники
Настоящая заявка относится, в общем, к устройству, способу и компьютерной программе для кодирования и декодирования видеоданных.
Предпосылки создания изобретения
Настоящий раздел имеет целью представить контекст настоящего изобретения, заявленного в пунктах формулы изобретения. Описание в данном разделе может включать идеи, которые могли бы быть рассмотрены, но не обязательно уже предложенные или получившие развитие. Соответственно, в настоящем документе, если не указано на обратное, описание в данном разделе не является существующим уровнем техники для формулы изобретения настоящей заявки, и не признается существующим уровнем техники вследствие включения в данный раздел.
Во многих стандартах видеокодирования синтаксические структуры могут быть организованы с использованием нескольких различных уровней, при этом «уровень» может быть определен как набор синтаксических структур в неразветвленной иерархической связи. Как правило, более высокие уровни могут включать в себя нижние уровни. Кодируемые уровни могут включать, например, уровни кодированной видеопоследовательности, уровни изображения, уровни слайсов и уровни блоков с древовидной структурой кодирования. В некоторых стандартах видеокодирования введено понятие «набора параметров». Экземпляром набора параметров может быть изображение в целом, группа изображений, и данные уровня последовательности, такие как размер изображения, окно отображения, использованные опциональные режимы кодирования, карта распределения макроблоков и др. Каждый экземпляр набора параметров может включать уникальный идентификатор. Каждый заголовок слайса может включать ссылку на идентификатор набора параметров, при этом значения параметров в наборе параметров, на которые осуществляется ссылка, могут быть использованы при декодировании слайса. Наборы параметров могут использоваться для обеспечения независимости порядка передачи и декодирования нечасто меняющихся изображений, GOP и данных уровня последовательности для последовательностей, GOP и границ изображения. Наборы параметров могут передаваться вне основной полосы с использованием надежного протокола связи, единственное условие: они должны быть декодированы до того, как на них будет осуществлена ссылка. Если наборы параметров передаются в основной полосе, они могут повторяться несколько раз для повышения устойчивости к ошибкам по сравнению с традиционными схемами видеокодирования. Наборы параметров могут передаваться во время установления сеанса. Однако в некоторых системах, как правило, системах широковещания, надежная передача наборов параметров вне основной полосы неосуществима, и наборы параметров передаются в основной полосе, в NAL-блоках наборов параметров ("Parameter Set").
Сущность изобретения
В соответствии с некоторыми из примеров осуществления настоящего изобретения предложены способы, устройства и компьютерные программные продукты для передачи и приема наборов параметров и обеспечения идентификаторов для этих наборов параметров таким образом, чтобы эти идентификаторы обеспечивали возможность определения действительности упомянутых наборов параметров. В некоторых из вариантов осуществления настоящего изобретения упомянутые наборы параметров представляют собой наборы параметров адаптации. В некоторых из вариантов осуществления настоящего изобретения значения идентификаторов одного или более наборов параметров используют для определения действительности этих наборов параметров.
Различные аспекты примеров настоящего изобретения приведены в разделе с подробным описанием изобретения.
В соответствии с первым аспектом настоящего изобретения предложен способ, включающий:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что первый набор параметров является действительным на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии со вторым аспектом настоящего изобретения предложен способ, включающий:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров к упомянутому первому набору параметров;
кодирование второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прикрепление к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с третьим аспектом настоящего изобретения предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, содержащую компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы для обеспечения, при помощи упомянутого по меньшей мере одного процессора, выполнения упомянутым устройством следующего:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема в упомянутом втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с четвертым аспектом настоящего изобретения предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, содержащую компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы для обеспечения, при помощи упомянутого по меньшей мере одного процессора, выполнения упомянутым устройством следующего:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров к упомянутому первому набору параметров;
кодирование второго набора параметров;
и определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора этого второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с пятым аспектом настоящего изобретения предложен компьютерный программный продукт, включающий одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение устройством по меньшей мере следующего:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием в упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с шестым аспектом настоящего изобретения предложен компьютерный программный продукт, включающий одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение устройством по меньшей мере следующего:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров;
кодирование второго набора параметров; определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с седьмым аспектом настоящего изобретения предложено устройство, включающее:
средства приема первого набора параметров;
средства получения идентификатора упомянутого первого набора параметров;
средства приема второго набора параметров;
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с восьмым аспектом настоящего изобретения предложено устройство, включающее:
средства кодирования первого набора параметров;
средства прикрепления идентификатора упомянутого первого набора параметров;
средства кодирования второго набора параметров; и
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с девятым аспектом осуществления настоящего изобретения предложен видеодекодер, сконфигурированный:
для приема первого набора параметров;
для получения идентификатора упомянутого первого набора параметров;
для приема второго набора параметров;
для определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с десятым аспектом осуществления настоящего изобретения предложен видеокодер, сконфигурированный:
для кодирования первого набора параметров;
для прикрепления идентификатора упомянутого первого набора параметров к упомянутому второму набору параметров;
для кодирования второго набора параметров;
для определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прикрепление к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прикрепление к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
Краткое описание чертежей
Для более полного понимания примеров осуществления настоящего изобретения необходимо обратиться к дальнейшему описанию с приложенными чертежами, где:
На фиг. 1 эскизно проиллюстрировано электронное устройство, в котором применяются некоторые из аспектов настоящего изобретения;
на фиг. 2 эскизно проиллюстрировано абонентское оборудование, подходящее для применения некоторых из вариантов настоящего изобретения;
на фиг. 3 эскизно проиллюстрированы электронные устройства, в которых применяются некоторые из аспектов настоящего изобретения и которые соединены при помощи проводных и беспроводных сетевых соединений;
на фиг. 4а эскизно проиллюстрирован один из вариантов осуществления настоящего изобретения в составе кодера;
на фиг. 4b эскизно проиллюстрирован один из вариантов осуществления устройства внутреннего предсказания в соответствии с некоторыми из вариантов осуществления настоящего изобретения;
на фиг. 5 проиллюстрирована упрощенная модель системы 3DV на основе DIBR;
на фиг. 6 проиллюстрирована упрощенная двумерная модель конфигурации стереоскопической камеры;
на фиг. 7 показан один из примеров определения блоков доступа и порядка их кодирования;
на фиг. 8 показан алгоритм верхнего уровня для одного из вариантов осуществления кодера, способного кодировать ракурсы текстуры и глубины; и
на фиг. 9 показан алгоритм верхнего уровня для одного из вариантов осуществления декодера, способного кодировать ракурсы текстуры и глубины.
Подробное описание некоторых вариантов осуществления изобретения
Далее будут описаны несколько вариантов осуществления настоящего изобретения в контексте осуществления видеокодирования. Следует однако отметить, что настоящее изобретение не ограничено данным конкретным применением. Более того, различные варианты осуществления настоящего изобретения могут применяться в множестве различных сред, где требуется усовершенствованная обработка опорных изображений. Например, настоящее изобретение может применяться в таких системах видеокодирования как потоковые системы, DVD-проигрыватели, приемники цифрового телевидения, персональные видеорекордеры, системы и компьютерные программы на персональных компьютерах, наладонных компьютерах и устройствах связи, а также такие сетевые элементы, как транскодеры и облачные вычислительные системы, обрабатывающие видеоданные.
Стандарт H.264/AVC был разработан объединенной командой по видео (Joint Video Team, JVT) группы экспертов по видеокодированию (Video Coding Experts Group, VCEG) сектора стандартизации телекоммуникаций Международного союза электросвязи (International Telecommunication Union, ITU-T) и группой экспертов по движущемуся изображению (the Moving Picture Experts Group, MPEG) Международной организации по стандартизации (International Organization for Standardization, ISO) / Международной электротехнической комиссии (International Electrotechnical Commission, IEC). Стандарт H.264/AVC был опубликован обеими родительскими организациями по стандартизации и получил наименование Рекомендации I-L264 ITUT и Международного стандарта 14496-10, известного также как улучшенное видеокодирование (Advanced Video Coding, AVC), 10-ая часть MPEG-4. Были выпущены несколько версий стандарта H.264/AVC, в спецификацию каждой из которых добавлялись новые расширения или элементы. В число этих расширений входили масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видеокодирование (Multiview Video Coding, MVC).
В текущий момент объединенной командой по видеокодированию (Joint Collaborative Team - Video Coding, JCT-VC) группы VCEG ведется работа над проектом стандарта высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC).
В настоящем разделе приведены ключевые определения, описана структура битового потока и кодирования, а также основные понятия стандартов H.264/AVC и HEVC, в качестве примера видеокодера, декодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Часть ключевых определений, структур битового потока и кодирования, а также основных понятий стандарта H.264/AVC являются общими с проектом стандарта HEVC, в этом случае они описаны ниже совместно. Аспекты настоящего изобретения не ограничены стандартами H.264/AVC или HEVC, напротив, данное описание приведено в качестве описания лишь одной базы для частичной или полной реализации настоящего изобретения.
Аналогично многим предшествующим стандартам видеокодирования, в стандартах H.264/AVC и HEVC определены синтаксис и семантика битового потока, а также процесс декодирования безошибочных битовых потоков. Процесс кодирования не определен, однако кодеры должны формировать битовые потоки, соответствующие стандарту. Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического опорного декодера (Hypothetical Reference Decoder (HRD). Стандарты включают в себя инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании не является обязательным, а процесс декодирования для битовых потоков с ошибками не определен.
Элементарным блоком для ввода в декодер H.264/AVC или HEVC и вывода из декодера H.264/AVC или HEVC, соответственно, является изображение. В случае стандартов H.264/AVC и HEVC изображение может представлять собой кадр или поле. Кадр включает в себя матрицу элементов (отсчетов) яркости и соответствующих элементов цветности. Поле представляет собой множество чередующихся строк элементов кадра и может использоваться как входные данные для кодера в случае, когда исходный сигнал является чересстрочным. Разрешение компонентов цветности может быть пониженным, по сравнению с разрешением компонентов яркости. Например, при схеме семплирования 4:2:0 пространственное разрешение компонента цветности будет равно половине разрешения компонента яркости по обеим координатным осям.
В стандарте H.264/AVC макроблок представляет собой блок элементов яркости размером 16×16 и соответствующие блоки элементов цветности. Например, при схеме семплирования 4:2:0 макроблок будет содержать один блок элементов цветности размером 8×8 для каждого компонента цветности. В стандарте H.264/AVC изображение разбивается на одну или более групп слайсов, при этом каждая группа слайсов содержит один или более слайсов. В стандарте H.264/AVC слайс состоит из целого числа макроблоков, упорядоченных в порядке сканирования растра в каждой группе слайсов.
В проекте стандарта HEVC видеоизображения разбивают на блоки кодирования (coding unit, CU), покрывающие область изображения. Каждый из блоков кодирования состоит из одного или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания значений в блоке кодирования, а также одного или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для элементов в блоке кодирования. Как правило, блок кодирования состоит из квадратного блока элементов, размер которого выбирается из заранее заданного множества допустимых размеров блока кодирования. Блок кодирования максимально допустимого размера, как правило, называется LCU (largest coding unit, наибольший блок кодирования), при этом изображение в видео разбивается на неперекрывающиеся LCU. Блок LCU может быть разбит на комбинацию менее крупных блоков кодирования, например, при помощи рекурсивного разбиения LCU и результирующих блоков кодирования. Каждый из результирующих блоков кодирования, как правило, имеет связанный с ним по меньшей мере один блок предсказания и один блок преобразования. Каждый блок предсказания и блок преобразования могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения детализации процедур предсказания и кодирования ошибки предсказания, соответственно. Разбиение блока предсказания может быть реализовано как разбиение блока кодирования на четыре квадратных блока предсказания или разбиение блока кодирования на два прямоугольных блока предсказания по вертикали или по горизонтали, симметрично или несимметрично. Разбиение изображения на блоки кодирования и разбиение блоков кодирования на блоки предсказания и блоки преобразования, передаваемые, как правило, в битовом потоке, позволяет воспроизводить заданную структуру этих блоков в декодере.
В проекте стандарта HEVC изображение может быть разбито на "плитки" (tiles), которые имеют прямоугольную форму и содержат целое число LCU. В проекте стандарта HEVC разбиение на плитки дает регулярную сетку, в которой максимальная разность между высотой и шириной ячеек равна одному LCU. В проекте стандарта HEVC каждый слайс состоит из целого числа блоков кодирования. Блоки кодирования сканируются в порядке сканирования растра LCU в плитках или в изображении в целом, если плитки не используются. В LCU блоки кодирования могут иметь заданный порядок сканирования.
В 5-й редакции рабочего проекта (Working Draft 5, WD 5) стандарта HEVC некоторые из ключевых определений и понятий, связанных с разбиением изображения, определены следующим образом. Разбиением называется разделение множества на подмножества таким образом, что каждый элемент множества находится только в одном из подмножеств.
Базовым блоком кодирования в редакции WD5 стандарта HEVC является блок с древовидной структурой кодирования. Блок с древовидной структурой кодирования представляет собой блок элементов яркости размера N×N и два соответствующих блока элементов цветности изображения, которые имеют по меньшей мере три массива значений, или блок значений размера N×N монохромного изображения, или изображения, кодируемого с использованием трех отдельных цветных слоев. Блок с древовидной структурой кодирования для последующих процедур кодирования и декодирования может разбиваться на части. Разбиение блока с древовидной структурой кодирования представляет собой блок элементов яркости и два соответствующих блока элементов цветности, полученные в результате разбиения блока с древовидной структурой кодирования для изображения, которое имеет три массива значений, или блок элементов яркости, полученные в результате разбиения блока с древовидной структурой кодирования для монохромного изображения или изображения, кодируемого с использованием трех цветных слоев. Каждому блоку с древовидной структурой кодирования ставится в соответствие сигнализация разбиения, предназначенная для определения размеров блоков для внутреннего или внешнего предсказания, а также для кодирования с преобразованием. Разбиение в данном случае представляет собой рекурсивное разбиение с использованием дерева квадрантов. Корень дерева квадрантов ставится в соответствие блоку с древовидной структурой кодирования. Дерево квадрантов разбивается на части до тех пор, пока не будет достигнут лист дерева, который называют узлом кодирования. Узел кодирования является корневым узлом двух деревьев, дерева предсказания и дерева преобразования. Дерево предсказания определяет положение и размер блоков предсказания. Дерево предсказания и связанные с ним данные предсказания называются блоком предсказания. Дерево преобразования определяет положение и размер блоков преобразования. Дерево преобразования и связанные с ним данные преобразования называются блоком преобразования. Информация о разбиении на компоненты яркости и цветности является идентичной для дерева предсказания, при этом для дерева преобразования она может быть как идентичной, так и отличаться. Узел кодирования, вместе со связанными с ним блоками предсказания и преобразования, образуют блок кодирования.
В редакции WD5 стандарта HEVC изображения разбивают на слайсы и плитки. Слайс может представлять собой последовательность блоков с древовидной структурой кодирования, но (в случае так называемого слайса высокой детализации) может иметь также границу внутри блока с древовидной структурой кодирования в точке соприкосновения блока преобразования и блока предсказания. Блоки с древовидной структурой кодирования внутри слайса кодируются и декодируются в порядке сканирования растра. Для первично кодированного изображения деление каждого изображения на слайсы является разбиением.
В редакции WD5 стандарта HEVC плитка определена как целое число блоков с древовидной структурой кодирования, совместно расположенных в одном столбце и одной строке, упорядоченных в порядке сканирования растра в плитке. Для первично кодированного изображения деление изображения на плитки является разбиением. Плитки упорядочены в порядке сканирования растра в изображении. Слайс содержит блоки с древовидной структурой кодирования, упорядоченные в порядке сканирования растра в плитке, однако несмотря на это такие блоки с древовидной структурой кодирования не обязательно сами расположены в порядке сканирования растра в изображении. Слайсы и плитки не обязательно содержат одинаковую последовательность блоков с древовидной структурой кодирования. Плитка может включать блоки с древовидной структурой кодирования, содержащиеся более чем в одном слайсе. Аналогично, слайс может включать блоки с древовидной структурой кодирования, содержащиеся в нескольких плитках.
В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, слайсы можно считать способом деления кодированного изображения на независимо декодируемые части, и, следовательно, слайсы часто считаются элементарными единицами передачи. Во многих случаях кодеры могут указывать в битовом потоке, какие типы внутреннего предсказания с переходом между границами слайсов запрещены, при этом декодер учитывает данную информацию в своей работе, например, делая вывод о доступных источниках предсказания. Например, значения из соседних макроблоков, или блоков кодирования, могут считаться недоступными для внутреннего предсказания, если эти соседние макроблоки, или блоки кодирования, расположены в различных слайсах.
Синтаксическим элементом может быть назван элемент данных, представленных в битовом потоке. Синтаксической структурой может быть назван ноль или более синтаксических элементов, совместно находящихся в битовом потоке в заданном порядке. Элементарным блоком для вывода из декодера H.264/AVC или HEVC и ввода в декодер H.264/AVC или HEVC, соответственно, является блок уровня сетевой абстракции (Network Abstraction Layer, NAL). С целью передачи по сетям пакетной передачи данных или хранения в структурированных файлах NAL-блоки могут инкапсулироваться в пакеты или в аналогичные структуры. Формат битового потока определен в стандартах H.264/AVC и HEVC для сред передачи или хранения, не обеспечивающих структуру кадров. В формате битового потока NAL-блоки отделяются друг от друга при помощи прикрепления перед каждым NAL-блоком специального стартового кода. Чтобы исключить ложное обнаружение границ NAL-блоков в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке NAL-блока, если в противном случае в ней будет присутствовать стартовый код. Чтобы обеспечить прямое шлюзовое взаимодействие между системами пакетной и потоковой передачи данных, предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат битового потока или нет. NAL-блок может быть определен как синтаксическая структура, содержащая указание на тип данных, следующих за ней, и байты, содержащие эти данные в форме RBSP (raw byte sequence payload, последовательность исходных байтов полезной нагрузки), чередующиеся, при необходимости, с байтами предотвращения эмуляции. Последовательность RBSP может быть определена как синтаксическая структура, включающая целое число байтов и инкапсулируемая в NAL-блоке. Последовательность RBSP может быть либо пустой, либо иметь форму строки битов данных, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и ноль или более последующих битов, равных 0.
NAL-блоки состоят из заголовка и полезной нагрузки. В стандартах H.264/AVC и HEVC заголовок NAL-блока указывает на тип данного NAL-блока, а также на то, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения. Стандарт H264/AVC включает 2-битный синтаксический элемент nal_ref_idc, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью неопорного изображения, и если он больше 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью опорного изображения. Проект стандарта HEVC включает 1-битный синтаксический элемент nal_ref_idc, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью неопорного изображения, и если он равен 1, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью опорного изображения. Заголовок NAL-блоков в расширениях SVC и MVC может дополнительно содержать различные указания, связанные с масштабированием и многоракурсной иерархией. В проекте стандарта HEVC заголовок NAL-блока включает синтаксический элемент temporal_id, который определяет временный идентификатор NAL-блока.
NAL-блоки могут быть разделены на две категории: NAL-блоки уровня видеокодирования (Video Coning Layer, VCL) и NAL-блоки, не являющиеся блоками VCL. NAL-блоки категории VCL представляют собой NAL-блоки со стандартным кодированием слайсов. В стандарте H.264/AVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более кодированных макроблоков, каждый из которых соответствует блоку элементов несжатого изображения. В проекте стандарта HEVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более блоков кодирования. В стандартах H.264/AVC и HEVC может осуществляться указание на то, что кодированный NAL-блок слайса является кодированным слайсом изображения мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR) или кодированным слайсом изображения, не являющегося IDR-изображением. В стандарте HEVC может осуществляться указание на то, что NAL-блок кодированного слайса является кодированным слайсом изображения чистого обновления декодирования (Clean Decoding Refresh, CDR) или изображения с чистым произвольным доступом (Clean Random Access, CRA).
NAL-блок, не являющийся блоком VCL, может, например, иметь один из следующих типов: набор параметров последовательности, набор параметров изображения, NAL-блок дополнительной уточняющей информации (supplemental enhancement information, SEI), разделитель блока доступа, конец последовательности NAL-блоков, конец потока NAL-блоков или NAL-блок с данными фильтрации. Наборы параметров могут быть необходимы для восстановления декодированных изображений, при этом многие из остальных типов NAL-блоков, не являющихся блоками VCL, не являются необходимыми для восстановления декодированных изображений.
В набор параметров последовательности могут включаться параметры, которые остаются неизменными в течение всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы для процедуры декодирования, набор параметров последовательности опционально может включать информацию по используемости видео (video usability information, VUI), включающую параметры, которые могут быть важными для буферизации, синхронизации вывода изображения, рендеринга изображения и резервирования ресурсов. В стандарте H.264/AVC определены три типа NAL-блоков, несущих наборы параметров последовательности: NAL-блоки с параметрами последовательности, содержащие все данные для NAL-блоков VCL стандарта H.264/AVC в последовательности, расширенные NAL-блоки набора параметров последовательности, содержащие данные внешне кодируемых изображений и блоки, содержащие поднабор набора параметров для NAL-блоков MVC и SVC VCL. Набор параметров изображения содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений.
В проекте стандарта 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.
Синтаксис стандартов H.264/AVC и HEVC допускает наличие множественных экземпляров наборов параметров, при этом каждый экземпляр имеет уникальный идентификатор. Чтобы ограничить использование памяти, необходимой для наборов параметров, был ограничен диапазон значений для идентификаторов наборов параметров. В стандарте H.264/AVC и в проекте стандарта HEVC каждый заголовок слайса включает идентификатор набора параметров изображения, который является активным для декодирования изображения, содержащего этот слайс, при этом каждый набор параметров изображения содержит идентификатор активного набора параметра последовательности. В стандарте HEVC заголовок слайса дополнительно включает идентификатор набора APS. Следовательно, передача наборов параметров изображения и последовательности не обязательно должна быть точно синхронизирована с передачей слайсов, напротив, достаточно, чтобы активные наборы параметров последовательности и изображения были приняты до момента осуществления ссылки на них, что позволяет передавать наборы параметров «вне основной полосы» с использованием более надежных механизмов передачи по сравнению с протоколами, применяемыми для передачи данных слайсов. Например, наборы параметров могут включаться в качестве параметров в описание сеанса для сеансов транспортного протокола реального времени (Real-time Transport Protocol, RTP). Если наборы параметров передаются в основной полосе, то в целях повышения устойчивости к ошибкам они могут повторяться.
NAL-блоки SEI могут содержать одно или более сообщений SEI, которые не требуются для декодирования выходных изображений, но могут быть полезными в связанных с этим процедурах, например, синхронизации вывода изображения, рендеринга, обнаружения ошибок, скрытия ошибок и резервирования ресурсов. В стандартах H.264/AVC и HEVC определены несколько типов сообщений SEI, при этом сообщения SEI с пользовательскими данными позволяют организациям и компаниями определять сообщения SEI для личного использования. В стандартах H.264/AVC и HEVC описаны синтаксис и семантика сообщений SEI, однако процедура обработки сообщений на стороне приемника не определена. Следовательно, кодер должен следовать стандарту H.264/AVC или HEVC при формировании SEI-сообщений, при этом декодер, отвечающий стандарту H.264/AVC или HEVC соответственно, не обязательно должен обрабатывать SEI-сообщения, соответствие выходной последовательности стандарту от этого не зависит. Одной из причин включения синтаксиса и семантики SEI-сообщений в стандарты H.264/AVC и HEVC является возможность идентичной интерпретации дополнительной информации системами с различными спецификациями, и следовательно, их взаимодействия. Предполагается, что системные спецификации могут требовать применения конкретных SEI-сообщений как на стороне кодера, так и на стороне декодера, при этом процедура обработки конкретных SEI-сообщений на стороне приемника может быть определена дополнительно.
Кодированное изображение - это кодовое представление изображения. Кодированное изображение в стандарте H.264/AVC включает NAL-блоки VCL, которые необходимы для декодирования изображения. В стандарте H.264/AVC кодированное изображение может быть либо первично кодированным изображением, либо избыточно кодированным изображением. Первично кодированное изображение используется в процедуре декодирования безошибочных битовых потоков, тогда как избыточно кодированное изображение является представлением с избыточностью и декодируется, только если первично кодированное изображение не может быть успешно декодировано. В проекте стандарта HEVC избыточное кодированное изображение не определено.
В стандартах H.264/AVC и HEVC блок доступа включает первично кодированное изображение и связанные с ним NAL-блоки. В стандарте H.264/AVC порядок появления NAL-блоков внутри блока доступа задан следующим образом. На начало блока доступа может указывать опциональный NAL-блок, являющийся разделителем блоков доступа. За ним следует ноль или более NAL-блоков SEI. Далее идут кодированные слайсы первично кодированного изображения. В стандарте H.264/AVC после кодированных слайсов первично кодированного изображения могут следователь кодированные слайсы нуля или более избыточно кодированных изображений. Избыточно кодированное изображение - это кодовое представление изображения или части изображения. Избыточно кодированное изображение может декодироваться, если первично кодированное изображение не принято в декодере, например, в результате потерь при передаче или в результате ошибки в физическом носителе.
В стандарте H.264/AVC блок доступа может также включать внешне кодированное изображение, которое дополняет первично кодированное изображение и может использоваться, например, в процедуре отображения. Внешне кодированное изображение может, например, использоваться в качестве альфа-канала или альфа-слоя, задающего уровень прозрачности элементов декодированных изображений. Альфа-канал, или альфа-слой, может использоваться в многоуровневой системе формирования или рендеринга изображений, где выходное изображение образуется накладывающимися друг на друга частично прозрачными изображениями. Внешне кодированное изображение имеет те же синтаксические и семантические ограничения, что и монохромное избыточно кодированное изображение. В стандарте H.264/AVC внешне кодированное изображение содержит то же количество макроблоков, что и первично кодированное изображение.
Кодированная видеопоследовательность определена как ряд последовательных блоков доступа в порядке декодирования от блока доступа IDR включительно до следующего блока доступа IDR исключительно или до конца битового потока, - в зависимости от того, что появляется раньше.
Далее приведено определение и характеристики группы изображений (group of pictures, GOP). Группа изображений, GOP, может быть декодирована независимо от того, были ли декодированы какие-либо предшествующие изображения или нет. Открытая группа изображений - это группа изображений, в которой изображения, предшествующие первому изображению в порядке вывода, для которого используется внутреннее предсказание, могут не быть декодированы корректно, если декодирование начинается с этого первого изображения открытой группы изображений, для которого используется внутреннее предсказание. Другими словами, изображения в открытой GOP могут ссылаться (для внутреннего предсказания) на изображения из предшествующей GOP. Декодер стандарта H.264/AVC способен распознавать внутренне предсказываемое изображение в начале открытой GOP на основе SEI-сообщения, указывающего на точку восстановления в битовом потоке стандарта H.264/AVC. Декодер стандарта HEVC способен распознавать внутренне предсказываемое изображение в начале открытой GOP благодаря специальному типу NAL-блоков, CRA, который используется для кодируемых слайсов этого изображения. Закрытая группа изображений - это группа изображений, в которой все изображения могут быть декодированы корректно, если декодирование начинается с первого изображения закрытой группы изображений, для которого используется внутреннее предсказание. Другими словами, ни одно из изображений в закрытой GOP не ссылается ни на одно изображение из предшествующих GOP. В стандартах H.264/AVC и HEVC закрытая GOP начинается с блока доступа IDR. В результате структура закрытой GOP имеет более высокий потенциал устойчивости к ошибкам, по сравнению со структурой открытой GOP, однако за счет возможного понижения эффективности сжатия. Структура кодирования с открытыми GOP дает потенциально более эффективное сжатие благодаря большей гибкости при выборе опорных изображений.
В синтаксисе битового потока стандартов H.264/AVC и HEVC присутствуют указания на то, является ли изображение опорным для внешнего предсказания какого-либо другого изображения. Изображения с любым типом кодирования (I, Р, В) в стандартах H.264/AVC и HEVC могут быть как опорными изображениями, так и неопорными изображениями. Заголовок NAL-блока указывает на тип данного NAL-блока, а также на то, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения.
Многие гибридные видеокодеки, включающие функциональность H.264/AVC и HEVC, кодируют видеоинформацию в два этапа. На первом этапе выполняется предсказание значений пикселей, или элементов, в некоторой области изображения. Эти значений пикселей, или элементов изображения, могут предсказываться, например, с использованием механизмов компенсации движения, подразумевающих нахождение и указание на область в одном из предварительно кодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку. Дополнительно, значения пикселей, или элементов изображения, могут предсказываться с использованием пространственных механизмов, подразумевающих нахождение и указание на взаимоотношение пространственных областей.
Методы предсказания, в которых используется информация ранее кодированных изображений, при этом могут называться методами внешнего предсказания, а также временным предсказанием и компенсацией движения. Методы предсказания, в которых используется информация этого же изображения, могут называться методами внутреннего предсказаниями.
Второй этап - это этап кодирования ошибки между предсказанным блоком пикселей, или элементов изображения, и исходным блоком пикселей, или элементов изображения. Это может осуществляться при помощи преобразования разности значений пикселей, или элементов изображения, с использованием заданного преобразования. Таким преобразованием может быть дискретное косинусное преобразование (Discrete Cosine Transform, DCT) или его вариант. После преобразования разности ее квантуют и выполняют энтропийное кодирование.
С помощью регулирования точности процесса квантования кодер может управлять балансом между достоверностью представления пикселей, или элементов изображения, (т.е. визуальным качеством изображения) и размером результирующего кодированного представления видео (т.е. размером файла или битовой скоростью передачи, битрейтом). Декодер восстанавливает выходное видео, применяя механизм предсказания, аналогичный используемому в кодере, для формирования предсказанного представления блоков пикселей или элементов изображения (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении изображения), и декодирует ошибку предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания в пространственной области).
После применения процедур предсказания пикселей, или элементов изображения, и декодирования ошибки декодер комбинирует сигналы предсказания и ошибки предсказания (значения пикселей или элементов изображения), формируя выходной видеокадр.
В декодере (и кодере) могут также применяться дополнительные процедуры фильтрации, имеющие целью повышение качества выходного видеоизображения перед передачей его для отображения и/или на хранение в качестве опорного для предсказания последующих изображений видеопоследовательности.
Во многих видеокодеках, включающих в себя функциональность H.264/AVC и HEVC, на информацию о движении указывают при помощи векторов движения, связанных с каждым из блоков изображения, для которых используется компенсация движения. Каждый из таких векторов движения представляет смещение блока изображения в кодируемом изображении (в кодере) или в декодируемом изображении (в декодере) и исходный блок предсказания в одном из ранее кодированных иди декодированных изображениях (или кадрах). В стандартах H.264/AVC и HEVC, как и во многих других стандартах сжатия видео, изображение разбивается на сетку из прямоугольников, для каждого из которых, в целях внешнего предсказания, указывается аналогичный блок в одном из опорных изображений. Местоположение блока предсказания кодируется как вектор движения, указывающий на положение блока предсказания относительно кодируемого бока.
Процедура внешнего предсказания может быть охарактеризована с использованием одного или более следующих факторов.
Точность представления вектора движения. Например, векторы движения могут иметь четвертьпиксельную точность, при этом значения элементов изображения с дробнопиксельными координатами могут быть получены с помощью фильтра с конечной импульсной характеристикой (finite impulse response, FIR).
Разбиение на блоки для внешнего предсказания. Многие стандарты кодирования, включая H.264/AVC и HEVC, допускают выбор размера и формы блока, для которого применяется вектор движения с целью предсказания с компенсацией движения в кодере, при этом выбранный размер и форма указываются в битовом потоке, чтобы декодеры могли воспроизвести предсказание с компенсацией движения, выполняемое в кодере.
Количество опорных изображений для внешнего предсказания. Источником информации для внешнего предсказания являются ранее декодированные изображения. Во многих стандартах кодирования, включая H.264/AVC и HEVC, обеспечивается возможность хранения множества опорных изображений для внешнего предсказания и выбора используемого опорного изображения для каждого отдельного блока. Например, опорные изображения могут выбираться на уровне макроблока или разбиения макроблока в стандарте H.264/AVC и на уровне блока предсказания или блока кодирования в стандарте HEVC. Многие стандарты кодирования, в том числе H.264/AVC и HEVC, имеют синтаксические структуры битового потока, обеспечивающие возможность создания в декодере одно или более списков опорных изображений. Для указания на то, какое из нескольких опорных изображений используется для внешнего предсказания конкретного блока, используется указатель на опорное изображение в списке опорных изображений. Указатель на опорное изображение в некоторых режимах кодирования с внешним предсказанием может кодироваться кодером в битовый поток, или, в других режимах кодирования с внешним предсказанием, может вычисляться (например, кодером и декодером), например, с использованием соседних блоков.
Предсказание векторов движения. С целью эффективного представления векторов движения в битовом потоке они могут кодироваться дифференциально, относительно вектора движения, предсказанного для некоторого блока. Во многих видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков. Другим способом создания предсказаний векторов движения является формирование списка кандидатных предсказаний на основе соседних блоков и/или сорасположенных блоков во временных опорных изображениях и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение ранее кодированного или декодированного изображения. Указатель на опорное изображение, как правило, предсказывается на основе соседних блоков и/или сорасположенных блоков во временном опорном изображении. Дифференциальное кодирование векторов движения с переходом границы слайса, как правило, не разрешено.
Многогипотезное предсказание с компенсацией движения. Стандарты H.264/AVC и HEVC позволяют использовать один блок предсказания в Р-слайсах (предсказываемых слайсах, в настоящем документе также называемых слайсами с LMI-предсказанием) или линейную комбинацию двух блоков предсказания с компенсацией движения для двунаправленно предсказываемых слайсов, которые в настоящем документе также называются В-слайсами). Отдельные блоки в В-слайсах могут предсказываться двунаправлено, однонаправлено или с помощью внутреннего предсказания, а отдельные блоки в Р-слайсах могут предсказываться однонаправлено или с помощью внутреннего предсказания. Опорные изображения для двунаправлено предсказываемого изображения могут не ограничиваться последующим и предыдущим изображениям выходной последовательности, напротив, могут использоваться любые опорные изображения. Во многих стандартах кодирования, в том числе в H.264/AVC и HEVC, один список опорных изображений, который называется списком 0 опорных изображений, создается для Р-слайсов, и два списка опорных изображений, список 0 и список 1, создаются для В-слайсов. Для В-слайсов предсказание в прямом направлении может представлять собой предсказание на основе опорных изображений из списка 0 опорных изображений, а предсказание в обратном направлении может представлять собой предсказание на основе опорных изображений из списка 1 опорных изображений.
Взвешенное предсказание. Во многих стандартах кодирования применяется весовой коэффициент, равный 1, для блоков предсказания изображения с внешним предсказанием (Р) и весовой коэффициент, равный 0,5, для каждого блока предсказания В-изображения (в результате чего выполняется усреднение). В стандарте H.264/AVC обеспечивается возможность взвешенного предсказания и для Р-, и для В-слайсов. При неявном взвешенном предсказании весовые коэффициенты пропорциональны порядковым номерам изображений, тогда как при явном взвешенном предсказании весовые коэффициенты предсказания указываются явно.
Во многих видеокодеках остаток предсказания после компенсации движения сначала преобразуют с помощью ядра преобразования (например, DCT), и только затем кодируют. Причиной тому является частое наличие остаточной корреляции в остатке предсказания, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование.
В проекте стандарта HEVC каждый блок предсказания имеет информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного блока предсказания (например, информацию вектора движения в случае блока предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого блока предсказания). Аналогично, каждый блок преобразования связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном блоке преобразования (включая, например, информацию о коэффициентах DCT). Информация о необходимости применения кодирования ошибки предсказания для каждого блока кодирования может сигнализироваться на уровне блока кодирования. Если остатка ошибки предсказания, связанного с блоком кодирования нет, то можно считать, что для данного блока кодирования отсутствуют блоки преобразования.
В некоторых форматах кодирования и кодеках вводится различие между так называемыми краткосрочными и долгосрочными опорными изображениями. Такое различение может влиять на часть процедур декодирования, например, масштабирование векторов движения во временном режиме предсказания движения или при неявном взвешенном предсказании. Если оба изображения, используемых во временном режиме предсказания движения, являются краткосрочными опорными изображениями, то вектор движения, используемый при предсказании, может масштабироваться в соответствии с разностью порядковых номеров кадра (picture order count, РОС) между текущим кадром и каждым из опорных кадров. Однако, если по меньшей мере одно опорное изображение для режима временного предсказания движения является долгосрочным опорным изображением, то может использоваться заданное по умолчанию масштабирование вектора движения, например, масштабирование вектора движения до половины. Аналогично, если краткосрочное опорное изображение используется для неявного взвешенного предсказания, то весовой коэффициент предсказания может масштабироваться в соответствии с разностью РОС между текущим изображением и опорным изображением. Однако если для неявного взвешенного предсказания используется долговременное опорное изображение, может использоваться заданный по умолчанию весовой коэффициент, например, равный 0,5 при неявном взвешенном предсказании двунаправлено предсказываемых блоков.
В некоторых форматах видеокодирования, например, H.264/AVC, имеется синтаксический элемент frame_num, который используется в различных процедурах декодирования, связанных с множественными опорными изображениями. В стандарте H.264/AVC значение frame_num для IDR-изображения равно 0. Значение frame_num для изображений, не являющихся IDR-изображениями, равно frame_num предыдущего опорного изображения в порядке декодирования, увеличенном на 1 (в модульной арифметике, т.е. значение frame_num циклически возвращается к 0 после максимального значения frame_num).
В стандартах H.264/AVC и HEVC существует понятие порядкового номера изображения (РОС). Значение РОС вычисляется для каждого изображения и является неубывающим с увеличением позиции изображения в порядке вывода. Соответственно, РОС указывает на порядок вывода изображений. РОС может использоваться в процессе декодирования, например, для неявного масштабирования векторов движения в режиме временного предсказания движения двунаправлено предсказываемых слайсов, для неявно вычисляемых весовых коэффициентов при взвешенном предсказании и для инициализации списка опорных изображений. Также РОС может использоваться при проверке выходной последовательности на соответствие стандарту. В стандарте H.264/AVC РОС определяется в отношении предшествующего IDR-изображения или изображения, содержащего операцию управления памятью, с помощью который все изображения помечаются как «не используемые в качестве опорных».
В стандарте H.264/AVC определена процедура маркировки декодированного опорного изображения с целью управления потреблением памяти в декодере. Максимальное количество опорных изображений для внешнего предсказания обозначается как M и определяется в наборе параметров последовательности. При декодировании опорного изображения оно маркируется как «используемое в качестве опорного». Если в результате декодирования опорного изображения более M изображений были помечены как «используемые в качестве опорного», то по меньшей мере одно из этих изображений помечают как «не используемое в качестве опорного». Имеются два типа операций маркировки декодированного опорного изображения, адаптивное управление памятью и скользящее окно. Режим маркировки декодированного опорного изображения может выбираться для каждого изображения в отдельности. Адаптивное управление памятью обеспечивает явную сигнализацию, при которой изображения помечаются как «не используемые в качестве опорного», также возможно назначение долгосрочных указателей на краткосрочные опорные изображения. Адаптивное управление памятью может требовать наличия в битовом потоке параметров операций управления памятью (memory management control operation, MMCO). Параметры ММСО могут быть включены в синтаксическую структуру, маркирующую декодированное опорное изображение. Если применяется режим работы со скользящим окном, и M изображений помечены как «используемые в качестве опорных», то краткосрочное опорное изображение, являвшееся первым декодированным изображением среди краткосрочных опорных изображений, помеченных как «используемые в качестве опорных», помечается как «не используемое в качестве опорного». Другими словами, режим работы со скользящим окном обеспечивает работу с краткосрочными опорными изображениями по типу буфера «первый вошел, первый вышел».
Одна из операций управления памятью в стандарте H.264/AVC обеспечивает маркировку всех опорных изображений, кроме текущего изображения, как «не используемых в качестве опорных». Изображение мгновенного обновления декодирования (IDR) содержит только слайсы с внутренним предсказанием и вызывает аналогичный «сброс» опорных изображений.
В проекте стандарта HEVC синтаксические структуры для маркировки опорных изображений и соответствующие процедуры декодирования не применяются, вместо этого, с аналогичными целями, используется синтаксическая структура и процедура декодирования набора опорных изображений (reference picture set, RPS). Набор опорных изображений, являющийся действительным или активным для изображения, включает все опорные изображения для данного изображения и все опорные изображения, которые остаются помеченными как «используемые в качестве опорных» для последующих изображений в порядке декодирования. В наборе опорных изображений существует шесть поднаборов, которые обозначаются RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Нотация обозначений этих шести поднаборов имеет следующее значение. "Curr" обозначает опорное изображение, которое включено в список опорных изображения для текущего изображения, и следовательно, может быть использовано как опорное изображение при внешнем предсказании текущего изображения. "Foll" обозначает опорное изображение, которое не включено в список опорных изображения для текущего изображения, но может быть использовано как опорное изображение для последующих изображений в порядке декодирования. "St" обозначает краткосрочные опорные изображения, которые в общем случае могут идентифицироваться при помощи определенного количества младших битов в их значении РОС."Lt" обозначает долгосрочные опорные изображения, которые идентифицируются специальным образом и, как правило, имеют большее отличие в значениях РОС от текущего изображения, чем это может быть отражено с помощью упомянутого определенного количества младших битов. "0" обозначает те опорные изображения, которые имеют меньшее значение РОС, тем текущее изображение. "1" обозначает те опорные изображения, которые имеют большее значение РОС, чем текущее изображение. RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1 совместно называются краткосрочным поднабором набора опорных изображений. RefPicSetLtCurr и RefPicSetLtFoll совместно называются долгосрочным поднабором набора опорных изображений.
В проекте стандарта HEVC набор опорных изображений может быть задан в наборе параметров последовательности и использоваться в заголовке слайса при помощи указателя на конкретный набор опорных изображений. Набор опорных изображений может также задаваться в заголовке слайса. Долгосрочный поднабор набора опорных изображений, как правило, задается только в заголовке слайса, тогда как краткосрочные поднаборы того же самого набора опорных изображений могут задаваться в наборе параметров изображения или в заголовке слайса. Набор опорных изображений может кодироваться независимо или может быть предсказываемым на основе другого набора опорных изображений (это называется внешним предсказанием RPS). При независимом кодировании набора опорных изображений синтаксическая структура включает до трех циклов итерации по различным типам опорных изображений; краткосрочные опорные изображения со значениями РОС, меньшими текущего изображения, краткосрочные опорные изображения со значениями РОС, большими текущего изображения, и долгосрочные опорные изображения. Каждая такая запись в цикле определяет, что изображение должно быть помечено как «используемое в качестве опорного». В большинстве случаев изображение задается с использованием дифференциального значения РОС. При внешнем предсказании RPS используется тот факт, что набор опорных изображений для текущего изображения может быть предсказан на основе набора опорных изображений ранее декодированного изображения. Это возможно, потому что все опорные изображения для текущего изображения являются либо опорными изображениями для предыдущего изображения, либо непосредственно декодированным изображением. Необходимо только указать, какие из этих изображений должны быть опорными и использоваться для предсказания текущего изображения. В обоих типах кодирования опорных изображений для каждого опорного изображения дополнительно устанавливают флаг (used_by_curr_pic_X_flag), который указывает, используется ли данное изображение в качестве опорного для текущего изображения (т.е. входит в список *Curr) или нет (т.е. входит в список *Foll). Изображения из набора опорных изображений, используемых для текущего слайса, помечают как «используемые в качестве опорных», а изображения, не входящие в набор опорных изображений, используемых для текущего слайса, помечают как «не используемые в качестве опорных». Если текущее изображение является IDR-изображением, то RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll очищаются (становятся пустыми).
В кодере и/или декодере может применяться буфер декодированных изображений (Decoded Picture Buffer, DPB). Имеются две причины для буферизации декодированных изображений - для использования в качестве опорных при внешнем предсказании и для изменения порядка декодированных изображений в выходной последовательности. Стандарты H.264/AVC и HEVC дают значительную гибкость как для маркировки опорных изображений, так и для переупорядочивания выходной последовательности, однако отдельные буферы для опорных изображений и изображений выходной последовательности могут приводить к нерациональному расходованию ресурсов памяти. Следовательно, DPB может включать унифицированную процедуру буферизации опорных изображений и переупорядочивания выходной последовательности. Декодированное изображение может удаляться из буфера DPB, когда оно больше не используется в качестве опорного и не требуется для вывода.
Во многих режимах кодирования стандартов H.264/AVC и HEVC на опорное изображение внешнего предсказания указывают с помощью указателя (индекса) на список опорных изображений. Указатель может кодироваться с использованием кодирования переменной длины, что обычно дает более короткие значения указателей с меньшим числовым значением для соответствующих синтаксических элементов. В стандартах H.264/AVC и HEVC формируются два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) для каждого двунаправлено предсказываемого слайса (В-слайса), и один список опорных изображений (список 0 опорных изображений) для каждого слайса, кодируемого с внешним предсказанием (Р-слайса). В дополнение для В-слайсов в стандарте HEVC строится комбинированный список (список С) после завершения построения финальных списков опорных изображений (списка 0 и списка 1). Комбинированные списки могут использоваться для однонаправленного предсказания в В-слайсах.
Список опорных изображений, например список 0 или список 1, как правило, формируется в два шага: сначала формируют первичный описок опорных изображений. Первичный список опорных изображений может формироваться, например, на основе параметров frame_num, РОС, temporal_id или информации из иерархической структуры, используемой для предсказания, например, из структуры GOP, или на основе какой-либо комбинации перечисленного. На втором шаге первичный список опорных изображений может быть переупорядочен с помощью команд переупорядочения списка опорных изображений (reference picture list reordering, RPLR), также называемых синтаксической структурой модификации списка опорных изображений, которая может содержаться в заголовках слайсов. Команды RPLR указывают на изображения, которые упорядочены в начало соответствующего списка опорных изображений. Этот второй шаг может также быть назван процедурой модификации списка опорных изображений, а команды RPLR могут включаться в синтаксическую структуру модификации списка опорных изображений. Если используются наборы опорных изображений, то список 0 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr0, за которым следует RefPicSetStCurr1 и затем RefPicSetLtCurr. Список 1 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr1 и затем RefPicSetStCurr0. Первичные списки опорных изображений могут модифицироваться при помощи синтаксической структуры модификации списка опорных изображений, в которой изображения в первичных списках опорных изображений могут идентифицироваться при помощи записи-указателя на список.
Комбинированные списки в стандарте HEVC могут строиться следующим образом. Если флаг модификации для комбинированного списка имеет нулевое значение, то комбинированный список строится с помощью неявного механизма; в противном случае он строится с помощью команд комбинирования опорных изображений, включенных в битовый поток. В случае неявного механизма опорные изображения в списке С назначаются в соответствие опорным изображениям из списка 0 и списка 1 с чередованием, начиная с первой записи списка 0, за которой следует первая запись списка 1 и т.д. Если какое-либо изображение было уже назначено в список С, оно не назначается повторно. В случае явного механизма количество записей в списке С сигнализируется явно, за ним следует информация о соответствии записи из списка 0 или списка 1 каждой записи из списка С. В дополнение, если список 0 и список 1 являются идентичными, в кодере есть возможность установить флаг ref_pic_list_combination_flag в значение 0, что указывает на отсутствие назначенных в соответствие опорных изображений из списка 1, и следовательно, что список С эквивалентен списку 0. В типовых кодеках эффективного видеокодирования, например, в кодеках, соответствующих проекту стандарта HEVC, применяется дополнительный механизм кодирования и декодирования информации, часто называемый режимом (или процессом, или механизмом) слияния, в котором информация о движении предсказываемых блоков/PU предсказывается и используется без какой-либо модификации или коррекции. Упомянутая выше информация о движении для блока кодирования включает: 1) информацию, является ли «данный блок предсказания однонаправлено предсказываемым с использованием только списка 0 опорных изображений», или «данный блок предсказания является однонаправлено предсказываемым с использованием только списка 1 опорных изображений», или «данный блок предсказания является двунаправлено предсказываемым с использованием обоих списков опорных изображений, списка 0 и списка 1»; 2) значение вектора движения, соответствующее списку 0 опорных изображений; 3) указатель на опорное изображение в списке 0 опорных изображений; 4) значение вектора движения, соответствующее списку 1 опорных изображений; 5) указатель на опорное значение в списке 1 опорных изображений. Аналогично, предсказание информации о движении выполняют с использованием информации о движении соседних блоков и/или сорасположенных блоков в опорных изображениях временного предсказания. Как правило, список, часто называемый списком слияния, строится при помощи включения кандидатных предсказаний движения, связанных с доступными смежными/сорасположенными блоками, при этом сигнализируется указатель на выбранное кандидатное предсказание движения в списке. Затем информацию о движении выбранного кандидата копируют в информацию о движении текущего блока предсказания. Если применяется механизм слияния для всего блока кодирования, и при этом сигнал предсказания для блока кодирования используется в качестве сигнала восстановления, т.е. остаток предсказания не обрабатывается, то такой тип кодирования и декодирования блока кодирования называется, как правило, режимом пропуска или режимом пропуска на основе слияния. В дополнение к режиму пропуска для отдельных блоков предсказания применятся также механизм слияния (не обязательно для всего блока кодирования, как в режиме пропуска) и в этом случае остаток предсказания может использоваться для повышения качества предсказания. Такой тип режима предсказания, называют, как правило, режимом внешнего слияния (inter merge).
В системе видеокодирования может присутствовать синтаксическая структура для маркировки декодированных опорных изображений. Например, после завершения декодирования изображения, синтаксическая структура для маркировки опорных изображений, если она имеется, может использоваться для адаптивной маркировки изображений как «не используемых в качестве опорных» или «используемых в качестве долгосрочных опорных». Если синтаксической структуры для маркировки опорных изображений не имеется, и количество изображений, помеченных как «используемые в качестве опорных» больше увеличиваться не может, то может применяться маркировка изображений методом скользящего окна, при которой самое раннее (в порядке декодирования) опорное изображение помечается как «не используемое в качестве опорного».
При масштабируемом видеокодировании видеосигнал может кодироваться в базовый уровень и в один или более уточняющих уровней. Уточняющий уровень может повышать временное разрешение (т.е. частоту кадров), пространственное разрешение или просто качество видеоконтента, представленного на другом уровне, или его части. Каждый уровень вместе со всеми зависимыми от него уровнями является одним из представлений видеосигнала с определенным пространственным разрешением, временным разрешением и уровнем качества. В данном документе масштабируемый уровень вместе со всеми зависимыми уровнями называется «представлением масштабируемого уровня» Часть масштабируемого битового потока, соответствующая представлению масштабируемого уровня, может быть извлечена и декодирована, в результате чего получают представление исходного сигнала с определенной точностью.
В некоторых случаях данные в уточняющем уровне могут отсекаться после определенного местоположения, или даже после произвольной позиции, при этом каждая позиция отсечения может включать дополнительные данные, представляющие все более высокое визуальное качество. Такая масштабируемость называется мелкозернистой (или мелкогранулярной) масштабируемостью (fine grained (granularity) scalability, FGS). Масштабирование FGS входило в некоторые из проектов стандарта SVC, но в конечном итоге не было включено в принятый стандарт. Затем масштабируемость FGS обсуждалась далее в контексте некоторых версий проекта стандарта SVC. Масштабируемость, обеспечиваемая уточняющими уровнями, которые не могут быть отсечены, называется грубозернистой (или грубогранулярной) масштабируемостью (coarse-grained (granularity) scalability, CGS). Она совместно включает традиционное масштабирование качества (SNR) и пространственное масштабирование. Стандарт SVC поддерживает также так называемое среднезернистое масштабирование (medium-grained scalability, MGS), при котором изображения, повышающие качество, кодируются аналогично масштабируемым изображениям уровней SNR, но указания на них осуществляются с помощью высокоуровневых синтаксических элементов, аналогичных изображениям уровней FGS, при помощи назначения синтаксическому элементу quality_id значения, большего 0.
В SVC используется механизм межуровневого предсказания, в котором часть информации может предсказываться на основе других уровней, не являющихся текущим восстанавливаемым уровнем или следующим более низким уровнем. Информация, предсказываемая с помощью механизма межуровневого предсказания, включает внутреннюю текстуру, движение и данные остатка. Межуровневое предсказание движения включает предсказание режима кодирования блока, информацию заголовка и т.п., при этом движение нижних уровней может использоваться для предсказания движения верхних уровней. В случае внутреннего кодирования возможно предсказание на основе соседних или сорасположенных макроблоков нижних уровней. В таких методах предсказания не применяется информация из ранее кодированных блоков доступа и следовательно, они называются методами внутреннего предсказания. Кроме того, данные остатка нижних уровней также могут применяться для предсказания текущего уровня.
В стандарте SVC введено понятие, известное под названием однопроходное декодирование. Возможность его обеспечивается с помощью режима предсказания внутренней текстуры, за счет чего межуровневое предсказание внутренней текстуры может применяться к макроблокам, для которых соответствующий блок базового уровня расположен внутри внутренне предсказываемых макроблоков. В то же время для этих внутренне предсказываемых макроблоков в базовом уровне используется ограниченное внутреннее предсказание (например, они имеют синтаксический элемент '"constrained_intra_pred_flag" равный 1). При однопроходном декодировании декодер выполняет компенсацию движения и восстановление изображения полностью только для масштабируемого уровня, необходимого для воспроизведения (который называют «требуемым уровнем» или «целевым уровнем»), за счет чего значительно снижается сложность декодирования. Все уровни, помимо требуемого уровня, не требуют полного декодирования, поскольку часть данных, или все данные, их макроблоков не используются для межуровневого предсказания (будь это межуровневое предсказание внутренней текстуры, межуровневое предсказание движения или межуровневое предсказание остатка) и не являются необходимыми для восстановления требуемого уровня.
Один проход декодирования необходим для декодирования большинства изображений, тогда как второй проход декодирования выборочно применяется для восстановления базовых представлений, необходимых как опорные для предсказания, но не для вывода или отображения, при этом они восстанавливаются только для так называемых ключевых изображений (для которых флаг "store_ref_base_pic_flag" установлен в значение 1).
Структура масштабирования в проекте стандарта SVC характеризуется тремя синтаксическими элементами: "temporal_id", '"dependency_id" и "quality_id." Синтаксический элемент "temporal_id" используется для указания иерархии временной масштабируемости, или, неявно, частоты кадров. Представление масштабируемого уровня, включающее изображения с меньшим максимальным значением '"temporal_id", будет иметь меньшую частоту смену кадров, чем представление масштабируемого уровня, включающее изображение с большим максимальным значением "temporal_id". Каждый временной уровень зависит, как правило, от нижних временных уровней (т.е. временных уровней с меньшими значениями "temporal_id"), но не зависит от вышележащих временных уровней. Синтаксический элемент "dependency_id" используется для указания иерархии зависимости межуровневого кодирования CGS (которая, как отмечалось ранее, включает и SNR, и пространственную масштабируемость). В любом местоположении временного уровня изображение с меньшим значением '"dependency_id" может использоваться для межуровневого предсказания при кодировании изображения с большим значением '"dependency_id". Синтаксический элемент "quality_id" используется для указания иерархии уровня качества уровня FGS или MGS. В любом временном местоположении с идентичным значением '"dependency_id" для межуровневого предсказания изображения с '"quality_id", равным QL, может быть использовано изображение с "quality_id", равным QL-1. Кодированный слайс с "quality_id", большим 0, может кодироваться либо как отсекаемый FGS-слайс, либо как неотсекаемый MGS-слайс.
Для простоты все блоки данных (например, в контексте SVC - блоки сетевой абстракции, NAL-блоки) в одном блоке доступа, имеющие одинаковое значение "dependency_id", называются блоком зависимости или представлением зависимости. В одном блоке зависимости все блоки данных с одинаковыми значениями "quality_id" называются блоком качества или представлением уровня.
Базовое представление, также называемое декодированным базовым изображением, представляет собой декодированное изображение, полученное в результате декодирования NAL-блоков уровня видеокодирования (Video Coding Layer, VCL) блока зависимости, чей '"quality_id" равен 0 и для которого флаг "store_ref_basepic_flag" установлен равным 1. Представление уточнения, также называемое декодированным изображением, получается в результате регулярного процесса декодирования, при котором декодируются все представления уровней, присутствующие для самого верхнего представления зависимости.
Как отмечалось выше, масштабируемость CGS включает и пространственную масштабируемость и SNR-масштабируемость. Пространственная масштабируемость исходно предназначена для поддержки представлений видео с различным разрешением. В каждый момент времени NAL-блоки VCL кодируются в одном блоке доступа, при этом такие NAL-блоки VCL могут соответствовать различным разрешениям. В процессе декодирования NAL-блоки VCL низкого разрешения дают поле движения и остаток, который опционально может наследоваться в финальном декодировании и восстановлении изображения высокого разрешения. По сравнению с более ранними стандартами видеосжатия пространственная масштабируемость в стандарте SVC была обобщена и позволяет базовому уровню быть кадрированной, или зуммированной, версией уточняющего уровня.
Уровни качества MGS указываются с помощью "quality_id", аналогично уровням качества FGS. Для каждого блока зависимости (с одинаковыми "dependency_id") имеется уровень с "quality_id", равным 0, и также могут присутствовать другие уровни, с "quality_id", большим 0. Эти уровни, имеющие "quality_id", больший 0, являются либо уровнями MGS, либо уровнями FGS, в зависимости от того, кодируются ли слайсы как отсекаемые.
В базовой форме уточняющих уровней FGS используется только межуровневое предсказание. Следовательно, уточняющие уровни FGS могут свободно отсекаться, без риска распространения ошибок в декодированной последовательности. Однако такая базовая форма FGS страдает низкой эффективностью сжатия. Это проблема возникает по причине использования изображений с низким качеством как опорных при внешнем предсказании. Соответственно, было предложено, чтобы в качестве опорных изображений внешнего предсказания использовались уточняемые с помощью FGS изображения. Однако, при отбросе части данных FGS, это может приводить к несовпадению кодирования-декодирования, которое называется дрейфом.
Одна из особенностей проекта стандарта SVC заключается в том, что NAL-блоки FGS могут свободно отсекаться или отбрасываться, а особенность стандарта SVCV заключается в том, что NAL-блоки MGS могут свободно отбрасываться (но не могут отсекаться), без нарушения соответствия битового потока стандарту. Как обсуждалось выше, если эти данные FGS или MGS использовались как опорные для внешнего предсказания при кодировании, то отбрасывание или отсечение этих данных приведет к несовпадению декодированных изображений на стороне кодера и декодера. Такое несовпадение также называется дрейфом.
Для контроля дрейфа, возникающего вследствие отбрасывания или отсечения данных FGS или MGS, в стандарте SVC применяется следующее решение: в каждом блоке зависимости базовое представление (при помощи декодирования только изображения CGS с "quality_id", равным 0, и всех данных, зависящих от нижних слоев) восстанавливается в буфере декодированных изображений. При декодировании последующего блока зависимости с таким же значением "dependency_id для внешнего предсказания всех NAL-блоков, включающих NAL-блоки FGS или NAL, в качестве опорного используется базовое представление. Следовательно, любой дрейф, возникающий в результате отбрасывания или отсечения NAL-блоков FGS или MGS, прекращается на данном блоке доступа. В целях обеспечения высокой эффективности кодирования в других блоках зависимости с тем же значением "dependency_id" для всех NAL-блоков как опорные изображения внешнего предсказания используются декодированные изображения.
Каждый NAL-блок включает в своем заголовке синтаксический элемент "use_ref_basepic_flag". Когда значение этого элемента равно 1, при декодировании NAL-блока в процессе внешнего предсказания используются базовые представления опорных изображений. Синтаксический элемент "store_ref_basepic_flag" определяет, следует (если он равен 1) сохранять базовое представление текущего изображения для будущих изображений с целью использования его при внешнем предсказании или нет (если он равен 0).
NAL-блоки с "quality_id", большим 0, не содержат синтаксических элементов, связанных с построением списков опорных изображений и взвешенным предсказанием, т.е. отсутствуют синтаксические элементы "num_ref_active_lx_minus1" (х=0 или 1), синтаксическая таблица переупорядочивания списка опорных изображений и синтаксическая таблица взвешенного предсказания. Следовательно, при необходимости уровни MGS или FGS должны наследовать эти синтаксические элементы от NAL-блоков с "quality_id", равным 0, в том же блоке зависимости.
В стандарте SVC список опорных изображений состоит либо только из базовых представлений (когда флаг "use_ref_base_pic_flag" равен 1) или только из декодированных изображений, не помеченных как «базовое представление» (когда флаг "use_ref_base_pic_flag" равен 0), но никогда из обоих одновременно.
Как отмечалось выше, MVC является расширением стандарта H.264/AVC. Многие из определений, понятий, синтаксических структур, часть семантики и процедур декодирования H.264/AVC применимы также к MVC, полностью или с некоторыми обобщениями, или с ограничениями. Далее описаны часть определений, понятий, синтаксических структур, семантики и процедур декодирования MVC.
Блок доступа в MVC определен как набор NAL-блоков, следующих друг за другом в порядке декодирования и содержащих в точности одно первично кодированное изображение, состоящее из одного или более компонентов ракурса. В дополнение к первично кодированному изображению блок доступа может также включать одно или более избыточно кодированных изображений, одно внешне кодированное изображение или другие NAL-блоки, не содержащие слайсов или частей слайсов кодированного изображения. В результате декодирования блока доступа получается одно декодированное изображение, состоящее из одного или более декодированных компонентов ракурса, если не происходит ошибок декодирования, т.е. ошибок битового потока или других ошибок, которые могут повлиять на декодирование. Другими словами, блок доступа в MVC содержит компоненты ракурса для ракурсов в один момент времени вывода.
Под компонентом ракурса в MVC понимается кодированное представление ракурса в одном блоке доступа.
В MVC может использоваться межракурсное предсказание, под которым понимается предсказание компонента ракурса на основе декодированных значений различных компонентов ракурса того же блока доступа. В MVC межракурсное предсказание реализуется аналогично внешнему предсказанию. К примеру, опорные изображения межракурсного предсказания помещаются в тот же список (или списки) опорных изображений, что и опорные изображения для внешнего предсказания, а указатель на опорное изображение, как и на вектор движения, кодируются или вычисляются аналогично для опорных изображений межракурсного предсказания и внешнего предсказания.
Якорное (anchor) изображение - это кодированное изображение, все слайсы которого могут использовать в качестве опорных только слайсы в том же блоке кодирования, т.е. межракурсное предсказание может использоваться, но внешнее предсказание не используется, при этом для всех последующих изображений в порядке вывода не используется внешнее предсказание на основе изображений, предшествующих этому кодированному изображению в порядке декодирования. Межракурсное предсказание может использоваться для компонентов ракурса IDR, являющихся частью не-базового ракурса. Базовый ракурс в MVC - это ракурс, который имеет минимальное значение порядкового номера ракурса в кодированной видеопоследовательности. Базовый ракурс может быть декодирован независимо от остальных ракурсов, при этом для него не используется межракурсное предсказание. Базовый ракурс может декодироваться декодерами, соответствующими стандарту H.264/AVC, которые поддерживают только одноракурсные профили, например, базовый профиль (Baseline Profile) или верхний профиль (High Profile) стандарта H.264/AVC.
В стандарте MVC во многих из подпроцедур процедуры декодирования MVC используются соответствующие подпроцедуры стандарта H.264/AVC с заменой терминов «изображение», «кадр» и «поле» в спецификации этих процедур стандарта H.264/AVC на «компонент ракурса», «компонент ракурса кадра» и компонент ракурса поля», соответственно. Аналогично, термины «изображение», «кадр» и «поле» далее часто используются как обозначающие «компонент ракурса», «компонент ракурса кадра» и «компонент ракурса поля», соответственно.
В масштабируемом многоракурсном видеокодировании один и тот же битовый поток может содержать кодированные компоненты ракурса для нескольких ракурсов, при этом по меньшей мере некоторые из кодированных компонентов ракурса могут кодироваться с использованием пространственного масштабирования и/или масштабирования качества.
Ракурсом текстуры называется ракурс, который является представлением обычного видеоконтента, например, записанного с использованием обычной камеры, и как правило подходит для рендеринга на дисплее. Ракурс текстуры, как правило, включает изображения, имеющие три составляющие, одну составляющую яркости и две составляющие цветности. В дальнейшем, как правило, под изображением текстуры понимаются все его составляющие, или составляющие цветности, если не указано обратное, например, с использованием таких терминов как изображение яркости текстуры и изображение цветности текстуры.
Под видео с уточнением глубины (depth-enhanced) понимаются видеоданные текстуры, имеющие один или более ракурсов, связанных с видеоданными глубины, имеющими один или более ракурсов глубины. Для представления видео с уточнением глубины может использоваться несколько различных подходов, которые включают использование методов «видео плюс глубина» (video plus depth, V+D), «многоракурсное видео плюс глубина» (multiview video plus depth, MVD) и видео с многоуровневой глубиной (layered depth video, LDV). При представлении типа «видео плюс глубина» (V+D) один ракурс текстуры и соответствующий ракурс глубины представлены как последовательности изображения текстуры и изображений глубины, соответственно. Представление типа MVD содержит набор ракурсов текстуры и соответствующие ракурсы глубины. В представлении типа LDV текстура и глубина центрального ракурса представлены традиционным образом, тогда как текстура и глубина других ракурсов представлена частично и охватывается только незакрытыми областями, требуемыми для корректного построения промежуточных ракурсов.
Видео с уточнением глубины может кодироваться таким образом, что текстура и глубина кодируются независимо друг от друга. Например, ракурсы текстуры могут кодироваться как один битовый поток MVC, а ракурсы глубины могут кодироваться как другой поток MVC. Альтернативно, видео с уточнением глубины может кодироваться таким образом, что текстура и глубина кодируются совместно. При применении совместного кодирования текстурных ракурсов и ракурсов глубины для представления видео с уточнением глубины, часть декодируемых значений текстурного изображения или элементов данных для декодирования текстурного изображения, предсказывается или вычисляется на основе части декодированных значений изображения глубины или элементов данных, полученных в процессе декодирования изображения глубины. Альтернативно или дополнительно, часть декодируемых значений изображения глубины или элементов данных для декодирования изображения глубины, предсказывается или вычисляется на основе части декодированных значений текстурного изображения или элементов данных, полученных в процессе декодирования текстурного изображения.
Было найдено, что для некоторых применений трехмерного многоракурсного видео (multiview 3d video, 3DV) решением может быть наличие ограниченного количества входных ракурсов, например, моно- или стерео-ракурс плюс некоторые дополнительные данные, и рендеринг (т.е. построение) всех требуемых ракурсов локально на стороне декодера. Из нескольких существующих технологий рендеринга видео конкурентоспособной альтернативой показал себя рендеринг на основе глубины изображения (depth image-based rendering, DIBR).
Упрощенная модель 3DV-системы на основе DIBR показана на фиг. 5. Входом трехмерного видеокодека является стереоскопическое видео и соответствующая информация глубины с базовой линией b0 стереоскопии. Затем трехмерный видеокодек синтезирует набор виртуальных ракурсов между двумя входными ракурсами с базовой линией (bi<b0). Алгоритмы DIBR могут также обеспечивать возможности экстраполяции ракурсов за границы двух входных ракурсов, а не только между ними. Аналогично, алгоритмы DIBR могут обеспечивать возможность синтеза ракурсов на основе одного ракурса текстуры и соответствующего ракурса глубины. Однако для возможности многоракурсного рендеринга на базе DIBR на стороне декодера должны быть доступны данные текстуры вместе с соответствующими данными глубины.
В таких 3DV-системах информация глубины формируется на стороне кодера в форме изображений глубины (называемых также картами глубины) для каждого видеокадра. Карта глубины - это изображение с информацией глубины для каждого пикселя. Каждый элемент (отсчет) карты глубины отражает расстояние соответствующего элемента текстуры от плоскости расположения камеры. Другими словами, если ось z лежит на оси съемки камер (и следовательно, перпендикулярно плоскости расположения камер), то каждый элемент карты глубины отражает координату на оси z.
Информация глубины может быть получена с помощью различных средств. Например, глубина в трехмерной сцене может вычисляться на основе диспаратности, регистрируемой камерами, ведущими съемку. Алгоритм вычисления глубины принимает стереоскопический ракурс на входе и вычисляет локальные расхождения между двумя смещенными изображениями ракурса. Каждое изображение обрабатывается попиксельно в перекрывающихся блоках, при этом для каждого блока пикселей выполняют поиск в горизонтальном направлении соответствующего блока в смещенном изображении. После вычисления пиксельного расхождения соответствующее значение z глубины вычисляют с помощью уравнения (1):
,
где f - фокусное расстояние камеры, a b - расстояние между базовыми линиями камер, в соответствии с иллюстрацией фиг. 6. При этом за d обозначена диспаратность, наблюдаемая между двумя камерами, а смещение Ad камеры отражает возможное горизонтальное смещение оптических центров двух камер. Однако поскольку такой алгоритм основан на сопоставлении блоков, качество вычислений глубины на основе расхождения зависит от контента и во многих случаях не является высоким. Например, не существует простого решения для вычисления глубины во фрагментах изображений, где встречаются очень гладкие области без текстур, или с высоким уровнем шума.
Карты диспаратности или параллакса, например, карты параллакса, определенные в международном стандарте 23002-3 ISO/IEC, могут обрабатываться аналогично картам глубины. Глубина и диспаратность имеют прямую зависимость и могут вычисляться на основе друг друга с использованием математического уравнения.
Порядок кодирования и декодирования ракурсов текстуры и ракурсов глубины, составляющих блок доступа, как правило является таковым, чтобы данные кодированного компонента ракурса не чередовались с другим кодированным компонентом ракурса, а данные блока доступа не чередовались с данными другого блока доступа в порядке декодирования битового потока. Например, могут присутствовать два текстурных ракурса и два ракурса глубины ((T0t, T1t, T0t+1, T1t+1, T0t+2, T1t+2, D0t, D1t, D0t+1, D1t+1, D0t+2, D1t+2) в различных блоках доступа (t, t+1, t+2), в соответствии с иллюстрацией фиг. 7, где блок t доступа, состоящий из компонентов текстурного ракурса и ракурса глубины (T0t, T1t, D0t, D1t), предшествует в битовом потоке и в порядке декодирования блоку t+1 доступа, состоящему из компонентов ракурса текстуры и ракурса глубины (T0t+1, T1t+1, D0t+1, D1t+1).
Порядок кодирования и декодирования компонентов ракурса в блоке доступа может регулироваться форматом кодирования или определяться кодером. Компонент ракурса текстуры может кодироваться перед кодированием соответствующего ракурса глубины для того же ракурса, и, следовательно, в таком случае компоненты ракурса глубины могут предсказываться на основе компонентов ракурса текстуры этого же ракурса. Например, такие компоненты ракурса текстуры могут кодироваться MVC-кодером и декодироваться MVC-декодером. Компонентом уточняющего ракурса текстуры в настоящем документе называется компонент ракурса текстуры, который кодируется после кодирования соответствующего ракурса глубины для того же ракурса, и, следовательно, в таком случае может предсказываться на основе соответствующего компонента ракурса глубины. Компоненты ракурса текстуры и глубины в одном блоке доступа кодируются, как правило, в порядке зависимости ракурсов. Компоненты ракурса текстуры и глубины могут иметь любой порядок относительно друг друга, если их порядок не нарушает описанные выше ограничения.
Ракурсы текстуры и глубины могут кодироваться в один битовый поток, в котором часть ракурсов текстуры может быть совместима с одним или более видеостандартами, например H.264/AVC или MVC. Другими словами, декодер может быть способен декодировать часть ракурсов текстуры в таком битовом потоке и может отбрасывать остальные ракурсы текстуры и ракурсы глубины.
В этом контексте кодер, который кодирует один или более ракурсов текстуры и глубины в один битовый поток, совместимый с H.264/AVC и/или MVC, называют кодером 3DV-ATM. Битовые потоки, формируемые таким кодером, могут быть названы битовыми потоками 3DV-ATM. Битовые потоки 3DV-ATM могут включать часть ракурсов текстуры, которые декодеры H.264/AVC и/или MVC не способны декодировать, а также ракурсы глубины. Декодер, способный декодировать все ракурсы битовых потоков 3DV-ATM, может при этом называться декодером 3DV-ATM.
Битовые потоки 3DV-ATM могут включать выбранное количество AVC/MVC-совместимых ракурсов текстуры. Ракурсы глубины для AVC/MVC-совместимых ракурсов текстуры могут предсказываться на основе этих ракурсов текстуры. Для остальных ракурсов текстуры может использоваться улучшенное кодирование текстуры, а для ракурсов глубины может использоваться кодирование глубины.
На фиг. 8 представлена высокоуровневая блок-схема алгоритма варианта осуществления кодера 200, способного кодировать ракурсы текстуры и ракурсы глубины, а на фиг. 9 представлен декодер 210, способный декодировать ракурсы текстуры и ракурсы глубины. На данных чертежах сплошными линиями обозначен основной поток данных, а штриховыми линиями обозначенная сигнализация информации управления. Кодер 200 может принимать компоненты 201 текстуры, подлежащие кодированию кодером 202 текстуры, и компоненты 203 карты глубины, подлежащие кодированию кодером 204 глубины. Во время кодирования кодером 200 компонентов текстуры в соответствии AVC/MVC, первый выключатель 205 может быть разомкнут (отключен). Во время кодирования кодером 200 компонентов улучшенной текстуры первый выключатель 205 может быть замкнут (включен), чтобы информация, формируемая кодером 204 глубины, могла поступать в кодер 202 текстуры. Кодер в данном примере включает также второй выключатель 206, который может управляться описанным ниже способом. Второй выключатель 206 замыкается во время кодирования кодером информации глубины ракурсов AVC/MVC, при этом во время кодирования кодером информации глубины ракурсов улучшенной текстуры второй выключатель размыкается. Кодер 200 может выводить битовый поток 207, содержащий кодированную видеоинформацию.
Декодер 210 может функционировать аналогичным образом, но по меньшей мере частично в обратном порядке. Декодер 210 может принимать битовый поток 207, содержащий кодированную видеоинформацию. Декодер 210 включает декодер 211 текстуры для декодирования информации текстуры и декодер 212 глубины для декодирования информации глубины. Третий выключатель 213 может быть обеспечен для управления доставкой информации из декодера 212 глубины в декодер 211 текстуры, а четвертый выключатель 214 может быть обеспечен для управления доставкой информации из декодера 211 текстуры в декодер 212 глубины. Когда декодер 210 декодирует ракурсы текстуры AVC/MVC, третий выключатель 213 может быть разомкнут, а когда декодер 210 декодирует ракурсы улучшенной текстуры, третий выключатель 213 может быть замкнут.Когда декодер 210 декодирует информацию глубины для ракурсов текстуры AVC/MVC, четвертый выключатель 214 может быть замкнут, а когда декодер 210 декодирует информацию глубины для ракурсов улучшенной текстуры, четвертый выключатель 214 может быть разомнут. Декодер 210 может выводить восстановленные компоненты текстуры 215 и восстановленные компоненты 216 карты глубины.
Во многих видеокодерах для поиска режимов кодирования с оптимальным соотношением битовой скорости/потери качества, например, необходимого режима макроблоков и связанных с ними векторов движения, используется целевая функция (функция стоимости) Лагранжа. В целевой функции такого типа используется весовой коэффициент, или λ, связывающий точное или предполагаемое значение искажения изображения в результате кодирования с потерями, или предполагаемое количество информации, необходимое для представления значений пикселей или элементов изображения в некоторой области изображения. Целевая функция Лагранжа может быть представлена следующим уравнением:
C=D+λR,
где - С минимизируемое значение целевой функции, D - искажение изображения (например, среднеквадратичная ошибка между значениями пикселей, или элементов изображения, в исходном блоке изображения и в кодированном блоке изображения) для рассматриваемых в текущий момент режима и векторов движения, L - Коэффициент Лагранжа, a R - количество битов, необходимых для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
В стандарт кодирования могут входить процедуры извлечения битовых подпотоков, например, такие процедуры определены в стандартах SVC, MVC и HEVC. Под процедурой извлечения битового подпотока понимается преобразование битового потока в битовый подпоток путем удаления NAL-блоков. Такой битовый подпоток остается соответствующим стандарту. Например, в проекте стандарта HEVC битовый поток, формируемый исключением всех NAL-блоков VCL, чей temporal_id больше или равен выбранному значению, и включением всех остальных NAL-блоков VCL, остается соответствующим стандарту. Следовательно, для изображений с temporal_id, равным TID, в качестве опорных для предсказания не используются изображения с temporal_id, большим TID.
На фиг. 1 показана блок-схема системы видеокодирования в соответствии с одним из вариантов осуществления настоящего изобретения, в виде блок-схемы примера аппаратуры или электронного устройства 50, которое может включать кодек, соответствующий одному из вариантов осуществления настоящего изобретения. На фиг. 2 показана схема устройства в соответствии с одним из вариантов осуществления настоящего изобретения. Далее будут описаны элементы фиг. 1 и 2.
Электронное устройство 50 может, например, быть мобильным терминалом или абонентским оборудованием системы беспроводной связи. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы в любом электронном устройстве или аппаратуре, где требуется кодирование и декодирование, или кодирование или декодирование видеоизображений.
Устройство 50 может иметь в своем составе корпус 30 для размещения и защиты устройства. Устройство 50 может также включать дисплей 32 в виде дисплея на жидких кристаллах. В других вариантах осуществления настоящего изобретения упомянутый дисплей может быть выполнен по любой технологии, подходящей для отображения изображений или видеоинформации. Устройство 50 может также включать клавиатуру 34. В других вариантах осуществления настоящего изобретения может применяться любой подходящий интерфейс обмена данными или пользовательский интерфейс. К примеру, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного дисплея. Устройство может включать микрофон 36 или любое другое подходящее устройство ввода аудиоинформации, которое может быть устройством ввода цифрового или аналогового сигнала. Устройство 50 может также включать устройство вывода аудиоинформации, которое в вариантах осуществления настоящего изобретения может представлять собой любое из следующего: головной телефон 38, громкоговоритель или же аналоговое или цифровое соединение для вывода аудиоинформации. Устройство 50 может также включать аккумулятор 50 (или в других вариантах осуществления настоящего изобретения устройство может снабжаться электроэнергией от любого подходящего мобильного энергетического устройства, например, солнечной батареи, топливной батареи или заводного генератора). Устройство может также включать инфракрасный порт 42 для связи с другими устройствами в ближней зоне прямой видимости В других вариантах осуществления настоящего изобретения устройство может включать любые подходящие решения связи малой дальности, например, беспроводное соединение Bluetooth или проводное соединение USB/Firewire.
Устройство 50 может включать контроллер 56 или процессор для управления устройством 50. Контроллер 56 может быть соединен с памятью 58, которая в различных вариантах осуществления настоящего изобретения может хранить данные, одновременно в форме видеоинформации и аудиоинформации, и/или может также хранить инструкции для исполнения в контроллере 56. Контроллер 56 может быть также соединен со схемами 54 кодека, способными осуществлять кодирование и декодирование аудио- и/или видеоданных или являться вспомогательным средством при кодировании и декодировании, выполняемом контроллером 56.
Устройство 50 может также включать устройство 48 чтения карт и смарт-карту 46, например, карту UICC, и устройство чтения UICC-карт для предоставления информации об абоненте, и для обеспечения возможности предоставления аутентификационной информации с целью аутентификации и авторизации абонента в сети.
Устройство 50 может включать схемы 52 радиоинтерфейса, связанные с контроллером, которые могут использоваться для формирования сигналов беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или беспроводной локальной вычислительной сетью. Устройство 50 может также включать антенну 44, связанную со схемами 52 радиоинтерфейса, для передачи радиочастотных сигналов, формируемых в схемах 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств).
В некоторых вариантах осуществления настоящего изобретения устройство 50 включает камеру, способную записывать или регистрировать отдельные кадры, которые затем передают в кодек 54 или контроллер для обработки. В некоторых вариантах осуществления настоящего изобретения устройство может принимать от другого устройства данные видеоизображений для обработки перед их передачей и/или хранением. В некоторых вариантах осуществления настоящего изобретения устройство 50 может принимать изображение для кодирования/декодирования либо беспроводным способом, либо по проводному соединению.
На фиг. 3 показана система видеокодирования, включающая множество устройств, сетей и сетевых элементов в соответствии с одним из примеров осуществления настоящего изобретения. С помощью фиг. 3 проиллюстрирован один из примеров системы, в которой могут использоваться различные варианты осуществления настоящего изобретения. Система 10 включает несколько устройств связи, способных осуществлять связь при помощи одной или нескольких сетей. В состав системы 10 может входить любая комбинация проводных и беспроводных сетей, включая, без ограничения перечисленным, беспроводную сотовую телефонную сеть (например, сеть GSM, UMTS, CDMA и т.п.), беспроводную локальную вычислительную сеть (wireless local area network, WLAN), например, в соответствии с определением в любом из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную вычислительную сеть Ethernet, локальную вычислительную сеть типа «маркерное кольцо» глобальную сеть и Интернет.
Система 10 может включать как проводные, так и беспроводные устройства связи, а также устройство 50, подходящее для реализации вариантов осуществления настоящего изобретения. В качестве примера на фиг. 3 показана мобильная телефонная сеть 11 и Интернет 28. Соединение с Интернетом 28 может включать, без ограничения перечисленным, беспроводные соединения с большим радиусом действия, беспроводные соединения с малым радиусом действия, а также различные проводные соединения, включая, без ограничения перечисленным, телефонные линии, кабельные линии, линии электропередач и аналогичные каналы связи. Примерами устройств связи в системе 10 могут служить, без ограничения перечисленным, электронное устройство 50, комбинация карманного персонального компьютера (personal digital assistant, PDA) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (integrated messaging device, IMD), настольный компьютер 20, ноутбук 22. Устройства 50 связи могут быть как стационарными, так и мобильными, например, они могут переноситься лицами, находящимися в движении. Устройство 50 может также размещаться на транспортном средстве, включая, без ограничения перечисленным, автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.
Некоторые из этих или других устройств могут как посылать, так и принимать вызовы и сообщения, а также осуществлять связь с операторами связи при помощи беспроводного соединения 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между средствами 11 связи и Интернетом 28. Система может включать дополнительные устройства связи, а также устройства связи других типов.
Устройства связи могут осуществлять связь с использованием различных технологий передачи данных, включая, без ограничения перечисленным, множественный доступ с кодовым разделением (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, и любые аналогичные технологии беспроводной связи. Устройство связи, используемое при реализации различных вариантов осуществления настоящего изобретения, может осуществлять связь с использованием различных сред передачи данных, включая, без ограничения, радиосоединения, инфракрасные, лазерные, кабельные соединения или любые другие подходящие соединения.
На фиг. 4а и 4b показаны блок-схемы кодирования и декодирования видео в соответствии с одним из примеров осуществления настоящего изобретения.
На фиг. 4а показан кодер, который включает устройство 302 предсказания пикселей, кодер 303 ошибки предсказания и декодер 304 ошибки предсказания. Также на фиг. 4а показан один из вариантов осуществления устройства 302 предсказания пикселей, включающего устройство 306 внешнего предсказания, устройство 308 внутреннего предсказания, селектор 310 режима, фильтр 316 и память 318 опорных кадров. В данном варианте осуществления настоящего изобретения селектор 310 режима включает процессор 381 блоков пикселей и вычислитель 382 целевой функции ("стоимости"). Кодер может также иметь в своем составе энтропийный кодер 330 для энтропийного кодирования битового потока.
На фиг. 4b показан один из вариантов осуществления устройства 306 внешнего предсказания. Устройство 306 внешнего предсказания включает селектор 360 опорного кадра для выбора опорного кадра или кадров, устройство 361 определения векторов движения, модификатор 363 списка предсказаний и селектор 364 вектора движения. Все эти элементы (или их часть) могут быть реализованы, например, в процессоре 362 предсказаний или с помощью других средств.
Устройство 302 предсказания пикселей принимает кодируемое изображение 300 одновременно в устройство 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 компенсации движения) и в устройство 308 внутреннего предсказания (которое определяет предсказание для блока изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания могут быть переданы в селектор 310 режима. Устройство 306 внешнего предсказания и устройство 308 внутреннего предсказания могут иметь более одного режима внутреннего предсказания. Следовательно, с помощью каждого из этих режимов может осуществляться внешнее предсказание и внутреннее предсказание, и затем сигнал предсказания может предоставляться в селектор 310 режима. В селекторе 310 режима принимается также копия изображения 300.
Селектор 310 режима определяет, какой режим кодирования использовать для кодирования текущего блока. Если в селекторе 310 режима принимается решение об использовании режима внешнего предсказания, то он передает выходные данные устройства 306 внешнего предсказания на выход селектора 310 режима. Если в селекторе 310 режима принимается решение об использовании режима внутреннего предсказания, то он передает на выход селектора 310 режима выходные данные одного из режимов внутреннего предсказания.
В блоке 382 вычисления значения целевой функции селектора 310 режима, например, могут использоваться целевые функции Лагранжа для выбора требуемого режима кодирования и значений их параметров, таких как векторы движения, указатели на опорные изображения и направление внутреннего предсказания, как правило, для каждого отдельного блока. В целевой функции такого типа используется весовой коэффициент или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей или элементов изображения в некоторой области изображения: С=D+lambda×R, где С - оптимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество битов, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
Выходные данные селектора режима передают в первое суммирующее устройство 321. Первое суммирующее устройство может вычитать выходные данные устройства 302 предсказания пикселей из изображения 300 с формированием первого сигнала 320 ошибки предсказания, который подают на вход кодера 303 ошибки предсказания.
Также устройство 302 предсказания пикселей принимает от устройства 339 предварительного восстановления комбинацию предсказанного представления блока 312 изображения и выходные данные 338 кодера 304 ошибки предсказания. Предварительно восстановленное изображение 314 может быть передано в устройство 308 внутреннего предсказания и фильтр 316. Фильтр 316, принимающий предварительное представление блока, может выполнять фильтрацию этого предварительного представления и выдавать окончательное восстановленное изображение 340, которое может сохраняться в памяти 318 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 300 во время выполнения операций внешнего предсказания. Во многих вариантах осуществления настоящего изобретения память 318 может быть способна хранить более одного декодированного изображения, при этом одно или более из них могут быть использованы устройством 306 внешнего предсказания в качестве опорных изображений, с которыми сравниваются будущие изображения 300 во время выполнения операций внешнего предсказания. Память 318 опорных кадров в некоторых случаях может называться буфером декодированных изображений.
Устройство 302 предсказания пикселей может быть сконфигурировано таким образом, чтобы при функционировании реализовывать любой из известных на существующем уровне техники алгоритмов предсказания пикселей.
Устройство 302 предсказания пикселей может также включать фильтр 385 для фильтрации предсказанных значений перед выводом их из устройства 302 предсказания пикселей.
Далее более подробно будет описана работа кодера 303 ошибки предсказания и декодера 304 ошибки предсказания. В рассмотренных ниже примерах кодер формирует изображения в виде макроблоков 16×16 пикселей, из которых затем формируется полное изображение или кадр. Однако следует отметить, что фиг. 4а не ограничивает размер блока значением 16×16, в общем случае может использоваться любой размер и форма блока, и аналогично, фиг. 4а не ограничивает разбиение изображение на макроблоки, может использоваться любое другое разбиение изображение на блоки, например, на блоки кодирования. Итак, в приведенных ниже примерах устройство 302 предсказания пикселей выдает последовательность предсказанных макроблоков размером 16×16 пикселей, а первое суммирующее устройство 321 выдает последовательность макроблоков данных остатка (размером 16×16 пикселей), которые могут представлять расхождение между первым макроблоком в изображении 300 и предсказанным макроблоком (выходными данными устройства 302 предсказания пикселей).
Кодер 303 ошибки предсказания имеет в своем составе блок 342 преобразования и квантователь 344. Блок 342 преобразования преобразует первый сигнал 320 ошибки предсказания в область преобразования. Таким преобразованием является, к примеру, преобразование DCT или один из его вариантов. Квантователь 344 квантует сигнал, например, коэффициенты DCT, в области преобразования и формирует квантованные коэффициенты. Декодер 304 ошибки предсказания принимает выходные данные из кодера 303 ошибки предсказания и выполняет процедуры, обратные кодеру 303 ошибки предсказания, и формирует декодированный сигнал 338 ошибки предсказания, который, после комбинирования с предсказанным представлением блока 312 изображения во втором суммирующем устройстве 339, образует предварительное восстановленное изображение 314. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 346, который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 348 обратного преобразования, который выполняет обратное преобразование и формирует восстановленный сигнал (из ранее преобразованного сигнала), при этом выходные данные блока 348 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр макроблоков (не показан), который может фильтровать восстановленный макроблок в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
Ниже более подробно описана работа одного из примеров осуществления устройства 306 внешнего предсказания. Устройство 306 внешнего предсказания принимает текущий блок с целью выполнения внешнего предсказания. Допустим, текущий блок пикселей уже имеет один или более соседних блоков пикселей, которые были кодированы и для которых уже были определены векторы движения. К примеру, такими блоками пикселей могут быть блок пикселей слева от текущего блока пикселей и/или блок пикселей над текущим блоком. Пространственные предсказания векторов движения для текущего блока пикселей могут быть сформированы, например, с помощью векторов движения уже кодированных смежных блоков пикселей и/или несмежных блоков пикселей в том же слайсе или кадре, с использованием линейных или нелинейных функций пространственного предсказания векторов движения, с использованием комбинирования различных пространственных предсказателей векторов движения с помощью линейных или нелинейных операций, или с помощью любых других подходящих средств, не использующих опорную информацию временного предсказания. Также получение предсказаний векторов движения может осуществляться с помощью комбинирования информации и пространственного, и временного предсказания одного или более кодированных блоков пикселей. Такие предсказания векторов движения могут названы пространственно-временными предсказаниями векторов движения.
Опорные кадры, используемые при кодировании, могут храниться в памяти опорных кадров. Каждый опорный кадр может входить в один или более списков опорных изображений, при этом в списке опорных изображений каждая запись имеет указатель на опорное изображение, определяющий опорный кадр. Если опорный кадр более не используется в качестве опорного, он может быть удален из памяти опорных кадров или помечен как «не используемый в качестве опорного», или как неопорный кадр, при этом место хранения этого опорного кадра может быть занято новым опорным кадром.
В соответствии с предшествующим описанием, блок доступа может содержать слайсы с различными типами компонентов (например, первичный компонент текстуры, избыточный компонент текстуры, внешний компонент, компоненты глубины/диспаратности), с различными видами и различными уровнями масштабирования.
Было предложено, чтобы по меньшей мере подмножество синтаксических элементов, которые традиционно включались в заголовок слайса, вносились кодером в набор параметров GOS (Group of Slices, группа слайсов), значение которого устанавливается кодером. Кодер может кодировать набор параметров GOS в качестве NAL-блока. NAL-блоки набора параметров GOS могут быть включены в битовый поток, например, вместе с кодированными NAL-блоками, но могут и передаваться вне основной полосы, как это было описано выше в контексте других наборов параметров.
Синтаксическая структура набора параметров GOS может включать идентификатор, который может использоваться для ссылки на конкретный экземпляр набора параметров GOS, например, из заголовка слайса или из другого набора параметров GOS. Альтернативно, синтаксическая структура набора параметров GOS не включает идентификатора, но идентификатор может вычисляться и в кодере, и в декодере, например, с использованием порядка синтаксических структур набора параметров GOS в битовом потоке и заранее заданной схемы нумерации.
Кодер и декодер могут вычислять содержимое экземпляра набора параметров GOS на основе других синтаксических структур, уже кодированных или декодированных, или присутствующих в битовом потоке. Например, заголовок слайса компонента ракурса текстуры из базового ракурса может неявно формировать набор параметров GOS. Кодер и декодер могут вычислять значение идентификатора для вычисленных наборов параметров GOS. Например, набор параметров GOS, сформированный на основе заголовка слайса компонента ракурса текстуры базового ракурса, может иметь значение идентификатора, равное 0.
Набор параметров GOS может быть действительным в определенном блоке доступа, который связан с ним. Например, если синтаксическая структура набора параметров GOS входит в состав последовательности NAL-блоков некоторого блока доступа, где эта последовательность является порядком декодирования или порядком битового потока, то данный набор GOS может быть действительным от его появления до окончания данного блока доступа. Альтернативно, набор параметров GOS может быть действительным для множества блоков доступа.
Для одного блока доступа кодер может кодировать множество наборов параметров GOS. В кодере может приниматься решение о кодировании набора параметров GOS, если известно, ожидается или прогнозируется, что по меньшей мере подмножество значений синтаксических элементов заголовка кодируемого слайса будут такими же в заголовке следующего слайса.
Для идентификатора набора параметров GOS может использоваться ограниченное пространство нумерации. Например, может использоваться код фиксированной длины, который интерпретируется как целое значение без знака в определенном диапазоне. В кодере значение идентификатора набора параметров GOS может использоваться для первого набора параметров GOS и затем для второго набора параметров GOS, если на первый набор параметров GOS впоследствии не ссылается, например, ни один из заголовков слайсов или наборов параметров GOS. Кодер может повторять синтаксическую структуру набора параметров GOS в битовом потоке, например, для обеспечения большей устойчивости к ошибкам передачи.
Во многих вариантах осуществления настоящего изобретения синтаксические элементы, которые могут включаться в набор параметров GOS, концептуально собираются в наборы синтаксических элементов. Набор синтаксических элементов для набора параметров GOS может формироваться, например, на основе одного или более из следующего:
- синтаксические элементы, указывающие на масштабируемый уровень и/или другие признаки масштабирования;
- синтаксические элементы, указывающие на ракурс и/или другие признаки многоракурсного кодирования;
- синтаксические элементы, относящиеся к определенному типу компонентов, например, глубине/диспаратности;
- синтаксические элементы, относящиеся к идентификации блока доступа, порядку декодирования и/или порядку вывода, и/или другие синтаксические элементы, которые могут оставаться неизменными для всех слайсов блока доступа;
- синтаксические элементы, которые могут оставаться неизменными во всех слайсах компонента ракурса;
- синтаксические элементы, относящиеся к модификации списка опорных изображений;
- синтаксические элементы, относящиеся к используемому набору опорных изображений;
- синтаксические элементы, относящиеся к декодированию маркировки опорных изображений;
- синтаксические элементы, относящиеся к таблицам весовых коэффициентов предсказания, используемых при взвешенном предсказании;
- синтаксические элементы для управления деблокирующей фильтрацией;
- синтаксические элементы для управления адаптивным смещением отсчетов;
- любая комбинация перечисленных выше наборов.
Для каждого набора синтаксических элементов при кодировании набора параметров GOS кодер может иметь одну или более из следующих опций:
- Набор синтаксических элементов может кодироваться в синтаксической структуре набора параметров GOS, т.е. кодированные значения синтаксических элементов в наборе синтаксических элементов могут быть введены в состав синтаксической структуры набора параметров GOS.
- Набор синтаксических элементов может быть включен в набор параметров GOS при помощи ссылки. Ссылка может предоставляться как идентификатор для другого набора параметров GOS. Для различных наборов синтаксических элементов в кодере может использоваться различные опорные наборы параметров GOS.
- Указание на набор синтаксических элементов или вывод о его отсутствии может осуществляться на основе набора параметров GOS.
Варианты, из которых кодер может выбирать конкретный набор синтаксических элементов при кодировании набора параметра GOS, могут зависеть от типа набора синтаксических элементов. Например, набор синтаксических элементов, связанный с масштабируемыми уровнями, может всегда присутствовать в наборе параметров GOS, тогда как набор синтаксических элементов, который может оставаться неизменным во всех слайсах компонента ракурса, может быть недоступным для включения при помощи ссылки, но может опционально присутствовать в наборе параметров GOS, а синтаксические элементы, относящиеся к модификации списка опорных изображений могут включаться при помощи ссылки, включаться непосредственно, или не присутствовать в синтаксической структуре набора параметров GOS. Кодер может кодировать указание на вариант, использованный при кодировании, в битовый поток, например, в синтаксической структуре набора параметров GOS. Таблица кодирования и/или энтропийное кодирование может зависеть от набора синтаксических элементов. В декодере, в зависимости от типа декодируемого набора синтаксических элементов, используют кодовую таблицу и/или энтропийное декодирование, соответствующее кодовой таблице, и/или энтропийное кодирование, используемое кодером.
Кодер может иметь несколько средств для указания на связь между набором синтаксических элементов и набором параметров GOS, используемым как источник значений в этом наборе синтаксических элементов. Например, кодер может кодировать цикл синтаксических элементов, при этом каждая запись цикла будет кодироваться как синтаксические элементы, указывающие значения идентификатора набора параметров GOS, используемые в качестве опорных, и указывающие также наборы синтаксических элементов, скопированных из опорного набора параметров GOP. В другом примере кодер может кодировать несколько синтаксических элементов, каждый из которых указывает на набор параметров GOS. Последний набор параметров GOS в цикле, содержащий определенный набор синтаксических элементов, является опорным для этого набора синтаксических элементов в наборе параметров GOS, который кодер в настоящий момент кодирует в битовый поток. Декодер выполняет синтаксический анализ кодированных набор параметров GOS из битового потока соответствующим образом и воспроизводит такие же наборы параметров GOS, что и кодер.
Было предложено ввести механизм частичного обновления для набора параметров адаптации с целью уменьшения размера NAL-блоков APS, а также с целью снижения расхода битрейта на передачу NAL-блоков APS. Несмотря на то, что APS является эффективным подходом для совместного использования общей информации адаптации изображений на уровне слайсов, независимое кодирование NAL-блоков APS может быть не оптимальным, если по сравнению с одним или более ранними наборами параметров адаптации изменяется только часть параметров APS.
В документе JCTVC-H0069 (http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H0069-v4.zip) синтаксическая структура APS разделена на несколько групп синтаксических элементов, каждая из которых связана с определенным методом кодирования (например, адаптивный внутренний петлевой фильтр (Adaptive In-Loop Filter, ALF) или адаптивное смещение элементов изображения (Sample Adaptive Offset, SAO)). Каждой из таких групп в синтаксической структуре APS предшествует флаг, указывающий на ее соответствующее присутствие. Синтаксическая структура APS включает также традиционную ссылку на другую APS. Флаг ref_aps_flag сигнализирует о присутствии параметра ref_aps_id, на который ссылается текущий APS. С помощью такого механизма ссылок может быть создан список со ссылками на несколько наборов APS. Процедура декодирования во времени активации APS использует ссылку из заголовка слайсов для обращения к первому APS из привязанного списка. Эти группы синтаксических элементов, для которых установлен соответствующий флаг (например, флаг aps_adaptive_loop_filter_data_present_flag), декодируются на основе зависимого набора APS. После декодирования выполняется переход к следующему привязанному APS из списка привязки (если он присутствует, на что указывает флаг ref_aps_flag, равный 1). Из текущего набора APS декодируются только те группы, на присутствие которых не указывалось ранее, но указывается в текущем APS. Механизм продолжает свою работу, проходя по списку привязанных APS до тех пор, пока не будет выполнено одно из трех следующих условий: (1) все необходимые группы синтаксических элементов (указанные с помощью SPS, PPS или профиля/уровня) из привязанной цепочки APS были декодированы, (2) обнаружен конец списка, и (3) был выполнен переход по фиксированному, возможно, зависящему от профиля, количеству ссылок, при этом данное количество может быть минимально равно единице. Если имеются группы, для которых не было сигнализировано присутствие ни в одном из привязанных APS, то соответствующий инструмент декодирования для данного изображения не используется. Условие (2) исключает замкнутые циклы ссылок. Сложность механизма ссылок дополнительно ограничивается конечным размером таблицы APS. В документе JCTVC-H0069 предложено выполнение операции исключения ссылки, т.е. восстановления источника для каждой группы синтаксических элементов, всякий раз при активации APS, как правило, один раз в начале декодирования слайса.
Также в документе JCTVC-H0255 предложено включение в заголовок слайса нескольких идентификаторов APS, каждый из определяет исходный APS для заданной группы синтаксических элементов, т.е. один APS является источником для матриц квантования, а другой APS является источником параметров ALF. В документе JCTVC-H0381, предложен флаг «копирования» для каждого типа параметров APS, который позволяет копировать параметры APS этого типа из другого набора APS. В документе JCTVC-H0505 введен набор параметров группы (Group Parameter Set, GPS), где собраны идентификаторы наборов параметров различных типов наборов параметров ((SPS, PPS, APS), и которые могут содержать несколько идентификаторов наборов параметров APS. Также в документе JCTVC-Н0505 было предложено, чтобы заголовок слайса содержал идентификатор GPS, используемый для декодирования слайса, вместо отдельных идентификаторов PPS и APS.
Упомянутые выше варианты кодирования наборов параметров адаптации могут иметь один или более следующих недостатков:
Потери NAL-блоков APS не могут быть обнаружены, и следовательно при декодировании могут быть использованы некорректные значения параметров APS. Допускается кодирование и передача синтаксических структур APS, в которых в качестве значения идентификатора APS используется значение, уже использованное ранее для другой синтаксической структуры APS. Однако синтаксические структуры APS могут теряться при передаче, особенно если NAL-блоки APS передаются в основной полосе и/или с использованием ненадежного механизма передачи. Ранее не было предложено средств обнаружения потери NAL-блоков APS. Поскольку значение идентификатора APS может использоваться повторно, то любая ссылка (например, из заголовка слайса или другого NAL-блока APS для частичного обновления параметров APS) на значение идентификатора APS, использованного в потерянном NAL-блоке APS, может указывать на один из предшествующих NAL-блоков APS с таким же значением идентификатора APS. В результате могут применяться некорректные значения синтаксических элементов, например, в процессе декодирования слайсов или при частичном обновлении параметров APS. Использование некорректных значений синтаксических элементов может оказывать серьезное негативное влияние на декодирование, например, в декодированных изображениях могут появляться очевидные искажения или декодирование может завершаться полностью неудачно.
Повышенное потребление памяти. Одним из вариантов, позволяющим избежать проблемы неустойчивости к ошибкам, описанной в предыдущем абзаце, является запрет на повторное использование значений идентификаторов APS в NAL-блоках APS. Однако потенциально это может приводить к необходимости наличия очень большого или неограниченного диапазона значений идентификаторов APS. В описанных выше вариантах кодирования наборов параметров адаптации декодер удерживает все наборы параметров адаптации в памяти, если только снова не используется использованное ранее значение идентификатора, - в этом случае более ранний набор параметров адаптации заменяется на новый. Следовательно, большой или неограниченный диапазон значений идентификаторов APS может приводить к повышенному расходу памяти. При этом представляется сложным определить худший случай расхода памяти.
Передача NAL-блоков APS должна быть синхронизирована с NAL-блоками видеокодирования: в противном случае для декодирования могут быть использованы неверные параметры. Как пояснялось ранее, наборы параметров были разработаны для передачи как вне основной полосы, так и в основной полосе, причем преимущество передачи вне основной полосы - повышенная устойчивость к ошибкам благодаря применению надежных механизмов передачи. При передаче наборов параметров вне основной полосы они должны быть доступными до их активации - это свойство учтено уже в конструкции наборов SPS и PPS стандарта H.264/AVC - следовательно, необходим грубый уровень синхронизации между наборами параметров, передаваемыми вне основной полосы, и NAL-блоками уровня видеокодирования. Однако в документе JCTVC-H0069 предложено выполнение исключения ссылок для частично обновленного набора APS, т.е. восстановления источника для каждой группы синтаксических элементов, всякий раз при активации APS, как правило, один раз в начале декодирования слайса. Даже если NAL-блок APS, на который выполняется ссылка из заголовка слайса, не изменился по сравнению с предшествующим заголовком слайса, один из NAL-блоков APS, на который выполняется ссылка из списка привязки, созданного при помощи механизма частичного обновления, может быть передан заново, и следовательно, некоторые из значений параметров APS NAL-блока APS, на который ссылается заголовок текущего слайса, могут также измениться. Следовательно, передача NAL-блоков APS должна быть синхронизирована с NAL-блоками VCL, т.е. в противном случае набор APS с исключенными ссылками может отличаться в кодере и в декодере. Альтернативно, декодер должен синхронизировать принятые NAL-блоки APS с NAL-блоками VCL в том же порядке, в котором кодер их создавал или применял.
В различных вариантах осуществления настоящего изобретения может использоваться общая нотация арифметических операторов, логических операторов, операторов отношений, битовых операторов, операторов назначений, и нотация диапазонов, например, определенная в стандарте H.264/AVC или в проекте стандарта HEVC. Также могут использоваться общие математические функции, например, определенные в стандарте H.264/AVC или проекте стандарта HEVC, и общий порядок предшествования и исполнения (слева направо или справа налево) операторов, например, определенные в стандарте H.264/AVC или в проекте стандарта HEVC.
В различных примерах осуществления настоящего изобретения для описания процедуры синтаксического анализа синтаксических элементов могут использоваться следующие обозначения.
- b(8): байт из битовой строки с любой последовательностью битов (8 бит).
- se(v): синтаксический элемент, представляющий собой целое значение со знаком, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита.
- u(n): целое без знака с использованием n битов. Если в синтаксической таблице n равно "v", то количество битов изменяется в зависимости от значения других синтаксических элементов. Процедура синтаксического анализа данного дескриптора определяется следующими n битами в битовом потоке, которые интерпретируются как двоичное представление целого числа без знака, старший бит которого идет первым.
- ue(v): синтаксический элемент, представляющий собой целое значение без знака, кодируемое методом экспоненциального кодирования Голомба, начиная с левого бита. Битовая строка, кодированная методом экспоненциального кодирования Голомба, может быть преобразована в кодовое число (coneNum), например, с использованием следующей таблицы:
Кодовое число, соответствующее битовой строке, кодированной методом экспоненциального кодирования Голомба, может быть преобразовано в se(v), например, с использованием следующей таблицы:
В различных вариантах осуществления настоящего изобретения кодер может кодировать или создавать NAL-блоки APS, при этом порядок созданных NAL-блоков APS называется порядком декодирования APS. Значение идентификаторов APS в NAL-блоках APS может назначаться в соответствии с заранее заданной схемой нумерации в порядке декодирования APS. Например, значение идентификатора APS может увеличиваться на единицу для каждого набора APS в порядке декодирования APS. В некоторых вариантах осуществления настоящего изобретения схема нумерации может определяться кодером и указываться, например, в наборе параметров последовательности. В некоторых из вариантов осуществления настоящего изобретения исходное значение схемы нумерации может быть заранее задано, например, таким образом, что значение 0 используется для первого NAL-блока APS, передаваемого для кодированной видеопоследовательности, тогда как в других вариантах осуществления настоящего изобретения исходное значение схемы нумерации может определяться кодером. В некоторых документах схема нумерации может зависеть от значений других синтаксических элементов NAL-блока APS, например, значений параметра temporal_id и флага nal_ref_flag. Например, значение идентификатора APS может увеличиваться на единицу по сравнению с предыдущим NAL-блоком APS, имеющим то же значение temporal_id, что текущий кодируемый NAL-блок APS. Если NAL-блок APS используется только в одном неопорном изображении, то в кодере флаг nal_ref_flag NAL-блока APS может быть установлен равным 0, а значения идентификатора APS могут увеличиваться только относительно значений идентификатора APS в NAL-блоках APS, имеющих флаг nal_ref_flag, равный 1. Значение идентификатора APS может кодироваться с использованием различных схем кодирования, которые могут быть заранее определены в стандарте кодирования, например, или определяться кодером и указываться, например, в наборе параметров последовательности. Например, для кодирования значения идентификатора APS в синтаксической структуре APS, всякий раз когда значение идентификатора APS используется для ссылки на NAL-блок APS, может использоваться код переменный длины, например, целочисленный экспоненциальный код Голомба без знака, ue(v). В другом примере, может использоваться код фиксированный длины, например, u(n), где n может быть заранее задано или определяться кодером и указываться, например, в наборе параметров последовательности. В некоторых вариантах осуществления настоящего изобретения диапазон значений кодированных идентификаторов APS может быть ограничен. Пределы диапазона значений могут быть получены на основе кодирования значения идентификатора APS. Например, если значение идентификатора APS кодируется в виде u(n), диапазон значений может вычисляться и в кодере, и в декодере, в этом случае он будет составлять от 0 до n-1 включительно. В некоторых вариантах осуществления настоящего изобретения схема нумерации может определяться кодером и указываться, например, в наборе параметров последовательности. Например, значение идентификатора APS может кодироваться в виде ue(v), при этом диапазон значений может быть задан от 0 до N, где N указывается при помощи синтаксического элемента в синтаксической структуре набора параметров последовательности. В схеме нумерации идентификаторов APS может использоваться модульная арифметика, т.е. при превышении идентификатором максимального значения в диапазоне значения он возвращается циклически к минимальному значению диапазона. Например, если идентификаторы APS увеличиваются на 1 в порядке декодирования APS, а диапазон значений составляет от 0 до N, то идентификатор может быть определен как равный (prevValue+1) % (N+1), где prevValue - предыдущее значение идентификатора APS, а за % обозначена операция «по модулю».
Благодаря тому, что схема нумерации значений идентификаторов APS в порядке декодирования APS заранее задана или указана, потери и/или нарушение порядка доставки NAL-блоков APS может обнаруживаться на стороне приемника, например, декодером. Другими словами, в декодере может использоваться та же схема нумерации идентификаторов APS, что и в кодере, и на основе нее делаться вывод о значении идентификатора APS, который должен присутствовать в следующем принятом NAL-блоке APS. Если принят NAL-блок APS с отличающимся значением идентификатора APS, то может быть сделан вывод о потере данных или о нарушении порядка доставки. В некоторых вариантах осуществления настоящего изобретения может допускаться повторение NAL-блока APS для повышения устойчивости к ошибкам, следовательно, не должен делаться вывод об ошибке в случае приема NAL-блока APS с тем же самым значением идентификатора APS, что и в предыдущем NAL-блоке APS в порядке приема. В соответствии с предшествующим описанием схема нумерации может зависеть от значений других параметров NAL-блока APS, таких как temporal_id и nal_ref_flag, в этом случае значение идентификатора APS принятого NAL-блока APS может сравниваться с ожидаемым значением относительно предыдущего NAL-блока APS, отвечающего характеристикам, заданным в схеме нумерации. Например, в некоторых вариантах осуществления настоящего изобретения может использоваться схема нумерации, основанная на temporal_id, при этом декодер будет ожидать увеличения значения идентификатора APS на 1 относительно предшествующего NAL-блока APS, имеющего такое же значение temporal_id, что и текущий NAL-блок APS. Если декодер принимает NAL-блок APS с другим значением идентификатора APS, может быть сделан вывод о потере данных или о нарушении порядка доставки. В некоторых вариантах осуществления настоящего изобретения приемник или декодер, или другое подобное устройство, может включать буфер и/или процедуру переупорядочивания NAL-блоков APS от порядка их приема к порядку декодирования на основе схемы нумерации, использованной для значений идентификаторов APS.
Однако в некоторых вариантах осуществления настоящего изобретения пропуск в значениях идентификаторов может указывать на намеренное удаление или случайную потерю NAL-блока APS. NAL-блок APS может быть намерено удален, например, процедурой извлечения битового подпотока, которая удаляет из битового потока масштабируемый уровень или ракурс, или аналогичную структуру. Следовательно, в некоторых вариантах осуществления настоящего изобретения пропуск в ожидаемых назначенных значениях идентификаторов NAL-блоков APS может обрабатываться декодером следующим образом. Сначала делается вывод о наличии пропущенных значений идентификаторов APS между предыдущим значением идентификатора APS и текущим значением идентификатора APS NAL-блоков APS в порядке декодирования APS. Например, если предыдущее значение идентификатора APS равно 3, а текущее значение идентификатора APS равно 6, и при этом в соответствии с применяемой схемой нумерации значения идентификаторов APS увеличиваются на единицу в каждом NAL-блоке APS, то делается вывод о том, что не хватает NAL-блоков APS со значениями идентификаторов, равных 4 и 5. Наборы параметров адаптации для пропущенных значений идентификаторов APS могут быть помечены специальным образом, например, как «несуществующие». Если в процессе декодирования выполняется ссылка на «несуществующий» набор APS, например с использованием идентификатора опорного APS в заголовке слайса или с использованием механизма частичного обновления APS, то в декодере может быть сделан вывод о случайной потере APS.
Далее описаны различные варианты определения, какие из наборов параметров адаптации удерживаются в буфере для кодирования и декодирования. В настоящем описании используются такие выражения, как «удаленный из буфера», но следует отметить, что набор параметров не обязательно удаляется из памяти или буфера, он может просто помечаться как недействительный, неиспользуемый, несуществующий, неактивированный и т.п., чтобы он более не использовался для кодирования и/или декодирования. Аналогично, в настоящем описании могут использоваться такие выражения, как «удерживаемый в буфере», однако наборы параметры адаптации могут сохраняться в любой запоминающей системе или другом хранилище, и лишь связываться, или помечаться как действительные, используемые, существующие, активные и т.п., с целью использования при кодировании и/или декодировании. При анализе или определении действительности наборов адаптации, наборы параметров адаптации, которые «удерживаются в буфере» или помечены как действительные, используемые, существующие, активные и т.п., могут определяться как действительные, а наборы параметров адаптации, которые были «удалены из буфера» или помечены как недействительные, неиспользуемые, несуществующие, неактивные и т.п., могут определяться как недействительные.
В некоторых вариантах осуществления настоящего изобретения может быть заранее задано максимальное количество наборов параметров адаптации, удерживаемое в памяти кодером и декодером, обозначенное как max_aps, например, в стандарте кодирования, или может определяться кодером и указываться в кодированном потоке, например, в наборе параметров последовательности. В некоторых вариантах осуществления настоящего изобретения и кодер, и декодер могут выполнять буферизацию по принципу «первый вошел, первый вышел» (также известную под названием «оконной буферизации») для набора параметров адаптации в буферной памяти, имеющей количество ячеек, равное max_aps, при этом в одной ячейке может храниться один набор параметров адаптации. «Несуществующие» APS также могут участвовать в буферизации по методу скользящего окна. Если все ячейки буфера APS со скользящим окном заняты, и при этом декодирован новый набор APS, то самый старый APS в порядке декодирования APS удаляется из буфера со скользящим окном. В некоторых вариантах осуществления настоящего изобретения схема нумерации может зависеть от других параметров NAL-блока APS, при этом могут присутствовать несколько буферов со скользящим окном и операций в декодере. Например, если схема нумерации основана на значении temporal_id, то для каждого значения temporal_id может использоваться отдельный буфер со скользящим окном, при этом max_aps может указываться независимо для каждого значения temporal_id. В некоторых вариантах осуществления настоящего изобретения кодер может кодировать в битовый поток конкретные операции управления буфером APS, например, удаление указанного значения идентификатора APS из буфера со скользящим окном. Декодер декодирует эти операции управления буфером APS и соответственно, поддерживает состояние буфера APS со скользящим таким же, как в кодере. В некоторых вариантах осуществления настоящего изобретения некоторые наборы параметров адаптации могут назначаться кодером в качестве долгосрочных параметров адаптации. Долговременное назначение может осуществляться, например, с использованием значения идентификатора APS вне диапазона значений, зарезервированного для значений идентификаторов APS стандартных наборов параметров адаптации, или при помощи специальной операции управления буфером APS. Долговременные наборы параметров адаптации не подчиняются операциям управления буфером со скользящим окном, т.е. долгосрочный набор параметров адаптации не удаляется из буфера со скользящим окном, даже если он является самым старым в порядке декодирования APS. Количество или максимальное количество долговременных наборов APS может указываться, например, в наборе параметров последовательности, или может вычисляться в декодере на основе назначений наборов параметров адаптации в качестве долговременных. В некоторых вариантах осуществления настоящего изобретения буфер со скользящим окном может иметь регулируемый размер, т.е. количество ячеек в нем может быть равно max_aps минус количество или максимальное количество долговременных наборов параметров адаптации. Может требоваться, например, стандартом кодирования, чтобы битовый поток кодировался таким образом, чтобы значения идентификаторов APS для долгосрочных наборов параметров адаптации никогда не использовались повторно в другом наборе параметров адаптации в одной и той же кодированной видеопоследовательности. Альтернативно, может требоваться или рекомендоваться, чтобы всякий раз при передаче NAL-блока APS, который перезаписывается на место предшествующего долгосрочного набора параметров адаптации, передача данных для этого NAL-блока APS выполнялась надежным способом.
В некоторых вариантах осуществления настоящего изобретения может быть заранее задано значение, определяющее максимальную разницу значений идентификаторов APS, которое удерживается в памяти кодера и декодера, при этом такое значение может быть определено, например, в стандарте кодирования или может определяться кодером и указываться в битовом потоке, например, в наборе параметров последовательности. Это значение может быть обозначено как max_aps_id_diff. Кодер и декодер могут удерживать в памяти и/или помечать как «используемые» только те наборы параметров адаптации, чьи значения идентификатора APS находятся в пределах, заданных параметром max_aps_id_diff относительно значения идентификатора APS некоторого набора параметров адаптации, например последнего NAL-блока APS в порядке декодирования APS или последнего NAL-APS с temporal_id, равным 0, в порядке декодирования APS. В рассмотренном ниже примере предполагается, что идентификаторы APS имеют заданный диапазон значений от 0 до max_aps_id включительно, при этом значение max_aps_id может быть задано заранее, например, в стандарте кодирования, или может определяться кодером и указываться, например, в наборе параметров последовательности. При декодировании NAL-блока APS, значение идентификатора APS которого равно curr_aps_id, при помощи назначения rp_aps_id равным curr_aps_id может выполняться следующее. Если rp_aps_id>=max_aps_id_diff, все наборы параметров адаптации со значением идентификатора APS, меньшим, чем rp_aps_id -max_aps_id_diff, и большим, чем rp_aps_id, удаляют из буфера. Если rp_aps_id<max_aps_id_diff, то удаляют все наборы параметров адаптации со значением идентификатора APS, большим, чем rp_aps_id, и меньшим либо равным (max_aps_id_diff-(rp_aps_id+1)). Остальные наборы параметров адаптации удерживают в памяти/буфере. Если на удаленный из памяти/буфера набор параметров адаптации в процессе декодирования выполняется ссылка, например с использованием идентификатора опорного APS в заголовке слайса или с использованием механизма частичного обновления APS, то в декодере может быть сделан вывод о случайной потере APS, на который осуществляется ссылка.
В некоторых из вариантов осуществления настоящего изобретения в кодере и декодере может храниться значение rp_aps_id идентификатора APS опорной точки, что осуществляется следующим образом. При кодировании или декодировании первого NAL-блока APS кодированной видеопоследовательности значение rp_aps_id устанавливается равным значению идентификатора APS первого NAL-блока APS. Всякий раз при кодировании или декодировании NAL-блока APS, следующего по порядку декодирования APS, со значением идентификатора APS, равным curr_aps_id, значение rp_aps_id может быть обновлено и установлено равным curr_aps_id, если значение увеличено относительно rp_aps_id. Поскольку для значений идентификаторов APS может использоваться модульная арифметика, сравнение для определения увеличения curr_aps_id относительно rp_aps_id может требовать учета циклического обнуления после max_aps_id. Для различения между увеличением curr_aps_id относительно rp_aps_id (в модульной арифметике) и уменьшением curr_aps_id относительно rp_aps_id, можно считать, что максимально допустимое уменьшение имеет порог, который может быть равен max_aps_id_diff, или вычисляться на его основе, или может быть задан заранее например, в стандарте кодирования, или может определяться кодером и указываться, например, в наборе параметров последовательности. Например, могут выполняться следующие действия. Если curr_aps_id>rp_aps_id и curr_aps_id<rp_aps_id+max_aps_id - пороговое значение, то rp_aps_id может быть установлено равным curr_aps_id. Если curr_aps_id<rps_aps_id - пороговое значение, то rps_aps_id может быть установлено равным curr_aps_id. В противном случае rp_aps_id сохраняют неизменным. Определение, какие наборы параметров адаптации удаляются из памяти и какие сохраняются в памяти, может выполняться в соответствии с описанием в предыдущем абзаце, с тем отличием, что rp_aps_id не устанавливается равным curr_aps_id для каждого NAL-блока APS, а назначается в соответствии с описанной в данном абзаце схемой. Схема, представленная в данном абзаце, может допускать, например, повторную передачу NAL-блоков APS в целях повышения устойчивости к ошибкам.
В некоторых из вариантов осуществления настоящего изобретения кодер может определять значение max_aps_id_diff, или аналогичного параметра, для всех или для некоторых кодируемых наборов параметров адаптации и включать значение max_aps_id_diff в NAL-блок набора параметров адаптации. Затем в декодере, вместо других эквивалентных синтаксических элементов в других местах битового потока, например, в наборе параметров последовательности, может использоваться значение max_aps_id_diff NAL-блока набора параметров адаптации.
В некоторых из вариантов осуществления настоящего изобретения синтаксическая структура APS может содержать опорный набор для наборов параметров адаптации (adaptation parameter sets reference set, APSRS), при этом каждый элемент этого набора может идентифицироваться при помощи значения идентификатора APS. С помощью APSRS могут быть заданы наборы параметров адаптации, которые удерживаются в буфере кодером и декодером, тогда как остальные наборы параметров адаптации, чьи значения идентификаторов не находятся в APSRS, удаляются из памяти/буфера. Если на такой удаленный из памяти/буфера набор параметров адаптации в процессе декодирования выполняется ссылка, например с использованием идентификатора опорного APS в заголовке слайса или с использованием механизма частичного обновления APS, то в декодере может быть сделан вывод о случайной потере APS. В некоторых из вариантов осуществления настоящего изобретения, особенно в тех, где применяется выделение битовых подпотоков, если APSRS содержит значение идентификатора для APS, не находящегося в буфере, то в декодере может быть сделан вывод о случайной потере этого набора APS.
В некоторых из вариантов осуществления настоящего изобретения изображения одного или более заданных типов могут вызывать удаление NAL-блоков APS из памяти. Например, IDR-изображение может вызывать удаление из памяти всех NAL-блоков APS. В некоторых из примеров CRA-изображение может вызывать удаление из памяти всех NAL-блоков APS.
В некоторых из примеров в синтаксической структуре APS может обеспечиваться возможность применения механизма частичного обновления APS, например, следующим образом. Для каждой группы синтаксических элементов (например, QM, ALF, SAO и параметров деблокирующего фильтра) в кодере могут иметься один или более следующих вариантов при кодировании синтаксической структуры APS:
- Группа синтаксических элементов может кодироваться в синтаксической структуре APS, т.е. кодированные значения синтаксических элементов в наборе синтаксических элементов могут быть введены в состав синтаксической структуры набора параметров APS.
- Группа синтаксических элементов может быть включена в набор APS при помощи ссылки. Ссылка может предоставляться как идентификатор для другого набора APS. Для различных групп синтаксических элементов в кодере может использоваться различные идентификаторы опорных APS.
- Может выполняться указание или делаться вывод об отсутствии в APS группы синтаксических элементов.
Варианты, которые кодер может выбирать для конкретной группы синтаксических элементов при кодировании APS, могут зависеть от типа группы синтаксических элементов. Например, может требоваться, чтобы синтаксические элементы определенного типа всегда присутствовали в синтаксической структуре APS, тогда как другие группы синтаксических элементов могут включаться при помощи ссылки или присутствовать в синтаксической структуре APS. Кодер может кодировать указание на вариант, использованный при кодировании, в битовый поток, например, в синтаксической структуре APS. Таблица кодирования и/или энтропийное кодирование может зависеть от группы синтаксических элементов. В декодере, в зависимости от типа декодируемой группы синтаксических элементов, может использоваться кодовая таблица и/или энтропийное декодирование, соответствующее кодовой таблице, и/или энтропийному кодированию, использованному в кодере.
Кодер может иметь несколько средств для указания на связь между группой синтаксических элементов и APS, используемым как источник значений в этом наборе синтаксических элементов. Например, кодер может кодировать цикл синтаксических элементов, при этом каждая запись цикла будет кодироваться как синтаксические элементы, указывающие значения идентификатора APS, используемые в качестве опорных, и указывающие также наборы синтаксических элементов, скопированных из опорного APS. В другом примере кодер может кодировать несколько синтаксических элементов, каждый из которых указывает на набор APS. Последний набор APS в цикле, содержащий определенную группу синтаксических элементов, является опорным для этой группы синтаксических элементов в наборе APS, который кодер в настоящий момент кодирует в битовый поток. Декодер выполняет синтаксический анализ кодированных набор параметров адаптации из битового потока соответствующим образом и воспроизводит такие же наборы параметров адаптации, что и кодер.
В некоторых из вариантов осуществления настоящего изобретения к синхронизации или упорядочиванию NAL-блоков APS с NAL-блоками VCL предъявляются следующие требования. Если NAL-блоки APS передаются вне основной полосы, достаточно, чтобы поддерживался порядок декодирования NAL-блоков APS во время передачи, или чтобы порядок декодирования APS восстанавливался на стороне приемника с помощью буферизации, например, описанным выше способом. В дополнение, механизм передачи вне основной полосы и/или механизм синхронизации должен быть таким, чтобы NAL-блок APS был доступен для декодирования до того, как на этот NAL-блок APS будет выполнена ссылка из NAL-блока VCL, например, из NAL-блока кодированного слайса. Если значения идентификаторов APS используются повторно, то механизм передачи и/или синхронизации должен не допускать декодирования NAL-блока до тех пор, пока не будет декодирован NAL-блок, содержащий последнюю ссылку на предшествующий NAL-блок APS, имеющий то же значение идентификатора. Однако необходимость в точной синхронизации, например, определении соответствующего порядка кодирования NAL-блоков APS и VCL, которая требуется в схеме частичного обновления JCTVC-H0069, отсутствует. Синхронизация или упорядочивание NAL-блоков APS с NAL-блоками VCL, отвечающая описанным выше требованиям, может достигаться различными средствами. Например, все наборы параметров адаптации, необходимые для декодирования всех изображений первой видеопоследовательности или GOP, могут передаваться на этапе установления сеанса, и, следовательно, быть доступными для декодирования в установленном сеансе при поступлении первых данных VCL для декодирования. Наборы параметров адаптации для следующих видеопоследовательностей или GOP могут формироваться непосредственно после этого, с использованием значений идентификаторов, отличающихся от использованных для первой кодированной видеопоследовательности или GOP. Следовательно, наборы параметров адаптации для второй кодированной видеопоследовательности передаются во время передачи данных VCL первой кодированной видеопоследовательности или GOP. Передача наборов параметров адаптации для последующих кодированных видеопоследовательностей или GOP может выполняться аналогичным образом.
В некоторых из вариантов осуществления настоящего изобретения разыменовывание или декодирование NAL-блоков APS может выполняться в любой момент времени, предшествующий ссылке на APS из NAL-блока VCL, при условии, что NAL-блоки APS декодируются в порядке декодирования APS. Декодирование NAL-блоков APS может выполняться при помощи определения ссылок и копирования групп синтаксических элементов, на которые осуществляется ссылка, в декодируемый набор APS. В некоторых из вариантов осуществления настоящего изобретения разыменовывание или декодирование NAL-блока APS может выполняться тогда, когда на него впервые выполняется ссылка из NAL-блока VCL. В некоторых из вариантов осуществления настоящего изобретения разыменовывание или декодирование NAL-блока APS может выполняться всякий раз, когда на него ссылается NAL-блок VCL.
В некоторых примерах осуществления настоящего изобретения синтаксические структуры, семантика синтаксических элементов и процедура декодирования могут быть определены следующим образом. Синтаксические элементы в битовом потоке обозначены жирным шрифтом. Каждый синтаксический элемент описан именем (строчные буквы с символами подчеркивания), опционально указаны его одна или две синтаксические категории, и один или два дескриптора для его метода кодированного представления. Поведение процедуры декодирования определяется значением синтаксического элемента и значениями ранее декодированных синтаксических элементов. При использовании значений синтаксических элементов в синтаксических таблицах или в тексте, они приводятся обычным (т.е. не жирным) шрифтом. В некоторых случаях в синтаксических таблицах могут использоваться значения других переменных, вычисленных на основе значений синтаксических элементов. Такие переменные приводятся в синтаксических таблицах или в тексте с наименованиями, состоящими из смеси строчных и прописных букв, без символов подчеркивания. Переменные, начинающиеся с прописной буквы, вычисляются для декодирования текущей синтаксической структуры и всех зависимых синтаксических структур. Переменные, начинающиеся с прописной буквы, могут быть использованы в процессе декодирования последующих синтаксических структур без упоминания исходной синтаксической структуры переменной. Переменные, начинающиеся со строчной буквы, используются только в контексте их вычисления. В некоторых случаях «мнемонические» наименования значений синтаксических элементов или переменных используются взаимозаменяемо с их численными значениями. Иногда «мнемонические» наименования используются без каких-либо соответствующих численных значений. Соответствие значений и наименований определено в тексте. Наименования формируются из одной или более групп букв, разделенных символом подчеркивания. Каждая группа начинается с прописной буквы и может содержать дополнительные прописные буквы.
В примерах осуществления настоящего изобретения синтаксическая структура может быть определена с использованием следующих обозначений. Группа выражений, заключенная в круглые скобки, является составным выражением и функционально трактуется как одно выражение. Структура "while" подразумевает проверку истинности условия, и при истинности условия подразумевает вычисление выражения (или составного выражения) в цикле до тех пор, пока данное условие не перестанет быть истинным. Структура "do while" подразумевает однократное вычисление выражения, после чего выполняется проверка истинности условия, и в случае истинности - повторное вычисление выражения, до тех пор, пока условие не перестанет быть истинным. Структура "if else" подразумевает проверку истинности условия, и если условие истинно, - вычисление первичного выражения, и в противном случае, вычисление альтернативного выражения. Часть "else" данной структуры и связанное с ней альтернативное выражение опускается, если вычисление альтернативного выражения не требуется. Структура "for" подразумевает вычисление исходного выражения, после чего выполняется проверка истинности условия, и в случае истинности - повторное вычисление первичного выражения, после которого идет следующее выражение, до тех пор, пока условие не перестанет быть истинным. В некоторых из вариантов осуществления настоящего изобретения синтаксис синтаксической структуры набора параметров последовательности может быть расширен и включать синтаксические элементы max_aps_id и max_aps_id_diff следующим образом:
Семантика синтаксических элементов max_aps_id и max_aps_id_diff может быть определена следующим образом. Элемент max_aps_id задает максимально допустимое значение aps_id. Элемент max_aps_id_diff задает значение диапазона значений aps_id наборов параметров адаптации, помечаемых как «используемые».
Синтаксис набора параметров адаптации RBSP, aps_rbsb(), может быть определен в некоторых вариантах осуществления настоящего изобретения следующим образом:
Семантика aps_rbsp() может быть определена следующим образом.
Элемент aps_id определяет значение идентификатора, которое идентифицирует набор параметров адаптации.
Флаг partial_update_flag, равный 0, указывает, что в данный набор APS при помощи ссылки не включен ни один синтаксический элемент. Флаг partial_update_flag, равный 1, указывает, что в данный набор APS при помощи ссылки могут быть включены синтаксические элементы.
Флаг common_reference_aps_flag, равный 0, определяет, что каждая группа синтаксических элементов, включенная в данный набор APS при помощи ссылки, может иметь отличающийся источник APS, идентифицируемый отличающимся значением идентификатора APS. Флаг common_reference_aps_flag, равный 1, определяет, что каждая группа синтаксических элементов, включенная в данный набор APS при помощи ссылки, происходит из одного источника APS.
Элемент common_reference_aps_id определяет значение идентификатора APS для набора-источника APS для всех групп синтаксических элементов, включенных в данный набор APS при помощи ссылки.
Флаг aps_scaling_list_data _present_flag, равный 1, определяет, в данном наборе APS имеются параметры списка масштабирования, и если он равен 0, - в данном наборе APS параметры списка масштабирования отсутствуют.
Флаг aps_scaling_list_data_referenced_flag, равный 0, определяет, что в данном aps_rbsp() присутствуют параметры списка масштабирования. Флаг aps_scaling_list_data_referenced_flag, равный 1, определяет, что в данном наборе APS при помощи ссылки включены параметры списка масштабирования.
Элемент aps_scaling_list_data_reference_aps_id определяет значение идентификатора APS для набора APS, из которого при помощи ссылки в данный набор APS включены параметры списка масштабирования.
Флаг aps_deblocking_filter_flag, равный 1, определяет, что в данном наборе APS присутствуют параметры деблокирования. Флаг aps_deblocking_filter_flag, равный 0, определяет, что в данном наборе APS не присутствуют параметры деблокирования.
Флаг aps deblocking_fïlter_referenced_flag, равный 0, определяет, что в данном aps_rbsp() присутствуют параметры деблокирования. Флаг aps_deblocking_filter_referenced_flag, равный 1, определяет, что в данный APS при помощи ссылки включены параметры деблокирования.
Элемент aps_deblocking_filter_reterence_aps_id определяет значение идентификатора APS для набора APS, из которого при помощи ссылки в данный набор APS включены параметры деблокирования.
Флаг aps_sao_interleaving_flag, равный 1, определяет, что в данных слайса для слайсов, ссылающихся на текущий набор APS, включены чередованием параметры SAO. Флаг aps_sao_interleaving_flag, равный 0, определяет, что параметры SAO расположены в APS для слайсов, ссылающихся на текущий набор APS. Если активные наборы APS отсутствуют, то считают, что флаг aps_sao_interleaving_flag равен 0.
Флаг aps_sample_adaptive_offset_flag, равный 1, определяет, что параметры SAO включены для слайсов, ссылающихся на текущий набор APS. Этот же флаг равный 0 определяет, что параметры SAO отключены для слайсов, ссылающихся на текущий набор APS. При отсутствии активных наборов APS флаг aps_sample_adaptive_offset_flag считается равным 0.
Флаг aps_sao_referenced_flag, равный 0, определяет, что в данном aps_rbsp() присутствуют параметры SAO. Флаг aps_sao_referenced_flag, равный 1, определяет, что в данный APS при помощи ссылки включены параметры SAO.
Элемент aps_sao_reterence_aps_id определяет значение идентификатора APS для набора APS, из которого при помощи ссылки в данный набор APS включены параметры SAO.
Флаг aps_adaptive_loop_filter_flag, равный 1, определяет, что для слайсов, ссылающихся на текущий набор APS, включена ALF-фильтрация; этот же флаг, равный 0, определяет, что ALF-фильтрация отключена для слайсов, ссылающихся на текущий набор APS. При отсутствии активных наборов APS флаг считается равным 0.
Флаг aps_alf_referenced_flag, равный 0, определяет, что в данном aps_rbsp() присутствуют параметры ALF. Флаг aps_alf_referenced_flag, равный 1, определяет, что в данный APS при помощи ссылки включены параметры ALF.
Элемент aps_alf_reterence_aps_id определяет значение идентификатора APS для набора APS, из которого при помощи ссылки в данный набор APS включены параметры ALF.
Флаг aps_extension_flag, равный 0, определяет, что в синтаксической структуре RBSP набора параметров изображения не присутствуют синтаксические элементы aps_extension_data_flag. Флаг aps_extension_flag должен быть равен 0 в битовых потоках, соответствующих данной Рекомендации / Международному стандарту. Значение aps_extension_flag, равное 1, зарезервировано ITU-T / ISO/IEC для будущего использования. В декодере должны игнорироваться все данные, следующие за значением 1 флага aps_extension_flag в NAL-блоке набора параметров изображения.
Флаг aps_extension_flag может иметь любое значение. Его значение не влияет на соответствие декодера профилям, определенным в данной Рекомендации / Международном стандарте.
В некоторых из вариантов осуществления настоящего изобретения все идентификаторы наборов параметров адаптации, или их часть, и связанные с ними синтаксические элементы, такие как aps_id, common_reference_aps_id, aps_XXX_referenced aps_id (где XXX равно scaling_list_data, deblocking_filter, alf, или sao), а также max_aps_id_diff могут декодироваться как u(v). Длина упомянутых u(v)-кодированных синтаксических элементов может быть определена при помощи значения aps_id. Например для таких синтаксических элементов могут использоваться Ceil(Log2(max_aps_id+1)) бит, где Ceil(x) - наименьшее целое число, большее либо равное x, a Log2(x) возвращает логарифм x по основанию 2. Поскольку элемент max_aps_id во многих вариантах осуществления настоящего изобретения включен в набор параметров последовательности, синтаксическая структура набора параметров адаптации может быть расширена и может включать идентификатор активного набора параметров последовательности.
В некоторых вариантах осуществления настоящего изобретения синтаксическая структура aps_rbsp(), или подобная ей, может быть расширена, например, при помощи назначения флага aps_extension_flag равным 1. Расширение может применяться, например, для передачи групп синтаксических элементов, связанных с расширениями масштабирования, многоракурсными или трехмерными расширениями. Синтаксическая структура APS с флагом aps_extension_flag, равным 0, может при помощи ссылки включать эти группы синтаксических элементов, которые включаются в синтаксическую структуру aps_rbsp() с флагом aps_extension_flag, равным 0, даже если в наборах APS, на которые осуществляется ссылка, флаги aps_extension_flag были равны 1.
В некоторых из вариантов осуществления настоящего изобретения NAL-блок набора параметров адаптации может декодироваться с помощью следующих упорядоченных шагов:
- Назначение currApsId равным значению aps_id декодируемого NAL-блока набора параметров адаптации.
- Если currApsId больше или равен max_aps_id_diff, то все наборы параметров адаптации со значением aps_id, меньшим, чем currApsId - max_aps_id_dif и большим, чем currApsId, помечаются как «неиспользуемые».
- Если currApsId меньше, чем max_aps_id_diff, то все наборы параметров адаптации со значениями aps_id, большими, чем currApsId и меньшими или равными (max_aps_id - (max_aps_id_diff - (currApsId+1)) помечаются как «неиспользуемые».
- Если флаг partial_update_flag равен 1, и флаг aps_scaling_list_data_referenced_flag равен 1, то значения синтаксических элементов в синтаксической структуре scaling_list_param() принимаются равными тем же значениям, что и в синтаксической структуре scaling_list_param() для NAL-блока APS с aps_id, равным common_reference_aps_id, при его наличии, или aps_scaling_list_data_reference_aps_id в противном случае.
- Если флаг partial_update_flag равен 1, и флаг aps_deblocking_filter_flag равен 1, значения disable_deblocking_filter_flag, beta_offset_div2, и tc_offset_div2 принимаются, соответственно, равными значениям disable_deblocking_filter_flag, beta_offset_div2, при их наличии, и tc_offset_div2, при его наличии, в NAL-блоке APS с aps_id, равным common_reference_aps_id, при его наличии, или aps_deblocking_filter_reference_aps_id в противном случае.
- Если флаг partial_update_flag равен 1, флаг aps_sao_interleaving_flag равен 0, и флаг aps_sample_adaptive_offset_flag равен 1, значения синтаксических элементов в синтаксической структуре aps_sao_param() принимаются равными тем же значениями, что и в синтаксической структуре aps_sao_param() для NAL-блока с aps_id, равным common_reference_aps_id, при наличии, или aps_sao_reference_aps_id в противном случае
- Если флаг partial_update_flag равен 1, и флаг aps_adaptive_loop_filter_flag равен 1, значения синтаксических элементов в синтаксической структуре alf_param() принимаются равными тем же значениям, что и в синтаксической структуре alf_param() для NAL-блока APS с aps_id, равным common_reference_aps_id, при наличии, или aps_alf_reference_aps_id в противном случае.
- Декодируемый NAL-блок набора параметров адаптации помечается как «используемый».
В приведенном выше описании примеры осуществления настоящего изобретения были описаны с помощью синтаксиса битового потока. Однако нужно понимать, что соответствующая структура и/или компьютерная программа может располагаться в кодере, и служить для формирования битового потока, и/или в декодере, и служить для декодирования битового потока. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на кодер, нужно понимать, что результирующий поток и декодер также включают соответствующие элементы. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на декодер, нужно понимать, что кодер включает структуру и/или компьютерную программу для формирования битового потока, декодируемого декодером.
Выше варианты осуществления настоящего изобретения были рассмотрены на примере набора параметров адаптации. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы с использованием наборов параметров любого типа, например, наборов параметров GOS, наборов параметров изображения или наборов параметров последовательности.
Рассмотренные выше примеры описывают работу вариантов осуществления настоящего изобретения в кодеке электронного устройства, однако нужно понимать, что настоящее изобретение, в соответствии с дальнейшим описанием, может быть реализовано как часть любого видеокодека. Так, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, который может реализовывать видеокодирование по фиксированным, или проводным, каналам связи.
Соответственно, абонентское оборудование может включать видеокодек, например, аналогичный рассмотренным в приведенном выше описании настоящего изобретения. Нужно понимать, что выражение «абонентское оборудование» используется как охватывающие любые подходящие типы беспроводного абонентского оборудования, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.
При этом элементы наземной сети мобильной связи общего пользования (public land mobile network, PLMN) также могут включать видеокодеки в соответствии с предшествующим описанием.
В общем случае различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или схем специального назначения, программного обеспечения, логики или какой-либо их комбинации. К примеру, некоторые из аспектов могут быть реализованы в виде аппаратного обеспечения, тогда как другие аспекты могут быть реализованы в виде микропрограммного или программного обеспечения, которое может исполняться контроллером, микропроцессором или иным вычислительным устройством, без ограничения настоящего изобретения перечисленным. Различные аспекты настоящего изобретения допускают иллюстрацию и описание в виде блок-схем, блок-схем алгоритмов или с помощью некоторых других наглядных представлений, но при этом нужно понимать, что блоки, устройства, системы, методы или способы, описанные в настоящем документе, могут быть реализованы, в качестве неограничивающих примеров, в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, схем или логики специального назначения, аппаратного обеспечения или контроллера общего назначения, или же иных вычислительных устройств, или некоторой их комбинации.
Варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения, исполняемого процессором данных мобильного устройства, например, процессорным элементом, или с помощью аппаратного обеспечения, или с помощью комбинации программного и аппаратного обеспечения. Также в этом отношении следует отметить, что любые блоки последовательностей логических операций, проиллюстрированные на чертежах, могут представлять собой шаги программы или взаимосвязанные логические схемы, блоки и функции, или комбинацию программных шагов и логических схем, блоков и функций. Программное обеспечение может храниться на таких физических носителях, как микросхемы памяти или блоки памяти, реализованные внутри процессора, магнитные носители, например, жесткий диск или гибкий диск, и оптические носители, например, DVD и их варианты для хранения данных, CD.
Различные варианты осуществления настоящего изобретения могут быть реализованы с помощью компьютерного программного кода, размещенного в памяти и обеспечивающего осуществление настоящего изобретения соответствующими устройствами. Например, терминальное устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным терминальным устройством. И также сетевое устройство может включать схемы и электронику для обработки, приема и передачи данных, компьютерный программный код и процессор, который, при исполнении этого компьютерного кода, обеспечивает реализацию элементов одного из вариантов осуществления настоящего изобретения данным сетевым устройством.
Память может относиться к любому типу, соответствующему локальному техническому окружению, при этом она может быть реализована с использованием любой подходящей технологии хранения данных, такой как запоминающие устройства на полупроводниках, магнитные запоминающие устройства и системы, оптические запоминающие устройства и системы, несъемная или съемная память. Процессоры данных могут относиться к любому типу, соответствующему локальному техническому окружению и могут включать одно или более из следующего: компьютеры общего назначения, компьютеры специального назначения, микропроцессоры, цифровые сигнальные процессоры (digital signal processors, DSP), процессоры на основе многоядерной архитектуры - в качестве неограничивающих примеров. Варианты осуществления настоящего изобретения могут применяться на практике в различных компонентах, например, в модулях интегральных схем. Процесс разработки интегральных схем, в целом, в высокой степени автоматизирован. Существуют сложные и мощные программные инструменты для преобразования проектов логического уровня в конструкции полупроводниковых схем, готовые для вытравливания и формирования на полупроводниковой подложке.
Программы, подобные поставляемой фирмой Synopsys, Inc (Маунтин-Вью, Калифорния) или фирмой Cadence Design (Сан-Хосе, Калифорния), осуществляют автоматическую разводку проводников и позиционирование компонентов на полупроводниковом кристалле с использованием общепринятых правил разработки, а также с использованием библиотек заранее сохраненных модулей проектов. По завершении разработки полупроводниковой схемы результирующая конструкция, в стандартизированном электронном формате (например, Opus, GDSII и т.п.) может быть передана на полупроводниковое производство для изготовления микросхемы.
В предшествующем изложении с помощью иллюстративных и неограничивающих примеров было обеспечено полное и информативное описание настоящего изобретения. Однако в свете предшествующего описания, рассматриваемого в сочетании с приложенными чертежами, специалистам в соответствующих областях техники могут быть очевидны различные модификации и доработки. Тем не менее, любые такие или аналогичные им модификации концепции настоящего изобретения все равно попадают в его рамки.
Далее будут приведены некоторые из примеров.
В соответствии с первым примером предложен способ, включающий:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием в упомянутом втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения способ включает задание диапазона действительных значений параметров.
В некоторых из вариантов осуществления настоящего изобретения способ включает:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора;
при этом способ включает определение действительности упомянутого первого набора параметров, если истинным является одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, и разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения способ включает также использование разности между идентификатором упомянутого второго набора параметров и идентификатором упомянутого первого набора параметров для определения, был ли кодирован третий набор параметров, который не был принят, между упомянутыми первым набором параметров и вторым набором параметров.
В некоторых из вариантов осуществления настоящего изобретения способ включает:
декодирование упомянутого второго набора параметров;
анализ, включает ли упомянутый второй набор параметров ссылку на упомянутый первый набор параметров, действительность которого не была определена.
В некоторых из вариантов осуществления настоящего изобретения способ включает:
буферизацию упомянутых первого набора параметров и второго набора параметров в буфер; и
пометку упомянутого первого набора параметров как неиспользуемого, если определено, что он не является действительным.
В соответствии со вторым примером предложен способ, включающий:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров к упомянутому первому набору параметров;
кодирование второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прикрепление к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прикрепление к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения способ включает задание действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения способ включает выбор идентификатора из упомянутого действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения способ включает:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора.
В некоторых из вариантов осуществления настоящего изобретения способ включает также назначение идентификатора упомянутого второго набора параметров отличающимся от идентификатора из упомянутого первого набора параметров, если было определено, что первый набор параметров является действительным.
В некоторых из вариантов осуществления настоящего изобретения способ включает:
разрешение ссылки из упомянутого второго набора параметров на упомянутый первый набор параметров, если было определено, что первый набор параметров является действительным.
В соответствии с третьим примером предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, выполнения упомянутым устройством по меньшей мере следующего:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема во упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также задание этим устройством действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
задание максимальной разности значений идентификаторов;
задание максимального значения идентификатора; и
определение действительности упомянутого первого набора параметров, если истинным является одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, и разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также использование этим устройством разности между идентификатором упомянутого второго набора параметров и идентификатором упомянутого первого набора параметров для определения, был ли кодирован третий набор параметров, который не был принят, между упомянутыми первым набором параметров и вторым набором параметров.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
декодирование упомянутого второго набора параметров; и
анализ, включает ли упомянутый второй набор параметров ссылку на упомянутый первый набор параметров, действительность которого не была определена.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
буферизация упомянутых первого набора параметров и второго набора параметров в буфер; и
пометка упомянутого первого набора параметров как неиспользуемого, если определено, что он не является действительным.
В соответствии с четвертым примером предложено устройство, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы, с помощью упомянутого по меньшей мере одного процессора, для обеспечения выполнения упомянутым устройством по меньшей мере следующего:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров к упомянутому первому набору параметров;
кодирование второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также задание этим устройством действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выбор этим устройством идентификатора из упомянутого действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также назначение этим устройством идентификатора упомянутого второго набора параметров отличающимся от идентификатора из упомянутого первого набора параметров, если было определено, что первый набор параметров является действительным.
В некоторых из вариантов осуществления настоящего изобретения устройство включает упомянутую по меньшей мере одну память с хранимым в ней кодом, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также разрешение этим устройством ссылки из упомянутого второго набора параметров на упомянутый первый набор параметров, если было определено, что первый набор параметров является действительным.
В соответствии с пятым примером предложен компьютерный программный продукт, включающий одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение устройством по меньшей мере следующего:
прием первого набора параметров; получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров; определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают по меньшей мере задание упомянутым устройством действительного диапазона значений параметров.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством по меньшей мере следующего:
задание максимальной разности значений идентификаторов;
задание максимального значения идентификатора; и
определение того, что упомянутый первый набор параметров является действительным, если истинно одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, и разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения способ включает также использование разности между идентификатором упомянутого второго набора параметров и идентификатором упомянутого первого набора параметров для определения, был ли кодирован третий набор параметров, который не был принят, между упомянутыми первым набором параметров и вторым набором параметров.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством по меньшей мере следующего:
декодирование упомянутого второго набора параметров;
анализ, включает ли упомянутый второй набор параметров ссылку на первый набор параметров, для которого не было определено, что он является действительным.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством по меньшей мере следующего:
буферизацию упомянутых первого набора параметров и второго набора параметров в буфер; и
пометку упомянутого первого набора параметров как неиспользуемого, если определено, что он не является действительным.
В соответствии с шестым примером предложен компьютерный программный продукт, включающий одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение устройством по меньшей мере следующего:
кодирование первого набора параметров;
прикрепление идентификатора упомянутого первого набора параметров;
кодирование второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают по меньшей мере задание упомянутым устройством действительного диапазона значений параметров.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают по меньшей мере выбор этим устройством идентификатора из упомянутого действительного диапазона значений идентификаторов.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством по меньшей мере следующего:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают по меньшей мере назначение этим устройством идентификатора упомянутого второго набора параметров отличающимся от идентификатора из упомянутого первого набора параметров, если было определено, что первый набор параметров является действительным.
В некоторых из вариантов осуществления настоящего изобретения упомянутый компьютерный программный продукт включает одну или более последовательностей из одной или более инструкции, которые при исполнении одним или более процессорами обеспечивают по меньшей мере разрешение этим устройством ссылки из упомянутого второго набора параметров на упомянутый первый набор параметров, если было определено, что первый набор параметров является действительным.
В соответствии с седьмым примером предложено устройство, включающее:
средства приема первого набора параметров;
средства получения идентификатора упомянутого первого набора параметров;
средства приема второго набора параметров;
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема в упомянутом втором наборе параметров идентификатора этого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с восьмым примером предложено устройство, включающее:
средства кодирования первого набора параметров;
средства прикрепления идентификатора упомянутого первого набора параметров;
средства кодирования второго набора параметров; и
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора этого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с девятым примером предложен видеодекодер, сконфигурированный:
для приема первого набора параметров;
для получения идентификатора упомянутого первого набора параметров;
для приема второго набора параметров;
для определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора упомянутого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
В соответствии с десятым примером предложен видеокодер, сконфигурированный:
для кодирования первого набора параметров;
для прикрепления идентификатора упомянутого первого набора параметров к упомянутому первому набору параметров; кодирование второго набора параметров;
для определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прикрепление к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прикрепление к упомянутому второму набору параметров идентификатора этого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
Изобретение относится к кодированию и декодированию данных. Техническим результатом является повышение устойчивости к ошибкам при видеокодировании. Способ содержит прием первого набора параметров; получение идентификатора упомянутого первого набора параметров; прием второго набора параметров; определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего: прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров; прием во втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров. 8 н. и 22 з.п. ф-лы, 10 ил.
1. Способ видеокодирования, включающий:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием во втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
2. Способ по п. 1, включающий также задание действительного диапазона значений идентификаторов.
3. Способ по п. 2, также включающий:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора;
при этом способ включает определение того, что первый набор параметров является действительным, если истинно одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, а разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
4. Способ по п. 2, также включающий:
декодирование ссылки на идентификатор из набора параметров, используемых при декодировании;
анализ, находится ли ссылка на идентификатор в действительном диапазоне значений идентификаторов.
5. Способ по п. 1, также включающий:
декодирование ссылки на идентификатор из упомянутого второго набора параметров, при этом данная ссылка на идентификатор должна использоваться при декодировании второго набора параметров.
6. Способ по п. 4 или 5, также включающий заключение о потере набора параметров на основе того, что ссылка на идентификатор находится вне действительного диапазона значений идентификаторов.
7. Способ по любому из пп. 1-5, также включающий:
буферизацию упомянутых первого набора параметров и второго набора параметров в буфер; и
пометку упомянутого первого набора параметров как неиспользуемого, если определено, что он не является действительным.
8. Способ декодирования кодированного битового видеопотока, включающий:
кодирование первого набора параметров;
предоставление идентификатора первого набора параметров в упомянутом первом наборе параметров;
кодирование второго набора параметров;
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- предоставление в упомянутом втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- предоставление в упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
9. Способ по п. 8, включающий также задание действительного диапазона значений идентификаторов.
10. Способ по п. 9, также включающий кодирование ссылки на идентификатор набора параметров для использования при декодировании, при этом упомянутую ссылку на идентификатор выбирают из действительного диапазона значений идентификаторов.
11. Способ по п. 8 или 9, также включающий:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора, при этом способ включает определение того, что первый набор параметров является действительным, если истинно одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, а разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
12. Устройство для видеокодирования, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, выполнения упомянутым устройством, по меньшей мере, следующего:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема в упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
13. Устройство по п. 12, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает задание этим устройством действительного диапазона значений идентификаторов.
14. Устройство по п. 13, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
задание максимальной разности значений идентификаторов;
задание максимального значения идентификатора; и
определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом действительном диапазоне значений параметров.
15. Устройство по п. 13, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение этим устройством следующего:
декодирование ссылки на идентификатор набора параметров для использования при декодировании;
анализ, находится ли ссылка на идентификатор в действительном диапазоне значений идентификаторов.
16. Устройство по п. 12, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством следующего:
декодирование ссылки на идентификатор из упомянутого второго набора параметров, при этом данная ссылка на идентификатор должна использоваться при декодировании второго набора параметров.
17. Устройство по п. 15 или 16, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение этим устройством следующего:
заключение о потере набора параметров на основе того, что ссылка на идентификатор находится вне действительного диапазона значений идентификаторов.
18. Устройство по любому из пп. 12-16, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение этим устройством следующего:
буферизация упомянутых первого набора параметров и второго набора параметров в буфер; и
пометка упомянутого первого набора параметров как неиспользуемого, если определено, что он не является действительным.
19. Устройство для декодирования кодированного битового видеопотока, включающее по меньшей мере один процессор и по меньшей мере одну память, которая содержит компьютерный программный код, при этом упомянутые по меньшей мере одна память и компьютерный программный код сконфигурированы для обеспечения, с помощью упомянутого по меньшей мере одного процессора, выполнения упомянутым устройством, по меньшей мере, следующего:
кодирование первого набора параметров;
прикрепление идентификатора первого набора параметров к упомянутому первому набору параметров;
кодирование второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора этого второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
20. Устройство по п. 19, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также задание этим устройством действительного диапазона значений идентификаторов.
21. Устройство по п. 20, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также кодирование этим устройством ссылки на идентификатор набора параметров для использования для декодирования и выбор упомянутой ссылки на идентификатор из действительного диапазона значений идентификаторов.
22. Устройство по п. 19 или 20, в котором упомянутая по меньшей мере одна память хранит код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение этим устройством следующего:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора, при этом устройство определяет, что первый набор параметров является действительным, если истинно одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, а разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
23. Машиночитаемый носитель, содержащий компьютерную программу для видеокодирования, включающую одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают выполнение устройством, по меньшей мере, следующего:
прием первого набора параметров;
получение идентификатора упомянутого первого набора параметров;
прием второго набора параметров; и определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- прием во втором наборе параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- прием в упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
24. Машиночитаемый носитель по п. 23, включающий одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают, по меньшей мере, задание упомянутым устройством действительного диапазона значений идентификаторов.
25. Машиночитаемый носитель по п. 23 или 24, включающий одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством, по меньшей мере, следующего:
задание максимальной разности значений идентификаторов;
задание максимального значения идентификатора; и
определение того, что упомянутый первый набор параметров является действительным, если истинно одно из следующих условий:
- идентификатор упомянутого второго набора параметров больше, чем идентификатор упомянутого первого набора параметров, и разность между идентификатором второго набора параметров и идентификатором первого набора параметров меньше или равна упомянутой максимальной разности значений идентификаторов;
- идентификатор упомянутого первого набора параметров больше, чем идентификатор упомянутого второго набора параметров, и идентификатор второго набора параметров меньше или равен упомянутой максимальной разности идентификаторов, и разность между идентификатором первого набора параметров и идентификатором второго набора параметров больше, чем разность между упомянутым максимальным значением идентификатора и упомянутой максимальной разностью значений идентификаторов.
26. Машиночитаемый носитель, содержащий компьютерную программу, включающую одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают выполнение устройством, по меньшей мере, следующего:
кодирование первого набора параметров;
прикрепление идентификатора упомянутого первого набора параметров;
кодирование второго набора параметров; и
определение действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора упомянутого первого набора параметров и идентификатора упомянутого второго набора параметров.
27. Машиночитаемый носитель по п. 26, включающий одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают, по меньшей мере, задание упомянутым устройством действительного диапазона значений идентификаторов.
28. Машиночитаемый носитель по п. 26 или 27, включающий одну или более последовательностей из одной или более инструкций, которые при исполнении одним или более процессорами обеспечивают выполнение упомянутым устройством, по меньшей мере, следующего:
задание максимальной разности значений идентификаторов; и
задание максимального значения идентификатора.
29. Устройство для видеокодирования, включающее:
средства приема первого набора параметров;
средства получения идентификатора упомянутого первого набора параметров;
средства приема второго набора параметров;
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи приема во втором наборе параметров списка действительных значений идентификаторов; и определение того, что первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи приема в упомянутом втором наборе параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора первого набора параметров и идентификатора второго набора параметров.
30. Устройство для декодирования кодированного битового видеопотока, включающее:
средства кодирования первого набора параметров;
средства прикрепления идентификатора упомянутого первого набора параметров;
средства кодирования второго набора параметров; и
средства определения действительности упомянутого первого набора параметров на основе по меньшей мере одного из следующего:
- при помощи прикрепления к упомянутому второму набору параметров списка действительных значений идентификаторов; и определение того, что упомянутый первый набор параметров является действительным, если идентификатор упомянутого первого набора параметров находится в упомянутом списке действительных значений параметров;
- при помощи прикрепления к упомянутому второму набору параметров идентификатора второго набора параметров; и определение того, что упомянутый первый набор параметров является действительным, на основе идентификатора первого набора параметров и идентификатора второго набора параметров.
US20080310500 A1, 18.12.2008 | |||
US20070201564 A1, 30.08.2007 | |||
US20050254526 A1, 17.11.2005 | |||
RU2007112113 A, 20.10.2008. |
Авторы
Даты
2016-05-20—Публикация
2013-04-16—Подача