Отделимые направленные преобразования
Иллюстрации
Показать всеИзобретение относится к цифровому видеокодированию и, в частности, касается энтропийного кодирования коэффициентов видеоблоков. Техническим результатом является обеспечение эффективной группировки ненулевых коэффициентов вблизи передней части одномерного вектора коэффициентов для повышения эффективности энтропийного кодирования. Указанный технический результат достигается тем, что избирательно применяют множество различных преобразований к остаточным блокам на основе режима предсказания видеоблоков. По меньшей мере часть из множества преобразований является отделимыми направленными преобразованиями, подготовленными для соответствующего режима предсказания, для обеспечения более эффективного уплотнения энергии для остаточных блоков данного режима предсказания. Использование отделимых направленных преобразований дает преимущества, состоящие в снижении сложности вычислений и требований к памяти по сравнению с использованием неотделимых направленных преобразований. Вдобавок, при применении отделимых направленных преобразований можно перестраивать порядок сканирования, используемый для сканирования коэффициентов остаточного блока. В частности, порядок сканирования можно перестроить на основе статистических данных, связанных с одним или несколькими ранее закодированными блоками. 4 н. и 45 з.п. ф-лы, 8 ил., 1 табл.
Реферат
Перекрестные ссылки на родственные заявки
Данная заявка испрашивает приоритет предварительной заявки США №60/944470, поданной 15 июня 2007 года, и предварительной патентной заявки США №60/979762, поданной 12 октября 2007 года, содержание которых целиком включено в настоящий документ по ссылке.
Область техники, к которой относится изобретение
Последующее описание относится к цифровому видеокодированию и, в частности, касается энтропийного кодирования коэффициентов видеоблоков.
Уровень техники
Услуги цифрового видео могут быть включены в самые различные устройства, в том числе цифровые телевизионные приемники, цифровые системы прямого вещания, устройства беспроводной связи, такие как карманные радиотелефоны, беспроводные вещательные системы, персональные цифровые помощники (PDA), настольные компьютеры или «лэптопы», цифровые камеры, цифровые записывающие устройства, видеоигровые устройства, видеоигровые приставки и т.п. Устройства цифрового видео реализуют технологии видеосжатия, такие как MPEG-2, MPEG-4 или H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), для более эффективной передачи и приема цифровых видеоданных. Технологии сжатия видеоданных осуществляют пространственное и временное предсказание для уменьшения или устранения избыточности, присущей последовательностям видеоданных.
Сжатие видеоданных в общем случае включает в себя пространственное предсказание и/или временное предсказание. В частности, внутреннее кодирование базируется на пространственном предсказании, обеспечивающем уменьшение или устранение пространственной избыточности между видеоблоками в данном закодированном блоке, который может содержать видеокадр, серия последовательных макроблоков видеокадра или т.п. В отличие от этого внешнее кодирование базируется на временном предсказании, обеспечивающем уменьшение или устранение временной избыточности между видеоблоками последовательно закодированных блоков видеопоследовательности. При внутреннем кодировании видеокодер выполняет пространственное предсказание для сжатия данных на основе других данных в том же закодированном блоке. При внешнем кодировании видеокодер выполняет оценку движения и компенсацию движения для отслеживания перемещения соответствующих видеоблоков из двух или более соседних закодированных блоков.
После пространственного или временного предсказания создают остаточный блок путем вычитания видеоблока предсказания, созданного во время процесса предсказания, из исходного, кодируемого в данный момент видеоблока. Таким образом, остаточный блок указывает различие между предсказанным блоком и текущим кодируемым блоком. Видеокодер может использовать процессы преобразования, квантования и энтропийного кодирования для дополнительного уменьшения скорости передачи битов, связанной с передачей остаточного блока. Способы преобразования позволяют преобразовать набор пиксельных значений в коэффициенты преобразования, которые представляют энергию пиксельных значений в частотной области. Коэффициенты преобразования подвергают квантованию, которое в общем случае включает в себя процесс, ограничивающий количество бит, связанных с любым данным коэффициентом. Перед энтропийным кодированием видеокодер сканирует квантованный блок коэффициентов, преобразуя его в одномерный вектор коэффициентов. Видеокодер выполняет энтропийное кодирование вектора квантованных коэффициентов преобразования для дополнительного сжатия остаточных данных.
Видеодекодер может выполнять операции, обратные энтропийному кодированию, для извлечения указанных коэффициентов. В видеодекодере также может выполняться обратное сканирование для формирования двумерных блоков из полученных одномерных векторов коэффициентов. Затем видеодекодер выполняет обратное квантование и обратное преобразование коэффициентов для получения восстановленного остаточного блока. Далее видеодекодер декодирует видеоблок предсказания на основе информации о предсказании и информации о движении. Затем видеодекодер добавляет видеоблок предсказания к соответствующему остаточному блоку для создания восстановленного видеоблока и создания декодированной последовательности видеоданных.
Сущность изобретения
В изобретении описаны способы преобразования остаточных пиксельных значений (иногда называемых остаточными блоками) видеоблоков. В частности, поддерживается множество различных преобразований, которые избирательно применяют к остаточным блокам на основе режима предсказания видеоблоков. Направленные преобразования могут, например, быть специально подготовлены для каждого режима предсказания, чтобы обеспечить более эффективное уплотнение энергии для остаточных блоков данного режима предсказания. Согласно настоящему изобретению по меньшей мере часть множества направленных преобразований составляют отделимые направленные преобразования. Каждое из отделимых направленных преобразований может включать в себя матрицу преобразования строк и матрицу преобразования столбцов. Матрицы преобразования строк и столбцов могут иметь такую же размерность, как остаточный блок, для которого используется каждая из матриц преобразования. В случае блока размером 4 на 4 пикселя матрицы строк и столбцов имеют размерность 4×4. Использование отделимых направленных преобразований дает преимущество с точки зрения возможности упрощения вычислений и снижения требований к памяти, по сравнению с использованием неотделимых направленных преобразований.
Однако отделимые направленные преобразования могут не фиксировать направленность в остаточных блоках, также как при использовании неотделимых направленных преобразований. Таким образом, созданные блоки остаточных коэффициентов преобразования могут сохранять некоторую направленность. Раз так, то применение фиксированного порядка сканирования для сканирования двухмерного представления остаточных коэффициентов преобразования в одномерный вектор коэффициентов не сможет эффективно скомпоновать ненулевые коэффициенты в направлении начала вектора коэффициентов. Согласно другому аспекту данного изобретения может быть перестроен порядок сканирования на основе статистических данных о коэффициентах видеоблоков, закодированных ранее, с использованием того же самого режима предсказания для более эффективной компоновки ненулевых коэффициентов блока коэффициентов в направлении начала одномерного вектора коэффициентов.
Согласно одному аспекту способ кодирования видеоданных содержит сохранение множества преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Способ также включает в себя выбор одного из множества преобразований для видеоблока на основе режима преобразования видеоблока и применение выбранного преобразования к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Способ дополнительно включает в себя энтропийное кодирование остаточных коэффициентов преобразования видеоблока.
Согласно другому аспекту устройство, кодирующее видеоданные, содержит блок преобразования, который сохраняет множество преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока, выбирает одно из множества преобразований для видеоблока на основе режима предсказания видеоблока и применяет выбранное преобразование к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Устройство также включает в себя блок энтропийного кодирования, который выполняет энтропийное кодирование остаточных коэффициентов преобразования видеоблока.
Согласно еще одному аспекту считываемый компьютером носитель содержит команды, которые при их выполнении в устройстве видеокодирования, заставляют устройство кодировать видеоблоки. Эти команды заставляют устройство сохранять множество преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока, выбирать одно из множества преобразований для видеоблока на основе режима предсказания видеоблока и применять выбранное преобразование к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Эти команды, кроме того, заставляют устройство выполнять энтропийное кодирование остаточных коэффициентов преобразования видеоблока.
Согласно другому аспекту устройство, кодирующее видеоданные, содержит средство сохранения множества преобразований для использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Устройство дополнительно содержит средство выбора одного из множества преобразований для видеоблока на основе режима предсказания видеоблока и средство применения выбранного преобразования к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Устройство также включает в себя средство энтропийного кодирования остаточных коэффициентов преобразования видеоблока.
Способы, описанные в этом изобретении, можно реализовать аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами программное обеспечение может выполняться в процессоре, который может обращаться к одному или нескольким процессорам, таким как микропроцессор, прикладная специализированная интегральная схема (ASIC), вентильная матрица, программируемая пользователем (FPGA), или цифровой процессор сигналов (DSP), либо иные эквивалентные интегральные или дискретные логические схемы. Программное обеспечение, содержащее команды для исполнения указанных способов, может изначально храниться на считываемом компьютером носителе и загружаться и выполняться процессором.
Соответственно, настоящее изобретение также предполагает использование считываемых компьютером носителей, содержащих команды, заставляющие процессор выполнять любой из множества различных способов, раскрытых в описании изобретения. В некоторых случаях считываемый компьютером носитель может составлять часть компьютерного программного продукта, который может продаваться изготовителем и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, а в некоторых случаях может также включать в себя упаковочные материалы.
Подробности одного или нескольких аспектов изобретения представлены на сопроводительных чертежах и в приведенном ниже описании. Другие признаки, цели и преимущества описанных здесь способов станут очевидными из описания, чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг. 1 - блок-схема, иллюстрирующая систему видеокодирования и видеодекодирования, которая реализует раскрытые здесь способы кодирования;
фиг. 2 - блок-схема, иллюстрирующая пример видеокодера по фиг. 1, с дополнительными подробностями;
фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера по фиг. 1, с дополнительными подробностями;
фиг. 4 - концептуальная схема, иллюстрирующая гипотетический пример настройки порядка сканирования, согласованного с данным изобретением;
фиг. 5 - блок-схема, иллюстрирующая примерное функционирование устройства кодирования, сконфигурированного для адаптивной настройки порядка сканирования коэффициентов преобразования;
фиг. 6 - блок-схема, иллюстрирующая примерное функционирование блока кодирования, сконфигурированного для кодирования информации о заголовке для видеоблока;
фиг. 7 - блок-схема, иллюстрирующая примерный выбор контекста кодирования для кодирования и декодирования информации;
фиг. 8 - блок-схема, иллюстрирующая примерное функционирование блока декодирования, сконфигурированного для декодирования информации о заголовке видеоблока.
Подробное описание
На фиг. 1 представлена блок-схема, иллюстрирующая систему 10 видеокодирования и видеодекодирования, которая реализует способы кодирования, раскрытые в этом описании. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированные видеоданные на устройство-адресат 14 через канал 16 связи. Устройство-источник 12 создает кодированные видеоданные для передачи на устройство-адресат 14. Устройство-источник 12 может включать в себя источник 18 видео, видеокодер 20 и передатчик 22. Источник 18 видео в устройстве-источнике 12 может включать в себя устройство фиксации видео, такое как видеокамера, архив видео, содержащий ранее зафиксированное видео, или видео, предоставленное поставщиком видеоконтента. В качестве дополнительной альтернативы источник 18 видео может создавать данные на основе компьютерной графики в качестве исходного видео или комбинацию живого видео и видео, созданного компьютером. В некоторых случаях устройство-источник 12 может представлять собой так называемый «камерафон» или «видеофон», и тогда источником 18 видео может быть видеокамера. В любом случае только что зафиксированное, предварительно зафиксированное или созданное компьютером видео может кодироваться видеокодером 20 для передачи от устройства-источника 12 на устройство-адресат 14 через передатчик 22 и канал 16 связи.
Видеокодер 20 получает видеоданные от источника 18 видео. Видеоданные, полученные от источника 18 видео, могут представлять собой последовательность видеокадров. Видеокодер 20 разбивает последовательность кадров на блоки кодирования и обрабатывает эти блоки кодирования для кодирования последовательности видеокадров. Блоками кодирования могут быть, например, целые кадры или части кадров (то есть, серии последовательных макроблоков). Таким образом, в некоторых случаях кадры могут быть разделены на серии последовательных макроблоков. Видеокодер 20 делит каждый блок кодирования на блоки пикселей (называемые здесь видеоблоки или блоки) и работает с видеоблоками в отдельных блоках кодирования, чтобы закодировать видеоданные. Блок кодирования (например, кадр или серия последовательных макроблоков), как таковая, может содержать множество видеоблоков. Другими словами, видеопоследовательность может включать в себя множество кадров, кадр может включать в себя множество серий последовательных макроблоков, а серия последовательных макроблоков может включать в себя множество видеоблоков.
Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру в соответствии с определенным стандартом кодирования. Например, стандарт H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), разработанный Сектором стандартизации Международного союза электросвязи (ITU-T) (далее этот стандарт обозначен как «H.264/MPEG-4 Part 10 AVC») поддерживает внутреннее предсказание для различных размеров блока, таких как 16×16, 8×8 или 4×4 для компонент яркости и 8×8 для компонент цветности, а также внешнее предсказание для различных размеров блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонент яркости и соответствующих масштабированных размеров для компонент цветности. В стандарте H.264, например, каждый видеоблок размером 16 на 16 пикселей, часто называемый макроблоком (MB), может быть подразделен на подблоки меньших размеров, и предсказание может выполняться в подблоках. В общем случае макроблоки (MB) и различные подблоки могут рассматриваться как видеоблоки. Таким образом, макроблоки (MB) могут считываться видеоблоками, а если они разбиты на более мелкие части или подблоки, то они сами могут рассматриваться как наборы видеоблоков.
Для каждого видеоблока видеокодер 20 выбирает тип блока. Тип блока может указывать, какой вид предсказания (внутреннее или внешнее) осуществляется, а также размер разбиения блока. Например, стандарт H.264/MPEG-4 Part 10 AVC поддерживает несколько типов блоков с внешним (Inter) и внутренним (Intra) предсказанием, в том числе Inter 16×16, Inter 16×8, Inter 8×16, Inter 8×8, Inter 8×4, Inter 4×8, Inter 4×4, Intra 16×16, Intra 8×8, и Intra 4×4. Как подробно описано ниже, видеокодер 20 для каждого из видеоблоков может выбрать один из указанных типов блок.
Видеокодер 20 также выбирает режим предсказания для каждого видеоблока. В случае видеоблока с внутренним кодированием режим предсказания может определить, каким образом выполняется предсказание для текущего видеоблока с использованием одного или нескольких ранее закодированных видеоблоков. В стандарте H.264/MPEG-4 Part 10 AVC, например, видеокодер 20 может выбрать один из девяти возможных режимов однонаправленного предсказания для каждого блока Intra 4×4: режим вертикального предсказания, режим горизонтального предсказания, режим DC предсказания, режим диагонального (вниз/влево) предсказания, режим диагонального (вниз/вправо) предсказания, режим вертикального (вправо) предсказания, режим горизонтального (вниз) предсказания, режим вертикального (влево) предсказания и режим горизонтального (вверх) предсказания. Аналогичные режимы предсказания используют для предсказания каждого блока Intra 8×8. Для блока Intra 16×16 видеокодер 20 может выбрать один из четырех возможных однонаправленных режимов: режим вертикального предсказания, режим горизонтального предсказания, режим DC предсказания и режим плоскостного предсказания. В некоторых случаях видеокодер 20 может выбрать режим предсказания из набора режимов предсказания, который включает в себя не только режимы однонаправленного предсказания, но также один или несколько режимов многонаправленного предсказания, которые определяют комбинации однонаправленных режимов. Например, один или несколько однонаправленных режимов предсказания могут представлять собой двунаправленные режимы предсказания, которые объединяют два однонаправленных режима предсказания, подробно описанных ниже.
После выбора режима предсказания для видеоблока видеокодер 20 создает предсказанный видеоблок, используя выбранный режим предсказания. Предсказанный видеоблок вычитают из исходного видеоблока для формирования остаточного блока. Остаточный блок включает в себя набор пиксельных значений разностей, которые количественно характеризуют разности между пиксельными значениями исходного видеоблока и пиксельными значениями предсказанного блока. Остаточный блок может быть представлен в двумерном блочном формате (например, двумерная матрица или массив пиксельных значений разностей).
После создания остаточного блока видеокодер 20 может выполнить ряд других операций на остаточном блоке перед его кодированием. Видеокодер 20 может применить к остаточному блоку пиксельных значений некоторое преобразование, такое как целочисленное преобразование, дискретное косинусное преобразование (DCT), направленное преобразование или волновое преобразование, для создания блока коэффициентов преобразования. Таким образом, видеокодер 20 преобразует остаточные пиксельные значения в коэффициенты преобразования (которые также называют остаточными коэффициентами преобразования). Остаточные коэффициенты преобразования можно также называть блоком преобразования или блоком коэффициентов. Блок преобразования или блок коэффициентов может иметь одномерное представление коэффициентов, когда применяются неотделимые преобразования, или двумерное представление коэффициентов при применении отделимых преобразований. Неотделимые преобразования могут включать в себя неотделимые направленные преобразования. Отделимые преобразования могут включать в себя отделимые направленные преобразования, DCT преобразования, целочисленные преобразования и волновые преобразования.
Вслед за преобразованием видеокодер 20 осуществляет квантование для создания квантованных коэффициентов преобразования (которые также называют квантованными коэффициентами или квантованными остаточными коэффициентами). Квантованные коэффициенты опять же можно представить в формате одномерного вектора или в формате двумерного блока. Квантование обычно относится к процессу, в котором коэффициенты квантуют с целью возможного уменьшения объема данных, используемых для представления этих коэффициентов. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами. Используемый здесь термин «коэффициенты» может представлять коэффициенты преобразования, квантованные коэффициенты или коэффициенты другого типа. В некоторых случаях раскрытые здесь способы можно применить к остаточным пиксельным значениям, а также коэффициентам преобразования и квантованным коэффициентам преобразования. Однако в иллюстративных целях раскрытые здесь способы описываются в контексте квантованных коэффициентов преобразования.
При использовании отделимых преобразований и представлении блоков коэффициентов в формате двумерного блока видеокодер 20 сканирует коэффициенты из двумерного формата в одномерный формат. Другими словами, видеокодер 20 может сканировать коэффициенты из двумерного блока для представления коэффициентов в последовательном виде как одномерного вектора коэффициентов. Согласно одному из аспектов изобретения видеокодер 20 может перестроить порядок сканирования, используемый для преобразования блока коэффициентов в одномерный формат, на основе собранных статистических данных. Эти статистические данные могут содержать указание о вероятности того, что данное значение коэффициента в каждой позиции двумерного блока равно или не равно нулю, и может, например, содержать итоговый результат отсчета, вероятность или иной статистический показатель, связанный с каждой из позиций коэффициентов в двумерном блоке. В некоторых случаях статистические данные можно собрать только для поднабора позиций коэффициентов в блоке. При оценке порядка сканирования, например, после конкретного количества блоков, порядок сканирования можно изменить, с тем чтобы позиции коэффициентов в блоке, определенные как имеющие более высокую вероятность наличия ненулевых коэффициентов, сканировались прежде, чем позиции коэффициентов в блоке, определенные как имеющие более низкую вероятность наличия ненулевых коэффициентов. Таким путем начальный порядок сканирования можно адаптировать для более эффективной группировки ненулевых коэффициентов у начала одномерного вектора коэффициентов и группировки нулевых коэффициентов в конце одномерного вектора коэффициентов. Это, в свою очередь, может уменьшить количество бит, затрачиваемых на энтропийное кодирование, поскольку имеют место более короткие серии нулей между ненулевым коэффициентами в начале одномерного вектора коэффициентов и одна более длинная серия нулей в конце одномерного вектора коэффициентов.
После сканирования коэффициентов видеокодер 20 кодирует каждый видеоблок из блока кодирования, используя любую из множества различных методик энтропийного кодирования, таких как контекстное адаптивное кодирование с переменной длиной слова (CAVLC), контекстное адаптивное двоичное арифметическое кодирование (CABAC), неравномерное кодирование или т.п. Устройство-источник 12 передает кодированные видеоданные на устройство-адресат 14 через передатчик 22 и канал 16. Канал 16 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одну или несколько физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может составлять часть сети связи на основе пакетов, такой как локальная сеть, сеть широкого охвата или глобальная сеть, например Интернет. Канал 16 связи в общем случае представляет подходящую среду связи или набор различных сред связи для передачи кодированных видеоданных от устройства-источника 12 на устройство-адресат 14.
Устройство-адресат 14 может включать в себя приемник 24, видеодекодер 26 и устройство 28 отображения. Приемник 24 принимает от устройства-источника 12 кодированный битовый видеопоток через канал 16. Видеодекодер 26 применяет энтропийное декодирование для декодирования кодированного битового видеопотока для получения информации о заголовке и квантованных остаточных коэффициентов кодированных видеоблоков кодированного блока. Как было описано выше, квантованные остаточные коэффициенты, закодированные устройством-источником 12, закодированы в виде одномерного вектора. Таким образом, видеодекодер 26 сканирует квантованные остаточные коэффициенты кодированных видеоблоков для преобразования одномерного вектора коэффициентов в двумерный блок квантованных остаточных коэффициентов. Подобно видеокодеру 20, видеодекодер 26 может собирать статистические данные, которые указывают вероятность того, что данная позиция коэффициента в видеоблоке является нулевой или ненулевой, и перестраивать на этой основе порядок сканирования таким же образом, как это делается в процессе кодирования. Соответственно, видеодекодер 26 может применить варианты обратного адаптивного порядка сканирования для преобразования одномерного векторного представления представленных в последовательной форме квантованных коэффициентов преобразования обратно в двумерные блоки квантованных коэффициентов преобразования.
Видеодекодер 26 восстанавливает каждый блок кодирования, используя декодированную информацию о заголовке и декодированную остаточную информацию. В частности, видеодекодер 26 может создать видеоблок предсказания для текущего видеоблока и объединить блок предсказания с соответствующим остаточным видеоблоком для восстановления каждого из видеоблоков. Устройство-адресат 14 может отобразить восстановленные видеоблоки пользователю через устройство 28 отображения. Устройство 28 отображения может содержать любое из различных устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на светоизлучающих диодах (LED), дисплей на органических LED или блок отображения иного типа.
В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут работать фактически симметричным образом. Например, устройство-источник 12 и устройство-адресат 14 могут каждое включать в себя компоненты видеокодирования и видеодекодирования. Следовательно, система 10 может поддерживать однонаправленную или двунаправленную передачу видео между устройствами 12, 14, например, для потокового видео, широковещательной передачи видео или видеотелефонии. Устройство, которое включает в себя компоненты видеокодирования и видеодекодирования, может также составлять часть общего устройства кодирования, архивирования и воспроизведения, такого как цифровой видеомагнитофон (DVR).
Видеокодер 20 и видеодекодер 26 могут функционировать согласно любому из различных стандартов сжатия видео, например стандартов, определенных Экспертной группой по вопросам движущегося изображения (MPEG), а именно MPEG-1, MPEG-2 и MPEG-4, ITU-T H.263; стандарт 421М videoCODEC (известный как «VC-1»), разработанный Обществом кино- и телеинженеров США (SMPTE); стандарт, разработанный Рабочей группой стандартов аудио/видео кодирования Китая (известный как «AVS»), а также любой другой стандарт видеокодирования, определенный или разработанный органом стандартизации в качестве фирменного стандарта. Хотя это на фиг. 1 не показано, согласно некоторым аспектам как видеокодер 20, так и видеодекодер 26 может быть интегрирован соответственно с аудиодекодером и аудиокодером, и включать в себя соответствующие блоки мультиплексирования-демультиплексирования (MUX-DEMUX) или иные аппаратные и программные средства для обработки кодирования как аудиоданных, так и видеоданных в общем потоке данных или в отдельных потоках данных. Таким образом, устройство-источник 12 и устройство-адресат 14 могут работать с мультимедийными данными. При применении блоков MUX-DEMUX они могут функционировать согласно протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол передачи дейтаграмм пользователя (UDP).
Согласно некоторым аспектам при широковещательной передаче видео способы, раскрытые в этом описании, можно применить к усовершенствованному видеокодированию в стандарте H.264 для предоставления услуг передачи видео в реальном времени в наземных мобильных мультимедийных системах многоадресной передачи (TM3), использующих спецификацию радиоинтерфейса только линии связи «Земля - ретранслятор» (FLO), «Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast», опубликованной в июле 2007 года в виде технического стандарта TIA-1099 («FLO Specification»). То есть канал связи 16 может содержать беспроводной информационный канал, используемый для широковещательной беспроводной передачи видеоинформации согласно спецификации FLO или т.п. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования для радиоинтерфейса FLO.
В альтернативном варианте широковещательная передача видео может обеспечиваться согласно другим стандартам, таким как DVB-H (Стандарт цифрового широковещания на карманные компьютеры), ISDB-T (Стандарт комплексной службы цифрового наземного широковещания) или DMB (Стандарт цифрового медийного широковещания). Таким образом, устройство-источник 12 может представлять собой мобильный беспроводной терминал, сервер потокового видео или сервер широковещательной передачи видео. Однако способы, раскрытые в этом описании, не ограничиваются каким-либо конкретным типом системы широковещательной передачи, многоадресной передачи или передачи от точки к точке. В случае широковещательной передачи устройство-источник 12 может обеспечивать широковещательную передачу по нескольким каналам видеоданных на множество устройств-адресатов, каждое из которых может быть аналогичным устройству-адресату 14 по фиг. 1. Таким образом, хотя на фиг. 1 показано одно устройство-адресат 14, в приложениях, обеспечивающих широковещательную передачу видео, устройство-источник 12, как правило, выполняет широковещательную передачу видеоконтента одновременно на множество устройств-адресатов.
В других примерах передатчик 22, канал 16 связи и приемник 24 могут быть сконфигурированы для обеспечения связи в соответствии с особенностями любой проводной или беспроводной системы связи, включая одну или несколько сетей Ethernet, телефонную кабельную систему (например, POTS (традиционная служба телефонной связи)), системы связи по линиям электропередачи и волоконно-оптические системы, и/или беспроводную систему, содержащая одну или несколько систем связи с множественным доступом и кодовым разделением каналов (CDMA или CDMA2000), систему с множественным доступом и частотным разделением каналов (FDMA), систему с множественным доступом и ортогональным частотным разделением каналов, систему с множественным доступом и временным разделением каналов (TDMA), такую как GSM (глобальная система мобильной связи), систему GPRS (система пакетной радиосвязи) или EDGE (усовершенствованная среда GSM для передачи данных), систему мобильной телефонной связи TETRA (магистральная наземная связь), широкополосную систему с множественным доступом и кодовым разделением каналов (WCDMA), систему высокоскоростной передачи данных 1xEV-DO (первого поколения - только для данных) или широковещательную систему 1xEV-DO Gold, систему IEEE 802.18, систему MediaFLOTM, систему DMB, систему DVB-H или другую схему передачи данных между двумя или более устройствами.
Как видеокодер 20, так и видеодекодер 26 могут быть реализованы в виде одного или нескольких микропроцессоров, цифровых процессоров сигналов (DSP), прикладных специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программных средств, аппаратных средств, программно-аппаратных средств или любой их комбинации. Как видеокодер 20, так и видеодекодер 26, могут входить в состав одного или нескольких кодеров или декодеров, любой из которых может составлять часть объединенного кодера/декодера (CODEC) в соответствующем мобильном устройстве, абонентском устройстве, устройстве широковещания, сервере или т.п. Вдобавок, как устройство-источник 12, так и устройство-адресат 14 могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усиления для передачи и приема кодированных видеоданных, если таковые имеются, в том числе компоненты и антенны для радиочастотной (RF) беспроводной связи, достаточные для поддержки беспроводной связи. Однако для упрощения иллюстрации указанные компоненты объединены на фиг. 1 в передатчик 22 устройства-источника 12 и приемник 24 устройства-адресата 14.
На фиг. 2 показана блок-схема, подробно иллюстрирующая примерный видеокодер 20 по фиг. 1. Видеокодер 20 выполняет внутреннее и внешнее кодирование блоков в видеокадрах. Внутреннее кодирование базируется на пространственном предсказании для уменьшения или устранения пространственной избыточности в видеоданных в данном блоке видеокодирования, например, в кадре или серии последовательных макроблоков. При внутреннем кодировании видеокодер 20 формирует блок пространственного предсказания на основе одного или нескольких ранее закодированных блоков в том же блоке кодирования, в которой кодируется данный блок. Внешнее кодирование основано на временном предсказании для уменьшения или устранения временной избыточности в соседних кадрах видеопоследовательности. При внешнем кодировании видеокодер 20 осуществляет оценку движения для отслеживания перемещений сходных видеоблоков между двумя или более соседними кадрами.
В примере по фиг. 2 видеокодер 20 включает в себя модуль 30 разбиения блоков, модуль 32 предсказания, хранилище 34 кадров, модуль 38 преобразования, модуль 40 квантования, модуль 41 сканирования коэффициентов, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 энтропийного кодирования. Видеокодер 20 также включает в себя сумматоры 48А и 48В («сумматоры 48»). Для уменьшения или устранения артефактов, связанных с разбиением на блоки, восстановленные видеоблоки можно пропустить через фильтр, устраняющий «блочность» (не показан). Изображение различных функций на фиг. 2 в виде модулей имеет своей целью подчеркнуть различные функциональные аспекты показанных устройств и не обязательно предполагает, что указанные модули должны быть реализованы в виде отдельных аппаратных или программных компонент. Скорее наоборот, функциональные возможности, связанные с одним или несколькими модулями, могут быть объединены в виде общих или отдельных аппаратных или программных компонент.
Модуль 30 разбиения на блоки получает видеоинформацию (обозначенную на фиг. 2 как «VIDEO IN»), например, в виде последовательности видеокадров от источника 18 видео (фиг. 1). Модуль 30 разбиения на блоки разделяет каждый из видеокадров на блоков кодирования, которые включают в себя множество видеоблоков. Как было описано выше, блоки кодирования могут представлять собой целый кадр или часть кадра (например, серия последовательных макроблоков кадра). В одном случае модуль 30 разбиения на блоки может изначально разделить каждый блок кодирования на м