Данная заявка испрашивает приоритет предварительной заявки США №60/830891, поданной 13 июля 2006 года, предварительной заявки США №60/866999, поданной 22 ноября 2006 года, и предварительной заявки США №60/917542, поданной 11 мая 2007 года, содержимое каждой из которых полностью включено в данный документ по ссылке.
Область техники, к которой относится изобретение
Данное раскрытие относится к видеокодированию, и более конкретно к масштабируемому кодированию цифрового видео.
Уровень техники
Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, устройства беспроводной связи, персональные цифровые ассистенты (PDA), портативные компьютеры, настольные компьютеры, цифровые камеры, цифровые записывающие устройства, сотовые или спутниковые радиотелефоны и т.п. Устройства цифрового видео позволяют предоставлять значительные усовершенствования в сравнении с традиционными аналоговыми видеосистемами за счет эффективного создания, модификации, передачи, хранения, записи и воспроизведения движущихся видеопоследовательностей.
Масштабируемость с высокой степенью детализации (FGS), в общем, относится к возможности произвольно отсекать поток битов видео, чтобы достигать постепенного снижения качества видео в пределах заданного диапазона скоростей передачи битов. FGS-кодированный поток битов видео включает в себя базовый слой определенного качества и один или более улучшающих слоев, которые связаны с базовым слоем. Улучшающие слои включают в себя дополнительные данные для того, чтобы повышать качество базового слоя. По мере того как все больше из потока битов FGS принимается и декодируется через один или более улучшающих слоев, качество декодированного видео повышается.
Раскрытие изобретения
В общем, изобретение направлено на методики FGS-видеокодирования, которые используют выровненные с циклом фрагменты (CAF). Методики FGS-видеокодирования позволяют осуществлять основанное на циклах кодирование коэффициентов блоков FGS-видеоданных и синтаксических элементов и инкапсулировать результирующие циклы кодирования в фрагментах для передачи через сетевые передающие модули, такие как модули уровня абстрагирования от сети (NAL). В соответствии с данным раскрытием фрагменты могут быть выровненными с циклом с тем, чтобы начало каждого из фрагментов фактически совпадало с началом одного из циклов. Таким образом, циклы кодирования могут быть легко доступны через отдельные фрагменты.
Каждый из циклов может представлять, по меньшей мере, часть зигзагообразного порядка сканирования одного или более блоков коэффициентов преобразования. По меньшей мере, некоторые из циклов могут охватывать коэффициенты кодирования, ассоциативно связанные с множеством блоков. Блоки FGS-видеоданных могут формировать часть FGS-серии последовательных макроблоков видеоданных. В некоторых аспектах FGS-серией последовательных макроблоков может быть серия последовательных макроблоков с постепенным уточнением (PR), хотя изобретение не ограничено в этом отношении. По меньшей мере, некоторые из циклов могут контролироваться с помощью команды векторного режима, чтобы сканировать для предварительно определенной позиции сканирования в рамках каждого из блоков перед перемещением к другому одному из блоков. Таким образом, число циклов, требуемое для того, чтобы обходить блоки, может быть уменьшено, приводя к снижению числа фрагментов и снижению объема служебной информации.
Фрагменты могут быть энтропийно кодированы независимо друг от друга с помощью отдельных контекстов кодирования с тем, чтобы несколько фрагментов могли быть одновременно декодированы. Энтропийное кодирование, используемое для каждого из фрагментов, может быть сброшено до энтропийного кодирования следующего фрагмента с тем, чтобы каждый из фрагментов энтропийно кодировался независимо от других фрагментов. Например, энтропийный кодер может быть очищен, и контексты кодирования, используемые посредством энтропийного кодера, могут быть сброшены после того, как каждый из фрагментов энтропийно кодирован. Независимое энтропийное кодирование фрагментов может обеспечивать параллельное декодирование и независимую обработку различных фрагментов и циклов в рамках фрагментов с тем, чтобы несколько фрагментов могли декодироваться одновременно при необходимости.
В одном аспекте изобретение предоставляет способ кодирования видео, содержащий кодирование блоков видеоданных с масштабируемостью с высокой степенью детализации (FGS) в циклах и инкапсуляцию циклов во множестве фрагментов так, чтобы начало каждого из фрагментов практически совпадало с началом одного из циклов.
В одном аспекте изобретение предоставляет видеокодер, содержащий модуль основанного на циклах кодирования, который кодирует блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS) в циклах, и модуль фрагментации, который инкапсулирует циклы во множество фрагментов так, чтобы начало каждого из фрагментов практически совпадало с началом одного из циклов.
В дополнительном аспекте изобретение предоставляет способ декодирования видео, содержащий прием фрагментов, включающих в себя циклы кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), и декодирование, по меньшей мере, части, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов практически совпадает с началом одного из циклов.
В дополнительном аспекте изобретение предоставляет видеодекодер, содержащий модуль основанного на циклах декодирования, который принимает фрагменты, включающие в себя циклы кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), и декодирует, по меньшей мере, части, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов практически совпадает с началом одного из циклов.
Методики, описанные в данном изобретении, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если реализованы в программном обеспечении, программное обеспечение может приводиться в исполнение в одном или более процессоров, таких как микропроцессор или процессор цифровых сигналов (DSP). Программное обеспечение, которое приводит в исполнение методики, может быть первоначально сохранено в машиночитаемом носителе и загружено и приведено в исполнение в процессоре. Соответственно, данное изобретение также предполагает машиночитаемый носитель, содержащий инструкции, чтобы выполнять методики, описанные в данном изобретении.
Подробности одного или более вариантов осуществления данного изобретения изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества изобретения должны стать очевидными из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг.1 - это блок-схема, иллюстрирующая систему кодирования и декодирования видео.
Фиг.2 - это схема, иллюстрирующая многослойное FGS-кодирование потока битов видео.
Фиг.3 - это схема, иллюстрирующая зигзагообразное сканирование блочных коэффициентов для FGS-кодирования видеокадров.
Фиг.4 - это схема, иллюстрирующая пример основанного на циклах кодирования коэффициентов в FGS-серии последовательных макроблоков для видеоблоков, размещающихся в зигзагообразном порядке сканирования.
Фиг.5 - это схема, иллюстрирующая пример основанного на циклах кодирования коэффициентов в FGS-серии последовательных макроблоков для видеоблоков, размещающихся в порядке передачи.
Фиг.6 - это схема, иллюстрирующая инкапсуляцию циклов кодирования в обычных фрагментах для передачи через модули уровня абстрагирования от сети (NAL).
Фиг.7 - это схема, иллюстрирующая инкапсуляцию циклов кодирования в выровненных с циклом фрагментах (CAF) для передачи через модули уровня абстрагирования от сети (NAL).
Фиг.8 - это блок-схема, иллюстрирующая кодер FGS-серий последовательных макроблоков, который инкапсулирует циклы кодирования в CAF.
Фиг.9 - это блок-схема, иллюстрирующая декодер FGS-серий последовательных макроблоков, который декодирует циклы кодирования, инкапсулированные в CAF.
Фиг.10 - это блок-схема последовательности операций способа, иллюстрирующая инкапсуляцию циклов кодирования в CAF.
Фиг.11 - это блок-схема последовательности операций способа, подробнее иллюстрирующая инкапсуляцию циклов кодирования в CAF.
Фиг.12 - это блок-схема последовательности операций способа, иллюстрирующая декодирование циклов в CAF.
Фиг.13 - это блок-схема последовательности операций способа, подробнее иллюстрирующая декодирование циклов в CAF.
Фиг.14 - это схема, иллюстрирующая влияние ошибки по пакетам для обычных фрагментов и CAF.
Осуществление изобретения
В общем, изобретение направлено на методики FGS-видеокодирования, которые используют выровненные с циклом фрагменты (CAF). Методики FGS-видеокодирования могут выполнять основанное на циклах кодирование коэффициентов блоков FGS-видеоданных и синтаксических элементов и инкапсулировать результирующие циклы кодирования в фрагментах для передачи через сетевые передающие модули, такие как модули уровня абстрагирования от сети (NAL). В соответствии с данным изобретением фрагменты могут быть выровненными с циклом с тем, чтобы начало каждого из фрагментов практически совпадало с началом одного из циклов. Таким образом, циклы кодирования могут быть легко доступны через отдельные фрагменты.
Каждый из циклов может представлять, по меньшей мере, часть зигзагообразного порядка сканирования одного или более блоков коэффициентов преобразования. По меньшей мере, некоторые из циклов могут охватывать коэффициенты кодирования, ассоциативно связанные с множеством блоков. Блоки FGS-видеоданных могут формировать часть FGS-серии последовательных макроблоков видеоданных. В некоторых аспектах FGS-серией последовательных макроблоков может быть серия последовательных макроблоков с постепенным уточнением (PR), хотя методики, описанные в данном изобретении, не обязательно ограничены PR-сериями последовательных макроблоков. По меньшей мере, некоторые из циклов могут контролироваться с помощью команды векторного режима, чтобы сканировать для предварительно определенной позиции сканирования в рамках каждого из блока перед перемещением к другому одному из блоков. Таким образом, число циклов, требуемое для того, чтобы обходить блоки, может быть уменьшено, приводя к снижению числа фрагментов и снижению объема служебной информации.
Фрагменты могут энтропийно кодироваться таким образом, что фрагмент может декодироваться без выполнения декодирования других фрагментов. В некоторых случаях несколько фрагментов могут декодироваться одновременно при необходимости. В качестве примера, энтропийное кодирование, используемое для каждого из фрагментов, может быть сброшено до энтропийного кодирования следующего фрагмента с тем, чтобы каждый из фрагментов имел контексты энтропийного кодирования, которые являются независимыми от контекстов энтропийного кодирования других фрагментов. Например, энтропийный кодер может быть очищен, и контексты кодирования, используемые посредством энтропийного кодера, могут быть сброшены после того, как каждый из фрагментов энтропийно кодирован. Независимое энтропийное кодирование фрагментов может обеспечивать параллельное декодирование и обработку различных фрагментов и циклов в рамках фрагментов. Соответственно, по меньшей мере, части, по меньшей мере, некоторых фрагментов могут декодироваться одновременно, к примеру, в одно время или без ожидания завершения декодирования других фрагментов.
Некоторые фрагменты могут не быть полностью независимыми друг от друга. Например, если блок A полностью декодирован в фрагменте 0, не должно быть информации, которая должна быть декодирована для блока A в других фрагментах. В этом случае, декодирование информации для блока A в последующем фрагменте 1 может зависеть от результата декодирования фрагмента 0 для того же блока. Тем не менее, другие контексты кодирования могут сохраняться независимыми. Например, декодирование фрагмента 1 не изменяется в зависимости от того, декодирован ли фрагмент 0 полностью до того, как декодирован фрагмент 1, или фрагмент 0 и фрагмент 1 декодированы одновременно. Соответственно, по меньшей мере, некоторые фрагменты могут быть декодированы одновременно, по меньшей мере, с частями других фрагментов, так что не обязательно ждать завершения декодирования других фрагментов. Вместо этого, как описано выше, по меньшей мере, некоторые фрагменты могут декодироваться в одно время параллельно с декодированием, по меньшей мере, части других фрагментов, к примеру, без ожидания завершения декодирования других фрагментов.
Фиг.1 - это блок-схема, иллюстрирующая систему 10 кодирования и декодирования видео. Как показано на Фиг. 1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 14 через канал 16 передачи. Исходное устройство 12 может включать в себя устройство 18 источника видео и видеокодер 20. Целевое устройство 14 может включать в себя видеодекодер 22 и устройство 24 отображения видео. Каналом 16 передачи может быть проводная или беспроводная среда связи либо любая комбинация проводных и беспроводных сред. Исходное устройство 12 формирует видео для передачи в целевое устройство 14. В некоторых случаях, тем не менее, устройства 12, 14 могут работать практически симметричным способом. Например, каждое из устройств 12, 14 может включать в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, широковещательной передачи видео или видеотелефонии.
Видеоисточник 18 может включать в себя устройство видеозахвата, такое как одна или более видеокамер, видеоархив, содержащий ранее захваченное видео, или передачу видео вживую от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию живого видео и сформированного компьютером видео. В любом случае захваченное, предварительно захваченное или сформированное компьютером видео может быть кодировано посредством видеокодера 20 для передачи из устройства 12 источника видео в устройство 14 назначения видео через канал 16 передачи. Дисплейное устройство 24 может включать в себя любое из множества дисплейных устройств, к примеру, жидкокристаллический дисплей (LCD), плазменный дисплей или дисплей на органических светодиодах (OLED).
Видеокодер 20 и видеодекодер 26 могут быть выполнены с возможностью поддерживать видеокодирование с масштабируемостью отношения "сигнал-шум" (SNR) с высокой степенью детализации (FGS). Например, кодер 20 и декодер 26 могут поддерживать различные степени масштабируемости для поддержки кодирования, передачи и декодирования масштабируемых улучшающих слоев в FGS-формате. Для масштабируемого кодирования базовый слой переносит видеоданные с минимальным уровнем качества. Один или более улучшающих слоев переносят дополнительный поток битов, чтобы поддерживать уровни более высокого качества. Следовательно, информация улучшающего слоя может быть предусмотрена с тем, чтобы поддерживать масштабируемость отношения "сигнал-шум" (SNR). Помимо этого, в некоторых случаях дополнительный поток битов, переносимый посредством одного или более улучшающих слоев, может поддерживать улучшенную пространственную масштабируемость и/или улучшенную временную масштабируемость.
Видеокодер 20 и видеодекодер 26 могут работать согласно такому стандарту видеосжатия, как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4 улучшенное видеокодирование (AVC). Более конкретно, видеокодер 20 и видеодекодер 26 могут быть выполнены с возможностью реализовывать дополнения таких стандартов для масштабируемого видеокодирования (SVC). Хотя не показано на Фиг. 1, в некоторых аспектах видеокодер 20 и видеодекодер 22 могут быть интегрированы с аудио-кодером и декодером соответственно, и включать в себя соответствующие модули MUX-DEMUX либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Стандарт H.264/MPEG-4 (AVC) сформулирован посредством Экспертной группы в области кодирования видео (VCEG) ITU-T совместно с Экспертной группой по киноизображению (MPEG) ISO/IEC как продукт коллективного партнерского проекта, известного как Объединенная группа по видеостандартам (JVT). В некоторых аспектах методики, описанные в данном изобретении, могут быть применены для того, чтобы реализовать дополнения по масштабируемости видео с низкой сложностью для устройств, которые в иных отношениях соответствуют стандарту H.264. Например, дополнения масштабируемости видео могут представлять потенциальные модификации в будущие версии или дополнения стандарта H.264 или других стандартов. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced video coding for generic audiovisual services" посредством Исследовательской группы ITU-T, и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC.
Объединенная группа по видеостандартам (JVT) продолжает работать над дополнением по масштабируемому видеокодированию (SVC) в H.264/MPEG-4 AVC. Спецификация H.264/MPEG-4AVC и развивающегося дополнения SVC приводится в форме совместного проекта (JD). Объединенная модель масштабируемого видео (JSVM), созданная посредством JVT, реализует средства для использования в масштабируемом видео, которые могут быть использованы в рамках системы 10 для различных задач кодирования, описанных в данном изобретении. Подробную информацию, касающуюся одного примера системы кодирования с масштабируемостью SNR с высокой степенью детализации (FGS), можно найти в документах Совместного проекта, к примеру, в Joint Draft 6 (SVC JD6), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien, "Joint Draft 6: Scalable Video Coding", JVT-S 201, Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG, апрель 2006 года, Женева, и в Joint Draft 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien, "Joint Draft 9 of SVC Amendment", JVT-V 201, Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG, январь 2007, Марракеш, Марокко.
Видеокодер 20 может быть выполнен с возможностью формировать FGS-серии последовательных макроблоков, к примеру, в соответствии с документами JD дополнения SVC к стандарту H.264/MPEG-4 AVC. В некоторых аспектах FGS-сериями последовательных макроблоков могут быть серии последовательных макроблоков с постепенным уточнением (PR). FGS-серия последовательных макроблоков может отсекаться почти произвольно. По мере того как видеодекодер 22 принимает и декодирует больше битов из FGS-серии последовательных макроблоков, он формирует лучшее качество видео. FGS-кодирование в JSVM спроектировано таким образом, что улучшение качества видео равномерно распределено по всему видеокадру, в отличие от концентрации только в рамках определенной пространственной области кадра. Сложность кодирования и декодирования в FGS-серии последовательных макроблоков может быть высокой в отношении требований по вычислениям и памяти. Помимо этого, процесс декодирования для FGS-серии последовательных макроблоков, как указано в документах JD, может быть комплексным.
В некоторых аспектах для широковещательной передачи видео данное изобретение предполагает применение к улучшенному видеокодированию H.264 для доставки видеоуслуг реального времени в системах наземной многоадресной передачи мобильного мультимедиа (TM3), использующих спецификацию радиоинтерфейса только прямой линии связи (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast", которая должна быть опубликована как Технический стандарт TIA-1099 ("FLO Specification"). Спецификация FLO включает в себя примеры, задающие синтаксис и семантику потока битов и процессы декодирования, подходящие для радиоинтерфейса FLO. Альтернативно, видео может передаваться в широковещательном режиме согласно другим стандартам, таким как DVB-H (цифровая широковещательная передача видео для карманных устройств), ISDB-T (комплексные службы цифровой наземной широковещательной передачи) или DMB (цифровая широковещательная передача мультимедиа). Следовательно, исходным устройством 12 может быть мобильный беспроводной терминал, такой как мобильный беспроводной радиотелефон, сервер потоковой передачи видео и сервер широковещательной передачи видео. Тем не менее, методики, описанные в данном изобретении, не ограничены каким-либо конкретным типом системы широковещательной, многоадресной передачи или передачи "точка-точка".
Видеокодер 20 и видеодекодер 22 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов, специализированных интегральных схем (ASIC), программируемых пользователем матричных БИС (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 22 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем абонентском устройстве, широковещательном устройстве, сервере и т.п. Помимо этого, устройство 12 источника видео и устройство 14 назначения видео могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усилителя для передачи и приема кодированного видео, в зависимости от необходимости, включая радиочастотные (RF) беспроводные компоненты и антенны. Тем не менее, для упрощения иллюстрации эти компоненты не показаны на Фиг. 1.
Видеопоследовательность включает в себя серии видеокадров. Видеокодер 20 оперирует с блоками пикселов в рамках отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или изменяющийся размер и могут отличаться в размере согласно заданному стандарту кодирования. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16 на 16, 8 на 8, 4 на 4 для компонентов сигнала яркости и 8×8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для позиций видеокадра, которые включают в себя более высокий уровень детальности. После прогнозирования преобразование может быть выполнено для остаточного блока 8×8 или остаточного блока 4×4 и дополнительное преобразование может быть применено к DC-коэффициентам блоков 4×4 для компонентов сигнала цветности или компонентов сигнала яркости, если используется режим прогнозирования intra_16×16.
Фиг. 2 - это схема, иллюстрирующая многослойное FGS-кодирование потока битов видео. Как показано на Фиг. 2, FGS-кодирование потока битов видео приводит к базовому слою 30 и одному или более улучшающих слоев 32A-32N (совместно слоям 32). Базовый слой 30 включает в себя серию кадров 34A-34N, которые кодируют поток битов видео с минимальным уровнем качества для данной скорости передачи битов. Каждый из улучшающих слоев 32 предоставляет дополнительную информацию по потокам передачи битов, которая может быть использована посредством декодера 26, чтобы постепенно повышать начальное качество, предоставляемое посредством базового слоя 30. Число улучшающих слоев 32, обрабатываемых посредством видеодекодера 22, зависит от числа улучшающих слоев, передаваемых посредством исходного устройства 12 и принимаемых посредством устройства 14 назначения, к примеру, данного состояния канала или других ограничений.
В общем, каждый соответствующий улучшающий слой 32A-32N или его часть, которая обрабатывается посредством декодера 22, пошагово добавляет качество видео, получаемое из базового слоя 30, в отношении SNR, в соответствии с настоящим изобретением. Улучшающие слои 32A-32N также могут быть применены для пространственной и/или временной масштабируемости. Вместо обработки каждого улучшающего слоя 32A-32N полностью как дискретного улучшающего слоя, система 10 может предоставлять возможность кодирования, передачи и обработки улучшающих слоев масштабируемости с помощью обобщенного FGS-подхода. Таким образом, SNR может быть масштабироваться с высокой степенью детализации, предлагая непрерывные улучшения качества при частичном декодировании улучшающих слоев. Улучшающие слои 32A-32N могут быть иерархическими в том смысле, что слои предлагают постепенно улучшающееся качество по мере того, как они декодируются. Декодирование всех улучшающих слоев, к примеру, создает максимальное качество, тогда как декодирование только первого улучшающего слоя создает шаговое увеличение качества относительно декодирования только базового слоя.
Фиг. 3 - это схема, иллюстрирующая зигзагообразное сканирование блочных коэффициентов в блоках 46A-46C для FGS-кодирования видеокадров. FGS-серия последовательных макроблоков, такая как PR-серия последовательных макроблоков в SVC может быть сформирована с помощью основанного на циклах кодирования вместо основанного на блоках кодирования коэффициентов преобразования. Основанное на циклах кодирование в блоках уменьшает пространственную концентрацию SNR-улучшений в видеокадре. В каждом цикле FGS-сконфигурированный видеокодер 20 кодирует самое большее один ненулевой коэффициент в блоке коэффициентов преобразования и переходит к следующему блоку. Как показано на Фиг. 3 и 4, в цикле 0 видеокодер 20 сначала кодирует флаг кодированного блока (CBF) в первом блоке 46A, т.е. блоке 0. Если блок 0 содержит ненулевые значимые коэффициенты, видеокодер 20 кодирует один или более коэффициентов из того же блока до тех пор, пока он не закончит кодирование первого значимого коэффициента в зигзагообразном порядке сканирования, проиллюстрированном на Фиг. 3. Этот процесс продолжается до тех пор, пока все блоки, к примеру, в видеокадре или части видеокадра не отсканированы. Видеокодер 20 переходит к следующему циклу кодирования, циклу 1. Если коэффициентом в позиции сканирования цикла является уточняющий коэффициент, видеокодер 20 кодирует только этот уточняющий коэффициент и перемещается к следующему блоку.
В примере по Фиг. 3 предполагается, что блоки 46A, 46B и 46C являются первыми тремя блоками в FGS-серии последовательных макроблоков улучшающего слоя видеокадра. В этом примере каждый блок 46A, 46B, 46C представляется как блок 4-на-4 коэффициентов преобразования. Блоки 46A, 46B и 46C показаны в области преобразования. Как следствие, каждое число или переменная в блоке 46A, 46B, 46C является квантованным коэффициентом, который должен быть кодирован посредством энтропийного кодирования без потерь. Коэффициент с меткой, начинающейся с буквы "S", к примеру, как указано посредством ссылки с номером 41 в блоке 46A, является ненулевым значимым коэффициентом. Поскольку этот блок 46A находится в улучшающем слое масштабируемости FGS SNR, для каждого коэффициента в блоке есть соответствующие коэффициенты в базовом слое.
Для ненулевого значимого коэффициента его значение является ненулевым, и его соответствующий коэффициент базового слоя является нулевым. Например, коэффициент S0, 1 соответствует ненулевому значимому коэффициенту в блоке 0 с индексом зигзагообразного сканирования 1. Коэффициент, помеченный как 0 - это нулевой коэффициент, и его соответствующий коэффициент базового слоя также является нулевым. Коэффициент с меткой, начинающейся с буквы "R", к примеру, как указано посредством ссылки с номером 43 в блоке 46A, является уточняющим коэффициентом с соответствующим коэффициентом базового слоя, который является ненулевым, т.е. значимым. Значение уточняющего коэффициента может быть либо нулевым, либо ненулевым. Например, коэффициент R2, 2, как указано посредством ссылки с номером 43, является уточняющим коэффициентом в блоке 2 с индексом зигзагообразного сканирования 2. При классификации коэффициентов FGS-серии последовательных макроблоков улучшающего слоя таблица значимости зачастую используется. Эта таблица указывает позиции коэффициентов, которые уже стали значимыми в базовом слое. Коэффициенты в этих позициях улучшающего слоя являются уточняющими коэффициентами.
Видеокодер 20, как описано в данном документе, может рассматриваться как предоставляющий дополнение в энтропийный кодер, используемый при кодировании базового слоя, такой как энтропийный кодер, предполагаемый посредством стандарта ITU-T H.264. В частности, блочное секционирование, преобразование и квантование, используемое посредством видеокодера 20 в улучшающем слое, аналогично этим операциям, используемым в базовом слое. Чтобы более эффективно кодировать нули, синтаксические элементы, такие как флаг кодированного блока (CBF) и конец блока (EOB), могут быть использованы. Аналогичные синтаксические элементы также используются в кодировании базового слоя. CBF отправляется один раз для каждого блока и указывает наличие ненулевого значимого коэффициента в каждом блоке. Если CBF равно 0, нет ненулевых значимых коэффициентов; в противном случае есть, по меньшей мере, один ненулевой значимый коэффициент. Флаг EOB используется для того, чтобы указать то, является ли только что кодированный ненулевой значимый коэффициент последним ненулевым значимым коэффициентом в порядке сканирования.
Одним различием между кодированием базового слоя и кодированием улучшающего слоя посредством видеокодера 20 является отделение уточняющих коэффициентов от других коэффициентов в FGS-слое и порядок кодирования. В некоторых аспектах видеокодер 20 может включать в себя отдельные модули кодирования базового слоя и кодирования улучшающего слоя. В базовом слое блок полностью кодируется до того, как кодируется следующий блок, предоставляя основанное на блоках кодирование. Тем не менее, для кодирования улучшающего слоя коэффициенты из различных блоков перемежаются друг с другом в циклах, предоставляя основанное на циклах кодирование. В каждом цикле, как описано выше, только некоторые коэффициенты из данного блока кодируются. Так же, таким образом, видеокодер 20 обеспечивает то, что улучшение качества видео является более пространственно равномерным по видеокадру после того, как поток битов отсечен.
Фиг. 4 - это схема, иллюстрирующая один пример основанного на циклах кодирования коэффициентов и синтаксических элементов в FGS-серии последовательных макроблоков для видеоблоков 46A-46C, размещающихся в зигзагообразном порядке сканирования. В некоторых аспектах данного изобретения FGS-серией последовательных макроблоков может быть PR-серия последовательных макроблоков, хотя методики, описанные в данном изобретении, не обязательно ограничены применением PR-серий последовательных макроблоков.
Фиг. 5 - это схема, иллюстрирующая основанное на циклах кодирование коэффициентов и синтаксических элементов в FGS-серии последовательных макроблоков для видеоблоков, размещающихся в порядке передачи. Фиг. 5 представляет перекомпоновку Фиг. 4 так, что синтаксические элементы и коэффициенты, кодируемые в циклах, размещаются в одной строке. Каждый коэффициент представляется на Фиг. 4 и 5 посредством прямоугольника. В примере по Фиг. 4 и 5, самое большее, один ненулевой коэффициент кодируется для данного блока в одном цикле, и предполагается, что номер цикла является таким же, что и индекс зигзагообразного сканирования. В других реализациях чертежей может быть необязательным то, что ненулевой коэффициент должен быть кодирован в цикле. Помимо этого, уточняющие коэффициенты могут обрабатываться таким же образом, что и значимые коэффициенты.
Как показано на Фиг. 4, для цикла 0, CBF (CBF0, CBF1, CBF2) отправляется один раз для каждого блока 46A, 46B, 46B и указывает то, что имеется ненулевой значимый коэффициент в блоке. Например, CBF0/1 соответствует первому блоку 0 и указывает то, что имеется ненулевой значимый коэффициент в блоке. Помимо этого, нулевой коэффициент 0 и ненулевой коэффициент S0, 1 из блока 0, который соответствует ненулевому значимому коэффициенту в блоке 0 с индексом зигзагообразного сканирования 1, отправляются в цикле 0. CBF 1/0, тем не менее, соответствует второму блоку (блоку 1) и указывает то, что нет ненулевых значимых коэффициентов в блоке. Следовательно, отсутствуют коэффициенты, отправленные для блока 1 в последующих циклах. Цикл 0 дополнительно включает в себя CBF2/1, указывающий то, что блок 2 включает в себя ненулевой значимый коэффициент, S2, 0, и сам коэффициент S2, 0.
Цикл 1 включает в себя флаг EOB (EOB2/0) для блока 2, указывающий то, только что кодированный ненулевой значимый коэффициент в цикле 0, т.е. S2, 0, не является последним ненулевым значимым коэффициентом в порядке сканирования. В оставшихся циклах кодирование блоков продолжается так, чтобы следовать зигзагообразному порядку сканирования, и включает в себя такие синтаксические элементы, как CBF и EOB, при необходимости. Процесс продолжается для циклов 2-15 в зигзагообразном порядке сканирования, где каждый цикл соответствует одному событию в виде стрелки на блок-схеме Фиг. 4. Пример по Фиг. 3, 4 и 5 относится к первым трем блокам 4×4 в улучшающем слое видеокадра для целей иллюстрации. Тем не менее, общая схема, проиллюстрированная на Фиг. 4-6, может быть применима к блокам больших размеров, а также большему числу блоков, охватывающих видеокадр или часть видеокадра.
Сложность кодирования и декодирования в FGS-серии последовательных макроблоков может быть высокой в отношении требований по вычислениям и памяти. Помимо этого, процесс декодирования для FGS-серии последовательных макроблоков, как указано в документах JD, может быть комплексным. Например, FGS-кодирование FGS-серии последовательных макроблоков может требовать большого объема памяти, чтобы сохранять промежуточную информацию по состоянию кодирования, такую как позиция последнего коэффициента, кодированного в каждом блоке в предыдущем цикле кодирования. Помимо этого, FGS-кодирование может требовать большого количества обращений к памяти, поскольку видеокодер 20 часто перескакивает через блоки в ходе основанного на циклах процесса кодирования. Сохранение коэффициентов в подполосном порядке может быть эффективным. В этом случае коэффициенты одной полосы частот могут быть сохранены рядом. Тем не менее, сохранение коэффициентов в подполосном порядке может быть несовместимым с блочным преобразованием, которое может осуществлять доступ к различным частотам.
Если к потокам битов из различных циклов можно напрямую осуществлять доступ, блок может быть полностью декодирован и затем обработан способом, аналогичным основанной на блоках обработке в базовом слое. Следовательно, способность легко осуществлять доступ к потокам битов из различных циклов может помогать в уменьшении сложности процесса кодирования FGS-серий последовательных макроблоков. В соответствии с примерным аспектом данного изобретения видеокодер 20 может быть выполнен с возможностью выполнять основанное на циклах кодирование коэффициентов блоков FGS-видеоданных и инкапсулировать результирующие циклы кодирования в фрагменты для передачи через сетевые передающие модули, такие как модули уровня абстрагирования от сети (NAL). Чтобы обеспечить простой доступ к потокам битов из различных циклов, фрагменты могут быть выровненными с циклом с тем, чтобы начало каждого из фрагментов практически совпадало с началом одного из циклов. Таким образом, потоки битов, ассоциативно связанные с отдельными циклами кодирования, могут быть легко доступны через фрагменты.
Совместный проект дополнения SVC к стандарту H.264/MPEG-4 AVC задает единицу данных, называемую "фрагмент", которая содержит частичный FGS-слой. Фрагменты могут быть использованы в качестве способа для того, чтобы инкапсулировать выгружаемый FGS-поток. На стороне кодирования, например, видеокодер 20 может активировать обычный процесс FGS-кодирования, чтобы сформировать поток битов одного FGS-слоя. После того как поток битов FGS-слоя сформирован, видеокодер 20 может применять фрагментацию потока битов. На стороне декодирования декодер 22 конкатенирует соседние фрагменты и декодирует объединенный поток битов, как если бы поток битов был не фрагментирован. Следовательно, обработка одного фрагмента обычно требует завершения обработки предыдущего фрагмента. Другими словами, обычные фрагменты не могут быть декодированы одновременно. Вместо этого они должны быть конкатенированы перед декодированием.
В соответствии с данным изобретением фрагменты могут быть модифицированы и использованы для того, чтобы предоставлять прямой доступ к частям потока битов, ассоциативно связанным с конкретными циклами FGS-кодирования. В частности, вместо произвольной инкапсуляции кодированного потока битов в серию фрагментов, видеокодер 20 управляет фрагментацией таким образом, чтобы фрагменты выравнивались с циклами FGS-кодирования. Выравнивание, в общем, может относиться к формулированию фрагмента таким образом, чтобы начало фрагмента практически совпадало с началом одного из циклов. Таким образом, к началу потока битов, ассоциативно связанного с циклом, доступ может осуществляться посредством идентификации начала фрагмента. Фрагмент может включать в себя заголовок, который идет перед полезной нагрузкой фрагмента. Заголовок может переносить административную информацию, которая идентифицирует фрагмент. Полезная нагрузка фрагмента, в общем, может означать часть содержимого фрагмента, которая может переносить данные цикла кодирования, и перед ней может идти информация заголовка. В соответствии с различными аспектами данного изобретения циклы могут быть инкапсулированы во множестве фрагментов с тем, чтобы начало каждого из фрагментов практически совпадало с началом одного из циклов. Следовательно, практически совпадение может означать инкапсуляцию, так чтобы начало полезной нагрузкой каждого из фрагментов, к примеру, следующей после информации заголовка, практически совпадало с началом одного из циклов. В общем, относительно или безотносительно информации заголовка, начало каждого фрагмента может быть практически выровнено с началом цикла с тем, чтобы циклы кодирования могли быть легко доступны через соответствующие фрагменты, обеспечивая одновременное декодирование, по меньшей мере, частей, по меньшей мере, некоторых фрагментов.
Выровненный с циклом фрагмент (CAP) отличается от обычного фрагмента, в котором начало фрагмента может соответствовать любой неизвестной точке в потоке битов. Наоборот, CAF выровнен с циклом так, что к началу потока битов можно осуществлять доступ практически в начале фрагмента. Помимо этого, в некоторых аспектах видеокодер 20 может управлять фрагментацией таким образом, чтобы каждый цикл содержался в одном фрагменте, возможно, с другими циклами, вместо распределения по частям следующих друг за другом фрагментов. Формирование CAF позволяет уменьшить сложность обработки и обеспечить параллельную обработку следующих друг за другом фрагментов вместо последовательной обработки следующих друг за другом фрагментов.
Чтобы сделать возможным декодировать выровненный с циклом фрагмент (CAF) без ожидания того, чтобы декодирование предыдущего фрагмента завершилось, видеокодер 20 может кодировать каждый CAF без использования информации, которая доступна только после того, как предыдущий фрагмент декодирован. Например, после того как первый фрагмент завершен, видеокодер 20 может очистить энтропийный кодер, используемый для того, чтобы энтропийно кодировать фрагмент. Помимо этого, видеокодер 20 может сбросить контексты кодирования, ассоциативно связанные с энтропийным кодированием, до того как следующий фрагмент кодирован. Посредством сброса контекстов кодирования и очистки энтропийного декодера видеокодер 20 формирует CAF, которые могут быть легко доступны и декодированы без ожидания декодирования других фрагментов, обеспечивая параллельную одновременную обработку CAF. Например, декодирование может быть одновременным в том смысле, что декодирование одного CAF может выполняться в одно время с декодированием, по меньшей мере, части другого CAF. Таким образом, CAF может быть декодируем без ожидания завершения декодирования предыдущего фрагмента. Это отличается от обычных фрагментов, которые обычно должны быть перекомпонованы перед декодированием.
Видеокодер 20 может реализовать энтропийное кодирование как контекстно-адаптивное кодирование переменной длины (CAVLC) или контекстно-адаптивное двоичное адаптивное кодирование (CABAC). В сравнении с обычным фрагментом, CAF может представлять определенную дополнительную служебную информацию вследствие операции очистки и сброса контекстов кодирования, ассоциативно связанных с энтропийным кодированием. На CAVLC влияет только операция очистки, что может приводить в среднем примерно к половине байта дополнительной служебной информации. Для CABAC, CAF представляют дополнительный штраф вследствие сброса контекстов кодирования. Служебная информация, требуемая посредством дополнительных заголовков NAL и заголовков фрагментов, в общем, является одинаковой для обычных фрагментов и CAF.
Если каждый цикл кодируется как CAF, размер фрагмента может быстро уменьшаться с увеличением индекса цикла, поскольку длина каждого цикла стремится уменьшаться. По этой причине может быть желательным сгруппировать некоторые циклы вместе, чтобы уменьшить общий объем служебной информации. В частности, если некоторые циклы сгруппированы вместе, служебная информация, ассоциативно связанная с фрагментов, может совместно использоваться между циклами. Если циклы не сгруппированы вместе, множество циклов должно переноситься в собственных фрагментах, создавая служебную информацию фрагмента для каждого цикла. В сущности, группировка циклов с общим фрагментом может быть осуществлена, например, с помощью векторного режима, к примеру, как недавно указано в Совместном проекте 6 (JD6) JVT.
Векторный режим введен в JD6 для того, чтобы уменьшить сложность FGS-кодера. В векторном режиме FGS-кодер должен обрабатывать блок в данном цикле до тех пор, пока он не достигнет предварительно определенной позиции сканирования, прежде чем он перемещается к следующему блоку. Другими словами, вместо перемещения к следующему блоку после кодирования первого значимого коэффициента, цикл продолжается в пределах блока вплоть до точки, когда предварительно определенная позиция сканирования достигнута. При векторном режиме глубина сканирования данного цикла в блоке повышается. Следовательно, среднее количество раз, которое FGS-кодер сканирует блок, может быть уменьшено. Векторный режим может задавать длину вектора, которая определяет число коэффициентов, которые должны быть просканированы в данном цикле. Если длина вектора равна 1, векторный режим не имеет эффекта, и FGS-кодер работает обычным образом. Если длина вектора равна числу коэффициентов в блоке, FGS-кодер вырождается в обычный основанный на блоках кодер.
Векторный режим не изменяет тот факт, что FGS-кодер обращается к блоку несколько раз. Тем не менее, он позволяет уменьшить сложность основанного на циклах кодирования в определенной степени за счет уменьшения количества раз, которое FGS-кодер обращается к блоку, и уменьшения числа циклов кодирования. Когда используется с выровненными с циклом фрагментами, модифицированный векторный режим может быть использован для того, чтобы формировать фрагменты аналогичных размеров, уменьшая объем служебной информации фрагментации. Вместо множества фрагментов с очень небольшими размерами циклов векторный режим может быть использован для того, чтобы уменьшить число циклов и увеличить глубину каждого цикла с тем, чтобы число фрагментов, требуемых для того, чтобы приспособиться к циклам, уменьшилось. При уменьшении числа фрагментов имеется меньшее число экземпляров служебной информации фрагментов, приводя к повышению эффективности.
В векторном режиме, описанном в JD6, длина векторов задается в наборе параметров последовательности. В модифицированном векторном режиме, как описано в данном изобретении, длина вектора может быть указана в заголовке серии последовательных макроблоков вместо набора параметров последовательности. Используя длину вектора, видеокодер 22 повышает глубину сканирования отдельных циклов, чтобы кодировать больше коэффициентов в данном цикле, приводя к меньшему числу фрагментов. В качестве примера, конкретная длина вектора может быть фиксированной или динамически корректируемой на основе содержимого, состояния канала, нагрузки по обработке или других факторов. Длина вектора может быть одинаковой для всех циклов, отличающейся для выбранных циклов или изменяться постепенно от первого цикла к последнему циклу.
Фиг. 6 - это схема, иллюстрирующая инкапсуляцию циклов в обычных фрагментах для передачи через модули уровня абстрагирования от сети (NAL). Как показано на Фиг. 6, поток битов, переносимый посредством следующих друг за другом циклов 50A-50C, делится между следующими друг за другом фрагментами 52A-52C безотносительно границ циклов. Как результат, каждый данный фрагмент 52 содержит часть потока битов, ассоциативно связанную с одним или более циклов 50, и не предоставляет индикатора начала потока битов для данного цикла. Наоборот, различные части данного цикла 50 могут быть распределены по границам 56A-56C следующих друг за другом фрагментов 52. Помимо этого, каждый фрагмент 52 может начинаться в неизвестной, как правило, произвольной точке в потоке битов цикла 50 с тем, чтобы к циклам нельзя было осуществлять доступ напрямую через фрагмент.
При потоке битов цикла 50, охватывающем следующие друг за другом фрагменты 52, необходимо обрабатывать следующие друг за другом фрагменты зависимым способом. В частности, произвольные части потока битов, переносимые посредством следующих друг за другом фрагментов 52, конкатенируются посредством видеокодера 22, чтобы воспроизвести поток битов циклов. Если первый и второй фрагменты 52A и 52B переносят части CYCLE 1 (50A), например, оба фрагмента обрабатываются и конкатенируются, чтобы воспроизвести поток битов CYCLE 1. Чтобы поддерживать конкатенацию, фрагмент 52A (FRAG 1) должен быть декодирован и обработан (54A) до того, как следующий фрагмент 52B (FRAG 2) может быть декодирован и обработан.
Следовательно, обычный фрагмент 52B не может быть одновременно декодирован и обработан. Помимо этого, более поздний фрагмент 52B обычно базируется на энтропийном кодировании более ранних фрагментов 52А. Следовательно, фрагмент 52В должен дожидаться, чтобы декодирование и обработка предыдущего фрагмента 52А завершилась. Следовательно, компоновка операций 54А, 54В, 54С обработки на Фиг.6 представляет последовательное зависимое декодирование и обработку последующих фрагментов 52 на основе завершенной обработки предыдущих фрагментов. Последовательная обработка фрагментов 52, как показано в примере по Фиг.6, может представлять значительную вычислительную сложность в отношении требований по вычислениям и памяти.
Фиг.7 - это схема, иллюстрирующая инкапсуляцию циклов в выровненных с циклом фрагментах (CAF) в соответствии с аспектом данного изобретения для передачи через модули уровня абстрагирования от сети (NAL). В примере на Фиг.7 видеокодер 20 управляет фрагментацией таким образом, чтобы каждый фрагмент являлся выровненным с циклом фрагментом 58А-58С, который начинается с началом цикла 50А-50Е. Помимо этого, в качестве варианта, циклы 50 в примере по Фиг.7 могут быть сформулированы с помощью векторного режима, так чтобы длина, по меньшей мере, некоторых из циклов увеличивалась, уменьшая общее число фрагментов и ассоциативно связанную служебную информацию, требуемую для того, чтобы переносить циклы.
В общем, каждый CAF 58 переносит цикл 50, который начинается практически с началом CAF. Например, видеокодер 20 может инкапсулировать циклы во множестве CAF 58 с тем, чтобы начало каждого из фрагментов, к примеру, начало полезной нагрузки каждого из фрагментов, практически совпадало с началом одного из циклов. В некоторых случаях началу полезной нагрузки может предшествовать заголовок, который потребляет пространство в рамках фрагмента 58. Посредством практически выравнивания начала цикла 50 с началом фрагмента 58 начало потока битов, ассоциативно связанного с циклом 50, может быть легко определено, предоставляя возможность осуществления доступа к отдельным циклам. Поскольку каждый CAF 58 переносит цикл 50, к которому можно осуществлять доступ напрямую, нет необходимости в конкатенации следующих друг за другом фрагментов, чтобы воспроизвести поток битов, ассоциативно связанный с циклом 50. Наоборот, видеодекодер 22 может быть выполнен с возможностью одновременно декодировать и обрабатывать фрагменты 58, к примеру, параллельно, как представлено посредством операций 62А-62С процесса. Также фрагмент 58 может декодироваться и обрабатываться в одно время параллельно, по меньшей мере, частью декодирования и обработки одного или более других фрагментов. Тем не менее, некоторые фрагменты 58 по-прежнему могут декодироваться и обрабатываться последовательно.
Чтобы сделать CAF декодируемым без ожидания того, чтобы предыдущий фрагмент был завершен, видеокодер 20 может кодировать CAF без использования информации, которая доступна только после того, как предыдущий фрагмент декодирован. Соответственно, помимо выравнивания начала цикла с началом фрагмента, видеокодер 20 может сбросить контексты кодирования, ассоциативно связанные с энтропийным кодированием между последовательно кодированными фрагментами. В частности, после того как энтропийное кодирование для первого фрагмента завершено, видеокодер 20 очищает энтропийный кодер CAVLC или CABAC и сбрасывает контексты кодирования. Таким образом, выровненный с циклом фрагмент не базируется на какой-либо информации кодирования из ранее кодированного фрагмента и может быть декодирован и обработан параллельно с другими фрагментами.
Фиг. 8 - это блок-схема, иллюстрирующая кодер 64 FGS-серий последовательных макроблоков, который инкапсулирует циклы в выровненные с циклом фрагменты. Кодер 64 FGS-серий последовательных макроблоков может формировать часть цифрового видеокодера, такого как видеокодер 20 по Фиг. 1. Как показано на Фиг. 8, кодер 64 FGS-серий последовательных макроблоков может включать в себя модуль 66 преобразования, модуль 68 квантования, модуль 70 основанного на циклах кодирования, модуль 72 выровненной с циклом фрагментации и модуль 74 энтропийного кодирования. Модуль 66 преобразования применяет пространственное преобразование к остатку исходного видео FGS-серии последовательных макроблоков, сформированной посредством видеокодера 22, чтобы сформировать блоки коэффициентов преобразования. Модуль 68 квантования квантует результирующие коэффициенты преобразования. Модуль 70 основанного на циклах кодирования сканирует блоки коэффициентов преобразования, чтобы сформировать циклы кодирования, к примеру, способом, аналогичным способу, проиллюстрированному на Фиг. 3-5.
В данном изобретении иллюстрация различных признаков в качестве модулей, блоков или компонентов имеет намерение выделять различные функциональные аспекты видеокодера 20 или видеодекодера 22 и необязательно подразумевает, что эти модули должны быть осуществлены посредством отдельных аппаратно- и/или программно-реализованных компонентов. Наоборот, функциональность, ассоциативно связанная с одним или более модулей, таких как модуль 66 преобразования, модуль 68 квантования, модуль 70 основанного на циклах кодирования, модуль 72 выровненной с циклом фрагментации и модуль 74 энтропийного кодирования, может быть интегрирована в общих отдельных аппаратно- и/или программно-реализованных компонентах. В некоторых случаях эти признаки могут быть реализованы посредством общего или отдельного программного обеспечения или программно-реализованных модулей, включающих в себя код, выполненный с возможностью инструктировать компьютеру выполнять функции, приписываемые этим признакам.
Модуль 72 выровненной с циклом фрагментации разрывает поток битов, ассоциативно связанный с циклами кодирования, на фрагменты. Каждый фрагмент инкапсулирует цикл с тем, чтобы начало потока битов цикла практически совпадало с началом полезной нагрузки, переносимой посредством фрагмента. Модуль 72 выровненной с циклом фрагментации может быть выполнен с возможностью анализировать поток битов и обнаруживать границы циклов, чтобы инициировать выровненную с циклом фрагментацию. Модуль 74 энтропийного кодирования применяет энтропийное кодирование, такое как кодирование CAVLC или САВАС, к каждому из фрагментов, сформированных посредством модуля 72 выровненной с циклом фрагментации. А именно для того чтобы исключить взаимозависимость между следующими друг за другом фрагментами, модуль 74 энтропийного кодирования может очистить свою предшествующую статистику и сбросить свои контексты кодирования после того, как каждый фрагмент энтропийно кодирован. Таким образом, по меньшей мере, некоторые из следующих друг за другом фрагментов могут быть одновременно декодированы и обработаны. Энтропийно кодированные фрагменты могут быть помещены в сетевые передающие модули, такие как модули уровня абстрагирования от сети (NAL), для передачи из исходного устройства 12 в устройство 14 назначения.
Фиг. 9 - это блок-схема, иллюстрирующая декодер 75 FGS-серий последовательных макроблоков, который декодирует циклы, инкапсулированные в выровненные с циклом фрагменты (CAF). Декодер 75 FGS-серий последовательных макроблоков может формировать часть видеодекодера, такого как видеодекодер 22 по Фиг. 1. Как показано на Фиг. 9, декодер 75 FGS-серий последовательных макроблоков может включать в себя модуль 76 энтропийного декодирования, модуль 80 выровненной с циклом дефрагментации, модуль 80 основанного на циклах декодирования, модуль 82 обратного квантования и модуль 84 обратного преобразования. Модуль 76 энтропийного декодирования применяет энтропийное декодирование к кодированным видеофрагментам. А именно кодированные видео-CAF могут быть энтропийно декодированы параллельно, поскольку CAF не кодированы с использованием тех же контекстов кодирования, что использованы в других CAF, и каждый CAF предоставляет прямой доступ к потоку битов конкретного цикла.
Модуль 78 выровненной с циклом дефрагментации обрабатывает энтропийно декодированные фрагменты, чтобы сформировать кодированный поток битов видео. Модуль 80 основанного на циклах декодирования сканирует поток битов видео, чтобы сформировать квантованные коэффициенты преобразования. Модуль 82 обратного квантования деквантует коэффициенты преобразования. Модуль 84 обратного преобразования применяет обратное преобразование к деквантованным коэффициентам преобразования, чтобы воспроизвести остаток. Для CAF процесс декодирования FGS-серий последовательных макроблоков может быть упрощен так, чтобы быть очень похожим на процесс дискретного слоя. В качестве примера, в некоторых аспектах FGS-серии последовательных макроблоков могут быть PR-сериями последовательных макроблоков. CAF также могут значительно упрощать спецификацию синтаксиса FGS-серии последовательных макроблоков, как описано в данном изобретении.
Фиг. 10 - это блок-схема последовательности операций способа, иллюстрирующая инкапсуляцию циклов в выровненных с циклом фрагментах (CAF), как описано в данном изобретении. Формирование CAF может выполняться в кодере FGS-серий последовательных макроблоков, ассоциативно связанном с видеокодером 20, таком как кодер 64 FGS-серий последовательных макроблоков по Фиг. 8. В некоторых аспектах кодер 64 FGS-серий последовательных макроблоков может быть кодером PR-серий последовательных макроблоков. Как показано на Фиг. 10, кодер 64 FGS-серий последовательных макроблоков кодирует блоки FGS-видеоданных в циклы (86), инкапсулирует циклы в выровненные с циклом фрагменты (88) и энтропийно кодирует фрагменты (90). Как описано в данном изобретении, фрагменты являются выровненными с циклом в том смысле, что начало потока битов, ассоциативно связанного с циклом, практически совпадает с началом полезной нагрузки соответствующего фрагмента, используемого для того, чтобы инкапсулировать цикл.
Фиг.11 - это блок-схема последовательности операций способа, подробнее иллюстрирующая инкапсуляцию циклов кодирования в выровненных с циклом фрагментах. Также формирование CAF может выполняться в кодере FGS-серий последовательных макроблоков, ассоциативно связанном с видеокодером 20, таком как кодер 64 FGS-серий последовательных макроблоков по Фиг.8. Как показано на Фиг.11, кодер 64 FGS-серий последовательных макроблоков получает коэффициенты преобразования для остаточных видеоблоков (92) и выполняет зигзагообразное сканирование коэффициентов преобразования в цикле по блокам (94). Кодер 64 FGS-серий последовательных макроблоков формирует фрагмент, выравнивает начало полезной нагрузки фрагмента с началом цикла (96) и помещает цикл во фрагмент (98). Кодер 4 FGS-серий последовательных макроблоков кодирует фрагмент (100) и затем очищает статистику энтропийного кодера и сбрасывает контексты (102) кодирования, ассоциативно связанные с энтропийным кодированием, после того как фрагмент энтропийно кодирован. Таким образом, следующий фрагмент, который должен быть энтропийно кодирован, не требует какой-либо информации, которая доступна только после того, как предыдущий фрагмент полностью декодирован. Как результат, несколько фрагментов могут быть одновременно декодированы параллельно посредством декодера 75 FGS-серий последовательных макроблоков, так чтобы декодирование, по меньшей мере, частей некоторых фрагментов выполнялось, по меньшей мере, частично в одно время с декодированием, по меньшей мере, частей одного или более других фрагментов.
Если еще есть циклы, которые должны быть кодированы (104), кодер 64 FGS-серий последовательных макроблоков продолжает сканирование коэффициентов по остаточным блокам (94) и повторяет операции 96, 98, 100, 102. Если основанное на циклах кодирование завершено, кодер 64 FGS-серий последовательных макроблоков получает коэффициенты преобразования для дополнительных остаточных блоков, к примеру, из другой части видеокадра или из последующего кадра, и повторяет операции 96, 98, 100, 102. В ходе этого процесса кодер 64 FGS-серий последовательных макроблоков формирует CAF с тем, чтобы фрагменты могли быть одновременно обработаны, и поток битов, ассоциативно связанный с циклами внутри фрагментов, мог быть непосредственно доступен. Формирование CAF может приводить к упрощению обработки и уменьшению накладных расходов по вычислениям и памяти.
Фиг. 12 - это блок-схема последовательности операций способа, иллюстрирующая декодирование циклов в выровненных с циклом фрагментах (CAF). Декодирование циклов в CAF может выполняться в декодере FGS-серии последовательных макроблоков, ассоциативно связанном с видеодекодером 22, таком как кодер 75 FGS-серии последовательных макроблоков на Фиг. 9. В примере по Фиг. 12 декодер 75 FGS-серии последовательных макроблоков принимает CAF (106) с входящим видео, передаваемым через канал 16. Декодер 75 FGS-серии последовательных макроблоков энтропийно декодирует CAF (108) и одновременно декодирует, по меньшей мере, части, по меньшей мере, некоторых из CAF (110), т.е. без информации, которая доступна только после того, как другие CAF полностью декодированы. Таким образом, декодер 75 FGS-серий последовательных макроблоков декодирует и обрабатывает CAF параллельно. Как результат, несколько CAF могут быть обработаны и декодированы одновременно параллельно, а не последовательно. Некоторые CAF могут быть полностью независимыми друг от друга. В других случаях, информация декодирования для блока в последующем CAF может зависеть от декодирования предыдущего CAF для того же блока. Тем не менее, в этом случае другие контексты кодирования для CAF могут поддерживаться независимыми с тем, чтобы декодирование последующего CAF было одинаковым независимо от того, является ли предыдущий CAF уже декодированным или является ли предыдущий CAF декодируемым одновременно с последующим CAF.
Фиг. 13 - это блок-схема последовательности операций способа, подробнее иллюстрирующая декодирование циклов в CAF. Как показано на Фиг. 13, декодер 106 FGS-серий последовательных макроблоков может получить CAF (112) и энтропийно декодировать CAF (114). Декодер 75 FGS-серий последовательных макроблоков может непосредственно осуществлять доступ к потоку битов, ассоциативно связанному с циклом, переносимым посредством CAF (116), и декодировать поток битов цикла (118), чтобы сформировать соответствующие остаточные видеоданные. Если еще есть доступные CAF (120), декодер 75 FGS-серий последовательных макроблоков получает следующий CAF (112) и повторяет операции Фиг. 13, т.е. операции 114, 116, 118.
Фиг. 14 - это схема, иллюстрирующая влияние ошибки по пакетам для обычных фрагментов и выровненных с циклом фрагментов (CAF). Использование CAF, в соответствии с этим изобретением, может значительно повышать устойчивость к ошибкам FGS-слоя, в дополнение к упрощению обработки и снижению требований по вычислениям и памяти. Фиг. 14 иллюстрирует серии обычных фрагментов (FRAG 0, FRAG 1, FRAG 2) и серии CAF (CAF 0, CAF 1, CAF 2). Когда часть первого обычного фрагмента FRAG 0 повреждена, как указано посредством X, повреждение делает последующие фрагменты FRAG 1 и FRAG 2 полностью бесполезными. Другими словами, любая величина повреждения в ранее кодированном FRAG 0 может привести к полному повреждению позднее кодированных FRAG 1 и FRAG 2. Для обычных фрагментов предыдущий FRAG 0 и последующие фрагменты FRAG 1 и FRAG 2 фактически формируются из одного прохода кодирования. Следовательно, ошибка в конце обычного FRAG 0 повреждает всю информацию в FRAG 1 и FRAG 2, поскольку они базируются на FRAG 0 для целей энтропийного кодирования и могут содержать различные части общего потока битов цикла.
В отличие от этого, для CAF повреждение одного фрагмента не повреждает полностью другие фрагменты. Если, к примеру, имеется ошибка в конце CAF 0, ошибка влияет только на соответствующие части в CAF 1 и CAF 2. CAF могут быть одновременно кодированы и переносят потоки битов для отдельных циклов кодирования. Следовательно, ни одному из CAF не требуется информация от другого CAF для энтропийного декодирования. Помимо этого, потеря информации в конце цикла кодирования, к примеру, для конкретного блока коэффициентов преобразования повлияет на последующую информацию сканирования для этого блока. Соответственно, потоки битов, ассоциативно связанные с последующими сканированиями наборов блоков, отличных от поврежденного блока, остаются нетронутыми и могут быть доступны непосредственно и корректно декодированы, следовательно, использование CAF, как описано в данном изобретении, может способствовать устойчивости к ошибкам в кодированном видео.
Дополнительные модификации могут быть желательные или необходимы для конкретной схемы FGS-кодирования, описанной выше, чтобы поддерживать CAF. Например, согласно JD6, переменная chromaStartCycle используется для того, чтобы задерживать передачу компонентов сигнала цветности относительно передачи компонентов сигнала яркости. В текущей реализации JSVM значение chromaStartCycle вычисляется на основе статистики, собранной из первого цикла кодирования. Кодер FGS-серий последовательных макроблоков затем отправляет результирующее значение chromaStartCycle в конце первого цикла кодирования. Если несколько CAF одновременно декодируются, может быть желательным отправить значение chromaStartCycle в заголовке серии последовательных макроблоков первого фрагмента. Соответственно, видеокодер 22 может быть дополнительно выполнен с возможностью отправлять значение chromaStartCycle в заголовке серии последовательных макроблоков первого фрагмента.
Другая возможная модификация также относится к передаче коэффициентов сигнала цветности. В исходной JSVM возможно то, чтобы последний цикл кодирования AC сигнала цветности не перекрывался с последним циклом кодирования сигнала яркости. По этой причине видеокодер 22 может быть выполнен с возможностью активировать ограничение с тем, чтобы коэффициенты сигнала цветности передавались не позднее коэффициентов сигнала яркости. Таким образом, видеокодер 22 может обеспечивать то, что последний цикл кодирования AC перекрывается с последним циклом кодирования сигнала яркости.
В качестве дополнительного уточнения, энтропийное кодирование может быть скорректировано в видеокодере 22. Схема контекстно-зависимого VLC-кодирования может быть использована для энтропийного кодирования при формировании потока битов FGS. Чтобы разделять CAF в максимально возможной степени, текущий индекс сканирования может быть использован для извлечения VLC-параметров. Первая итерация может быть исключением, поскольку нет символа, соответствующего EOB, как в других итерациях кодирования. Если уточняющие коэффициенты кодируются отдельно от значимого коэффициента и имеется несколько уточняющих коэффициентов при первом сканировании или в первых нескольких позициях сканирования, первая серия нулей может начинаться с ненулевой позиции сканирования.
Несколько различных подходов может быть использовано для того, чтобы обработать эту ситуацию. Согласно первому подходу, отдельный двоичный разряд может быть выделен в видеокодере 22 для того, чтобы всегда обрабатывать первую итерацию для блока. Согласно второму подходу, видеокодер 22 может использовать индекс сканирования, чтобы извлекать VLC-параметры, но использовать преимущество знания того, что первая итерация не имеет EOB, так что набор символов не имеет вставленного EOB. Согласно третьему подходу, флаг кодированного блока (CBF) в первой итерации может быть обработан как EOB посредством видеокодера 22. Если CBF равен 1, EOB значения 0 отправляется для первой итерации. В противном случае EOB значения 1 отправляется для первой итерации. При использовании третьего подхода может быть небольшое различие между первой итерацией и другими итерациями.
Могут быть предусмотрены дополнительные методики для того, чтобы повышать производительность FGS-кодирования. Как пояснялось выше, может быть желательным кодировать CBF до того, как любой значимый коэффициент кодирован, поскольку CBF указывает то, есть ли какой-либо значимый коэффициент в соответствующем блоке. В некоторых случаях блок может иметь несколько начальных уточняющих коэффициентов. Например, если самый первый коэффициент является уточняющим коэффициентом, и уточняющие коэффициенты кодируются отдельно от значимых коэффициентов, CBF для блока может быть отправлен после того, как первый уточняющий коэффициент отправлен. Как результат, CBF может не всегда быть кодирован в первом цикле кодирования. Если CBF не кодирован, реализация CAF с помощью энтропийного кодера CABAC может создавать некоторые проблемы. В энтропийном кодировании CABAC CBF кодируется в контексте на основе значения CBF соседних блоков. Помимо этого, различные контексты используются для кодирования CBF различных типов блоков, таких как блок 4×4 сигнала яркости, AC-блок сигнала цветности, DC-блок сигнала цветности и т.п. В системе FGS-кодирования низкой сложности, как описано в данном изобретении, все из флагов кодированных блоков в выровненном с циклом фрагменте могут быть кодированы посредством видеокодера 22 в едином дополнительном контексте, если они кодируются после некоторых уточняющих коэффициентов в том же блоке.
В качестве примера, предполагается, что есть один уточняющий коэффициент в блоке, и уточняющий коэффициент находится в первой позиции сканирования. Помимо этого, предполагается, что также есть несколько дополнительных значимых коэффициентов в блоке. В этом случае видеокодер 22 может быть выполнен с возможностью сначала кодировать уточняющий коэффициент, с последующим кодированием CBF блока. CBF может быть кодирован в новом заданном контексте. Затем значимые коэффициенты в блоке кодируются.
Другая проблема, которая может возникать в CABAC-реализации CAF, также связана с заданием контекста. Энтропийное кодирование CABAC кодирует значимые флаги и последний значимый флаг с помощью контекста, заданного на основе позиции сканирования. При упрощенной реализации CAF может быть желательным хранить аналогичные наборы контекста отдельно для каждого фрагмента в видеокодере 22. Хранение отдельных наборов контекста может влечь за собой дополнительные затраты на реализацию. Тем не менее, если больше контекстов кодирования используется для кодирования одного количества коэффициентов, как когда нет выровненного с циклом фрагмента, может быть проблема с размыванием контекста, которое приводит к снижению производительности кодирования. В кодере FGS-серий последовательных макроблоков видеокодера 22 контексты кодирования для нескольких значимых флагов могут быть сгруппированы.
Например, если начальная позиция сканирования цикла - это 3, и длина вектора - это 3 для фрагмента, исходные контексты значимого кодирования используются для позиций сканирования 3, 4 и 5. Помимо позиции сканирования 5 контексты кодирования для значимых флагов могут быть сгруппированы различными способами. Один пример - задать порог C>=6. Если позиция сканирования до или равна C, отдельный контекст может быть использован для кодирования значимого флага. Все значимые флаги, соответствующие позициям сканирования после C, далее могут быть кодированы в едином контексте. Аналогичный способ может быть использован для задания дополнительного контекста кодирования для кодирования последнего флага значимого коэффициента. В другом примере сканирование может быть ограничено пределом, заданным посредством длины вектора, а не позицией следующих ненулевых коэффициентов.
В нижеприведенной табл.1 изложен пример синтаксических модификаций, которые могут быть реализованы для того, чтобы поддерживать CAF в соответствии с некоторыми аспектами данного изобретения. Синтаксические модификации могут быть сделаны в отношении применимого синтаксиса, изложенного в Совместном проекте 6 (JD6) дополнения SVC в стандарт H.264/MPEG-4 AVC, или синтаксиса, иначе представленного в JSVM. Для этой конкретной схемы FGS-кодирования FGS-серия последовательных макроблоков также может упоминаться как серия последовательных макроблоков PR (с постепенным уточнением).
В различных таблицах данного изобретения все синтаксические элементы могут иметь соответствующий синтаксис и семантику, указанную в стандарте ITU-T H.264 или в дополнении SVC, к примеру, как осуществлено в JSVM или JD6, до степени, в которой эти синтаксические элементы описаны в стандарте H.264, если не указано иное. В общем, синтаксические элементы и семантика, не описанная в стандарте H.264 или JD6, описана в данном изобретении.
В различных таблицах данного изобретения столбец, отмеченный "С", перечисляет категории синтаксических элементов, которые могут присутствовать в модуле NAL, который также может соответствовать категориям в стандарте H.264. Помимо этого, синтаксические элементы с синтаксической категорией "All" могут быть представлены, как определяется посредством синтаксиса и семантики структуры данных для необработанной полезной нагрузки битовой последовательности (RBSP), содержащейся в NAL-модуле FGS-серии последовательных макроблоков.
Наличие или отсутствие каких-либо синтаксических элементов конкретной перечисленной категории определяется из синтаксиса и семантики ассоциативно связанной структуры данных RBSP. Столбец дескриптора задает дескриптор, к примеру, f(n), u(n), b(n), ue(v), se(v), me(v), ce(v), который, в общем, может соответствовать дескрипторам, заданным в стандарте H.264 или JD6, если не указано иное в данном изобретении.
Таблица 1
Синтаксическая модификация, чтобы поддерживать
выровненные с циклом фрагменты
Далее описывается примерная семантика новых или модифицированных синтаксических элементов, представленных в табл.1. Синтаксические элементы в наборе параметров последовательности, который отправляется менее часто, описываются следующим образом.
Синтаксический элемент pr_info_present_flag задает наличие синтаксических элементов, используемых в декодировании FGS-серий последовательных макроблоков, таком как декодирование PR-серий последовательных макроблоков. Когда pr_info_present_flag равен 0, больше нет синтаксических элементов, используемых при декодировании FGS-серий последовательных макроблоков, в наборе параметров последовательности. Когда pr_info_present_flag равен 1, синтаксические элементы, которые задают параметры векторного режима CAF и PR, присутствуют в наборе параметров последовательности. Когда pr_info_present_flag отсутствует, он может быть логически выведен как равный 0.
Синтаксический элемент pr_cycle_aligned_fragment_flag задает то, должно ли основанное на блоках декодирование с использованием CAF быть активировано для декодирования FGS-серий последовательных макроблоков. Когда значение pr_cycle_aligned_fragment_flag равно 1, основанное на блоках декодирование с использованием CAF должно быть активировано. Когда pr_cycle_aligned_fragment_flag отсутствует, он может быть логически выведен как равный 1.
Синтаксический элемент num_pr_vector_modes_minus1 задает размер матрицы параметров векторного режима, присутствующих в наборе параметров последовательности. Параметры векторного режима извлекаются из последующих синтаксических элементов и сохраняются в двумерной матрице ScanPosVectSet, где каждая одномерная матрица ScanPosVectSet[i] сохраняет параметры, относящиеся к i-му векторному режиму, для i=0, 1,..., num_pr_vector_modes_minus1.
Переменная NumPrVectorModes может быть извлечена следующим образом. Если синтаксический элемент num_pr_vector_modes_minus1 присутствует, NumPrVectorModes задается равным (num_pr_vector_modes_minus1+1). В противном случае NumPrVectorModes равен 1.
Синтаксический элемент pr_coding_mode[i] задает то, какой синтаксический элемент используется для того, чтобы извлекать матрицу ScanPosVectSet[i]. Когда pr_coding_mode[i] равен 0, параметры векторного режима в матрице ScanPosVectSet[i] извлекаются с помощью синтаксического элемента grouping_size_minus1[i]. Когда pr_coding_mode[i] равен 1, параметры векторного режима в матрице ScanPosVectSet[i] извлекаются с помощью матрицы reverse_pr_vector_len_minus1[i][k], k=0,..., NumPosVector[i]-1. Если num_pr_vector_modes_minus1 отсутствует, pr_coding_mode[0] задается равным 0.
Синтаксический элемент grouping_size_minus1[i] задает число позиций сканирования, сгруппированных в рамках каждого вектора, минус 1. Если num_pr_vector_modes_minus1 отсутствует, grouping_size_minus1[0] задается равным 15.
Синтаксический элемент reverse_pr_vector_len_minus1[i][k] задает длину вектора между ScanPosVectSet[i][NumPosVector[i]-1-k] и ScanPosVectSet[i][NumPosVector[i]-k], минус 1. Синтаксический элемент reverse_pr_vector_len_minus1[i][k] должен быть декодирован как значение без знака с помощью ceil(log(remVectorLen-1)) битов.
Матрица ScanPosVectSet может быть извлечена следующим образом:
}
Соответствующие синтаксические элементы в заголовке серии последовательных макроблоков могут быть предусмотрены следующим образом.
Синтаксический элемент pr_vector_mode_idx задает индекс в матрице ScanPosVectSet, которая хранит параметры векторного режима. Значение pr_vector_mode_idx должно быть в диапазоне от 0 до (NumPrVectorModes-1) включительно. ScanPosVectSet[pr_vector_mode_idx] и NumPosVector[pr_vector_mode_idx] используются при извлечении следующих параметров для декодирования текущей серии последовательных макроблоков с постепенным уточнением:
Эти параметры могут быть извлечены следующим образом:
//найти начальную позицию сканирования для DC сигнала цветности и AC сигнала цветности
Синтаксический элемент ScanPosVectLuma[i] задает начальную позицию сканирования в цикле сканирования с индексом i для блоков 4×4 сигнала яркости. ScanPosVectLuma8x8[i] задает начальную позицию сканирования в цикле сканирования с индексом i для блоков 8x8 сигнала яркости. ScanPosVectChromaDC[i] задает начальную позицию сканирования в цикле сканирования с индексом i для DC-блоков сигнала цветности. ScanPosVectChromaAC[i] задает начальную позицию сканирования в цикле сканирования с индексом i для AC-блоков сигнала цветности.
Служебная информация по другой конфигурации векторного режима также может быть в заголовке серии последовательных макроблоков, как показано ниже в табл.2. Следовательно, в этом модифицированном векторном режиме длина вектора может быть задана в заголовке серии последовательных макроблоков, а не в наборе параметров последовательности. Этот подход может повлечь за собой использование флага переопределения, чтобы сформировать новый набор векторов сканирования. Длина вектора также может быть сообщена с помощью других подходов с другими компромиссами между сложностью и объемом служебной информации. Соответственно, изобретение предполагает любые из множества методик сообщения в служебной информации векторного режима, где информация кодируется, чтобы сигнализировать о векторном режиме, включая, например, методику сообщения в заголовке серии последовательных макроблоков, как проиллюстрировано в табл.2.
Таблица 2
Сообщение в служебной информации различных
конфигураций векторного режима
Далее описывается определение заголовка макроблока в FGS-серии последовательных макроблоков. В JSVM структура потока битов постепенной серии последовательных макроблоков разработана таким образом, чтобы синтаксические элементы, которые не способствуют непосредственно повышению качества восстановленного видео, отправлялись как можно позднее. Если поток битов частично усечен, восстановленное видео может иметь максимальное качество. Нижеприведенная табл.3 предоставляет сегмент псевдокода, который предоставляет базовую структуру потока битов FGS-серии последовательных макроблоков. В табл.4 ниже проиллюстрированы примерные синтаксические элементы для определения заголовка макроблока в FGS-серии последовательных макроблоков.
Таблица 3
Структура потока битов FGS-серии последовательных макроблоков
В качестве примера, CBP сигнала цветности может быть отправлен сразу перед коэффициентами сигнала цветности, но после коэффициентов сигнала яркости первого цикла кодирования в том же макроблоке, тогда как в базовом слое AVC CBP сигнала цветности может быть отправлен в заголовке макроблока. Другим примером служит передача delta QP. Если макроблок в улучшающем слое не имеет каких-либо ненулевых коэффициентов сигнала яркости и ненулевых DC-коэффициентов сигнала цветности, но он имеет ненулевые AC-коэффициенты сигнала цветности, и CBP макроблока в базовом слое равно нулю, delta QP может быть отправлен сразу перед тем, как AC-коэффициенты сигнала цветности кодируются. Этот подход очень отличается от способа, которым эти синтаксические элементы типично отправляются в базовом слое AVC.
Секция псевдокода, представленная выше в табл.3, предоставляет базовую структуру потока битов FGS-серии последовательных макроблоков. Тем не менее, посредством выполнения простого анализа фактического порядка кодирования задержка передачи этих синтаксических элементов может не предоставлять существенного преимущества.
Два связанных с сигналом цветности флага, allow_chroma_dc и allow_chroma_ac, могут быть использованы в видеокодере 20 для управления скоростью передачи коэффициентов сигнала цветности относительно скорости передачи коэффициентов сигнала яркости. В цикле кодирования 0, эти два флага всегда могут быть равны 1, так что все вышеупомянутые синтаксические элементы будут переданы в первом цикле. Биты при отправке этих синтаксических элементов должны быть задержаны, но при этом могут по-прежнему быть переданы в первом цикле кодирования макроблока. Эта незначительная перетасовка битов не должна оказать существенного влияния на производительность кодирования, если поток битов усечен.
Заголовок MB для FGS-серии последовательных макроблоков может быть задан так, как указано в табл.4 ниже. А именно данный конкретный пример заголовка MB может иметь такую же структуру, похожую на структуру слоя крупномодульной масштабируемости SNR (CGS).
Таблица 4
Определение заголовка макроблока в FGS-серии
последовательных макроблоков
С помощью CAF и ассоциативно связанных методик кодирования, как описано в данном изобретении, процесс декодирования FGS-серии последовательных макроблоков может быть значительно упрощен и может быть аналогичен процессу декодирования дискретного улучшающего слоя. CAF и ассоциативно связанные методики также могут существенно упрощать спецификацию синтаксиса FGS-серии последовательных макроблоков. В нижеприведенной табл. 5 показан пример последовательности операций декодирования, к примеру, в видеодекодере 22, когда CAF и ассоциативно связанный заголовок макроблока, как описано в данном изобретении, используются. Некоторые функции, которые не перечислены, могут быть аналогичны функциям, используемым в SVC JD, за исключением того, что усовершенствования и модификации, поясненные выше в данном изобретении, могут быть использованы. CAF также могут работать с другими схемами FGS-кодирования.
Коммутация входных данных, т.е. данных внутри фрагмента, может обрабатываться в функции декодирования residual_block. Затраты на коммутацию входных буферов гораздо меньше затрат, ассоциативно связанных с процессом декодирования на основе кадров.
Таблица 5
Синтаксис данных FGS-серии последовательных
макроблоков в масштабируемом дополнении
Табл.6 ниже иллюстрирует примерный синтаксис данных остаточных блоков FGS-серии последовательных макроблоков в масштабируемом дополнении.
Таблица 6
Синтаксис данных остаточных блоков FGS-серии
последовательных макроблоков в масштабируемом дополнении
Нижеприведенная табл.7 иллюстрирует примерный синтаксис для CABAC-синтаксиса значимого коэффициента и серии данных FGS-серии последовательных макроблоков.
Таблица 7
CABAC-синтаксис значимого коэффициента и серии в
данных FGS-серии последовательных макроблоков
Нижеприведенная табл.8 иллюстрирует примерный синтаксис для CAVLC-синтаксиса значимого коэффициента и серии данных FGS-серии последовательных макроблоков.
Таблица 8
CAVLC-синтаксис значимого коэффициента и
серии в данных FGS-серии последовательных макроблоков
Любое устройство, описанное в данном изобретении, может представлять различные типы устройств, к примеру беспроводной телефон, сотовый телефон, переносной компьютер, беспроводное мультимедийное устройство, карта беспроводной связи персонального компьютера (PC), персональное цифровое устройство (PDA), внешний или внутренний модем, устройство проведения игр либо любое мультимедийное устройство, которое обменивается данными через беспроводной или проводной канал. Такое устройство может иметь различные названия, к примеру терминал доступа (AT), модуль доступа, абонентский модуль, мобильная станция, мобильное устройство, мобильный модуль, мобильный телефон, мобильное устройство, удаленная станция, удаленный терминал, удаленный модуль, пользовательское устройство, пользовательское оборудование, карманное устройство и т.д.
Методики, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если реализованы в программном обеспечении, методики могут быть осуществлены, по меньшей мере, частично посредством одной или более сохраненных или переданных инструкций или кода на машиночитаемом носителе вычислительного программного продукта, которые инструктируют процессору выполнять эти методики. Машиночитаемые носители могут включать в себя компьютерные носители хранения, среду связи или и то, и другое, и могут включать в себя любую среду, которая упрощает передачу вычислительной программы из одного места в другое. Носителями хранения могут быть любые доступные носители, к которым можно осуществлять доступ посредством компьютера.
В качестве примера, но не ограничения, эти машиночитаемые носители могут содержать носители хранения данных, такие как RAM, синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), ROM, электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), EEPROM, флэш-память, CD-ROM или другие оптические дисковые устройства хранения, магнитные дисковые устройства хранения или другие магнитные устройства хранения, либо любые другие машиночитаемые носители хранения данных, которые могут быть использованы для того, чтобы переносить или сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера.
Также любое подключение корректно называть машиночитаемым носителем.
Например, если программное обеспечение передается с веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включены в определение носителя. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически, к примеру, с помощью лазеров. Комбинации вышеперечисленного также следует включить в число машиночитаемых носителей.
Код, ассоциативно связанный с машиночитаемым носителем вычислительного программного продукта, может приводиться в исполнение посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем матричных БИС (FPGA) или других эквивалентных интегральных или дискретных логических схем. В некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодер-декодер (CODEC).
Описаны разные аспекты изобретения. Эти и другие аспекты находятся в рамках области применения прилагаемой формулы изобретения.
Изобретение относится к области кодирования цифрового видео, и в частности к масштабируемому видеокодированию с высокой степенью детализации (FGS-видеокодированию), в котором используют выровненные с циклом фрагменты (CAF). Техническим результатом является повышение эффективности видеокодирования, основанного на циклах кодирования коэффициентов блоков FGS-видеоданных и синтаксических элементов, а также снижения числа фрагментов и объема служебной информации. Указанный технический результат достигается тем, что фрагменты могут быть выровнены с циклом так, чтобы начало рабочих данных каждого из фрагментов практически совпадало с началом одного из циклов. Некоторые циклы могут управляться с помощью векторного режима, чтобы сканировать для предварительно определенной позиции в рамках блока перед перемещением к другому блоку. Таким образом, число циклов может быть уменьшено, сокращая число фрагментов и ассоциативно связанный объем служебной информации. CAF могут быть энтропийно кодированы независимо друг от друга, так чтобы каждый из фрагментов мог быть легко доступен и декодирован без ожидания декодирования других фрагментов, что обеспечивает параллельное декодирование и одновременную обработку таких фрагментов. 8 н. и 60 з.п. ф-лы, 14 ил., 8 табл.
1. Способ видеокодирования, содержащий этапы, на которых:
кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS) во множестве циклов, при этом каждый из циклов содержит цикл FGS-кодирования; и
инкапсулируют циклы во множество фрагментов так, чтобы начало каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом каждый из фрагментов содержит частичный FGS-слой.
2. Способ по п.1, в котором инкапсуляция содержит этап, на котором инкапсулируют циклы во множество фрагментов так, чтобы начало полезной нагрузки каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
3. Способ по п.1, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования, а кодирование блоков PGS-видеоданных включает в себя этап, на котором кодируют коэффициенты, ассоциативно связанные с блоками FGS-видеоданных, в циклах.
4. Способ по п.1, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования и в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
5. Способ по п.1, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
6. Способ по п.1, дополнительно содержащий этапы, на которых: применяют энтропийное кодирование к фрагментам с помощью множества контекстов кодирования и сбрасывают контексты кодирования, ассоциативно связанные с энтропийным кодированием для каждого из фрагментов после применения энтропийного кодирования к фрагментам.
7. Способ по п.6, в котором сброс энтропийного кодирования содержит этапы, на которых: очищают энтропийный кодер, используемый для того, чтобы применять энтропийное кодирование, после того, как каждый из фрагментов энтропийно кодирован; и сбрасывают контексты кодирования, используемые посредством энтропийного кодера, после того, как каждый из фрагментов энтропийно кодирован.
8. Способ по п.1, дополнительно содержащий этап, на котором управляют одним или более циклов с помощью векторного режима, чтобы выполнить сканирование до предварительно определенной позиции сканирования в рамках каждого из блоков до перемещения к другому блоку.
9. Способ по п.8, дополнительно содержащий этап, на котором кодируют информацию, чтобы сигнализировать о векторном режиме.
10. Способ по п.1, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
11. Видеокодер, содержащий:
модуль основанного на циклах кодирования, который кодирует блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS) во множестве циклов, при этом каждый из циклов содержит цикл FGS-кодирования; и
модуль фрагментации, который инкапсулирует циклы во множестве фрагментов так, чтобы начало каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом каждый из фрагментов содержит частичный FGS-слой.
12. Видеокодер по п.11, в котором модуль фрагментации инкапсулирует циклы во множестве фрагментов так, чтобы начало полезной нагрузки каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
13. Видеокодер по п.11, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования, а модуль основанного на циклах кодирования кодирует коэффициенты, ассоциативно связанные с блоками FGS-видеоданных, в циклах.
14. Видеокодер по п.11, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования, в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
15. Видеокодер по п.11, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
16. Видеокодер по п.11, дополнительно содержащий модуль энтропийного кодера, который применяет энтропийное кодирование к фрагментам с помощью множества контекстов кодирования и сбрасывает контексты кодирования, ассоциативно связанные с энтропийным кодированием для каждого из фрагментов после применения энтропийного кодирования к фрагментам.
17. Видеокодер по п.16, в котором для того, чтобы сбросить энтропийное кодирование, модуль энтропийного кодера очищает энтропийный кодер, используемый для того, чтобы применять энтропийное кодирование, после того, как каждый из фрагментов энтропийно кодирован, и сбрасывает контексты кодирования, используемые посредством энтропийного кодера, после того, как каждый из фрагментов энтропийно кодирован.
18. Видеокодер по п.11, в котором модуль основанного на циклах кодирования управляет каждым из циклов с помощью векторного режима, чтобы выполнить сканирование до предварительно определенной позиции сканирования в рамках каждого из блоков до перемещения к другому блоку.
19. Видеокодер по п.18, в котором модуль кодирования кодирует информацию, чтобы сигнализировать о векторном режиме.
20. Видеокодер по п.11, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
21. Видеокодер, содержащий:
средство кодирования блоков видеоданных с масштабируемостью с высокой степенью детализации (FGS) во множестве циклов, при этом каждый из циклов содержит цикл FGS-кодирования; и
средство инкапсуляции циклов во множестве фрагментов так, чтобы начало каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом каждый из фрагментов содержит частичный FGS-слой.
22. Видеокодер по п.21, в котором средство инкапсуляции содержит средство инкапсуляции циклов во множестве фрагментов так, чтобы начало полезной нагрузки каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
23. Видеокодер по п.21, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования, а средство кодирования блоков FGS-видеоданных содержит средство кодирования коэффициентов, ассоциативно связанных с блоками FGS-видеоданных, в циклах.
24. Видеокодер по п.21, в котором блоки FGS-видеоданных содержат блоки коэффициентов преобразования и в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
25. Видеокодер по п.21, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
26. Видеокодер по п.21, дополнительно содержащий средство применения энтропийного кодирования к фрагментам с помощью множества контекстов кодирования и средство сброса контекстов кодирования, ассоциативно связанных с энтропийным кодированием для каждого из фрагментов после применения энтропийного кодирования к фрагментам.
27. Видеокодер по п.26, в котором средство сброса энтропийного кодирования содержит средство очистки энтропийного кодера, используемого для того, чтобы применять энтропийное кодирование после того, как каждый из фрагментов энтропийно кодирован; и средство сброса контекстов кодирования, используемых посредством энтропийного кодера, после того, как каждый из фрагментов энтропийно кодирован.
28. Видеокодер по п.21, дополнительно содержащий средство управления одним или более циклов с помощью векторного режима, чтобы выполнить сканирование до предварительно определенной позиции сканирования в рамках каждого из блоков до перемещения к другому блоку.
29. Видеокодер по п.28, дополнительно содержащий средство кодирования информации, чтобы сигнализировать о векторном режиме.
30. Видеокодер по п.21, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
31. Машиночитаемый носитель, содержащий инструкции, которые, когда приводятся в исполнение, побуждают процессор:
кодировать блоки видеоданных с масштабируемостью с высокой степенью детализации (PGS) во множестве циклов, при этом каждый из циклов содержит цикл FGS-кодирования; и
инкапсулировать циклы во множестве фрагментов так, чтобы начало каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом каждый из фрагментов содержит частичный FGS-слой.
32. Машиночитаемый носитель по п.31, при этом команды побуждают процессор инкапсулировать циклы во множестве фрагментов так, чтобы начало полезной нагрузки каждого из фрагментов, по существу, совпадало с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
33. Машиночитаемый носитель по п.31, при этом блоки FGS-видеоданных содержат блоки коэффициентов преобразования, и в котором команды инструктируют процессор кодировать коэффициенты, ассоциативно связанные с блоками FGS-видеоданных, в циклах.
34. Машиночитаемый носитель по п.31, при этом блоки FGS-видеоданных содержат блоки коэффициентов преобразования, и в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
35. Машиночитаемый носитель по п.31, при этом блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
36. Машиночитаемый носитель по п.31, при этом команды побуждают процессор применять энтропийное кодирование к фрагментам с помощью множества контекстов кодирования и сбрасывать контексты кодирования, ассоциативно связанные с энтропийным кодированием для каждого из фрагментов после применения энтропийного кодирования к фрагментам.
37. Машиночитаемый носитель по п.36, при этом команды побуждают процессор: очищать энтропийный кодер, используемый для того, чтобы применять энтропийное кодирование после того, как каждый из фрагментов энтропийно кодирован; и сбрасывать контексты кодирования, используемые посредством энтропийного кодера, после того, как каждый из фрагментов энтропийно кодирован.
38. Машиночитаемый носитель по п.31, при этом команды побуждают процессор управлять одним или более циклов с помощью векторного режима, чтобы выполнить сканирование до предварительно определенной позиции сканирования в рамках каждого из блоков до перемещения к другому блоку.
39. Машиночитаемый носитель по п.38, при этом команды побуждает процессор кодировать информацию, чтобы сигнализировать о векторном режиме.
40. Машиночитаемый носитель по п.31, при этом каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
41. Способ декодирования видео, содержащий этапы, на которых:
принимают фрагменты, включающие в себя множество циклов кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), при этом каждый из фрагментов содержит частичный FGS-слой и при этом каждый из циклов содержит цикл FGS-кодирования; и
декодируют, по меньшей мере, части, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов, по существу, совпадает с началом одного из циклов.
42. Способ по п.41, в котором начало полезной нагрузки каждого из фрагментов, по существу, совпадает с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
43. Способ по п.41, в котором циклы кодируют коэффициенты преобразования, ассоциативно связанные с блоками FGS-видеоданных.
44. Способ по п.41, в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
45. Способ по п.41, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
46. Способ по п.41, в котором множество контекстов кодирования, ассоциативно связанных с энтропийным кодированием для каждого из фрагментов, сбрасываются после того, как каждый из фрагментов энтропийно кодирован.
47. Способ по п.41, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
48. Видеодекодер, содержащий модуль основанного на циклах декодирования, который принимает фрагменты, включающие в себя множество циклов кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), при этом каждый из фрагментов содержит частичный FGS-слой и каждый из циклов содержит цикл FGS-кодирования, и декодирует, по меньшей мере, части, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов, по существу, совпадает с началом одного из циклов.
49. Видеодекодер по п.48, в котором начало полезной нагрузки каждого из фрагментов, по существу, совпадает с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
50. Видеодекодер по п.48, в котором циклы кодируют коэффициенты преобразования, ассоциативно связанные с блоками FGS-видеоданных.
51. Видеодекодер по п.48, в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты кодирования, ассоциативно связанные с множеством блоков FGS-видеоданных.
52. Видеодекодер по п.48, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
53. Видеодекодер по п.48, в котором множество контекстов кодирования, ассоциативно связанных с энтропийным кодированием для каждого из фрагментов, сбрасываются после того, как каждый из фрагментов энтропийно кодирован.
54. Видеодекодер по п.48, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
55. Видеодекодер, содержащий:
средство приема фрагментов, включающих в себя множество циклов кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), при этом каждый из фрагментов содержит частичный FGS-слой и при этом каждый из циклов содержит цикл FGS-кодирования; и
средство декодирования, по меньшей мере, частей, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов, по существу, совпадает с началом одного из циклов.
56. Видеодекодер по п.55, в котором начало полезной нагрузки каждого из фрагментов, по существу, совпадает с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов,
57. Видеодекодер по п.55, в котором циклы кодируют коэффициенты преобразования, ассоциативно связанные с блоками FGS-видеоданных.
58. Видеодекодер по п.55, в котором, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
59. Видеодекодер по п.55, в котором блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
60. Видеодекодер по п.55, в котором множество контекстов кодирования, ассоциативно связанных с энтропийным кодированием для каждого из фрагментов, сбрасываются после того, как каждый из фрагментов энтропийно кодирован.
61. Видеодекодер по п.55, в котором каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
62. Машиночитаемый носитель, содержащий инструкции, чтобы побуждать процессор:
принимать фрагменты, включающие в себя множество циклов кодирования, которые кодируют блоки видеоданных с масштабируемостью с высокой степенью детализации (FGS), при этом каждый из фрагментов содержит частичный FGS-слой и при этом каждый из циклов содержит цикл FGS-кодирования; и
декодировать, по меньшей мере, части, по меньшей мере, некоторых из фрагментов одновременно, при этом начало каждого из фрагментов, по существу, совпадает с началом одного из циклов.
63. Машиночитаемый носитель по п.62, при этом начало полезной нагрузки каждого из фрагментов, по существу, совпадает с началом одного из циклов, при этом полезная нагрузка каждого из фрагментов содержит часть содержимого каждого из фрагментов.
64. Машиночитаемый носитель по п.62, при этом циклы кодируют коэффициенты преобразования, ассоциативно связанные с блоками FGS-видеоданных.
65. Машиночитаемый носитель по п.62, при этом, по меньшей мере, некоторые из циклов охватывают коэффициенты преобразования, ассоциативно связанные с множеством блоков FGS-видеоданных.
66. Машиночитаемый носитель по п.62, при этом блоки FGS-видеоданных соответствуют серии последовательных макроблоков с постепенным уточнением (PR) видеоданных.
67. Машиночитаемый носитель по п.62, при этом множество контекстов кодирования, ассоциативно связанных с энтропийным кодированием для каждого из фрагментов, сбрасываются после того, как каждый из фрагментов энтропийно кодирован.
68. Машиночитаемый носитель по п.62, при этом каждый из циклов представляет, по меньшей мере, часть сканирования в зигзагообразном порядке одного или более блоков.
US 2003118097 A1, 26.06.2003 | |||
WO 2005032138 A1, 07.04.2005 | |||
RU 2003113331 A, 10.10.2004 | |||
СПОСОБ НИЗКОШУМОВОГО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ | 1997 |
|
RU2201654C2 |
RU 2001123542 A, 27.06.2003 | |||
PETER AMON et al | |||
High-Level Syntax for SVC, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG, JVT-P100, 16th Meeting: Poznań, 24-29 July 2005 | |||
РИЧАРДСОН ЯН | |||
Железнодорожный снегоочиститель | 1920 |
|
SU264A1 |
Авторы
Даты
2010-12-20—Публикация
2007-07-12—Подача