Средство уплотнения/разуплотнения данных

Иллюстрации

Показать все

Изобретение относится к устройству и способу уплотнения данных для синхронного воспроизведения видеоданных звуковых данных и метаданных. Техническим результатом является предотвращение ошибок при воспроизведении данных. Указанный результат достигается тем, что при генерировании системного заголовка, включенного в состав программного потока согласно расширенной системной части MPEG-2, если базовый идентификатор потока является расширенным идентификатором и информация о размере базового буфера представляет 0 байт, генерируется и записывается информация о размере расширенного буфера, представленная совокупностью из 24 битов в составе расширенного идентификатора, маркерного бита и расширенного идентификатора потока и совокупностью из 24 битов, включающих в себя расширенный идентификатор потока, маркерный бит и информацию масштабирования ограничения расширенного буфера, и необходимая для воспроизведения элементарного потока, который будет уплотняться с использованием пары из расширенного идентификатора и расширенного идентификатора потока. 2 н.и 2 з.п. ф-лы, 19 ил.

Реферат

Область техники, к которой относится изобретение

Настоящее изобретение имеет отношение к способу уплотнения данных для предоставления возможности синхронного воспроизведения видеоданных, звуковых данных и метаданных, и к средству для этого, и к способу и средству разуплотнения данных.

Уровень техники

Что касается способа для уплотнения элементарной последовательности данных из числа видеоданных, звуковых данных и метаданных, для их синхронного воспроизведения, Системная часть MPEG-2 (ISO/IEC13818-1) принимается в качестве международного стандарта (Рекомендации Сектора телекоммуникаций Международного Союза Электросвязи (МСЭ) H.222.0 (2000) | ISO/IEC13818-1:2000 (Системная часть MPEG-2)). Исходная Системная часть стандарта MPEG-2 устанавливает механизм уплотнения закодированных видеоданных, которые кодируются в соответствии со схемой кодирования видеосигнала семейства стандартов MPEG, таких, как MPEG-1, MPEG-2 или MPEG-4, закодированных звуковых данных и данных, определяемых пользователем лично. Соответственно, Системная часть стандарта MPEG-2 устанавливает расширение стандарта для поддержки уплотнения метаданных (Рекомендации Сектора телекоммуникаций МСЭ H.222.0 (2000)/Amd.2 (06/2003) | ISO/IEC13818-1:2000/Amd.2:2004).

Системная часть стандарта MPEG-2 определяет два типа уплотненных форматов транспортного потока (TS) и программного потока (PS). TS является форматом, используемым при широковещании, а программный поток используется для DVD. Программный поток формируется в структурном элементе, называемом множеством блоков. Блок состоит из одного заголовка блока и 0 или более пакетов PES (Пакетный Элементарный Поток). Заголовок блока состоит из одного основного заголовка блока и 0 или 1 системного заголовка и включает в себя информацию о времени, в которое блок принимается. PES-пакет состоит из одного заголовка PES и полезной нагрузки PES объемом 0 или более байтов. Элементарный поток, например видеоданные, звуковые данные и метаданные, разделяется на фрагменты подходящего размера и сохраняется в полезной нагрузке PES. Идентификатор потока, который является идентификатором для сгруппированных данных, включенных в состав полезной нагрузки PES, записывается в заголовке PES, и один непрерывный элементарный поток может быть получен из разделенных элементарных потоков путем соединения полезных нагрузок PES с одинаковым идентификатором потока. Дополнительно, если данные, включенные в состав полезной нагрузки PES, включают в себя границу видеоизображения или звукового кадра, то время, в которое воспроизводится и отображается следующее изображение или следующий кадр, может быть записано в заголовке PES в форме относительного времени, на основании времени приема блока, указанного в информации о времени приема в заголовке блока.

Системный заголовок включает в себя информацию о системной характеристике программного потока. Например, информация о размере буфера, необходимая для генерирования и воспроизведения элементарного потока с идентификатором потока, записывается в форме пары из идентификатора потока и размера буфера.

В расширении Системной части стандарта MPEG-2 для уплотнения метаданных, которое раскрывается в Рекомендациях Сектора телекоммуникаций МСЭ H.222.0 (2000)/Amd.2 (06/2003) | ISO/IEC13818-1:2000/Amd.2:2004, значение, такое, как расширенный идентификатор (extended_stream_id = 0xFD), заново задается идентификатору потока для использования в заголовке PES для того, чтобы могли быть идентифицированы множественные метаданные. В отношении расширенного идентификатора 128 видов элементарных потоков могут быть идентифицированы, используя 7-битное значение, которое именуется как расширенный идентификатор потока (stream_id_extension).

