КОДИРОВАНИЕ, ХРАНЕНИЕ И ПЕРЕДАЧА ИНФОРМАЦИИ О МАСШТАБИРУЕМОСТИ
ENCODING, STORAGE AND TRANSMISSION OF INFORMATION ON SCALABILITY

Область техники
Настоящее изобретение относится к кодеру, декодеру, устройству, способу, записи данных, модулю, компьютерному программному продукту и системе для кодирования, декодирования и хранения данных и передачи масштабируемого потока данных, включающего по меньшей мере два уровня масштабируемости.
Уровень техники
Мультимедийные приложения включают службы локального воспроизведения, потоковые или по требованию, диалоговые и вещательные/группового вещания. Совместимость важна для быстрого развертывания и формирования широкого рынка для каждого мультимедийного приложения. Для достижения высокой совместимости предложены различные стандарты.
Технологии, задействованные в мультимедийных приложениях, включают, помимо прочего, кодирование, хранение и передачу медиаданных. Типы медиаданных включают речь, звуки, изображение, видео, графику и текст в реальном времени. Для разных технологий были определены различные стандарты. Стандарты кодирования видеоданных включают ITU-T Н.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ISO/IEC MPEG-4 Visual, ITU-T H.264 или ISO/IEC MPEG-4 AVC (в настоящем документе сокращенно AVC, AVC/H.264 или H.264/AVC), и возможные будущие стандарты, например ISO/IEC MPEG-21 SVC, China AVS, ITU-T H.265, и ISO/IEC MPEG 3DAV.
Имеющиеся стандарты формата медиафайлов включают формат файлов Международной организации по стандартизации (ISO) (ISO/IEC 14496-12), формат файлов MPEG-4 (ISO/IEC 14496-14), формат файлов AVC (ISO/IEC 14496-15) и формат файлов Проекта "Партнерство 3-его поколения" (3GPP) (3GPP TS 26.244).
Стандарт 3GPP TS 26.140 определяет типы медиаданных, форматы и кодеки для служб передачи мультимедиа (MMS) внутри системы 3GPP. Стандарт 3GPP TS 26.234 определяет протоколы и кодеки для служб потоковой передачи данных с коммутацией пакетов (PSS, packet-switched streaming) внутри системы 3GPP. Действующий стандарт 3GPP TS 26.346 определяет протоколы и кодеки для служб широкого/группового мультимедиа вещания (MBMS, multimedia broadcast/multicast services) внутри системы 3GPP.
В типичных стандартах кодирования аудио и видеоданных определены "профили" и "уровни". "Профиль" - это поднабор алгоритмических признаков стандарта, а "уровень" - набор ограничений параметров кодирования, которые налагают ряд ограничений на потребляемые декодером ресурсы. Указанные профиль и уровень могут использоваться для сигнализации о характеристиках медиапотока и сигнализации о возможностей медиадекодера.
С помощью комбинации профиля и уровня декодер может декларировать, способен ли он декодировать поток, без попытки произвести декодирование, которая могла бы привести к сбою декодера, к замедлению работы по сравнению с работой в реальном времени, и/или к отбрасыванию данных вследствие переполнения буфера, если декодер не способен к декодирование потока. Каждая пара профиль-уровень образует "точку совместимости" (interoperability point)
Некоторые стандарты кодирования позволяют создавать масштабируемые потоки битов. Содержательное декодированное представление может быть получено декодированием только некоторой части масштабируемого потока битов. Масштабируемые потоки битов могут использоваться для адаптации скорости предварительно кодированных однонаправленных потоков в текущем сервере и для передачи одного потока битов в терминалы, имеющие различные функциональные возможности и/или различные состояния сети. Список других случаев использования масштабируемого кодирования видеоданных можно найти в изданном ISO/IEC JTC1 SC29 WG11 (MPEG) документе N6880, "Applications and Requirements for Scalable Video Coding", the 71th MPEG meeting, January 2005, Hong Kong, China.
Масштабируемые технологии кодирования включают обычные многоуровневые способы масштабируемого кодирования и кодирование с масштабированием степени детализации (FGS, fine granularity scalability). Обзор этих способов можно найти в статье Weiping Li под заглавием "Overview of fine granularity scalability in MPEG-4 video standard," IEEE Transactions on Circuits and Systems for Video Technology, vol. 11, no. 3, pp.301-317, March 2001.
Масштабируемое кодирование медиаданных является желательным для многих мультимедийных приложений и служб, которые используются в системах, где применяются декодеры с широким диапазоном мощностей обработки. Было предложено несколько типов схем масштабируемости видеоданных, например временная, пространственная и качественная масштабируемость. Эти предложенные типы включают базовый уровень и уровни расширения. Базовый уровень - это минимальное количество данных, необходимых для декодирования потока медиаданных, тогда как уровень расширения - это дополнительные данные, необходимые для воспроизведения улучшенного видеосигнала.
Рабочая версия масштабируемого расширения до H.264/AVC в настоящее время позволяет кодировать множество масштабируемых уровней. Эта рабочая версия описана в работе JVT-N020, "Scalable video coding - working draft 1," 14th meeting, Hong Kong, Jan 2005, и известна также как документ MPEG w6901, 'Working Draft 1.0 of 14496-10:200x/AMD1 Scalable Video Coding," Hong Kong meeting, January 2005. При таком кодировании множества масштабируемых уровней переменная DependencylD (идентификатор зависимости), передаваемая в потоке битов, используется для указания зависимостей кодирования различных масштабируемых уровней.
Масштабируемый поток битов содержит по меньшей мере два уровня масштабируемости: базовый уровень и один или несколько уровней расширения. Если один масштабируемый поток битов содержит больше одного уровня масштабируемости, тогда он имеет в точности такое же количество альтернатив для декодирования и воспроизведения. Каждый уровень является альтернативой декодирования. Уровень 0, базовый уровень, является первой альтернативой декодирования. Уровень 1, первый уровень расширения, является второй альтернативой декодирования. Этот порядок справедлив и для последующих уровней. Как правило, более низкий уровень содержится в более высоких уровнях. Например, уровень 0 содержится в уровне 1, а уровень 1 содержится в уровне 2.
Каждый уровень характеризуется набором, состоящим по меньшей мере из одной характеристики, например информации о масштабируемости степени детализации (FGS), информации о масштабируемости зоны интереса (ROI, Region-of-interest), информации о масштабируемом уровне субсэмпла, информации о зависимостях декодирования, и набора начальных параметров, который могут отличаться от характеристики всего потока.
В известных системах невозможно передать непосредственно в потоке битов, в формате файла или посредством протокола передачи следующую информацию о масштабируемости для конкретного уровня масштабируемого потока битов: информацию о степени детализации (FGS), информацию о масштабируемости зоны интереса (ROI), информацию о масштабируемом уровне субсэмпла или субизображения, информацию о зависимостях декодирования и наборы начальных параметров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение обеспечивает кодирование, декодирование, хранение и передачу масштабируемого потока битов, когда имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и набор начальных параметров, - которая может отличаться от характеристики для всего потока, причем об указанном наборе, включающем по меньшей мере одну характеристику, сигнализируют по меньшей мере для одного уровня, который отличается от всего потока, при этом сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, может происходить в указанном масштабируемом потоке битов, в контейнере файлового формата, содержащем указанный масштабируемый поток битов, или в протоколе передачи или управления для передачи или управления по меньшей мере для одного уровня указанного масштабируемого потока битов. Согласно настоящему изобретению сервер или клиент не должен анализировать информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и набор начальных параметров для каждого уровня потока путем проверки потока битов, что снижает сложность вычислений. Для устройств, которые не способны анализировать характеристики уровня из потока битов, например, когда требуется информация ROI, но она недоступна, при использовании настоящего изобретения удается избежать введения субблоков.
В одном примере выполнения настоящего изобретения раскрыты способ и устройство для кодирования масштабируемого потока данных, включающего уровни, имеющие различные характеристики кодирования. Способ включает: создание одного или нескольких уровней масштабируемого потока данных, причем уровни характеризуются характеристикой кодирования, которая отличается от характеристики кодирования масштабируемого потока данных, и сигнализацию об уровнях с помощью характеристики кодирования так, что они могут быть считаны декодером без необходимости декодирования всех уровней.
В другом примере выполнения настоящего изобретения раскрыты способ и устройство для кодирования масштабируемого потока битов, где имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока, причем об указанном наборе, включающем по меньшей мере одну характеристику, сигнализируется по меньшей мере для одного уровня, который отличается от всего потока, причем сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, происходит в указанном масштабируемом потоке битов. Способ включает: создание масштабируемого потока битов, включающего по меньшей мере два уровня, где каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информации масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока, и передачу в указанном масштабируемом потоке битов указанного набора, включающего по меньшей мере одну характеристику, по меньшей мере для одного уровня, которая отличается от всего потока, в результате чего указанный набор, включающий по меньшей мере одну характеристику, может быть считан без необходимости анализа указанного набора, включающего по меньшей мере одну характеристику, или без попытки декодирования уровня указанного масштабируемого потока битов, если нет уверенности, что устройство сможет декодировать уровень, что могло бы привести к сбою устройства.
Другим примером выполнения настоящего изобретения является способ и устройство для анализа масштабируемого потока битов, когда имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информации масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока. Способ включает: анализ указанного набора, включающего по меньшей мере одну характеристику, так что об указанном наборе, включающем по меньшей мере одну характеристику, можно сигнализировать в указанном масштабируемом потоке битов, в контейнере файлового формата, содержащем указанный масштабируемый поток битов, или в протоколе передачи или управления с целью передачи или управления по меньшей мере одним уровнем указанного масштабируемого потока битов.
В еще одном примере выполнения настоящего изобретения раскрыты способ и устройство для преобразования масштабируемого потока битов, когда имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики для всего потока, причем об указанном наборе, включающем по меньшей мере одну характеристику, сигнализируется по меньшей мере для одного уровня, который отличается от всего потока, причем сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, может происходить в указанном масштабируемом потоке битов, в контейнере файлового формата, содержащем указанный масштабируемый поток битов, или в протоколе передачи или управления для передачи или управления по меньшей мере одним уровнем указанного масштабируемого потока битов. Способ включает: создание немасштабируемого потока битов, содержащего базовый уровень указанного масштабируемого потока битов, и создание второго масштабируемого потока битов, содержащего уровень расширения указанного масштабируемого потока битов.
В еще одном примере выполнения настоящего изобретения раскрыты способ и устройство для декодирования масштабируемого потока битов, где имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока, причем об указанном наборе, включающем по меньшей мере одну характеристику, сигнализируют по меньшей мере для одного уровня, который отличается от всего потока, причем сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, может происходить в указанном масштабируемом потоке битов, в контейнере файлового формата, содержащем указанный масштабируемый поток битов, или в протоколе передачи или управления для передачи или управления по меньшей мере одним уровнем указанного масштабируемого потока битов. Устройство включает: первый компонент, предназначенный для приема указанного масштабируемого потока битов, второй компонент, предназначенный для идентификации по меньшей мере одного уровня в указанном масштабируемом потоке битов и считывания указанного набора, включающего по меньшей мере одну характеристику, по меньшей мере для одного уровня, третий компонент, предназначенный для определения, способен ли декодер декодировать указанный по меньшей мере один уровень, на основе указанного набора, включающего по меньшей мере одну характеристику, и четвертый компонент, предназначенный для декодирования указанного по меньшей мере одного уровня, если третий компонент решил, что декодер способен декодировать указанный по меньшей мере один уровень.
В еще одном примере выполнения настоящего изобретения раскрыты способ и устройство для хранения масштабируемого потока битов, где имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока. Способ включает: анализ, передана ли указанная по меньшей мере одна характеристика в указанном масштабируемом потоке битов, и хранение указанной по меньшей мере одной характеристики и указанного масштабируемого потока битов с указанной по меньшей мере одной характеристикой в потоке битов или без него в контейнере файлового формата, соответствующем спецификации файлового формата.
В еще одном примере выполнения настоящего изобретения раскрыты способ и устройство для передачи по меньшей мере одного уровня масштабируемого потока битов, где имеются по меньшей мере два уровня масштабируемости и каждый уровень характеризуется набором, включающим по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - которая может отличаться от характеристики всего потока, причем об указанном наборе, включающем по меньшей мере одну характеристику, сигнализируют по меньшей мере для одного уровня, который отличается от всего потока, причем сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, может происходить в указанном масштабируемом потоке битов. Устройство включает: первый компонент, предназначенный для того, чтобы сделать имеющуюся информацию об имеющихся уровнях или альтернативах доступной для декодирования и воспроизведения набору приемников, включающему по меньшей мере один приемник, причем приемники могут быть сгруппированы по меньшей мере в одну группу приемников, а каждая группа приемников включает по меньшей мере один приемник; второй компонент, предназначенный для принятия решения о том, чтобы по меньшей мере один уровень из указанных имеющихся уровней обслуживал приемник или группу приемников согласно запросу и/или информации об указанном приемнике или группе приемников, и третий компонент, предназначенный для передачи и управления указанным по меньшей мере одним уровнем в указанном приемнике или группе приемников.
По сравнению с предыдущими техническими решениями предложенное решение является более полным в том смысле, что дополнительно включены следующие типы информации о масштабируемости: информация о масштабируемости зоны интереса (ROI); буферная информация; информация о масштабируемости степени детализации (FGS); информация о масштабируемом уровне субсэмпла; информация о зависимостях декодирования; наборы начальных параметров.
Другие особенности и преимущества настоящего изобретения станут очевидными специалистам в данной области техники из последующего подробного описания. Однако должно быть понятно, что подробное описание и конкретные примеры, хотя и описывают предпочтительные варианты выполнения настоящего изобретения, даются только для иллюстрации и не являются ограничениями. В рамках настоящего изобретения возможны многочисленные изменения и модификации без отхода от изобретения, которое охватывает все такие модификации.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Описанные выше преимущества и особенности изобретения станут очевидными из последующего описания со ссылками на сопровождающие чертежи, где:
на фиг.1 показана блок-схема, иллюстрирующая систему, в которой может быть реализовано настоящее изобретение;
на фиг.2 изображена диаграмма, иллюстрирующая передачу информации по меньшей мере об одной характеристике масштабируемого потока битов в одном из примеров выполнения настоящего изобретения;
на фиг.3 показана блок-схема кодера в одном из примеров выполнения настоящего изобретения;
на фиг.4 показана блок-схема преобразователя в одном из примеров выполнения настоящего изобретения; и
на фиг.5 показана блок-схема декодера в одном из примеров выполнения настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРИМЕРОВ ВЫПОЛНЕНИЯ ИЗОБРЕТЕНИЯ
В одном из примеров настоящее изобретение решает задачи, описанные выше, путем передачи набора, включающего по меньшей мере одну характеристику, например: информацию FGS, информацию о масштабируемости ROI, информацию о масштабируемом уровне субсэмпла, информацию о зависимостях декодирования и наборы начальных параметров, - для уровня масштабируемого потока битов, которая может отличаться от характеристики всего потока. Сигнализация об указанном наборе, включающем по меньшей мере одну характеристику, может находиться в указанном масштабируемом потоке битов, в контейнере файлового формата, содержащем указанный масштабируемый поток битов, или в протоколе передачи или управления передачей или протоколе управления по меньшей мере одного уровня указанного масштабируемого потока битов.
Технологии, включенные в мультимедийные приложения, включают, помимо прочего, кодирование, хранение и передачу медиаданных. Типы медиаданных включают речь, звуки, изображение, видео, графику и текст в реальном времени. Хотя ниже в качестве примера реализации настоящего изобретения описано кодирование видеоданных, изобретение этим не ограничено. Специалистам в данной области техники понятно, что настоящее изобретение может использоваться со всеми видами медиаданных, а не только с видеоданными.
На фиг.2 в одном из примеров выполнения настоящего изобретения иллюстрируется сигнализация о наборе информации, включающем по меньшей мере информацию об одной характеристике для каждого уровня масштабируемого потока 200 битов. Каждый уровень масштабируемого потока битов характеризуется набором, включающим по меньшей мере информацию об одной характеристике, которую передают для этого уровня, что позволяет выбрать уровень для декодировании или передачи согласно набору, включающему информацию по меньшей мере об одной характеристике. Такие характеристики могут храниться в заголовке 204. Множество уровней 202 представляют собой множество уровней в масштабируемом потоке битов.
В первом примере использования настоящего изобретения масштабируемый поток битов кодируется и хранится на сервере потока. Набор, включающий информацию по меньшей мере об одной характеристике, например информацию о степени детализации, информацию о масштабируемости зоны интереса, информацию о масштабируемом уровне субсэмпла или субизображения, информацию о зависимостях декодирования и наборы начальных параметров для каждого уровня, - передается в хранимый файл. При описании доступного сеанса связи сервер может создать протокол описания сессии (SDP, Session Description Protocol) для каждого уровня или альтернативы для масштабируемого потока битов в том же самом файле, чтобы клиент потока смог понять, имеется ли идеальный уровень, и выбрать идеальный уровень для воспроизведения потока согласно описаниям SDP. Если сервер не обладает предшествующим знанием о функциональных возможностях приемника, предпочтительно создать множество описаний SDP на основе одного и того же содержания, в этом случае такие описания называются альтернативами. Затем клиент может выбрать то описание, которое наилучшим образом удовлетворяет его функциональным возможностям.
Во втором примере использования настоящего изобретения поток, например описанный в первом примере, представляет собой широковещание или групповое вещание на множество терминалов. Сервер группового вещания/широковещания может декларировать все имеющиеся уровни или альтернативы декодирования и воспроизведения, каждый из которых характеризуется комбинацией информации о степени детализации, информации о масштабируемости зоны интереса, информации о масштабируемом уровне субсэмпла или субизображения, информации о зависимостях декодирования и набора начальных параметров. Затем клиент может узнать из декларации о сеансе вещания/группового вещания, имеется ли для него идеальный уровень, и выбрать идеальный уровень для воспроизведения.
В третьем примере использования настоящего изобретения для приложений локального воспроизведения, хотя весь передаваемый поток не может быть декодирован, все еще оказывается возможным декодировать и воспринимать часть потока.
На фиг.3 показана блок-схема кодера в примере выполнения настоящего изобретения. Кодер 304 принимает поток 302 исходных данных. Поток данных кодируется, и кодер 306 масштабируемых данных кодера 304 создает один или несколько уровней. Затем компонент 308 сигнализации сигнализирует об этих уровнях. О некоторых из уровней, возможно, уже сигнализировал кодер 306 масштабируемых данных, и компонент сигнализации проверяет такие появления. Поток 310 данных, указывающих на характеристику кодирования, выходит из кодера 304, что позволяет приемному устройству (MMSC или декодеру) считывать сигналы для определения характеристик кодирования для уровней потока данных.
На фиг.4 показана блок-схема преобразователя в примере выполнения настоящего изобретения. Преобразователь 404 принимает поток 402 масштабируемых данных в приемнике 406. Приемник 406 считывает также индикаторы характеристик кодирования, связанные с уровнями полученного потока данных. Средство 410 сравнения характеристик кодирования сравнивает индикаторы характеристик кодирования с уже известными параметрами декодера или сети, для которых предназначен этот поток данных. С помощью этого сравнения он определяет, какие именно уровни сможет декодировать целевое устройство. Затем поток данных модифицируется в модификаторе 412 потока данных с тем, чтобы сделать поток данных декодируемым для целевого устройства. Это может включать удаление из потока данных тех уровней, которые, как было определено в элементе 410, не могут быть декодированы целевым устройством. Затем модифицированный поток данных передается передатчиком 414. Модифицированный поток данных 416 выдается из преобразователя 404 в приемное устройство (MMSC или декодер).
На фиг.5 показана схема, иллюстрирующая декодер в примере выполнения настоящего изобретения. Декодер 504 принимает поток 502 данных с характеристикой кодирования в приемнике 506. Идентификатор 510 характеристики кодирования идентифицирует один или несколько уровней в принятом потоке данных и соответствующие характеристики кодирования. На основе характеристики кодирования по меньшей мере одного из уровней верификатор 512 возможностей декодера определяет, способен ли декодер декодировать этот уровень. Если это так, он позволяет компоненту 514 декодирования продолжить декодирование этого уровня потока данных. В противном случае он запрещает компоненту 514 декодирования пытаться декодировать уровень, что позволяет избежать возможного сбоя декодера. На фиг.5 показано, что поток 516 декодированных данных выходит из декодера 504.
Сигнализация в потоке битов
Предпочтительно сигнализировать о характеристиках уровня на уровне последовательности или группы изображений (GOP, group of pictures), например посредством последовательности или заголовков GOP, набора параметров последовательности, сообщений с дополнительной информацией о расширении (SEI, Supplemental Enhancement Information), пользовательских данных и другого синтаксиса для уровня последовательности.
В стандарте JSVM 1.0 (JVT-N023) информация о масштабируемости SEI определена с целью помочь экстрактору потока битов анализировать характеристики масштабируемости потока битов. Информация SEI, как она определена в JSVM 1.0, может быть слишком специфической для текущей реализации SVC в эталонном программном обеспечении JSVM. Ниже предложен новый синтаксис для информации SEI масштабируемости, который обеспечивает следующие операции на системном уровне без синтаксического разбора и анализа в любом кодированном блоке NAL слайса (с единственным исключением для масштабируемости области интереса на основе масштабируемых уровней субизображения).
- Синтезатор файлового формата записывает в файл медиаданные с информацией о масштабируемости.
- Сервер потока предлагает для приемников все возможные точки масштабируемого представления.
- Экстрактор потока битов извлекает любую желательную точку масштабируемого представления.
- Сетевой элемент для работы с медиаданными (например шлюз) решает, какие блоки NAL следует отбросить (а следовательно, не передавать) для желательной точки масштабируемого представления.
Новый синтаксис приведен в таблице 1 и описан ниже. Конечно, специалистам в данной области техники очевидно, что возможны и другие способы сигнализации, и изобретение не ограничено конкретным способом сигнализации. Категории (помеченные в Таблице 1 как С) определяют разбиение данных слайса самое большее на три сегмента, а дескрипторы определяют процесс синтаксического разбора для каждого элемента синтаксиса. Категории и дескрипторы раскрыты в вышеуказанном документе "Working Draft 1.0 of 14496-10:200x/AMD1 Scalable Video Coding".
Таблица 1
scalabiiity_info(payloadSize) {
С
Дескриптор
num_layers_minus1
5
ue(v)
for (i=0; i<=num_layers_minus1; i++) {
fgs_layer_flag[i]
5
u(1)
sub_piс_layer_flag[i]
5
u(1)
sub_region_layer_flag[i]
5
u(1)
profile_level_info_present_flag[i]
5
u(1)
decoding_dependency_info_present_flag[i]
5
u(1)
bitrate_info_present_flag[i]
5
u(1)
frm_rate_info_present_flag[i]
5
u(1)
frm_size_info_present_flag[i]
5
u(1)
layer_dependency_info_present_flag[i]
5
u(1)
init_parameter_sets_info_present_flag[i]
5
u(1)
if (profile_level_info_present_flag[i]) {
layer_profile_idc[i]
5
u(8)
layer_constraint_set0_flag[i]
5
u(1)
layer_constraint_setl_fiag[i]
5
u(1)
layer_constraint_set2_flag[i]
5
u(1)
layer_constraint_set3_flag[i]
5
u(1)
reserved_zero_4bits /* equalto 0 */
5
u(4)
layer_level_idc[i]
5
u(8)
}
if (decoding_dependency_info_present_flag[i]) {
dependency_id[i]
5
u(3)
temporal_level[i]
5
u(3)
}
if (bitrate_info_present_flag[i]) {
avg_bitrate[i]
5
u(16)
max_bitrate[i]
5
u(16)
}
if (frm_rate_info_present_flag[i]) {
constant_frm_rate_idc[i]
5
u(2)
avg_frm_rate[i]
5
u(16)
}
if (frm_size_info_present_flag[i]) {
frm_width_in_mbs_minus1[i]
5
ue(v)
frm_height_in_mbs_ininus1[i]
5
ue(v)
}
if (sub_region_layer_flag[ij) {
horizontal_offset[i]
5
u(16)
vertlcial_offset[i]
5
u(16)
region_width[i]
5
u(16)
region_height[i]
5
u(16)
}
if (layer_depdendency_info_present_flag(i) {
num_directly_dependent_leyers[i]
5
ue(v)
for (j=0; j<num_directly_dependent_layers[i]; J++)
directly_dependent_layer_id_delta[i][j]
5
ue(v)
}
if (init_parameter_sets_info_present_flaq[i]) (
num_init_seq_parameter_set_minus1[i]
5
ue(v)
for (j=0; j<=num_seq_parameter_set_minus1 [i]; J++)
init_seq_parameter_set_iddelta[i][j]
5
ue(v)
num_init_pie_parameter_set_minus1[i]
5
ue(v)
for (j=0; j<=num_pie_parameter_set_minus1 [i]; J++)
init_pie_parameter_set_id_delta[i][j]
5
ue(v)
}
}
Семантика определена следующим образом. Это сообщение SEI, когда оно имеется, должно появиться в блоке доступа IDR. Семантика сообщения действительна до следующего сообщения SEI того же типа.
num_layers_minus1+1 указывает количество масштабируемых уровней или точек представления, поддержанных потоком битов. Значение num_layers_minus1 лежит в пределах от 0 до 255 включительно.
Каждый масштабируемый уровень ассоциирован с идентификатором уровня. Назначение идентификатора уровня происходит следующим образом. Большее значение идентификатора соответствует более высокому уровню. Значение 0 обозначает самый низкий уровень. Декодирование и представление уровня не зависят от любого более высокого уровня, но могут зависеть от более низкого уровня. Поэтому самый низкий уровень можно декодировать и представлять независимо; декодирование и представление уровня 1 может зависеть от уровня 0, декодирование и представление уровня 2 может зависеть от уровней 0 и 1 и т.д. Представление масштабируемого уровня требует присутствия самого масштабируемого уровня и всех более низких уровней, от которых масштабируемый уровень зависит прямо или косвенно. В последующем описании масштабируемый уровень и все более низкие уровни, от которых масштабируемый уровень зависит прямо или косвенно, вместе называются представлением масштабируемого уровня.
Сигнализация об отображении каждого кодированного изображения на масштабируемый уровень производится посредством сообщения с информацией SEI субпоследовательности.
Значение флага fgs_layer_flag[i]=1 указывает, что масштабируемый уровень с идентификатором i уровня представляет собой уровень масштабирования степени детализации (FGS). Значение 0 указывает, что масштабируемый уровень не является уровнем FGS. Кодированный слайс блоков NAL уровня FGS может быть усечен в любой выровненной по байтам позиции.
Поскольку усечение и передача заголовка блока NAL и заголовка слайса FGS не приводит к повышению качества, может потребоваться включить размер заголовка блока NAL и заголовка слайса для каждого слайса FGS и минимальной значимой скорости передачи данных для каждого уровня FGS как в формате потока битов, так и в формате файла, чтобы сетевые элементы, не предназначенные для работы с медиаданными, могли осуществлять масштабирование степени детализации (FGS).
Значение флага sub_pic_layer_flag[i]=1 указывает, что масштабируемый уровень с идентификатором i уровня состоит из субизображений, каждое субизображение состоит из поднабора кодированных слайсов блока доступа. Значение 0 указывает, что масштабируемый уровень состоит из полных блоков доступа.
Сигнализация об отображении каждого субизображения кодированного изображения на масштабируемый уровень может производиться посредством сообщения с информацией SEI об уровне субизображения.
Значение флага sub_region_layer_flag[i]=1 указывает, что масштабируемый уровень с идентификатором i уровня представляет собой подобласть всей области, представленной всем потоком битов. Значение 0 указывает, что масштабируемый уровень представляет всю область, представленную всем потоком битов.
Значение флага profile_level_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о профиле и уровне для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о профиле и уровне для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага decoding_dependency_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о зависимостях декодирования для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о зависимостях декодирования для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага bitrate_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о скорости передачи данных для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о скорости передачи данных для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага frm_rate_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о скорости кадров для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о скорости кадров для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага frm_size_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о размере кадров для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о размере кадров для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага layer_dependency__info_present_flag[ij=1 указывает на наличие в сообщении SEI информации о зависимости уровня для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о зависимости уровня для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Значение флага init_parameter_sets_info_present_flag[i]=1 указывает на наличие в сообщении SEI информации о наборе начальных параметров для масштабируемого уровня с идентификатором уровня, равным i. Значение 0 указывает, что информация о наборе начальных параметров для масштабируемого уровня с идентификатором уровня, равным i, в сообщении SEI отсутствует.
Наборы начальных параметров - это те наборы параметров, которые могут быть переданы в начале сеанса связи.
Компоненты сообщения layer_profile_idc [i],
layer_constraint_set0_flag[i], layer_constraint_set1_flag[i], Iayer_constraint_set2_flag[i], layer_constraint_set3__flag[i], и layer_level_idc [i] индицируют согласование профиля и уровня в потоке битов представления масштабируемого уровня с идентификатором уровня, равным i. Семантика layer_profile_idc [i],
layer constraint_set0_flag[ij, layer_constraint set1 flag[i], layer_constraint_set2_flag[i], layer_constraint_set3_flag[i] и layer_level_idc[i] идентична семантике profileidc,
сonstraint set0 flag, constraint_set1_flag, constraint_set2_flag, constraint__set2_flag И level_idc соответственно, если только целевой поток битов не является потоком битов представления масштабируемого уровня.
dependency_id[i] И temporal_level[i] равны Dependencyld И TemproalLevel соответственно блоков NAL в масштабируемом уровне с идентификатором уровня, равным i.
avg_bitrate [i] указывает среднюю скорость передачи данных в единицах 1000 бит в секунду в потоке битов представления масштабируемого уровня с идентификатором уровня, равным i. Семантика avg_bitrate [i] идентична семантике average_bit_rate в характеристиках уровня субпоследовательности в сообщении SEI, если флаг accurate_statistics_flag равен 1, если только здесь целевой поток битов не является потоком битов представления масштабируемого уровня.
max_bitrate [i] указывает максимальную скорость передачи данных в единицах 1000 бит в секунду в потоке битов представления масштабируемого уровня с идентификатором уровня, равным [i], в любом временном окне времени удаления блока доступа шириной 1 секунда.
constant_frm_rate_idc[i] указывает, является ли константой скорость кадров представления масштабируемого уровня с идентификатором уровня, равным i. Если величина avg_frm_rate, определенная ниже, является константой, какую бы временную секцию масштабируемого представления уровня не взять для вычисления, то скорость кадров является константой, а в противном случае скорость кадров не является константой. Значение 0 означает непостоянную скорость кадров, значение 1 означает постоянную скорость кадров, а значение 2 означает, что не ясно, является ли скорость кадров константой или нет.Значение constantFrameRate находится в диапазоне от 0 до 2 включительно.
avg_frm_rate[i] указывает среднюю скорость кадров, в единицах кадров в секунду, в потоке битов представления масштабируемого уровня с идентификатором уровня, равным [i]. Семантика avg_frm_rate [i] идентична семантике average_frame_rate в характеристиках сообщения SEI для уровня субпоследовательности, когда accurate_statistics_flag=1, если только здесь целевой поток битов не является потоком битов представления масштабируемого уровня.
Значение frm_width_in_mbs_minus1 [i]+1 указывает максимальную ширину, в макроблоках, кодированного кадра в представлении масштабируемого уровня с идентификатором уровня, равным [i].
Значение frm_height_in_mbs_minus1 [i]+1 указывает максимальную высоту, в макроблоках, кодированного кадра в представлении масштабируемого уровня с идентификатором уровня, равным [i].
horizontal_offset [i] и verticial_offset [i] дают горизонтальное и вертикальное смещения соответственно верхнего левого пикселя в прямоугольной области, представленной отображением масштабируемого уровня с идентификатором уровня, равным [i], относительно левого верхнего пикселя полной области, представленной всем потоком битов. Блок состоит из отсчетов яркости в масштабе, соответствующем наивысшему пространственному разрешению.
region_width [i] и region_height[i] дают ширину и высоту соответственно прямоугольной области, представленной отображением масштабируемого уровня с идентификатором уровня, равным [i], в отсчетах яркости, в масштабе, соответствующем наивысшему пространственному разрешению.
num_directly_dependent_layers [i] указывает количество масштабируемых уровней, от которых непосредственно зависит масштабируемый уровень с идентификатором уровня, равным [i]. Значение num_directly_dependent_layers лежит в Пределах ОТ 0 до 255 включительно.
directly_dependent_layer_id_delta [i] [j] указывает разность между идентификатором уровня j-го масштабируемого уровня, от которого непосредственно зависит масштабируемый уровень с идентификатором уровня, равным i, и i. Идентификатор уровня непосредственно зависимого масштабируемого уровня равен (directly_dependent_layer_id_delta+i).
num_init_seq_parameter_set_minusl[i]+1 указывает количество наборов начальных параметров последовательности для декодирования представления масштабируемого уровня с идентификатором уровня, равным [i]
init_seq_parameter_set_id_deita[i][j] указывает значение seq_parameter_set_id для j-го набора начальных параметров последовательности для декодирования представления масштабируемого уровня с идентификатором уровня, равным [i], если j равен 0. Если j больше 0, init_seq_parameter_set_id_delta [i] [j] указывает разность между значением seq_parameter_set_id для j-го набора начальных параметров последовательности и значением seq_parameter_set_id для (j-1)-го набора начальных параметров последовательности. Наборы начальных параметров последовательности упорядочены логически в порядке возрастания значения seq_parameter_set_id.
Для сигнализации об отображении блоков доступа на масштабируемые уровни используется сообщение SEI с информацией субпоследовательности. Значение sub_seq_layer_num в сообщение SEI с информацией субпоследовательности указывает идентификатор уровня для масштабируемого уровня, к которому принадлежит текущий блок доступа.
Для отображения субизображений на масштабируемые уровни определено новое сообщение SEI, как показано в Таблице 2.
Эта структура проста, но для идентификации принадлежности слайса к набору групп слайсов с ограниченным движением необходим структурный анализ набора параметров изображения и слайсов. Альтернативно, для сигнализации об идентификаторе уровня можно создать SEI на уровне субизображения.
Таблица 2
sub_pie_layer_info (payloadSize) {
С
Дескриптор
layerid
5
ue(v)
}
Когда сообщение SEI имеется, оно должно появляться в той же полезной нагрузке SEI, которая содержит сообщение SEI о наборе групп слайсов с ограниченным движением и ближайшее последующее сообщение SEI о наборе групп слайсов с ограниченным движением в порядке декодирования. Набор групп слайсов, идентифицированный в соответствии с сообщением SEI о наборе групп слайсов с ограниченным движением, называют ассоциированным набором групп слайсов сообщения SEI с информацией об уровне субизображения.
layer_id указывает идентификатор уровня для масштабируемого уровня, к которому принадлежат блоки NAL кодированных слайсов в ассоциированном наборе групп слайсов.
В другом примере поддержка сигнализации может быть достигнута следующим способом с использованием набора параметров последовательности и заголовка блока NAL или заголовка слайса.
Сигнализация в файловом формате
Сигнальная информация может не присутствовать в потоке битов по одной из следующих причин: 1) сигнализация не поддерживается техническими средствами или стандартом кодирования, 2) сигнализация поддерживается, но не присутствует, 3) технические требования файлового формата не позволяют включать небольшое количество информации в поток битов, содержащийся в контейнере файлового формата, например, технические требования файлового формата AVC не позволяют включать три вида сообщений SEI субпоследовательности в поток битов, хранимых на медиадорожках.
Поэтому важно поддерживать сигнализацию об информации в файловом формате. Фактически, даже если эта информация присутствует в потоке битов, иметь информацию, доступную в файловом формате, полезно для тех серверов, которые не зависят от формата кодирования медиаданных.
Представленные ниже структуры масштабируемости предназначены для использования для всех типов масштабируемых потоков видеоданных, а следовательно, их можно рассматривать как расширение базового файлового формата ISO для медиаданных. Для идентификации файлов может использоваться метка 'svc1', указывающая, что в файле используется это расширение.
Для поддержки сигнализации файл ISO должен не содержать вообще или содержать только один экземпляр SampleToGroupBox (на дорожку), причем параметр grouping_type должен быть равен "self. Этот экземпляр SampleToGroupBox отображает каждый сэмпл на один или несколько масштабируемых уровней. Информация о масштабируемости для каждого масштабируемого уровня хранится в соответствующем входе (ScalabilitylnfoEntry) описания группы сэмплов, который включен в SampleGroupDescriptionBox группового типа 'scif. Информация о масштабируемости включает идентификатор уровня, профиль и уровень, скорость передачи данных, скорость кадров, параметры буфера и информацию о зависимости.
И вновь каждому масштабируемому уровню сопоставлен идентификатор уровня. Назначение идентификатора уровня происходит следующим образом. Большее значение идентификатора уровня указывает на более высокий уровень. Значение 0 соответствует самому низкому уровню. Декодирование и индикация уровня не зависят от какого-либо более высокого уровня, но могут зависеть от более низкого уровня. Поэтому самый низкий уровень может быть декодирован и представлен независимо, декодирование и представление уровня 1 может зависеть от уровня 0, декодирование и представление уровня 2 может зависеть от уровней 0 и 1 и так далее. Представление масштабируемого уровня требует присутствия непосредственно этого масштабируемого уровня и всех более низких уровней, от которых прямо или косвенно зависит этот масштабируемый уровень. Ниже масштабируемый уровень и все более низкие уровни, от которых этот масштабируемый уровень зависит прямо или косвенно, вместе называются представлением масштабируемого уровня.
Синтаксис расширения базового формата ISO медиаданных может быть следующим. ScalabilitylnfoEntry включает ProfileLevelBox, BitRateBox, FrameRateBox, FrameSizeBox, RectRegionBox, BufferingBox и LayerDependencyBox. Определения этих блоков представлены в Таблицах 3 и 4:
Таблица 3
Типы блоков: 'pflv', 'bitr', 'frmr', 'fmsz', 'rrgn', 'buff', 'Idep'
Контейнер: ScalableLayerEntry или Другие структуры данных
Обязательный: Нет
Количество: 0 или 1
ProfileLevelBox содержит профиль и уровень, с которым совместимо представление масштабируемого уровня, BitRateBox содержит информацию о скорости передачи данных, FrameRateBox содержит информацию о скорости кадров, FrameSizeBox содержит информацию о пространственном разрешении, BufferingBox содержит информацию о буфере, LayerDependencyBox содержит уровни, от которых зависит масштабируемый уровень. Среди различных блоков BufferingBox представляет собой абстрактный блок, файловый формат, полученный из базового файлового формата ISO для медиаданных, должен определить структуру информации для буфера данных согласно модели буфера, определенной стандартом кодирования видеоданных. Для конкретного масштабируемого уровня, если любой из дополнительных блоков отсутствует, то описанная выше информация совпадает с информацией о наивысшем масштабируемом уровне.
Таблица 4
class ProfileLevelBox extends Box('pflv'){
unsigned int(16) profileIdc;
unsigned int(16) levelIdc;
unsigned int(32) reserved=0;
}
class BitRateBox extends Box('bitr'){
unsigned int(32) avgBitrate;
unsigned int(32) maxBitrate;
}
class FrameRateBox extends Box('frmr'){
unsigned int(2) constantFrameRate;
unsigned int(6) reserved=0;
unsigned int(16) frameRate;
}
class FrameSizeBox extends Box('fmsz'){
unsigned int(16) frm_width;
unsigned int(16) frm_height;
}
class RectRegionBox extends Box('rrgn'){
unsigned int(16) horizontal_offset;
unsigned int(16) vertical_offset;
unsigned int(16) region_width;
unsigned int(16) region_height;
}
abstract class BufferingBox extends Box('buff'){
}
class LayerDependencyBox extends Box('ldep'){
unsigned int(8) entry_count;
for (i=0; 1<entry_count; i++) {
unsigned int(8) dependencyLayerId;
}
class ScalableLayerEntry() extends VisualSampleGroupEntry ('scif')
{
unsigned int(8) layerld;
unsigned int(1) IsFgsLayer;
unsigned int(1) IsSubsampleLayer;
unsigned int(6) reserved=0;
ProfileLevelBox(); // optional
BitRateBox (); // optional
FrameRateBox(); // optional
FrameSizeBox(); // optional
RectRegionBox (); // optional
BufferingBox (); // optional
LayerDependencyBox(); // optional }
Семантики определены следующим образом, layerld дает идентификатор масштабируемого уровня, для которого описана следующая информация.
IsFgsLayer=1 указывает, что масштабируемый уровень представляет собой уровень масштабирования степени детализации (FGS), в котором блок потоковых битов может быть усечен в положении выравнивания байтов. Значение 0 указывает, что масштабируемый уровень не является уровнем FGS.
IsSubsampleLayer=1 указывает, что масштабируемый уровень сформирован только субсэмплами сэмплов, отображенных на уровень. Информация, согласно которой субсэмплы включаются в этот уровень, передается в информационном блоке субсэмплов (Sub-Sample Information Box). Значение 0 указывает, что масштабируемый уровень сформирован сэмплами, отображенными на уровень.
profileldc и levelldc определяют профиль и уровень соответственно, с которыми совместим поток битов представления масштабируемого уровня.
avgBitrate дает среднюю скорость передачи данных, в битах в секунду, в потоке битов представления масштабируемого уровня.
maxBitrate дает максимальные скорости передачи данных, в битах в секунду, в потоке битов представления масштабируемого уровня в любом временном интервале длительностью 1 секунда.
constant FrameRate указывает, является ли скорость кадра представления масштабируемого уровня константой. Если величина frameRate, определенная ниже, является константой в любом временном слайсе представления масштабируемого уровня, который используется для вычисления, то скорость кадра является константой, в противном случае скорость кадра не является константой. Значение 0 соответствует непостоянной скорости кадров, значение 1 соответствует постоянной скорости кадров, а значение 2 свидетельствует о том, что не ясно, является ли скорость кадров константой. Значение constantFrameRate находится в диапазоне от 0 до 2 включительно.
1
2
1
2
2
1
1
2
frameRate дает среднюю скорость кадров в единицах "количество кадров/(256 секунд)". При вычислении учитываются все блоки NAL в представлении масштабируемого уровня. Ниже С - количество кадров в представлении масштабируемого уровня, t - индикация временной метки для первого изображения в представлении масштабируемого уровня в порядке представления, и t - индикация временной метки для самого последнего изображения в представлении масштабируемого уровня в порядке представления. Тогда frameRate вычисляют следующим образом. При условии, что t=t: frameRate=round (С * 256+(t - t)), если t=t, должно выполняться frameRate=0. Нулевое значение указывает на то, что скорость кадров не определена.
frm_width и frm_height дают соответственно максимальную ширину и высоту, в отсчетах яркости (luma), видеокадра представления масштабируемого уровня. Термин "кадр" следует интерпретировать так же, как определено в технических требованиях по кодированию SVC.
horizontal_offset И vertical_offset дают соответственно горизонтальное и вертикальное смещения, в отсчетах яркости (luma), для левого верхнего пикселя прямоугольной области, соответствующей представлению масштабируемого уровня, относительно левого верхнего пикселя полной области, соответствующей представлению наивысшего масштабируемого уровня.
region_width и region_height дают соответственно ширину и высоту прямоугольной области, соответствующей представлению масштабируемого уровня, в отсчетах яркости (luma) в том же масштабе полной области, соответствующей представлению наивысшего масштабируемого уровня.
entry_count дает количество записей в последующей таблице.
dependencyLayerId дает layerld для масштабируемого уровня, от которого прямо или косвенно зависит текущий масштабируемый уровень. Значение dependencyLayerId меньше, чем layerld текущего масштабируемого уровня. Представление текущего масштабируемого уровня требует присутствия масштабируемого уровня, указанного в dependencyLayer.
Синтаксис блока информации о субсэмпле представлен ниже в Таблице 5:
Таблица 5.
aligned (8) class SubSamplelnformationBox
extends FullBox('subs', version, 0) {
unsigned int(32) entry count;
int 1, j;
for (i=0; 1<entry_count; i++) {
unsigned int (32) sample count;
unsigned int(16) subsample_count;
if (subsample_count>0) { for (j=0; i<subsample count;
if(version=1)
{
unsigned int(32) subsample_size;
}
else
{
unsigned int(16) subsample_size;
}
unsigned int(8) subsample_priority;
unsigned int(8) discardable;
unsigned int(32) reserved=0;
}
}
В примере выполнения настоящего изобретения первые 8 битов 32-битового зарезервированного поля используются для сигнализации об идентификаторе масштабируемого уровня, которому принадлежит субсэмпл, то есть последний элемент синтаксиса, указанный выше, разделен на два элемента синтаксиса, как представлено в Таблице 6:
Таблица 6.
…
unsigned int(8) layerId;
unsigned int(24) reserved=0;
…
Аналогичные способы можно также использовать для поддержания сигнализации в других файловых форматах. Если она поддерживается в файловом формате ISO, то она естественным образом поддерживается в производном файловом формате, например файловом формате MPEG-4, файловом формате AVC, файловом формате 3GPP.
Авторы разработали следующий файловый формат SVC (SVC FF Amd.2), производный от базового файлового формата ISO для медиаданных:
В базовом файловом формате ISO для медиаданных сэмпл определен следующим образом.
На дорожках без вспомогательной информации (no-hint track) сэмпл представляет собой индивидуальный видеокадр, непрерывную во времени последовательность видеокадров или непрерывный во времени сегмент сжатых аудиоданных. На дорожках со вспомогательной информацией (hint track) сэмпл определяет структуру из одного или нескольких пакетов в потоке. Никакие два сэмпла внутри дорожки не могут иметь одну и ту же временную метку.
При масштабировании видеоданных, в особенности при пространственной и качественной масштабируемости, вышеуказанное ограничение, при котором никакие два сэмпла внутри дорожки не могут иметь одну и ту же временную метку, неприменимо, поскольку более одного изображения (например, изображение базового уровня и изображение расширенного пространственного уровня) могут иметь одинаковую временную метку. Если эти изображения сделаны в одном и том же сэмпле, серверу нелегко сделать масштабируемое усечение, поскольку для этого всегда необходим лингвистический анализ с выделением сэмплов.
В SVC WD 1.0 изображение определено следующим образом.
Изображение декодируется из набора блоков NAL с одинаковым значением счетчика порядка изображений и Dependencyld. Соответствующие блоки NAL должны включать блоки NAL слайсов для всех макроблоков изображения и, возможно, дополнительные блоки NAL прогрессивных уточняющих слайсов.
Согласно вышеуказанному определению, прогрессивные уточняющие слайсы (то есть слайсы FGS), находятся в том же изображении, что и соответствующий базовый уровень. Если слайсы FGS и соответствующий базовый уровень сделаны в одном и том же сэмпле, серверу нелегко сделать масштабируемое усечение, поскольку лингвистический анализ с выделением сэмплов необходим даже для операций без масштабирования степени детализации. Поэтому в примере выполнения настоящего изобретения каждая плоскость расширения FGS или соответствующий базовый уровень выделен в собственное изображение.
Субсэмпл определен как один или несколько последовательных блоков NAL внутри одного сэмпла.
Первые 8 битов зарезервированного поля в ProfileLevelBox используются для хранения информации о совместимости профиля, причем имеет место следующий синтаксис.
Таблица 7.
class ProfileLevelBox extends Box('pflv'){
unsigned int(16) profileIdc;
unsigned int(16) levelIdc;
unsigned int(8) profile_compatibility;
unsigned int(24) reserved=0;
}
profile_compatibility - байт, определенный в точности равным байту, который находится между profile_idc и level_idc в наборе последовательных параметров, как определено в технических требованиях SVC к видеоданным.
Следующие типы информации о масштабируемости являются специфическими для формата кодирования SVC:
- DependencyId and TemporalLevel
- Набор использованных начальных параметров
- Информация о буфере
Для хранения этой информации можно определить некоторые новые блоки, которые содержат эту информацию и помещают ее по мере необходимости В ScalabilityInfoEntry.
Таблица 8
Box Types: 'ddep', 'ipms', 'sbuf'
Container: ScalableLayerEntry или другие структуры данных
Mandatory: No
Quantity: 0 or 1
class DecodingDependencylnfoBox extends Box('ddep'){
unsigned int (3) dependency_id;
unsigned int (3) temporal_level;
unsigned int(2) reserved=0;
}
class InitialParameterSetBox extends Box('ipms'){
unsigned int (5) numOfSequenceParameterSets;
unsigned int (3) reserved=0;
for (i=0; i<numOfSequenceParameterSets; i++) (
unsigned int (16) sequenceParameterSetLength;
bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnat;
}
unsigned int (8) numOfPictureParameterSets;
for (i=0; i<numOfPictureParameterSets; i++) {
unsigned int(16) pictureParameterSetLength;
bit(8*pactureParameterSetLength) pictureParameterSetNALUnit;
}
}
class SvcBuf fenngBox extends Buf feringBox ('sbuf') {
unsigned int (16) operation_point_count
for (i=0; i<operation_point_count; i++){
unsigned int (32) tx_byte_rate
unsigned int (32) cpb_size
unsigned int (32) dpb_size
unsigned int (32) init_cpb_delay
unsigned int(32) init_dpb_delay
}
}
Семантика следующая.
dependency_id и temporal_level дают соответственно значения Dependencyld и TemporalLevel масштабируемого уровня, как определено в технических требованиях SVC для видеоданных.
numOfSequenceParameterSets указывает количество наборов параметров последовательности, которые используются в качестве наборов начальных параметров последовательности для декодирования представления масштабируемого уровня.
sequenceParameterSetLength указывает длину в байтах блока NAL набора параметров последовательности, как определено в технических требованиях SVC для видеоданных.
sequenceParameterSetNALUnit содержит блок NAL набора параметров последовательности, как определено в технических требованиях SVC для видеоданных. Наборы параметров последовательности должны появляться в порядке возрастания идентификатора набора параметров, причем должны быть разрешены промежутки.
numOfPictureParameterSets указывает количество наборов параметров изображения, которые используются в качестве наборов начальных параметров изображения для декодирования представления масштабируемого уровня.
pictureParameterSetLength указывает длину в байтах блока NAL наборов параметров изображений, как определено в технических требованиях SVC для видеоданных.
pictureParameterSetNALUnit содержит блок NAL набора параметров изображения, как определено в технических требованиях SVC для видеоданных. Наборы параметров изображения должны появляться в порядке возрастания идентификатора набора параметров, причем должны быть разрешены промежутки.
operation_point_count определяет количество операционных точек. Значение параметров SVC HRD определены отдельно для каждой операционной точки. Значение operation_point_count должно быть больше 0.
tx_byte_rate указывает скорость входных байтов (в байтах в секунду), подаваемых в буфер SVC HRD кодирования изображения (СРВ, coded picture buffer). Поток битов представления масштабируемого уровня ограничен значением скорости передачи данных BitRate, равной произведению 8 * tx_byte_rate для параметров NAL HRD, как определено в технических требованиях SVC для видеоданных. Для параметров NAL HRD значение BitRate равно произведению tx_byte_rate * 40/6. Значение tx_byte_rate должно быть больше 0.
cpb_size дает требуемый размер буфера кодированного изображения в байтах. Поток битов представления масштабируемого уровня ограничен значением CpbSize, равным произведением cpb_size * 8 для параметров NAL HRD, как определено в технических требованиях SVC для видеоданных. Для параметров VCL HRD значение CpbSize равно cpb_size * 40/6.
dpb_size дает требуемый размер буфера кодированного изображения, в байтах. Поток битов представления масштабируемого уровня ограничен значением max_dec_frame_buffering, равным Min(16, Floor(post_dec_buf_size)/(PicWidthMbs * FrameHeightInMbs * 256 * ChromaFormatFactor))), как определено в технических требованиях SVC для видеоданных.
По меньшей мере один набор из величин tx_byte_rate, cpb_size и dpb_size для той же самой операционной точки должен соответствовать ограничениям, установленным профилем и уровнем потока битов представления масштабируемого уровня.
init_cpb_delay дает требуемую задержку между временем прибытия в буфер предварительного декодера первого бита первого блока доступа и временем удаления из буфера предварительного декодера первого блока доступа. Этот параметр измеряется в единицах таймера на частоте 90 кГц. Поток битов представления масштабируемого уровня ограничен значением номинального времени удаления для первого блока доступа из буфера кодированного изображения (СРВ), tr,n(0), равным init_cpb_delay, как определено в технических требованиях SVC для видеоданных.
init_dpb_delay дает требуемую задержку между временем прибытия в буфер постдекодера первого декодированного изображения и временем выхода из буфера постдекодера первого декодированного изображения. Этот параметр измеряется в единицах таймера на частоте 90 кГц. Поток битов представления масштабируемого уровня ограничен значением dpb_output_delay для первого декодированного изображения в порядке выхода, равным init_dpb_delay, как определено в технических требованиях SVC для видеоданных, при условии, что переменная временной метки, tc, равна 1/90 000.
Ниже представлены некоторые соображения относительно хранения информации о масштабируемости в файловом формате или потоке битов.
Включение всех уровней в одну единственную дорожку вместо использования для уровней отдельных дорожек предпочтительно, поскольку
в противном случае могут иметься сотни дорожек для одного масштабируемого потока.
Отображение сэмплов/изображений на масштабируемые уровни соответствует концепции группирования. Типовая конструкция группирования обеспечивает изящный способ сигнализации об информации отображения, а также информации о масштабируемости уровней для конкретных масштабируемых уровней.
Во многих приложениях некоторые части информации о масштабируемости для масштабируемых уровней совпадают с полным элементарным потоком или наивысшим масштабируемым уровнем. При категоризации и передаче информации о масштабируемости в различных опциональных блоках нет необходимости в избыточном хранении этих частей информации. Кроме того, использование блоков обеспечивает гибкость в том смысле, что если необходимо больше информации о масштабируемости, ее можно легко включить при наличии новых блоков в записи описания группы сэмплов.
Предположим, что сервер потока сохранил масштабируемый поток профиля Р и уровня L, в то время как масштабируемый уровень потока мог иметь профиль Р1 и L1, а требования по совместимости декодера с L1@P1 более просты, чем по совместимости декодера с L@P. Если сервер собирается подавать видеосодержание клиенту с использованием декодера, совместимого с L1@P1, сервер должен проверить поток на наличие масштабируемого уровня, который совместим с L1@P1, например, путем запуска гипотетического эталонного декодера, что вносит для сервера потока дополнительные сложности по реализации и вычислениям. Наличие профиля и информации об уровне, которая сигнализируется для каждого масштабируемого уровня, позволяет реализовать вышеуказанные приложения с использованием значительно более простого сервера.
Естественно, что для масштабируемости скорости передачи данных, временной и пространственной масштабируемости необходима информация о скорости передачи данных, скорости кадров и размере кадров. Информация о регионе полезна для поддержки масштабируемости зоны интереса (ROI), согласно требованиям, изложенным в документе N6880.
Для декодирования представлений различных масштабируемых уровней требуются различные размеры буфера и задержки при буферизации. Наличие информации о буфере позволяет приемнику/декодеру представления масштабируемого уровня выделять меньше памяти для декодирования или иметь меньшую начальную задержку, - и то, и другое полезно для конечного пользователя.
Хотя известно, что для некоторого представления масштабируемых уровней не требуются все высшие уровни, по умолчанию не известно, какие нижние уровни не требуются. Информация о зависимостях уровня позволяет серверу потока не посылать ненужных нижних уровней, не производя анализа потока, что потребовало бы усложнения конструкции.
Для обеспечения масштабируемости степени детализации (FGS) информация указывает, является ли масштабируемый уровень уровнем FGS, в котором блок данных потока битов может быть усечен в любой позиции выравнивания байтов.
Для достижения масштабируемости ROI можно использовать обычные способы кодирования в AVC (то есть неновые расширения SVC), например, путем использования наборов групп слайсов с ограниченным движением. Однако имеется требование (раздел 4 документа N6880), в котором говорится, что файловый формат SVC должен обладать обратной совместимостью с файловым форматом AVC. Для соответствия этому требованию и одновременной поддержки масштабируемости ROI необходима информация о субсэмплах, поскольку базовый уровень (область ROI) и расширенный уровень (оставшаяся область) должны быть в одном и том же сэмпле. Таким образом, для этой цели могут использоваться уровни субизображений.
Информация о зависимостях декодирования включена в заголовки блоков NAL масштабируемого уровня расширения. В некоторых приложениях желательно, чтобы элемент медиасети или приемник знал информацию, с помощью которой можно исключить масштабируемые уровни. Чтобы помочь элементу медиасети или приемнику исключить ненужные блоки NAL, необходимо соответствие между информацией о зависимостях декодирования и идентификатором масштабируемого уровня.
Вследствие того факта, что представление масштабируемого уровня может не использовать все наборы начальных параметров для полного потока, передача всех этих наборов параметров может привести к потере ширины полосы передачи и удлинению начальной задержки установки, в частности, потому, что типичные наборы начальных параметров передаются вне полосы и с высокой степенью надежности, что подразумевает использование подтверждения приема и, возможно, повторную передачу. Проблему решает передача наборов начальных параметров для каждого представления масштабируемых уровней. Кроме того, сервер может получить информацию, анализируя поток битов. Однако для этого требуется, чтобы сервер знал о медиаданных и мог производить анализ потока битов "на лету".
Сигнализация в протоколах передачи и управления
При одноадресном потоке, например, согласно 3GPP PSS, сервер может создать множество альтернатив для одного и того же потока на основе информации о масштабируемости или с помощью множества описаний SDP, где каждое описание SDP содержит одну или большее количество альтернатив, или с помощью одного описания SDP, содержащего множество альтернатив. Приемный терминал выбирает одну или ни одной из этих альтернатив. Если выбрана одна альтернатива, то сервер знает, какие уровни нужно передать.
В приложениях широкого/группового вещания могут иметься терминалы с различными возможностями и/или в различных состояниях сети, в результате чего может возникнуть ситуация, когда для различных приемных терминалов идеальными будут разные альтернативы потоков. В этом случае можно разделить приемники на различные группы широкого/группового вещания, и приемники внутри каждой группы будут использовать одинаковую альтернативу. При таком способе можно эффективно использовать имеющуюся ширину полосы для каждого приемного терминала.
Для группы широкого/группового вещания, в которой все приемники используют одну и ту же альтернативу, аналогично тому, как имеет место в случае одноадресной передачи, релевантные уровни передаются со стороны сервера.
Однако если имеется более одной группы широкого/группового вещания, сервер должен представить, посредством объявления о службе, какие альтернативы имеются, чтобы каждый приемник смог выбрать для себя одну альтернативную службу. Это может быть достигнуто, например, с использованием SDP, аналогично тому, как имеет место в случае одноадресной передачи.
Кроме того, возможно, что в одной конкретной группе широкого/группового вещания передается одна альтернатива с множеством уровней, в то время как приемник решил декодировать один из уровней и игнорировать остальные данные. При использовании этого способа для передающего устройства можно эффективно воспользоваться имеющейся шириной полосы, поскольку передается меньше потоков. В этом случае при той же группе широкого/группового вещания сервер не обязан знать различные предпочтения разных приемных терминалов. Однако серверу все еще необходимо представить информацию об альтернативах, чтобы приемник смог сделать вывод о своей способности декодировать какую-либо из этих альтернатив.
Два вышеуказанных способа можно применить совместно. Таким образом, может иметься несколько групп широкого/группового вещания. В некоторых из групп все приемники могут декодировать одну и ту же альтернативу, в то время как в других группах некоторые из приемников могут игнорировать некоторые из принятых уровней потока битов. Объединенный способ можно использовать для глобальной оптимизации как эффективности использования ширины полосы, доступной для сервера, так и эффективности ширины полосы, доступной для приемников.
Как отмечено выше, варианты выполнения настоящего изобретения включают программные продукты, содержащие считываемые компьютером носители, предназначенные для переноса или хранения выполняемых на компьютере инструкций или структур данных. Такие считываемые компьютером носители могут быть любыми имеющимися носителями, к которым можно получить доступ с помощью компьютера общего назначения или компьютера специального назначения. Например, такие считываемые компьютером носители могут включать RAM (оперативную память), ROM (постоянное запоминающее устройство), EEPROM (электрически стираемое программируемое постоянное запоминающее устройство), CD-ROM (компакт-диск) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства или любые другие носители, которые могут использоваться для переноса или хранения желаемого программного кода в виде выполняемых на компьютере инструкций или структур данных и к которым можно получить доступ с помощью компьютера общего назначения или компьютера специального назначения. Когда информация передается или предоставляется по сети или другому соединению (проводному, беспроводному или комбинации проводного и беспроводного) в компьютер, этот компьютер рассматривает такое соединение как считываемый компьютером носитель. Таким образом, любое такое соединение можно называть считываемым компьютером носителем. Комбинации вышеуказанных возможностей также должны рассматриваться в качестве считываемых компьютером носителей. Выполняемые на компьютере инструкции включают, например, инструкции и данные, которые заставляют компьютер общего назначения, компьютер специального назначения или процессорное устройство специального назначения выполнять определенную функцию или группу функций.
Пример системы, в которой может быть использовано настоящее изобретение, представлен на фиг.1. Система включает передающий сервер 101, в котором имеется, например, носитель 102 данных, содержащий файл 103, который содержит поток медиаданных, кодированный согласно настоящему изобретению. Файл 103 передается в виде одного или нескольких сигналов в сеть 104, например в систему мобильной связи. В сети 104 может иметься шлюз 105, который принимает файл 103 и направляет его, например, в базовую станцию 106 сети под управлением, например, MMSC 107. Приемник 108 может принимать сигнал (сигналы) и декодировать информацию о масштабируемости и некоторую другую информацию, включенную в сигнал (сигналы).
Изобретение описано в общем контексте способа и шагов, которые могут быть реализованы в одном варианте выполнения настоящего изобретения посредством программного продукта, включающего выполняемые на компьютере инструкции, например программный код, выполняемый компьютерами в сетевом окружении. В общем случае программные модули включают процедуры, программы, объекты, компоненты, структуры данных, и т.д., которые решают специальные задачи или реализуют специальные абстрактные типы данных. Выполнимые компьютером инструкции, соответствующие структуры данных и программные модули представляют собой примеры программного кода, предназначенного для реализации шагов в раскрытых здесь способах. Конкретная последовательность таких выполняемых инструкций или соответствующих структур данных представляет собой примеры соответствующих действий для реализации функций, описанных в таких шагах.
Реализация программного и сетевого обеспечения для настоящего изобретения может быть достигнута с использованием стандартной техники программирования и логики на основе системы правил и другой логики для создания различных шагов по организации поиска в базе данных, шагов корреляции, шагов сравнения и шагов принятия решений. Следует также отметить, что используемые в настоящем описании и в формуле изобретения слова "компонент" и "модуль" предназначены для охвата возможных реализаций с использованием одной или нескольких линий кодов программного обеспечения, и/или аппаратного обеспечения и/или оборудования для приема данных, вводимых вручную.
Предшествующее описание вариантов выполнения настоящего изобретения было представлено с целью иллюстрации и пояснения. Оно не предназначено для исчерпывающего охвата или ограничения настоящего изобретения в точности той формой, которая раскрыта в описании, и поэтому в рамках настоящего изобретения возможны изменения и вариации как на основе раскрытой теории, так и практического использования настоящего изобретения. Варианты выполнения настоящего изобретения были выбраны и описаны для пояснения принципов настоящего изобретения и его практического приложения с тем, чтобы специалисты в данной области техники смогли использовать настоящее изобретение в различных вариантах его выполнения и с различными модификациями, необходимыми для конкретного приложения. Например, описание вариантов выполнения настоящего изобретения относилось, главным образом, к временной масштабируемости. Однако оно применимо ко всем видам масштабируемости, например к пространственной масштабируемости, вычислительной масштабируемости и масштабируемости качества (отношение сигнал/шум). Кроме того, в настоящем изобретении можно использовать множество протоколов передачи. Некоторые частные примеры протоколов передачи включают: протокол описания сессии (SDP), протокол передачи потока в реальном времени (RTSP) и протокол инициирования сессии (SIP).