СЕГМЕНТИРОВАННЫЕ МЕТАДАННЫЕ И ИНДЕКСЫ ДЛЯ ПОТОКОВЫХ МУЛЬТИМЕДИЙНЫХ ДАННЫХ
SEGMENTED METADATA AND INDICES FOR STREAMED MULTIMEDIA DATA

Область техники
[0001] Данное изобретение относится в общем к области потоковых мультимедийных данных и, более конкретно, к организации таких мультимедийных данных с помощью метаданных и/или индексов.
Предпосылки создания изобретения
[0002] Этот раздел предназначен для представления предпосылок создания изобретения или контекста к изобретению, которое изложено в формуле изобретения. Описание может включать концепции, которые могут быть осуществлены, но не обязательно те, которые были ранее задуманы или осуществлены. Поэтому, если не сказано иначе, содержание настоящего раздела не является изложением известного уровня техники для описания и формулы изобретения в данной заявке, и включение текста в настоящий раздел не следует рассматривать как описание известного уровня техники.
[0003] Формат файла-контейнера мультимедийной информации - важный элемент в цепочке производства, обработки, передачи и потребления мультимедийного контента. Есть существенные различия между форматом кодирования (иначе называемым форматом элементарного потока) и форматом файла-контейнера. Формат кодирования касается действия определенного алгоритма кодирования, который кодирует информацию контента в битовый поток. Формат файла-контейнера включает средства организации формируемого битового потока таким образом, чтобы он был доступен для локального декодирования и воспроизведения, передачи в виде файла или потоковой передачи; все это выполняется с использованием разнообразных архитектур хранения и транспортировки. Более того, файловый формат может облегчать обмен мультимедийной информацией и ее редактирование, а также запись в файл потоков, принимаемых в реальном времени.
[0004] Доступные стандарты форматов медиа-файлов включают базовый формат медиа-файлов ISO (ISO/IEC 14496-12) (ISO - International Standards Organization, Международная организация по стандартизации; IEC
International Electrotechnical Commission, Международная электротехническая комиссия), файловый формат MPEG-4 (ISO/IEC 14496-14, также известный как формат МР4) (MPEG - Moving Picture Experts Group, группа экспертов по кодированию движущихся изображений), файловый формат AVC (ISO/IEC 14496-15) (AVC - Advanced Video Coding, усовершенствованное кодирование видеосигналов) и файловый формат 3GPP (3GPP TS 26.244, известный также как формат 3GP) (3GPP - 3rd Generation Partnership Project, проект партнерства третьего поколения). В настоящее время в разработке находятся также другие форматы.
[0005] Желательно, чтобы такие файловые форматы медиа-информации допускали использование метаданных. Во многих применениях, таких как получение и хранение потоков медиа-информации, например, аудио- и видеопотоков, для облегчения организации и получения доступа к желаемым секциям или сегментам потоковых данных желательно, чтобы файловый формат допускал использование метаданных, которое является специфическим для сегментов контента потоковых данных.
Сущность изобретения
[0006] Один аспект данного изобретения касается способа организации потоковых данных. Способ включает запись потоковых данных в файл, идентификацию метаданных, применимых к подмножеству потоковых данных, и формирование по меньшей мере одной группы из одного или более сэмплов потоковых данных, причем каждый сэмпл в группе имеет идентичный контент метаданных для типа метаданных.
[0007] В одной форме осуществления в файле идентифицируется по меньшей мере одна группа.
[0008] В одной форме осуществления упомянутый файл соответствует базовому формату медиа-файлов ISO. Упомянутая запись потоковых данных в файл может включать запись дорожки (трека) с указаниями о приеме (reception hint track). По меньшей мере одна группа может указываться в блоке описания группы сэмплов.
[0009] В одной форме осуществления тип метаданных включает заголовки сегментов потоковых данных.
[0010] В одной форме осуществления группа включает сэмплы из двух или более дорожек. Способ может дополнительно включать идентификацию группы, содержащей сэмплы из двух или более дорожек, с помощью метаданных, связанных, со всеми связанными дорожками. Кроме того, способ может включать идентификацию группы, содержащей сэмплы из двух или более дорожек, с помощью метаданных, связанных с мастер-дорожкой.
[ОО11] В одной форме осуществления способ дополнительно включает создание дорожки синхронизированных метаданных для потоковых данных. В одной форме осуществления по меньшей мере одна группа из одного или более сэмплов потоковых данных указывается в блоке описания группы сэмплов для дорожки синхронизированных метаданных посредством связывания по меньшей мере одной группы из одного или более сэмплов потоковых данных с соответствующими сэмплами синхронизированных метаданных в дорожке синхронизированных метаданных.
[0012] В одной форме осуществления дорожка синхронизированных метаданных связывает синхронизирующие метаданные с одной или более временными шкалами. Дорожка синхронизированных метаданных может связывать синхронизирующие метаданные с двумя или более временными шкалами.
[0013] В другом аспекте изобретение касается компьютерной программы на машиночитаемом носителе. Компьютерная программа сконфигурирована для реализации способа, включающего запись потоковых данных в файл, идентификацию метаданных, применимых к подмножеству потоковых данных, и формирование по меньшей мере одной группы из одного или более сэмплов потоковых данных, причем каждый сэмпл в группе имеет идентичный контент метаданных для типа метаданных.
[0014] В другом аспекте изобретения приемник для приема потоковых данных содержит запоминающее устройство для записи потоковых данных в файл и процессор. Процессор служит для идентификации метаданных, применимых к подмножеству потоковых данных, и формирования по меньшей мере одной группы из одного или более сэмплов потоковых данных, причем каждый сэмпл в группе имеет идентичный контент метаданных для типа метаданных.
[0015] В различных формах осуществления изобретения тип метаданных может указываться типом группирования и данными экземпляра группирования, тип группирования определяет семантику данных экземпляра группирования и контента метаданных. Контент метаданных может включать полезную информацию метаданных и нуль или более расширений полезной информации метаданных, причем полезная информация метаданных включается в первую структуру, а нуль или более расширений полезной информации метаданных включаются во вторую структуру.
[0016] Эти и другие преимущества и функции изобретения вместе с его организацией и способом работы станут более очевидными из следующего подробного описания, приводимого вместе с чертежами, где аналогичные элементы имеют аналогичные номера позиций.
Краткое описание чертежей
[0017] Фиг.1 иллюстрирует графическое представление примера системы передачи мультимедийной информации, в которой могут быть реализованы формы осуществления данного изобретения.
[0018] Фиг.2 иллюстрирует пример блока в соответствии с базовым форматом медиа-файлов ISO.
[0019] Фиг.3А - пример блока, иллюстрирующий группирование сэмплов.
[0020] Фиг.3 В иллюстрирует пример блока, который содержит фрагмент movie, включающий блок SampleToGroup.
[0021] Фиг.4 иллюстрируют пример блока с сегментированными метаданными согласно типу группирования в соответствии с формой осуществления данного изобретения.
[0022] Фиг.5А - блок-схема, иллюстрирующая приводимый в качестве примера способ организации потоковых данных согласно форме осуществления данного изобретения.
[0023] Фиг.5 В - блок-схема, иллюстрирующая приводимый в качестве примера способ организации потоковых данных согласно другой форме осуществления данного изобретения.
[0024] Фиг.6 - блок-схема приводимого в качестве примера устройства для приема, хранения и организации потоковых данных согласно форме осуществления данного изобретения.
[0025] Фиг.7 - изображение упрощенной иерархии блоков, показывающее структуру вложенности для блока DVBSampleToGroup (DVB сэмпл в группу), когда ссылка на group_description_index (индекс описания группы) не делается.
[0026] Фиг.8 - иллюстрация примера файла, который содержит фрагмент movie, включающий блок DVBSampleToGroup.
[0027] Фиг.9 - иллюстрация упрощенной иерархии блоков, показывающая структуру вложенности для блоков DVBGroupinglnstance (экземпляр группирования DVB), DVBSampleGroupDescription (описание группы сэмплов DVB), DVBSampleToGroup и DVBSampleToGroupExtension (расширение блока DVB сэмпл в группу).
[0028] Фиг.10 - иллюстрация файла, содержащего две группы сэмплов согласно блоку DVBSampleToGroup для индекса временного кода.
Подробное описание различных форм осуществления [0029] Фиг.1 является графическим представлением общей системы передачи мультимедийной информации, в которой могут быть реализованы различные формы осуществления данного изобретения. Как показано на фиг.1, источник 100 данных подает исходный сигнал в аналоговом, несжатом цифровом или сжатом цифровом формате, или в виде некоторой комбинации этих форматов. Кодер 110 кодирует исходный сигнал, формируя кодированный битовый поток медиа-информации. Следует отметить, что битовый поток, который необходимо декодировать, может приниматься непосредственно или опосредованно от удаленного устройства, фактически расположенного в сети любого типа. Более того, битовый поток может приниматься от локальных аппаратных или программных средств. Кодер 110 может быть приспособлен к кодированию более одного типа медиа-информации, такой как аудио и видео, или может потребоваться более одного кодера 110 для кодирования различных типов медиа-информации исходного сигнала. Кодер 110 может получать также синтетически созданный входной сигнал, такой как графика и текст, или он может быть способен создавать кодированные битовые потоки синтетической медиа-информации. Чтобы упростить описание, ниже рассматривается только обработка одного кодированного битового потока одного типа медиа-информации. Следует отметить, однако, что типичные широковещательные услуги в реальном времени включают несколько потоков (обычно по меньшей мере один поток аудио, видео и субтитров). Следует также заметить, что система может содержать много кодеров, но на фиг.1 представлен только один кодер 110, чтобы упростить описание без потери общности. Текст и примеры, содержащиеся здесь, могут конкретно описывать процесс кодирования, но специалистам в данной области техники будет понятно, что те же самые концепции и принципы применимы также к соответствующему процессу декодирования и наоборот.
[0030] Кодированный битовый поток медиа-данных передается в запоминающее устройство 120. Запоминающее устройство 120 может включать память большого объема любого типа, чтобы хранить кодированный битовый поток мультимедийных данных. Формат кодированного битового потока мультимедийных данных в запоминающем устройстве 120 может быть форматом самостоятельного элементарного битового потока, или же один или более кодированных битовых потоков мультимедийных данных могут инкапсулироваться в файл-контейнер. Некоторые системы работают "напрямую", то есть исключают запоминающее устройство и передают кодированный битовый поток мультимедийных данных из кодера 110 непосредственно в передатчик 130. Затем кодированный битовый поток мультимедийных данных по мере необходимости передается в передатчик 130, называемый также сервером. Формат, используемый при передаче, может быть форматом самостоятельного элементарного битового потока, форматом пакетного потока или же один или более кодированных битовых потоков мультимедийных данных могут инкапсулироваться в файл-контейнер. Кодер 110, запоминающее устройство 120 и передатчик 130 могут находиться в одном физическом устройстве, или они могут быть включены в отдельные устройства. Кодер 110 и передатчик 130 могут работать с контентом в реальном времени; в этом случае кодированный битовый поток мультимедийных данных обычно не хранится постоянно, а буферизируется в течение малых периодов времени в кодере 110 контента и/или в сервере 130, чтобы сглаживать изменения в битовой скорости передачи кодированных мультимедийных данных, в задержке обработки и в задержке передачи.
[0031] Сервер 130 передает кодированный битовый поток мультимедийных данных, используя стек протоколов связи. Стек может содержать, в качестве неограничивающих примеров, протокол передачи в режиме реального времени (Real-Time Transport Protocol, RTP), протокол пользовательских дейтаграмм (User Datagram Protocol, UDP) и протокол Интернета (Internet Protocol, IP). Когда стек протоколов связи ориентирован на пакетную передачу, сервер 130 инкапсулирует кодированный битовый поток мультимедийных данных в пакеты. Например, когда используется протокол RTP, сервер 130 инкапсулирует кодированный битовый поток мультимедийных данных в пакеты RTP согласно формату полезной информации RTP. Обычно каждый тип медиа-информации имеет заранее определенный формат полезной информации RTP. Снова следует отметить, что система может содержать более одного сервера 130, но ради простоты в дальнейшем описании рассматривается только один сервер 130.
[0032] Сервер 130 может быть подключен или не подключен к шлюзу 140 через сеть связи. Шлюз 140 может выполнять функции различного типа, такие как преобразование потока пакетов согласно одному стеку протоколов связи в другой стек протоколов связи, объединение и разветвление потоков данных, а также манипулирование потоком данных согласно возможностям нисходящей линии связи и/или приемника, таким как управление скоростью передачи данных пересылаемого потока согласно условиям нисходящей линии. Примеры шлюзов 140 включают блоки управления многоадресной связью (Multipoint Control Unit, MCU), шлюзы между видеотелефонией с коммутацией каналов и с пакетной коммутацией, услугу "нажми, чтобы говорить в сотовой сети" (Push-to-Talk over Cellular, PoC), инкапсуляторы IP в системах цифрового телевизионного вещания на портативные устройства (Digital Video Broadcasting-Handheld, DVB-H) или абонентские приставки, которые локально направляют широковещательные передачи в домашние беспроводные сети. Когда используется протокол RTP, шлюз 140 называется смесителем RTP или транслятором-преобразователем RTP и обычно действует как конечная точка соединения RTP.
[0033] Система содержит один или более приемников 150, обычно способных к приему, демодуляции и декапсуляции передаваемого сигнала в кодированный битовый поток медиа-информации. Кодированный битовый поток медиа-информации передается в записывающее запоминающее устройство 155. Записывающее запоминающее устройство 155 может включать память любого типа большого объема, чтобы хранить кодированный битовый поток медиа-информации. Записывающее запоминающее устройство 155 может, альтернативно или дополнительно, включать память для вычислений, такую как оперативная память. Формат кодированного битового потока медиа-информации в записывающем запоминающем устройстве 155 может быть форматом самостоятельного элементарного битового потока, или же один или более кодированных битовых потоков медиа-информации могут инкапсулироваться в файл-контейнер. Если имеется много кодированных битовых потоков медиа-информации, таких как аудиопоток и видеопоток, связанных друг с другом, обычно используется файл-контейнер, и приемник 150 содержит или присоединяется к формирователю файлов-контейнеров, создающему файлы-контейнеры из входных потоков. Некоторые системы работают "напрямую", то есть исключают записывающее запоминающее устройство 155 и передают кодированный битовый поток мультимедийных данных от приемника 150 непосредственно на декодер 160. В некоторых системах только самая последняя часть записываемого потока, например, самые последние 10 минут записываемого потока, сохраняется в записывающем запоминающем устройстве 155, в то время как любые ранее записанные данные удаляются из записывающего запоминающего устройства 155.
[0034] Кодированный битовый поток медиа-информации передается из записывающего запоминающего устройства 155 в декодер 160. Если имеется много кодированных битовых потоков медиа-информации, таких как аудиопоток и видеопоток, связанных друг с другом и инкапсулированных в файл-контейнер, синтаксический анализатор файла (не показанный на фиг.1) используется для выделения каждого кодированного битового потока медиа-информации из файла-контейнера. Записывающее запоминающее устройство 155 или декодер 160 может содержать синтаксический анализатор файла, или же синтаксический анализатор файла присоединяется к записывающему запоминающему устройству 155 или декодеру 160.
[0035] Битовый поток медиа-информации кодека обычно обрабатывается далее декодером 160, выходным сигналом которого является один или более несжатых потоков медиа-информации. Наконец, устройство 170 воспроизведения может воспроизводить несжатые потоки медиа-информации, например, с помощью динамика или дисплея. Приемник 150, записывающее запоминающее устройство 155, декодер 160, и устройство 170 воспроизведения могут размещаться в одном и том же физическом устройстве, или же они могут быть включены в отдельные устройства.
[0036] Организация цифрового телевизионного вещания (Digital Video Broadcasting, DVB) в настоящее время находится в процессе определения файлового формата DVB. Главной задачей определения файлового формата DVB является упрощение взаимодействия между реализациями технологий DVB при работе с контентом; такими реализациями являются, например, приставки согласно современным стандарту наземного цифрового телевизионного вещания (DVB-Terrestrial, DVB-T), стандарту для кабельных сетей (DVB-Cable, DVB-C) и стандарту для спутникового вещания (DVB-Satellite, DVB-S) и будущим стандартам DVB, телевизоры IP (на основе протокола Интернет) и мобильные телевизионные приемники согласно стандарту цифрового телевизионного вещания на портативные устройства (Digital Video Broadcasting-Handheld, DVB-H) и их будущее развитие. Файловый формат DVB позволит осуществлять обмен записанной (только для чтения) мультимедийной информацией между устройствами различных изготовителей, обмен контентом с использованием памяти большого объема на основе универсальной последовательной шины (Universal Serial Bus, USB) или аналогичных устройств для чтения - записи и совместный доступ по домашней сети к общему дисковому хранилищу, а также много других функциональных возможностей.
[0037] Файловый формат ISO является основой для большинства современных форматов файлов-контейнеров мультимедийной информации, называемых семейством файловых форматов ISO. Базовый файловый формат медиа-информации ISO может быть основой также и для разработки файлового формата DVB.
[0038] Обратимся теперь к фиг.2, на которой показана упрощенная структура основного блока 200 компоновки в базовом формате медиа-файлов ISO, называемого "блоком" (box). Каждый блок 200 имеет заголовок и полезную информацию. Заголовок блока указывает тип блока и размер блока в байтах. Многие из специфицируемых блоков получены из структуры "полного блока" (FullBox), которая включает номер версии и флаги в заголовке. Блок может содержать другие блоки, такие как блоки 210, 220, описанные ниже более подробно. Файловый формат ISO определяет, какие типы блоков разрешены в блоке определенного типа. Кроме того, некоторые блоки обязательно должны присутствовать в каждом файле, в то время как другие являются опциональными. В файле могут присутствовать более одного блока (справедливо для некоторых типов блоков). В связи с этим, формат медиа-файлов ISO определяет иерархическую структуру блоков.
[0039] Согласно семейству файловых форматов ISO, файл состоит из мультимедийных данных и метаданных, которые включены в отдельные блоки; блок 220 мультимедийных данных (mdat) и блок 210 movie (moov), соответственно. Блок movie ("фильм") может содержать одну или более дорожек, и каждая дорожка находится в одном блоке 212, 214 дорожки. Дорожка может быть одного из следующих типов: медиа-информации, указаний или синхронизированных метаданных. Дорожка медиа-информации относится к сэмплам, отформатированным согласно формату сжатия медиа-информации (и его инкапсуляции в базовый формат медиа-файлов ISO). Дорожка указаний (hint track) относится к сэмплам указаний, содержащим инструкции по построению пакетов для передачи по указанному протоколу связи. Инструкции могут содержать руководство для построения заголовка пакета и включать структуру полезной информации пакета. В структуре полезной информации пакета могут делаться ссылки на данные, находящиеся на других дорожках или в других элементах (например, ссылка может указывать, какой части данных на конкретной дорожке или в конкретном элементе дается команда на копирование в пакет в процессе построения пакета). Дорожка синхронизированных метаданных относится к сэмплам, описывающим мультимедийную информацию, и/или сэмплам с указаниями, на которые делается ссылка. Для представления одного типа медиа-информации обычно выбирается одна дорожка медиа-информации.
[0040] Базовый формат медиа-файлов ISO не ограничивает представление одним файлом, и оно может содержаться в нескольких файлах. Один файл содержит метаданные для всего представления. Этот файл может содержать также все мультимедийные данные, вследствие чего представление является независимым. Другие файлы, если они используются, не обязательно должны быть отформатированы в базовом файловом формате ISO; они используются для помещения в них мультимедийных данных и могут содержать также неиспользуемые мультимедийные данные или другую информацию. Базовый файловый формат ISO касается только структуры файла представления. Формат файлов мультимедийных данных ограничивается базовым файловым форматом ISO или производными от него форматами только в том, что мультимедийные данные в медиа-файлах должны быть отформатированы так, как определено в базовом файловом формате ISO или производных от него форматах.
[0041] Фрагменты movie могут использоваться при записи контента в файлы ISO, чтобы избежать потери данных, если записывающее приложение испытывает сбой, исчерпывается объем диска или происходит некоторый другой инцидент. Без фрагментов movie может произойти потеря данных, потому что файловый формат требует, чтобы все метаданные (блок Movie Box) были записаны в одну непрерывную область файла. Кроме того, при записи файла, объема памяти RAM может быть недостаточно для буферизации Movie Box для объема имеющегося запоминающего устройства, а повторное вычисление контентов Movie Box, когда movie закрыт, происходит слишком медленно. Более того, фрагменты movie могут обеспечивать возможность одновременной записи и воспроизведения файла с использованием обычного синтаксического анализатора файла ISO. Наконец, меньшая длительность начальной буферизации требуется для постепенной загрузки (например, одновременного приема и воспроизведения файла, когда используются фрагменты movie, и начальный блок Movie Box является меньшим по сравнению с файлом с тем же самым контентом медиа-информации, но структурированным без фрагментов movie).
[0042] Свойство фрагмента movie допускает разбиение метаданных, которые обычно будут находиться в блоке moov 210, на несколько частей, каждая из которых соответствует некоторому периоду времени для дорожки. Таким образом, свойство фрагмента movie допускает перемежение метаданных и мультимедийных данных файла. Следовательно, размер блока moov 210 может быть ограничен, и могут быть реализованы вышеупомянутые случаи использования.
[0043] Сэмплы медиа-информации для фрагментов movie находятся в блоке mdat 220, как обычно, если они в том же самом файле, что и блок moov. Однако для метаданных фрагментов movie предусмотрен блок moof. Он содержит информацию для определенного промежутка времени воспроизведения, которая ранее была бы в блоке moov 210. Блок moov 210 по-прежнему представляет правильное movie самостоятельно, но в дополнение он включает блок mvex, указывающий, что фрагменты movie будут следовать в том же самом файле. Фрагменты movie расширяют представление, которое связано с блоком moov, во времени.
[0044] Метаданные, которые могут быть включены в блок moot, ограничены подмножеством метаданных, которые могут быть включены в блок moov 210 и кодированы в некоторых случаях по-другому. Детали блоков, которые могут быть включены в блок moof, могут быть найдены из спецификаций базового формата медиа-файлов в международном стандарте ISO/IEC 14496-12, Second Edition, 2005-04-01, включающем изменения 1 и 2, который полностью включен в данное описание путем ссылки на соответствующий документ.
[0045] В дополнение к синхронизированным дорожкам, файлы ISO могут содержать любые несинхронизированные двоичные объекты в блоке meta, или "статичные" метаданные. Блок meta может находиться на верхнем уровне файла, в блоке movie и в блоке дорожки. Не более одного блока метаданных может находиться на каждом из уровней файла, movie или дорожки. Блок meta должен содержать блок 'hdir', указывающий структуру или формат контентов блока meta. Блок meta может содержать любое число двоичных элементов, на которые можно ссылаться, и каждый из них может быть связан с именем файла.
[0046] Чтобы поддерживать более одного блока meta на любом уровне иерархии (файла, movie или дорожки), в базовый файловый формат медиа-информации ISO был введен блок контейнера ('meco') блока meta. Блок контейнера блока meta может нести любое число дополнительных блоков meta на любом уровне иерархии (файла, movie или дорожки). Это позволяет, например, представлять те же самые метаданные в двух различных альтернативных системах метаданных. Блок взаимосвязи (mere) блока meta позволяет описать, как различные блоки meta относятся друг к другу (например, содержат ли те же самые метаданные, но описанные различными схемами, или один из них представляет супермножество другого).
[0047] Обратимся теперь к фиг.3А, 3В и 4, на которых показано использование группирования сэмплов в блоках. Группирование сэмплов в базовом файловом формате ISO и его производных, таких как файловый формат AVC и файловый формат масштабируемого кодирования видеоданных (Scalable Video Coding, SVC), представляет собой назначение каждого сэмпла в дорожку так, чтобы он был членом одной группы сэмплов, основанной на критерии группирования. Группа сэмплов при группировании сэмплов не имеет ограничения по непрерывности сэмпла и может содержать несмежные сэмплы. Так как может быть более одного группирования сэмплов для сэмплов в дорожке, каждое группирование сэмплов имеет поле типа для указания типа группирования. Группирования сэмплов представлены двумя связанными структурами данных: (1) блок SampleToGroup (блок sbgp) представляет назначение сэмплов в группы сэмплов; и (2) блок SampleGroupDescription (блок sgpd) включает элемент группы сэмплов для каждой группы сэмплов, описывающий свойства группы. Могут быть многочисленные экземпляры блоков SampleToGroup и SampleGroupDescription, основанные на различных критериях группирования. Их отличает поле типа, используемое для указания типа группирования, как показано на фиг.4.
[0048] Фиг.3А представляет упрощенную иерархию блоков, показывающую структуру вложенности для блоков групп сэмплов. Блоки групп сэмплов (SampleGroupDescription Box и SampleToGroup Box) находятся в блоке таблицы сэмплов (stbl), который включен в блоки медиа-информации (minf), медиа (mdia) и дорожки (trak) (в таком порядке) в блоке movie (moov).
[0049] Блоку SampleToGroup разрешается находиться во фрагменте movie. Следовательно, группирование сэмплов может выполняться фрагмент за фрагментом. Фиг.3 В иллюстрирует пример файла, содержащего фрагмент movie, включающий блок SampleToGroup. Как показано на фиг.4, блок SampleGroupDescription и блок SampleToGroup могут идентифицировать grouping_type (тип группирования) на основании индекса или типа метаданных.
[0050] Ключевая особенность файлового формата DVB известна как "дорожки с указаниями о приеме" (reception hint tracks), которые могут использоваться, когда один или более потоков пакетов данных записываются согласно файловому формату DVB. Дорожки с указаниями о приеме указывают, помимо прочего, порядок, синхронизацию приема и контенты принимаемых пакетов. Устройства воспроизведения для файлового формата DVB могут повторно создавать поток пакетов, который был принят, на основании дорожек с указаниями о приеме и обрабатывать повторно созданный поток пакетов так, будто он был недавно принят. Дорожки с указаниями о приеме имеют идентичную структуру, сравнимую с дорожками указаний для серверов, которые определены в базовом файловом формате ISO. Например, дорожки с указаниями о приеме могут быть связаны с дорожками элементарного потока (то есть дорожками медиа-информации), которые они несут, посредством ссылок на дорожки типа hint. Каждый протокол для передачи потоков медиа-информации имеет свой собственный формат сэмпла с указаниями о приеме.
[0051] Серверы, использующие дорожки с указаниями о приеме как указания для передачи принимаемых потоков, должны справляться с возможными ухудшениями принимаемых потоков, такими как колебания задержки передачи и потери пакетов, и гарантировать, что требования протоколов и форматов содержащихся данных удовлетворяются независимо от возможных ухудшений принимаемых потоков.
[0052] Форматы сэмпла дорожек с указаниями о приеме могут позволять выполнить построение пакетов перемещением данных из других дорожек посредством ссылки. Эти другие дорожки могут быть дорожками указаний или дорожками медиа-информации. Точная форма этих указателей определяется форматом сэмпла для протокола, но обычно они состоят из четырех частей информации: опорного индекса дорожки, номера сэмпла, смещения и длины. Некоторые из них могут быть неявными для конкретного протокола. Эти "указатели" всегда указывают на действительный источник данных. Если дорожка указаний сформирована "поверх" другой дорожки указаний, то вторая дорожка указаний должна иметь прямые ссылки на дорожку(-и) медиа-информации, используемую первой, причем данные из этих дорожек медиа-информации помещаются в поток.
[0053] Преобразование принимаемых потоков в дорожки медиа-информации позволяет существующим устройствам воспроизведения, соответствующим базовому файловому формату ISO, обрабатывать файлы DVB, если поддерживаются также форматы медиа-информации. Однако большинство стандартов кодирования медиа-информации определяют декодирование только свободных от ошибок потоков, и, следовательно, должно быть гарантировано, что контент в дорожках медиа-информации может быть правильно декодирован. Устройства воспроизведения для файлового формата DVB могут использовать дорожки с указаниями о приеме для обработки ухудшений, вызванных передачей, то есть, контент, который может быть неправильно декодирован, располагается только в дорожках с указаниями о приеме. Необходимости иметь дубликат правильных сэмплов медиа-информации и в дорожке медиа-информации, и в дорожке с указаниями о приеме можно избежать включением данных с дорожки медиа-информации посредством ссылки на дорожку с указаниями о приеме.
[0054] В настоящее время определены три типа дорожек с указаниями о приеме: дорожки с указаниями о приеме по протоколу передачи транспортного потока MPEG-2 (MPEG2-TS), протоколу передачи в реальном времени (RTP) и протоколу управления передачей в реальном времени (Real-time Transport Control Protocol, RTCP). Сэмплы дорожки с указаниями о приеме MPEG2-TS содержат пакеты MPEG2-TS или указания для составления пакетов MPEG2-TS на основе ссылок на дорожки медиа-информации. Транспортный поток MPEG-2 является мультиплексным потоком из элементарных потоков аудио и видеопрограмм и некоторой информации метаданных. Он может содержать также несколько аудиовизуальных программ. Дорожка с указаниями о приеме RTP представляет один поток RTP, обычно одного типа медиа-информации. Дорожка с указаниями о приеме RTCP может быть связана с дорожкой с указаниями о приеме RTP и представляет пакеты RTCP, принимаемые для связанного с ними потока RTP.
[0055] Протокол RTP используется для передачи непрерывных мультимедийных данных, таких как кодированные аудио- и видеопотоки в сети на основе протокола Интернет (IP). Протокол управления передачей в реальном времени (RTCP) образует пару с протоколом RTP, то есть, RTCP должен использоваться, чтобы всегда дополнять RTP, когда это позволяет сетевая и прикладная инфраструктура. RTP и RTCP обычно передаются по протоколу пользовательских дейтаграмм (UDP), который, в свою очередь, передается по протоколу Интернет (IP). Имеются две версии протокола IP: IPv4 и IPv6, отличающиеся помимо всего прочего числом адресуемых конечных точек. Протокол RTCP используется для того, чтобы контролировать качество услуг, предоставляемых сетью, и передавать информацию об участниках в продолжающемся сеансе связи. Протоколы RTP и RTCP предназначены для сеансов связи, которые располагаются в диапазоне от связи одного с одним до больших групп из тысяч оконечных точек многоадресного вещания. Чтобы управлять полной скоростью передачи данных, вызванной пакетами RTCP в многостороннем сеансе связи, интервал передачи пакетов RTCP, передаваемых одиночной оконечной точкой, должен быть пропорционален числу участников в сеансе связи. Каждый формат кодирования медиа-информации имеет специфический формат полезной информации RTP, который определяет, как мультимедийные данные структурируются в полезной информации пакета RTP.
[0056] Требования к метаданным для файлового формата DVB можно классифицировать по четырем группам, основанным на типе метаданных: 1) специфические для сэмпла синхронизирующие метаданные, такие как временные метки представления; 2) индексы; 3) сегментированные метаданные и 4) закладки пользователя (например, для любимых мест в контенте).
[0057] Для метаданных синхронизации, специфических для сэмпла, могут быть различные временные шкалы (timelines), чтобы указывать специфические для сэмпла синхронизирующие метаданные. Временные шкалы могут требоваться для охвата всей длительности записанных потоков. Временные шкалы могут приостанавливаться. Например, временная шкала А может быть создана на заключительной стадии монтажа фильма. Провайдер услуг или другой объект может вставить коммерческие передачи и предоставить временную шкалу для коммерческих радиопередач. Временная шкала А может быть приостановлена, в то время как коммерческие передачи будут продолжаться. Временные шкалы могут передаваться также непосредственно после контента. В одной форме осуществления изобретения сэмплы временной шкалы могут переноситься в элементарных потоках программы (Program Elementary Streams, PES) MPEG-2. Поток PES передает элементарный битовый поток аудио или видео, и, следовательно, временные шкалы точно синхронизируются с кадрами аудио и видео. В этой связи можно сослаться на техническую спецификацию ETSI TS 102 823 "Specification for the carriage of synchronized auxiliary data" ("Спецификация для передачи синхронизированных вспомогательных данных"), которая включена в данное описание путем ссылки на соответствующий источник.
[0058] Индексы могут включать, например, точки видеодоступа и поддержку режима спецэффектов (например, ускоренного просмотра вперед/назад, замедленного просмотра). Такие операции могут требовать, например, индикации самодекодируемых изображений, декодирования начальных точек и индикации опорных и неопорных изображений.
[0059] В случае сегментированных метаданных, услуги DVB могут быть описаны справочником услуг согласно определенной схеме метаданных, такой как справочник широковещательного контента (Broadcast Content Guide, BCG), "телевидение в любое время" (TV-AnyTime) или электронный справочник услуг (Electronic Service Guide, ESG) для системы передачи данных согласно протоколу IP (IP Datacasting, IPDC). Описание может применяться только к части потока. Следовательно, файл может иметь информацию нескольких описательных сегментов (например, описание конкретного сегмента программы, такое как "Отпуск на Корсике около Каржеза").
[0060] Кроме того, структуры метаданных и индексации файлового формата DVB должны быть расширяемыми, и должны поддерживаться определяемые пользователем индексы. Дополнительно, должен быть способ быстрого доступа к элементам в файле (например, через таблицы индексов). Более того, должна быть возможность сообщать о точности любого индекса. Например, индекс может быть совершенно точным, с точностью до ± указанного количества или только эвристическим предположением.
[0061] Были предложены различные методы выполнения индексации и реализации сегментированных метаданных. Такие методы включают, например, события сэмпла и свойства сэмпла. Механизм события сэмпла позволяет составлять список сэмплов, связанных с конкретными типом события и индексом описания события в одной структуре данных, называемой блоком SampleToEvent. Каждый элемент в списке может дополнительно сопровождаться значением или описанием, имеющим определенный размер в байтах. Сэмплы перечисляются со ссылкой на свои номера сэмплов на связанной дорожке. Перечисление всех сэмплов для конкретного типа события необязательно. Разрешенные значения типа события предопределяются и специфицируются, например, в спецификации файлового формата DVB. Для каждого используемого типа события в любом блоке SampleToEvent есть соответствующий блок SampleEventDescription, связанный с тем же самым типом события. Блок SampleEventDescription содержит список элементов описания событий сэмпла, каждый из них связан с уникальным индексом описания события (начинающимся с 1 и увеличивающимся на 1 с каждым элементом в списке). Синтаксис и семантика элементов описания события сэмпла определяются типом события и специфицируются, например, в спецификации файлового формата DVB. Семантика, определенная для конкретного индекса описания сэмпла и типа события, применяется к тем сэмплам, которые связаны с блоками этого индекса описания сэмпла и типом события в блоках SampleToEvent. Блоку SampleToEvent разрешается находиться во фрагменте movie. Следовательно, листинг событий сэмпла может выполняться фрагмент за фрагментом. Могут существовать многочисленные экземпляры блоков SampleToEvent и SampleEventDescription для различных типов событий, но может быть по меньшей мере один блок SampleToEvent конкретного типа события на каждый фрагмент movie и по меньшей мере один блок SampleEventDescription конкретного типа события в файле.
[0062] Синтаксис блока SampleToEvent и блока SampleEventDescription специфицируется следующим образом:
[0063] Семантика элементов синтаксиса, используемых в блоке SampleToEvent и блоке SampleEventDescription, специфицируется следующим образом:
event_type - 32-битовое целое число без знака, которое должно содержать четырехзначный код типа события, сформированный из знаков американского стандартного кода для обмена информацией (American Standard Code for Information Interchange, ASCII).
entry_count - 32-битовое целое число без знака с числом входов в следующий цикл.
event_desc_index - 32-битовое целое число без знака с индексом SampleEventDescriptionEntry.
sample_count - 32-битовое целое число без знака с числом входов в следующий цикл, который содержит номера сэмплов, к которым применяется событие.
value является массивом специфических для события данных. Длина этого поля указывается с помощью event_data_length в соответствующем SampleEventDescriptionEntry. Это поле имеет постоянный размер для всех индексов в этом цикле, а для индексов переменной длины должно быть применено дополнение.
[0064] В одноадресных, многоадресных и широковещательных потоковых приложениях доступные потоки объявляются и их форматы кодирования характеризуются, чтобы дать возможность каждому приемнику сделать заключение, может ли он успешно декодировать и воспроизвести контент. Иногда предоставляется множество различных опций формата для одного и того же контента, из которых каждый приемник может выбрать самую подходящую для его возможностей и/или пожеланий конечного пользователя. Доступные потоки медиа-информации часто описываются соответствующим типом медиа-информации и ее параметрами, которые включаются в описание сеанса связи, отформатированного согласно протоколу описания сеанса связи (Session Description Protocol, SDP). В приложениях одноадресной потоковой передачи описание сеанса связи обычно переносится с помощью потокового протокола реального времени (Real-Time Streaming Protocol, RTSP), который используется для установления потокового сеанса связи и управления им. В многоадресных и широковещательных потоковых приложениях описание сеанса связи может переноситься как часть электронного справочника услуг (Electronic Service Guide, ESG) для услуги. Информация SDP для широковещательного потока может обновляться в течение передачи. Следовательно, информация SDP для записываемого потока должна храниться таким образом, чтобы позже ее можно было обновить.
[0065] Обратимся теперь к фиг.5А, где показан способ 500 согласно форме осуществления изобретения, посредством которого потоковые данные эффективно сохраняются и организуются. Согласно форме осуществления изобретения потоковая медиа-информация принимается, например, в приемном блоке или другом устройстве (блок 510). Потоковые данные, которые могут быть по меньшей мере одним потоком медиа-информации или мультимедийной информации, записываются в файл (блок 520). В терминах базового файлового формата ISO, принимаемый по меньшей мере один поток медиа-информации или мультимедийной информации, может записываться в файл в виде дорожки с указаниями о приеме. Метаданные, которые применимы к подмножеству потоковых данных, идентифицируют (блок 530). Например, могут идентифицироваться метаданные, применимые к определенным сэмплам дорожки с указаниями о приеме. Группы сэмплов потоковых данных, имеющих идентичный контент метаданных определенного типа метаданных, формируются и идентифицируются в файле (блок 540). В связи с этим, группирование сэмплов, основанное на некотором типе метаданных, может указываться блоком описания группы сэмплов (sample group description box), и сэмплы могут отображаться на определенный контент метаданных, включаемых в блок описания группы сэмплов с помощью блока sample-to-group. В другой форме осуществления изобретения определенный тип метаданных рассматривается как включающий, как тип, указывающий синтаксис и семантику контента метаданных, так и часть контента метаданных, которая остается неизменной при группировании. Например, тип метаданных может указывать метаданные временной шкалы, а часть метаданных, остающаяся неизменной при группировании, может включать идентификатор временной шкалы.
[0066] Обратимся теперь к фиг.5В, на которой показан способ 505 согласно другой форме осуществления изобретения. В форме осуществления изобретения на фиг.5В потоковая мультимедийная информация принимается, например, в приемном блоке или другом устройстве (блок 515). Потоковые данные, которые могут быть по меньшей мере одним потоком медиа-информации или мультимедийной информации, записываются в файл и связываются с дорожкой с указаниями о приеме в файле (блок 525). По меньшей мере один сэмпл метаданных, применимых для сэмпла с указаниями о приеме, идентифицируется (блок 535). Этот по меньшей мере один сэмпл метаданных затем записывается в файл и связывается с дорожкой синхронизированных метаданных (блок 545). Группы сэмплов потоковых данных, имеющие идентичный контент метаданных некоторого типа метаданных, формируются и идентифицируются в файле (блок 555). Группирование сэмплов, основанное на некотором типе метаданных, указывается блоком описания группы сэмплов, и сэмплы метаданных могут отображаться на некоторый контент метаданных, включаемых в блок описания группы сэмплов с помощью блока sample-to-group. Как описано выше, некоторый тип метаданных может также рассматриваться как включающий, и тип, указывающий синтаксис и семантику контента метаданных, и часть контента метаданных, которая остается неизменной при группировании. Следует заметить, что последовательная обработка блоков, предложенная на фиг.5В, может быть применена к различной гранулярности разбиения мультимедийных данных и метаданных в диапазоне от подмножества сэмпла до полного потока. Различные блоки могут применяться также к различным гранулярностям разбиения данных. В одной схеме блоки 515, 525, 535, 545 итерационно применяются к отдельным сэмплам с указаниями о приеме и сэмплам метаданных.
[0067] Один тип группирования определяется для каждого типа метаданных или индекса в спецификации файлового формата DVB. Примеры возможных типов группирования включают следующие типы:
- Любые метаданные, указываемые handler_type, используемым для блока meta. Каждая группа сэмплов связана с одним элементом схемы метаданных. Схема метаданных может быть одной из определенных в спецификациях DVB (BCG, TV-Anytime, ESG IPDC).
- Любой тип индекса (например, те, которые предложены в документе DVB TM-FF0035, такие как индикация самодекодируемых изображений, начальные точки декодирования и индикации опорных и неопорных изображений).
- Информация SDP для принимаемых потоков RTP.
[0068] Обратимся теперь к фиг.6, где показано приводимое в качестве примера устройство согласно форме осуществления данного изобретения. Устройство 600, такое как приемник, снабжено генератором 610 файла DVB, запоминающим устройством 620 и процессором 630. Специалистам в данной области техники будет понятно, что различные компоненты могут быть разделены на дополнительные компоненты или объединены в меньшее число компонентов. Различные компоненты могут содержать рабочую программу для выполнения своих функций. После получения потоковых данных генератор 610 файла DVB создает файл DVB из принятых пакетов. В связи с этим генератор 610 файла DVB принимает сам поток(-и) пакетов и связанные метаданные (такие как BCG, TV-Anytime или IPDC ESG). Устройство 600 записывает принятые пакеты в файл (в раздел mdat файла, если блоки moov и mdat находятся в одном и том же файле) как сэмплы дорожки с указаниями о приеме в запоминающем устройстве 620. Приемник 600 может выводить также метаданные файла, которые будут позже записаны в блок moov или блок moof в зависимости от того, действительно ли используются фрагменты movie. Для любой принимаемой части метаданных приемник 600 (например, процессор 630) анализирует ее тип и создает новый блок описания группы сэмплов, если этот тип метаданных ранее не существовал. Приемник 600 также проверяет, действительно ли контент части метаданных отличается от всех метаданных, записанных ранее в файл. Если контент новый, то новый элемент создается для блока описания группы сэмплов, и контент метаданных копируется в этот элемент. Блок SampleToGroup поддерживается для каждого типа группирования, и сэмплы дорожки с указаниями о приеме отображаются в один из элементов в соответствующем блоке описания группы сэмплов.
[0069] В другой форме осуществления изобретения генератор 610 файла DVB устройства 600 создает одну или более дорожек с указаниями о приеме и метаданные файла для блока moov или блока moof. Устройство 600 также извлекает из принимаемых пакетов индексы, такие как указатели изображений, формируемых при внутрикадровом кодировании потока данных, к которым возможен произвольный доступ. Это может выполняться генератором 610 файла DVB или другим компонентом устройства 600, таким как процессор 630 или другой компонент, не показанный на фиг.6. Если один или более индексов или частей метаданных выводятся или принимаются для принимаемого пакета, устройство 600 создает сэмпл синхронизированных метаданных, содержащий индексы или части метаданных. Это также может выполняться компонентом устройства 600, таким как генератор 610 файла DVB или процессор 630. Сэмпл синхронизированных метаданных связывается с дорожкой синхронизированных метаданных, и дорожка синхронизированных метаданных ассоциируется с дорожкой с указаниями о приеме. Для любой принятой или выведенной части метаданных или индекса процессор 630 устройства 600 анализируют ее тип и создает новый блок описания группы сэмплов, если этот тип метаданных прежде не существовал. Процессор 630 также проверяет, действительно ли контент части метаданных отличается от всех метаданных, записанных ранее в файл. Если контент новый, то новый элемент создается для блока описания группы сэмплов и контент метаданных копируется в этот элемент. Блок SampleToGroup поддерживается для каждого типа группирования, и сэмплы дорожки синхронизированных метаданных отображаются в один из элементов в соответствующем блоке описания группы сэмплов.
[0070] В этой форме осуществления изобретения один сэмпл метаданных может создаваться для каждого сэмпла с указаниями о приеме, независимо от того, действительно ли индекс или часть метаданных связаны с этим сэмплом с указаниями о приеме. Полезная информация соответствующего сэмпла метаданных указывает, не связан ли какой-либо индекс или часть метаданных с сэмплом с указаниями о приеме. Возможные фрагменты дорожки синхронизированных метаданных могут синхронизироваться по соответствующей дорожке с указаниями о приеме в соответствии с первым и последним сэмплами, включенными во фрагменты. В файле в блоке или структуре на уровне заголовка дорожки (track-header-level) может указываться, имеется ли один сэмпл синхронизированных метаданных на каждый сэмпл с указаниями о приеме, и идентичны ли фрагменты дорожки синхронизированных метаданных фрагментам ассоциированной дорожки с указаниями о приеме. Когда один сэмпл метаданных создается на каждый сэмпл с указаниями о приеме, соответствующие фрагменты дорожки синхронизированных метаданных и дорожки с указаниями о приеме могут содержать сэмплы, имеющие идентичные номера сэмплов.
[0071] Следует отметить, что создание группировки сэмплов может быть реализовано рядом способов. Например, создание группировки сэмплов может не происходить одновременно с приемом и хранением самих сэмплов. Вместо этого группирование сэмплов может выполняться автономно, на основании промежуточного формата для хранения метаданных или на основании дорожки синхронизированных метаданных. Как показано на фиг.5А, блоки 530 и 540 будут выполняться после того, как был закончен прием потока. Как показано на фиг.5 В, блок 555 будет выполняться после того, как был закончен прием потока. Как видно из фиг.1, автономное создание группировки сэмплов будет приводить к двум дополнительным блокам, получающим свои входные данные от записывающего запоминающего устройства 155 и подающим выходные данные на декодер 160. Первый блок в порядке обработки может быть назван средством перезаписи файла, в которое вводится файл без группирования сэмплов для специфического типа метаданных и из которого выводится файл с этим типом группирования сэмплов. Второй блок в порядке обработки может быть назван вторым записывающим запоминающим устройством, которое может иметь свойства, сходные со свойствами записывающего запоминающего устройства 155.
[0072] Средство перезаписи файла и второе записывающее запоминающее устройство, упомянутые выше, могут находиться в том же устройстве, что и приемник 150, записывающее запоминающее устройство 155, декодер 160 или другое устройство. Кроме того, средство перезаписи файла и второе записывающее запоминающее устройство могут находиться в том же устройстве или в различных устройствах.
[0073] Принимаемые потоки могут иметь различный характер - они могут содержать несколько типов медиа-информации и программ в мультиплексном формате (транспортные потоки MPEG-2), или они могут содержать один тип медиа-информации одной программы (потоки RTP). Следовательно, работа приемника и структуры файловых форматов адаптируются соответственно, как описано ниже.
[0074] Следует отметить, что различные формы осуществления данного изобретения не ограничиваются конкретным типом группирования сэмплов, таким как группирование сэмплов, специфицированное в ISO/IEC 14496-12. Нижеследующая форма осуществления описывает механизм группирования сэмплов, который может быть применен в различных формах осуществления изобретения.
[0075] В дополнение к типу группирования, группирование сэмплов может характеризоваться нулевым или большим количеством глобальных параметров. Примеры глобальных параметров включают идентификатор программы (Program Identifier, PID) в транспортном потоке MPEG-2 и идентификатор временной шкалы. При синтаксическом анализе групп сэмплов только конкретное значение глобального параметра представляет интерес в момент, например, желаемой временной метки на конкретной временной шкале. В дополнение к перечисленным элементам описания группы сэмплов может быть выгодным допускать локальные параметры, которые могут изменяться для каждого элемента в блоке SampleToGroup. Например, временной код может быть связан с элементом в блоке SampleToGroup. При синтаксическом анализе группирования сэмплов различные значения локальных параметров перемежаются в той же структуре, то есть в том же блоке SampleToGroup.
[0076] Синтаксис механизма группирования сэмплов этой формы осуществления изобретения представлен ниже.
[0077] Представленный блок DVBSampleToGroup структурно
совместим с блоком SampleToGroup, то есть, если флаги (заголовка блока) равны 0, то синтаксис идентичен блоку SampleToGroup. Глобальные параметры, которые определены выше, представляются информацией экземпляра группирования (instance_info). Параметр static_info представляет статические значения, остающиеся неизменными для всех группируемых сэмплов. Семантика static_info зависит от grouping_type. Например, static_info может быть отформатирован согласно полезной информации DVBIndexBox (представленной далее), дающей синхронизацию и диапазоны погрешности номера сэмпла. Локальные параметры представляются полезной информацией (payload) или индексом group_description_index. Блок DVBSampleToGroup может анализироваться без знания семантики grouping_type благодаря info_length, static_length и payload_length. Программа редактора файла или устройство, которое не знает конкретный grouping_type, может редактировать блок (например, как ответ на удаление или включение сэмплов), даже без знания семантики конкретного grouping_type. Параметр sample_number указывает первый сэмпл, для которого применяется полезная информация (payload) или group_description_index, и продолжительность полезной иформации или group_description_index в значениях числа последовательных сэмплов указывается параметром sample_count. Если sample_number отсутствует, то тогда первый сэмпл, для которого применяется полезная информация (payload) или group_description_index, следует за последним сэмплом, для которого применен предыдущий вход в цикл. Значения sample_count в блоке DVBSampleToGroup увеличиваются в порядке появления. Сэмпл может быть включен только однажды в блок DVBSampleToGroup, то есть сумма предыдущих значений sample_number и sample_count меньше, чем настоящее значение sample_number. Отображения каждого сэмпла в дорожке в блок DVBSampleToGroup не требуется. Блок DVBSampleGroupDescription и group_description_index могут использоваться для перечисляемых индексов. Значение полезной информации (payload) или group_description_index для тех сэмплов, которые не отображаются в блок DVBSampleToGroup, не определено. Семантика instance_info и полезной информации (payload) специфицируются для каждого grouping_type.
[0078] Альтернативное определение для синтаксиса блока DVBSampleToGroup представлено ниже. Основным его отличием по сравнению с предыдущим случаем является то, что допускается полезная информация с изменяющейся длиной.
[0079] Фиг.7 представляет упрощенную иерархию блока, показывающую структуру вложенности для блока 700 DVBSampleToGroup, когда на group_description_index не делается ссылка (значение (flags & 2) равно 1). Блоки 700 DVBSampleToGroup находятся в блоке 710 таблицы сэмплов (stbl), который включен в блоки сведений о компоненте мультимедиа (minf) 720, медиа-информации (mdia) 730 и дорожки (trak) 740 (в таком порядке) в блоке 210 movie (moov).
[0080] Блоку 700 DVBSampleToGroup разрешается находиться во фрагменте movie. Следовательно, группирование сэмплов может выполняться фрагмент за фрагментом. Фиг.8 иллюстрирует пример файла, содержащего фрагмент movie 800, который включает блок 700 DVBSampleToGroup.
[0081] Ниже представлен синтаксис блока DVBSampleGroupDescription.
[0082] Структура блока DVBSampleGroupDescription совместима с блоком SampleGroupDescription, то есть, если флаги (в заголовке блока) установлены на 0, то синтаксис идентичен блоку SampleGroupDescription. Глобальные параметры, которые определены выше, представлены информацией экземпляра группирования (instance_info). Включение instance-info в блок DVBSampleGroupDescription позволяет обеспечить различные перечисления (то есть элементы группы сэмплов) для различных значений глобальных параметров.
[0083] Синтаксис, представленный выше для блока DVBSampleToGroup, позволяет определять только полезную информацию (payload) фиксированной длины или group_description_index для каждого входа в цикл. Для некоторых типов группирования может быть желательным иметь полезную информацию (payload) с изменяемой длиной для каждого элемента, определяемого в конкретном блоке DVBSampleToGroup. Для этой цели ниже изображен следующий механизм расширения, называемый блоком DVBSampleToGroupExtension.
[0084] Каждый вход в цикл соответствует соответствующему входу (имеющему то же самое значение счетчика циклов) в блоке DVBSampleToGroup, который имеет идентичные значения grouping_type и глобальных параметров (то есть идентичные значения info_length и instance_info). Другими словами, расширение применяется к тем же самым сэмплам, что и полезная информация, когда значение счетчика циклов одинаковое в соответствующих блоках DVBSampleToGroupExtension и DVBSampleToGroup. Если extensionjype отсутствует, то применяется заданная по умолчанию семантика для расширения grouping_type. Когда extension_type присутствует, тогда он определяет семантику расширения. Аналогично блоку DVBSampleToGroup, блок DVBSampleToGroupExtension конкретного глобального параметра и extension_type могут быть включены для каждого фрагмента movie.
[0085] В дополнение к локальным параметрам изменяемой длины для групп сэмплов, блок DVBSampleGroupExtension может использоваться для предоставления новых частей информации для группирования сэмплов при сохранении совместимости с существующими определениями групп отсчетов и синтаксическими анализаторами. Другими словами, синтаксический анализатор, не способный к интерпретации блока DVBSampleToGroupExtension или конкретного extension_type, все еще может успешно анализировать соответствующий блок DVBSampleToGroup.
[0086] В одной форме осуществления изобретения instance_info, используемый выше в синтаксисе для блоков DVBSampleToGroup, DVBSampleGroupDescription и DVBSampleToGroupExtension, является индексом для цикла, включенного в блок DVBGroupinglnstance, имеющего то же значение grouping_type, что и вышеупомянутые блоки. Синтаксис блока DVBGroupinglnstance может быть определен описанным ниже образом. Семантика instance_descr определяется grouping_type.
[0087] В одной форме осуществления изобретения extension_type
может параметризоваться аналогично глобальным и локальным параметрам, рассмотренным ранее. Другими словами, вместо того, чтобы идентифицировать расширение на основе только его extension_type, оно может быть связано с параметром, дополнительно определяющим его назначение и контекст. Связанным параметром может быть также индекс для цикла в другом блоке, который содержит фактические значения параметра.
[0088] Фиг.9 представляет упрощенную иерархию блока, показывающую структуру вложенности для блока 900 DVBGroupinglnstance, блока 910 DVBSampleGroupDescription, блока 700 DVBSampleToGroup и блока 920 DVBSampleToGroupExtension. Идентифицированные выше блоки находятся в таблиц е сэмплов (stb I) блока 710, который включен в блоки сведений о компоненте мультимедиа (minf) 720, медиа-информации (mdia) 730 и дорожки (trak) 740 (в таком порядке) в блоке 210 movie (moov). Стрелки 950, 960 и 970 показывают логическую связь. Стрелки 950 показывают, что блок 910 DVBSampleGroupDescription, блок 700 DVBSampleToGroup и блок 920 DVBSampleToGroupExtension, если они присутствуют, относятся к блоку 950 DVBGroupinglnstance (с определенными значениями grouping_type). Стрелка 960 показывает, что с некоторым grouping_type и значением флагов блок 700 DVBSampleToGroup относится к соответствующему блоку 910DVBSampleGroupDescription. Стрелка 960 показывает, что блок 920 DVBSampleToGroupExtension всегда относится к соответствующему блоку 700 DVBSampleToGroup.
[0089] Когда группирование сэмплов применяется к дорожке с указаниями о приеме MPEG2-TS (или какому-либо другому мультиплексному потоку), имеет место следующее:
- Группы отсчетов, связанные с дорожкой с указаниями о приеме, способны представлять метаданные для аудио-видео мультиплекса, например, текстовые описательные метаданные.
- Индексы и метаданные для одного типа медиа-информации могут быть представлены конкретными типами группирования.
- Приблизительные индексы могут быть представлены конкретными типами группирования. Альтернативно или дополнительно, точность индексов может указываться включением более одного непрерывного сэмпла в группу сэмплов, который указывает, что индексируемая особенность должна быть истинной в одном из непрерывных сэмплов. Например, приблизительная точка произвольного доступа может быть указана включением N непрерывных сэмплов в группу сэмплов типа точки произвольного доступа, указывающей, что один из сэмплов N должен являться позицией начала декодирования.
[0090] Когда группирование сэмплов применяется к дорожке медиа-информации или дорожке с указаниями о приеме RTP, индексы и метаданные для одного типа медиа-информации могут быть представлены конкретными типами группирования. Однако, поскольку механизм группирования сэмплов работает только на одной дорожке, должны быть представлены метаданные, которые применяются к более чем одной дорожке медиа-информации или дорожке с указаниями о приеме (ниже называемые "многодорожечными" метаданными). Эта проблема может возникать в двух случаях. Во-первых, обе дорожки медиа-информации и дорожка(-ки) с указаниями о приеме могут быть созданы из принимаемого потока. Во-вторых, может быть несколько дорожек с указаниями о приеме RTP. Предполагается, что механизм группирования сэмплов изобретения связывается с дорожками с указаниями о приеме всякий раз, когда они присутствуют в файле. Таким образом, первого вышеупомянутого случая можно избежать. Для второго случая рассматривается несколько вариантов.
[0091] Во-первых, "многодорожечные" метаданные могут быть связаны с любой относящейся к ним дорожкой. Когда метаданные связываются с дорожкой с указаниями о приеме или дорожкой медиа-информации, метаданные неявно применяются ко всем дорожкам с указаниями о приеме или дорожкам медиа-информации, соответственно, в том же самом периоде времени декодирования. Эта альтернатива требует, чтобы синтаксические анализаторы проверяли все дорожки на возможные "многодорожечные" метаданные.
[0092] Альтернативно, "многодорожечные" метаданные могут быть связаны с "мастер-дорожкой". Мастер-дорожка может явно указываться новым блоком, например, в блоке moov. Новый блок также может перечислять все взаимно связанные дорожки для "многодорожечных" метаданных.
[0093] В другой форме осуществления изобретения дорожка синхронизированных метаданных может быть связана со многими дорожками медиа-информации или дорожками с указаниями о приеме RTP. Группирование сэмплов может быть применено к дорожке синхронизированных метаданных. Дорожки мультимедиа и дорожки с указаниями о приеме, на которые делается ссылка, могут быть перечислены как ссылки на дорожки типа 'cdsc'. Это служит явной индикацией, каким дорожкам принадлежат метаданные. Если используется длительность сэмпла, она может быть установлена так, чтобы она согласовывалась с продолжительностью существования каждого элемента метаданных.
[0094] В одной форме осуществления данного изобретения, в описанной выше форме осуществления "мастер-дорожки", новый блок называется блоком связи дорожек (track relation box) и указывает связь между дорожками. Блок связи дорожек определяется следующим образом:
Тип блока: 'trel'
Контейнер: Блок movie ('moov')
Обязательный: Нет
Количество: Нуль или один
[0095] Синтаксис для блока связи дорожек является следующим:
[0096] В вышеприведенном синтаксисе version - целое число, которое
указывает версию блока связи дорожек (0, как описано выше), a flags - 24-битовое целое число с флагами. Следующие биты определяются, где бит 0 -младший значащий бит, бит 1 - второй младший значащий бит и т.д. Когда бит 0 равен 1, это указывает, что информация групп приема присутствует в этом блоке; когда бит 0 равен 0, это указывает, что информация групп приема не присутствует в этом блоке. Специалистам в данной области техники очевидно, что другие типы взаимосвязи дорожек также могут быть определены и указаны другим номером бита, отличным от бита 0.
[0097] num_reception_groups указывает число групп приема, о которых сообщается. Группа приема содержит дорожки с указаниями о приеме, которые принимаются одновременно или в ином случае являются частью одной и той же записи. Кроме того, группа приема может содержать дорожки медиа-информации, которые формируются на основе дорожек с указаниями о приеме, track_id указывает идентификатор j-й дорожки в i-й группе приема, о которой сообщается. Первый track_id группы приема является мастер-дорожкой, которая может содержать сегментированные метаданные, что указывается группами сэмплов, и связывается совместно со всеми дорожками в группе приема. Никакой другой дорожке, помимо мастер-дорожки, не может разрешаться содержать сегментированные метаданные, связанные со всеми дорожками в группе приема.
[0098] Когда создаются дорожки синхронизированных метаданных для индексов или сегментированных метаданных, в одной форме осуществления изобретения могут выполняться представленные ниже действия.
[0099] Одна дорожка синхронизированных метаданных создается для специфических для программы индексов и метаданных транспортного потока MPEG-2 одной программы. Специфические для программы индексы и метаданные одинаково применяются к аудио- и видеопотокам программы и к любым другим возможным компонентам программы, таким как потоки субтитров.
[0100] Одна дорожка синхронизированных метаданных на каждую программу создается для специфических для программы индексов и метаданных многопрограммного транспортного потока MPEG-2. В связи с этим дорожка синхронизированных метаданных может содержать метаданные только одной программы. Программа может идентифицироваться ее значением program_number, которое является 16-битовым уникальным идентификатором для программ в транспортном потоке MPEG-2, используемым, например, в таблицах ассоциаций программ и структуры программы транспортного потока MPEG-2. В одной форме осуществления изобретения параметр program_number может быть включен в структуру элемента сэмпла для дорожек синхронизированных метаданных, связанных с дорожками с указаниями о приеме MPEG2-TS.
[0101] Одна дорожка синхронизированных метаданных создается для специфических для медиа-информации индексов каждого элементарного потока программы MPEG2-TS. Специфические для медиа-информации индексы могут применяться только к конкретному типу медиа-информации. Например, они могут быть указателями опорных и неопорных и кадров видео или указателями уровня временной масштабируемости видео.
[0102] Одна дорожка синхронизированных метаданных может создаваться для специфических для медиа-информации индексов для потока RTP. Одна дорожка синхронизированных метаданных может создаваться для специфических для программы индексов нескольких потоков RTP. Дорожка синхронизированных метаданных связывается с дорожками с указаниями о приеме RTP с помощью ссылок на дорожки. В другой форме осуществления изобретения дорожка синхронизированных метаданных связывается с "мастер-дорожкой" с указаниями о приеме ссылкой на дорожку, а другие связанные дорожки с указаниями о приеме указываются посредством TrackRelationBox, как представлено выше.
[0103] Даже при том, что одна специфическая для программы дорожка синхронизированных метаданных и одна специфическая для медиа-информации дорожка синхронизированных метаданных в элементарном потоке медиа-информации часто могут быть предпочтительными, может создаваться более одной дорожки синхронизированных метаданных. Например, если альтернативная временная шкала для программы предоставляется непосредственно вслед за программой, то с точки зрения компоновки файла является более практичным создать новую синхронизированную дорожку метаданных для предоставляемой временной шкалы.
[0104] Для форм осуществления изобретения, использующих дорожки синхронизированных метаданных, приемник в соответствии с формой осуществления данного изобретения в качестве ответа на каждый принимаемый пакет может работать следующим образом:
- Преобразует принятый пакет в сэмпл с указаниями о приеме в блоке mdat.
- Выводит индексы и сегментированные метаданные. Записывает связанный сэмпл(-ы) метаданных, если таковой имеется, в блок mdat (непосредственно после соответствующего сэмпла с указаниями о приеме).
- Обновляет блоки в заголовке дорожки с указаниями о приеме.
- Обновляет блоки в заголовке дорожки синхронизированных метаданных.
- Если память, зарезервированная для заголовка дорожки, приближается к полному заполнению (и не может быть динамически перераспределена), начинает новый фрагмент movie.
[0105] Приемник с большим объемом буферной памяти может размещать несколько сэмплов метаданных и сэмплов с указаниями о приеме в непрерывных сегментах (chunks) памяти и, следовательно, экономить область в запоминающем устройстве, необходимую для блока Sample To Chunk и блока Chunk Offset.
[0106] Индексы и сегментированные метаданные имеют следующие характеристики, когда они входят в сэмплы с указаниями о приеме, которые связаны с ними. Индекс может указывать, что характеристика действительна от связанного с ним сэмпла с указаниями о приеме вперед, обычно до следующего индекса того же самого типа. Например, индекс может указывать изменение полярности скремблирования в транспортном потоке MPEG-2. Индекс может указывать характеристику отдельного сэмпла с указаниями о приеме или события, которое синхронизируется с сэмплом с указаниями о приеме. Закладка является примером такого индекса.
[0107] Индекс может указывать характеристику потока между связанным с ним сэмплом с указаниями о приеме и предыдущим сэмплом с указаниями о приеме. Индикация отсутствующих пакетов является таким индексом.
[0108] Индекс может указывать характеристику кодированного сэмпла медиа-информации. Отметим, что дорожки синхронизированных метаданных, предлагаемые в этом изобретении, связываются с сэмплами с указаниями о приеме, сэмплы с указаниями о приеме обычно не содержат точно один сэмпл медиа-информации, и данные для одного сэмпла медиа-информации могут находиться или не находиться в непрерывных сэмплах с указаниями о приеме (например, потому что элементарные аудио- и видеопотоки в транспортном потоке MPEG-2 мультиплексируются). Следовательно, есть по меньшей мере два варианта присвоения индекса сэмплам медиа-информации: (1) индекс связывается только с первым сэмплом с указаниями о приеме, содержащим данные для сэмпла медиа-информации; и (2) индекс связывается со всеми сэмплами с указаниями о приеме, содержащими данные для сэмпла медиа-информации.
[0109] Группы сэмплов, связанные с синхронизированными дорожками метаданных, которые содержат индексы и сегментированные метаданные, могут быть созданы каким-либо из следующих способов:
- Группа сэмплов может указывать значение индекса. Например, могут указываться характеристики сэмпла видео (изображение, формируемое при внутрикадровом кодировании, к которому возможен произвольный доступ;
временной уровень изображения). В одной форме осуществления изобретения блок описания группы сэмплов содержит разрешенные или используемые значения для индекса. В другой форме осуществления изобретения полезная информация или поля расширения, включенные в блок DVBSampleToGroup или блок DVBSampleToGroupExtension, соответственно, могут указывать значения индексов.
- Группа сэмплов может указывать, действительно ли индекс конкретного типа изменился по сравнению с предыдущим сэмплом, то есть продолжительность существования индексов. Например, могут указываться изменения ключа защиты для зашифрованного контента. В одной форме осуществления изобретения блок DVBSampleToGroupExtension может использоваться для того, чтобы нести значения индексов, если блок sample to group содержит только индикацию, изменилось ли значение индекса.
- Группа сэмплов может указывать закладки. Блок описания группы сэмплов сам содержит закладки.
- Группа сэмплов может указывать заголовки и другую информацию для сегментированных метаданных. Блок описания группы сэмплов содержит заголовки. Один механизм для того, чтобы связывать структурные метаданные в группы сэмплов согласно некоторой конкретной схеме метаданных, представлен ниже. Секция метаданных, отформатированная согласно некоторой конкретной схеме метаданных, включается как элемент в блок метаданных, связанный с дорожкой синхронизированной метаданных, movie или целым файлом. Вместо включения секции метаданных самой по себе также в блок описания группы сэмплов, блок описания группы сэмплов содержит ссылки (обычно как идентификаторы элементов) на элементы, содержащие соответствующую секцию метаданных.
- Группа сэмплов может указывать значение набора (или кортежа) индексов или сегментированных метаданных некоторой характеристики. Например, группа сэмплов может указывать значение пары индексов, таких как временной уровень в иерархической структуре временной масштабируемости и тип изображения (изображение, формируемое при внутрикадровом кодировании, межкадровом кодировании или с двунаправленным предсказанием) для кодированного потока видеоданных.
[0110] Если индекс связан с сэмплом кодированной медиа-информации, группа сэмплов может указывать только первый сэмпл с указаниями о приеме, содержащий данные для сэмпла медиа-информации, или все сэмплы с указаниями о приеме, содержащие данные для сэмпла медиа-информации.
[0111] Приводимые в качестве примера типовые форматы элемента сэмпла могут быть представлены следующим образом:
[0112] IndexSampleEntry указывает типы индексов, которые могут
присутствовать в сэмплах, связанных с этим элементом сэмпла. Если entry_count равен 0, любые индексы могут быть включены в сэмплы, связанные с этим элементом сэмпла. Если entry_count больше 0, задается цикл значений index_type_4cc, и каждое значение index__type_4cc указывает код с четырьмя знаками для блока, который может присутствовать в сэмплах, связанных с этим элементом сэмпла. Следовательно, элементы сэмпла для дорожки синхронизированных метаданных указывают типы метаданных, которые могут встретиться в дорожке синхронизированных метаданных. Следует отметить, что могут быть предусмотрены другие механизмы для индикации типов метаданных, присутствующих или разрешенных в дорожке синхронизированных метаданных, например, в виде расширений блоков заголовка дорожки.
[0113] MPEG2TSIndexSampleEntry используется для дорожек синхронизированных метаданных, содержащих специфические для программы индексы и метаданные, и связан с дорожкой с указаниями о приеме MPEG2-TS. Параметр program_number идентифицирует программу в транспортном потоке MPEG-2.
[0114] MPEG2TSMedialndexSampleEntry используется для дорожек синхронизированных метаданных, содержащих специфические для медиа-информации индексы и метаданные, и связан с элементарным потоком, содержащимся в дорожке с указаниями о приеме MPEG2-TS. Параметр pid -идентификатор для элементарного потока в транспортном потоке MPEG-2.
[0115] RTPIndexSampleEntry используется для дорожек синхронизированных метаданных, содержащих специфические для медиа-информации индексы и метаданные, и связан с дорожкой с указаниями о приеме RTP.
[0116] RTPReceptionGrouplndexSampleEntry используется для индексов и метаданных, специфических для программы, и связан с более чем одной дорожкой с указаниями о приеме RTP.
[0117] Приводимый в качестве примера формат сэмпла для дорожки синхронизированных метаданных, содержащей индексы и сегментированные метаданные, представлен ниже:
[0118] IndexSample содержит нуль или более блоков индекса. Код с четырьмя знаками для включенных блоков индекса должен быть среди тех, которые указываются связанным элементом сэмпла.
[0119] Приводимые в качестве примера блоки индекса, которые могут использоваться вместе с изобретением и которые были первоначально предложены в документе DVB TM-FF0058rO, представлены ниже:
[0120] Следующие значения определены для time_accuracy и sample_accuracy: 0×0: точный, 0×1: неопределенный, 0×2: эвристический, 0×3: зарезервированный (максимум не предусмотрен), 0×4-0×7: специфический для приложения (максимум не предусмотрен), 0×8: максимальная указанная погрешность, 0×9: зарезервированный (максимальная обеспечиваемая погрешность), 0×А - 0×F: специфический для приложения (максимальная обеспечиваемая погрешность).
[0121] video_event_mask - битовая маска, указывающая событие(-ия) видео, которое начинается в указанном сэмпле, согласно табл.1, приведенной ниже.
Таблица 1:
Значения маски, используемые для video_event_mask
Маска
Значение
0×01
Точка начала декодирования видео (например, точка произвольного доступа)
0×02
Самодекодируемое изображение (например, кадр I)
0×04
Опорное изображение
0×08
Изображение Р
0×10
Изображение В
[0122] video_event_length - число сэмплов (транспортных пакетов), которые составляют это видеоизображение, включая текущий пакет.Значение '0' должно использоваться для обозначения "неизвестно". Блок Sync Sample также может нести индексы для событий типа 0×01.
[0123] PCR_discontinuity_flag является полем, которое устанавливается равным "1", если имеется разрыв опорной синхронизации программы (Program Clock Reference, PCR) в связанном событии PCR; иначе оно устанавливается равным "0".
[0124] PCR_value является значением 27 МГц, выделяемом из PCR, которое указывается, например, согласно уравнению (2-1) в международном стандарте ISO/IEC 13818-1.
[0125] polarity - полярность связанного события согласно табл.2, приведенной ниже:
Таблица 2
Интерпретация значений полярности
Значение
Смысловое значение
0
Очищено
1
Нечетная полярность
2
Четная полярность
[0126] Это значение указывает новое значение полярности, которое применяется, и сэмпл синхронизированных метаданных соответствует первому сэмплу с указаниями о приеме с этой новой полярностью. Индекс изменения полярности будет считаться имеющим место только тогда, когда полярность потока пакетов в данном идентификаторе PID изменяется, а не когда она изменяется между пакетами различных идентификаторов PID. aligned(8) class DVBCAIndex extends DVBIndexBox('idci'){
unsigned int(8) polarity;
unsigned int(8) ca_event_data[];
}
[0127] ca_event_data - байты, которые включают пакет, несущий событие условного доступа (Conditional Access, CA); обычно это будет сообщение управления доступом (Entitlement Control Message, ECM). ca_event_data продолжается до конца блока. Длина ca_event_data может быть определена из длины блока.
[0128] timeline_id - идентификатор временной шкалы согласно ETSI TS 102 823, пункт 5.2.2.4, и tick_format является полем, определяющим формат, который принимает поле absolute_ticks согласно спецификации (Synchronized Auxiliary Data, SAD), ETSI TS 102 823, absolute_ticks - временной код, кодируемый, как указано полем tick_format.
[0129] Блок DVBIDTable может быть включен, например, в блок таблицы сэмплов для дорожки синхронизированных метаданных.
table_id - идентификатор таблицы обновления версии секции, которая индексируется.
table_id_extension (или program_number для таблицы структуры программы (Program Map Table, PMT), или transport_stream_id для таблицы ассоциаций программ (Program Association Table, PAT) из обновления версии секции, которая индексируется.
section_no - номер секции, к которой это обновление применяется.
section_data является полем, которое может отсутствовать. Если оно присутствует, оно содержит данные секции новой версии. Данные секции должны продолжаться до конца блока. Длина section_data может быть определена из длины блока.
[0130] running_status - поле, указывающее состояние идентификатора ID, на который ссылается блок ID_Table_index (например, если идентификатор ID выполняется или приостановлен). Значение этого блока определяется в таблице 105 спецификации TS 102 323. ID_Table_index является индексом в DVBIDTableBox, указывающим идентификатор ID, который применяется в этом месте с указанным running_status.
[0131] ID_count - число идентификаторов, которые используются в DVBIDTable. ID - идентификатор, отформатированный в формате унифицированного идентификатора ресурса (Uniform Resource Identifier, URI).
[0132] Ниже приведены дальнейшие примеры блоков индексов:
[0133] sdp_text - строка с нулевым символом в конце, содержащая
описание протокола SDP, которое является действительным, начиная с указанного сэмпла.
[0134] key_message содержит криптографический ключ, который используется для декодирования полезной информации пакета, начиная со связанного с ним сэмпла с указаниями о приеме.
[0135] Для packet_header_error значение 0×0 указывает, что заголовок пакета не содержит никаких ошибок. Значение 0×1 указывает, что заголовок пакета может содержать или не содержать ошибки. Значение 0×2 указывает, что заголовок пакета содержит ошибки. Значение 0×3 зарезервировано.
[0136] Для packet_payload_error значение 0×0 указывает, что полезная информация пакета не содержит никаких ошибок. Значение 0×1 указывает, что полезная информация пакета может содержать или не содержать ошибки. Значение 0×2 указывает, что полезная информация пакета содержит ошибки. Значение 0×3 зарезервировано.
[0137] Для packet_sequence_gap значение 0×0 указывает, что пакет непосредственно следует за предыдущим пакетом в дорожке с указаниями о приеме в порядке передачи. Значение 0×1 указывает, что пакет может непосредственно следовать или не следовать за предыдущим пакетом в дорожке с указаниями о приеме в порядке передачи. Значение 0×2 указывает, что пакет непосредственно не следует за предыдущим пакетом в дорожке с указаниями о приеме в порядке передачи, например, что есть по меньшей мере один отсутствующий пакет, предшествующий этому пакету. Значение 0×3 зарезервировано.
[0138] В другой форме осуществления изобретения формат Index Sample Entry для дорожки синхронизированных метаданных, содержащий индексы, является следующим:
[0139] IndexSampleEntry указывает типы индексов, которые могут присутствовать в сэмплах, связанных с этим элементом сэмпла. Параметр program_number идентифицирует программу в транспортном потоке MPEG-2. Если entry_count равен 0, то любые индексы могут быть включены в сэмплы, связанные с этим элементом сэмпла, и используются значения "по умолчанию" (согласно первому выпуску спецификации файлового формата DVB) instance_info_length, payload_length и extension_count.
sample_number_offset определяет смещение, которое будет добавлено к sample_number в связанных сэмплах синхронизированных метаданных, чтобы получить номер сэмпла на той дорожке, на которую ссылаются.
index_type_4cc указывает тип индекса, который может присутствовать в сэмплах, связанных с этим элементом сэмпла. Instance_info_length, payload_length и extension_count указывают значения этих полей, используемых в сэмплах индекса. Синтаксический анализатор файлового формата DVB игнорирует те байты index_instance_info, index_payload и index_extension, которые находятся вне диапазона байтов, определенного в этом документе для соответствующего index_type_4cc. Этот механизм позволяет обеспечить добавление полей обратно совместимым способом в более поздние версии формата индекса. Если имеется много дорожек синхронизированных метаданных для дорожки с указаниями о приеме, то значения index_type_4cc могут использоваться для определения местонахождения дорожки, содержащей желаемые индексы.
[0140] Сэмпл индекса содержит одно или более событий индекса, каждое из которых имеет следующий абстрактный синтаксис. Семантика index_instance_info и index_payload определяется 32-разрядным index_type, и семантика расширения индекса определяется extension_type, как определено впоследствии, index_type соответствует grouping_type при группировании сэмплов.
[0141] Семантика index_instance_info, index_payload, extension _type и index_extension в структуре IndexEvent идентична семантике index_instance_info, index_payload, extension_type и index_extension, соответственно, используемой в блоках DVBSampleToGroup, DVBSampleGroupDescription и DVBSampleToGroupExtension. Это соответствие допускает прямое преобразование между индексами, включенными в дорожки синхронизированных метаданных, и индексами, указанными блоками DVBSampleToGroup.
[0142] Синтаксис некоторых событий индекса приведен ниже, где семантика элементов синтаксиса одинакова с описанной в форме осуществления изобретения, представленной ранее.
[0143] Имеется по меньшей мере два вида использования описательных метаданных. Во-первых, когда передача записывается непрерывно (например, когда ответ потребителя инициирует мгновенную операцию записи, а не запланированную запись конкретной программы), контент от более чем одной программы может быть записан в один файл. Таким образом, информация электронного справочника услуг (ESG) также сохраняется в файле для более чем одной программы. Механизм индексации может использоваться, чтобы отобразить группу сэмплов, содержащих программу с соответствующими фрагментами информации ESG. Во-вторых, различные "сюжетные линии" (storylines), такие как монтаж сводок или экстренных выпусков, могут обеспечиваться вещательными компаниями. Например, вещательная компания может предоставлять информацию, в частности, периоды времени и описания, о голах при игре в футбол, основных ключевых моментах игры или выделять конкретного игрока во время игры. Эти сюжетные линии могут предоставляться после записи и могут использовать определенную временную шкалу (как рассмотрено в представленном ранее индексе временного кода). Механизм индексации может использоваться для указания сюжетных линий в записанном файле.
[0144] Блок DVBSampleToGroup может использоваться для описательных или сегментированных метаданных следующим образом. Значение grouping_type может разграничивать метаданные справочника ESG и сюжетной линии, даже притом, что они могут быть структурно идентичны, и может использоваться также одинаковый grouping_type. Глобальный параметр instance_info используется для разграничения между сюжетными линиями. Для метаданных ESG instance_info может содержать идентификатор item_id элемента метаданных для инициирования метаданных ESG (таких как предоставляющих информацию о провайдере ESG), или же он может использоваться для разграничения между различными программами метаданных ESG. Практически, instance_info может содержать item_id элемента метаданных, включающего информацию о сюжетных линиях или ESG. Альтернативно, instance_info может указывать на блок DVBGroupinglnstance, который может содержать, например, текстовое название каждой сюжетной линии или идентификаторы URI, указывающие на описания. Входы в цикл, включенные в блок DVBSampleToGroup, могут использоваться следующим образом. Если используется блок полезной информации постоянного размера, он может содержать идентификатор item_id элемента метаданных, содержащего описание группируемых сэмплов, таких как соответствующий фрагмент ESG или описательные данные о событии (эпизоде) в сюжетной линии. Если group_descriptionj_index используется в цикле, блок DVBSampleGroupDescription может содержать идентификаторы URI соответствующих фрагментов ESG или описательных фрагментов расширяемого языка разметки (extensible Markup Language, XML) о событии в сюжетной линии. Альтернативно, блок DVBSampleGroupDescription может содержать текстовое описание событий сюжетной линии. Когда используется синтаксис для блока DVBSampleToGroup, который допускает полезную информацию с изменяемой длительностью, полезной информацией может быть идентификатор URI, используемый для упомянутых выше целей, или текстовое описание события.
[0145] Фиг.10 иллюстрирует файл, включающий образование двух групп сэмплов согласно блоку DVBSampleToGroup для индекса временного кода. Как определяет вышеприведенный синтаксис, значение timeline_id служит глобальным параметром для группирования сэмплов индекса временного кода. В блоке 1010 timeline_id равен 100, тогда как в блоке 1020 timeline_id равен 200.
[0146] Когда группы сэмплов включены в дорожку с указаниями о приеме или дорожку медиа-информации, поиск позиции в файле на основе желаемых сегментированных метаданных или свойстве индекса может быть выполнен синтаксическим анализатором файла с помощью следующих шагов:
1. Выбрать соответствующий блок описания группы сэмплов (на основании его типа группирования).
2. Выбрать желаемый индекс описания группы в блоке описания группы сэмплов.
3. Найти желаемый индекс описания группы из блока(-ов) SampleToGroup (выбранного типа группирования). Это обнаруживает номер сэмпла желаемых метаданных/свойства индекса.
4. Использовать блок таблицы сэмплов, чтобы определить местонахождение сэмпла в файле на основании его номера сэмпла.
[0147] Когда группы сэмплов согласно блоку DVB SampleToGroup включаются в дорожку с указаниями о приеме или дорожку медиа-информации и полезную информацию, а не используется group_description_index, поиск позиции в файле, основанный на желаемых сегментированных метаданных или свойстве индекса, может быть выполнен синтаксическим анализатором файла с помощью следующих процессов:
1. Выбрать соответствующий блок DVBSampleToGroup (на основании его типа группирования и instance_info).
2. Найти желаемое значение полезной информации в блоке(-ах) DVBSampleToGroup. Это обнаруживает номер сэмпла, имеющий желаемые метаданные/свойство индекса.
3. Использовать блок таблицы сэмплов, чтобы определить местонахождение сэмпла в файле на основании его номера сэмпла.
[0148] Когда группы сэмплов включены в дорожки синхронизированных метаданных, поиск позиции в файле на основании желаемых сегментированных метаданных или свойстве индекса может быть выполнен синтаксическим анализатором файла с помощью следующих процессов:
1. Выбрать соответствующий блок описания группы сэмплов (на основании его типа группирования).
2. Выбрать желаемый индекс описания группы в блоке описания группы сэмплов.
3. Найти желаемый индекс описания группы из блока(-ов) SampleToGroup (выбранного типа группирования). Это обнаруживает номер сэмпла желаемых метаданных/свойства индекса в дорожке синхронизированных метаданных.
4. Установить соответствие сэмпла дорожки синхронизированных метаданных с сэмплом связанной дорожки с указаниями о приеме. Если один сэмпл метаданных создается для каждого сэмпла с указаниями о приеме, желаемый номер сэмпла в дорожке с указаниями о приеме идентичен номеру сэмпла дорожки синхронизированных метаданных. В ином случае необходимо вывести временную метку декодирования сэмпла синхронизированных метаданных (используя время декодирования для выбора блока) и найти сэмпл с указаниями о приеме, имеющий идентичную временную метку декодирования (или сэмпл с указаниями о приеме, который относится к моменту временной метки декодирования).
5. Использовать блок таблицы сэмплов дорожки с указаниями о приеме, чтобы определить местонахождение сэмпла в файле на основании номера сэмпла с указаниями о приеме, идентифицированного на предыдущем шаге.
[0149] Когда группы сэмплов включаются в дорожку с указаниями о приеме или дорожку медиа-информации, получение индексов и сегментированных метаданных, действительных для конкретного сэмпла с указаниями о приеме или сэмпла медиа-информации, соответственно, может быть выполнено синтаксическим анализатором файла с помощью следующих процессов:
1. Выбрать каждый блок sample to group (по одному), связанный с дорожкой с указаниями о приеме или дорожкой медиа-информации, и найти индекс описания группы сэмплов конкретного сэмпла с указаниями о приеме или сэмпла медиа-информации, соответственно.
2. Получить индекс или сегментированные метаданные, соответствующие индексу описания группы сэмплов из соответствующего блока описания группы сэмплов.
[0150] Когда группы сэмплов включаются в дорожку синхронизированных метаданных, получение индексов и сегментированных метаданных, действительных для конкретного сэмпла с указаниями о приеме, может быть выполнено синтаксическим анализатором файла с помощью следующих процессов;
1. Установить соответствие сэмпла с указаниями о приеме с сэмплом метаданных следующим образом. Если один сэмпл метаданных создается для каждого сэмпла с указаниями о приеме, желаемый номер сэмпла в дорожке с указаниями о приеме идентичен номеру сэмпла дорожки синхронизированных метаданных. В ином случае, вывести временную метку декодирования сэмпла с указаниями о приеме (используя время декодирования для выбора блока) и найти сэмпл синхронизированных метаданных, имеющий идентичную временную метку декодирования (или сэмпл синхронизированных метаданных, который относится к моменту временной метки декодирования).
2. Выбрать каждый сэмпл для блока группы (по одному), связанной с синхронизированной дорожкой метаданных, и найти индекс описания группы сэмплов конкретного сэмпла синхронизированных метаданных, соответственно.
3. Получить индекс или сегментированные метаданные, соответствующие индексу описания группы сэмплов из соответствующего блока описания группы сэмплов.
[0151] Проигрыватель, обычно содержащий синтаксический анализатор файла, декодер 160, и устройство 170 воспроизведения, может предоставлять список индексов, закладок или другие типы метаданных конечному пользователю, анализируя и воспроизводя некоторую часть контента блоков описания группы сэмплов.
[0152] Проигрыватель может обеспечивать операцию создания закладок конечным пользователям. Закладки могут записываться в файл, используя группирование сэмплов, аналогичное описанному выше для работы приемника.
[0153] Таким образом, в соответствии с формами осуществления данного изобретения группы сэмплов могут использоваться с фрагментами movie бесшовно, потому что блок SampleToGroup может находиться в блоке фрагмента дорожки. Следовательно, полностью поддерживается одновременная запись и воспроизведение отдельного файла. Механизм группы сэмплов является расширяемым, так как могут быть определены новые типы группирования. Продолжительность существования метаданных является очевидной: непрерывные сэмплы с тем же самым значением group_description_index (того же самого типа группирования). Получение таблицы контентов файла на основании блоков SampleGroupDescription является простым. Таким образом, при сохранении метаданных, связанных с одиночными сэмплами, например, закладок, механизм группирования сэмплов может быть лучше, чем дорожки синхронизированных метаданных.
[0154] Хотя формы осуществления изобретения касались главным образом приемника 150, записывающего запоминающего устройства 155, синтаксического анализатора файла и декодера 160, представленные структуры файла могут использоваться кодером 110 также и при создании файла. В частности, когда файл предусматривается для воспроизведения без преобразования его контентов медиа-информации в пакетированный формат, часто полезно обеспечить сегментированные метаданные и индексы, структурированные так, как предложено в изобретении. В соответствии с базовым файловым форматом ISO кодер 110 выводит метаданные файла, которые будут позже сохранены в блоке moov или блоке moof, в зависимости от того, действительно ли фрагменты movie находятся в пользовании. Для любой принимаемой части метаданных кодер 110 идентифицирует ее тип и создает новый блок описания группы сэмплов, если тип метаданных не существовал прежде. Кодер 110 также проверяет, действительно ли контент части метаданных отличается от всех метаданных, сохраненных ранее в файле. Если контент новый, то новый элемент создается для блока описания группы сэмплов, и контент метаданных копируется в этот элемент. Блок SampleToGroup поддерживается для каждого типа группирования, и сэмплы дорожки медиа-информации или дорожки указаний отображаются на один из элементов в соответствующем блоке описания группы сэмплов.
[0155] Следует отметить, что вышеописанное создание группировок сэмплов может быть реализовано несколькими способами. Например, создание группировок сэмплов может не происходить одновременно с кодированием и сохранением 120 самих сэмплов. Вместо этого, группирование сэмплов может выполняться автономно на основании промежуточного формата для хранения метаданных. Обратимся снова к фиг.1, автономное создание группирования сэмплов будет давать в результате два дополнительных блока, получающих свои входные данные из запоминающего устройства 120 и выводящих выходные данные на сервер 130. Первый блок в порядке обработки может быть назван блоком перезаписи файла сервера, который получает на входе файл без группирования сэмплов для конкретного типа метаданных и выводит файл с этим типом группирования сэмплов. Второй блок в порядке обработки может быть назван вторым запоминающим устройством, которое может иметь свойства, аналогичные свойствам запоминающего устройства 120.
[0156] Блок перезаписи файла сервера и второе запоминающее устройство, упомянутые выше, могут находиться в том же устройстве, что и кодер 110, запоминающее устройство 120, сервер 130 или другое устройство. Более того, блок перезаписи файла сервера и второе запоминающее устройство могут находиться в одном устройстве или в разных устройствах.
[0157] В одной форме осуществления изобретения сервер 130 обычно содержит синтаксический анализатор файла (не показанный на фиг.1). Синтаксический анализатор файла подчиняется командам, предоставляемым на одной или более дорожках указаний, чтобы генерировать поток пакетов из битовых потоков кодированной медиа-информации, включаемых в файл-контейнер. Синтаксический анализатор файла далее обрабатывает информацию, даваемую в блоках описания группы сэмплов, связанных с дорожками указаний. Обработка может включать, например, создание информации SDP или частей электронного справочника услуг на основании информации, даваемой в блоках описания группы сэмплов. Обработка может включать также обработку блоков SampleToGroup, чтобы принимать решение о связи частей метаданных (связанных с определенным индексом описания группы), даваемых в блоках описания группы сэмплов, с медиа-информацией или сэмплами с указаниями и продолжительностью существования метаданных, предоставляемых в блоках описания группы сэмплов. Например, сервер может проверять, когда новая информация SDP требуется для декодирования передаваемого потока пакетов, и передавать новую информацию SDP таким образом, чтобы она была доступна приемнику, когда это необходимо для декодирования пакетов. В одной форме осуществления изобретения файл, подаваемый на сервер, создается приемником 150 и сохраняется в записывающей запоминающем устройстве 155, которое функционально подключается к серверу 130.
[0158] Хотя здесь были раскрыты конкретные формы осуществления данного изобретения, необходимо отметить, что различные модификации и комбинации возможны и предполагаются в рамках сущности и объема прилагаемой формулы изобретения. Поэтому изобретение не ограничено представленным здесь описанием изобретения.
[0159] Различные формы осуществления изобретения, описанные здесь, приведены в общем контексте шагов способа, которые могут быть реализованы в одной форме осуществления программным продуктом, содержащим выполняемые компьютером команды, такие как код программы, выполняемый компьютерами в сетевых средах. Машиночитаемый носитель может быть выполнен в виде съемных и несъемных запоминающих устройств, включая в качестве неограничивающих примеров постоянное запоминающее устройство (Read Only Memory, ROM), оперативное запоминающее устройство (Random Access Memory, RAM), компакт-диски (Compact Discs, CD), цифровые универсальные диски (Digital Versatile Discs, DVD) и т.д. Программные модули включают подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые способны выполнять конкретные задачи или реализовывать конкретные абстрактные типы данных. Исполняемые машинные команды, связанные структуры данных и программные модули представляют собой примеры программного кода для выполнения шагов способов, раскрытых здесь. Конкретная последовательность таких выполняемых команд или связанных структур данных представляет примеры соответствующих действий для реализации функций, описанных в таких шагах или процессах. Различные формы осуществления данного изобретения могут быть реализованы непосредственно в программных средствах с использованием любого обычного языка программирования, например, C/C++ или ассемблера.
[0160] Программные и Web-реализации настоящего изобретения могут быть выполнены стандартными методами программирования с логикой на основе правил и другой логики для выполнения различных шагов поиска в базе данных, шагов корреляции, шагов сравнения и шагов решения. Следует также отметить, что слова "компонент" и "модуль", которые используется здесь и в формуле изобретения, предназначены для охвата реализации, использующих одну или более строк программного кода, и/или аппаратных реализации и/или оборудования для приема данных, вводимых вручную.
[0161] Отдельные и специфические структуры, описанные в предшествующих примерах, должны пониматься как образующие типичную структуру средств для выполнения определенных функций, описанных в формуле изобретения, хотя ограничения в формуле изобретения не должны интерпретироваться как "средства плюс функция", когда термин "средства" не используется. Кроме того, использование термина "операция" в предшествующем описании не должно использоваться для толкования любого определенного ограничения в формуле изобретения как "операция плюс функция". В той мере, в какой отдельные ссылки, включающие выданные патенты, заявки на патенты и другие публикации, описываются или иначе упоминаются здесь, такие ссылки не предназначены и не должны истолковываться как ограничение объема формулы изобретения.
[0162] Вышеизложенное описание форм осуществления настоящего изобретения было представлено с целью иллюстрации и описания. Оно не предназначено быть исчерпывающим или ограничивающим настоящее изобретение точной раскрытой формой, и модификации и разновидности возможны в свете вышеприведенных идей или могут быть получены в результате практического применения изобретения. Формы осуществления изобретения были выбраны и описаны с целью объяснения принципов настоящего изобретения и его практического применения, чтобы позволить специалистам в данной области техники использовать изобретение в различных формах осуществления и с различными модификациями, которые подходят для предполагаемого конкретного использования. Особенности форм осуществления изобретения, описанные здесь, могут объединяться во всевозможные комбинации способов, устройств, модулей, систем и компьютерных программных продуктов.