Однако в расширении Системной части стандарта MPEG-2 по методике, раскрытой в Рекомендациях Сектора телекоммуникаций МСЭ H.222.0 (2000)/Amd.2 (06/2003) | ISO/IEC13818-1:2000/Amd.2:2004, схема записи информации о размере буфера (информации о размере расширенного буфера) для каждого расширенного идентификатора потока не расширяется, а также не представляется в системном заголовке. Следовательно, фактически возможна только запись общей для расширенного идентификатора информации о размере буфера, и требуется дополнительное расширение стандарта, чтобы предоставить схему для записи информации о размере расширенного буфера для каждого расширенного идентификатора потока.

Изделия, использующие расширение, раскрытое в Рекомендациях Сектора телекоммуникаций МСЭ H.222.0 (2000)/Amd.2 (06/2003) | ISO/IEC13818-1:2000/Amd.2:2004, уже были выпущены на рынок. Соответственно, если готовить дополнительное расширение стандарта, для промышленности желательно иметь "обратную совместимость", чтобы избежать путаницы на рынке. Дополнительно, желательно гарантировать "совместимость снизу вверх", что позволит данным (программный поток), созданным согласно существующему стандарту, нормально воспроизводиться даже на оборудовании, разработанном согласно дополнительному расширению стандарта.

Раскрытие изобретения

Задачей настоящего изобретения является предоставить способ уплотнения/разуплотнения данных и устройство для этого, которое может записывать информацию о размере расширенного буфера для каждого расширенного идентификатора потока, не вызывая ошибки во время проигрывания с использованием стандартного оборудования и во время проигрывания стандартных данных с использованием нового оборудования.

Согласно одному аспекту настоящего изобретения предоставляется средство уплотнения данных, которое содержит: структурный элемент ввода для ввода элементарного потока, представляющего данные, по меньшей мере, из числа видеоданных, звуковых данных и метаданных, средство генерирования полезной нагрузки PES для генерирования множества полезных нагрузок PES посредством разделения этого элементарного потока; средство генерирования PES-пакетов для генерирования множества PES-пакетов, соответствующих множеству полезных нагрузок PES, соответственно, добавляя к каждому из множества полезных нагрузок PES заголовок PES, включающий в себя или (A) базовый идентификатор потока, который представляет собой значение в заданном диапазоне, которое может быть представлено 8 битами, или (B) набор из расширенного идентификатора, который представляет собой значение, которое может быть представлено 8 битами, вне заданного диапазона, и расширенного идентификатора потока, который представляет собой значение, которое может быть представлено 7 битами, для идентификации данных, входящих в состав полезных нагрузок PES; средство генерирования информации о размере базового буфера для генерирования информации о размере буфера для базового идентификатора потока объемом 24 бита, содержащей первое 8-битное поле, указывающее базовый идентификатор потока, второе 2-битное поле, следующее за первым полем, третье 1-битное поле, следующее за вторым полем и указывающее информацию масштабирования ограничения буфера, необходимую для воспроизведения элементарного потока, идентифицируемого базовым идентификатором потока, и четвертое 13-битное поле, следующее за третьим полем и указывающее информацию ограничения размера буфера, необходимую для воспроизведения элементарного потока; средство генерирования информации о размере расширенного буфера для генерирования информации о размере буфера для расширенного идентификатора потока объемом 48 битов, включающей в себя (C) информацию объемом 24 бита, содержащую первое 8-битное поле, указывающее первый идентифицирующий идентификатор, который представляет собой значение, с возможностью представления 8 битами, вне заданного диапазона и отличное от расширенного идентификатора, второе 9-битное поле, следующее за первым полем, и третье 7-битное поле, следующее за вторым полем и указывающее расширенный идентификатор потока, и (D) информацию объемом 24 бита, содержащую первое 8-битное поле, указывающее второй идентифицирующий идентификатор, который представляет собой значение, отличное от первого идентифицирующего идентификатора и от расширенного идентификатора и с возможностью представления 8 битами, вне заданного диапазона, второе 2-битное поле, следующее за первым полем, третье 1-битное поле, следующее за вторым полем и указывающее информацию масштабирования ограничения буфера, необходимую для воспроизведения элементарного потока, идентифицируемого набором из расширенного идентификатора и расширенного идентификатора потока, и четвертое 13-битное поле, следующее за третьим полем и указывающее информацию ограничения размера буфера, необходимую для воспроизведения элементарного потока; средство генерирования блока для генерирования блока посредством добавления заголовка блока, включающего в себя системный заголовок, включающий в себя информацию о размере базового буфера для воспроизведения элементарного потока, соответствующего каждому из PES-пакетов, и информацию о размере расширенного буфера для массива PES-пакетов из множества PES-пакетов; и средство вывода для вывода блока в виде программного потока.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фиг. 1 является схематическим изображением структуры программного потока согласно Системной части стандарта MPEG-2.

