изменение размера буфера в кодере и декодере
Классы МПК: | H04L13/08 устройства для промежуточного накопления H04N7/26 с использованием уменьшения ширины полосы частот H04L29/06 отличающиеся процедурой регистрации и коммутации сообщений |
Автор(ы): | ХАННУКСЕЛА Миска (FI), АКСУ Эмре (FI) |
Патентообладатель(и): | Нокиа Корпорейшн (FI) |
Приоритеты: |
подача заявки:
2005-02-14 публикация патента:
27.03.2010 |
Изобретение относится к системе и способу буферизации кодированных изображений. Техническим результатом является повышение эффективности буферизации кодированных изображений. Указанный результат достигается тем, что способ включает: операцию кодирования для формирования кодированных изображений в кодере, а также операцию передачи указанных кодированных изображений в декодер в виде блоков передачи, операцию буферизации для буферизации блоков передачи, передаваемых в декодер, в буфере и операцию декодирования для декодирования кодированных изображений с получением декодированных изображений. Размер буфера задается путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе этого общего размера. 9 н. и 13 з.п. ф-лы, 12 ил., 1 табл.
Формула изобретения
1. Способ передачи медиаданных, инкапсулированных в блоки передачи данных, расположенные в порядке передачи, который по меньшей мере частично отличается от порядка декодирования медиаданных в блоках передачи данных, при этом задают размер буфера для размещения блоков передачи данных в порядке декодирования медиаданных, задают алгоритм буферизации, сохраняют блоки передачи в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования, и задают размер буфера так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации.
2. Способ по п.1, в котором медиаданные представляют собой видеоданные согласно стандарту H.264/AVC, а блоки передачи данных представляют собой блоки уровня сетевой абстракции H.264/AVC.
3. Способ по п.1, в котором дополнительно задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
4. Способ по п.1, в котором число блоков передачи, используемых при вычислении общего размера, выражают как в порядке буферизации блоков передачи.
5. Способ приема медиаданных, инкапсулированных в блоки передачи данных, расположенные в порядке передачи, который по меньшей мере частично отличается от порядка декодирования медиаданных в блоках передачи данных, при этом медиаданные буферизуют для размещения блоков передачи данных в порядке декодирования медиаданных, принимают информацию о размере буфера для размещения блоков передачи данных в порядке декодирования медиаданных, задают алгоритм буферизации, сохраняют блоки передачи в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования, и задают размер буфера так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации.
6. Способ по п.5, в котором дополнительно задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
7. Способ по п.5, в котором медиаданные представляют собой видеоданные согласно стандарту H.264/AVC, а блоки передачи данных представляют собой блоки уровня сетевой абстракции H.264/AVC.
8. Система для кодирования/декодирования изображений, включающая кодер для кодирования изображений, передатчик для передачи указанных кодированных изображений в декодер в виде элементов уровня видеокодирования (VCL) уровня сетевой абстракции (NAL), декодер для декодирования кодированных изображений с получением декодированных изображений, причем декодер включает буфер для буферизации блоков передачи, переданных в декодер, а указанные элементы VCL NAL расположены в порядке передачи, который по меньшей мере частично отличается от порядка декодирования изображений, кодированных в этих элементах VCL NAL, при этом система также включает средство для задания размера буфера, причем буфер работает согласно алгоритму буферизации, сохраняя блоки передачи до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляя блоки передачи из буфера согласно номеру, указывающему порядок декодирования, и размер буфера задается так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации.
9. Система по п.8, в которой задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
10. Кодер для кодирования изображений, включающий передатчик для передачи указанных кодированных изображений в декодер в виде блоков передачи для буферизации в буфере и декодирования, причем блоки передачи данных расположены в порядке передачи, который по меньшей мере частично отличается от порядка декодирования медиаданных в блоках передачи данных, при этом кодер содержит средство для задания размера буфера, и размер буфера задается так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации, согласно которому блоки передачи сохраняют в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования.
11. Кодер по п.10, в котором задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
12. Кодер по п.10, который дополнительно включает буфер для буферизации кодированных изображений и гипотетический опорный декодер для определения требований к буферизации для декодирования кодированных изображений.
13. Декодер для декодирования кодированных изображений с получением декодированных изображений, включающий предшествующий декодированию буфер для буферизации принятых кодированных изображений для декодирования, при этом декодер включает процессор для выделения памяти для предшествующего декодированию буфера в соответствии с принятым параметром, указывающим размер буфера, причем предшествующий декодированию буфер работает согласно алгоритму буферизации, сохраняя блоки передачи до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляя блоки передачи из буфера согласно номеру, указывающему порядок декодирования, и размер этого буфера задается так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации.
14. Декодер по п.13, в котором задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
15. Машиночитаемый носитель записи для хранения программы, которая при исполнении процессором декодера предписывает ему осуществить способ буферизации кодированных изображений, включающий операцию буферизации блоков передачи, переданных в декодер, в буфере и операцию декодирования кодированных изображений с получением декодированных изображений, при этом блоки передачи данных расположены в порядке передачи, который по меньшей мере частично отличается от порядка декодирования изображений, кодированных в блоках передачи данных, и программа также включает операцию размещения блоков передачи в порядке декодирования кодированных изображений, операцию приема информации о размере буфера для размещения блоков передачи в порядке декодирования кодированных изображений, операцию задания алгоритма буферизации, согласно которому блоки передачи сохраняют в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования, и операцию задания размера буфера так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации.
16. Машиночитаемый носитель по п.15, в котором дополнительно задают общий размер по меньшей мере двух блоков передачи и задают размер буфера на основе этого общего размера.
17. Электронное устройство для кодирования изображений, включающее кодер для кодирования изображений и передатчик для передачи указанных кодированных изображений в декодер в виде блоков передачи для буферизации в буфере и декодирования, причем электронное устройство также включает средство для задания размера буфера так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации, согласно которому блоки передачи сохраняют в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования.
18. Электронное устройство по п.17, дополнительно содержащее средство для задания общего размера по меньшей мере двух блоков передачи и средство для задания размера буфера на основе этого общего размера.
19. Передающее устройство, которое включает кодер для кодирования изображений, включающий передатчик для передачи указанных кодированных изображений в декодер в виде блоков передачи для буферизации в буфере и декодирования, при этом передающее устройство также включает средство для задания размера буфера так, чтобы он соответствовал максимальной занятости буфера согласно алгоритму буферизации, согласно которому блоки передачи сохраняют в буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляют блоки передачи из буфера согласно номеру, указывающему порядок декодирования.
20. Передающее устройство по п.19, которое дополнительно содержит средство для задания общего размера по меньшей мере двух блоков передачи и средство для задания размера буфера на основе этого общего размера.
21. Приемное устройство, которое включает декодер для декодирования кодированных изображений с получением декодированных изображений и предшествующий декодированию буфер для буферизации принятых кодированных изображений для декодирования, при этом приемное устройство также включает процессор для выделения памяти для предшествующего декодированию буфера в соответствии с принятым параметром, указывающим размер буфера, при этом согласно алгоритму буферизации блоки передачи кодированных изображений сохраняют в предшествующем декодированию буфере до тех пор, пока число блоков передачи в буфере не достигнет числа, указанного значением глубины чередования, и удаляют из предшествующего декодированию буфера согласно номеру, указывающему порядок декодирования, причем принятый параметр, указывающий размер буфера, соответствует максимальной занятости буфера согласно алгоритму буферизации.
22. Приемное устройство по п.21, в котором изображения представляют собой видеоданные согласно стандарту H.264/AVC, а блоки передачи данных представляют собой блоки уровня сетевой абстракции H.264/AVC.
Описание изобретения к патенту
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к способу буферизации кодированных изображений, который включает операцию кодирования для формирования кодированного изображения в кодере, операцию передачи указанного кодированного изображения в декодер, операцию декодирования для декодирования кодированного изображения для формирования декодированного изображения и операцию перестановки для расстановки декодированных изображений в порядке их декодирования. Изобретения также относится к системе, передающему устройству, приемному устройству, кодеру, декодеру, электронному устройству, программному обеспечению и средству хранения.
УРОВЕНЬ ТЕХНИКИ
Опубликованные стандарты кодирования видеоизображений включают Рекомендации Международного союза электросвязи ITU-T H.261 и Н.263 и стандарты ISO (Международная организация по стандартизации) / IEC (Международная электротехническая комиссия) MPEG-1, MPEG-2 и MPEG-4, часть 2. Эти стандарты упоминаются здесь как известные стандарты кодирования изображений.
Системы видеосвязи
Системы видеосвязи могут быть разделены на диалоговые и недиалоговые системы. Диалоговые системы включают видео конференц-связь и видеотелефонию. Примеры таких систем включают Рекомендации ITU-T Н.320, Н323 и Н.324, которые определяют системы видео конференц-связи и телефонии, работающие соответственно в сетях ISDN (цифровых сетях с интеграцией служб), сетях с Интернет-протоколом (IP) и коммутируемых телефонных сетях общего доступа (PSTN). Диалоговые системы характеризуются требованием минимизирования сквозной задержки (от аудио-видео захвата до удаленного аудио-видео представления) для улучшения восприятия информации пользователем.
He-диалоговые системы включают воспроизведение сохраненного содержания, такого как цифровые универсальные диски (DVD) или файлы, сохраненные в массовой памяти воспроизводящего устройства, цифровое телевидение и передачу потоков. Краткий обзор наиболее важных стандартов в этих областях дан ниже.
Доминирующим стандартом в цифровой потребительской видеоэлектронике является сегодня MPEG-2, который включает спецификации сжатия видеоизображения, сжатия звука, хранения и переноса. Хранение и перенос кодированного изображения основаны на концепции элементарного потока. Элементарный поток состоит из кодированных данных от единичного источника (например, видео) плюс вспомогательные данные, необходимые для синхронизации, идентификации и определения параметров информации источника. Элементарный поток пакетирован в пакеты постоянной или переменной длины для формирования пакетированного элементарного потока (PES). Каждый пакетированный элементарный поток состоит из заголовка, за которым следуют данные потока, называемые полезной нагрузкой. Пакеты пакетированного элементарного потока различных элементарных потоков объединяются для формирования программного потока (PS) или транспортного потока (TS). Программный поток предназначен для приложений, допускающих незначительные ошибки передачи, такие как приложения типа "сохранить и воспроизвести". Транспортный поток предназначен для приложений, чувствительных к ошибкам передачи. Однако транспортный поток предполагает, что пропускная способность сети гарантированно является постоянной.
Имеются попытки стандартизации, продолжающиеся в совместной экспертной группе Joint Video Team (JVT) ITU-T и ISO/IEC. Работа группы JVT основана на более раннем проекте стандартизации ITU-T, который называется H.26L. Целью группы JVT является выпуск такого же стандарта, как Рекомендации ITU-T H.264 и Международный стандарт ISO/IEC 14496-10 (MPEG-4, часть 10). Предварительный стандарт в этом документе упоминается как стандарт кодирования JVT, а кодек, соответствующий предварительному стандарту, упоминается как кодек JVT.
Спецификация кодека сама концептуально различает уровень видеокодирования (VCL) и уровень сетевой абстракции (NAL). Уровень видеокодирования VCL содержит функции обработки сигнала кодеком, такие как преобразование, квантование, поиск движения или компенсация движения и контурный фильтр. Это следует общей концепции большинства современных видеокодеков: основанный на макроблоках кодер, который использует предсказание изменений между изображениями с компенсацией движения и преобразующее кодирование остаточного сигнала. Выходом уровня видеокодирования являются слои (слайсы): строка битов, которая содержит данные макроблоков целого числа макроблоков и информацию о заголовке слоя (содержащую пространственный адрес первого макроблока в слое, начальный параметр квантования и тому подобное). Макроблоки в слоях находятся в том порядке, в котором они были сканированы, если не задано другое определение мест макроблоков с использованием так называемого синтаксиса гибкой расстановки макроблоков.
Уровень сетевой абстракции NAL инкапсулирует слои выхода уровня видеокодирования в элементы (блоки) уровня сетевой абстракции (NALU), которые применимы для передачи через пакетные сети или для использования в ориентированных на передачу пакетов мультиплексных средах. Дополнение В стандарта кодирования JVT определяет процесс инкапсуляции для передачи таких блоков NALU уровня сетевой абстракции через сети, ориентированные на потоки байтов.
Опциональный режим выбора опорного изображения Н.263 и средство кодирования NEWPRED (MPEG-4, часть 2) позволяют осуществить выбор опорного кадра для компенсации движения для каждого сегмента изображения, например для каждого слоя в Н.263. Более того, опциональный расширенный режим выбора опорного изображения Н.263 и стандарта кодирования JVT допускают выбор опорного кадра отдельно для каждого макроблока.
Выбор опорного изображения позволяет применять многие типы схем временного масштабирования. Фиг.1 показывает пример схемы временной масштабируемости, которая обозначается здесь как рекурсивная временная масштабируемость. Приведенная в примере схема может быть декодирована с использованием трех постоянных частот кадров. Фиг.2 показывает схему, называемую избыточным видеокодированием, в которой последовательность изображений разделяется на два или более независимо кодируемых потока чередующимся образом. Стрелки на этих и всех последующих чертежах указывают направление компенсации движения, а значения под кадрами относятся к соответствующему времени захвата и отображения кадров.
Концепция набора параметров
Одной фундаментальной концепцией устройства кодека JVT является генерация автономных пакетов, что делает лишним такой механизм, как дупликация заголовков. Способ, которым это достигается, заключается в отделении информации, которая относится к более чем одному слою, от информационного потока. Эта метаинформация более высокого уровня должна посылаться надежно, асинхронно и до потока пакетов протокола реального времени, который содержит пакеты слоев. Эта информация также может быть послана внутри полосы в таких приложениях, которые не имеют внеполосных каналов транспортировки, подходящих для такого назначения. Комбинация параметров более высокого уровня называется набором параметров. Набор параметров содержит такую информацию, как размер изображения, окно дисплея, использованный опциональный режим кодирования, схема расположения макроблоков и другое.
Для того чтобы иметь возможность изменять параметры изображения (такие как размер изображения) без необходимости передавать набор параметров синхронно с потоком пакетов слоев, кодер и декодер могут поддерживать список из более чем одного набора параметров. Каждый заголовок слоя содержит кодовое слово, которое указывает подлежащий использованию набор параметров.
Этот механизм позволяет выделить передачу наборов параметров из потока пакетов и передать их внешним способом, например используя дополнительные возможности обмена, или через (надежный или ненадежный) управляющий протокол. Возможно даже, что они никогда не передаются, а зафиксированы спецификацией приложения.
Порядок передачи
В традиционных стандартах видеокодирования порядок декодирования изображений тот же, что и порядок их отображения, за исключением В-изображений. Блок в традиционном В-изображении может быть двунаправленным образом предсказан во времени по двум опорным изображениям, где одно опорное изображение является предшествующим во времени, а другое опорное изображение является следующим во времени в последовательности отображения. Только самое последнее опорное изображение в последовательности декодирования может следовать за В-изображением в последовательности отображения (исключение: чересстрочное кодирование в Н.263, где оба изображения полей последовательного во времени опорного изображения могут предшествовать В-изображению в последовательности декодирования). Традиционное В-изображение не может быть использовано как опорное изображение для временного предсказания, и поэтому традиционное В-изображение может быть размещено без влияния на декодирование любых других изображений.
Стандарт кодирования JVT включает следующие новые технические особенности по сравнению с более ранними стандартами:
- Порядок декодирования изображений отделен от порядка их отображения.
- Номер изображения показывает порядок декодирования, а отсчет порядка изображения показывает порядок отображения.
- Опорные изображения для блока В-изображения могут находиться перед или после В-изображения в порядке отображения. Следовательно, В-изображение означает изображение с предсказанием по двум изображениям вместо двунаправленного изображения.
- Изображения, которые не использованы как опорные, отмечены явным образом. Изображение любого типа (с внутрикадровым кодированием, промежуточное, В-изображение и т.д.) может быть или опорным изображением, или не-опорным изображением. (Таким образом, В-изображение может использоваться как опорное изображение для временного предсказания других изображений.)
- Изображение может содержать слои, которые кодированы с помощью различных типов кодирования. Другими словами, кодированное изображение может включать, например, слой с внутрикадровым кодированием или В-кодированный слой.
Разделение порядка отображения и порядка кодирования может быть полезным с точки зрения эффективности сжатия и устойчивости к ошибкам.
Пример предсказывающей структуры, потенциально улучшающей эффективность сжатия, представлен на фиг.3. Прямоугольники обозначают изображения, заглавные буквы внутри прямоугольников обозначают типы кодирования, числа внутри прямоугольников являются номерами изображений в соответствии со стандартом кодирования JVT, и стрелки указывают зависимости предсказания. Заметим, что изображение В 17 является опорным изображением для изображения В 18. Эффективность сжатия потенциально улучшена по сравнению с традиционным кодированием, потому что опорные изображения для изображения В 18 являются более близкими во времени по сравнению с традиционным кодированием с помощью РВВР или РВВВР моделей кодирования изображений. Эффективность сжатия потенциально улучшена в сравнении с традиционными РВР моделями кодирования изображений, потому что опорные изображения являются предсказанными в двух направлениях.
Фиг.4 представляет пример способа задерживания изображения с внутрикадровым кодированием, который может использоваться для повышения устойчивости к ошибкам. Традиционно изображение с внутрикадровым кодированием кодируется непосредственно после смены сцены или в ответ на окончание периода обновления изображения с внутрикадровым кодированием. В методе задерживания изображение с внутрикадровым кодированием не кодируется немедленно после возникновения необходимости кодировать такое изображение, а вместо этого в качестве изображения с внутрикадровым кодированием выбирается следующее во времени изображение. Каждое изображение между изображением с внутрикадровым кодированием и традиционным расположением изображения с внутрикадровым кодированием предсказывается на основе следующего последовательного во времени изображения. Как показано на фиг.4, метод задерживания изображения с внутрикадровым кодированием генерирует две независимые цепочки предсказания промежуточного изображения, тогда как традиционные алгоритмы кодирования создают одиночную цепочку промежуточного изображения. Интуитивно понятно, что основанный на двух цепочках подход является более устойчивым по отношению к ошибкам стирания, чем традиционный подход, основанный на одиночной цепочке. Если одна цепочка пострадает от потерь в пакете, то другая цепочка по-прежнему может быть правильно принята. В традиционном кодировании потеря в пакете всегда вызывает распространение ошибки до конца цепочки предсказания промежуточного изображения.
Два типа информации о порядке и временных параметрах традиционно связаны с цифровым видео: последовательность декодирования и последовательность представления. Более подробное рассмотрение соответствующей технологии дано ниже.
Временная отметка декодирования (DTS) указывает время относительно опорных часов, в которое предполагается декодировать блок кодированных данных. Если временная отметка декодирования кодирована и передана, то она служит двум целям: первое, если порядок декодирования изображений отличается от порядка их вывода, то временная отметка декодирования показывает порядок декодирования явным образом. Второе, временная отметка декодирования гарантирует некоторое поведение, обеспечивающее буферизацию перед декодером, организованное таким образом, что скорость приема в любой момент близка к скорости передачи. В сетях, где сквозная задержка изменяется, второй вариант использования временной отметки декодирования играет малую или вовсе никакую роль. Вместо этого принятые данные декодируются насколько возможно быстро, при этом обеспечивается наличие места для несжатых изображений в буфере после декодера.
Передача временной отметки декодирования зависит от коммуникационной системы и используемого стандарта видеокодирования. В системах MPEG-2 временная отметка декодирования может быть опционально передана как один элемент в заголовке пакета пакетированного элементарного потока. В стандарте кодирования JVT временной отсчет декодирования может опционально переноситься как часть дополнительной информации расширения (SEI), и это используется в работе опционального гипотетического опорного декодера. В базовом формате медиафайла ISO временной отметке декодирования отведен свой собственный тип бокса, Время Декодирования в Бокс Образца. Во многих системах, таких как основанные на протоколе реального времени системы формирования потока, временные отметки декодирования не передаются совсем, потому что порядок декодирования предполагается идентичным порядку передачи и точное время декодирования не играет важной роли.
Опциональное дополнение U и дополнение W.6.12 к Н.263 определяют номер изображения, который увеличивается на 1 относительно предыдущего опорного изображения в последовательности декодирования. В стандарте кодирования JVT кодирующий элемент номера кадра определен подобно номеру изображения в Н.263. Стандарт кодирования JVT определяет особый тип изображения с внутрикадровым кодированием, называемый изображением мгновенного обновления декодера (IDR). Ни одно последующее изображение не может ссылаться на изображения, которые находятся в последовательности декодирования раньше, чем изображение мгновенного обновления декодера. Изображение мгновенного обновления декодера часто кодируется в ответ на изменение сцены. В стандарте кодирования JVT номер кадра возвращается к 0 на изображении мгновенного обновления декодера, для того чтобы повысить устойчивость к ошибке в случае потери изображения мгновенного обновления декодера, как показано на фиг.5а и 5b. Однако следует отметить, что информация о сцене в сообщении дополнительной информации расширения в стандарте кодирования JVT также может использоваться для обнаружения изменений сцены.
Номер изображения в стандарте Н.263 может использоваться для восстановления порядка декодирования опорных изображений. Подобным же образом номер кадра в стандарте JVT может использоваться для восстановления порядка декодирования кадров между изображением мгновенного обновления декодера (включая его) и следующим изображением мгновенного обновления декодера (не включая его) в последовательности декодирования. Однако, так как комплементарные пары опорных полей (последовательные изображения, кодированные как поля различной четности) имеют один и тот же номер кадра, их последовательность декодирования не может быть реконструирована на основе номеров кадров.
Номер изображения в стандарте Н.263 или номер кадра в стандарте JVT для не-опорного изображения определен равным номеру изображения или номеру кадра предыдущего опорного изображения в последовательности декодирования плюс 1. Если несколько не-опорных изображений являются последовательными в последовательности декодирования, они имеют один и тот же номер изображения или номер кадра. Номер изображения или номер кадра не-опорного изображения также является тем же самым, что и номер изображения или номер кадра следующего опорного изображения в последовательности декодирования. Порядок декодирования последовательных не-опорных изображений может быть восстановлен путем использования кодирующего элемента Временной Ссылки (TR) в стандарте Н.263 или концепции подсчета порядка изображения (РОС) стандарта кодирования JVT.
Временная отметка представления (PTS) указывает время относительно опорных часов, когда предполагается отобразить изображение. Временная отметка представления также называется временной отметкой отображения, временной отметкой вывода и временной отметкой композиции.
Передача временной отметки представления зависит от коммуникационной системы и используемого стандарта видеокодирования. В системах MPEG-2 временная отметка представления может быть опционально передана как один элемент в заголовке пакета пакетированного элементарного потока. В стандарте кодирования JVT временной отсчет представления может опционально переноситься как часть дополнительной информации расширения (SEI), и это используется в работе опционального гипотетического опорного декодера. В базовом формате медиафайла ISO временной отметке представления отведен свой собственный тип бокса, Время Композиции в Бокс Образца, где временная отметка представления кодирована относительно соответствующей временной отметки декодирования. В протоколе реального времени временная отметка протокола реального времени в заголовке пакета протокола реального времени соответствует временной отметке представления.
Традиционные стандарты видеокодирования выделяют элемент кодирования Временной Ссылки (TR), который во многих аспектах подобен временной отметке представления. В некоторых традиционных стандартах кодирования, таких как MPEG-2 видео, временная ссылка сбрасывается в ноль при начале Группы Изображений (GOP). В стандарте кодирования JVT отсутствует концепция времени на уровне видеокодирования. Подсчет порядка изображений (РОС) определен для каждого кадра и поля, и это используется, например, подобно временной ссылке при прямом временном предсказании В-слоев. Подсчет порядка изображений сбрасывается в 0 для изображения мгновенного обновления декодера.
Передача мультимедийных потоков
Мультимедийная потоковая система состоит из сервера потока и нескольких проигрывателей, которые имеют доступ к серверу посредством сети. Сеть обычно является пакетно-ориентированной и предоставляет малое количество или вовсе не предоставляет никаких средств гарантирования качества услуг. Проигрыватели получают от сервера предварительно сохраненное или получаемое в режиме прямой трансляции мультимедийное содержимое и проигрывают его в режиме реального времени, в то время как содержимое продолжает загружаться. Типом соединения может быть точка-точка или широковещание. При организации потока типа точка-точка сервер обеспечивает отдельное соединение для каждого проигрывателя. При широковещательной организации потока сервер передает единый поток данных нескольким проигрывателям, а сетевые элементы дуплицируют поток, только если это необходимо.
Когда проигрыватель установил соединение с сервером и запросил мультимедийный поток, сервер начинает передавать желаемый поток. Проигрыватель не начинает проигрывать поток немедленно, а обычно буферизирует входящие данные в течение нескольких секунд. Здесь эта буферизация упоминается как исходная буферизация. Исходная буферизация помогает поддерживать проигрывание без пауз, потому что при случайных увеличениях задержек передачи или падениях пропускной способности сети проигрыватель может декодировать и проигрывать буферизованные данные.
Во избежание неограниченной задержки передачи в потоковых системах редко отдается предпочтение надежным транспортным протоколам. Вместо этого предпочитают ненадежные транспортные протоколы, такие как Пользовательский Протокол Данных (UDP), которые, с одной стороны, имеют более стабильную задержку передачи, но, с другой стороны, страдают от искажений или потери данных.
Протокол реального времени (RTP) и протокол управления передачей в реальном времени (RTCP) могут быть использованы поверх пользовательского протокола передачи данных для управления соединениями в режиме реального времени. Протокол реального времени предоставляет средства для обнаружения потерь пакетов передачи, для восстановления правильного порядка пакетов на принимающем конце и для привязки временной отметки выборки к каждому пакету. Протокол управления передачей в реальном времени передает информацию о том, насколько велика доля правильно принятых пакетов, и поэтому может быть использован для целей контроля потока.
Ошибки передачи
Существует два основных типа ошибок передачи, а именно ошибка в битах и ошибка пакета. Ошибки в битах обычно связаны с каналом с коммутацией цепей, таким как сетевое соединение радиодоступа в мобильных коммуникациях, и они вызваны несовершенствами физических каналов, такими как радиопомехи. Результатом таких помех могут являться изменения значений битов, добавления битов или удаления битов в переданных данных. Ошибки пакетов обычно вызваны элементами сетей с коммутацией пакетов. Например, маршрутизатор пакетов может переполниться, то есть он может получать на входе слишком много пакетов и не может выводить их с той же скоростью. В этой ситуации его буферы переполняются и некоторые пакеты теряются. Дупликация пакетов и получение пакетов в порядке, отличном от передаваемого порядка, также являются возможными, но обычно рассматриваются как менее распространенные, нежели потери пакетов. Ошибки пакетов также могут быть вызваны применением стека используемого транспортного протокола. Например, некоторые протоколы используют контрольные суммы, которые вычисляются в передатчике и инкапсулируются в исходно кодированные данные. Если в данных присутствует ошибка изменения значения бита, то приемник не может достичь той же контрольной суммы и может оказаться вынужденным удалить принятый пакет.
Мобильные сети второго (2G) и третьего (3G) поколений, включающие GPRS, UMTS и CDMA-2000, предоставляют два основных типа соединений радиосвязи - с уведомлением и без уведомления. Соединение с уведомлением - это такое соединение, при котором целостность кадра радиоканала проверяется получателем (или мобильной станцией (MS), или подсистемой базовой станции (BBS)) и в случае ошибки передачи запрос на повторную передачу передается на другой конец радиоканала. Из-за повторной передачи канального уровня источник должен буферизировать кадр радиоканала, пока не получит положительного уведомления для этого кадра. В тяжелых радиоусловиях этот буфер может переполняться и вызывать потерю данных. Тем не менее показано, что для систем организации потоков предпочтительно использование режима протокола радиоканала с уведомлением. Соединение без уведомления - это такое, при котором ошибочные кадры радиоканала обычно удаляются.
Потери пакетов могут быть скорректированы или скрыты. Коррекция потери относится к возможности восстановить потерянные данные в точности так, как если бы не было никаких потерь. Скрытие потери относится к возможности скрыть эффекты от потерь передачи, чтобы они не были видны в восстановленной видеопоследовательности.
Когда проигрыватель обнаруживает потерю пакета, он может запросить повторную передачу пакета. Благодаря исходной буферизации повторно переданный пакет может быть получен перед запланированным временем его проигрывания. Некоторые коммерческие системы организации потоков в Интернете применяют запросы повторной передачи путем использования собственных протоколов. В Проблемной Группе Проектирования Интернета (IETF) продолжается работа по стандартизации избранных механизмов запросов повторной передачи как части протокола управления передачей в реальном времени.
Общей особенностью для всех этих протоколов запроса повторной передачи является то, что они не подходят для случая широковещания для большого числа проигрывателей, так как сетевой трафик может радикально увеличиваться. Вследствие этого приложения широковещательной организации потока должны полагаться на не-интерактивный контроль потерь пакета.
Системы организации потока типа точка-точка также могут иметь преимущество от не-интерактивных техник контроля ошибок. Во-первых, некоторые системы могут не содержать каких-либо интерактивных механизмов контроля ошибок или предпочтительно не иметь какой-либо обратной связи от проигрывателей, чтобы упростить систему. Во-вторых, повторная передача потерянных пакетов и другие формы интерактивного контроля ошибок обычно требуют большей доли скорости передачи данных, чем не-интерактивные методы контроля ошибок. Серверы потока должны обеспечивать, чтобы методы интерактивного контроля ошибок не занимали основную часть доступной пропускной способности сети. На практике серверы могут быть обязаны ограничивать количество операций интерактивного контроля ошибок. В-третьих, задержки передачи могут ограничивать число взаимодействий между сервером и проигрывателем, так как предпочтительно проводить все операции интерактивного контроля ошибок для конкретного образца данных до того, как образец данных проигран.
Не-интерактивные механизмы контроля потери пакета могут быть разделены на прямой контроль ошибок и скрытие потери с помощью постобработки. Прямой контроль ошибок относится к технологиям, в которых передатчик добавляет такую избыточность к передаваемым данным, что приемник может восстановить по меньшей мере часть передаваемых данных, даже если имеются потери передачи. Скрытие потери с помощью постобработки является полностью ориентированным на приемник. Эти методы пытаются оценить правильное представление принятых ошибочных данных.
Большинство алгоритмов видеосжатия генерируют предсказываемые во времени промежуточные INTER- или Р-изображения. Как результат, потеря данных в одном изображении вызывает видимое ухудшение в последующих изображениях, которые являются предсказанными во времени на основе искаженного изображения. Системы видеосвязи могут скрыть потерю в отображаемом образе или заморозить самое последнее изображение на экране до тех пор, пока не будет получен кадр, который не зависит от искаженного кадра.
В традиционных стандартах видеокодирования порядок декодирования связан с порядком вывода. Другими словами, порядок декодирования I- и Р-изображений точно такой же, как их порядок вывода, а порядок декодирования В-изображения немедленно следует порядку декодирования последнего опорного изображения В-изображения в последовательности вывода. Следовательно, является возможным восстановить порядок декодирования на основе известного порядка вывода. Порядок вывода обычно передается в элементарном видеопотоке битов в поле временной ссылки и также на уровне системного мультиплексирования, таком как заголовок протокола реального времени. Таким образом, в традиционных стандартах видеокодирования данная проблема не существовала.
Одним из решений, очевидных для специалиста в данной области, является использование счетчика кадров, подобного номеру изображения в стандарте Н.263, без сбрасывания в 0 на изображении мгновенного обновления декодера (как сделано в стандарте кодирования JVT). Однако при использовании этого вида решений могут случиться некоторые проблемы. Фиг.5 показывает ситуацию, в которой использована непрерывная нумерация. Если, например, изображение мгновенного обновления декодера 137 потеряно (не может быть принято или декодировано), декодер продолжает декодировать последующие изображения, но использует неверное опорное изображение. Это вызывает распространение ошибки на последующие кадры, пока следующий кадр, который не зависит от искаженного изображения, не будет получен и правильно декодирован. На примере фиг.5b номер кадра сброшен в 0 на изображении мгновенного обновления декодера. Теперь в ситуации, в которой изображение мгновенного обновления декодера 10 потеряно, декодер извещает о большом несоответствии в нумерации изображений после самого последнего правильно декодированного изображения Р36. Затем декодер может предположить, что произошла ошибка, и заморозить дисплей на изображении Р36 до тех пор, пока следующий кадр, который является независимым от искаженного кадра, не будет принят и декодирован.
Субпоследовательности
Стандарт кодирования JVT также включает концепцию субпоследовательности, которая может расширять временную масштабируемость по сравнению с использованием не-опорного изображения, так что взаимно предсказываемые цепочки изображений могут быть размещены как целое без затрагивания возможности декодирования остатка кодированного потока.
Субпоследовательность - это набор кодированных изображений внутри уровня субпоследовательности. Изображение может находиться только в одном уровне субпоследовательности и только в одной субпоследовательности. Субпоследовательность не должна зависеть от любой другой субпоследовательности в том же самом или в более высоком уровне субпоследовательности. Субпоследовательность на уровне 0 может быть декодирована независимо от любой другой субпоследовательности и предыдущего долговременного опорного изображения. Фиг.6а раскрывает пример потока изображений, содержащего субпоследовательность на уровне 1.
Уровень субпоследовательности содержит подмножество кодированных изображений в последовательности. Уровни субпоследовательности пронумерованы неотрицательными целыми числами. Уровень, имеющий больший номер, является более высоким уровнем, чем уровень, имеющий меньший номер. Уровни находятся в иерархическом порядке на основе их зависимости друг от друга, так что уровень не зависит от любого более высокого уровня, но может зависеть от более низких уровней. Другими словами, уровень 0 декодируется независимо, изображения уровня 1 могут быть предсказаны на основе уровня 0, изображения уровня 2 могут быть предсказаны на основе уровней 0 и 1 и так далее. Предполагается, что субъективное качество увеличивается в соответствии с числом декодированных уровней.
Концепция субпоследовательности включена в стандарт кодирования JVT следующим образом: в наборе параметров последовательности флаг required_frame_num_update_behaviour_flag, равный 1, сигнализирует о том, что кодированная последовательность может не содержать все субпоследовательности. Использование этого флага освобождает от требования возрастания номера кадра на 1 для каждого опорного кадра. Вместо этого несоответствия в номерах кадров особо отмечаются в буфере декодированного изображения. Если имеется ссылка на «отсутствующий» номер кадра в промежуточном предсказании, то делается вывод о потере изображения. В другом случае кадры, связанные с «отсутствующим» кадром, обрабатываются так, как если бы они были нормальными кадрами, вставленными в буфер декодированного изображения с помощью режима буферизации скользящего окна. Всем изображениям в размещенной субпоследовательности последовательно назначается «отсутствующий» номер кадра в буфере декодированного изображения, но они никогда не используются в промежуточном предсказании для других субпоследовательностей.
Стандарт кодирования JVT также включает опциональные относящиеся к субпоследовательности сообщения дополнительной информации расширения. Сообщение дополнительной информации расширения информации субпоследовательности связано со следующим слоем в последовательности декодирования. Оно обозначает уровень субпоследовательности и идентификатор субпоследовательности (sub_seq_id) той субпоследовательности, к которой принадлежит слой.
Каждое изображение мгновенного обновления декодера содержит идентификатор dr_pic_id. Если два изображения мгновенного обновления декодера являются последовательными в последовательности декодирования, без какого-либо промежуточного изображения, значение dr_pic_id должно измениться от первого изображения мгновенного обновления декодера к другому. Если текущее изображение размещено в субпоследовательности, первое изображение которой в последовательности декодирования является изображением мгновенного обновления декодера, то значение sub_seq_id должно быть тем же самым, что и значение dr_pic_id изображения мгновенного обновления декодера.
Решение в стандарте JVT JVT-D093 работает правильно, только если данные не размещаются в субпоследовательности уровня 1 или выше. Если порядок передачи отличается от порядка декодирования и кодированные изображения размещаются в субпоследовательности уровня 1, то заключение об их порядке декодирования относительно изображений в субпоследовательности уровня 0 не может быть сделано на основе идентификаторов субпоследовательности и номеров кадров. Например, рассмотрим следующую схему кодирования, представленную на фиг.6b, где порядок вывода идет слева направо, прямоугольники обозначают изображения, заглавные буквы внутри прямоугольников обозначают типы кодирования, номера внутри прямоугольников являются номерами кадров в соответствии со стандартом кодирования JVT, подчеркнутые символы обозначают не-опорные изображения и стрелки указывают зависимости предсказания. Если изображения передаются в порядке I0, Р1, Р3, I0, Р1, В2, В4, Р5, то не может быть сделано заключение, к какой независимой группе изображений принадлежит изображение В2.
Можно возразить, что в предыдущем примере заключение о правильной независимой группе изображений для изображения В2 может быть сделано на основе его временной отметки вывода. Однако порядок декодирования изображений не может быть восстановлен на основе временной отметки вывода и номера изображения, потому что порядок декодирования и порядок вывода разделены. Рассмотрим следующий пример (фиг.6с), где порядок вывода идет слева направо, прямоугольники обозначают изображения, заглавные буквы внутри прямоугольников обозначают типы кодирования, номера внутри прямоугольников являются номерами кадров в соответствии со стандартом кодирования JVT и стрелки указывают зависимости предсказания. Если изображения передаются вне порядка декодирования, нельзя надежно определить, должно ли изображение Р4 быть декодировано после Р3 первой или второй независимой группы изображений в последовательности вывода.
Буферизация
Взаимодействующие с потоком клиенты обычно имеют приемный буфер, который способен сохранять относительно большое количество данных. Первоначально, когда установлен потоковый сеанс, клиент не начинает проигрывание потока немедленно, а обычно буферизует данные на несколько секунд. Эта буферизация помогает поддерживать непрерывное проигрывание, потому что в случае случайных увеличенных задержек передачи или падений пропускной способности сети клиент может декодировать и проигрывать буферизованные данные. В противном случае, без исходной буферизации, клиент должен заморозить дисплей, остановить декодирование и ждать входящие данные. Буферизация также является необходимой для автоматической или избирательной повторной передачи в любом уровне протокола. Если потеряна какая-либо часть изображения, механизм повторной передачи может быть использован для повторной посылки потерянных данных. Если повторно переданные данные приняты до их запланированного времени декодирования или проигрывания, то потеря будет полностью восстановлена.
Кодированные изображения могут быть ранжированы в соответствии с их важностью для субъективного качества декодированной последовательности. Например, не-опорные изображения, такие как традиционные В-изображения, являются субъективно наименее важными, потому что их отсутствие не наносит вреда декодированию любых других изображений. Субъективное ранжирование также может быть сделано на основе разделов данных или группы слоев. Кодированные слои и разделы данных, которые являются субъективно наиболее важными, могут быть посланы раньше, чем указывает их порядок декодирования, тогда как кодированные слои и разделы данных, которые являются субъективно наименее важными, могут быть посланы позже, чем указывает их естественный порядок кодирования. Следовательно, любые повторно переданные части наиболее важных слоев и разделов данных, скорее всего, будут получены до их запланированного времени декодирования или проигрывания по сравнению с наименее важными слоями и разделами данных.
Буферизация перед декодером
Буферизация перед декодером означает буферизацию кодированных данных до их декодирования. Исходная буферизация означает буферизацию до декодера в начале потокового сеанса. Исходная буферизация обычно делается по двум причинам, объясненным ниже.
В диалоговых мультимедийных системах с коммутацией пакетов, например основанных на Интернет-протоколе (IP) системах видеоконференций, различные типы информации обычно переносятся в отдельных пакетах. Кроме того, пакеты обычно переносятся по сети, которая старается функционировать наилучшим образом, что не может гарантировать постоянную задержку передачи, и задержка может изменяться от пакета к пакету. Следовательно, пакеты, имеющие ту же самую временную отметку представления (проигрывания), могут не быть приняты в то же время, что и их интервал представления (в смысле времени). Таким образом, для поддержки синхронизации воспроизведения между различными типами информации и поддержки правильной скорости воспроизведения мультимедийный терминал обычно буферизует принятые данные на короткий период (например, меньше чем половина секунды) для сглаживания изменений задержки. Здесь этот тип компонента буфера называется буфер дрожания задержки. Буферизация может осуществляться перед и/или после декодирования медиаданных.
Буферизация дрожания задержки также применяется в потоковых системах. Вследствие того факта, что формирование потока является недиалоговым приложением, требуемый буфер дрожания задержки может быть существенно больше, чем в диалоговых приложениях. Когда потоковый проигрыватель устанавливает соединение с сервером и запрашивает загрузку мультимедийного потока, то сервер начинает передавать желаемый поток. Проигрыватель не начинает проигрывание потока немедленно, но обычно буферизует входящие данные в течение некоторого периода, обычно нескольких секунд. Здесь эта буферизация называется исходной буферизацией. Исходная буферизация обеспечивает возможность сглаживать изменения задержки передачи способом, похожим на тот, который обеспечивается буферизацией дрожания задержки в диалоговых приложениях. Дополнительно она позволяет использовать повторную передачу канального уровня, транспортного уровня и/или уровня приложения для потерянных блоков данных протокола (PDU). Проигрыватель может декодировать любые буферизованные данные, в то время как передаваемые блоки данных протокола могут быть получены вовремя, чтобы быть декодированными и проигранными в запланированный момент.
Исходная буферизация в потоковых клиентах обеспечивает еще одно преимущество, которое не может быть достигнуто в диалоговых системах: она позволяет изменять скорость передачи информации, передаваемой от сервера. Другими словами, пакеты информации могут передаваться быстрее во времени или медленнее, чем скорость их проигрывания, пока приемный буфер не переполнен или опустошен. Флуктуации скорости данных могут возникать из двух источников.
Во-первых, эффективность сжатия, которой можно достичь для некоторых типов информации, таких как видео, зависит от содержания исходных данных. Следовательно, если желательно стабильное качество, скорость передачи битов результирующего сжатого потока битов изменяется. Обычно стабильное аудиовизуальное качество является субъективно более приятным, чем переменное качество. Таким образом, исходная буферизация позволяет достичь более приятного аудиовизуального качества в сравнении с системами без исходной буферизации, такими как системы видеоконференций.
Во-вторых, общеизвестно, что потери пакетов в фиксированных сетях с Интернет-протоколом случаются всплесками. Для того чтобы избежать всплеска ошибок и высоких пиковых скоростей передачи битов и пакетов, хорошо сконструированные серверы потока тщательно планируют передачу пакетов. Пакеты могут не быть посланы точно с той скоростью, с которой они проигрываются на приемном конце; скорее, серверы могут пытаться достигнуть равномерного интервала между передаваемыми пакетами. Сервер может также подстроить скорость передачи пакетов в соответствии с преобладающими сетевыми условиями, например понижая скорость передачи пакетов, когда сеть становится загруженной, и повышая ее, если позволяют условия сети.
Гипотетический Опорный Декодер (HRD) / Верификатор Видео
Буферизации (VBV)
Многие стандарты видеокодирования включают спецификацию гипотетического опорного декодера/верификатора видеобуферизации как составную часть стандарта. Спецификация гипотетического опорного декодера/верификатора видеобуферизации является гипотетической моделью декодера, который содержит входной (предшествующий декодированию) буфер. Кодированные данные втекают во входной буфер обычно с постоянной скоростью передачи битов. Кодированные изображения удаляются из входного буфера по их временным отметкам декодирования, которые могут быть теми же, что и их временные отметки вывода. Входной буфер имеет некоторый размер, зависящий от используемого профиля и уровня. Модель гипотетического опорного декодера/верификатора видеобуферизации используется для указания точек возможного взаимодействия с точки зрения обработки данных и требований памяти. Кодеры должны гарантировать, что сгенерированный поток битов согласован со спецификацией гипотетического опорного декодера/верификатора видеобуферизации в соответствии со значениями параметров гипотетического опорного декодера/верификатора видеобуферизации некоторого профиля и уровня. Декодеры, поддерживающие некоторый профиль и уровень, должны быть способны декодировать поток битов, который соответствует модели гипотетического опорного декодера/верификатора видеобуферизации.
Гипотетический опорный декодер включает буфер кодированного изображения для хранения кодированного потока данных и буфер декодированного изображения для хранения декодированного опорного изображения и для изменения порядка декодированных изображений в последовательности отображения. Гипотетический опорный декодер перемещает данные между буферами подобно тому, как это делает декодер декодирующего устройства. Однако гипотетическому опорному декодеру не нужно ни декодировать кодированные изображения полностью, ни выводить декодированные изображения, а гипотетический опорный декодер только проверяет то, что декодирование потока изображений может быть произведено в соответствии с требованиями, задаваемыми стандартом кодирования. Когда гипотетический опорный декодер работает, он получает кодированный поток данных и сохраняет его в буфере кодированного изображения. Дополнительно гипотетический опорный декодер удаляет кодированные изображения из буфера кодированного изображения и сохраняет по меньшей мере некоторые из соответствующих гипотетически декодированных изображений в буфере декодированного изображения.
Гипотетическому опорному декодеру известны скорость входных данных, в соответствии с которой кодированные данные втекают в буфер кодированного изображения, скорость удаления изображений из буфера кодированного изображения, и скорость выхода изображений из буфера декодированного изображения. Гипотетический опорный декодер проверяет переполнение буфера кодированного или декодированного изображения и указывает, не является ли декодирование невозможным при текущих установочных параметрах. Затем гипотетический опорный декодер информирует кодер о нарушениях буферизации, причем кодер может изменить параметры кодирования, например, сокращая число опорных кадров, во избежание нарушения буферизации. В качестве альтернативы или дополнительно кодер начинает кодировать изображения с новыми параметрами и посылает кодированные изображения в гипотетический опорный декодер, который снова производит декодирование изображений и необходимые проверки. Как еще одна альтернатива, кодер может удалить последний кодированный кадр и кодировать более поздние кадры, так что нарушения буферизации не случается.
Два типа соответствия для декодера определены в стандарте кодирования JVT: соответствие порядка вывода (соответствие уровня видеокодирования VCL) и соответствие времени вывода (соответствие уровня видеокодирования - уровня сетевой абстракции VCL-NAL). Эти типы соответствий определены с использованием спецификации гипотетического опорного декодера. Соответствие порядка вывода означает способность декодера правильно восстанавливать порядок вывода изображений. Спецификация гипотетического опорного декодера включает модель «выталкивающего» декодера, которая выводит самое раннее несжатое изображение в последовательности вывода, когда требуется новое пространство хранения для изображения. Соответствие времени вывода обозначает способность декодера выводить изображения с тем же темпом, как это делает модель гипотетического опорного декодера. Временная отметка вывода изображения должна всегда быть равной или меньшей, чем время, когда она будет удалена из «выталкивающего» декодера.
Чередование
Чередование кадров является обычно используемой техникой в формировании аудиопотоков. В технике чередования кадров один пакет протокола реального времени содержит аудиокадры, которые не являются последовательными в последовательности декодирования или в последовательности вывода. Если один пакет в потоке аудиопакетов потерян, правильно принятые пакеты содержат соседние аудиокадры, которые могут быть использованы для скрытия потерянного аудиопакета (путем некоторого вида интерполяции). Многие спецификации аудиокодирования полезной нагрузки протоколов реального времени и типов MIME (многоцелевых расширений почты Интернета) содержат возможность сигнализировать о максимальном количестве чередований в одном пакете, выраженном в аудиокадрах.
В некоторых известных методах кодирования/декодирования размер необходимого буфера сообщается как подсчет блоков передачи.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Максимальный размер предшествующего декодированию буфера декодера может быть сообщен декодеру в байтах. Если используется основанная на байтах схема и процесс переупорядочивания для декодера не определен, то модель буферизации должна быть явно определена, потому что кодер и декодер могут использовать разные схемы буферизации. Если некоторый размер в байтах определен для буфера и декодер использует схему буферизации, в которой элементы передачи сохраняются в буфере до тех пор, пока буфер не заполнен, то только после этого самые старые данные удаляются из буфера и декодера. Этот вид буферизации может продолжаться дольше, чем необходимо, до того как началось декодирование.
Другой возможностью сообщить максимальный размер буфера, предшествующего декодированию, является использование блоков передачи, при этом размер буфера сообщается как максимальное количество блоков передачи, подлежащих буферизации. Однако максимальный размер блока передачи не определен, и размер блока передачи может изменяться. Если максимальный размер определен и этот размер слишком мал для некоторого блока данных, то блок данных должен быть разделен на более чем один блок передачи, что увеличивает издержки кодирования и передачи, то есть уменьшает эффективность сжатия и/или увеличивает сложность системы. Максимальный размер блока передачи должен быть достаточно большим, при этом полный размер буфера может быть излишне большим.
В настоящем изобретении размер буфера задается так, что определяется общий размер по меньшей мере двух блоков передачи и максимальный размер буфера определяется на основе этого общего размера. Дополнительно к общему размеру может быть необходимым принять во внимание дрожание сетевой передачи.
В соответствии с другим аспектом настоящего изобретения число блоков передачи, используемых при вычислении общего размера, является дробным числом от необходимого размера буфера, выраженного в числе блоков передачи.
В соответствии с еще одним аспектом настоящего изобретения число блоков передачи, используемых при вычислении общего размера, является дробным числом от необходимого размера буфера, выраженного в числе блоков передачи, причем дробное число имеет форму 1/N, где N - целое число.
В соответствии с еще одним аспектом настоящего изобретения число блоков передачи, используемых при вычислении общего размера, является тем же самым, что и необходимый размер буфера, выраженный в числе блоков передачи.
В варианте выполнения настоящего изобретения число блоков передачи, используемых при вычислении общего размера, выражается как в порядке буферизации блоков передачи. Порядок буферизации относится к порядку, в котором элементы передачи буферизуются в декодере для декодирования, то есть к порядку буферизации в буфере перед декодером.
Изобретение позволяет определить размер приемного буфера для декодера.
В нижеследующем описании независимая группа изображений состоит из изображений, идущих от изображения мгновенного обновления декодера (включительно) до следующего изображения мгновенного обновления декодера (не включительно) в последовательности декодирования.
В настоящем изобретении предложен параметр, сигнализирующий о максимальном объеме требуемой буферизации. Были рассмотрены несколько элементов для такого параметра: длительность, байты, кодированные изображения, кадры, элементы уровня видеокодирования VCL уровня сетевой абстракции NAL, все типы элементов уровня сетевой абстракции NAL и пакеты или полезные нагрузки протокола реального времени RTP. Количественное определение неупорядоченности через длительность использует зависимость между скоростью передачи битов и заданной длительностью для заключения о требуемом объеме буферизации в байтах. Так как скорость передачи битов, как правило, неизвестна, основанный на длительности подход не используется. Количественное определение неупорядоченности через число байтов потребовало бы от передатчика тщательной проверки передаваемого потока, чтобы отмечаемый предел не был превышен. Этот подход требует много вычислительной мощности от всех серверов. Это также потребовало бы специфицировать верификатор буферизации для серверов. Количественное определение неупорядоченности через кодированные изображения или кадры является слишком грубым, поскольку простой метод чередования слоев для декодеров, которые не поддерживают произвольный порядок слоев, потребовал бы разрешения на уровне субизображений для того, чтобы достигнуть минимальной задержки буферизации для восстановления порядка декодирования. Количественное определение неупорядоченности через число пакетов протокола реального времени не рассматривалось как подходящее, потому что в зависимости от преобладающих сетевых условий могут существовать различные типы пакетов агрегации. Таким образом, один пакет протокола реального времени может содержать разное количество данных. Различные сообщения дополнительной информации расширения (SEI) могут передаваться в зависимости от преобладающих сетевых условий. Например, в относительно плохих условиях предпочтительно передавать сообщения дополнительной информации расширения, которые нацелены на устойчивость к ошибкам, такие как сообщение дополнительной информации расширения с информацией о сцене. Таким образом, количество неупорядоченности во многих типах элементах уровня сетевой абстракции зависит от преобладающих сетевых условий, то есть количества дополнительной информации расширения и элементов набора параметров NAL, передаваемых вне порядка. Поэтому «все типы элементов уровня сетевой абстракции NAL» также не выглядят подходящим элементом. Поэтому количественное определение неупорядоченности через число элементов уровня видеокодирования (VCL) уровня сетевой абстракции (NAL) было признано наилучшей альтернативой. Элементы уровня видеокодирования уровня сетевой абстракции определены в стандарте кодирования JVT как кодированные слои, кодированные разделы данных или метки конца последовательности.
Предлагаемый параметр является следующим: num-reorder-VCL-NAL-units (число переупорядочиваемых элементов уровня видеокодирования уровня сетевой абстракции). Он указывает максимальное количество элементов уровня видеокодирования уровня сетевой абстракции, которые предшествуют любому элементу уровня видеокодирования уровня сетевой абстракции в потоке пакетов в порядке доставки элементов сетевой абстракции и следуют за этим элементом уровня видеокодирования уровня сетевой абстракции в порядке последовательных номеров протокола реального времени или в порядке композиции пакета агрегации, содержащего этот элемент уровня видеокодирования уровня сетевой абстракции.
Предложенный параметр может быть передан как опциональный параметр в объявлениях типа MIME или как опциональные поля протокола описания сеанса (SDP). Предложенный параметр может указывать способность декодера, или характеристики потока, или и то и другое в зависимости от протокола и фазы процедуры установления сеанса.
Размер буфера, построенного в соответствии с параметром num-reorder-VCL-NAL-units не может быть точно определен в байтах. Для того чтобы позволить сконструировать приемник, в котором требования к памяти буферизации точно известны, предлагается спецификация соответствия времени декодирования. Соответствие времени декодирования определяется путем использования гипотетической модели буферизации, которая не подразумевает постоянную входную скорость передачи битов, но, скорее, требует, чтобы серверы потока включали эту модель для обеспечения соответствия передаваемого потока пакетов этой модели. Указанная модель гипотетического буфера сглаживает возможные пульсирующие скорости передачи пакетов и перестраивает элементы уровня сетевой абстракции из порядка передачи в порядок декодирования, так что результирующий поток битов может вводиться в гипотетический декодер на постоянной скорости передачи битов.
В последующем описании изобретение описано путем использования основанной на кодере-декодере системы, но очевидно, что изобретение может также быть использовано в системах хранения видеосигналов. Сохраненными видеосигналами могут быть или некодированные сигналы, сохраненные до кодирования, а также кодированные сигналы, сохраненные после кодирования, или также декодированные сигналы, сохраненные после процесса кодирования и декодирования. Например, кодер производит поток битов в порядке декодирования. Файловая система принимает аудио- и/или видеопотоки битов, которые инкапсулированы, например, в порядке декодирования и сохранены в виде файла. Дополнительно кодер и файловая система могут создать метаданные, которые сообщают субъективную важность изображений и элементов уровня сетевой абстракции, содержа информацию, в частности, о субпоследовательностях. Файл может быть сохранен в базе данных, из которой сервер потока может считывать элементы уровня сетевой абстракции и инкапсулировать их в пакеты протокола реального времени. В соответствии с опциональными метаданными и используемым для передачи данных соединением сервер потока может модифицировать порядок передачи пакетов, отличный от порядка декодирования, удалять субпоследовательности, решать, какое сообщение дополнительной информации расширения будет передано, если таковые имеются, и так далее. На приемном конце пакеты протокола реального времени принимаются и буферизуются. Обычно элементы уровня сетевой абстракции сначала перестраиваются в правильный порядок и после этого элементы уровня сетевой абстракции доставляются к декодеру.
Кроме этого в дальнейшем описании изобретение описано путем использования системы, основанной на кодере-декодере, но очевидно, что изобретение может быть также использовано в системах, где кодер выдает и передает кодированные данные другому компоненту, такому как сервер потока, в порядке декодирования, где другой компонент перестраивает кодированные данные из порядка декодирования в другой порядок и отправляет кодированные данные в их переупорядоченной форме в декодер.
Способ в соответствии с настоящим изобретением главным образом отличается тем, что размер буфера задается так, что определяется общий размер по меньшей мере двух блоков передачи и максимальный размер буфера задается на основе этого общего размера. Система в соответствии с настоящим изобретением главным образом отличается тем, что система также включает определитель размера буфера для задания размера буфера путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Кодер в соответствии с настоящим изобретением главным образом отличается тем, что кодер также включает определитель размера буфера для задания размера буфера путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Декодер в соответствии с настоящим изобретением главным образом отличается тем, что декодер включает процессор для выделения памяти для буфера, предшествующего декодированию, в соответствии с принятым параметром, указывающим размер буфера, и размер буфера задается путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Передающее устройство в соответствии с настоящим изобретением главным образом отличается тем, что передающее устройство включает определитель размера буфера для задания размера буфера путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Приемное устройство в соответствии с настоящим изобретением главным образом отличается тем, что декодер включает процессор для выделения памяти для буфера, предшествующего декодированию, в соответствии с принятым параметром, указывающим размер буфера, и размер буфера задается путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Компьютерная программа в соответствии с настоящим изобретением главным образом отличается тем, что размер буфера задается путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Средство хранения в соответствии с настоящим изобретением главным образом отличается тем, что размер буфера задается путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера. Электронное устройство в соответствии с настоящим изобретением главным образом отличается тем, что электронное устройство также включает определитель размера буфера для определения размера буфера путем определения общего размера по меньшей мере двух блоков передачи и задания максимального размера буфера на основе общего размера.
Заместительная сигнализация для любой информации о порядке декодирования в видеопотоке битов представлена ниже в соответствии с предпочтительными вариантами осуществления настоящего изобретения. Порядковый номер декодирования (DON) указывает порядок декодирования элементов уровня сетевой абстракции, иначе говоря, порядок доставки элементов уровня сетевой абстракции к декодеру. В дальнейшем порядковый номер декодирования без потери общности понимается как 16-битное целое без знака. Пусть порядковый номер декодирования одного элемента уровня сетевой абстракции будет равен D1, а порядковый номер декодирования другого элемента уровня сетевой абстракции будет равен D2. Если D1<D2 и D2-D1<32768 или D1>D2 и D1-D2>=32768, тогда элемент уровня сетевой абстракции, имеющий порядковый номер декодирования, равный D1, предшествует элементу уровня сетевой абстракции, имеющему порядковый номер декодирования, равный D2, в порядке доставки элементов уровня сетевой абстракции. Если D1<D2 и D2-D1>=32768 или D1>D2 и D1-D2<32768, тогда элемент уровня сетевой абстракции, имеющий порядковый номер декодирования, равный D2, предшествует элементу уровня сетевой абстракции, имеющему порядковый номер декодирования, равный D1, в порядке доставки элементов уровня сетевой абстракции. Элементы уровня сетевой абстракции, связанные с разными исходными кодированными изображениями, не имеют одно и то же значение порядкового номера декодирования. Элементы уровня сетевой абстракции, связанные с одним и тем же исходным кодированным изображением, могут иметь одно и то же значение порядкового номера декодирования. Если все элементы уровня сетевой абстракции исходного кодированного изображения имеют одно и то же значение порядкового номера декодирования, то элементы уровня сетевой абстракции избыточно кодированного изображения, связанного с исходным кодированным изображением, должны иметь то же самое значение порядкового номера декодирования, что и элементы уровня сетевой абстракции исходного кодированного изображения. Порядок доставки элементов уровня сетевой абстракции, которые имеют одно и то же значение порядкового номера декодирования, предпочтительно является следующим:
1. Элемент уровня сетевой абстракции - разделитель изображений, если имеется.
2. Элементы уровня сетевой абстракции - наборы параметров последовательности, если имеются.
3. Элементы уровня сетевой абстракции - наборы параметров изображения, если имеются.
4. Элементы уровня сетевой абстракции - дополнительная информация расширения, если имеются.
5. Элементы уровня сетевой абстракции исходного кодированного изображения - кодированные слои и разделы данных слоев, если имеются.
6. Элементы уровня сетевой абстракции избыточных кодированных изображений - кодированные слои и разделы данных слоев, если имеются.
7. Элементы уровня сетевой абстракции - данные заполнения, если имеются.
8. Элемент уровня сетевой абстракции - конец последовательности, если имеется.
9. Элемент уровня сетевой абстракции - конец потока, если имеется.
Настоящее изобретение улучшает эффективность буферизации кодирующей системы. Путем использования настоящего изобретения можно информировать декодирующее устройство о том, сколько требуется предшествующей декодированию буферизации. Следовательно, отсутствует необходимость выделять для предшествующего декодированию буфера в устройстве декодирования больше памяти, чем необходимо. Также можно избежать переполнения предшествующего декодированию буфера.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 показывает пример схемы рекурсивной временной масштабируемости,
фиг.2 изображает схему видеокодирования с избыточностью, где последовательность изображений разделена на два или более независимо кодируемых потока чередующимся образом,
фиг.3 представляет пример предсказывающей структуры, которая потенциально улучшает эффективность сжатия,
фиг.4 представляет пример метода задерживания изображения с внутрикадровым кодированием, который может быть использован для улучшения устойчивости к ошибкам,
фиг.5а и 5b раскрывают уже известные схемы нумерации для изображений кодированного видеопотока,
фиг.6а раскрывает пример потока изображений, содержащего субпоследовательности на уровне 1,
фиг.6b раскрывает пример потока изображений, содержащего две группы изображений и имеющего субпоследовательности на уровне 1,
фиг.6с раскрывает пример потока изображений различных групп изображений,
фиг.7 раскрывает еще один пример потока изображений, содержащего субпоследовательности на уровне 1,
фиг.8 изображает предпочтительный вариант исполнения системы в соответствии с настоящим изобретением,
фиг.9 изображает предпочтительный вариант исполнения кодера в соответствии с настоящим изобретением,
фиг.10 изображает предпочтительный вариант исполнения декодера в соответствии с настоящим изобретением,
фиг.11а раскрывает пример формата пакетов уровня сетевой абстракции, который может быть использован с настоящим изобретением,
фиг.11b раскрывает еще один пример формата пакетов уровня сетевой абстракции, который может быть использован с настоящим изобретением, и
фиг.12 изображает пример буферизации блоков передачи в предшествующем декодированию буфере.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Основной концепцией, лежащей в основе правил депакетирования, является изменение порядка блоков передачи, таких как элементы уровня сетевой абстракции (NAL), из порядка передачи в порядок декодирования элементов уровня сетевой абстракции.
Приемник включает приемный буфер (или предшествующий декодированию буфер), который используется для изменения порядка пакетов из порядка передачи в порядок декодирования элементов уровня сетевой абстракции. В примере варианта осуществления настоящего изобретения размер приемного буфера устанавливается, в единицах числа байтов, равным или большим, чем значение параметра deint-buf-size, например, равным 1,2*(значение MIME параметра deint-buf-size) (MIME - многоцелевые расширения почты Интернета). Приемник также может учитывать буферизацию для дрожания задержки передачи и/или резервировать отдельный буфер для буферизации дрожания задержки передачи или комбинировать буфер дрожания задержки передачи с приемным буфером (и, следовательно, резервировать некоторое добавочное пространство для буфера дрожания задержки передачи в приемном буфере).
Приемник сохраняет входящие элементы уровня сетевой абстракции в порядке их приема в приемном буфере, как описано ниже. Элементы пакетов агрегации NAL сохраняются в приемном буфере индивидуально. Значение порядкового номера декодирования вычисляется и сохраняется для всех элементов уровня сетевой абстракции.
В дальнейшем пусть N будет значением опционального параметра num-reorder-VCL-NAL-units (параметр глубины чередования), который определяет максимальное количество элементов уровня видеокодирования NAL, которые предшествуют какому-либо элементу уровня видеокодирования NAL в потоке пакетов в порядке передачи элементов уровня сетевой абстракции и следуют за этим элементом уровня видеокодирования уровня сетевой абстракции в порядке декодирования. Если параметр не присутствует, то может подразумеваться нулевое значение числа.
Когда инициализируется сеанс передачи видеопотока, приемник 8 выделяет память для буфера приема 9.1 для сохранения по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции. Затем приемник начинает принимать видеопоток и сохранять принятые элементы уровня видеокодирования уровня сетевой абстракции в буфере приема. Исходная буферизация продолжается:
- пока по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции не сохранены в приемном буфере 9.1, или
- если присутствует параметр MIME max-don-diff, пока значение функции don_diff (m,n) больше, чем значение max-don-diff, в котором n соответствует элементу уровня сетевой абстракции, имеющему наибольшее значение AbsDON среди принятых элементов уровня сетевой абстракции, а m соответствует элементу уровня сетевой абстракции, имеющему наименьшее значение AbsDON среди принятых элементов уровня сетевой абстракции, или
- пока исходная буферизация не достигнет продолжительности, равной или большей, чем значение опционального параметра MIME init-buf-time.
Функция don_diff(m,n) определяется следующим образом:
Если DON (m)==DON(n), don_diff(m,n)=0
Если (DON(m)<DON(n), и DON(n)-DON(m)<32768),
don_diff(m,n)=DON(n)-DON (m)
Если (DON(m)>DON(n), и DON(m)-DON(n)>=32768),
don_diff(m,n)=65536-DON(m)+DON(n)
Если (DON(m)<DON(n), и DON(n)-DON(m)>=32768),
don_diff(m,n)=-(DON(m)+65536-DON(n))
Если (DON(m)>DON(n), и DON(m)-DON(n)<32768),
don_diff(m,n)=-(DON(m)-DON(n))
где DON (i) - порядковый номер декодирования элемента уровня сетевой абстракции, имеющего индекс i в последовательности передачи.
Положительное значение don_diff(m,n) указывает, что элемент уровня сетевой абстракции, имеющий индекс n порядка передачи, следует в порядке декодирования за элементом уровня сетевой абстракции, имеющим индекс m порядка передачи.
AbsDON обозначает такой порядковый номер декодирования элемента уровня сетевой абстракции, который не возвращается к 0 после 65535. Другими словами, AbsDON вычисляется следующим образом.
Пусть m и n являются последовательными элементами уровня сетевой абстракции в порядке их передачи. Для самого первого элемента уровня сетевой абстракции в порядке передачи (индекс которого = 0) AbsDON(0)=DON(0). Для других элементов уровня сетевой абстракции AbsDON вычисляется следующим образом:
Если DON(m)==DON(n), AbsDON(n)=AbsDON(m)
Если (DON(m)<DON(n), и DON(n)-DON(m)<32768),
AbsDON(n)=AbsDON(m)+DON(n)-DON(m)
Если (DON(m)>DON(n), и DON(m)-DON(n)>=32768),
AbsDON(n)=AbsDON(m)+65536-DON(m)+DON(n)
Если (DON(m)<DON(n), и DON(n)-DON(m)>=32768),
AbsDON(n)=AbsDON(m)-(DON(m)+65536-DON(n))
Если (DON(m)>DON(n), и DON(m)-DON(n)<32768),
AbsDON(n)=AbsDON(m)-(DON(m)-DON(n)).
где DON (i) - порядковый номер декодирования элемента уровня сетевой абстракции, имеющего индекс i в порядке передачи.
Обычно в приемнике имеется два состояния буферизации: исходная буферизация и буферизация проигрывания. Исходная буферизация происходит, когда инициализирован сеанс протокола реального времени. После исходной буферизации начинаются декодирование и проигрывание и используется режим буферизации проигрывания.
Когда приемный буфер 9.1 содержит по меньшей мере N элементов уровня видеокодирования (VCL) уровня сетевой абстракции (NAL), элементы уровня сетевой абстракции удаляются из приемного буфера 9.1 один за другим и переправляются в декодер 2. Элементы уровня сетевой абстракции не обязательно удаляются из приемного буфера в том же порядке, в котором они были сохранены, а в соответствии с порядковым номером декодирования элементов уровня сетевой абстракции, как описано ниже. Доставка пакетов к декодеру 2 продолжается, пока буфер содержит менее чем N элементов уровня видеокодирования уровня сетевой абстракции, например N-1 элементов уровня видеокодирования уровня сетевой абстракции.
Элементы уровня сетевой абстракции, подлежащие удалению из приемного буфера, определяются следующим образом:
- Если приемный буфер содержит по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции, элементы уровня сетевой абстракции удаляются из приемного буфера и переправляются в декодер в порядке, определенном ниже, пока буфер не будет содержать N-1 элементов уровня видеокодирования уровня сетевой абстракции.
- Если присутствует параметр max-don-diff, все элементы уровня сетевой абстракции m, для которых don_diff(m,n) больше, чем max-don-diff, удаляются из приемного буфера и переправляются в декодер в описанном ниже порядке. Здесь n соответствует элементам уровня сетевой абстракции, имеющим наибольшее значение AbsDON среди принятых элементов уровня сетевой абстракции.
- Переменная ts устанавливается на значение системного таймера, которое было инициализировано равным 0, когда был принят первый пакет потока элементов уровня сетевой абстракции. Если приемный буфер содержит элемент уровня сетевой абстракции, время приема tr которого отвечает условию ts-tr>init-buf-time, то элементы уровня сетевой абстракции переправляются в декодер (и удаляются из приемного буфера) в описанном ниже порядке, пока приемный буфер не будет содержать элементов уровня сетевой абстракции, время приема tr которых отвечает указанному условию.
Порядок, в котором элементы уровня сетевой абстракции направляются в декодер, определяется следующим образом.
Пусть PDON будет переменной, которая инициализируется равной 0 в начале сеанса протокола реального времени RTP. Для каждого элемента уровня сетевой абстракции, связанного со значением порядкового номера декодирования, вычисляется дистанция порядкового номера декодирования следующим образом. Если значение порядкового номера декодирования элемента уровня сетевой абстракции больше, чем значение PDON, то дистанция порядкового номера декодирования (DON) равна
DON-PDON. В противном случае дистанция порядкового номера декодирования (DON) равна 65535-PDON+DON+1.
Элементы уровня сетевой абстракции переправляются в декодер в порядке возрастания дистанции порядкового номера декодирования. Если несколько элементов уровня сетевой абстракции имеют одно и то же значение дистанции порядкового номера декодирования, они могут переправляться в декодер в любом порядке. Когда желаемое число элементов уровня сетевой абстракции переправлено в декодер, значение PDON устанавливается равным значению порядкового номера декодирования последнего элемента уровня сетевой абстракции, переправленного в декодер.
Дополнительные указания по депакетированию
Следующие дополнительные правила депакетирования могут быть использованы для применения операционного депакетизатора стандарта Н.264.
Интеллектуальные приемники протокола реального времени (например, в шлюзах) могут идентифицировать потерянные разделы А кодированных данных слоев (DPA). Если обнаружен потерянный DPA, шлюз может решить не посылать соответствующие разделы В и С кодированных данных слоев, так как их информация не имеет смысла для декодеров стандарта H.264. Таким способом сетевой элемент может сократить загрузку сети путем удаления бесполезных пакетов без анализа комплексного потока битов.
Интеллектуальные приемники протокола реального времени (например, в шлюзах) могут идентифицировать потерянные фрагментарные элементы (FU). Если найден потерянный фрагментарный элемент, шлюз может решить не посылать следующие фрагментарные элементы того же элемента уровня сетевой абстракции, так как их информация не имеет смысла для декодеров стандарта Н.264. Таким способом сетевой элемент может сократить загрузку сети путем удаления бесполезных пакетов без анализа комплексного потока битов.
Интеллектуальные приемники, которые должны удалять пакеты или элементы уровня сетевой абстракции, могут сначала удалить все пакеты/элементы уровня сетевой абстракции, в которых значение поля NRI октета типа элемента NAL равно 0. Это может минимизировать влияние на восприятие пользователя.
Далее будет описан параметр, предназначенный для указания максимального размера буфера в декодере. Параметр deint-buf-size обычно отсутствует, когда отсутствует параметр packetization-mode, указывающий режим пакетирования, или значение параметра packetization-mode равно 0 или 1. Этот параметр должен присутствовать, когда значение параметра packetization-mode равно 2.
Значение параметра deint-buf-size определяется в связи со следующей моделью гипотетического буфера устранения чередования. В начале гипотетический буфер устранения чередования пуст и максимальное заполнение буфера m установлено равным 0. В модели используется следующий процесс:
i) Следующий элемент уровня видеокодирования уровня сетевой абстракции в порядке передачи помещается в гипотетический буфер устранения чередования.
ii) Пусть s - совокупный размер элементов уровня видеокодирования уровня сетевой абстракции в буфере, выраженный в байтах.
iii) Если s больше, чем m, то m устанавливается равным s.
iv) Если число элементов уровня видеокодирования уровня сетевой абстракции в гипотетическом буфере устранения чередования меньше или равно значению interleaving-depth (глубине чередования), то процесс продолжается со стадии vii.
v) Самый ранний элемент уровня видеокодирования уровня сетевой абстракции в последовательности декодирования среди элементов уровня видеокодирования уровня сетевой абстракции в гипотетическом буфере устранения чередования определяется по значениям порядкового номера декодирования для элементов уровня видеокодирования уровня сетевой абстракции в соответствии с разделом 5.5. RFC XXXX.
vi) Самый ранний элемент уровня видеокодирования уровня сетевой абстракции удаляется из гипотетического буфера устранения чередования.
vii) Если в последовательности передачи больше нет элементов уровня видеокодирования уровня сетевой абстракции, процесс прерывается.
viii) Процесс продолжается со стадии i.
Этот параметр указывает свойства потока элементов уровня сетевой абстракции или способности приемника. Когда параметр используется для указания свойств потока элементов уровня сетевой абстракции, значение параметра, обозначенного как у, является таким, что:
a) значение m, получающееся, когда поток элементов уровня сетевой абстракции полностью обработан моделью гипотетического буфера устранения чередования, меньше или равно v или
b) порядок элементов уровня видеокодирования уровня сетевой абстракции, определенный путем удаления самого раннего элемента уровня видеокодирования уровня сетевой абстракции из буфера устранения чередования, является тем же самым, что и порядок удаления элементов уровня видеокодирования уровня сетевой абстракции из гипотетического буфера устранения чередования, пока имеется переполнение буфера.
Следовательно, гарантируется, что приемники могут реконструировать порядок декодирования элементов уровня видеокодирования NAL, когда размер буфера для восстановления порядка декодирования элементов уровня видеокодирования NAL имеет по меньшей мере значение deint-buf-size, выраженное в байтах.
Когда параметр используется для указания способностей приемника, приемник способен правильно реконструировать порядок декодирования элемента уровня видеокодирования NAL любых потоков элементов NAL, которые имеют то же самое значение параметра deint-buf-size. Когда приемник буферизует такое число байт, которое равно или больше значения deint-buf-size, то он способен реконструировать порядок декодирования элемента уровня видеокодирования NAL из порядка передачи.
Элементы, не являющиеся элементами уровня видеокодирования уровня сетевой абстракции, также должны быть приняты к рассмотрению при определении размера буфера устранения чередования. Когда этот параметр присутствует, достаточный размер буфера устранения чередования для всех элементов уровня сетевой абстракции равен или на 20% больше, чем значение этого параметра.
Если параметр отсутствует, тогда для deint-buf-size используется значение, равное 0. Значение deint-buf-size является целым в интервале, например, от 0 до 4 294 967 295 включительно.
Далее изобретение будет описано более подробно со ссылкой на систему, представленную на фиг.8, кодер 1 и гипотетический опорный декодер 5 на фиг.9 и декодер 2 на фиг.10. Изображения, подлежащие кодированию, могут быть, например, изображениями из видеопотока от видеоисточника 3, например камеры, записывающего видеоустройства и т.п. Изображения (кадры) видеопотока могут быть разделены на более мелкие части, такие как слои (слайсы). Слои могут быть далее разделены на блоки. В кодере 1 видеопоток кодируется для сокращения информации, подлежащей "передаче через канал 4 передачи или к средству сохранения (не показано). Изображения видеопотока вводятся в кодер 1. Кодер имеет буфер 1.1 кодирования (фиг.9) для временного хранения некоторых изображений, подлежащих кодированию. Кодер 1 также включает память 1.3 и процессор 1.2, в котором может быть реализована задача кодирования в соответствии с изобретением. Память 1.3 и процессор 1.2 могут быть общими с передающим устройством 6, или передающее устройство 6 может иметь другой процессор и/или другую память (не показано) для других функций передающего устройства 6. Кодер 1 производит оценку движения и/или выполняет некоторые другие задачи для сжатия видеопотока. В процессе оценки движения ищутся сходства между подлежащим кодированию изображением (текущим изображением), предыдущим изображением и/или более поздним изображением. Если сходства найдены, сравниваемое изображение или его часть может использоваться как опорное изображение для изображения, подлежащего кодированию. В стандарте JVT порядок отображения и порядок декодирования изображений не обязательно один и тот же, при этом опорное изображение должно храниться в буфере (например, в буфере 1.1 кодирования), пока оно используется как опорное изображение. Кодер 1 также помещает информацию о порядке отображения изображений в поток передачи.
После процесса кодирования кодированные изображения перемещаются в буфер 5.2 кодированных изображений, если это необходимо. Кодированные изображения передаются от кодера 1 к декодеру 2 посредством канала 4 передачи. В декодере 2 кодированные изображения декодируются для формирования несжатых изображений, соответствующих, насколько возможно, кодированным изображениям. Каждое декодированное изображение буферизуется в буфере 2.1 декодированных изображений декодера 2, если оно не отображается по существу немедленно после декодирования и не используется как опорное изображение. В системе, соответствующей настоящему изобретению, и буферизация опорного изображения, и буферизация отображаемого изображения являются комбинированными, и они используют один и тот же буфер 2.1 декодированного изображения. Это исключает необходимость хранения одного и того же изображения в двух различных местах, уменьшая, таким образом, требования к памяти декодера 2.
Декодер 2 также включает память 2.3 и процессор 2.2, в которых может быть реализована задача декодирования в соответствии с изобретением. Память 2.3 и процессор 2.2 могут быть общими с приемным устройством 8, или приемное устройство 8 может иметь другой процессор и/или другую память (не показано) для выполнения других функций приемного устройства 8.
Кодирование
Рассмотрим процесс кодирования-декодирования более подробно. Изображения от видеоисточника 3 поступают в кодер 1 и предпочтительно сохраняются в буфере 1.1 кодирования. Процесс кодирования не обязательно начинается немедленно после того, как первое изображение поступило в кодер, а начинается после того, как имеется некоторое количество изображений в буфере 1.1 кодирования. Затем кодер 1 пытается найти из изображений подходящих кандидатов, которые были бы использованы как опорные кадры. Затем кодер 1 производит кодирование для формирования кодированных изображений. Кодированные изображения могут быть, например, предсказанными изображениями (Р), изображениями двойного предсказания (В) и/или изображениями внутреннего кодирования (I). Изображения внутреннего кодирования могут быть декодированы без использования каких-либо других изображений, а другой тип изображений требует по меньшей мере одно опорное изображение до того, как они могут быть декодированы. Изображения любого из упомянутых выше типов изображений могут использоваться как опорное изображение.
Кодер предпочтительно присоединяет к изображениям две временные отметки: временную отметку декодирования и временную отметку вывода. Декодер может использовать временные отметки для определения правильного времени декодирования и времени вывода (отображения) изображений. Однако эти временные отметки не обязательно передаются в декодер, или он их не использует.
Кодер также формирует субпоследовательности на одном или более уровнях выше самого низкого уровня 0. Изображения на уровне 0 могут быть декодированы независимо, а изображения на более высоких уровнях могут зависеть от изображений на некоторых более низких уровнях. В примере на фиг.6а есть два уровня: уровень 0 и уровень 1. Изображения I0, Р6 и Р12 принадлежат уровню 0, в то время как другие изображения Р1-Р5, Р7-Р11, показанные на фиг.6а, принадлежат уровню 1. Предпочтительно, кодер формирует группы изображений так, что каждое изображение одной группы изображений может быть реконструировано путем использования только изображений той же самой группы изображений. Другими словами, одна группа изображений содержит по меньшей мере одно изображение, которое может быть декодировано независимо, и все другие изображения, для которых изображение, которое может быть декодировано независимо, является опорным изображением. В примере на фиг.7 показаны две группы изображений. Первая группа изображений включает изображения 10(0), Р1(0), Р3(0) на уровне 0 и изображения В2(0), 2хВ3(0), В4(0), 2хВ5(0), В6(0), Р5(0), Р6(0) на уровне 1. Вторая группа изображений включает изображения 10(1) и Р1(1) на уровне 0 и изображения 2хВ3(1) и В2(1) на уровне 1. Изображения на уровне 1 каждой группы изображений далее организованы как субпоследовательности. Первая субпоследовательность первой группы изображений содержит изображения В3(0), В2(0), В3(0), вторая субпоследовательность содержит изображения В5(0), В4(0), В5(0), и третья субпоследовательность содержит изображения В6(0), Р5(0), Р6(0). Субпоследовательность второй группы изображений содержит изображения В3(1), В2(1), В3(1). Число в скобках указывает идентификатор последовательности видеоизображений, определенный для группы изображений, к которой принадлежит изображение.
Идентификатор последовательности видеоизображений передается для каждого изображения. Он может транспортироваться внутри цифрового видеопотока, например в данных дополнительной информации расширения. Идентификатор последовательности видеоизображений может также передаваться в полях заголовка транспортного протокола, например в заголовке полезной нагрузки протокола реального времени стандарта кодирования JVT. Идентификатор последовательности видеоизображений в соответствии с представленным разбиением на независимые группы изображений может быть сохранен в метаданных формата видеофайла, таких как формат файла MPEG-4 AVC. Фиг.11а и 11b раскрывают примеры форматов пакетов уровня сетевой абстракции, которые могут быть использованы с настоящим изобретением. Пакет содержит заголовок 11 и область 12 полезной нагрузки. Заголовок 11 предпочтительно содержит поле 11.1 (F, запрещено) индикатора ошибки, поле 11.2 приоритета и поле 11.3 типа. Поле 11.1 индикатора ошибки указывает на свободный от ошибки разряда элемент уровня сетевой абстракции. Предпочтительно, когда поле индикатора ошибки установлено, декодер уведомлен, что ошибка разряда может присутствовать в полезной нагрузке или в октете типа элемента уровня сетевой абстракции. Декодеры, которые неспособны обрабатывать ошибки разряда, могут тогда исключать такие пакеты. Поле 11.2 приоритета используется для указания важности изображения, инкапсулированного в область 12 полезной нагрузки пакета. В примере варианта исполнения поле приоритета может иметь следующие четыре различных значения. Значение 00 указывает, что содержимое элемента уровня сетевой абстракции не используется для реконструкции сохраненных изображений (что может использоваться в будущем). Такие элементы уровня сетевой абстракции могут быть исключены без риска для целостности опорных изображений. Значения выше 00 указывают относительный транспортный приоритет, как определено кодером. Интеллектуальные сетевые элементы могут использовать эту информацию для лучшей защиты более важных элементов уровня сетевой абстракции по сравнению с менее важными. Значение 11 является наивысшим транспортным приоритетом, далее следует 10, затем 01, и, наконец, 00 является самым низким.
Область 12 полезной нагрузки элемента уровня NAL сетевой абстракции содержит по меньшей мере поле 12.1 идентификатора последовательности видеоизображений, индикатор 12.2 поля, поле 12.3 размера, информацию 12.4 о времени и кодированную информацию 12.5 изображения. Поле 12.1 идентификатора последовательности видеоизображений используется для хранения номера последовательности видеоизображений, которой принадлежит изображение. Индикатор 12.2 поля используется для указания, является изображение первым или вторым кадром, когда используется формат изображения из двух кадров. Оба кадра могут кодироваться как раздельные изображения. Первый индикатор поля, равный 1, предпочтительно сообщает, что элемент уровня сетевой абстракции принадлежит к кодированному кадру или кодированному полю, которое предшествует второму кодированному полю в порядке декодирования. Первый индикатор поля, равный 0, сообщает, что элемент уровня сетевой абстракции принадлежит кодированному полю, которое следует за первым кодированным полем того же кадра в порядке декодирования. Поле 11.3 информации о времени используется для преобразования относящейся ко времени информации, если необходимо.
Элементы уровня сетевой абстракции могут доставляться в различных видах пакетов. В этом предпочтительном варианте исполнения различные форматы пакетов включают простые пакеты и пакеты агрегации. Пакеты агрегации могут в дальнейшем разделяться на пакеты агрегации единого времени и пакеты агрегации множественного времени.
Простой пакет в соответствии с этим изобретением состоит из одного элемента уровня сетевой абстракции. Поток элементов уровня сетевой абстракции, составленный путем декапсуляции простых пакетов в последовательном порядке номеров протокола реального времени, должен соответствовать порядку доставки элементов уровня сетевой абстракции.
Пакеты агрегации являются схемой агрегации пакетов этой спецификации полезной нагрузки. Схема введена для отражения значительного различия размеров максимального блока передачи (MTU) двух различных типов сетей - проводной сети связи с Интернет-протоколом (с размером максимального блока передачи, который часто ограничен размером максимального блока передачи Ethernet - грубо, 1500 байт) и сети беспроводной связи, основанной на Интернет-протоколе или на другом протоколе (например, Н.324/М), с предпочтительным размером блока передачи 254 байта или меньше. Для предотвращения преобразования кодирования информации между этими двумя средами и во избежание нежелательных расходов пакетирования введена схема агрегации пакетов.
Пакеты агрегации единого времени агрегируют элементы уровня сетевой абстракции с идентичным временем элемента уровня сетевой абстракции. Соответственно, пакеты агрегации множественного времени агрегируют элементы уровня сетевой абстракции с потенциально различным временем элемента уровня сетевой абстракции. Определяются два различных пакета агрегации множественного времени, которые различаются длиной смещения временной отметки элемента NAL. Время элемента уровня сетевой абстракции определено как значение, которое имела бы временная отметка протокола реального времени, если бы этот элемент уровня сетевой абстракции был транспортирован в своем собственном пакете протокола реального времени.
Пакеты агрегации множественного времени и пакеты агрегации единого времени имеют следующие общие не ограничивающие правила пакетирования в соответствии с предпочтительным вариантом исполнения настоящего изобретения. Временная отметка протокола реального времени должна быть установлена на минимальное время из времени элементов уровня сетевой абстракции всех элементов уровня сетевой абстракции, подлежащих агрегированию. Поле типа в октете типа элемента уровня сетевой абстракции должно быть установлено на соответствующее значение, как указано в таблице 1. Поле 11.1 индикатора ошибки должно быть очищено, если все поля индикатора ошибки агрегированных элементов уровня сетевой абстракции равны нулю, в противном случае оно должно быть установлено.
Таблица 1 | ||
Тип | Пакет | Длина поля смещения временной отметки (в битах) |
0×18 | Пакет агрегации единого времени STAP | 0 |
0×19 | Пакет агрегации множественного времени МТАР 16 | 16 |
0×20 | Пакет агрегации множественного времени МТАР 24 | 24 |
Полезная нагрузка элемента уровня сетевой абстракции пакета агрегации состоит из одного или более элементов агрегации. Пакет агрегации может переносить столько элементов агрегации, сколько необходимо, однако общее количество данных в пакете агрегации должно соответствовать пакету Интернет-протокола, и размер следует выбирать таким образом, чтобы результирующий пакет Интернет протокола был меньше, чем размер максимального блока передачи.
Пакет агрегации единого времени (STAP) следует использовать, когда элементы уровня сетевой абстракции агрегации разделяют одно и тоже время элемента уровня сетевой абстракции. Полезная нагрузка элемента уровня сетевой абстракции пакета агрегации единого времени состоит из поля 12.1 (например, 7 битов) идентификатора последовательности видеоизображений и индикатора 12.2 поля, за которым следуют элементы агрегации одного изображения.
В другом альтернативном варианте исполнения полезная нагрузка элемента уровня сетевой абстракции пакета агрегации единого времени состоит из 16-битового порядкового номера декодирования без знака, за которым следуют элементы агрегации одного изображения.
Видеопоследовательность, соответствующая этой спецификации, может быть любой частью потока элементов уровня сетевой абстракции, которая может быть декодирована независимо от других частей потока элементов уровня сетевой абстракции.
Кадр состоит из двух полей, которые могут быть кодированы как отдельные изображения. Первый индикатор поля, равный 1, указывает, что элемент уровня сетевой абстракции принадлежит кодированному кадру или кодированному полю, которое предшествует второму кодированному полю того же кадра в порядке декодирования. Первый индикатор поля, равный 0, указывает, что элемент уровня сетевой абстракции принадлежит кодированному полю, которое следует за первым кодированным полем того же кадра в порядке декодирования.
Блок агрегации одиночного изображения состоит из, например, 16-битовой информации о размере без знака, которая указывает размер следующего элемента уровня сетевой абстракции в байтах (не включая эти два октета, но включая октет типа элемента уровня сетевой абстракции), за которым следует сам элемент уровня сетевой абстракции, включая байт типа элемента уровня сетевой абстракции.
Пакет агрегации множественного времени (МТАР) имеет архитектуру, похожую на пакет агрегации единого времени. Он состоит из байта заголовка элемента уровня сетевой абстракции и одного или более блоков агрегации множественного изображения. Выбор между различными полями пакета агрегации множественного времени зависит от приложения - чем больше смещение временной отметки, тем выше гибкость пакета агрегации множественного времени, но чем выше, тем больше накладные расходы.
Два различных элемента агрегации множественного времени определены в этой спецификации. Оба они состоят из, например, 16-битовой, без знака, информации о размере следующего элемента уровня сетевой абстракции (такой же, как информация о размере в пакете агрегации единого времени). Вдобавок к этим 16-и битам также имеется поле 12.1 идентификатора последовательности видеоизображений (например, 7 битов), индикатор 12.2 поля и n битов информации о времени для этого элемента уровня сетевой абстракции, причем n может быть, например, 16 или 24. Поле информации о времени должно быть установлено так, что временная отметка протокола реального времени каждого элемента уровня сетевой абстракции в пакете агрегации множественного времени (время элемента уровня сетевой абстракции) может быть сгенерирована путем добавления информации о времени из временной отметки протокола реального времени пакета агрегации множественного времени.
В другом альтернативном варианте исполнения пакет агрегации множественного времени состоит из байта заголовка элемента уровня сетевой абстракции, поля 12.1 базы (DONB) порядкового номера декодирования (например, 16 битов) и одного или более блоков агрегации множественного изображения. Два различных элемента агрегации множественного времени в этом случае определены следующим образом. Оба из них состоят из, например, 16-битовой, без знака, информации о размере следующего элемента уровня сетевой абстракции (такой же, как информация о размере в пакете агрегации единого времени). Вдобавок к этим 16-и битам также имеется поле 12.5 изменения (DOND) номера порядка декодирования (например, 7 битов), и n битов информации о времени для этого элемента уровня сетевой абстракции, причем n может быть, например, 16 или 24. Порядковый номер декодирования следующего элемента уровня сетевой абстракции равен сумме базы порядкового номера декодирования и изменения порядкового номера декодирования. Поле информации о времени должно быть установлено так, что временная отметка протокола реального времени каждого элемента уровня сетевой абстракции в пакете агрегации множественного времени (время элемента уровня сетевой абстракции) может быть сгенерирована путем добавления информации о времени из временной отметки протокола реального времени пакета агрегации множественного времени.
Поведение модели буферизации, соответствующей настоящему изобретению, предпочтительно управляется следующими параметрами: первоначальный период ввода данных (например, такты системных часов 90 кГц) и размер гипотетического входного буфера пакетов (например, в байтах). Предпочтительно, первоначальный период ввода данных и размер гипотетического входного буфера пакетов по умолчанию равны 0. Клиенты PSS могут сигнализировать о своей способности обеспечить больший буфер в процессе обмена данными о возможностях.
Максимальная скорость передачи видеоданных, выраженная в битах, может быть сообщена, например, в атрибуте пропускной способности уровня носителя протокола SDP описания сеанса или в специально предназначенном параметре протокола описания сеанса. Если атрибут пропускной способности уровня носителя не присутствовал в описании представления, то максимальная скорость передачи видеоданных, выраженная в битах, определяется в соответствии с используемыми профилем видеокодирования и уровнем.
Значение исходного параметра для каждого потока может быть сообщено в SDP-описании потока, например, используя параметры типа MIME или нестандартные параметры протокола описания сеанса. Сообщенные значения параметра замещают соответствующие значения параметров, принятые по умолчанию. Значения, сообщенные внутри описания протокола описания сеанса, гарантируют непрерывное воспроизведение от начала потока до конца потока (предполагая надежный канал передачи с постоянной задержкой).
Серверы PSS могут обновлять значения параметров в ответ на запрос готовности к передаче на проигрывание. Если присутствует обновленное значение параметра, оно должно заменить значение, сообщенное в описании протокола описания сеанса, или значение параметра, принятое по умолчанию в работе модели буферизации PSS. Обновленное значение параметра является значимым только в указанном диапазоне воспроизведения и после этого не имеет эффекта. Предполагая надежный канал передачи с постоянной задержкой, обновленное значение параметра гарантирует непрерывное воспроизведение текущего диапазона, указанного в ответе на запрос на проигрывание. Указанный размер гипотетического буфера входных пакетов и первоначальный период ввода данных должны быть меньше или равны соответствующим значениям в описании протокола описания сеанса или соответствующим значениям, принимаемым по умолчанию, в зависимости от того, какие из них являются действительными.
Верификатор буферизации сервера определяется в соответствии с определенной моделью буферизации. Модель основана на гипотетическом входном буфере пакетов.
Модель буферизации представлена далее. Первоначально буфер пуст. Сервер PSS добавляет каждый передаваемый пакет протокола реального времени, имеющий полезную видеонагрузку, к гипотетическому входному буферу 1.1 пакетов немедленно после того, как он передан. Все заголовки протоколов на уровне протокола реального времени или любых более низких уровней удаляются. Данные не удаляются из гипотетического входного буфера пакетов в течение периода, называемого первоначальным периодом ввода. Первоначальный период ввода начинается, когда первый пакет протокола реального времени добавляется к гипотетическому входному буферу пакетов. Когда первоначальный период ввода истекает, начинается удаление данных из гипотетического входного буфера пакетов. Удаление данных происходит предпочтительно на максимальной скорости передачи видео, выраженной в битах, до тех пор, пока гипотетический входной буфер 1.1 пакетов не станет пустым. Данные, удаленные из гипотетического входного буфера 1.1 пакетов, являются входными для гипотетического опорного декодера (HRD) 5. Гипотетический опорный декодер 5 производит гипотетический процесс декодирования, чтобы гарантировать, что кодированный видеопоток может быть декодирован в соответствии с установленными параметрами, а если гипотетический опорный декодер 5 замечает, что, например, буфер 5.2 изображения гипотетического опорного декодера 5 переполнен, то параметры буфера могут быть изменены. В этом случае новые параметры также передаются в приемное устройство 8, в котором буферы заново инициализированы соответствующим образом.
Кодирующее и передающее устройство 1, такое как сервер PSS, должно проверять, что переданный пакет протокола реального времени удовлетворяет следующим требованиям:
- Модель буферизации следует использовать с принятыми по умолчанию или сообщенными значениями параметра буферизации. Сообщенные значения параметра заменяют соответствующие значения параметра, принятые по умолчанию.
- Заполнение гипотетического входного буфера пакетов не должно превышать принятый по умолчанию или сообщенный размер буфера.
- Выходной поток битов гипотетического входного буфера пакетов должен следовать определениям гипотетического опорного декодера.
Когда используется модель буферизации, клиент PSS должен быть способен получать поток пакетов протокола реального времени, который соответствует верификатору буферизации сервера PSS, когда поток пакетов протокола реального времени переносится через надежный канал передачи с постоянной задержкой. Кроме того, декодер клиента PSS должен выдавать кадры с правильной скоростью, заданной временными отметками RTP принимаемого потока пакетов.
Передача
Передача и/или сохранение кодированных изображений (и опциональное виртуальное декодирование) могут быть начаты немедленно после того, как готово первое кодированное изображение. Это изображение не обязательно является первым в выводном порядке декодера, потому что порядок декодирования и порядок вывода могут не быть одинаковыми.
Когда первое изображение видеопотока кодировано, может быть начата передача. Кодированное изображение опционально сохраняется в буфере 1.2 кодированного изображения. Передача может быть также начата на более поздней стадии, например после того как кодирована некоторая часть видеопотока.
Декодер 2 должен также выдавать декодированные изображения в правильном порядке, например, путем использования упорядочивания подсчетов порядка изображений, и поэтому нужно задавать процесс изменения порядка однозначно и в соответствии с нормами.
Депакетирование
Процесс депакетирования зависит от реализации. Поэтому следующее описание является не ограничивающим примером подходящей реализации. Другие схемы также могут использоваться. Оптимизации описанных алгоритмов вероятно возможны.
Основной концепцией, лежащей в основе этих правил депакетирования, является изменение порядка элементов уровня сетевой абстракции из порядка передачи в порядок доставки элементов уровня сетевой абстракции.
Декодирование
Далее будет описана работа приемника 8. Приемник 8 собирает все пакеты, принадлежащие изображению, размещая их в обоснованном порядке. Строгость порядка зависит от используемого профиля. Принятые пакеты сохраняются в приемном буфере 9.1 (буфер, предшествующий декодированию). Приемник 8 отбрасывает все, что непригодно, и направляет остальное в декодер 2. Пакеты агрегации обрабатываются путем выделения их полезной нагрузки в форме индивидуальных пакетов протокола реального времени, которые несут в себе элементы уровня сетевой абстракции. Эти элементы уровня сетевой абстракции обрабатываются так, как если бы они были приняты в отдельных пакетах протокола реального времени, в том порядке, в котором они были организованы в пакете агрегации.
В дальнейшем пусть N будет значением опционального параметра типа MIMO
num-reorder-VCL-NAL-units, который определяет максимальное количество элементов уровня видеокодирования уровня сетевой абстракции, которые предшествуют любому элементу уровня видеокодирования уровня сетевой абстракции в потоке пакетов в порядке доставки элементов уровня сетевой абстракции и следуют за этим элементом уровня видеокодирования уровня сетевой абстракции в порядке последовательных номеров протокола реального времени или в порядке построения пакета агрегации, содержащего этот элемент уровня видеокодирования уровня сетевой абстракции. Если параметр не присутствует, то предполагается нулевое значение.
Когда инициализирован сеанс переноса видеопотока, приемник 8 выделяет память для принимающего буфера 9.1 для сохранения по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции. Затем приемник начинает принимать видеопоток и сохраняет принятые элементы уровня видеокодирования уровня сетевой абстракции в приемном буфере, пока по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции не будут сохранены в приемном буфере 9.1.
Когда буфер приемника 9.1 содержит по меньшей мере N элементов уровня видеокодирования уровня сетевой абстракции, элементы уровня сетевой абстракции удаляются из буфера 9.1 приемника один за другим и направляются в декодер 2. Элементы уровня сетевой абстракции не обязательно удаляются из буфера 9.1 приемника в том же самом порядке, в котором они были сохранены, но в соответствии с идентификатором последовательности видеоизображений элементов уровня сетевой абстракции, как описывается ниже. Доставка пакетов в декодер 2 продолжается, пока буфер содержит менее чем N элементов уровня видеокодирования уровня сетевой абстракции, то есть N-1 элементов уровня видеокодирования уровня сетевой абстракции.
На фиг.12 изображен пример буферизации блоков передачи в буфере, предшествующем декодеру. Номера относятся к порядку декодирования, в то время как порядок блоков передачи относится к порядку их передачи (и также к порядку их приема).
В дальнейшем пусть PVSID будет идентификатором последовательности видеоизображений самого последнего элемента уровня сетевой абстракции, направленного в декодер. Все элементы уровня сетевой абстракции в пакете агрегации единого времени имеют один и тот же идентификатор последовательности видеоизображений. Порядок, в котором элементы уровня сетевой абстракции направляются в декодер, определяется следующим образом. Если самый старый номер последовательности протокола реального времени в буфере соответствует простому пакету, то элемент уровня сетевой абстракции в простом пакете является следующим элементом уровня сетевой абстракции в порядке доставки элементов уровня сетевой абстракции. Если самый старый номер последовательности протокола реального времени в буфере соответствует пакету агрегации, то порядок доставки элементов уровня сетевой абстракции восстанавливается среди элементов уровня сетевой абстракции, переданных в пакетах агрегации, в порядке последовательных номеров протокола реального времени до следующего простого пакета (не включая его). Этот набор элементов уровня сетевой абстракции в дальнейшем называется кандидатными элементами уровня сетевой абстракции. Если в буфере не находится никаких элементов уровня сетевой абстракции, переданных в простых пакетах, то все элементы уровня сетевой абстракции принадлежат к кандидатным элементам уровня сетевой абстракции.
Для каждого элемента уровня сетевой абстракции среди кандидатных элементов уровня сетевой абстракции дистанция идентификатора последовательности видеоизображений вычисляется следующим образом. Если идентификатор последовательности видеоизображений элемента уровня сетевой абстракции больше, чем PVSID, то дистанция идентификатора последовательности видеоизображений равна идентификатору последовательности видеоизображений - PVSID. В противном случае дистанция идентификатора последовательности видеоизображений равна 2^(число битов, использованных для указания идентификатора последовательности видеоизображений) - PVSID + идентификатор последовательности видеоизображений. Элементы уровня сетевой абстракции доставляются в декодер в порядке возрастания дистанции идентификатора последовательности видеоизображений. Если несколько элементов уровня сетевой абстракции имеют одинаковую дистанцию идентификатора последовательности видеоизображений, то порядок, в котором они переправляются в декодер, должен соответствовать порядку доставки элементов уровня сетевой абстракции, определенному в этой спецификации. Порядок доставки элементов уровня сетевой абстракции может быть восстановлен, как описывается ниже.
Во-первых, слои и секции данных связаны с изображениями в соответствии с их номерами кадров, временными отметками протокола реального времени и флагами первого поля: все элементы уровня сетевой абстракции, имеющие одни и те же значения номера кадра, временной отметки протокола реального времени и флага первого поля, принадлежат одному и тому же изображению. Элементы уровня сетевой абстракции дополнительной информации расширения, элементы уровня сетевой абстракции набора параметров последовательности, элементы уровня сетевой абстракции набора параметров изображения, элементы уровня сетевой абстракции конца потока и элементы уровня сетевой абстракции данных заполнения принадлежат следующему элементу уровня видеокодирования уровня сетевой абстракции в порядке передачи.
Во-вторых, порядок доставки изображений определяется на основе nal_ref_idc, номера кадра, флага первого поля и временной отметки протокола реального времени каждого изображения. Порядок доставки изображений является возрастающим порядком номеров кадров (в модульной арифметике). Если несколько изображений имеют то же самое значение номера кадра, то изображение или изображения, которые имеют nal_ref_idc, равный 0, доставляются первыми. Если несколько изображений имеют то же самое значение номера кадра и все они имеют nal_ref_idc, равный 0, то изображения доставляются в порядке возрастания временной отметки протокола реального времени. Если два изображения имеют ту же самую временную отметку протокола реального времени, то изображение, имеющее флаг первого поля, равный 1, доставляется первым. Заметим, что начальное кодированное изображение и соответствующие избыточные кодированные изображения рассматриваются здесь как одно кодированное изображение.
В-третьих, если используемый видеодекодер не поддерживает произвольное упорядочение слоев, то порядок доставки слоев и А-разделов данных является возрастающим по синтаксическому элементу first_mb_in_slice в заголовке слоя. Более того, В- и С-разделы данных немедленно следуют за соответствующим А-разделом данных в порядке доставки.
Выше были использованы термины PVSID и идентификатор последовательности видеоизображений (VSID). Термины PDON (порядковый номер декодирования предыдущего элемента уровня сетевой абстракции пакета агрегации в порядке доставки элементов уровня сетевой абстракции) и порядковый номер декодирования DON могут быть использованы вместо них следующим образом. Пусть PDON первого элемента уровня сетевой абстракции будет 0. Порядок, в котором элементы уровня сетевой абстракции переправляются в декодер, определяется следующим образом.
Если самый старый номер последовательности протокола реального времени в буфере соответствует простому пакету, то элемент уровня сетевой абстракции в простом пакете является следующим элементом уровня сетевой абстракции в порядке доставки элементов уровня сетевой абстракции. Если самый старый номер последовательности протокола реального времени в буфере соответствует пакету агрегации, то порядок доставки элементов уровня сетевой абстракции восстанавливается среди элементов уровня сетевой абстракции, переданных в пакете агрегации, в порядке последовательных номеров протокола реального времени до следующего простого пакета (не включая его). Этот набор элементов уровня сетевой абстракции в дальнейшем называется кандидатными элементами уровня сетевой абстракции. Если в буфере не находится никаких элементов уровня сетевой абстракции, переданных в простых пакетах, то все элементы уровня сетевой абстракции принадлежат к кандидатным элементам уровня сетевой абстракции.
Для каждого элемента уровня сетевой абстракции среди кандидатных элементов уровня сетевой абстракции дистанция порядкового номера декодирования вычисляется следующим образом. Если порядковый номер декодирования DON элемента уровня сетевой абстракции больше, чем PDON, то дистанция порядкового номера декодирования равна DON-PDON. В противном случае дистанция порядкового номера декодирования равна 2 ^(число бит, использованных для представления DON и PDON как целое без знака) - PDON + порядковый номер декодирования. Элементы уровня сетевой абстракции доставляются в декодер в возрастающем порядке дистанции порядкового номера декодирования.
Если несколько элементов уровня сетевой абстракции имеют ту же самую дистанцию порядкового номера декодирования, то порядок, в котором их необходимо доставлять в декодер, является следующим:
1. Элемент уровня сетевой абстракции - разделитель изображений, если имеется.
2. Элементы уровня сетевой абстракции - набор параметров последовательности, если имеются.
3. Элементы уровня сетевой абстракции - набор параметров изображения, если имеются.
4. Элементы уровня сетевой абстракции - дополнительная информация расширения, если имеются.
5. Элементы уровня сетевой абстракции исходного кодированного изображения - кодированные слои и разделы данных слоев, если имеются.
6. Элементы уровня сетевой абстракции избыточных кодированных изображений - кодированные слои и разделы данных слоев, если имеются.
7. Элементы уровня сетевой абстракции - данные заполнения, если имеются.
8. Элемент уровня сетевой абстракции - конец последовательности, если имеется.
9. Элемент уровня сетевой абстракции - конец потока, если имеется.
Если используемый видеодекодер не поддерживает произвольное упорядочение слоев, то порядок доставки слоев и А-разделов данных является возрастающим по синтаксическому элементу first_mb_in_slice в заголовке слоя. Кроме того, В- и С-разделы данных немедленно следуют за соответствующим А-разделом данных в порядке доставки.
Следующие дополнительные правила депакетирования могут быть использованы для реализации рабочего депакетизатора JVT: элементы уровня сетевой абстракции предоставляются декодеру JVT в порядке последовательных номеров протокола реального времени. Элементы уровня сетевой абстракции, переносимые в пакетах агрегации, предоставляются в их порядке в пакете агрегации. Все элементы уровня сетевой абстракции пакета агрегации обрабатываются до обработки следующего пакета протокола реального времени.
Интеллектуальные приемники протокола реального времени (например, шлюзы) могут идентифицировать потерянные А-разделы данных. Если обнаружена потеря А-раздела данных, то шлюз может решить не посылать В-разделы данных и С-разделы данных, так как их информация бесполезна для декодера JVT. Таким способом сетевой элемент может сократить сетевую нагрузку путем исключения бесполезных пакетов, без анализа комплексного потока битов.
Интеллектуальные приемники могут исключать все пакеты, которые имеют опорные идентификаторы уровня сетевой абстракции, равные 0. Однако они должны обрабатывать эти пакеты, если это возможно, потому что восприятие пользователя может пострадать, если пакеты исключены.
В-секция данных DPB 2.1 содержит места памяти для хранения нескольких изображений. Эти места также называются в этом описании местами хранения кадров. Декодер 2 декодирует принятые изображения в правильном порядке. Для этого декодер проверяет информацию идентификатора последовательности видеоизображений для принятых изображений. Если кодер произвольным образом выбрал идентификатор последовательности видеоизображений для каждой группы изображений, то декодер декодирует изображения из группы изображений в том порядке, в котором они приняты. Если кодер определил для каждой группы изображений идентификатор последовательности видеоизображений путем использования схемы нумерации с повышением (или с понижением), то декодер декодирует группы изображений в порядке идентификаторов последовательности видеоизображений. Другими словами, группа изображений, имеющая наименьший (или наибольший) идентификатор последовательности видеоизображений, декодируется первой.
Настоящее изобретение может быть применено во многих видах систем и устройств. Устройство передачи 6, включая кодер 1 и опциональный гипотетический опорный декодер 5, предпочтительно также включает передатчик 7, чтобы передавать кодированные изображения по передающему каналу 4. Приемное устройство 8 включает приемник 9, чтобы принимать кодированные изображения, декодер 2 и устройство отображения 10, на котором могут быть отображены декодированные изображения. Передающим каналом может быть, например, наземный коммуникационный канал и/или беспроводной коммуникационный канал. Передающее устройство и приемное устройство включают также один или более процессоров 1.2, 2.2, которые могут выполнять необходимые операции для управления процессом кодирования/декодирования видеопотока в соответствии с изобретением. Поэтому способ в соответствии с настоящим изобретением может быть в основном реализован как выполняемые машиной операции обработки. Буферизация изображений может быть реализована в памяти 1.3, 2.3 устройств. Программный код 1.4 кодера может быть сохранен в памяти 1.3. Соответственно, программный код 2.4 декодера может быть сохранен в памяти 2.3.
Очевидно, что гипотетический опорный декодер 5 может быть размещен после кодера 1, так что гипотетический опорный декодер реорганизует кодированные изображения, если это необходимо, и может гарантировать, что буфер, предшествующий декодированию, приемника 8 не переполнится.
Настоящее изобретение может быть реализовано в верификаторе буферизации, который может быть частью гипотетического опорного декодера 5 или может быть отдельным от него.
Класс H04L13/08 устройства для промежуточного накопления
группирование кадров изображения на видеокодировании - патент 2395173 (20.07.2010) | |
способ кодирования изображений - патент 2375839 (10.12.2009) |
Класс H04N7/26 с использованием уменьшения ширины полосы частот
Класс H04L29/06 отличающиеся процедурой регистрации и коммутации сообщений