СИСТЕМА И СПОСОБ ДЛЯ ЭФФЕКТИВНОЙ АДАПТАЦИИ МАСШТАБИРУЕМЫХ ПОТОКОВ
SYSTEM AND METHOD FOR EFFICIENT ADAPTATION OF SCALABLE FLOWS

ОБЛАСТЬ ТЕХНИКИ
[0001] Данное изобретение относится к кодированию, декодированию, хранению и передаче медиаданных. Более конкретно, данное изобретение относится к кодированию, декодированию, хранению и передаче масштабируемых медиаданных.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
[0002] Мультимедийные приложения включают локальное воспроизведение, потоковую передачу или передачу по требованию, диалоговые сервисы, сервисы широкого вещания (broadcast)/многоадресного вещания (multicast). Технологии, используемые в мультимедийных приложениях, включают, например, кодирование, хранение и передачу медиаданных. Типы медиаданных включают речь, аудио, изображения, видео, графику и текст в реальном времени. Для различных технологий были разработаны различные стандарты.
[0003] Стандарты кодирования видео включают ITU-T (International Telecommunication Union - Telecommunication Standardization Sector, Международный союз электросвязи - сектор по стандартизации телекоммуникаций) Н.261, ISO (International Standardization Organization, Международная организация по стандартизации)/IEC (International Electrotechnical Commission, Международная электротехническая комиссия) MPEG (Motion Picture Experts Group, Экспертная группа по движущимся изображениям) - 1 Visual (визуальный), ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC (Advanced Video Coding, усовершенствованное видеокодирование)). Кроме того, разрабатываются новые стандарты кодирования видео. Например, в настоящий момент разрабатывается стандарт SVC (Scalable Video Coding, масштабируемое кодирование видео). Этот стандарт станет расширением масштабирования стандарта H.264/AVC. Также в процессе разработки находятся китайские стандарты кодирования видео.
[0004] Масштабируемое кодирование видео может давать масштабируемые битовые видеопотоки. Часть масштабируемого битового видеопотока можно выделить и декодировать с пониженным визуальным качеством воспроизведения. Масштабируемый битовый видеопоток содержит один немасштабируемый основной уровень и один или несколько улучшающих уровней. Улучшающий уровень может повышать временное разрешение (т.е. частоту кадров), пространственное разрешение, или просто качество видеоинформации, содержащейся в низшем уровне или его части. В некоторых случаях данные улучшающего уровня могут быть усечены после определенного положения и даже в произвольных позициях. Каждая позиция усечения может включать некоторые дополнительные данные, представляющие все более улучшенное визуальное качество. Такую масштабируемость называют FGS (fine-grained (granularity) scalability, масштабируемость мелкой детализации). В отличие от FGS, масштабируемость, предоставляемую уровнем улучшения, но не являющуюся масштабируемостью мелкой детализации, называют CGS (coarse-grained scalability, масштабируемость грубой детализации).
[0005] В текущей черновой версии стандарта SVC, структура масштабируемого уровня характеризуется тремя переменными - temporal_level ("временной уровень"), dependency_id ("идентификатор зависимости") и quality_level ("уровень качества"), которые указываются в битовом потоке или могут быть получены согласно стандарту. Параметр temporal_level используется для указания временной масштабируемости или частоты кадров. Уровень, состоящий из изображений с меньшим значением temporal_level, имеет меньшую частоту кадров, чем уровень, состоящий из изображений с большим значением temporal_level. Параметр dependency_id используется для указания иерархии зависимостей межуровневого кодирования. В любом временном положении изображение с меньшим значением dependency_id может быть использовано для межуровневого предсказания при кодировании изображения с большим значением dependency_id. Параметр quality_level используется для указания иерархии FGS-уровней. В любом временном положении и при одинаковых значениях dependency_id для межуровневого предсказания FGS-изображения со значением quality_level, равным QL, используется FGS-изображение со значением quality_level, равным QL-1, или изображение основного качества (то есть не FGS-изображение), если QL-1=0).
[0006] На фиг.1 показан пример временного сегмента масштабируемого видеопотока и указаны значения трех упомянутых выше переменных. Следует отметить, что временные значения являются относительными, то есть значение времени, равное 0, не обязательно соответствует времени первого изображения в последовательности отображения битового потока. Типичные предсказательные ссылочные зависимости этого примера показаны на фиг.2, где сплошные стрелки обозначают интер-предсказательные ссылочные зависимости в горизонтальном направлении, а пунктирные блочные стрелки - межуровневые предсказательные ссылочные зависимости. Элемент, на который показывает стрелка, использует в качестве предсказательной ссылки элемент, от которого начинается стрелка.
[0007] Здесь уровень определяется как набор изображений, имеющих одинаковые значения temporal_level, dependency_id и quality_level соответственно. Обычно для декодирования и воспроизведения улучшающего уровня должны быть доступны низшие уровни и основной уровень, поскольку они могли быть использованы, напрямую или косвенно, для межуровневого предсказания при кодировании улучшающего уровня. Например, на фиг.1 и 2, изображения с (t, Т, D, Q) равным (0, 0, 0, 0) и (8, 0, 0, 0) относятся к основному уровню, который может быть декодирован независимо от каких-либо улучшающих уровней. Изображение с (t, Т, D, Q) равным (4, 1, 0, 0) принадлежит к улучшающему уровню, удваивающему частоту кадров основного уровня; для декодирования этого уровня требуется наличие изображений основного уровня. Изображения с (t, Т, D, Q) равным (0, 0, 0, 1) и (8, 0, 0, 1) принадлежат к улучшающему уровню, повышающему качество и частоту кадров основного уровня путем FGS; для декодирования этого уровня тоже требуется наличие изображений основного уровня.
[0008] Изображение мгновенного обновления декодирования (IDR, instantaneous decoding refresh) определяется в стандарте H.264/AVC следующим образом. Это - кодированное изображение, в котором все слайсы являются слайсами типа I или SI и сразу после декодирования которого декодирующий процесс должен пометить все опорные изображения как "неиспользуемые как опорные". После декодирования IDR-изображения все следующие кодированные изображения в последовательности декодирования могут быть декодированы без интер-предсказания от изображений, декодированных до IDR изображения. Первое изображение каждой кодированной видеопоследовательности является IDR изображением.
[0009] Концепция IDR-изображения также используется в текущей черновой версии стандарта SVC, где вышеприведенное определение применимо к изображениям с одинаковыми значениями dependency_id и quality_level соответственно. Другими словами, IDR-изображение - это кодированное изображение, в котором декодирование IDR-изображения и всех последующих кодированных изображений в последовательности декодирования в этом же уровне (т.е. с такими же значениями dependency_id и quality_level, как у IDR-изображения) может быть выполнено без интер-предсказания от любого из изображений, находящихся перед IDR-изображением в последовательности декодирования в этом же уровне. Сразу после декодирования IDR-изображения декодирующий процесс должен пометить все опорные изображения в этом же уровне как "неиспользуемые как опорные". Следует отметить, что используемое здесь в контексте текущей черновой версии стандарта SVC выражение "в этом же уровне" означает, что декодированные изображения имеют такие же значения dependency_id и quality_level, как и IDR-изображение. Либо все изображения с одинаковым значением порядкового номера изображения (то есть с одинаковым временным положением), но разными значениями dependency_id или quality_level, кодируются как IDR-изображения, либо ни одно из изображений с данным порядковым номером изображения не кодируется как IDR-изображение. Другими словами, либо все изображения в блоке доступа (access unit) (включая все изображения с одинаковым порядковым номером изображения) являются IDR-изображениями, либо ни одно из изображений в блоке доступа не является IDR изображением.
[0010] Существующие стандарты форматов медиафайлов включают файловый формат ISO (ISO/IEC 14496-12), файловый формат MPEG-4 (ISO/IEC 14496-14), файловый формат AVC (ISO/IEC 14496-15) и файловый формат 3GPP (3rd Generation Partnership Project, Проект партнерства третьего поколения) (3GPP TS 26.244). В настоящее время ISO/IEC MPEG разрабатывает файловый формат SVC, описание которого можно найти в MPEG N7477, "Изучение верификационной модели файлового формата масштабируемого видеокодирования (SVC)" ("VM Study Text for Scalable Video Coding (SVC) File Format"), 73-я встреча ISO/IEC MPEG, Познань, Польша, июль 2005 г., который полностью включен сюда посредством ссылки.
[0011] Одним из преимуществ масштабируемого кодирования по сравнению с одноуровневым кодированием является то, что при масштабируемом кодировании один поток может удовлетворить различным требованиям к качеству, битовой скорости передачи, размеру дисплея и т.п., в то время как при одноуровневом кодировании необходимо использование нескольких потоков. Для использования нескольких потоков требуется больше места для хранения и, при одновременном вещании, большая ширина полосы передачи. В потоковых приложениях при изменении параметров передающей сети или получателей по сравнению с их предыдущим состоянием, например при изменении ширины полосы передачи, потоки требуется адаптировать. Адаптацию потоков могут осуществлять также шлюзы и другие способные распознавать медиаданные сетевые элементы (media-aware network elements, MANE). Адаптация потока может требоваться при "локальном" воспроизведении масштабируемого кодированного файла (то есть когда файл находится в том же устройстве, что и декодер, или в памяти, соединенной с декодирующим устройством быстрым каналом), если декодер использует вычислительные ресурсы совместно с какими-либо другими процессами. Например, если декодирование осуществляется в процессоре общего назначения, на котором выполняется многозадачная операционная система, в некоторые промежутки времени декодер может использовать всю вычислительную мощность процессора и выполнять декодирование всех масштабируемых уровней. Однако в другие промежутки времени ему может быть доступна лишь часть вычислительной мощности процессора, и он сможет декодировать лишь подмножество из доступных масштабируемых уровней. Адаптированный поток может иметь измененную битовую скорость, частоту кадров и/или видеоразрешение. При одноуровневом кодировании адаптация потока может выполняться путем переключения потоков или транскодирования. При единственном масштабируемом потоке адаптация потока может выполняться путем переключения уровней.
[0012] При масштабируемом кодировании переключение с высокого уровня на низкий может выполняться в любом месте. Однако для переключения с низкого уровня на высокий ситуация является иной, поскольку для декодирования изображения, на которое произошло переключение, обычно требуется наличие в этом же уровне некоторых из предшествующих изображений в последовательности декодирования.
[0013] Для текущей черновой версии стандарта SVC переключение с низкого уровня на высокий может осуществляться на IDR блоке доступа (в том числе на IDR-изображениях). Однако использование IDR блоков доступа приводит либо к ухудшению эффективности кодирования из-за частого кодирования IDR блоков доступа либо замедляет адаптацию потока. Обе эти проблемы тесно связаны с восприятием конечным пользователем. Также для обеспечения переключения с низкого уровня на высокий теоретически возможно использовать методы кодирования SP/SI изображений или постепенного обновления при декодировании (gradual decoding refresh). Однако эти методы были разработаны для одноуровневого кодирования. Поэтому для масштабируемого кодирования эти методы в настоящий момент не подходят. Более того, даже после расширения этих методов для использования в масштабируемом кодировании их применение приведет либо к дополнительным ограничениям на кодирование (что эквивалентно меньшей эффективности кодирования), либо к усложнению внедрения.
[0014] Следовательно, в масштабируемом кодировании видео существует потребность в поддержке простого и эффективного переключения с низкого уровня на высокий. Более того, существует также потребность в указании точек простого и эффективного переключения с низкого уровня на высокий на уровне файлового формата так, чтобы не требовалось разбора и анализа битового видеопотока для нахождения мест для переключения с низкого уровня на высокий, поскольку разбор и анализ потока могут потребовать сложных вычислений.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0015] Настоящее изобретение предлагает систему и способ указания точек переключения с низкого уровня на высокий на уровне файлового формата для эффективного переключения масштабируемых потоков в потоковых серверах и при локальном воспроизведении файлов. Настоящее изобретение также предлагает систему и способ указания точек переключения с низкого уровня на высокий в битовом видеопотоке, например, для обеспечения интеллектуальной пересылки масштабируемых уровней в способных распознавать медиаданные сетевых элементах или вычислительно масштабируемого декодирования в получателях потока.
[0016] Настоящее изобретение делает возможным простое и эффективное переключение с низкого уровня на высокий для адаптации масштабируемого потока. Данное изобретение устраняет необходимость в детальном разборе и анализе потоковым сервером битовых видеопотоков, что иначе потребовало бы существенных затрат вычислительных и внедренческих ресурсов. Данное изобретение может использоваться в практически любых приложениях с масштабируемыми медиаданными.
[0017] Эти и другие преимущества и отличительные признаки изобретения, а также его организация и способ работы станут понятными из следующего подробного описания и чертежей, где одинаковые элементы имеют одинаковые номера.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] На фиг.1 показан пример временного сегмента масштабируемого видеопотока и указаны значения трех переменных - temporal_level, dependency_id и quality_level.
[0019] На фиг.2 показана типичная предсказательная ссылочная зависимость для временного сегмента, показанного на фиг.1.
[0020] На фиг.3 показана обзорная схема системы, в которой может быть реализовано настоящее изобретение.
[0021] На фиг.4 показан перспективный вид электронного устройства, в котором могут быть реализованы принципы данного изобретения.
[0022] На фиг.5 показано схематическое представление электрической цепи устройства с фиг.4.
[0023] На фиг.6 проиллюстрирована обычная система потоковой передачи мультимедийных данных, в которой может быть применена иерархия масштабируемого кодирования настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0024] Со ссылкой на фиг.6 будет описана типичная система потоковой передачи мультимедийных данных, являющаяся одной из систем, в которой могут быть применены процедуры настоящего изобретения.
[0025] Система потоковой передачи мультимедийных данных обычно содержит один или более источников 100 мультимедиа, например видеокамеру и микрофон, или хранящиеся в памяти файлы видеоизображений или компьютерной графики. Исходные данные, полученные из разных источников 100 мультимедиа, комбинируется в мультимедиа файл в кодере 102, который также можно назвать блоком редактирования. Исходные данные, поступающие с одного или более источников 100 мультимедиа, сначала захватываются с помощью средств 104 захвата в составе кодера 102, которые обычно могут быть реализованы в виде различных интерфейсных карт, драйверного программного обеспечения или прикладного программного обеспечения, управляющего функциями карты. Например, видеоданные могут захватываться с помощью карты захвата видео и соответствующего программного обеспечения. На выход средств 104 захвата обычно поступает либо несжатый, либо слегка сжатый поток данных, например несжатые видеокадры формата YUV 4:2:0 или формата изображений motion-JPEG, если используется карта захвата видео.
[0026] Редактор 106 соединяет различные медиапотоки вместе для синхронизации видео- и аудиопотоков для одновременного воспроизведения по потребности. Редактор 106 может также редактировать любой медиапоток, такой как видеопоток, например уменьшая вдвое частоту кадров или уменьшая пространственное разрешение. Эти отдельные, хотя и синхронизованные, медиапотоки сжимаются в компрессоре 108, где каждый медиапоток сжимается отдельно с использованием соответствующего компрессора для этого медиапотока. Например, видеокадры формата YUV 4:2:0 могут быть сжаты с применением рекомендации ITU-T H.263 или Н.264. Отдельные синхронизированные и сжатые медиапотоки обычно перемежаются в мультиплексоре 110, и на выходе кодера 102 получается единый, однородный битовый поток, который состоит из данных нескольких медиапотоков и может быть назван мультимедиа файлом. Следует отметить, что для формирования мультимедиа файла мультиплексирование нескольких медиапотоков в единый файл не обязательно, перемежение медиапотоков может осуществлять потоковый сервер непосредственно перед их передачей.
[0027] Мультимедиа файлы передаются в потоковый сервер 112, который таким образом способен выполнять потоковую передачу либо в реальном времени, либо в форме постепенной загрузки. При постепенной загрузке мультимедийные файлы сначала сохраняются в памяти сервера 112, откуда они потом могут по мере надобности извлекаться для передачи. При потоковой передаче в реальном времени редактор 102 передает непрерывный медиапоток мультимедиа файлов потоковому серверу 112, а сервер 112 пересылает поток напрямую клиенту 114. В качестве дополнительной возможности потоковая передача в реальном времени может также выполняться с сохранением мультимедиа файлов в доступной для сервера 112 памяти, откуда может осуществляться потоковая передача в реальном времени и по мере надобности запускаться непрерывный медиапоток мультимедиа файлов. В таком случае какое-либо контролирование потоковой передачи редактором 102 не обязательно. Потоковый сервер 112 осуществляет формирование потока мультимедиа данных в соответствии с доступной шириной полосы передачи или максимальной скоростью декодирования и воспроизведения клиентом 114, при этом потоковый сервер может регулировать битовую скорость медиапотока, например, пропуская при передаче В-кадры или регулируя количество масштабируемых уровней. Кроме того, потоковый сервер 112 может модифицировать поля заголовков мультиплексированного медиапотока для уменьшения их размера и формировать мультимедийные данные в пакеты, подходящие для передачи по используемой телекоммуникационной сети. Клиент 114 обычно может регулировать, в какой-то степени, работу сервера 112 с помощью подходящего протокола управления. Клиент 114 способен управлять сервером 112 по меньшей мере в такой степени, что для передачи клиенту может быть выбран желаемый мультимедиа файл, и, кроме того, клиент обычно способен останавливать и прерывать передачу мультимедиа файла.
[0028] Когда клиент 114 получает мультимедиа файл, этот файл сначала подается в демультиплексор 116, который разделяет составляющие файл медиапотоки. Затем отдельные сжатые медиапотоки подаются в декомпрессор 118, где каждый медиапоток декомпрессируется подходящим для этого конкретного медиапотока декомпрессором. Развернутые и реконструированные медиапотоки подаются в блок 120 воспроизведения, где медиапотоки воспроизводятся с надлежащей скоростью согласно их синхронизационным данным и подаются на средства 124 презентации. Реальные средства 124 презентации могут состоять, например, из дисплея компьютера или мобильной станции и акустических средств. В состав клиента 114 также обычно входит блок управления 122, которым конечный пользователь обычно может управлять через пользовательский интерфейс и который управляет как работой сервера, через вышеописанный протокол управления, так и работой блока 120 воспроизведения, на основе полученных от конечного пользователя инструкций.
[0029] Следует отметить, что передача мультимедиа файлов от потокового сервера 112 клиенту 114 происходит через телекоммуникационную сеть, при этом путь передачи обычно состоит из нескольких элементов телекоммуникационной сети. Поэтому возможно, что существует как минимум один элемент сети, который может осуществлять формирование трафика мультимедиа данных в соответствии с доступной шириной полосы передачи или максимальной скоростью декодирования и воспроизведения клиентом 114, по меньшей мере частично, таким образом, как описано выше для потокового сервера.
[0030] Настоящее изобретение предлагает систему и способ указания точек переключения с низкого уровня на высокий на уровне файлового формата для эффективного переключения масштабируемых потоков в потоковых серверах и при локальном воспроизведении файлов. Настоящее изобретение также предлагает систему и способ указания точек переключения с низкого уровня на высокий в битовом видеопотоке, например, для обеспечения интеллектуальной пересылки масштабируемых уровней в способных распознавать медиаданные сетевых элементах или вычислительно масштабируемого декодирования в получателях потока.
[0031] Для примера ниже описаны несколько вариантов осуществления настоящего изобретения. Однако следует отметить, что возможны также и другие варианты осуществления изобретения, например, получаемые комбинацией некоторых из описанных ниже вариантов.
[0032] Первый вариант указания точек переключения с низкого уровня на высокий в файловом формате включает использование точек переключения с низкого уровня на высокий как одного из типов информации о масштабировании. В этом варианте осуществления изобретения для указания точек переключения с низкого уровня на высокий для каждого уровня определен новый блок (box). Этот блок содержится в структуре данных, содержащей информацию о масштабировании для каждого масштабируемого уровня, например, в структуре ScalableLayerEntry() ("элемент таблицы с информацией о масштабируемом уровне"), определенной в черновой версии стандарта файлового формата SVC. Блок определяется следующим образом:
Тип блока: 'Iswp'
Контейнер: ScalableLayerEntry
Обязательный: Нет
Количество: Ноль или один
[0033] Этот блок обеспечивает компактное указание точек переключения с низкого уровня на высокий для отдельного уровня в составе потока. Таблица упорядочена строго в порядке возрастания номера сэмпла. Если для некоторого уровня блок точек переключения отсутствует, то для этого уровня не существует никаких других точек переключения с низкого уровня на высокий, кроме сэмплов синхронизации, указываемых в блоке сэмплов синхронизации, или сэмплов теневой синхронизации, указываемых в блоке сэмплов теневой синхронизации.
[0034] В этом примере, "entry_count" дает количество элементов в следующей таблице. Элемент "sample_number" дает номер сэмпла, для которого в следующей таблице указана информация о точках переключения с низкого уровня на высокий для текущего уровня. Элемент "entry_count2" дает количество элементов в следующей таблице.
[0035] Элемент "delta_layer_id" указывает более высокий уровень, на который поток может быть переключен с текущего уровня, либо более низкий уровень, с которого поток может быть переключен на текущий уровень, на текущем сэмпле с номером сэмпла, равным sample_number. Значение, большее или равное нулю, означает, что на текущем сэмпле поток может быть переключен с текущего уровня на высший уровень с идентификатором уровня, равным (layer_id+delta_layer_id+1). Значение, меньшее нуля, означает, что на текущем сэмпле поток может быть переключен с нижележащего уровня с идентификатором уровня, равным (layer_id+delta_layer_id) на текущий уровень. Значение layer_id для каждого уровня находится из структуры данных, содержащей информацию о масштабируемости для каждого масштабируемого уровня.
[0036] Второй вариант указания точек переключения с низкого уровня на высокий в файловом формате включает указание точек переключения с низкого уровня на высокий для всех уровней в специальном блоке. Этот блок определяется следующим образом:
Тип блока:
'Iswp'
Контейнер:
Sample Table Box ('stbl') ("блок таблицы сэмплов")
Обязательный:
Нет
Количество:
Ноль или один
[0037] Этот блок обеспечивает компактное указание точек переключения с низкого уровня на высокий для всех уровней в составе потока. Таблица упорядочена строго в порядке возрастания номера сэмпла. Если блок точек переключения с уровня на уровень отсутствует, то не существует никаких других точек переключения с низкого уровня на высокий, кроме сэмплов синхронизации, указываемых в блоке сэмплов синхронизации, или сэмплов теневой синхронизации, указываемых в блоке сэмплов теневой синхронизации.
[0038] В этом варианте осуществления изобретения "entry_count" дает количество элементов в следующей таблице. Значение "sample_number" дает номер сэмпла, для которого информация о точках переключения с низкого уровня на высокий указана в следующей таблице. Значение "entry_count2" дает количество элементов в следующей таблице. Значение "layer_id" дает идентификатор уровня, для которого информация о точках переключения с низкого уровня на высокий указана в следующей таблице. Значение "entry_count3" дает количество элементов в следующей таблице.
[0039] Значение "delta_ayer_id" указывает высший уровень, на который поток может быть переключен с текущего уровня, либо низший уровень, с которого поток может быть переключен на текущий уровень, на текущем сэмпле с номером сэмпла, равным sample_number. Значение, большее или равное нулю, означает, что на текущем сэмпле поток может быть переключен с текущего уровня на высший уровень с идентификатором уровня, равным (layer_id+delta_layer_id+1). Значение, меньшее нуля, означает, что на текущем сэмпле поток может быть переключен с нижележащего уровня с идентификатором уровня, равным (layer_id+delta_layer_id) на текущий уровень. В этом конкретном варианте осуществления изобретения возможно также поместить цикл с sample_number внутрь цикла с layer_id, вместо показанного способа, где цикл с sample_number находится внутри цикла с layer_id.
[0040] Третий вариант указания точек переключения с низкого уровня на высокий в файловом формате включает использование точек переключения сигнальных треков. Этот вариант осуществления изобретения также может быть использован одновременно с любым из других вышеуказанных вариантов осуществления изобретения. Этот вариант осуществления изобретения применим к случаю, когда независимо декодируемые комбинации масштабируемых уровней комбинируются с формированием независимых треков, обычно путем использования ссылок. В основном формате медиафайлов ISO (ISO base media file format), медиаданные представлены в виде набора независимых от сети треков ("дорожек"), в то время как треки "подсказок" (hint track) содержат зависимую от сети информацию о пакетировании и ассоциируют медиасэмплы или их части с транспортными пакетами (путем ссылок из треков подсказок к медиатрекам). Трек экстрактора (extractor track) содержит ссылки на медиатрек так, что подмножество кодированных изображений SVC блока доступа формирует сэмпл в треке экстрактора. Следовательно, каждый трек экстрактора должен представлять различное подмножество масштабируемых уровней, и каждый трек экстрактора должен быть разрешимым без декодирования других треков экстрактора этого же медиатрека.
[0041] В этом конкретном варианте осуществления изобретения можно указать точки переключения между треками подсказок или треками экстрактора. Треки, содержащие или ссылающиеся на достаточное подмножество масштабируемых уровней, дающее возможность переключения на как минимум один из сэмплов указанной точки переключения в этом треке, соединены с этим треком трековой ссылкой типа 'tswf в контейнерном блоке трековых ссылок. Треки, для которых этот трек содержит достаточное подмножество масштабируемых уровней, дающее возможность переключения как минимум на один из сэмплов указанной точки переключения в них, соединены с этим треком трековой ссылкой типа 'tswt' в контейнерном блоке трековых ссылок.
Тип блока:
'tswd'
Контейнер:
Sample Table Box ('stbl')
Обязательный:
Нет
Количество:
Ноль или один
[0042] Этот блок обеспечивает компактное указание точек переключения с низкого уровня на высокий между треками подсказок или треками экстрактора. Таблица упорядочена строго в порядке возрастания номера сэмпла. Если блок точек переключения между треками отсутствует, то не существует никаких других точек переключения с низкого уровня на высокий, кроме сэмплов синхронизации, указываемых в блоке сэмплов синхронизации, или сэмплов теневой синхронизации, указываемых в блоке сэмплов теневой синхронизации.
[0043] В этом варианте "entry_count" дает количество элементов в следующей таблице. Значение "sample_number" дает номер сэмпла точки переключения. Значение "entry_count2" дает количество элементов в следующей таблице. Значение "src_track_id" указывает идентификатор трека, содержащего низший уровень, с которого поток может быть переключен на уровень, содержащийся в текущем треке. Значение "entry_count3" дает количество элементов в следующей таблице. Значение "dest_track_id" указывает идентификатор трека, содержащего высший уровень, на который поток может быть переключен с уровня, содержащегося в текущем треке.
[0044] Следует отметить, что возможны и другие определения синтаксиса. Например, можно опустить entry_count3 и соответствующий цикл для значений dest_track_id. Кроме того, если в трековой ссылке 'tswf' указан лишь один трек, цикла для значений src_track_id не требуется. Возможно также использовать синтаксис TrackSwitchingPointBox ("блок точек переключения треков") независимо, без трековых ссылок 'tswf и/или 'tswt'. Кроме того, указанную в медиатреке информацию с помощью первого или второго варианта возможно использовать снова для получения точек переключения с низкого уровня на высокий в треках подсказок или треках экстрактора, при этом идентификатор уровня указывается для каждого трека подсказок или трека экстрактора, например в заголовке трека или в сэмпловой строке таблицы.
[0045] Ниже приведено обсуждение различных вариантов указания точек переключения с низкого уровня на высокий в битовом потоке. Первый вариант включает использование нового типа блоков NAL (network abstraction layer unit, блок уровня сетевой абстракции) для указания того, что изображение, содержащее кодированные слайсы этого типа блоков NAL, является изображением EIDR (enhancement-layer instantaneous decoding refresh, мгновенное обновление декодирования уровня улучшения). EIDR-изображение - это кодированное изображение, для которого декодирование EIDR-изображения и всех последующих кодированных изображений в последовательности декодирования в этом же уровне (т.е. с такими же значениями temporal_level, dependency_id и quality_level, как у EIDR-изображения), может быть выполнено без интер-предсказания от любого из изображений, находящихся перед EIDR-изображением в последовательности декодирования в этом же уровне. Сразу после декодирования EIDR-изображения декодирующий процесс должен пометить все опорные изображения в этом же уровне как "неиспользуемые как опорные". У EIDR-изображения значения temporal_level, dependency_id и quality_level не могут быть одновременно равны нулю. Следует отметить, что используемое здесь в контексте текущей черновой версии стандарта SVC выражение "в этом же уровне" означает, что декодированные изображения имеют такие же значения temporal_level, dependency_id и quality_level, как и EIDR-изображение. Следует отметить, что здесь, в отличие от самой последней черновой версии стандарта SVC, в понятии "в этом же уровне" учитывается параметр temporal_level. Учет параметра temporal_level делает возможным переключение с низшего уровня с меньшей частотой кадров на высший уровень с большей частотой кадров. Кроме того, это повышает эффективность кодирования EIDR-изображения, поскольку опорные изображения с большими значениями temporal_level автоматически удаляются из списков опорных изображений, что уменьшает количество необходимых действий по переупорядочиванию списка опорных изображений, и значения идентификаторов опорных изображений становятся меньше, что повышает эффективность энтропийного кодирования.
[0046] По определению масштабируемого кодирования, низший уровень не может зависеть от высшего, поэтому EIDR-изображение не может быть предсказано из изображений в этом же уровне и высших уровнях, но может быть предсказано из изображений из более низких уровней, в том числе более низких по времени. Это дает возможность переключения с ближайшего низшего уровня на содержащий EIDR-изображение уровень в позиции EIDR-изображения. Например, можно определить новый тип блоков NAL, как показано в таблице 1. Новому типу блоков NAL присвоен номер 22, а значение типа блоков NAL с номером 20 изменено с "Кодированный слайс не-IDR-изображения в расширении масштабирования" на "Кодированный слайс не-IDR- и не-EIDR-изображения в расширении масштабирования".
Таблица 1
nal_unit_type
Содержание блока NAL и синтаксическая структура RBSP
С
0
Не определено
1
Кодированный слайс не-IDR-изображения slice_layer_without_partitioning_rbsp()
2, 3, 4
2
Данные кодированного слайса, сегмент А slice_data_partition_a_layer_rbsp()
2
3
Данные кодированного слайса, сегмент В slice_data_partition_b_layer_rbsp()
3
4
Данные кодированного слайса, сегмент С slice_data_partition_c_layer_rbsp()
4
5
Кодированный слайс IDR-изображения slice_layer_without_partitioning_rbsp()
2, 3
6
SEI (supplemental enhancement information, дополнительная улучшающая информация) sei_rbsp()
5
7
Набор параметров последовательности seq_parameter_set_rbsp()
0
8
Набор параметров изображения pic_parameter_set_rbsp()
1
9
Ограничитель блока доступа access_unit_delimiter_rbsp()
6
10
Конец последовательности end_of_seq_rbsp0
7
11
Конец потока end_of_stream_rbsp()
8
12
Данные-заполнитель filler_data_rbsp()
9
13
Расширение набора параметров последовательности seq_parameter_set_extension_rbsp()
10
14…18
Зарезервировано
19
Кодированный слайс вспомогательного кодированного изображения без сегментирования slice_layer_without_partitioning_rbsp()
2, 3, 4
20
Кодированный слайс не-IDR- и He-EIDR-изображения в расширении масштабирования slice_layer_in_scalable_extension_rbsp()
2, 3, 4
21
Кодированный слайс IDR-изображения в расширении масштабирования slice_layer_in_scalable_extension_rbsp()
2, 3
22
Кодированный слайс EIDR-изображения в расширении масштабирования slice_layer_in_scalable_extension_rbsp()
2, 3, 4
23
Зарезервировано
24…31
Не определено
[0047] Этот вариант применим к масштабируемым уровням, кодированным с применением расширения масштабирования с указанием temporal_level, dependency_id и quality_level. Для обеспечения временной масштабируемости можно также использовать собственно стандарт H.264/AVC и указывать точки переключения с помощью SEI-сообщений подпоследовательности (sub-sequence information SEI messages). Однако в этом случае temporal_level не указывается и поэтому, согласно текущей черновой версии стандарта SVC, считается равным нулю для всех временно масштабируемых уровней. Для обеспечения эффективного переключения с низкого уровня на высокий между временными уровнями без нарушения совместимости потока с H.264/AVC используется новое SEI-сообщение, указывающее на то, что изображение является EIDR-изображением. Однако при использовании SEI-сообщения не действует функциональность управления ссылками EIDR-изображения, то есть EIDR-изображение, на которое указывает SEI-сообщение, может быть использовано для переключения с низкого уровня на высокий, но при этом декодирующий процесс не обязан пометить все опорные изображения в этом же уровне как "неиспользуемые как опорные". Так происходит потому, что SEI-сообщения не являются обязательными для соответствующих стандарту декодеров. SEI-сообщение определяется следующим образом:
Синтаксис SEI-сообщения EIDR-изображения
eidr_pic(payloadSize) {
Дескриптор
temporal_layer_num
ue(v)
}
[0048] Семантика SEI-сообщения EIDR-изображения. Семантика SEI-сообщения EIDR-изображения определяется следующим образом: SEI-сообщение EIDR-изображения, если имеется, ассоциируется с кодированным изображением, для которого temporal_level, dependency_id и quality_level отсутствуют в битовом потоке и, следовательно, полагаются равными нулю. Целевое изображение также ассоциируется с SEI-сообщением подпоследовательности, в котором указывается sub_seq_layer_num ("номер уровня подпоследовательности") для обозначения иерархии временной масштабируемости. Наличие SEI-сообщения EIDR-изображения означает, что целевое изображение является EIDR-изображением, в котором декодирование изображения и всех последующих кодированных изображений в последовательности декодирования в этом же уровне (т.е. с temporal_level, dependency_id и quality_level равными 0 и с таким же значением sub_seq_layer_num, что и у EIDR-изображения) могут быть декодированы без интер-предсказания от какого-либо из изображений в этом же уровне, предшествующих EIDR-изображению в последовательности декодирования.
[0049] Параметр "temporal_layer__num" ("номер временного уровня") имеет такую же семантику, как и синтаксический элемент sub_seq_layer_num в SEI-сообщении подпоследовательности. Его значение совпадает со значением sub_seq_layer_num в SEI-сообщении подпоследовательности, ассоциированном с этим же целевым изображением. Возможно также исключить синтаксический элемент temporal_layer_num из синтаксиса SEI-сообщения. Однако в этом случае для того, чтобы узнать, какому из временно масштабируемых уровней принадлежит EIDR-изображение, потребуется разбор информационного SEI-сообщения подпоследовательности.
[0050] Второй альтернативный вариант осуществления изобретения для указания точек переключения с низкого уровня на высокий в битовом потоке включает изменение определения IDR-изображения и ослабление ограничения на кодирование IDR-изображений. В этом варианте понятие IDR изменено следующим образом. Если хоть одно из значений temporal_level, dependency_id или quality_level не равно нулю, IDR-изображение - это кодированное изображение, в котором декодирование IDR-изображения и всех последующих кодированных изображений в последовательности декодирования в этом же уровне (т.е. с такими же значениями temporal_level, dependency_id и quality_level, как у IDR-изображения) может быть выполнено без интер-предсказания от любого из изображений, находящихся перед IDR-изображением в последовательности декодирования в этом же уровне. Кроме того, сразу после декодирования такого IDR-изображения декодирующий процесс должен пометить все опорные изображения в этом же уровне как "неиспользуемые как опорные". Если же значения temporal_level, dependency_id и quality_level все равны нулю, то IDR-изображение - это кодированное изображение, в котором декодирование IDR-изображения и всех последующих кодированных изображений в последовательности декодирования может быть выполнено без интер-предсказания от любого из изображений, находящихся перед IDR-изображением в последовательности декодирования. Сразу после декодирования такого IDR-изображения декодирующий процесс должен пометить все опорные изображения в этом же уровне как "неиспользуемые как опорные".
[0051] Ограничение на кодирование IDR-изображений (то, что либо все изображения в блоке доступа являются IDR-изображениями, либо ни одно из изображений в блоке доступа не является IDR-изображением) ослаблено следующим образом. Если изображение с temporal_level, dependency_id и quality_level одновременно равными нулю является IDR-изображением, то все другие изображения в этом же блоке доступа являются IDR-изображениями. Благодаря такому ослаблению ограничения на кодирование IDR-изображений становится возможным иметь IDR-изображения в улучшающих уровнях в блоке доступа, в котором изображение основного уровня не является IDR-изображением. В этом втором варианте, если какая-либо из переменных temporal_level, dependency_id или quality_level не равна нулю, определение IDR-изображения совпадает с определением EIDR-изображения в описанном выше первом способе указания точек переключения с низкого уровня на высокий в битовом потоке. Соответственно, сохраняются все преимущества EIDR-изображения. Кодирование IDR-изображения описанным здесь способом дает возможность переключения с ближайшего низшего уровня на содержащий IDR-изображение уровень в позиции IDR-изображения.
[0052] Этот конкретный способ применим к масштабируемым уровням, кодированным с применением масштабируемого расширения с указанием temporal_level, dependency_id и quality_level. Для обеспечения эффективного переключения с низкого уровня на высокий между временными уровнями с использованием собственно стандарта H.264/AVC можно применить такой же способ, как в варианте 1.
[0053] Третий альтернативный вариант указания точек переключения с низкого уровня на высокий в битовом потоке включает ослабление ограничения на кодирование IDR-изображений и использование SEI-сообщений для временно масштабируемых уровней. В этом варианте определение IDR-изображения оставлено без изменений, но ограничение на кодирование IDR-изображений ослаблено следующим образом.
[0054] Если изображение с temporal_level, dependency_id и quality_level одновременно равными нулю является IDR-изображением, то все другие изображения в этом же блоке доступа являются IDR-изображениями. Такое ослабление дает возможность кодирования IDR-изображений, для которых переключение с низкого уровня на высокий может осуществляться между уровнями с отличающимися значениями dependency_id или quality_level. Однако поскольку определение IDR-изображения оставлено без изменений, то есть temporal_level не включен в определение масштабируемого уровня, для временных уровней проблема переключения с низкого уровня на высокий остается нерешенной.
[0055] Для решения проблемы переключения с низкого уровня на высокий для временных уровней, закодированных в соответствии либо с расширением масштабирования, либо собственно стандартом H.264/AVC, применяется SEI-сообщение EIDR-изображения, подобное описанному в первом варианте выше, для указания того, что ассоциированное с SEI-сообщением целевое изображение является EIDR-изображением, которое может использоваться для переключения с низкого уровня на высокий. Однако указываемое SEI-сообщением EIDR-изображение не имеет функциональности управления ссылками, поскольку SEI-сообщения являются необязательными для соответствующих стандарту декодеров.
[0056] Синтаксис SEI-сообщения является таким же, как в первом варианте указания точек переключения с низкого уровня на высокий в битовом потоке. Если целевое изображение кодировано с использованием собственно стандарта H.264/AVC, семантика тоже остается такой же. Если целевое изображение кодировано с применением расширения масштабирования, семантика изменяется следующим образом.
[0057] Наличие SEI-сообщения EIDR-изображения означает, что целевое изображение является EIDR-изображением, для которого декодирование изображения и всех последующих кодированных изображений в последовательности декодирования в этом же уровне (т.е. с такими же значениями temporal_level, dependency_id и quality_level, как у EIDR-изображения) может быть выполнено без интер-предсказания от какого-либо из изображений в этом же уровне, предшествующих EIDR-изображению в последовательности декодирования. Элемент "temporal_layer_num" указывает значение temporal_level EIDR-изображения. Если EIDR-изображение кодировано с применением расширения масштабирования, синтаксический элемент temporal_layer_num можно исключить из синтаксиса SEI-сообщения.
[0058] Четвертый вариант указания точек переключения с низкого уровня на высокий в битовом потоке включает использование SEI-сообщений для всех масштабируемых уровней. В этом варианте применяется подобное определенному в третьем варианте SEI-сообщение EIDR-изображения, указывающее, что ассоциированное с этим SEI-сообщением целевое изображение является EIDR-изображением, которое может использоваться для переключения с низкого уровня на высокий. Однако в этом конкретном варианте осуществления изобретения SEI-сообщение также используется для решения проблемы переключения с низкого уровня на высокий для уровней с отличающимися значениями dependency_id или quality_level.
[0059] На фиг.3 показана система 10, в которой может быть применено настоящее изобретение, состоящая из нескольких устройств связи, способных обмениваться информацией по сети. Система 10 может состоять из любой комбинации проводных или беспроводных сетей, в том числе мобильной телефонной сети, локальной вычислительной сети (ЛВС), персональной сети Bluetooth, ЛВС Ethernet, ЛВС кольцевой структуры с передачей маркера (token ring), глобальной сети (wide area network), Интернета и т.п. Система 10 может включать как проводные, так и беспроводные устройства связи.
[0060] Например, показанная на фиг.3 система 10 состоит из мобильной телефонной сети 11 и Интернета 28. Подключение к Интернету 28 может осуществляться, в частности, через беспроводные соединения большого радиуса действия, беспроводные соединения малого радиуса действия, а также через различные проводные соединения - в частности, телефонные линии, кабельные линии, линии энергопитания и т.п.
[0061] В числе устройств связи системы 10 могут быть, в частности, мобильный телефон 12, комбинация 16 PDA (personal data assistant, карманный персональный компьютер) и мобильного телефона, PDA 16, IMD (integrated messaging device, устройство интегрированного обмена сообщениями) 18, настольный компьютер 20, портативный компьютер типа ноутбука 22. Устройства связи могут быть как стационарными, так и мобильными, например переносимыми передвигающимся человеком. Устройства связи могут быть также установлены в каком-либо виде транспорта - в частности, в автомобиле, грузовике, такси, автобусе, на судне, в самолете, велосипеде, мотоцикле и т.п. Все или некоторые из устройств связи могут посылать и принимать вызовы и сообщения и обмениваться информацией с провайдерами услуг через беспроводное соединение 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между мобильной телефонной сетью 11 и Интернетом 28. Система 10 может включать дополнительные устройства связи и устройства связи различных типов.
[0062] Устройства связи могут обмениваться информацией с помощью различных технологий - в частности, таких как CDMA (Code Division Multiple Access, множественный доступ с кодовым разделением), GSM (Global System for Mobile Communications, глобальная система мобильной связи), UMTS (Universal Mobile Telecommunications System, универсальная система мобильных телекоммуникаций), TDMA (Time Division Multiple Access, множественный доступ с временным разделением каналов), FDMA (Frequency Division Multiple Access, множественный доступ с частотным разделением каналов), TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол Интернет), SMS (Short Messaging Service, обмен краткими сообщениями сервис), MMS (Multimedia Messaging Service, обмен мультимедиа сообщениями), электронная почта, IMS (Instant Messaging Service, обмен мгновенными сообщениями), Bluetooth, IEEE 802.11 и т.п. Устройство связи может обмениваться информацией с использованием различных сред - в том числе радио, инфракрасных, лазерных, кабельных соединений и т.п.
[0063] На фиг.4 и 5 показан типичный пример мобильного телефона 12, в котором может быть реализовано настоящее изобретение. Однако следует понимать, что настоящее изобретение не ограничивается одним конкретным типом мобильного телефона 12 или другого электронного устройства. В состав показанного на фиг.4 и 5 мобильного телефона 12 входят корпус 30, дисплей 32 в виде жидкокристаллического дисплея, клавиатура 34, микрофон 36, динамик 38, батарея 40, инфракрасный порт 42, антенна 44, смарт-карта 46 в виде UICC (universal integrated circuit card, универсальной карты на интегральных микросхемах) согласно одному из вариантов осуществления изобретения, устройство 48 считывания с карт, электронные схемы 52 радиоинтерфейса, электронные схемы 54 кодека, контроллер 56 и память 58. Используются отдельные электрические цепи и элементы, хорошо известные в данной области техники, например, применяемые в мобильных телефонах компании Нокиа (Nokia).
[0064] Настоящее изобретение описано в общем контексте шагов способа, которые в одном из вариантов осуществления могут быть реализованы в виде компьютерной программы, включающей исполняемые компьютером инструкции, такие как программный код, исполняемый компьютерами в сетевых средах.
[0065] В общем, программные модули включают стандартные подпрограммы, программы, объекты, компоненты, структуры данных и т.п., выполняющие конкретные задачи или реализующие конкретные абстрактные типы данных. Исполняемые компьютером инструкции, ассоциированные структуры данных и программные модули представляют собой примеры программного кода для исполнения шагов описанных здесь способов. Конкретные последовательности этих исполняемых инструкций или ассоциированных структур данных представляют собой примеры соответствующих действий для реализации функций, описанных в этих шагах.
[0066] Программные и сетевые реализации настоящего изобретения могут быть выполнены с помощью стандартных методов программирования с основанной на правилах логикой и другой логикой для реализации различных шагов поиска в базах данных, шагов корреляции, шагов сравнения и шагов принятия решений. Следует также отметить, что используемые здесь и в формуле изобретения слова "компонент" и "модуль" охватывают реализации, использующие одну или более строк программного кода, и/или реализации в виде аппаратного обеспечения и/или оборудование ручного ввода.
[0067] Вышеприведенное описание вариантов осуществления настоящего изобретения было представлено с целью иллюстрации и описания. Оно не является исчерпывающим и не ограничивает настоящее изобретение точной описанной здесь формой и допускает модификации и вариации в свете вышеизложенного и в свете практического опыта осуществления настоящего изобретения. Вышеприведенные варианты осуществления изобретения были выбраны и описаны с целью объяснения принципов настоящего изобретения и его практического применения для того, чтобы специалист в данной области техники мог использовать настоящее изобретение в таких вариантах осуществления и с такими модификациями, какие подходят для конкретного рассматриваемого применения.