Фиг. 2 является схемой, отображающей формат записи информации о размере буфера в системном заголовке согласно существующей Системной части стандарта MPEG-2.

Фиг. 3 является схемой, отображающей формат записи информации о размере буфера в системном заголовке согласно первому варианту осуществления.

Фиг. 4 является схемой пояснения функционирования, когда данные, сгенерированные согласно первому варианту осуществления, воспроизводятся на оборудовании, разработанном согласно первому варианту осуществления.

Фиг. 5 является схемой пояснения функционирования, когда данные, сгенерированные согласно первому варианту осуществления, воспроизводятся на оборудовании, разработанном согласно традиционной Системной части стандарта MPEG-2.

Фиг. 6 является схемой пояснения функционирования, когда данные, сгенерированные согласно традиционной расширенной Системной части стандарта MPEG-2, воспроизводятся на оборудовании, разработанном согласно первому варианту осуществления.

Фиг. 7 является схемой, отображающей модификацию формата записи информации о размере буфера в системном заголовке согласно первому варианту осуществления.

Фиг. 8 является схемой, отображающей другую модификацию формата записи информации о размере буфера в системном заголовке согласно первому варианту осуществления.

Фиг. 9 является схемой, отображающей формат записи информации о размере буфера в системном заголовке согласно второму варианту осуществления.

Фиг. 10 является схемой, отображающей модификацию формата записи информации о размере буфера в системном заголовке согласно второму варианту осуществления.

Фиг. 11 является схемой, отображающей другую модификацию формата записи информации о размере буфера в системном заголовке согласно второму варианту осуществления.

Фиг. 12 является структурной схемой средства уплотнения данных согласно первому и второму вариантам осуществления.

Фиг. 13 является структурной схемой средства генерирования заголовка блока, изображенного на Фиг. 12.

Фиг. 14 является блок-схемой для пояснения типовой работы средства уплотнения данных.

Фиг. 15 является структурной схемой средства разуплотнения данных согласно первому и второму вариантам осуществления.

Фиг. 16 является структурной схемой средства интерпретации заголовка блока, изображенного на Фиг. 15.

Фиг. 17 является блок-схемой для пояснения типовой работы средства разуплотнения данных.

Фиг. 18 является схемой, отображающей формат записи информации о размере буфера в системном заголовке согласно третьему варианту осуществления.

Фиг. 19 является блок-схемой для пояснения способа разуплотнения средства разуплотнения.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

(Базовая конфигурация программного потока)

Сначала описывается программный поток (PS) с использованием Фиг. 1. Как показано на Фиг. 1, программный поток конфигурируется в структурном элементе, также именуемом как множество блоков. Блок включает в себя один заголовок блока и 0 или более PES-пакетов.

Заголовок блока включает в себя одно тело заголовка блока и 0 или один системный заголовок. Блок включает в себя информацию (информация о времени приема), указывающую время, в которое блок принимается.

PES-пакет включает в себя заголовок PES и полезную нагрузку PES объемом 0 или более байтов. В полезную нагрузку PES записываются фрагменты данных соответствующего размера, вырезанные из элемента (элементарного потока), такого, как видеоданные, звуковые (в том числе речь) данные и метаданные.

Сначала в заголовке PES записывается идентификатор потока, который является идентификатором для идентификации (классификации) данных, входящих в состав полезной нагрузки PES. Непрерывный элементарный поток доступен из разделенных элементарных потоков посредством последовательного соединения полезных нагрузок PES с одинаковым идентификатором потока.

Во-вторых, в заголовке PES повторно кодируется информация о количестве байтов данных, входящих в состав полезной нагрузки PES. Частичные данные, которые вырезаны из элементарного потока по размеру, указанному посредством информации о количестве байтов данных, записываются в полезную нагрузку PES.

Если данные, входящие в состав полезной нагрузки PES, включают в себя границу видеоизображения или звукового кадра, информация о времени отображения воспроизведения, указывающая времена воспроизведения и отображения следующего изображения или следующего кадра, записывается в заголовке PES в форме информации относительного времени, на основании информации о времени приема в заголовке блока.

