СРЕДСТВО УПЛОТНЕНИЯ/РАЗУПЛОТНЕНИЯ ДАННЫХ
FACILITY FOR COMPACTION/DECOMPACTION OF DATA

Область техники, к которой относится изобретение
Настоящее изобретение имеет отношение к способу уплотнения данных для предоставления возможности синхронного воспроизведения видеоданных, звуковых данных и метаданных, и к средству для этого, и к способу и средству разуплотнения данных.
Уровень техники
Что касается способа для уплотнения элементарной последовательности данных из числа видеоданных, звуковых данных и метаданных, для их синхронного воспроизведения, Системная часть 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 б)
Потом на этапе S1506 принимается решение, продолжать ли запись информации о размере буфера. В результате, поскольку устанавливается, что запись всей информации о размере буфера была закончена, на этапе S1507 генерируется заголовок PES.
На этапе S1508 выполняется генерирование полезной нагрузки PES и генерирование одного блока заканчивается. Выполнение процесса возвращается к началу процесса.
(Средство разуплотнения данных)
Далее со ссылкой на Фиг. 15 будет описано средство разуплотнения данных для разуплотнения всех данных из программного потока, сгенерированного способом уплотнения данных, описанным в первом или втором варианте осуществления. Здесь описывается операция разуплотнения данных, соответствующая программному потоку, предоставленному в соответствии со способом, показанным на Фиг. 3. Однако средство разуплотнения данных, изображенное на Фиг. 15, может применяться к программному потоку, сгенерированному способами, представленными на Фиг. 7, 8, 9, 10 и 11.
Программный поток 1302 подается на вход средства 1301 разуплотнения данных, и ES 1309 видеоданных в соответствии со стандартом MPEG, ES 1310 звуковой системы в соответствии со стандартом MPEG, ES 1310 метаданных и ES 1312 отличных от стандарта MGEG видеоданных, которые уплотнены в программном потоке 1302, разуплотняются и выводятся. Управляющее средство 1303 интерпретации блока полностью осуществляет управление в средстве 1301 разуплотнения данных.
Управляющее средство 1303 интерпретации блока удостоверяет содержимое программного потока 1302. Когда управляющее средство 1303 интерпретации блока определяет, что заголовок блока подается на вход, оно подает команду коммутационному средству 1307 для подачи программного потока 1302 на вход средства 1304 интерпретации заголовка блока и инициирует средство 1304 интерпретации заголовка блока. Средство 1304 интерпретации заголовка блока интерпретирует программный поток 1302 в соответствии со структурой заголовка блока и отправляет сигнал завершения на управляющее средство 1303 интерпретации блока в момент завершения интерпретации.
После этого управляющее средство 1303 интерпретации блока удостоверяет содержимое программного потока 1302. Когда управляющее средство 1303 интерпретации блока определяет, что на вход подается заголовок PES, оно подает команду коммутационному средству 1307 для подачи программного потока 1302 на вход средства 1305 интерпретации заголовка PES и инициирует средство 1305 интерпретации заголовка PES. Средство 1305 интерпретации заголовка PES интерпретирует заголовок PES в соответствии со структурой заголовка PES и отправляет сигнал завершения и информацию идентификатора потока, содержащуюся в заголовке PES, и информацию о числе байтов последующей полезной нагрузки PES на управляющее средство 1303 интерпретации блока в момент завершения интерпретации.
Затем управляющее средство 1303 интерпретации блока подает команду коммутационному средству 1307 для подачи программного потока 1302 на вход средства 1306 выделения полезной нагрузки PES, подает команду коммутационному средству 1308 выбора выходных данных выбрать соответствующие предстоящие выходные данные согласно информации идентификатора потока и инициирует средство 1306 выделения полезной нагрузки PES для обработки множества байтов полезной нагрузки PES. При обработке множества байтов полезной нагрузки PES модуль 1306 выделения полезной нагрузки PES отправляет сигнал завершения на управляющее средство 1303 интерпретации блока.
(Средство интерпретации заголовка блока)
Как показано на Фиг. 16, программный поток 1402 входных данных и стартовый сигнал 1410 средства 1304 интерпретации заголовка блока подаются на вход средства 1304 интерпретации заголовка блока, а после завершения интерпретации заголовка блока выводится сигнал 1411 завершения.
Когда стартовый сигнал 1410 подается на вход управляющего средства 1408 интерпретации заголовка блока, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для подачи программного потока 1402 на вход средства 1403 интерпретации тела заголовка блока и инициирует средство 1403 интерпретации тела заголовка блока. Средство 1403 интерпретации тела заголовка блока интерпретирует заголовок блока в соответствии со структурой тела заголовка блока и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации.
Затем управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что системный заголовок не подается на вход, управляющее средство 1408 интерпретации заголовка блока выводит сигнал 1411 завершения. Если управляющее средство 1408 интерпретации заголовка блока определяет, что на вход подается системный заголовок, оно подает команду коммутационному средству 1409 для подачи программного потока 1402 на вход средства 1404 интерпретации тела системного заголовка и инициирует средство 1404 интерпретации тела системного заголовка. Средство 1404 интерпретации тела системного заголовка интерпретирует системный заголовок в соответствии со структурой тела системного заголовка и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации.
Затем управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что информация о размере базового буфера не подается на вход, управляющее средство 1408 интерпретации заголовка блока выводит сигнал 1411 завершения. При определении, что на вход подается информация о размере базового буфера, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для подачи программного потока 1402 на вход средства 1405 интерпретации информации о размере базового буфера, и инициирует средство 1405 интерпретации информации о размере базового буфера. Средство 1405 интерпретации информации о размере базового буфера интерпретирует информацию о размере базового буфера в соответствии со структурой информации о размере базового буфера, заключенной в сплошную рамку на Фиг. 3, и отправляет сигнал завершения и различающую информацию, указывающую, следует ли далее расширенный идентификатор, на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации. В примере, изображенном на Фиг. 3, если stream_id равняется 0хFD и P-STD_buffer_size_bound равняется 0, отправляется различающая информация, указывающая, что далее следует расширенный идентификатор.
Если далее не следует расширенный идентификатор, управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что на вход не подается информация о размере базового буфера, управляющее средство 1408 интерпретации заголовка блока выводит сигнал 1411 завершения. При определении, что на вход подается информация о размере базового буфера, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для подачи программного потока 1402 на вход средства 1405 интерпретации информации о размере базового буфера и инициирует средство 1405 интерпретации информации о размере базового буфера. Затем вышеописанная операция повторяется.
Если далее следует расширенный идентификатор, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для подачи программного потока 1402 на вход средства 1406 интерпретации информации о размере расширенного буфера и инициирует средство 1406 интерпретации информации о размере расширенного буфера. Средство 1406 интерпретации информации о размере расширенного буфера интерпретирует информацию о размере расширенного буфера в соответствии со структурой информации о размере расширенного буфера, заключенной в пунктирную рамку на Фиг. 3, и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации. Размер буфера, рассчитанный при помощи P-STD_buffer_bound_scale _extension и P-STD_buffer_size_bound_extension, которые были приведены в данном описании, становится размером буфера для расширенного идентификатора потока (stream_id_extension).
Затем управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402 и определяет, подается ли на вход информация о размере базового буфера. Последующий процесс подобен вышеописанному.
(Процедура разуплотнения данных)
Порядок работы средства разуплотнения данных, изображенного на Фиг. 16, описывается со ссылкой на Фиг. 17. Операция разуплотнения данных разъясняется согласно блок-схеме, изображенной на Фиг. 17, на примере, в котором поток данных области записанной информации о размере буфера в системном заголовке программного потока с форматом данных, показанным на Фиг. 3, представляет собой E0 E7 10 FD C0 00 FD FF D5 FD E7 10 C0 C0 40 в шестнадцатеричной форме.
Когда начинается интерпретация блока, сначала интерпретируется тело заголовка блока на этапе S1601. Если системный заголовок записан в блоке, на этапе S1602 интерпретируется тело системного заголовка следующим образом:
stream_id = 0хE0
P-STD_buffer_bound_scale = 1
P-STD_buffer_size_bound = 1808 (1808*1 Кб = 1808 Кб)
На этом интерпретация E0 E7 10 заканчивается.
Таким образом, поскольку stream_id не равняется 0xFD и P-STD_buffer_size_bound не равняется 0, "размер буфера для stream_id со значением 0xE0 интерпретируется как 1808 Кб".
На этапе S1604 определяется, что информация о размере расширенного буфера не записывается. На этапе S1606 определяется, продолжается ли запись информации о размере буфера. На этапе S1606 определяется, имеет ли верхний бит последующих данных (0хFD) значение 1. В данном случае, поскольку верхний бит 0хFD равен 1, выполнение процесса возвращается на этап S1603, и интерпретация последующей информации о размере буфера выполняется следующим образом:
stream_id = 0хFD
P-STD_buffer_bound_scale = 0
P-STD_buffer_size_bound = 0
На этом интерпретация FD C0 00 заканчивается.
На этапе S1604
stream_id = 0xFD && P-STD_buffer_size_bound = 0
Следовательно, устанавливается, что информация о размере расширенного буфера записывается, и исполняется этап S1605.
На этапе S1605 интерпретируются
'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 Кб).
На этом интерпретация FD FF D5 FD E7 10 заканчивается. В результате это интерпретируется как "размер буфера для расширенного идентификатора потока со значением 0х55 равен 1808 Кб".
На этапе S1606 определяется, имеет ли верхний бит последующих данных (0хC0) значение 1. В данном случае, поскольку он равен 1, выполнение процесса возвращается на этап S1603, и интерпретация последующей информации о размере буфера выполняется следующим образом.
Интерпретируются
stream_id = 0хC0
P-STD_buffer_bound_scale = 0
P-STD_buffer_size_bound = 64 (64б×128 = 8192 б).
На этом интерпретация C0 C0 40 заканчивается.
Поскольку stream_id не равняется 0хFD и P-STD_buffer_size_bound не равняется 0, это интерпретируется как "размер буфера для расширенного идентификатора потока со значением 0х55 равен 8192 б".
На этапе S1604 определяется, что информация о размере расширенного буфера не записывается. На этапе S1606 определяется, продолжается ли запись информации о размере буфера. Поскольку в дальнейшем информация о размере буфера не записывается, выполняются интерпретация заголовка PES на этапе S1607 и выделение полезной нагрузки PES на этапе S1608, и выполнение процесса продвигается к обработке следующего блока. Выходные данные во время выделения полезной нагрузки PES указывают размер буфера, соответствующий идентификатору потока или расширенному идентификатору потока, который предоставляется на этапе S1607.
(Третий вариант осуществления)
Еще один вариант осуществления средства генерирования заголовка блока средства уплотнения вывода данных в соответствии с настоящим изобретением будет описан со ссылкой на Фиг. 18. Фиг. 18 отображает код на псевдоязыке C, который отображает операции средства 1204 генерирования информации о размере базового буфера и средства 1205 генерирования информации о размере расширенного буфера в средстве 1202 генерирования системного заголовка средства генерирования заголовка блока, показанного на Фиг. 13.
В случае, когда генерируется информация о размере расширенного буфера для элементарного потока, представленного набором из расширенного идентификатора и расширенного идентификатора потока, на Фиг. 18, 0хB7 (шестнадцатеричное число), которое не является базовым идентификатором потока или расширенным идентификатором, выбирается в качестве stream_id, и генерируется поток данных объемом 48 битов, включающий в себя 0хB7. Поток данных объемом 48 битов составляется из двух потоков данных объемом 24 бита, и, как показано в случае истинного значения условного оператора на Фиг. 18, их детализация представляет собой
(A) совокупность 24 битов, включающих в себя 0хB7 (8 битов, шестнадцатеричное число) в качестве первого поля, 110000000b (9 битов, двоичное число) в качестве второго поля, и stream_id_extension объемом 8 битов, указывающих расширенный идентификатор потока, в качестве третьего поля, и вслед за этим
(B) совокупность 24 битов, включающих в себя 0хB6 (8 битов, шестнадцатеричное число) в качестве первого поля, 11b (2 бита, двоичное число) в качестве второго поля, P-STD_buffer_bound_scale_extension объемом 1 бит в качестве третьего поля, указывающего информацию масштабирования ограничения буфера, необходимую для воспроизведения элементарного потока, имеющего расширенный идентификатор потока stream_id_extension, и P-STD_buffer_size_bound_extension объемом 13 битов в качестве четвертого поля, указывающего информацию ограничения размера буфера, необходимую для воспроизведения элементарного потока, имеющего расширенный идентификатор потока stream_id_extension. Первые 8 битов, показанных в (A), соответствуют stream_id в условном операторе на Фиг. 18.
С одной стороны, когда генерируется информация о размере базового буфера для элементарного потока, представленного базовым идентификатором потока, значение базового идентификатора потока генерируется в качестве stream_id. Как показано в случае ложного значения (else) условного оператора на Фиг. 18, информация о размере базового буфера генерируется посредством 24-битной структуры из stream_id (8 битов), 11b (2 бита, двоичное число), P-STD_buffer_bound_scale (1 бит) и P-STD_buffer_size_bound (13 битов) аналогично стандартному способу.
В случае, когда все размеры расширенного буфера идентичны, на Фиг. 18, предполагается stream_id = 0xFD (шестнадцатеричное число) и генерируется информация о размере базового буфера, указываемая P-STD_buffer_bound_scale и P-STD_buffer_size_bound, которые показаны в случае ложного значения (else) условного оператора на Фиг. 18. Если информация о размере базового буфера, представленная stream_id = 0хFD, запрашивается на стороне разуплотнения, эта информация рассматривается как информация о размере всех расширенных буферов. В результате, если размеры всех расширенных буферов имеют идентичное значение, информация о размере расширенного буфера может быть представлена всего лишь одним набором из 24-битных структур (т.е. 24 битами).
Информация о размере расширенного буфера рассчитывается следующим образом:
Другими словами, информация о размере расширенного буфера рассчитывается следующим образом:
(a) 128*P-STD_buffer_size_bound_extension байтов, когда значение P-STD_buffer_bound_scale_extension равняется 0,
(b) 1024*P-STD-buffer_size_bound_extension байтов, когда значение P-STD_buffer_bound_scale_extension не равняется 0.
Дополнительно информация о размере базового буфера рассчитывается следующим образом:
Другими словами, информация о размере базового буфера рассчитывается следующим образом:
(a) 128*P-STD_buffer_size_bound байтов, когда значение P-STD_buffer_bound_scale равняется 0,
(b) 1024*P-STD_buffer_size_bound байтов, когда значение P-STD_buffer_bound_scale не равняется 0.
(Средство разуплотнения данных)
Средство разуплотнения данных для разуплотнения всех данных из программного потока, сгенерированного способом уплотнения данных, описанным в третьем варианте осуществления, будет описан со ссылкой на Фиг. 15. Описывается операция разуплотнения данных, соответствующая программному потоку, предоставленному способом, отображенным на Фиг. 18.
Программный поток 1302 подается на вход средства 1301 разуплотнения данных. ES 1309 видеоданных в соответствии со стандартом MPEG, ES 1310 звуковой системы в соответствии со стандартом MPEG, ES 1310 метаданных и ES 1312 отличных от стандарта MGEG видеоданных, которые уплотнены в программном потоке 1302, разуплотняются и выводятся. В средстве 1301 разуплотнения данных управляющее средство 1303 интерпретации блока полностью осуществляет управление средством разуплотнения данных.
Управляющее средство 1303 интерпретации блока удостоверяет содержимое программного потока 1302. Когда устанавливается, что на вход подается заголовок блока, управляющее средство 1303 интерпретации блока подает команду коммутационному средству 1307 для подачи программного потока 1302 на вход средства 1304 интерпретации заголовка блока и инициирует средство 1304 интерпретации заголовка блока. Средство 1304 интерпретации заголовка блока интерпретирует программный поток 1302 в соответствии со структурой заголовка блока и отправляет сигнал завершения на управляющее средство 1303 интерпретации блока в момент завершения интерпретации.
После этого управляющее средство 1303 интерпретации блока удостоверяет содержимое программного потока 1302. Когда устанавливается, что на вход подается заголовок PES, управляющее средство 1303 интерпретации блока подает команду коммутационному средству 1307 для подачи программного потока 1302 на вход средства 1305 интерпретации заголовка PES и инициирует средство 1305 интерпретации заголовка PES. Средство 1305 интерпретации заголовка PES интерпретирует заголовок PES в соответствии со структурой заголовка PES и отправляет сигнал завершения, информацию идентификатора потока, содержащуюся в заголовке PES, и информацию о числе байтов последующей полезной нагрузки PES на управляющее средство 1303 интерпретации блока в момент завершения интерпретации.
После этого управляющее средство 1303 интерпретации блока подает команду коммутационному средству 1307 для того, чтобы подать программный поток 1302 на вход средства 1306 выделения полезной нагрузки PES, подает команду коммутационному средству 1308 выбора выходных данных, чтобы были выбраны соответствующие назначения выходных данных согласно информации идентификатора потока, и инициирует средство 1306 выделения полезной нагрузки PES, чтобы обработать множество байтов полезной нагрузки PES. Когда средство 1306 выделения полезной нагрузки PES обрабатывает множество байтов полезной нагрузки PES, оно отправляет сигнал завершения на управляющее средство 1303 интерпретации блока.
(Средство интерпретации заголовка блока)
Как показано на Фиг. 16, средство 1304 интерпретации заголовка блока принимает входной программный поток 1402 и стартовый сигнал 1410 для средства 1304 интерпретации заголовка блока и выводит сигнал 1411 завершения после завершения интерпретации заголовка блока.
Когда стартовый сигнал 1410 подается на вход управляющего средства 1408 интерпретации заголовка блока, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для того, чтобы подать программный поток 1402 на вход средства 1403 интерпретации тела заголовка блока и инициирует средство 1403 интерпретации тела заголовка блока. Средство 1403 интерпретации тела заголовка блока интерпретирует заголовок блока в соответствии со структурой тела заголовка блока и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации.
После этого управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что системный заголовок не подается на вход, управляющее средство 1408 интерпретации заголовка блока выводит сигнал 1411 завершения. При определении, что на вход подается системный заголовок, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для того, чтобы подать программный поток 1402 на вход средства 1404 интерпретации тела системного заголовка, и инициирует средство 1404 интерпретации тела системного заголовка. Средство 1404 интерпретации тела системного заголовка интерпретирует системный заголовок в соответствии со структурой тела системного заголовка и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации.
После этого управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что информация о размере базового буфера или информация о размере расширенного буфера не подается на вход, управляющее средство 1408 интерпретации заголовка блока выводит сигнал 1411 завершения. Управляющее средство 1408 интерпретации заголовка блока удостоверяет содержимое программного потока 1402. При определении, что информация о размере базового буфера или информация о размере расширенного буфера подается на вход, управляющее средство 1408 интерпретации заголовка блока определяет, подается ли на вход информация о размере базового буфера или же на вход подается информация о размере расширенного буфера.
Если на вход подается информация о размере базового буфера, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для того, чтобы подать программный поток 1402 на вход средства 1405 интерпретации информации о размере базового буфера, и инициирует средство интерпретации информации о размере базового буфера. Средство 1405 интерпретации информации о размере базового буфера интерпретирует информацию о размере базового буфера в соответствии с stream_id (8 битов) на Фиг. 18 и структурой содержимого (всего 16 битов) оператора else и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации.
Если на вход подается информация о размере расширенного буфера, управляющее средство 1408 интерпретации заголовка блока подает команду коммутационному средству 1409 для того, чтобы подать программный поток 1402 на вход средства 1406 интерпретации информации о размере расширенного буфера, и инициирует средство 1406 интерпретации информации о размере расширенного буфера. Средство 1406 интерпретации информации о размере расширенного буфера интерпретирует информацию о размере расширенного буфера в соответствии со stream_id (8 битов) на Фиг. 18 и структурой содержимого (всего 40 битов) условного оператора и отправляет сигнал завершения на управляющее средство 1408 интерпретации заголовка блока в момент завершения интерпретации. В примере структуры, показанной на Фиг. 18, размер буфера для расширенного идентификатора потока, обозначенного stream_id_extension, принимает значение размера, рассчитанного при помощи P-STD_buffer_bound_scale_extension и P-STD-buffer_size_bound_extension.
Затем управляющее средство 1408 интерпретации заголовка блока определяет, подается ли на вход другая информация о размере базового буфера или информация о размере расширенного буфера. Если информация о размере базового буфера или информация о размере расширенного буфера по-прежнему подается на вход, продолжается интерпретация информации о размере базового буфера или информации о размере расширенного буфера. Если другая информация о размере базового буфера или информация о размере расширенного буфера не подается на вход, выводится сигнал 1411 завершения и средство 1304 интерпретации заголовка блока прекращает свою работу.
Далее со ссылкой на блок-схему на Фиг. 19 будет описан способ для разуплотнения данных, сгенерированных, как изображено на Фиг. 18, с использованием средства разуплотнения данных, изображенного на Фиг. 15. Операция разуплотнения данных разъясняется на примере, в котором поток данных области записанной информации о размере буфера в системном заголовке программного потока с форматом данных, показанным на Фиг. 18, представляет собой E0 E7 10 B7 C0 55 B6 CB A5 00 в шестнадцатеричной форме.
Когда начинается интерпретация блока, сначала интерпретируется тело заголовка блока на этапе S1901. Если системный заголовок с учетом блока не записывается, этап S1902 немедленно заканчивается и исполняется этап S1907 интерпретации заголовка PES для выполнения интерпретации PES. Если системный заголовок записывается, тело системного заголовка интерпретируется на этапе S1902, а затем выполнение процесса продвигается к этапу S1906 для интерпретации и удостоверения информации о размере буфера.
Как описано выше, в данном примере, так как поток данных, имеющий отношение к информации о размере буфера, представляет собой E0 E7 10 B7 C0 55 B6 CB A5 00 и один начальный бит равен "1", на этапе S1906 устанавливается существование информации о размере буфера и выполнение процесса продвигается к этапу S1904, чтобы удостоверить, к какому буферу относится информация о размере буфера. На этапе S1904 устанавливается, что записывается информация о размере базового буфера, так как первые 8 битов равны E0, и выполняется интерпретация информации о размере базового буфера на этапе S1903. На этапе S1903 интерпретируется информация о размере базового буфера для базового идентификатора потока со значением E0. Поскольку следующий поток данных объемом 16 битов представляет собой E7 10, он интерпретируется согласно Фиг. 18 следующим образом:
stream_id = 0хE0
P-STD_buffer_bound_scale = 1
P-STD_buffer_size_bound = 1808 (десятичное число)
Другими словами, результатом интерпретации является то, что размер базового буфера равен 1808 Кб. Затем выполнение процесса возвращается к этапу S1906. На данный момент, поскольку поток данных, имеющий отношение к информации о размере буфера, в системном заголовке представляет собой B7 C0 55 B6 CB A5 00 и 1 начальный бит равен "1", на этапе S1906 устанавливается, что информация о размере буфера существует. Выполнение процесса продвигается к этапу S1904 для удостоверения типа размера буфера. На этапе S1904 устанавливается, что информация о размере расширенного буфера записывается, так как первые 8 битов равны B7. Следовательно, на этапе S1905 выполняется интерпретация информации о размере расширенного буфера. На этапе S1905 считываются 16 битов (C055), следующие за B7, и результатом интерпретации является то, что расширенный идентификатор потока (stream_id_extension) равен 0x55. Затем считывается 8-битное значение 0xB6, и, поскольку следующие 16 битов равны CBA5, это интерпретируется согласно Фиг. 18 следующим образом:
stream_id_extension = 0х55
P-STD_buffer_bound_scale_extension = 0
P-STD_buffer_size_bound_extension = 2981 (десятичное число).
Другими словами, результатом интерпретации является то, что размер расширенного буфера равен 381568 байтов (= 2981 · 128). Затем выполнение процесса возвращается к этапу S1906. На данный момент поток данных, имеющий отношение к информации о размере буфера, в системном заголовке представляет собой 00 и 1 начальный бит равен '0', и поэтому на этапе S1906 устанавливается, что информация о размере буфера отсутствует, и исполняются интерпретация заголовка PES на этапе S1907 и выделение полезной нагрузки PES на этапе S1908.
Операция разуплотнения данных применительно к другому варианту осуществления разъясняется на примере, в котором поток данных области записанной информации о размере буфера в системном заголовке программного потока с форматом данных, показанным на Фиг. 18, представляет собой E0 E7 10 FD C0 55 B6 CB A5 00 в шестнадцатеричной форме.
Поскольку первые 3 байта равны E0 E7 10, как описано в вышеупомянутом варианте осуществления, они интерпретируются как
stream_id = 0хE0
P-STD_buf fer_bound_scale = 1
P-STD_buffer_size_bound = 1808 (десятичное число)
Следующее FD C0 55 B6 CB A5 интерпретируются как
stream_id = 0хFD
P-STD_buffer_bound_scale = 0
P-STD_buffer_size_bound = 2981 (десятичное число)
Поскольку stream_id равняется 0хFD, информация о размере базового буфера, представленная набором P-STD_buffer_bound_scale и P-STD_buffer_size_bound, интерпретируется как размер расширенного буфера всех элементарных потоков, преобразованных в PES путем использования расширенного идентификатора потока, а его размер интерпретируется как 381568 байтов (= 2981* 128).
В дополнение, в настоящем варианте осуществления используются определенный stream_id (0хB7) и определенное значение (0хB6). Однако если эти значения являются значениями, отличными от 0хB8-0хFF, заданных в качестве значения, которое используется для системной части стандарта MPEG-2, по существу не важно, какие значения используются. Кроме того, желательно значение '00 0000 0' (в двоичной форме) условного оператора. Однако это значение не всегда требуется для цели настоящего изобретения.
Согласно настоящему изобретению, если информация о размере базового буфера, составляющая пару расширенному идентификатору, занимает 0 байтов, пара из расширенного идентификатора потока и информации о размере расширенного буфера записывается при сохранении структуры, аналогичной текущему стандарту. Дополнительно предоставляется флаговая информация, указывающая, записывается ли информация о размере расширенного буфера для расширенного идентификатора потока в области, зарезервированной для запланированного расширения, и пара из расширенного идентификатора потока и информации о размере расширенного буфера записывается при сохранении структуры, аналогичной текущему стандарту.
Согласно настоящему изобретению пара из расширенного идентификатора потока и информации о размере расширенного буфера интерпретируются на существующем оборудовании в соответствии с существующей Системной частью стандарта MPEG-2, без возникновения ошибки воспроизведения, программный поток воспроизводится должным образом, и обеспечивается обратная совместимость. С одной стороны, даже когда на вход подается программный поток, сгенерированный согласно существующей Системной части стандарта MPEG-2, он интерпретируется, не приводя к ошибке воспроизведения, и воспроизводится должным образом, и обеспечивается прямая совместимость.
Уплотнение данных и разуплотнение данных, основанные на каждом варианте осуществления, упомянутом выше, могут быть реализованы даже в аппаратном обеспечении и могут исполняться посредством программного обеспечения с использованием вычислительного средства, такого, как персональный компьютер. Соответственно, настоящее изобретение может предоставить программу для исполнения уплотнения данных, программу для исполнения разуплотнения данных или машиночитаемый носитель данных, на котором хранится программа.
Настоящее изобретение фактически не ограничивается описанными выше вариантами осуществления, а может быть реализовано с модификацией компонентов, без отступления от объема фазы реализации. Различные изобретения могут быть реализованы посредством объединения соответствующим образом конструктивных элементов, раскрытых в вариантах осуществления. Например, некоторые из раскрытых конструктивных элементов могут быть исключены. Некоторые конструктивные элементы различных вариантов осуществления могут быть соответствующим образом объединены.
Промышленная применимость
Способ и устройство уплотнения/разуплотнения данных используется для уплотнения и разуплотнения закодированных данных из числа видеоданных, звуковых данных и метаданных в коммуникационной среде, накопительной среде и вещательной среде.