Системный заголовок включает в себя информацию о системной характеристике программного потока. Например, информация о размере буфера (называемая информацией о размере базового буфера для отличия от информации о размере расширенного буфера, которая будет описана ниже), указывающая размер буфера, необходимый для генерирования и воспроизведения элементарного потока с некоторым идентификатором потока, записывается в системном заголовке в паре с идентификатором потока. Информация о размере базового буфера представляется совокупностью из 24 битов в составе 8-битного идентификатора потока (stream_ID), 2-битного маркерного бита '11', 1-битной информации масштабирования ограничения буфера (P-STD_buffer_bound_scale) и 13-битной информации ограничения размера буфера (P-STD_buffer_size_bound), как показано на Фиг. 2, например. Кроме того, в системный заголовок записывается информация о размере расширенного буфера, как описано ниже.

Теперь будет описан способ уплотнения данных для уплотнения элементарных потоков согласно настоящему варианту осуществления, для генерирования программного потока.

(Первый вариант осуществления)

Ниже будет описан способ для записи информации о размере расширенного буфера согласно первому варианту осуществления с привязкой к Фиг. 3. Конфигурация программного потока в целом отображается на Фиг. 1.

Согласно Рекомендациям Сектора телекоммуникаций МСЭ H.222.0 (2000)/Amd.2 (06/2003) | ISO/IEC13818-1:2000/Amd.2:2004, полное содержание которых включается в настоящее описание путем ссылки, расширенный идентификатор определяется как 0xFD. Согласно Рекомендациям Сектора телекоммуникаций МСЭ H.222.0 (2000) | ISO/IEC13818-1:2000 (Системная часть MPEG-2), полное содержание которых включается в настоящее описание путем ссылки, информация о размере базового буфера определяется как представляемая комбинацией 1-битной информации масштабирования ограничения буфера P-STD_buffer_bound_scale и 13-битной информации ограничения размера буфера P-STD_buffer_size_bound, что обведено сплошной линией на Фиг. 3, и информация о размере базового буфера рассчитывается следующим образом.

(a) Если P-STD_buffer_bound_scale равняется 0,

128*P-STD_buffer_size_bound байт.

(b) Если P-STD_buffer_bound_scale равняется 1,

1024*P-STD_buffer_size_bound байт.

В общем случае невозможно, чтобы размер буфера был равен 0 байт. Благодаря этому, как отображено наклонными символами на Фиг. 3 для первого варианта осуществления, если базовый идентификатор потока равен расширенному идентификатору (0xFD) и информация о размере базового буфера (P-STD_buffer_size_bound) равна 0, то есть размер буфера равен 0 байт, информация о размере расширенного буфера записывается, как показано в двух пунктирных рамках.

Согласно Фиг. 3 информация о размере расширенного буфера представляется совокупностью из 24 битов (первая расширенная информация) в составе 8-битного расширенного идентификатора потока (stream_id_extension), 2-битных маркерных битов '11', 7-битной зарезервированной информации (reserved) и 7-битного расширенного идентификатора потока (stream_id_extension) и совокупностью из 24 битов (вторая расширенная информация) в составе 2-битных маркерных битов '11', 1-битной информации масштабирования ограничения буфера (P-STD_buffer_bound_scale_ extension) и 3-битной информации ограничения размера буфера (P-STD_buffer_size_bound_extension). В этом случае основой для гарантирования совместимости становится то, что часть в пунктирной рамке подобна по структуре части в сплошной рамке.

(Процесс проигрывания с использованием нового оборудования)

Со ссылкой на Фиг. 4 будет описан процесс, когда программный поток, сгенерированный согласно первому варианту осуществления, воспроизводится с использованием нового оборудования, разработанного согласно первому варианту осуществления. Предполагается, что последовательность данных FD, C0, 00, FD, FF, 83, FD, C0, 9C (шестнадцатеричная форма) подается на вход в качестве программного потока. Последовательность данных FD, C0, 00, FD, FF, 83, FD, C0, 9C представляется в двоичной форме слева на Фиг. 4.

Значение FD первых 3 байтов программного потока интерпретируется как stream_id. Первые два бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_bound_scale (значение равно 0). Биты, начиная с четвертого бита, значения C0 и следующие за ними биты значения 00, интерпретируются как P-STD_buffer_bound (его значение равно 0).

Таким образом, поскольку ограничение буфера P-STD_buffer_bound равняется 0 и stream_id равняется 0xFD, устанавливается, что следующие 6 байтов (FD, FF, 83, FD, C0, 9C) программного потока используются для информации о размере расширенного буфера (при предположении, что условный оператор на Фиг. 4 принимает значение истина). Далее будет разъясняться упомянутый выше случай.

Значение FD следующих 3 байтов программного потока интерпретируется как 'FD'. Первые два бита следующего байта со значением FF интерпретируются как '11'. Биты, начиная с третьего бита байта со значением FF и первый бит байта со значением 83, интерпретируются как "reserved" (его значение равно 0x7F). Системная часть стандарта MPEG-2 определяет "reserved" как содержащее все единичные биты. Биты, начиная со второго бита, байта со значением 83 интерпретируются как stream_id_extension (его значение равно 0x03). В результате информация о размере буфера, представленная следующими 3 байтами, может быть идентифицирована как информация о размере расширенного буфера для расширенного идентификатора потока 0x03.

Значение FD следующих 3 байтов программного потока интерпретируется как 'FD'. Первые 2 бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_bound_scale_extension (его значение равно 0). Биты, начиная с четвертого бита значения C0 и значения 9C, интерпретируются как P-STD_buffer_bound _extension (его значение равно 0x9C). Соответственно, в примере, показанном на Фиг. 4, размер буфера для расширенного идентификатора потока 0x03 равен 128·156=19968 байтов, так как 0x9C есть 156 в десятичной форме.

(Обратная совместимость)

На Фиг.5 показан поток, сформированный на основании которого программный поток, согласно первому варианту осуществления, интерпретируется с использованием существующего оборудования. Последовательность данных, которая является программным потоком, рассматриваемым в данном документе, представляет собой FD, C0, 00, FD, FF, 83, FD, C0, 9C (шестнадцатеричная форма), аналогично показанной на Фиг. 4.

Значение FD первых 3 байтов программного потока интерпретируется как stream_id. Верхние два бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_bound_scale (его значение равно 0). Биты, начиная с четвертого бита значения C0 и значения 00, интерпретируются как P-STD_buffer_bound (его значение равно 0).

Оператор цикла продолжает выполняться, так как первый бит значения FD следующих 3 байтов программного потока равен 1. Значение FD следующих 3 байтов интерпретируется как stream_id. Первые два бита значения FF интерпретируются как '11'. Третий бит значения FF интерпретируется как P-STD_buffer_bound_scale (его значение равно 1). Биты, начиная с четвертого бита байта со значением FF и байта со значением 83, интерпретируются как P-STD_buffer_bound (его значение равно 0x1F83).

Оператор цикла продолжает выполняться, так как первый бит значения FD следующих 3 байтов программного потока равен 1. Следующее значение FD интерпретируется как stream_id. Первые 2 бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_bound_scale (его значение равно 0). Биты, начиная с четвертого бита значения C0 и значения 9C, интерпретируются как P-STD_buffer_bound (его значение равно 0x009C).

Таким образом, поскольку программный поток, сгенерированный согласно первому варианту осуществления, может интерпретироваться с использованием существующего оборудования, понятно, что он обладает обратной совместимостью.

(Прямая совместимость)

На Фиг.5 показан поток, сгенерированный на основании которого программный поток согласно Системной части стандарта MPEG-2 интерпретируется с использованием оборудования, разработанного согласно первому варианту осуществления. Последовательность данных, которая является программным потоком, используемым в данном документе, представляет собой FD, C0, 00, FD, FF, 83, FD, C0, 9C (шестнадцатеричная форма), аналогично показанной на Фиг. 4. Фиг. 6 отличается от Фиг. 4 и 5 тем, что третий байт равен 01. Это является следствием невозможности того, чтобы информация о размере буфера представлялась 0 байтами при записи информации о размере буфера в соответствии с традиционной Системной частью стандарта MPEG-2.

Сначала значение FD первых 3 байтов интерпретируется как stream_id. Первые два бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_ bound_scale (его значение равно 0). Биты, начиная с четвертого бита значения C0 и 01, интерпретируются как P-STD_buffer_bound (его значение равно 1). В этом случае P-STD_buffer_bound не равняется 0, и, следовательно, условный оператор принимает значение ложь, и определяется условие оператора цикла.

Оператор цикла продолжает выполняться, так как первый бит первых данных (FD) следующих 3 байтов равен 1. Следующее значение FD интерпретируется как stream_id. Первые два бита значения FF интерпретируются как '11'. Третий бит значения FF интерпретируется как P-STD_buffer_bound_scale (его значение равно 1). Биты, начиная с четвертого бита значения байта FF и значения байта 83, интерпретируются как P-STD_buffer_bound (его значение равно 0x1F83). В этом случае, поскольку P-STD_buffer _bound не равняется 0, условный оператор принимает значение ложь и определяется условие оператора цикла.

Оператор цикла продолжает выполняться, так как первый бит следующих данных (FD) равен 1. Следующее значение FD интерпретируется как stream_id. Первые два бита значения C0 интерпретируются как '11'. Третий бит значения C0 интерпретируется как P-STD_buffer_bound_scale (его значение равно 0). Биты, начиная с четвертого бита значения C0 и значения 9C, интерпретируются как P-STD_buffer_bound (его значение равно 0x009C).

Таким образом, поскольку программный поток, сгенерированный согласно Системной части стандарта MPEG-2, может интерпретироваться с использованием оборудования, разработанного согласно первому варианту осуществления, понятно, что программный поток, сгенерированный согласно первому варианту осуществления, обладает совместимостью снизу вверх.

(Модификация 1)

Модификация согласно первому варианту осуществления будет описана со ссылкой на Фиг. 7. На Фиг. 7 к условному выражению условного оператора добавляется проверка, является ли P-STD_buffer_bound_scale равным 0, чтобы определить, должна ли быть записана информация о размере буфера для расширенного идентификатора потока.

На Фиг. 4, когда P-STD_buffer_bound равняется 0, P-STD_buffer_bound не соответствует записи информации о размере расширенного буфера, указывающей, что размер буфера расширенного идентификатора равен 0, поскольку информация о размере буфера для расширенного идентификатора потока записывается в любом случае.

В отличие от этого на Фиг. 7 информация о размере расширенного буфера, указывающая, что размер буфера расширенного идентификатора равен 0, может быть записана посредством задания следующей информации о размере буфера

P-STD_buffer_bound_scale = 1

P-STD_buffer_bound = 0

(Модификация 2)

Другая модификация согласно первому варианту осуществления будет описана со ссылкой на Фиг. 8. На Фиг. 8 к условному выражению оператора цикла добавляется проверка, являются ли следующие 8 битов равными 0хFD для того, чтобы определить, должна ли быть записана запись информации о размере расширенного буфера. В результате запись расширенного идентификатора потока и информации о размере расширенного буфера может повторяться многократно. На Фиг. 3, поскольку верхний цикл с проверкой условия обрабатывается для каждого расширенного идентификатора потока, набор из stream_id, '11', P-STD_buffer_bound_scale и P-STD_buffer_size_bound записывается по числу расширенных идентификаторов потока. В отличие от этого при модификации, проиллюстрированной на Фиг. 8, запись набора должна быть сделана только один раз.

Для дополнительного варианта проверка P-STD_buffer_size_scale == 0, добавленная при модификации, проиллюстрированной на Фиг. 7, может быть добавлена к выражению условия оператора цикла внутреннего цикла, изображенного на Фиг. 8.

(Второй вариант осуществления)

Далее описывается способ для записи информации о размере расширенного буфера (информации о размере буфера для расширенного идентификатора потока) со ссылкой на Фиг. 9. Конфигурация программного потока в целом отображается на Фиг. 1.

Различие между вторым вариантом осуществления и первым вариантом осуществления состоит в определении 1-битной флаговой информации (extension_buffer_size_signaling_flag) для указания записи информации о размере расширенного буфера и в установлении существования поля расширенного идентификатора, когда базовый идентификатор потока (stream_id) присутствует в операторе цикла, а extension_buffer_size_signaling_flag равняется 0. В этом случае предполагается, что размер буфера, рассчитанный при помощи P-STD_buffer_bound_scale и P-STD_buffer_bound, которые обнаруживаются перед полем расширенного идентификатора потока, является размером буфера для расширенного идентификатора потока.

В данных, генерируемых согласно существующей Системной части стандарта MPEG-2, резервируется бит, соответствующий extension_buffer_size_signaling_flag, и его значение устанавливается на 1. Следовательно, поле расширенного идентификатора потока не обнаруживается на вновь разработанном оборудовании, но во время проигрывания не возникают ошибки.

(Модификация 1)

Фиг. 10 отображает модификацию согласно второму варианту осуществления. Отличие от Фиг. 9 состоит в передаче второй расширенной информации, включающей в себя stream_id_extension, которая показана в пунктирной рамке и в последующей отправке первой расширенной информации, включающей в себя P-STD_buffer_bound_scale и P-STD_buffer_bound, которая показана в сплошной рамке.

(Модификация 2)

Фиг. 11 отображает другую модификацию согласно второму варианту осуществления. Как и на Фиг. 10, отличие от Фиг. 9 состоит в передаче второй расширенной информации, включающей в себя stream_id_extension, которая показана в пунктирной рамке и в последующей отправке первой расширенной информации, включающей в себя P-STD_buffer_bound_scale и P-STD_buffer_bound, которая показана в сплошной рамке.

В случае отправки stream_id_extension перед отправкой P-STD_buffer_bound_scale и P-STD_buffer_bound порядок FD, '11', reserved и stream_id_extension в пунктирной рамке может различаться, как показано на Фиг. 10 и 11.

(Средство уплотнения вывода данных)

Далее будет описано средство уплотнения данных для реализации способа уплотнения данных согласно первому или второму варианту осуществления со ссылкой на Фиг. 12.

Элементарный поток (ES) 1102 видеоданных согласно стандарту MPEG, ES 1103 звуковых данных согласно стандарту MPEG, ES 1104 метаданных и ES 1105 отличных от стандарта MGEG видеоданных, в дополнение к MPEG-данным, например, стандарта VC-1 SMPTE (Society of Motion Picture and Television Engineering - Общество инженеров кино и телевидения), подаются на вход средства 1101 уплотнения данных. Средство 1101 уплотнения данных уплотняет ES 1102 видеоданных, ES 1103 звуковой системы, ES 1104 метаданных и ES 1105 отличных от стандарта MGEG видеоданных в программный поток, формируемый на основании соответствующего алгоритма уплотнения, чтобы вывести программный поток 1110.

Управляющее средство 1109 генерирования блока управляет всем средством 1101 уплотнения вывода данных и сначала инициирует средство 1106 генерирования заголовка блока для генерирования заголовка блока, а затем инициирует средство 1107 генерирования заголовка PES для генерирования заголовка PES. Управляющее средство 1109 генерирования блока инициирует средство 1108 генерирования блока для вывода заголовка блока и заголовка PES в виде программного потока 1110, а затем вырезает соответствующее число байтов из ES 1102 видеоданных, ES 1103 звуковой системы, ES 1104 метаданных и ES 1105 отличных от стандарта MGEG видеоданных и выводит их в виде программного потока 1110. Управляющее средство 1109 генерирования блока уплотняет соответствующие элементы так, что программный поток имеет структуру, показанную на Фиг. 1, повторяя эту операцию.

(Средство генерирования заголовка блока)

Как показано на Фиг. 13, средство 1106 генерирования заголовка блока содержит средство 1201 генерирования тела заголовка блока, средство 1202 генерирования системного заголовка, управляющее средство 1208 генерирования заголовка блока и коммутационное средство 1207 генерирования заголовка блока. Средство 1202 генерирования системного заголовка включает в себя средство 1203 генерирования тела системного заголовка, средство 1204 генерирования информации о размере базового буфера и средство 1205 генерирования информации о размере расширенного буфера дополнительно. Управляющее средство 1208 генерирования заголовка блока инициирует операцию, принимая стартовый сигнал от управляющего средства 1109 генерирования блока, и выводит сигнал завершения и классификацию элементарного потока, который средство генерирования блока должно впоследствии обработать, на управляющее средство 1109 генерирования блока при завершении генерирования заголовка блока.

Средство 1203 генерирования тела системного заголовка генерирует информацию, начиная непосредственно от system_header() и до reserved_bits на Фиг. 3. Средство 1204 генерирования информации о размере базового буфера генерирует информацию, заключенную в сплошную рамку на Фиг. 3. Средство 1205 генерирования информации о размере расширенного буфера генерирует информацию, заключенную в пунктирную рамку на Фиг. 3.

Если системный заголовок содержится в составе блока, сначала управляющее средство 1208 генерирования заголовка блока подает команду коммутационному средству 1207 генерирования заголовка блока, чтобы коммутационное средство 1207 генерирования заголовка блока выбирало выходные данные средства 1201 генерирования тела заголовка блока, при помощи сигнала 1206 выбора. Затем управляющее средство 1208 генерирования заголовка блока подает команду коммутационному средству 1207 генерирования заголовка блока, чтобы коммутационное средство 1207 генерирования заголовка блока выбирало выходные данные средства 1203 генерирования тела системного заголовка, при помощи сигнала 1206 выбора.

Потом управляющее средство 1208 генерирования заголовка блока подает команду коммутационному средству 1207 генерирования заголовка блока, чтобы коммутационное средство 1207 генерирования заголовка блока выбирало выходные данные средства 1204 генерирования информации о размере базового буфера, при помощи сигнала 1206 выбора. Если значение базового идентификатора равно 0xFD, управляющее средство 1208 генерирования заголовка блока подает команду средству 1204 генерирования информации о размере базового буфера, чтобы информация о размере базового буфера (P-STD_buffer_size_bound) была установлена на 0, и затем подает команду коммутационному средству 1207 генерирования заголовка блока, чтобы коммутационное средство 1207 генерирования заголовка блока выбирало выходные данные средства 1205 генерирования информации о размере расширенного буфера, при помощи сигнала 1206 выбора.

После этого генерируются необходимое число базовых идентификаторов и информация о размере базового буфера, соответствующая расширенным идентификаторам, и информация о размере расширенного буфера. Когда вся информация, которая будет уплотняться, сгенерирована в блоке, управляющее средство 1208 генерирования заголовка блока останавливает действие каждого средства генерирования и ожидает начала следующего блока.

Кроме того, в случае, если средство 1202 генерирования системного заголовка работает в соответствии с примером, показанным на Фиг. 7, когда значение базового идентификатора равно 0xFD, управляющее средство 1208 генерирования заголовка блока подает команду средству 1204 генерирования информации о размере базового буфера для установления информации о размере базового буфера (P-STD_buffer_size_scale и P-STD_buffer_size_bound) на 0.

Дополнительно, если средство 1202 генерирования системного заголовка работает в соответствии с примером, показанным на Фиг. 8, управляющее средство 1208 генерирования заголовка блока подает команду коммутационному средству 1207 генерирования заголовка блока, чтобы размеры буфера для множества расширенных идентификаторов генерировались непрерывно, как показано на Фиг. 8.

(Процедура уплотнения данных)

Порядок работы средства уплотнения вывода данных, изображенного на Фиг. 13, будет описана со ссылками на Фиг. 14. Блок-схема на Фиг. 14 отображает процедуру для генерирования программного потока с форматом данных, показанным на Фиг. 3, в качестве примера генерирования блока посредством записи в системный заголовок любой информации о размере блока из числа размера буфера (1808 Кб) для базового идентификатора (0хE0), размера буфера (1808 Кб) для расширенного идентификатора (0хFD), чей расширенный идентификатор потока равен 0х55, и размера буфера (8192 б) для базового идентификатора (0хC0).

Когда начинается генерирование блока, сначала на этапе S1501 генерируется тело заголовка блока. Когда системный заголовок записывается в блок, на этапе S1502 генерируется тело системного заголовка. Потом, на этапе S1503, записывается информация о размере базового буфера, указывающая (0хE0) размер буфера (1808 Кб) для базового идентификатора, следующим образом:

stream_id = 0хE0

P-STD_buffer_bound_scale = 1

P-STD_buffer_size_bound = 1808 (1808*1 Кб = 1808 Кб)

Поскольку информация о размере буфера, которая будет записана сначала, является таковой для базового идентификатора, на этапе S1504 принимается решение не записывать размер расширенного буфера, а на этапе S1506 принимается решение, продолжать ли запись информации о размере буфера. В результате, поскольку запись информации о размере буфера продолжается, выполнение процесса возвращается на этап S1503. Первая половина операции генерирования информации о размере расширенного буфера (1808 КБ) для расширенного идентификатора (0xFD) для 0х55 выполняется следующим образом:

stream_id = 0хFD

P-STD_buffer_bound_scale = 0

P-STD_buffer_size_bound = 0

(stream_id == 0хFD && P-STD_buffer_size_bound = 0)

На этапе S1504 принимается решение, выполнять ли запись информации о размере расширенного буфера, и запись информации о размере расширенного буфера выполняется на этапе S1505 следующим образом:

'0хFD' = 0хFD

'11' = 0х3

Reserved = 0х7F

stream_id_extension = 0х55

'0хFD' = 0хFD

'11' = 0х3

P-STD_buffer_bound_scale_extension = 1

P-STD_buffer_size_bound_extension = 1808

(1808*1 Кб = 1808 Кб)

На этапе S1506 принимается решение, продолжать ли запись информации о размере буфера. В данном случае, поскольку запись информации о размере буфера продолжается, выполнение процесса возвращается на этап S1503, и генерирование (0хC0) размера буфера (8192 б) для базового идентификатора выполняется следующим образом:

stream_id = 0хC0

P-STD_buffer_bound_scale = 0

P-STD_buffer_size_bound = 64 (64*128 б = 8192 б)

Пото