[0001] Эта заявка испрашивает приоритет предварительной заявки на патент США № 61/436,997, поданной 27 января 2011 года, предварительной заявки на патент США № 61/449,985, поданной 7 марта 2011 года и предварительной заявки на патент США № 61/561,601, поданной 18 ноября 2011 года, каждая из которых в своей полноте включена в данный документ посредством ссылки.
Область техники
[0002] Это раскрытие относится к видеокодированию и, более конкретно, к аспектам компенсации движения видеокодирования.
Уровень техники
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, в том числе средства цифрового телевидения, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиа проигрыватели, игровые видеоустройства, консоли видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференц-связи и подобное. Цифровые видеоустройства реализуют методики сжатия видео, например такие, которые описаны в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263,ITU-T H.264/MPEG-4, Part 10, Усовершенствованного Видеокодирования (Advanced Video Coding, AVC) и расширений таких стандартов, для более эффективной передачи и приема цифровой видеоинформации. Разрабатываются новые стандарты видеокодирования, например стандарт Высокоэффективного Видеокодирования (High Efficiency Video Coding, HEVC), разрабатываемый «Объединенной Командой по Видеокодированию» (Joint Collaborative Team - Video Coding, JCT-VC), который представляет собой совместную работу между MPEG и ITU-T. Развивающийся стандарт HEVC иногда называют как H.265, хотя такое обозначение формально не было сделано.
Сущность изобретения
[0004] В целом, это раскрытие описывает методики для задания предикторов вектора движения (MVP). MVP обычно применяются в видеокодировании в качестве способа улучшения эффективности, с которой выполняется компенсация движения. Вместо того, чтобы выполнять поиск блоков в опорных кадрах, которые соответствуют текущему блоку, видеокодер может выбирать вектор движения для текущего блока, из списка MVP. В некоторых примерах список MVP может включать в себя векторы движения из четырех блоков, которые являются пространственными соседями относительно текущего блока, и вектор движения из совместно размещенного блока из опорного кадра находится временно до или после текущего кадра. Выбранный один из MVP затем используется для текущего блока, сокращая, если не устраняя, процесс компенсации движения.
[0005] В одном примере способ кодирования видеоданных содержит определение пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсекают пространственные векторы движения - кандидаты для удаления по меньшей мере одного из пространственных векторов движения - кандидатов и определяют временной вектор движения - кандидат, связанный с текущим участком текущего видеокадра. Временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра. Способ также содержит выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата и осуществление сигнализации выбранного вектора движения - кандидата в битовом потоке.
[0006] В другом примере устройство для кодирования видеоданных содержит средство для определения пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, средство для отсечения пространственных векторов движения - кандидатов для (удаления) по меньшей мере одного из пространственных векторов движения - кандидатов и средство для определения временного вектора движения - кандидата, связанного с текущим участком текущего видеокадра. Временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра. Устройство дополнительно содержит средство для выбора временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата и средство для сигнализации выбранного вектора движения - кандидата в битовом потоке.
[0007] В другом примере устройство для кодирования видеоданных содержит блок компенсации движения, который определяет пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсекает пространственные векторы движения - кандидаты для удаления по меньшей мере одного из пространственных векторов движения - кандидатов и определяет временной вектор движения - кандидат, связанный с текущим участком текущего видеокадра. Временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра. Устройство также содержит блок выбора режима, который выбирает временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата и блок энтропийного кодирования, который сигнализирует выбранный вектор движения - кандидат в битовом потоке.
[0008] В другом примере невременный считываемый компьютером носитель содержит инструкции, которые, когда исполняются, побуждают один или более процессоров к определению пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсечению пространственных векторов движения - кандидатов для удаления по меньшей мере одного из пространственных векторов движения - кандидатов, определению временного вектора движения - кандидата, связанного с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, выбору временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата и сигнализации выбранного вектора движения - кандидата в битовом потоке.
[0009] В другом примере способ декодирования видеоданных содержит определение пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсечение пространственных векторов движения - кандидатов для удаления по меньшей мере одного из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра. Временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, совместно размещенного в том же самом положении опорного видеокадра, что и текущий участок, находящийся в текущем видеокадре. Способ также содержит выбор одного из временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке и выполнение компенсации движения на основании выбранного вектора движения - кандидата.
[0010] В другом примере устройство для декодирования видеоданных содержит средство для определения пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, средство для отсечения пространственных векторов движения - кандидатов для удаления по меньшей мере одного из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра. Временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра. Устройство также содержит средство для выбора одного из временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке и средство для выполнения компенсации движения на основании выбранного вектора движения - кандидата.
[0011] В другом примере устройство для декодирования видеоданных содержит блок компенсации движения, который определяет пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсекает пространственные векторы движения - кандидаты для удаления по меньшей мере одного из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, выбирает один из временного вектора движения - кандидата или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке и выполняет компенсацию движения на основании выбранного вектора движения - кандидата.
[0012] В другом примере невременный считываемый компьютером носитель содержит инструкции, которые, когда исполняются, побуждают один или более процессоров к определению пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку, отсечению пространственных векторов движения - кандидатов для удаления по меньшей мере одного из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, выбору одного из временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке и выполнению компенсации движения на основании выбранного вектора движения - кандидата.
[0013] Подробности одного или более примеров определены в сопроводительных чертежах и описании ниже по тексту. Другие признаки, объекты и преимущества будут очевидны из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
[0014] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему видео- кодирования и декодирования, которая может быть сконфигурирована для применения методик, описанных в этом раскрытии для задания предикторов вектора движения (MVP).
[0015] Фиг. 2 представляет собой блок-схему, иллюстрирующую пример видеокодера, который может реализовать методики, описанные в этом раскрытии для задания предикторов вектора движения.
[0016] Фиг. 3 представляет собой блок-схему, иллюстрирующую пример видеодекодера, который реализует методики предсказания вектора движения, описанные в этом раскрытии.
[0017] Фиг. 4 представляет собой блок-схему последовательности операций, иллюстрирующую примерную работу видеокодера при реализации методик предсказания вектора движения, описанных в этом раскрытии.
[0018] Фиг. 5 представляет собой блок-схему последовательности операций, иллюстрирующую примерную работу видеодекодера при реализации методик предсказания вектора движения, описанных в этом раскрытии.
[0019] Фиг. 6 представляет собой схему, иллюстрирующую примерную компоновку смежных соседствующих единиц предсказания (PU) и временной совместно размещенной PU для текущей PU.
Подробное описание
[0020] Варианты осуществления методик, описанных в этом раскрытии, позволяют видеокодерам задавать MVP надежным, но эффективным образом, посредством отсечения избыточных пространственных MVP без включения временно совместно размещенного MVP во время процесса отсечения. Другими словами, методики формируют промежуточный список MVP, который включает в себя только пространственные MVP, выполняют усечение относительно этого промежуточного списка MVP и затем добавляют временно совместно размещенный MVP к усеченному промежуточному списку MVP для формирования усеченного списка MVP. Таким образом, потеря опорного кадра, задающего временно совместно размещенный MVP, может не препятствовать синтаксическому анализу битового потока, что является обычным в традиционных системах, и усиления эффективности кодирования, доступные посредством применения процесса отсечения, все еще могут быть сохранены.
[0021] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 10 видео- кодирования и декодирования, которая может быть сконфигурирована для применения методик, описанных в этом раскрытии для задания предикторов вектора движения (MVP). Как показано в примере по Фиг. 1, система 10 включает в себя устройство 12 источник, которое генерирует кодированное видео для декодирования посредством устройства 14 адресата. Устройство 12 источник может передавать кодированное видео устройству 14 адресату через канал 16 связи или может сохранять кодированное видео на носителе 34 хранения или файловом сервере 36 так, что к кодированному видео может быть осуществлен доступ посредством устройства 14 адресата по желанию. Устройство 12 источник и устройство 14 адресат могут содержать любое из широкого выбора устройств, в том числе настольные компьютеры, переносные (т.е. портативные) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки (в том числе сотовые телефоны или трубки и так называемые интеллектуальные телефоны), телевизоры, камеры, устройства отображения, цифровые медиа проигрыватели, консоли видеоигр и т.п.
[0022] Во многих случаях такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал 16 связи может содержать беспроводной канал. В качестве альтернативы, канал 16 связи может содержать проводной канал, комбинацию беспроводного и проводного каналов или любой другой тип канала связи или комбинации каналов связи, подходящий для передачи кодированных видеоданных, таких как радиочастотный (РЧ) спектр, или одну или более физических линий передачи. В некоторых примерах канал 16 связи может формировать часть пакетной сети, такой как локальная сеть (LAN), широкомасштабная сеть (WAN) или глобальная сеть, такая как Интернет. Канал 16 связи, следовательно, в общем представляет любой подходящий носитель связи, или совокупность различных носителей связи, для передачи видеоданных из устройства 12 источника устройству 14 адресату, в том числе любую подходящую комбинацию проводных или беспроводных носителей. Канал 16 связи может включать в себя роутеры, коммутаторы, базовые станции, или любое другое оборудование, которое может быть пригодным для содействия передаче от устройства 12 источника устройству 14 адресату.
[0023] Как дополнительно показано в примере по Фиг. 1, устройство 12 источник включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор 22 («модем 22») и передатчик 24. В устройстве 12 источника видеоисточник 18 может включать в себя источник, такой как устройство видеозахвата. Устройство видеозахвата, в качестве примера, может включать в себя одно или более из видеокамеры, видеоархива, содержащего ранее захваченное видео, интерфейса внешнего видеосигнала для приема видео от поставщика видеоконтента и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве видео источника. В качестве одного примера, если видеоисточник 18 представляет собой видеокамеру, устройство 12 источник и устройство 14 адресат могут формировать так называемые телефоны-камеры или видеотелефоны. Методики, описанные в этом раскрытии, однако не ограничены беспроводными применениями или установками, а могут быть применены к устройствам, которые не являются беспроводными, включающим в себя возможности видео- кодирования и/или декодирования. Устройство 12 источник и устройство 14 адресат, следовательно, представляют собой лишь примеры устройств кодирования, которые могут поддерживать методики, описанные в данном документе.
[0024] Видеокодер 20 может кодировать захваченное, предварительно захваченное или сгенерированное компьютером видео. Как только кодировано, видеокодер 20 может выводить это кодированное видео модему 22. Модем 22 затем может модулировать кодированное видео согласно стандарту связи, такому как протокол беспроводной связи, тогда как передатчик 24 может передать модулированные кодированные видеоданные устройству 14 адресату. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, разработанные для модуляции сигналов. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0025] Захваченное, предварительно захваченное или сгенерированное компьютером видео, которое кодируется видеокодером 20, также может быть сохранено на носитель 34 хранения или файловый сервер 36 для последующего извлечения, декодирования и потребления. Носитель 34 хранения может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память или любые другие подходящие цифровые носители хранения для хранения кодированного видео. Устройство 14 адресат может осуществлять доступ к кодированному видео, хранимому на носителе 34 хранения или файловом сервере 36, декодировать это кодированное видео для генерирования декодированного видео и проигрывать это декодированное видео.
[0026] Файловый сервер 36 может представлять собой любой тип сервера, способного хранить кодированное видео и передавать это кодированное видео устройству 14 адресату. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP сервер, подключаемые к сети устройства хранения (NAS), накопитель на локальном диске или любой другой тип устройства, способного хранить кодированные видеоданные и передавать их устройству адресату. Передача кодированных видеоданных от файлового сервера 36 может представлять собой потоковую передачу, передачу загрузки или их комбинацию. Устройство 14 адресат может осуществлять доступ к файловому серверу 36 в соответствии с любым стандартом соединения для данных, в том числе Интернет соединение. Это соединение может включать в себя беспроводной канал (например Wi-Fi соединение или беспроводное сотовое соединение для данных), проводное соединение (например DSL, кабельный модем и т.д.), комбинацию и проводного и беспроводного каналов или любой другой тип канала связи, подходящего для осуществления доступа к кодированным видеоданным, хранимым на файловом сервере.
[0027] Устройство 14 адресат, в примере по Фиг. 1, включает в себя приемник 26, модем 28, видеодекодер 30, устройство 32 отображения. Приемник 26 устройства 14 адресата принимает информацию по каналу 16 и модем 28 демодулирует информацию для выработки демодулированного битового потока для видеодекодера 20. Информация, передаваемая по каналу 16, может включать в себя разнообразие информации синтаксиса, сгенерированной видеокодером 20 для использования видеодекодером 30 при декодировании связанных кодированных видеоданных. Такой синтаксис также может быть включен в кодированные видеоданные, хранимые на носителе 34 хранения или файловом сервере 36. Каждое из видеокодера 20 и видеодекодера 30 может формировать часть соответствующего кодера-декодера (CODEC), который способен кодировать или декодировать видеоданные.
[0028] Устройство 32 отображения устройства 14 адресата представляет любой тип средства отображения, способного представлять видеоданные для потребления наблюдателем. Несмотря на то, что показано как объединенное с устройством 14 адресатом, устройство 32 отображения может быть объединено с устройством 14 адресатом или быть внешним относительно него. В некоторых примерах устройство 14 адресат может включать в себя интегрированное устройство отображения и также может быть сконфигурировано для сопряжения с внешним устройством отображения. В других примерах устройство 14 адресат может представлять собой устройство отображения. В общем, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из многообразия устройств отображения, например жидкокристаллическое устройство отображения (LCD), плазменное устройство отображения, устройство отображения на органических светодиодах (OLED), или другой тип устройства отображения.
[0029] В общем, это раскрытие может относиться к видеокодеру 20, «сигнализирующему» информацию синтаксиса другому устройству, такому как видеодекодер 30. Следует понимать, однако, что видеокодер 20 может сигнализировать информацию посредством связи элементов синтаксиса с различными кодируемыми участками видеоданных. Таким образом, видеокодер 20 может «сигнализировать» данные путем сохранения некоторых элементов синтаксиса в заголовки различных кодируемых участков видеоданных. В некоторых случаях такие элементы синтаксиса могут быть кодированы и сохранены (например сохранены на носитель 34 хранения или файловый сервер 36) перед их приемом и декодированием видеодекодером 30. Таким образом, термин «сигнализируют» в общем может относиться к передаче синтаксиса или других данных, используемых для декодирования сжатых видеоданных вне зависимости от того, происходит ли такая передача в реальном или близком к реальному времени или в течение промежутка времени, как это может происходить при сохранении элементов синтаксиса на носитель во время кодирования, которые затем могут быть извлечены устройством декодирования в любое время после их сохранения на этот носитель.
[0030] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту сжатия видео, такому как разрабатываемый в настоящее время стандарт Высокоэффективного Видеокодирования (HEVC) и могут соответствовать Тестовой Модели HEVC (HM). В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно другим частным или промышленным стандартам, таким как стандарт ITU-T H.264, в качестве альтернативы называемый MPEG-4, Часть 10, Усовершенствованное Видеокодирование (AVC) или расширениям таких стандартов. Методики этого раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0031] HM ссылается на блок видеоданных как единицу кодирования (CU). В общем CU имеет назначение, аналогичное макроблоку, кодируемому согласно H.264, за исключением того, что CU не имеет отличия по размеру, связанного с макроблоками из H.264. Таким образом, CU может быть разбита на суб-CU (суб-единицы кодирования). В общем, ссылки в этом раскрытии на CU могут ссылаться на наибольшую единицу кодирования (LCU) графического изображения или на суб-CU из LCU. Например, данные синтаксиса в пределах битового потока могут определять LCU, которая является наибольшей единицей кодирования, исходя из числа пикселей. LCU может быть разбита на суб-CU, и каждая суб-CU может быть разбита на суб-CU. Данные синтаксиса для битового потока могут определять максимальное число раз возможного разбиения LCU, называемое максимальной глубиной CU. Соответственно, битовый поток также может определять наименьшую единицу кодирования (SCU).
[0032] LCU может быть связана с иерархической структурой данных дерева квадрантов. В общем, структура данных дерева квадрантов включает в себя один узел на каждую CU, где корневой узел соответствует LCU. Если CU разбита на четыре суб-CU, узел, соответствующий CU, включает в себя опору для каждого из четырех узлов, которые соответствуют суб-CU. Каждый узел структуры данных дерева квадрантов может обеспечивать данные синтаксиса для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий, разбивается ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно и могут зависеть от того, разбита ли CU на суб-CU.
[0033] CU, которая не разбита, может включать в себя одну или более единиц предсказания (PU). В общем PU представляет всю или участок соответствующей CU и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU кодирована в intra-режиме, PU может включать в себя данные, описывающие режим intra-предсказания для PU. В качестве другого примера, когда PU кодирована в inter-режиме, PU может включать в себя данные, определяющие один или более векторов движения для PU. Вектор движения обычно идентифицирует совместно размещенную CU в одном или более опорных кадрах, где термин «опорный кадр» относится к кадру, который возникает во времени до или после кадра, в котором размещена PU. Данные для CU, определяющие PU (или несколько PU), также могут быть описаны, например, деление CU на одну или боле PU. Режимы деления могут отличаться в зависимости от того, является ли CU некодированной, кодируется в режиме intra-предсказания или кодируется в режиме inter-предсказания.
[0034] Данные, определяющие вектор движения могут описывать, например горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность одной четвертой пикселя или точность одной восьмой пикселя), опорный кадр, на который указывает вектор движения, направление предсказания, которое идентифицирует, находится ли идентифицированный опорный кадр до или после текущего кадра и/или опорный список (например, список 0 или список 1) для вектора движения. В качестве альтернативы, данные, определяющие вектор движения могут описывать вектор движения в показателях того, что называется предиктор вектора движения (MVP). Предиктор вектора движения может включать в себя вектор движения соседствующей PU или временно совместно размещенной PU. Обычно, список из пяти MVP формируется определяемым образом (например, перечисление MVP начинается с тех, которые имеют наибольшую амплитуду, к тем, которые имеют наименьшую амплитуду т.е., наибольшее или наименьшее смещение между текущей PU, которая должна быть кодирована, и опорной PU или перечисление MVP на основе местоположения т.е. блоки сверху, блоки слева, блоки угла, временные блоки), где четыре из пяти MVP представляют собой пространственные MVP, выбранные из четырех соседствующих PU, и пятый MVP представляет собой временно совместно размещенный MVP, выбранный из временно совместно размещенной PU в опорном кадре.
[0035] Хотя обычно временной вектор движения - кандидат является совместно размещенным в том же самом участке опорного кадра, что и таковой текущего участка в текущем кадре, методики не должны быть ограничены строго совместно размещенными временными векторами движения - кандидатами. Вместо этого, методики могут быть реализованы относительно любого временного вектора движения - кандидата вне зависимости от того, совместно размещен ли он или нет. В некоторых случаях видеокодер может идентифицировать временной вектор движения - кандидат, который не является совместно размещенным с текущим блоком или участком текущего кадра, и выбирать этот временной вектор движения - кандидат в качестве временного MVP. Обычно видеокодер может сигнализировать, что используется временный MVP, не являющийся совместно размещенным или, в некоторых случаях, данный контекст может указывать, что используется временный MVP, не являющийся совместно размещенным (в этом случае видеокодер может не сигнализировать то, был ли выбран временный MVP, не являющийся совместно размещенным).
[0036] После формирования списка из пяти MVP, видеокодер 20 может оценить каждый из этих MVP для определения того, какой обеспечивает лучшие характеристики скорости передачи и искажения, которые лучше всего подходят заданному профилю скорости передачи и искажения, выбранному для кодирования видео. Видеокодер 20 может выполнять процедуру оптимизации скорость передачи - искажение (RDO) относительно каждого из пяти MVP, выбирая тот из MVP, который имеет наилучшие результаты RDO. В качестве альтернативы, видеокодер 20 может выбирать один из пяти MVP, сохраненных в список, который выполняет наилучшую аппроксимацию вектора движения, определенного для текущей PU.
[0037] В любом случае, видеокодер 20 может задавать вектор движения, используя данные, которые содержат индекс, идентифицирующий выбранный один из MVP в списке из пяти MVP, один или более опорных кадров, на которые указывает вектор движения (часто в форме списка), и направление предсказания, идентифицирующее, является ли предсказание однонаправленным или двунаправленным. В качестве альтернативы, данные, определяющие вектор движения, могут лишь задавать индекс выбранного MVP в списке из пяти MVP без задания опорного кадра и направления предсказания, который сигнализирует видеодекодерам, что выбранный один из MVP должен быть использован в своей полноте для текущей PU.
[0038] В дополнение к наличию одной или более PU, которые определяют один или более векторов движения, CU может включать в себя одну или более единиц преобразования (TU). Следом за предсказанием с использованием PU, видеокодер может вычислить остаточное значение для участка CU, соответствующего PU, где это остаточное значение также может называться остаточными данными. Остаточное значение может быть преобразовано, квантовано и сканировано. TU необязательно ограничена размером PU. Таким образом, TU могут быть больше или меньше, чем соответствующие PU для той же самой CU. В некоторых примерах максимальный размер TU может представлять собой размер соответствующей CU. Это раскрытие также использует термин «блок» для ссылки на любую из CU, PU и/или TU или их комбинацию.
[0039] В общем, кодированные видеоданные могут включать в себя данные предсказания и остаточные данные. Видеокодер 20 может вырабатывать данные предсказания во время режима intra-предсказания или режима inter-предсказания. Intra-предсказание в общем влечет за собой предсказание пиксельных значений в блоке графического изображения относительно опорных выборок в соседствующих, ранее кодированных блоках того же самого графического изображения. Inter-предсказание в общем влечет за собой предсказание пиксельных значений в блоке графического изображения относительно данных ранее кодированного графического изображения.
[0040] Следом за intra- или inter- предсказанием, видеокодер 20 может вычислить остаточные пиксельные значения для блока. Остаточные значения обычно соответствуют разностям между предсказанными данными пиксельных значений для блока и истинными данными пиксельных значений блока. Например, остаточные значения могут включать в себя пиксельные разностные значения, указывающие разности между кодированными пикселями и пикселями предсказания. В некоторых примерах кодированные пиксели могут быть связаны с блоком пикселей, который должен быть кодирован, и пиксели предсказания могут быть связаны с одним или более блоками пикселей, используемыми для предсказания кодированного блока.
[0041] Чтобы дополнительно сжать остаточное значение блока, остаточное значение может быть преобразовано в набор коэффициентов преобразования, который уплотняет как можно больше данных (также именуется «энергией») в как можно меньше коэффициентов. Методики преобразования могут содержать процесс дискретного косинусного преобразования (DCT) или концептуально аналогичный процесс, целочисленные преобразования, вейвлет-преобразования или другие типы преобразований. Преобразование конвертирует остаточные значения пикселей из пространственной области в область преобразования. Коэффициенты преобразования соответствуют двумерной матрице коэффициентов, которая обычно того же размера, что и исходный блок. Другими словами, существуют столько же коэффициентов преобразования, сколько пикселей в исходном блоке. Однако вследствие преобразования многие коэффициенты преобразования могут иметь значения, равные нулю.
[0042] Видеокодер 20 затем может квантовать коэффициенты преобразования, чтобы дополнительно сжать видеоданные. Квантование обычно влечет за собой отображение значений в пределах относительно большого диапазона на значения в относительно малом диапазоне, тем самым уменьшая количество данных, необходимых для представления квантованных коэффициентов преобразования. Более конкретно, квантование может быть применено согласно параметру квантования (QP), который может быть определен на уровне LCU. Соответственно тот же самый уровень квантования может быть применен ко всем коэффициентам преобразования в TU, связанных с различными PU из CU в пределах LCU. Однако, вместо того чтобы сигнализировать сам QP, может быть осуществлена сигнализация изменения (т.е. дельты) в QP с LCU. Дельта QP определяет изменение в параметре квантования для LCU относительно некоторого опорного QP, такого как QP ранее переданной LCU.
[0043] Следом за квантованием, видеокодер 20 может сканировать коэффициенты преобразования, вырабатывая одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Видеокодер 20 затем может выполнять статистическое кодирование без потерь (которое обычно называют ошибочно употребляемым термином «энтропийное кодирование»), чтобы кодировать получающийся массив, чтобы еще дополнительно сжать данные. В общем, энтропийное кодирование содержит один или более процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования и/или другую информацию синтаксиса. Например, элементы синтаксиса, такие как дельта QP, векторы предсказания, режимы кодирования, фильтры, смещения или другая информация также могут быть включены в энтропийно кодированный битовый поток. Просканированные коэффициенты затем энтропийно кодируют вместе с любой информацией синтаксиса, например посредством контекстно-зависимого адаптивного кодирования с переменной длинной кодового слова (CAVLC), контекстно-зависимого адаптивного двоичного арифметического кодирования (CABAC) или любого другого процесса статистического кодирования без потерь.
[0044] Как указано выше по тексту, данные, определяющие векторы движения для PU, могут принимать некоторое число форм. Видеокодер 20 может реализовать различные методы, посредством которых векторы движения могут быть выражены для сжатия данных вектора движения. Видеокодер 20 может реализовать то, что называется режимом слияния для выражения векторов движения в качестве индекса, идентифицирующего MVP, который хранится в списке MVP, созданном определенным образом. Видеодекодер 30 при реализации обращения этого режима слияния принимает этот индекс, реконструирует список из пяти MVP согласно определенному образу и выбирает один из пяти MVP в списке, указанный индексом. Видеодекодер 30 затем реализовывает выбранный один из MVP в качестве вектора движения для связанной PU с тем же самым разрешением выбранного одного из MVP и который указывает на тот же самый опорный кадр, на который указывает выбранный один из MVP. При реализации режима слияния видеокодер 20 может не нуждаться в выполнении оценки движения, в полной мере необходимой для получения вектора движения, задания горизонтальной и вертикальной составляющих вектора движения, разрешения вектора движения, направления вектора движения (означающего, указывает ли вектор движения на кадр временно до или после текущего кадра) или индекса опорного кадра, тем самым потенциально сокращая циклы процессора, требуемые для определения вектора движения, и сжимая данные вектора движения.
[0045] Видеокодер 20 также может реализовать режим адаптивного предсказания вектора движения (AMVP), который, аналогично режиму слияний, включает в себя выражение векторов движения в качестве индекса, идентифицирующего MVP, который храниться в списке MVP, созданном определенным образом. Однако в противоположность режиму слияния видеокодер 20 также может задавать направление предсказания и опорный кадр, эффективно замещая эти участки выбранного одного из MVP. При реализации режима AMVP видеокодер 20 может не нуждаться в выполнении оценки движения в полной мере необходимой для получения вектора движения, задания горизонтальной и вертикальной составляющих вектора движения, разрешения вектора движения, тем самым потенциально сокращая циклы процессора, требуемые для определения вектора движения, и сжимая данные вектора движения.
[0046] С развитием различных стандартов кодирования еще более эффективные представления векторов движения были разработаны. Например, предложения к развивающимся стандартам HEVC предложили методы, посредством которых индекс MVP может быть сжат посредством процесса, называемого «отсечение» или «отсечение MVP». При выполнении этого процесса отсечения видеокодер 20 создает список из пяти MVP определенным образом и затем отсекает или удаляет любые избыточные MVP. Таким образом, видеокодер 20 может удалять любые MVP, имеющие одну и ту же амплитуду по обеим составляющим X и Y, и опирающиеся на один и тот же опорный кадр, причем эти MVP рассматриваются в этом раскрытии как «избыточные MVP». В качестве альтернативы видеокодер 20 может лишь добавлять MVP к списку, который является «уникальным», что означает, что эти MVP имеют амплитуды в направлении X и Y, отличные от каждого другого MVP, уже включенного в список, и/или опираются на другой опорный кадр. В зависимости от того, выполнено ли отсечение после добавления к списку или отсечение при создании списка, процесс отсечения может уменьшать размер списка с тем результатом, что меньше битов может быть использовано для сигнализации или иначе задания выбранного одного из MVP, поскольку более короткий список обычно требует меньшего числа битов для выражения большего значения индекса.
[0047] Например, предположим для целей иллюстрации, что ни один из пяти MVP не отсечен. В этом случае видеокодер может сигнализировать индекс в этот список из пяти MVP, чтобы указать конкретный MVP, который должен быть выбран, используя усеченный унарный код, который содержит не более четырех бит. В предложениях, усеченный унарный код, используемый для сигнализации выбора пятого MVP в списке из пяти MVP, представляет собой 1111, четвертого MVP в списке из пяти MVP, представляет собой 1110, третьего MVP в списке из пяти MVP, представляет собой 110, второго MVP в списке из пяти MVP, представляет собой 10 и первого MVP в списке из пяти MVP, представляет собой 0. Если, однако, список MVP может быть усечен до трех MVP (что означает, что два MVP избыточны), видеокодер 20 может использовать усеченный унарный код, который потребляет не более двух битов (например, где третий MVP может быть сигнализирован с использованием кода 11), сохраняя потенциально один бит на экземплярах, где отсечение не применяется или невозможно (например, когда отсутствуют избыточные MVP), и выбирается пятый или четвертый MVP в списке из пяти MVP. До некоторой степени, таким образом, код зависит от размера списка MVP, где меньший список MVP (что означает список с меньшим количеством MVP) имеет результатом меньший код (что означает, что коду требуется меньше битов для выражения выбранного MVP из усеченного списка MVP).
[0048] Тогда как отсечение может улучшить эффективность кодирования посредством уменьшения длин кодов, используемых для сигнализации индекса выбранного MVP в списке MVP, это отсечение также может воздействовать на возможность видеодекодера 30 успешно синтаксически проанализировать битовый поток. Поскольку код зависит от размера усеченного списка MVP, видеодекодеру 30 необходимо знать количество MVP, которые находятся в усеченном списке MVP. Однако, когда опорный кадр, из которого потерян временно совместно размещенный MVP, этот временно совместно размещенный MVP недоступен и видеодекодер 30 не может определить, является ли этот MVP уникальным или избыточным. В результате, видеодекодер 30 не может определить, включил ли в себя усеченный список этот временно совместно размещенный MVP и, следовательно, не может определить размер усеченного списка MVP. Неспособный определить размер усеченного списка MVP, видеодекодер 30 затем не может определить максимальную длину для кода, что в свою очередь препятствует возможности видеодекодера 30 синтаксически проанализировать код из битового потока.
[0049] В соответствии с методиками, описанными в этом раскрытии, видеокодер 20 может задавать MVP потенциально надежным, но эффективным образом посредством отсечения избыточных пространственных MVP без включения временно совместно размещенного MVP во время процесса отсечения. Другими словами, видеокодер 20 может реализовывать методики, описанные в этом раскрытии, для формирования промежуточного списка MVP, который включает в себя только пространственные MVP, выполнения усечения относительно этого промежуточного списка MVP и затем, объединения временно совместно размещенного MVP с усеченным промежуточным списком MVP для формирования усеченного списка MVP. Таким образом, потеря опорного кадра, задающего временно совместно размещенный MVP может не препятствовать синтаксическому анализу битового потока, что обычно имеет место в традиционных системах, все еще сохраняя по меньшей мере некоторые усиления эффективности кодирования, доступные посредством применения процесса отсечения.
[0050] Чтобы проиллюстрировать, видеокодер 20 сначала определяет пространственные векторы движения - кандидаты, связанные с текущим участком, например CU, текущего видеокадра. Снова пространственные векторы движения - кандидаты включают в себя соседствующие векторы движения, определенные для соседствующих PU, прилегающих к текущей PU, связанной с соответствующей CU. Типично, эти соседствующие PU расположены смежно с текущей PU слева, сверху и слева, непосредственно сверху и сверху и справа, что показано более подробно относительно примера по Фиг. 6. Видеокодер 20 использует эти пространственные векторы движения - кандидаты в качестве этих пространственных векторов движения - кандидатов уже определенных для этих блоков. Для любых блоков, расположенных непосредственно справа или снизу текущей PU, видеокодер 20 должен лишь вычислить вектор движения для этих блоков, учитывая, что видеокодер 20 обычно выполняет оценку/компенсацию движения сверху вниз, слева направо. Однако, несмотря на то, что описано относительно этих пространственных векторов движения, методики могут быть реализованы в видеокодерах 20, которые выполняют оценку/компенсацию движения в другом порядке (сверху вниз, справа налево). В дополнение, методики могут быть реализованы относительно большего или меньшего количества пространственных или временных векторов движения.
[0051] После определения этих пространственных векторов движения видеокодер 20 затем отсекает пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов. Видеокодер 20 может идентифицировать дублирующиеся пространственные векторы движения - кандидаты как любые из пространственных векторов движения - кандидатов, имеющих одну и ту же амплитуду для составляющих и по оси x и по оси y векторов движения - кандидатов и которые выходят из одного и того же опорного кадра. Видеокодер 20 выполняет отсечение либо посредством удаления дубликатов из того, что может называться промежуточным списком пространственных векторов движения - кандидатов, либо лишь добавления пространственного вектора движения - кандидата к этому промежуточному списку после определения того, что пространственный вектор движения - кандидат, который должен быть добавлен к этому списку, не является дубликатом.
[0052] После отсечения пространственных векторов движения - кандидатов таким образом видеокодер 20 может затем определять временной вектор движения - кандидат для текущей PU текущего видеокадра. Снова временной вектор движения - кандидат содержит вектор движения, определенный для PU опорного видеокадра совместно размещенного в том же самом местоположении, что и текущая PU в текущем видеокадре. Видеокодер 20 затем может выбирать временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после выполнения процесса отсечения в качестве выбранного вектора движения - кандидата. Видеокодер 20 затем сигнализирует выбранный вектор движения - кандидат в битовом потоке.
[0053] В некоторых случаях видеокодер 20 может определить, является ли каждый из определенных пространственных векторов движения - кандидатов либо пространственно предсказанным, либо временно предсказанным. Другими словами, определенные пространственные векторы движения - кандидаты сами могут быть временно (во времени) предсказанными из совместно размещенного блока в опорном кадре или пространственно предсказанными из блока, прилегающего к блоку, для которого определен каждый из пространственных векторов движения - кандидатов. Видеокодер 20 может в ответ на это определение дополнительно удалить один или более определенных пространственных векторов движения - кандидатов из процесса отсечения. Видеокодер 20 может например удалять те из пространственных векторов движения - кандидатов, которые определены как сами являющиеся временно предсказанными из процесса отсечения, поскольку эти временно предсказанные пространственные векторы движения - кандидаты могут быть недоступны декодеру, должен ли участок опорного кадра из которого предсказаны эти временно предсказанные пространственные векторы движения - кандидаты быть потерянным. Видеокодер 20 затем может выбирать временные векторы движения - кандидаты, один из временно предсказанных пространственных векторов движения - кандидатов или один из пространственно предсказанных пространственных векторов движения - кандидатов, оставшихся после отсечения и сигнализировать этот выбранный вектор движения - кандидат в битовом потоке.
[0054] В качестве альтернативы видеокодер 20 может вместо того, чтобы удалять временно предсказанные пространственные векторы движения из процесса отсечения, заменяет эти временно предсказанные пространственные векторы движения - кандидаты векторами движения - кандидатами по умолчанию, определяющими информацию движения по умолчанию. Эта информация вектора движения по умолчанию может содержать, например амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно и индекс опоры, идентифицирующий опорный кадр. Видеокодер 20 может определять эту информацию вектора движения по умолчанию, посредством получения среднего этих доступных пространственно предсказанных пространственных векторов движения - кандидатов, взятия первого доступного пространственно предсказанного пространственного вектора движения - кандидата или использования информации вектора движения по умолчанию, которая статистически конфигурируется и в видеокодере 20 и в видеодекодере 30, чтобы назвать несколько примеров.
[0055] Посредством удаления тех из пространственных векторов движения - кандидатов, которые могут быть потеряны или недоступны для видеодекодера 30 (например, вследствие ошибок в передаче сжатых видеоданных или ошибок хранения либо в видеокодере 20, либо в видеодекодере 30) из процесса отсечения, видеокодер 20 может сигнализировать выбранный вектор движения - кандидат таким образом, чтобы позволить видеодекодеру 30 надлежащим образом синтаксически анализировать битовый поток в случае, когда эти временно предсказанные пространственные векторы движения - кандидаты теряются или становятся недоступными. Аналогично, в упомянутой альтернативе, посредством замены временно предсказанных пространственных векторов движения - кандидатов вектором движения - кандидатом по умолчанию, видеокодер 20 может сигнализировать выбранный вектор движения - кандидат таким образом, который позволяет видеодекодеру 30 надлежащим образом синтаксически анализировать битовый поток в случае, когда эти временно предсказанные пространственные векторы движения - кандидаты теряются или становятся недоступными.
[0056] Типично, видеокодер 20 сигнализирует выбранный вектор движения - кандидат с использованием унарного кода представляющего индекс выбранного вектора движения - кандидата, как размещен в списке. Видеокодер 20 может размещать временной вектор движения - кандидат и пространственные векторы движения - кандидаты, оставшиеся после выполнения процесса отсечения, в наборе или определенным образом (например, с наибольшей амплитуды к наименьшей амплитуде, с наименьшей амплитуды к наибольшей амплитуде, временной вектор движения сразу за которым следуют оставшиеся пространственные векторы движения, упорядоченные либо с наибольшей к наименьшей амплитуде, либо с наименьшей к наибольшей амплитуде и т.д.) формируя список векторов движения - кандидатов. В качестве альтернативы видеокодер 20 может сигнализировать некоторый идентификатор, указывающий, как векторы движения размещены в списке. Независимо от кодирования индекса выбранного одного из векторов движения - кандидатов, как сохраненного в этот список, с использованием унарного кода вышеописанным образом, видеокодер 20 затем идентифицирует один из векторов движения - кандидатов, сохраненных в этот список.
[0057] Видеодекодер 30 принимает этот битовый поток, декодирует индекс и формирует промежуточный список пространственных векторов движения - кандидатов, если доступны. Как отмечено выше по тексту, один или более из пространственных векторов движения - кандидатов могут не быть доступными в случаях, где видеокодер 20 применял предсказание вектора движения для кодирования вектора движения для соседствующего блока и выбирал временной вектор движения, где опорный кадр, определяющий этот временной вектор движения был потерян (например, вследствие повреждения памяти, ошибки шины или ошибки передачи). В качестве альтернативы один или более пространственных векторов движения - кандидатов может не быть доступен, когда видеокодер 20 применял предсказание вектора движения для кодирования вектора движения для этой соседствующей PU и выбирал один из пространственных векторов движения, которые сами были векторами движения, предсказанными из временного вектора движения, где опорный кадр, определяющий этот временной вектор движения был потерян (например, вследствие повреждения памяти, ошибки шины или ошибки передачи). Видеодекодер 30 может решать эту проблему либо удаляя недоступные временно предсказанные векторы движения - кандидаты из процесса отсечения, либо, в качестве альтернативы, заменяя эти недоступные временно предсказанные пространственные векторы движения - кандидаты вектором движения - кандидатом по умолчанию. Видеодекодер 30 в этом отношении реализует методики, описанные выше по тексту относительно видеокодера 20 по существу аналогичным образом так, чтобы надлежащим образом синтаксически проанализировать выбранный вектор движения - кандидат из битового потока.
[0058] В любом случае, даже предполагая, что один или более векторов движения - кандидатов потеряны, методики позволяют сигнализировать MVP таким образом, который содействует синтаксическому анализу битового потока. Посредством обеспечения того, что временной вектор движения - кандидат всегда присутствует в списке после отсечения, видеокодер 20 обеспечивает то, что видеодекодер 30 может определять число доступных векторов движения и таким образом синтаксически анализировать индекс из битового потока. Аналогично посредством обеспечения того, что временно предсказанные пространственные векторы движения - кандидаты всегда в списке или заменены векторами движениями - кандидатами по умолчанию, которые видеодекодер 30 всегда может воспроизводить, видеокодер 20 обеспечивает то, что видеодекодер 30 может определять число доступных векторов движения и таким образом синтаксически анализировать индекс из битового потока. Таким образом, даже если срез, хранящий временной вектор движения - кандидат и/или временно предсказанный пространственный вектор движения - кандидат потерян, видеодекодер 30 все еще синтаксически анализирует битовый поток вне зависимости от того, используются унарные коды. В частности, видеодекодер 30 может синтаксически анализировать битовый поток со знанием того, что временной вектор движения - кандидат и/или временно предсказанные пространственные векторы движения - кандидаты всегда включен в список MVP и никогда не отсекается из списка MVP. В упомянутой альтернативе, где временно предсказанные пространственные векторы движения - кандидаты заменяются векторами движения - кандидатами по умолчанию, видеокодер 20 эффективно гарантирует то, что такие временно предсказанные пространственные векторы движения - кандидаты не могут быть потеряны поскольку видеодекодер 30 сконфигурирован таким образом, чтобы всегда быть способным определять эти векторы движения с использованием тех же методик, которые выполняет видеокодер 20 для определения этого вектора движения - кандидата по умолчанию.
[0059] Чтобы проиллюстрировать случай, где временной вектор движения - кандидат потерян, рассмотрим случай, где амплитуды пространственных векторов движения - кандидатов составляют 1, 1, 1 и 1 и амплитуда временного вектора движения - кандидата составляет -1. Видеодекодер 30 может реализовать методики для формирования списка, который может называться списком MVP, только с пространственными векторами движения - кандидатами сначала так, что список MVP представляет собой 1, 1, 1 и 1. Декодер затем усекает этот список только пространственных MVP так, что этот список MVP определяется как 1. Декодер затем добавляет временной вектор движения - кандидат к списку MVP так, что список MVP определяется как -1 и 1. Кодер затем может сигнализировать mvp_idx либо 0, либо 1, чтобы указать, что один из этих векторов движения был выбран (или mvp_idx из 0 и 10, если не используется урезанный унарный код). Относительно унарных кодов описанных выше по тексту, методики этого раскрытия устраняют возможность вывода того, что только один вектор движения - кандидат был доступен после отсечения, поскольку всегда будет по меньшей мере один пространственный вектор движения - кандидат и временный пространственный вектор движения - кандидат.
[0060] Таким образом, методики позволяют видеокодерам задавать MVP потенциально надежным, но эффективным образом посредством отсечения избыточных пространственных MVP без рассмотрения временно совместно размещенного MVP во время процесса отсечения. Другими словами, методики формируют промежуточный список MVP, который включает в себя только пространственные MVP, выполняют усечение относительно этого промежуточного списка MVP и затем добавляют временно совместно размещенный MVP к усеченному промежуточному списку MVP для формирования усеченного списка MVP. Таким образом, потеря опорного кадра, определяющего временно совместно размещенный MVP может не препятствовать синтаксическому анализу битового потока, что имеет место в традиционных системах, при этом все еще сохраняя усиления эффективности кодирования, доступные посредством применения процесса отсечения.
[0061] В некоторых случаях методики могут быть применены в других контекстах. Например, четвертая версия Тестовой Модели HEVC (HM 4.0) предлагает отсечение MVP и затем добавление дополнительных MVP, если общее число MVP, оставшихся после отсечения, составляет менее пяти. Другими словами, HM 4.0 отсекла бы пять MVP (т.е. один временный и четыре пространственных) для выработки усеченного списка MVP. Если число MVP в этом усеченном списке MVP меньше пяти, HM 4.0. добавляет не являющиеся избыточными MVP до тех пор, пока общее число MVP в усеченном списке не будет равно пяти. Эти не являющиеся избыточными MVP могут быть выбраны из других пространственных или временных блоков или могут быть сгенерированы на основе MVP в усеченном списке MVP (например, выбирают у-составляющую одного MVP в усеченном списке MVP и x-составляющую из другого отличного MVP в усеченном списке MVP). В этом контексте видеокодер может реализовать методики, описанные в этом раскрытии, чтобы выбрать дополнительные не являющиеся избыточными MVP так, что только пространственные MVP выбираются и/или используются, чтобы генерировать эти дополнительные не являющиеся избыточными MVP.
[0062] Выбирая только пространственные MVP, либо используя существующие пространственные MVP, оставшиеся после отсечения, чтобы генерировать эти дополнительные не являющиеся избыточными MVP, видеокодер может гарантировать то, что видеодекодер может надлежащим образом определять выбранный один из MVP. Таким образом, всегда обладая пятью MVP, видеокодер гарантирует то, что видеодекодер всегда может синтаксически проанализировать индекс MVP из битового потока, но должен ли временный MVP быть потерян, видеодекодер может не быть способным точно создать список MVP, поскольку MVP не может определить порядок MVP относительно друг друга, когда временный MVP потерян. Методики, описанные в этом раскрытии могут сокращать или потенциально устранять воздействие от потери временных MVP, не выбирая любые временные MVP или пространственные MVP, которые сами были предсказаны из временных MVP, в качестве дополнительных не являющихся избыточными MVP.
[0063] Методики для задания предсказаний вектора движения, описанные относительно примеров этого раскрытия могут быть применены к видеокодированию при поддержке любых из ряда мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие приложения. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать однонаправленную или двунаправленную передачу видео для приложений, таких как потоковая передача видео, воспроизведение видео, вещание видео и/или видео-телефония.
[0064] Несмотря на то, что не показано на Фиг. 1, в некоторых аспектах каждый из видеокодера 20 и видеодекодера 30 может быть объединен с аудио- кодером и декодером и может включать в себя надлежащие блоки MUX-DEMUX, или другое аппаратное обеспечение или программное обеспечение, чтобы обрабатывать кодирование и аудио и видео в общем потоке данных или раздельных потоках данных. Если применимо, в некоторых примерах блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0065] Каждый из видеокодера 20 и видеодекодера 30 может быть реализован как любой из ряда подходящих схем кодера, например один или более микропроцессоров, цифровых сигнальных процессоров (DSP), интегральных схем специального назначения (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или любых их комбинаций. Когда методики реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем, невременном считываемом компьютером носителе и исполнять инструкции в аппаратном обеспечении с использованием одного или более процессоров для выполнения методик этого раскрытия. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любые из которых могут быть интегрированы как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве.
[0066] Фиг. 2 представляет собой блок-схему, иллюстрирующую пример видеокодера 20, который может реализовывать методики для задания предикторов вектора движения. Видеокодер 20 может выполнять intra- и inter- кодирование блоков в пределах видеокадров, включающих в себя макроблоки или разделы или подразделы макроблоков. Intra-кодирование полагается на пространственное предсказание, чтобы сократить или удалить пространственную избыточность в видео в пределах заданного видеокадра. Inter-кодирование полагается на временное предсказание, чтобы сократить или удалить временную избыточность в видео в пределах смежных кадров видеопоследовательности. Intra-режим (I-режим) может относиться к любым из нескольких пространственно-основанных режимов сжатия и inter-режимы, например однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим) могут относиться к любым из нескольких временно-основанных режимов сжатия. Несмотря на то, что компоненты для кодирования в inter-режиме указаны на Фиг. 2, следует понимать, что видеокодер 20 может дополнительно включать в себя компоненты для кодирования в intra-режиме. Однако такие компоненты не проиллюстрированы в целях краткости и ясности.
[0067] Как показано на Фиг. 2, видеокодер 20 принимает текущий видеоблок в пределах видеокадра, который должен быть кодирован. В примере по Фиг. 2 видеокодер 20 включает в себя блок 44 компенсации движения, блок 42 оценки движения, память 64, сумматор 50, блок 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Для восстановления видеоблока, видеокодер 20 также включает в себя блок 58 обратного квантования, блок 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на Фиг. 2) также может быть включен в состав для фильтрации границ блоков для удаления артефактов блочности из восстановленного видео. Если желательно, фильтр удаления блочности обычно будет фильтровать вывод сумматора 62. Хотя описан как включающий в себя память 64, которая обычно называется оперативной памятью (RAM), динамической оперативной памятью (DRAM), статической оперативной памятью (SRAM), флэш-памятью или другим постоянным или непостоянным носителем хранения на чипе, любой тип невременного считываемого компьютером носителя может быть использован, в том числе жесткие диски, накопители на оптических дисках, накопители на дисках и т.п.
[0068] Во время процесса кодирования видеокодер 20 принимает видеокадр или срез, который должен быть кодирован. Кадр или срез может быть разделен на многочисленные видеоблоки. Блок 42 оценки движения и блок 44 компенсации движения выполняет кодирование с inter-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Блок 46 intra-предсказания также может выполнять кодирование с intra-предсказанием принятого видеоблока относительно одного или более соседствующих блоков в одном и том же кадре или срезе в качестве блока, который должен быть кодирован, чтобы обеспечить пространственное сжатие.
[0069] Как дополнительно показано в примере по Фиг. 2, видеокодер 20 также включает в себя блок 40 выбора режима. Блок 40 выбора режима может выбирать один из режимов кодирования, intra или inter, например на основе результатов ошибки, и обеспечивает получающийся intra- или inter- кодированный блок сумматору 50, чтобы генерировать остаточные данные блока и сумматору 62, чтобы восстановить кодированный блок для использования в качестве опорного кадра.
[0070] Блок 42 оценки движения и блок 44 компенсации движения могут быть глубоко интегрированными, но проиллюстрированы отдельно в концептуальных целях. Оценка движения представляет собой процесс генерирования векторов движения, который оценивает движение для видеоблоков. Вектор движения, например может указывать смещение блока предсказания в пределах опорного кадра предсказания (или другой кодированной единицы) относительно текущего блока кодируемого в пределах текущего кадра (или другой единицы кодирования). Блок предсказания представляет собой блок, который найден для наибольшего соответствия блоку, который должен быть кодирован, в показателях пиксельной разности, которая может быть определена посредством суммы абсолютной разности (SAD), суммы квадратов разности (SSD) или других метрик разности. Вектор движения также может указывать смещение раздела макроблока. Компенсация движения может вовлекать выборку и генерирование блока предсказания на основе вектора движения, определенного оценкой движения. Снова блок 42 оценки движения и блок 44 компенсации движения могут быть функционально интегрированы в некоторых примерах.
[0071] Блок 42 оценки движения вычисляет вектор движения для видеоблока inter-кодированного кадра посредством сравнения видеоблока с видеоблоками опорного кадра в памяти 64. Блок 44 компенсации движения также может интерполировать суб-целые пиксели опорного кадра, например I-кадра или P-кадра. Развивающийся стандарт HEVC (и стандарт ITU H.264) хранит опорные кадры посредством одной или более структур данных списка, которые обычно называют «списками». Следовательно, данные, хранящиеся в памяти 64, также могут быть рассмотрены как списки. Блок 42 оценки движения сравнивает блоки одного или более опорных кадров (или списков) из памяти 64 с блоком, который должен быть кодирован, текущего кадра, например P-кадра или B-кадра. Когда опорные кадры в памяти 64 включают в себя значения для суб-целых пикселей, вектор движения, вычисляемый блоком 42 оценки движения может относится к положению суб-целых пикселей опорного кадра. Блок 42 оценки движения отправляет вычисленный вектор движения блоку 56 энтропийного кодирования и блоку 44 компенсации движения. Блок опорного кадра (который может содержать CU), идентифицируемый вектором движения, может быть назван блоком предсказания. Блок 44 компенсации движения вычисляет значения ошибки для блока предсказания опорного кадра.
[0072] Блок 44 компенсации движения может вычислять данные предсказания, основанные на блоке предсказания. Видеокодер 20 формирует остаточный видеоблок посредством вычитания данных предсказания из блока 44 компенсации движения из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Блок 52 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально-аналогичное преобразование, к остаточному блоку, вырабатывая видеоблок, содержащий остаточные значения коэффициентов преобразования. Блок 52 преобразования может выполнять другие преобразования, например такие, как определены стандартом H.264, которые являются концептуально-аналогичными DTC. Волновые преобразования, целочисленные преобразования, преобразования поддиапазона или другие типы преобразований также могут быть использованы. В любом случае блок 52 преобразования применяет преобразование к остаточному блоку, вырабатывая блок остаточных коэффициентов преобразования. Преобразование может конвертировать остаточную информацию из пиксельного значения области в область преобразования, такую как частотная область. Блок 54 квантования квантует остаточные коэффициента преобразования для дополнительного сокращения скорости передачи в битах. Процесс квантования может сократить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования.
[0073] Следом за квантованием, блок 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, блок 56 энтропийного кодирования может выполнить контекстно-зависимое адаптивное кодирование с переменной длинной кодового слова (CAVLC), контекстно-зависимое адаптивное двоичное арифметическое кодирование (CABAC) или другую методику энтропийного кодирования. Следом за энтропийным кодированием блоком 56 энтропийного кодирования, кодированное видео может быть передано другому устройству или помещено в архив для передачи или излечения в будущем. В случае контекстно-зависимого адаптивного двоичного арифметического кодирования контекст может быть основан на соседствующих макроблоках.
[0074] В некоторых случаях блок 56 энтропийного кодирования или другой блок видеокодера 20 может быть сконфигурирован для выполнения функций другого кодирования, в дополнение к энтропийному кодированию. Например, блок 56 энтропийного кодирования может быть сконфигурирован для определения значений CBP для макроблоков или разделов. Также, в некоторых случаях, блок 56 энтропийного кодирования может выполнять кодирование по длинам серий коэффициентов в макроблоке или его разделе. В частности, блок 56 энтропийного кодирования может применять зигзагообразное сканирование или другой шаблон сканирования для сканирования коэффициентов преобразования в макроблоке или разделе и кодировать серии нулей для дополнительного сжатия. Блок 56 энтропийного кодирования также может создать информацию заголовка с надлежащими элементами синтаксиса для передачи в кодированном битовом потоке видео.
[0075] Блок 58 обратного квантования и блок 60 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, для восстановления остаточного блока в пиксельной области, например для использования в будущем в качестве опорного блока. Блок 44 компенсации движения может вычислять опорный блок посредством добавления остаточного блока к блоку предсказания одного из кадров опорного кадра, хранимого в памяти 64. Блок 44 компенсации движения также может применять один или более фильтров интерполяции к восстановленному остаточному блоку для вычисления суб-целых пиксельных значений для использования в оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, выработанному блоком 44 компенсации движения для выработки восстановленного видеоблока для хранения в хранилище опорных кадров памяти 64. Восстановленный видеоблок может быть использован блоком 42 оценки движения и блоком 44 компенсации движения в качестве опорного блока для inter-кодирования блока в последующем видеокадре.
[0076] Как отмечено выше по тексту, блок 42 оценки движения, в некоторых случаях, не вычисляет вектор движения, а взамен определяет список предикторов вектора движения, четыре из которых являются пространственными векторами движения - кандидатами и один из которых является временным вектором движения - кандидатом. Обычно, блок 42 компенсации движения воздерживается от вычисления вектора движения для того, чтобы сократить сложность вычислений оценки движения и тем самым улучшить скорость, с которой видеоданные могут быть кодированы, при одновременном сокращении потребление питания. В соответствии с методиками, описанными в этом раскрытии, блок 42 оценки движения может определять промежуточный список из четырех пространственных векторов движения - кандидатов (или менее, после определения того, что один или более из пространственных векторов движения - кандидатов сами являются временно предсказанными, где такие временно предсказанные пространственные векторы движения - кандидаты удаляются из процесса отсечения), усекать этот список из (потенциально только пространственно предсказанных) пространственных векторов движения - кандидатов и добавлять временной вектор движения - кандидат (и потенциально временно предсказанный пространственный вектор движения - кандидат) к усеченному списку из (потенциально только пространственно предсказанных) пространственных векторов движения - кандидатов. В качестве альтернативы, блок 42 оценки движения может определять промежуточный список из четырех (при замене этих временно предсказанных пространственных векторов движения - кандидатов векторами движения - кандидатами по умолчанию) пространственных векторов движения - кандидатов, усекать этот список из пространственных векторов движения - кандидатов (включающих в себя один или более из определенных векторов движения - кандидатов по умолчанию) и добавлять временной вектор движения - кандидат к усеченному списку из пространственных векторов движения - кандидатов. Блок 42 оценки движения может выводить этот список, который включает в себя - кандидата временного вектора движения и отсеченный пространственный вектор движения - кандидат, к блоку 44 компенсации движения.
[0077] Блок 44 компенсации движения затем может идентифицировать блок опорного кадра (который, снова, может называться блоком предсказания) для каждого из векторов движения - кандидатов, включенных в список. Блок 44 компенсации движения затем может вычислять данные предсказания на основании блока предсказания, определенного для каждого из векторов движения - кандидатов. Видеокодер 20 затем может определять остаточные данные для каждых данных предсказания, вычисленных для соответствующего одного из векторов движения - кандидатов, преобразовывать остаточные данные, квантовать транскодированные остаточные данные и затем энтропийно кодировать квантованные остаточные данные вышеописанным образом. Видеокодер 20 затем может выполнять обратные операции для декодирования этих энтропийно кодированных остаточных данных, сгенерированных относительно каждого из векторов движения - кандидатов, оставшихся после отсечения для воспроизведения опорных данных в форме восстановленных видеоблоков. Блок 40 выбора режима может анализировать каждый из восстановленных видеоблоков, сгенерированных относительно каждого из векторов движения - кандидатов для выбора одного из векторов движения - кандидатов. Блок 40 выбора режима может выбирать один из векторов движения - кандидатов, который обеспечивает наилучшее соотношение скорость передачи-искажение через процесс обычно называемый «оптимизация скорости передачи-искажения», который обычно обозначается аббревиатурой «RDO».
[0078] RDO обычно влечет за собой сравнение восстановленного кадра, среза или блока, сжатого для достижения некоторой скорости передачи (которая обычно называется скоростью передачи в битах, с которой сжатые видеоданные, которые включают в себя сжатый кадр, срез или блок могут быть отправлены) с исходным кадром, срезом или блоком и определение величины искажения между исходным кадром, срезом или блоком и восстановленным кадром, срезом или блоком при заданной скорости передачи. Блок 40 выбора режима может кодировать те же самые видеоданные с использованием многочисленных различных метрик, которые достигают или пытаются достичь заданной скорости передачи, выполняя процесс оптимизации искажения относительно этих различных метрик. В этом случае блок 40 выбора режима может сравнивать вывод RD каждого восстановленного видеоблока и выбирать тот, который обеспечивает меньшее искажение при целевой скорости передачи.
[0079] Блок 40 выбора режима затем может указывать этот выбор блоку 42 оценки движения, который приступает к взаимодействию с блоком 56 энтропийного кодирования для информирования блока 56 энтропийного кодирования о выборе. Обычно, блок 42 оценки движения взаимодействует с блоком 56 энтропийного кодирования, чтобы указать, что предсказание вектора движения было выполнено вместе с индексом, идентифицирующим выбранный вектор движения - кандидат. Как отмечено выше по тексту, блок 42 оценки движения может размещать векторы движения - кандидаты определенным образом, например от наибольшей амплитуды к наименьшей амплитуде или от наименьшей амплитуды к наибольшей амплитуде или любым другим определенным образом. В качестве альтернативы, блок 42 оценки движения также может сигнализировать блоку 56 энтропийного кодирования способ, посредством которого векторы движения - кандидаты были размещены в этом списке, который также может быть назван списком MVP. Блок 56 энтропийного кодирования затем может кодировать этот индекс, используя либо унарный, либо урезанный унарный код вместе с любой другой информацией, которая может быть необходима для указания того, что MVP был выполнен, чтобы кодировать данные движения. Блок 56 энтропийного кодирования может выводить кодированный индекс в качестве элемента синтаксиса (который может быть обозначен как «mvp_idx») в битовом потоке, который может быть сохранен или передан вышеописанным образом относительно примера по Фиг. 1.
[0080] В некоторых случаях блок 56 энтропийного кодирования выполняет форму энтропийного кодирования, называемую контекстно-зависимое адаптивное двоичное арифметическое кодирование (CABAC). При выполнении CABAC блок 56 энтропийного кодирования может выбирать один из множества так называемых контекстов (которые представляют собой различные кодовые таблицы, заданные для других контекстов для того, чтобы более эффективно сжимать видеоданные, связанные с соответствующим контекстом) и кодирует сжатые остаточные данные согласно кодовой таблице, определенной для выбранного контекста. Блок 56 энтропийного кодирования может выбирать один из контекстов на основании информации контекста, которая может включать в себя опорный индекс, определенный при выполнении предсказания вектора движения, число уникальных векторов движения - кандидатов и направление предсказания, определенное при выполнении предсказания вектора движения.
[0081] Фиг. 3 представляет собой блок-схему, иллюстрирующую пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере по Фиг. 3 видеодекодер 30 включает в себя блок 70 энтропийного кодирования, блок 72 компенсации движения, блок 74 intra-предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, память 82 и сумматор 80. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования в общем обратный проходу кодирования, описанному относительно видеокодера, такого как видеокодер 20, показанный в примерах по Фиг. 1 и 2. Несмотря на то, что в общем обратный, видеокодер 30 может, в некоторых случаях, выполнять методики аналогичные таковым, выполняемым видеокодером 20. Другими словами, видеодекодер 30 может выполнять процессы, по существу, аналогичные таковым, выполняемым видеокодером 20. Более того, как описано выше по тексту, видеокодер 20 может выполнять видеодекодирование в процессе выполнения видеокодирования. Чтобы проиллюстрировать, блок 58 обратного квантования, блок 60 обратного преобразования и сумматор 62 видеокодера 20 могут выполнять операции по существу аналогично блоку 76 обратного квантования, блоку 78 обратного преобразования и сумматору 80 видеодекодера 30.
[0082] Как показано в примере по Фиг. 3, блок 70 энтропийного декодирования принимает кодированный битовый поток, который для целей иллюстрации подразумевается как включающий в себя кодированный унарным или урезанным унарным кодом индекс, идентифицирующий выбранный вектор движения - кандидат (где, снова, эти векторы движения - кандидаты могут называться предикторами вектора движения или MVP). Блок 70 энтропийного декодирования может, при выполнении процесса в общем обратного блоку 56 энтропийного кодирования видеокодера 20, принимать элемент синтаксиса или другие данные кодирования для текущей PU, указывающие, что предсказание вектора движения было выполнено, для определения вектора движения для текущей PU. В ответ на этот элемент синтаксиса или другие данные кодирования, блок 70 энтропийного декодирования реализует методики, описанные в этом раскрытии для определения числа векторов движения - кандидатов, оставшихся после отсечения с тем, чтобы надлежащим образом синтаксически проанализировать унарный или урезанный унарный код из битового потока.
[0083] Чтобы определить число векторов движения - кандидатов, блок 70 энтропийного кодирования может взаимодействовать с блоком 72 компенсации движения, инструктируя блоку 72 компенсации движения определение числа векторов движения - кандидатов в соответствии с методиками, описанными в этом раскрытии. Блок 72 компенсации движения извлекает пространственные векторы движения - кандидаты для PU, прилегающих к текущей PU, и временной вектор движения - кандидат для совместно размещенной PU в опорном кадре. Блок 70 энтропийного кодирования может обеспечивать блок 72 компенсации движения опорным кадром, идентифицированным для текущей PU (обычно в качестве другого элемента синтаксиса в битовом потоке). В качестве альтернативы блок 72 компенсации движения может быть сконфигурирован либо относительно AMVP, либо режима слияния, чтобы извлекать временной вектор движения - кандидат из опорного кадра, идентифицированного установленным образом (например один, два или любое другое число сзади или спереди от текущего кадра, в котором размещена текущая PU).
[0084] Блок 72 компенсации движения затем может создавать промежуточный список, который включает в себя четыре пространственных векторов движения - кандидатов (или менее, после определения того, что один или более из пространственных векторов движения - кандидатов сами являются временно предсказанными, где такие временно предсказанные пространственные векторы движения - кандидаты удаляются из процесса отсечения), усекать этот список из (потенциально только пространственно предсказанных) пространственных векторов движения - кандидатов и объединять временной вектор движения - кандидат (и потенциально временно предсказанные пространственные векторы движения - кандидаты) с этим усеченным списком из (потенциально только пространственно предсказанных) пространственных векторов движения - кандидатов образом, по существу, аналогичным таковому, описанному выше по тексту относительно блока 44 компенсации движения видеокодера 20. В качестве альтернативы блок 72 компенсации движения может определять промежуточный список из четырех пространственных векторов движения - кандидатов (заменяя временно предсказанные пространственные векторы движения - кандидаты векторами движения - кандидатами по умолчанию), усекать этот список из пространственных векторов движения - кандидатов (включающих в себя один или более из определенных векторов движения - кандидатов по умолчанию) и объединять временной вектор движения - кандидат с усеченным списком пространственных векторов движения - кандидатов образом, снова, по существу, аналогичным таковому, описанному выше по тексту относительно блока 44 компенсации движения видеокодера 20. В каждом случае блок 72 компенсации движения выводит этот список векторов движения - кандидатов, определенных после выполнения отсечения, в качестве усеченного списка MVP. После генерирования этого усеченного списка MVP, блок 72 компенсации движения подсчитывает число векторов движения - кандидатов в этом списке и сигнализирует это число блоку 70 энтропийного кодирования. Блок 70 энтропийного кодирования затем может надлежащим образом синтаксически проанализировать кодированный унарным или урезанным унарным кодом индекс из обеспеченного битового потока для вышеописанных целей.
[0085] После синтаксического анализа кодированного унарным или урезанным унарным кодом индекса, блок 70 энтропийного кодирования может затем декодировать кодированный унарным или урезанным унарным кодом индекс, чтобы генерировать индекс в список MVP. Блок 70 энтропийного кодирования затем пересылает этот индекс к блоку 72 компенсации движения, который затем выбирает один из векторов движения - кандидатов из усеченного списка MVP, идентифицированный индексом. Для inter-кодированного блока, блок 72 компенсации движения может затем генерировать данные inter-предсказания на основании идентифицированного вектора движения. Блок 72 компенсации движения может использовать этот вектор движения, чтобы идентифицировать блок предсказания в опорных кадрах, сохраненных в память 82. Для intra-кодированных блоков, блок 74 intra-предсказания может использовать режимы intra-предсказания, принятые в битовом потоке для формирования блока предсказания из пространственно смежных блоков. Блок 76 обратного квантования обратно квантует, т.е. де-квантует, квантованные коэффициенты блока, обеспеченные в битовом потоке и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например как определен посредством стандарта декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QPY квантования, вычисленного сумматором 50 для каждого макроблока, чтобы определить степень квантования и аналогично степень обратного квантования, которая должна быть применена.
[0086] Блок 60 обратного преобразования применяет обратное преобразование, например обратное DCT, обратное целочисленное преобразование, или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования для того, чтобы выработать остаточные блоки в пиксельной области. Блок 72 компенсации движения вырабатывает блоки с компенсированным движением, возможно выполняя интерполяцию на основании фильтров интерполяции. Идентификаторы для фильтров интерполяции, которые должны быть использованы для оценки движения с суб-пиксельной точностью могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать фильтры интерполяции, как используются видеокодером 20 во время кодирования видеоблока, чтобы вычислить интерполированные значения для суб-целых пикселей опорного блока. Блок 72 компенсации движения может определять фильтры интерполяции, используемые видеокодером 20 согласно принятой информации синтаксиса и использовать фильтры интерполяции, чтобы выработать блоки предсказания.
[0087] Блок 72 компенсации движения использует некоторое из информации синтаксиса для определения размеров CU, используемых для кодирования кадра(ов) кодированной видеопоследовательности, информации раздела, которая описывает, как каждая CU кадра кодированной видеопоследовательности подразделена, режимы, указывающие как каждая CU кодируется, один или более опорных кадров (или списков) для каждой inter-кодированной CU и другую информацию, чтобы декодировать кодированную видеопоследовательность.
[0088] Сумматор 80 суммирует остаточные блоки с соответствующими блоками предсказания, сгенерированными блоком 72 компенсации движения или блоком intra-предсказания для формирования декодированных блоков. Если желательно, фильтр удаления блочности также может быть применен для фильтрации декодированных блоков для того, чтобы удалить артефакты блочности. Декодированные видеоблоки затем сохраняются в хранилище опорных кадров в памяти 82, которое можно называть буфером декодированных графических изображений в стандарте HEVC, который обеспечивает опорные блоки для последующей компенсации движения и также вырабатывает декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения по Фиг. 1).
[0089] В некоторых случаях временной вектор движения - кандидат может не быть доступным, например когда срез, который задает временной вектор движения - кандидат потерян, т.е. не восстановлен или не принят в кодированном битовом потоке, в качестве одного примера. Когда этот временной вектор движения - кандидат недоступен, блок 72 компенсации движения может устанавливать этот временной вектор движения - кандидат на значение по умолчанию или иначе определять информацию вектора движения по умолчанию для этого временного вектора движения - кандидата. В некоторых случаях эта информация вектора движения по умолчанию для временного вектора движения - кандидата может быть восстановлена в зависимости от того, был ли опорный кадр intra-кодирован. Когда опорный кадр определен как intra-кодированный, блок 72 компенсации движения может получать информацию вектора движения по умолчанию для вектора движения - кандидата по умолчанию на основании пространственных векторов движения, определенных для участка опорного кадра совместно-размещенного в том же самом местоположении опорного кадра, что и текущий участок, находящийся в текущем кадре. Аналогично один или более из временно предсказанных пространственных векторов движения - кандидатов может быть недоступен или потерян и может получить информацию вектора движения по умолчанию для вектора движения - кандидата по умолчанию на основании пространственных векторов движения, определенных для участка опорного кадра, совместно-размещенного в том же самом местоположении опорного кадра, что и текущий участок, находящийся в текущем кадре.
[0090] Различные аспекты методик, изложенных в этом раскрытии, также могут решать проблемы, которые возникают при выполнении CABAC или любого другого процесса контекстно-зависимого статистического кодирования без потерь в результате пространственных векторов движения - кандидатов, которые сами были предсказаны из потерянных или пропущенных временных векторов движения. Блок 70 энтропийного кодирования может в соответствии с этими аспектами методик, решать эту проблему посредством отключения потерянного пространственного вектора движения - кандидата. В качестве альтернативы, блок 70 энтропийного кодирования может заменять этот потерянный пространственный вектор движения - кандидат информацией движения по умолчанию. Блок 70 энтропийного кодирования может взаимодействовать с блоком 72 компенсации движения, чтобы определять эту информацию движения по умолчанию. Эта информация движения по умолчанию может задавать вектор движения по умолчанию, направление предсказания и опорный индекс. В некоторых случаях блок 72 компенсации движения генерирует эту информацию движения замещения на основании типа среза (который указывает, является ли текущий срез intra- или inter- предсказанным и т.д.), глубины текущей CU (как в глубине CU в вышеотмеченной иерархии дерева квадрантов, в которой хранится текущая PU), размера текущей PU или любой другой доступной информации. Блок 72 компенсации движения затем может обеспечивать эту информацию движения по умолчанию блоку 70 энтропийного кодирования. Посредством использования этой информации движения по умолчанию блок 70 энтропийного кодирования все еще может выполнять процесс CABAC.
[0091] Методики, описанные в этом раскрытии, в некоторых примерах также могут решать проблемы, которые возникают, когда блок 72 компенсации движения неспособен определять, был ли пространственный вектор движения - кандидат сам предсказан из пространственного вектора движения - кандидата или временного вектора движения - кандидата (например, когда его временной вектор движения - кандидат был потерян). В этих случаях, когда один из пространственных векторов движения - кандидатов недоступен, блок 72 компенсации движения может реализовать методики этого раскрытия, чтобы отключить пространственное предсказание вектора движения (и тем самым использовать совместно размещенный временной вектор движения - кандидат вне зависимости от того, что было просигнализировано кодером). В качестве альтернативы блок 72 компенсации движения может определять информацию движения по умолчанию вышеописанным образом.
[0092] Методики дополнительно могут решать проблемы, которые возникают когда блок 72 компенсации движения неспособен определять, был ли пространственный вектор движения - кандидат сам предсказан из временного вектора движения - кандидата (например, когда его временной вектор движения - кандидат был потерян). В этих случаях, когда один из пространственных векторов движения - кандидатов недоступен, блок 72 компенсации движения может реализовать методики этого раскрытия, чтобы отключить пространственное предсказание вектора движения (и тем самым использовать совместно размещенный временной вектор движения - кандидат вне зависимости от того, что было просигнализировано кодером). В качестве альтернативы, блок 72 компенсации движения может определять информацию движения по умолчанию вышеописанным образом, либо выполняя отсечение относительно этой информации движения по умолчанию вектора движения - кандидата по умолчанию, либо удаляя этот вектор движения - кандидат по умолчанию из отсечения полностью (но задавая его отдельно, чтобы позволить синтаксически проанализировать битовый поток).
[0093] Как отмечено выше по тексту, имеются два типа предсказания вектора движения: режим слияния и AMVP. Для режима слияния блок 72 компенсации движения определяет амплитуду вектора движения, направление предсказания и опорный индекс, при определении информации движения по умолчанию. Для AMVP, блок 72 компенсации движения определяет амплитуду вектора движения, но отсутствует необходимость в определении направления предсказания и опорного индекса, поскольку они сигнализируются отдельно в битовом потоке, для текущей PU. Таким образом блок 72 компенсации движения может основывать определение информации движения по умолчанию на основании режима, сигнализируемого для выполнения предсказания вектора движения, т.е. является ли сигнализируемым типом предсказания вектора движения режим слияния или AMVP для текущей PU.
[0094] Фиг. 4 представляет собой блок-схему последовательности операций, иллюстрирующую примерную работу видеокодера, такого как видеокодер 20, показанный в примере по Фиг. 2, при выполнении методик предсказания вектора движения, описанных в этом раскрытии. Изначально блок 42 оценки движения может как описано выше по тексту, определять пространственные векторы движения - кандидаты для текущей PU, соответствующей текущей CU (90). Блок 42 оценки движения может реализовывать то, что может называться промежуточным списком или промежуточным списком пространственных MVP, который хранит эти пространственные векторы движения - кандидаты. Блок 42 оценки движения затем может отсекать избыточные пространственные векторы движения - кандидаты одним из вышеописанных методов (92). В этом смысле блок 42 компенсации движения может генерировать промежуточный список пространственных MVP из оставшихся пространственных векторов движения - кандидатов.
[0095] После генерирования этого промежуточного списка пространственных MVP из оставшихся пространственных векторов движения - кандидатов, блок 42 оценки движения может определить временной вектор движения - кандидат для текущей PU из совместно размещенной PU в опорном кадре, снова, как описано выше по тексту (94). Затем блок 42 оценки движения может формировать список MVP для включения в него оставшихся пространственных векторов движения - кандидатов и временного вектора движения - кандидата (96). Блок 42 оценки движения может обеспечивать этот список MVP блоку 44 компенсации движения, который выполняет компенсацию движения вышеописанным образом относительно каждого из векторов движения - кандидатов, включенных в список MVP. Видеокодер 20 затем генерирует остаточные данные на основании данных предсказания, сгенерированных посредством компенсации движения, выполненной относительно каждого из векторов движения - кандидатов, включенных в список MVP. Видеокодер 20 применяет одно или более преобразования к остаточным данным, квантует преобразованные остаточные данные и затем восстанавливает остаточные данные. Восстановленные остаточные данные затем дополняются данными предсказания, сгенерированными на основании каждого из векторов движения - кандидатов, включенных в список MVP, чтобы генерировать восстановленные видеоданные.
[0096] Блок 40 выбора режима затем выбирает один из векторов движения - кандидатов из списка MVP для текущей PU на основании восстановленных видеоданных (98). Например, блок 40 выбора режима формирует анализ скорости передачи-искажения на восстановленных видеоданных, восстановленных относительно каждого из векторов движения - кандидатов в списке MVP и выбирает тот из векторов движения - кандидатов из списка, который обеспечивает наилучшую метрику скорость передачи-искажение. Блок 40 выбора режима затем может взаимодействовать с блоком 42 оценки движения, чтобы указать свой выбор вектора движения - кандидата. Блок 42 оценки движения затем может определить индекс в список MVP, идентифицирующий выбранный один из векторов движения - кандидатов, как описано выше по тексту (100). Блок 42 оценки движения затем может обеспечить этот индекс блоку 56 энтропийного кодирования. Блок 56 энтропийного кодирования затем может кодировать индекс, идентифицирующий выбранный один из векторов движения - кандидатов в списке MVP, как дополнительно описано выше по тексту (102). Блок 56 энтропийного кодирования затем вставляет кодированный индекс в битовый поток (104).
[0097] Фиг. 5 представляет собой блок-схему последовательности операций, иллюстрирующую примерную работу видеодекодера, такого как видеодекодер 30, показанный в примере по Фиг. 3, при реализации методик предсказания вектора движения, описанных в этом раскрытии. Как описано выше по тексту, блок 70 энтропийного декодирования видеодекодера 30 изначально принимает битовый поток, который включает в себя кодированный индекс, который обычно обозначают посредством имени его элемента синтаксиса «mvp_idx» или «MVP index» (110). Блок 70 энтропийного декодирования также декодирует другие элементы синтаксиса до или после этого индекса MVP, указывающего то, что текущая PU имеет векторы движения выраженные как предикторы вектора движения. Для синтаксического анализа этого индекса MVP из битового потока, блок 70 энтропийного декодирования сначала должен определить число векторов движения - кандидатов, оставшихся после выполнения процесса отсечения. Для определения числа векторов движения - кандидатов, блок 70 энтропийного декодирования взаимодействует с блоком 72 компенсации движения, запрашивая блок 72 компенсации движения обеспечить это число векторов движения - кандидатов для текущей PU.
[0098] В ответ на этот запрос блок 72 компенсации движения определяет пространственные векторы движения - кандидаты для текущей PU вышеописанным образом (112). Если один или более из пространственных векторов движения - кандидатов недоступны по причинам изложенным более подробно выше по тексту («ДА» 114), блок 72 компенсации движения может генерировать информацию движения (такую как информация движения по умолчанию) любым из методов, описанных выше по тексту, и выполнять компенсацию движения на основании сгенерированной информации движения (116, 118). Если все из пространственных векторов движения - кандидатов доступны («НЕТ» 114), блок 72 компенсации движения отсекает избыточные пространственные векторы движения - кандидаты, как дополнительно описано выше по тексту (120).
[0099] После отсечения избыточных пространственных векторов движения - кандидатов блок 72 компенсации движения затем определяет временной вектор движения - кандидат для текущей PU из совместно размещенной PU в опорном кадре, как описано выше по тексту (122). Если этот временной вектор движения - кандидат недоступен по причинам, описанным выше по тексту («ДА» 124) блок 72 компенсации движения генерирует информацию движения и выполняет компенсацию движения на основании сгенерированной информации движения (116, 118). Однако, если временной вектор движения - кандидат доступен («НЕТ» 124), блок 72 компенсации движения формирует список MVP, чтобы включить в его состав оставшиеся пространственные векторы движения - кандидаты и временной вектор движения - кандидат (126). Блок 72 компенсации движения затем может определить число векторов движения - кандидатов в списке MVP (128), пересылая это число блоку 70 энтропийного декодирования.
[0100] Блок 70 энтропийного кодирования затем может синтаксически проанализировать индекс MVP из битового потока на основании определенного числа (130). Блок 70 энтропийного декодирования затем декодирует кодированный индекс MVP (131). Блок 70 энтропийного декодирования пересылает декодированный индекс MVP блоку 72 компенсации движения, который выбирает один из векторов движения - кандидатов из списка MVP на основании декодированного индекса MVP, как описано выше по тексту (132). Блок 72 компенсации движения затем выполняет компенсацию движения вышеописанным образом на основании выбранного одного из векторов движения - кандидатов (134). Блок 72 компенсации движения может выполнять компенсацию движения в соответствии с либо режимом слияния, либо AMVP,в зависимости от того, какой режим либо сигнализирован в битовом потоке, либо определен блоком 72 компенсации движения.
[0101] Фиг. 6 представляет собой схему, иллюстрирующую примерную компоновку смежных соседствующих PU 140A-140D и временной совместно размещенной PU 142A для текущей PU 144. Как показано в примере по Фиг. 6, текущая PU 144 включена в пределы текущего кадра 146A. Временно, текущему кадру 146A предшествует сначала опорный кадр 146B и затем опорный кадр 146C. Смежная соседствующая PU 140A находится пространственно смежно с левой частью текущей PU 144. Смежная соседствующая PU 140B находится пространственно смежно с верхней левой частью текущей PU 144. Смежная соседствующая PU 140С находится пространственно смежно с верхней частью текущей PU 144. Смежная соседствующая PU 140D находится пространственно смежно с верхней правой частью текущей PU 144. Временно совместно размещенная PU 142A временно предшествует текущей PU 144 и размещена в пределах опорного кадра 146B в том же самом местоположении, что и текущая PU 144 размещенная в пределах текущего кадра 146A.
[0102] Каждая из смежных соседствующих PU 140A-140D хранит или иным образом обеспечивает пространственный вектор движения - кандидат для текущей PU 144, тогда как временно совместно размещенная PU 142A хранит или иным обеспечивает временной вектор движения - кандидат для текущей PU 144. Блоки компенсации движения видеодекодеров, такие как блок 72 компенсации движения видеодекодера 30, показанного в примере по Фиг. 2, могут извлекать эти пространственные и временные векторы движения - кандидаты, соответственно из PU 140A-140D и 142A. Поскольку временно совместно размещенная PU 142A включена в опорный кадр 146B, отличный от такового текущей PU 144, эта временно совместно размещенная PU 142A типично связана с другим независимо декодируемым участком (который обычно называется срез в развивающимся стандарте HEVC). Этот срез опорного кадра 146B может быть потерян (например при передачи или вследствие повреждения в памяти или устройстве хранения) и блок 72 компенсации движения может не быть способен извлечь эту временно совместно размещенную PU 142A, хранящую временной вектор движения - кандидат для текущей PU 144. Потеря этого временного вектора движения - кандидата может препятствовать блоку 70 энтропийного декодирования синтаксически проанализировать битовый поток для вышеотмеченных целей. Методики, описанные в этом раскрытии, могут позволять блоку 72 компенсации движения преодолевать эту проблему посредствам не включения временного вектора движения - кандидата в процесс отсечения.
[0103] Аналогично пространственные векторы движения - кандидаты для текущей PU 144 могут быть потеряны при выполнении MVP, чтобы определить вектор движения для одной из смежных соседствующих PU 140A-140D, с результатом, что выбирают временной вектор движения - кандидат и теряют его временно совместно размещенную PU, хранящую временной вектор движения - кандидат. Для иллюстрации, рассмотрим смежную соседствующую PU 140A, временно совместно размещенная PU которой идентифицирована в примере по Фиг. 6 как временно совместно размещенная PU 142B. Если PU 142B потеряна и вектор движения для пространственной соседней PU 140A выбран в качестве временного вектора движения - кандидата, связанного с PU 142B, отсутствует информация вектора движения для PU 140A. В результате, пространственный вектор движения - кандидат для текущей PU 144 также теряется. Чтобы потенциально преодолеть эту потерю пространственного вектора движения - кандидата, методики позволяют блоку 72 компенсации движения генерировать информацию движения (такую как информация движения по умолчанию), которая может быть использована в качестве пространственного вектора движения - кандидата для текущей PU 144.
[0104] Более того, этот потерянный пространственный вектор движения - кандидат (или, для этой цели, временной вектор движения - кандидат) может возникнуть при выполнении MVP и временной вектор движения - кандидат выбирается для нескольких временно совместно-размещенных PU. Чтобы проиллюстрировать, предположим что MVP выполнятся для определения вектора движения для PU 142B, которая является временно совместно размещенной с PU 140A, и ее временно совместно размещенная PU, т.е. PU 142C в примере по Фиг. 6, потеряна. Эта потеря, отсутствие методик, описанных в этом раскрытии, не будет потенциально препятствовать синтаксическому анализу индекса MVP из битового потока, но также имеет результатом потерю вектора движения для PU 142B. Потеря вектора движения для PU 142B, отсутствие методик, описанных в этом раскрытии, приводит к потере вектора движения для PU 140A, предполагая, что MVP было выполнено для определения вектора движения для PU 140A, и была выбрана временно совместно размещенная PU 142B. Потеря этого вектора движения негативно влияет на текущую PU 144 так, что пространственный вектор движения - кандидат недоступен. По этой причине методики позволяют блоку 72 компенсации движения сгенерировать информацию движения (или в некоторых случаях повторно генерировать потерянную информацию движения) так, чтобы препятствовать тому, что может называться эффектом множественной потери.
[0105] Хотя примеры, описанные выше по тексту, относятся к удалению дублирующихся пространственных векторов движения - кандидатов, методики могут необязательно требовать того, что только дублирующиеся пространственные векторы движения - кандидаты будут удалены. Методики могут быть реализованы для выполнения отсечения для того, чтобы в общем удалить по меньшей мере один из пространственных векторов движения - кандидатов. Например, видеокодер может сигнализировать на уровне графического изображения, кадра, среза или блока, что пространственный вектор движения - кандидат с, для указания нескольких примеров, наибольшей амплитудой или наименьшей амплитудой должен быть отсечен. В качестве альтернативы видеокодер может сигнализировать в битовом потоке любые критерии, такие как порог, посредством которых MVP могут быть заданы как критерии для отсечения. В некоторых вариантах осуществления видеокодер и видеодекодер могут уславливаться на некотором профиле или другой конфигурации, посредством которой векторы движения - кандидаты могут быть отсечены. В некоторых случаях видеодекодер может предполагать, когда некоторые векторы движения - кандидаты должны быть отсечены на основе контекста или другой информации. Методики следовательно не должны быть строго ограничены выполнением отсечения только для удаления дублирующихся пространственных векторов движения - кандидатов, но должны охватывать любые методики, которые могут быть реализованы для отсечения по меньшей мере одного пространственного вектора движения - кандидата.
[0106] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, аппаратно-программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены или переданы как одна или более инструкций или код на считываемом компьютером носителе. Считываемые компьютером носители могут включать в себя носитель хранения данных компьютера или носители связи, включающие в себя любой носитель, который содействует переносу компьютерной программы из одного места в другое. Носители хранения данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечение инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Посредством примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для переноса или хранения желаемого программного кода в форме инструкций или структур данных и к которому может бы осуществлен доступ компьютером. Также любое соединение надлежащим образом называется считываемым компьютером носителем. Например, если программное обеспечение передается с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, цифровой абонентской линии связи (DSL) или беспроводных технологий, например инфракрасной, радиоволновой, и микроволновой, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или другие технологии, например инфракрасная, радиоволновая, и микроволновая включены в определения носителя. Магнитный диск и диск, как используется в данном документе, включают в себя компакт диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи диск и blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным образом, тогда как диски воспроизводят данные оптическим образом с помощью лазеров. Комбинации вышеописанного также должны быть включены в объем считываемых компьютером носителей.
[0107] Код может быть использован одним или более процессорами, например одним или более процессорами цифровых сигналов (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), программируемыми вентильными матрицами (FPGA) или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно термин «процессор», как используется в данном документе, может относиться к любой из вышеуказанных структур или любой другой структуре подходящей для реализации методик, описанных в данном документе. В дополнение в некоторых аспектах функциональность, описанная в данном документе, может быть обеспечена в рамках специализированного аппаратного обеспечения и/или модулей программного обеспечения, сконфигурированных для кодирования и декодирования или включенных в объединенный кодек. Также технологии могут быть полностью реализованы в одной или более схемах или элементах логики.
[0108] Методики этого раскрытия могут быть реализованы в широком многообразии приборов и устройств, в том числе в беспроводной телефонной трубке, интегрированной схеме (ИС) или наборе ИС (например, наборе интегральных схем). Различные компоненты, модули или блоки описаны в этом раскрытии для выделения функциональных аспектов устройств, сконфигурированных для выполнения раскрытых технологий, но не обязательно требуют реализации различными блоками аппаратного обеспечения. Напротив, как описано выше по тексту, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или обеспечены совокупностью взаимодействующих блоков аппаратного обеспечения, включающей в себя один или более процессоров, как описано выше по тексту, в связи с подходящим программным обеспечением и/или аппаратно-программным обеспечением.
[0109] Различные примеры были описаны. Эти и другие примеры находятся в рамках объема нижеследующей формулы изобретения.
Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности компенсации движения. Способ кодирования видеоданных, в котором определяют пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку; определяют временной вектор движения - кандидат, связанный с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра; отсекают пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов, без рассмотрения временного вектора движения - кандидата во время процесса отсечения; выбирают временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения; определяют индекс, который идентифицирует местоположение выбранного одного из векторов движения - кандидатов в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения; и сигнализируют индекс в битовом потоке. 8 н. и 55 з.п. ф-лы, 6 ил.
1. Способ кодирования видеоданных, причем способ содержит этапы, на которых:
определяют пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку;
определяют временной вектор движения - кандидат, связанный с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
отсекают пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов, без рассмотрения временного вектора движения - кандидата во время процесса отсечения;
выбирают временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения;
определяют индекс, который идентифицирует положение выбранного одного из векторов движения - кандидатов в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения; и
сигнализируют индекс в битовом потоке.
2. Способ по п. 1, в котором отсечение пространственных векторов движения - кандидатов содержит отсечение только пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов.
3. Способ по п. 1,
в котором текущий участок содержит текущую единицу кодирования (CU),
в котором участок опорного кадра содержит CU опорного кадра.
4. Способ по п. 1, дополнительно содержащий генерирование предсказывающей единицы (PU), которая включает в себя данные предсказания, содержащие по меньшей мере выбранный вектор движения - кандидат,
при этом сигнализация выбранного вектора движения - кандидата содержит сигнализацию PU в битовом потоке.
5. Способ по п. 1, в котором сигнализация индекса содержит сигнализацию индекса предиктора вектора движения (MVP), который идентифицирует положение выбранного вектора движения - кандидата в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения.
6. Способ по п. 1, дополнительно содержащий кодирование индекса с использованием одного из унарного кода или усеченного унарного кода для генерирования кодированного индекса,
при этом сигнализация индекса содержит сигнализацию кодированного индекса в битовом потоке.
7. Способ по п. 1, в котором выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, содержит:
выполнение анализа искажения в зависимости от скорости передачи относительно каждого из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения; и
выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании анализа искажения в зависимости от скорости передачи.
8. Способ по п. 1, дополнительно содержащий определение, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан,
при этом отсечение пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит отсечение только тех из определенных пространственных векторов движения - кандидатов, которые были определены как пространственно предсказанные, без отсечения каких-либо из тех определенных пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, и
при этом выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата содержит выбор временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, который был определен как временно предсказанный, или одного из пространственных векторов движения - кандидатов, определенных как пространственно предсказанные, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата.
9. Способ по п. 1, дополнительно содержащий:
определение, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан; и
замену любого из пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, вектором движения - кандидатом по умолчанию, при этом вектор движения - кандидат по умолчанию включает в себя информацию вектора движения по умолчанию, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр, и
при этом отсечение пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит отсечение пространственных векторов движения - кандидатов, которые включают в себя один или более векторов движения - кандидатов по умолчанию для удаления дублирующихся из пространственных векторов движения - кандидатов.
10. Способ по п. 1, дополнительно содержащий определение одного или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения,
при этом выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, содержит выбор временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, или одного из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
11. Устройство для кодирования видеоданных, причем устройство содержит:
средство для определения пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков для текущего видеокадра, прилегающих к текущему участку;
средство для определения временного вектора движения - кандидата, связанного с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов, без рассмотрения временного вектора движения - кандидата во время процесса отсечения;
средство для выбора временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения;
средство для определения индекса, который идентифицирует положение выбранного одного из векторов движения - кандидатов в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения; и
средство для сигнализации индекса в битовом потоке.
12. Устройство по п. 11, в котором средство для отсечения только пространственных векторов движения - кандидатов содержит средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов.
13. Устройство по п. 11, дополнительно содержащее средство для определения, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан,
при этом средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит средство для отсечения только тех из определенных пространственных векторов движения - кандидатов, которые были определены как пространственно предсказанные, без отсечения каких-либо из тех определенных пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, и
при этом средство для выбора временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата, содержит средство для выбора временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, который был определен как временно предсказанный, или одного из пространственных векторов движения - кандидатов, определенных как пространственно предсказанные, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата.
14. Устройство по п. 11, дополнительно содержащее:
средство для определения, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан; и
средство для замены какого-либо из пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, вектором движения - кандидатом по умолчанию, при этом вектор движения - кандидат по умолчанию включает в себя информацию вектора движения по умолчанию, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр, и
при этом средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит средство для отсечения пространственных векторов движения - кандидатов, которые включают в себя один или более векторов движения - кандидатов по умолчанию для удаления дублирующихся из пространственных векторов движения - кандидатов.
15. Устройство по п. 11, дополнительно содержащее средство для определения одного или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения,
при этом средство для выбора временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, содержит средство для выбора временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, или одного из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
16. Устройство для кодирования видеоданных, причем устройство содержит:
блок компенсации движения, который определяет пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков для текущего видеокадра, прилегающих к текущему участку, определяет временной вектор движения - кандидат, связанный с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, и отсекает пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов, без рассмотрения временного вектора движения - кандидата во время процесса отсечения;
блок выбора режима, который выбирает временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения, и определяет индекс, который идентифицирует положение выбранного одного из векторов движения - кандидатов в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения; и
блок энтропийного кодирования, который сигнализирует индекс в битовом потоке.
17. Устройство по п. 16, в котором блок компенсации движения отсекает только пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов.
18. Устройство по п. 16,
в котором текущий участок содержит текущую единицу кодирования (CU),
в котором участок опорного кадра содержит CU опорного кадра.
19. Устройство по п. 16, в котором блок компенсации движения дополнительно генерирует предсказывающую единицу (PU), которая включает в себя данные предсказания, содержащие по меньшей мере выбранный вектор движения - кандидат,
при этом блок энтропийного кодирования сигнализирует PU в битовом потоке.
20. Устройство по п. 16, в котором блок энтропийного кодирования сигнализирует индекс в качестве индекса предиктора вектора движения (MVP), который идентифицирует положение выбранного вектора движения - кандидата в списке временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения.
21. Устройство по п. 16,
в котором блок энтропийного кодирования кодирует индекс с использованием одного из унарного кода или усеченного унарного кода для генерирования кодированного индекса и сигнализирует кодированный индекс в битовом потоке.
22. Устройство по п. 16, в котором блок выбора режима выполняет анализ искажения в зависимости от скорости передачи относительно каждого из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения, и выбирает временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата на основании анализа искажения в зависимости от скорости передачи.
23. Устройство по п. 16,
в котором блок компенсации движения дополнительно определяет, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан, и отсекает только те из определенных пространственных векторов движения - кандидатов, которые были определены как пространственно предсказанные, без отсечения какого-либо из тех определенных пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, и
в котором блок выбора режима выбирает временной вектор движения - кандидат, один из пространственных векторов движения - кандидатов, который был определен как временно предсказанный, или один из пространственных векторов движения - кандидатов, определенных как пространственно предсказанные, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата.
24. Устройство по п. 16, в котором блок компенсации движения определяет, был ли каждый из определенных пространственных векторов движения - кандидатов пространственно предсказан или временно предсказан, заменяет какой-либо из пространственных векторов движения - кандидатов, которые были определены как временно предсказанные, вектором движения - кандидатом по умолчанию, при этом вектор движения - кандидат по умолчанию включает в себя информацию вектора движения по умолчанию, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр, и отсекает пространственные векторы движения - кандидаты, которые включают в себя один или более векторов движения - кандидатов по умолчанию для удаления дублирующихся из пространственных векторов движения - кандидатов.
25. Устройство по п. 16, в котором блок компенсации движения дополнительно определяет один или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения,
при этом блок выбора режима выбирает временной вектор движения - кандидат, один из пространственных векторов движения - кандидатов, оставшихся после отсечения, или один из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
26. Невременный считываемый компьютером носитель, содержащий инструкции, которые, когда исполняются, побуждают один или более процессоров к:
определению пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку;
определению временного вектора движения - кандидата, связанного с текущим участком текущего видеокадра, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
отсечению пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов, без рассмотрения временного вектора движения - кандидата во время процесса отсечения;
выбору временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения;
определению индекса, который идентифицирует положение выбранного одного из векторов движения - кандидатов в списке из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, которые остались после отсечения; и
сигнализации индекса в битовом потоке.
27. Способ декодирования видеоданных, причем способ содержит этапы, на которых:
определяют пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат соседние векторы движения, определенные для пространственно соседствующих участков, прилегающих к текущему участку в пределах текущего видеокадра;
отсекают пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов без рассмотрения временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, во время процесса отсечения, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
выбирают временной вектор движения - кандидат или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке; и
выполняют компенсацию движения на основании выбранного вектора движения - кандидата.
28. Способ по п. 27, в котором отсечение пространственных векторов движения - кандидатов содержит отсечение только пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов.
29. Способ по п. 27, дополнительно содержащий:
определение некоторого числа векторов движения - кандидатов как временной вектор движения - кандидат плюс векторы из пространственных векторов движения - кандидатов, оставшихся после отсечения;
синтаксический анализ кодированного индекса MVP из битового потока на основании определенного числа векторов движения - кандидатов, при этом кодированный индекс MVP содержит одно из унарного кодированного индекса MVP и усеченного унарного кодированного индекса MVP; и
декодирование кодированного индекса MVP для определения индекса MVP.
30. Способ по п. 27, дополнительно содержащий:
определение того, что временной вектор движения - кандидат для текущего участка текущего кадра недоступен; и
в ответ на определение того, что временной вектор движения - кандидат недоступен, определение информации вектора движения по умолчанию для временного вектора движения - кандидата, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр.
31. Способ по п. 30, дополнительно содержащий определение контекста для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
32. Способ по п. 30, в котором определение информации вектора движения по умолчанию содержит:
определение, был ли опорный кадр intra-кодирован; и
когда опорный кадр определен как intra-кодированный, извлечение информации вектора движения по умолчанию на основании пространственных векторов движения, определенных для участка опорного кадра.
33. Способ по п. 27, дополнительно содержащий:
определение того, что один из пространственных векторов движения - кандидатов недоступен; и
в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, определение вектора движения - кандидата по умолчанию, который включает в себя информацию вектора движения по умолчанию для одного из пространственных векторов движения - кандидатов, на основании режима предсказания вектора движения, и
при этом отсечение пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит отсечение пространственных векторов движения - кандидатов, которые включают в себя один или более векторов движения - кандидатов по умолчанию для удаления дублирующихся из пространственных векторов движения - кандидатов, и
при этом выбор временного вектора движения - кандидата содержит выбор временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата, содержит выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, определенного как недоступный, или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке.
34. Способ по п. 33, в котором определение информации вектора движения по умолчанию содержит определение амплитуды вектора движения без определения направления предсказания, идентифицирующего, предшествует ли или следует ли за текущим кадром опорный кадр временно, или индекса опоры, идентифицирующего опорный кадр, когда режимом предсказания вектора движения является режим адаптивного предсказания вектора движения (AMVP).
35. Способ по п. 33, в котором определение информации вектора движения по умолчанию содержит определение амплитуды вектора движения, направления предсказания, идентифицирующего, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекса опоры, идентифицирующего опорный кадр, когда режимом предсказания вектора движения является режим слияния.
36. Способ по п. 33, дополнительно содержащий определение контекста для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
37. Способ по п. 27, дополнительно содержащий:
определение того, что один из пространственных векторов движения - кандидатов недоступен; и
в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, удаление одного из пространственных векторов движения - кандидатов, который определен как недоступный, из процесса отсечения,
при этом отсечение пространственных векторов движения - кандидатов содержит отсечение только тех из пространственных векторов движения - кандидатов, которые были определены как доступные, для удаления дублирующихся из пространственных векторов движения - кандидатов, без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, или одного из пространственных векторов движения - кандидатов, который определен как недоступный.
38. Способ по п. 27, дополнительно содержащий определение одного или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения,
при этом выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, содержит выбор временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, или одного из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
39. Устройство для декодирования видеоданных, причем устройство содержит:
средство для определения пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку;
средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов без рассмотрения временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, во время процесса отсечения, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
средство для выбора одного из временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке; и
средство для выполнения компенсации движения на основании выбранного вектора движения - кандидата.
40. Устройство по п. 39, в котором средство для отсечения пространственных векторов движения - кандидатов содержит средство для отсечения только пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов.
41. Устройство по п. 39, дополнительно содержащее:
средство для определения некоторого числа векторов движения - кандидатов как временной вектор движения - кандидат плюс векторы из пространственных векторов движения - кандидатов, оставшихся после отсечения;
средство для синтаксического анализа кодированного индекса MVP из битового потока на основании определенного числа векторов движения - кандидатов, при этом кодированный индекс MVP содержит одно из унарного кодированного индекса MVP и усеченного унарного кодированного индекса MVP; и
средство для декодирования кодированного индекса MVP для определения индекса MVP.
42. Устройство по п. 39, дополнительно содержащее:
средство для определения того, что временной вектор движения - кандидат для текущего участка текущего кадра недоступен; и
в ответ на определение того, что временной вектор движения - кандидат недоступен, средство для определения информации вектора движения по умолчанию для временного вектора движения - кандидата, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр.
43. Устройство по п. 42, дополнительно содержащее средство для определения контекста для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
44. Устройство по п. 42, в котором средство для определения информации вектора движения по умолчанию содержит:
средство для определения, был ли опорный кадр intra-кодирован; и
когда опорный кадр определен как intra-кодированный, средство для извлечения информации вектора движения по умолчанию на основании пространственных векторов движения, определенных для участка опорного кадра.
45. Устройство по п. 39, дополнительно содержащее:
средство для определения того, что один из пространственных векторов движения - кандидатов недоступен; и
в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, средство для определения вектора движения - кандидата по умолчанию, который включает в себя информацию вектора движения по умолчанию для одного из пространственных векторов движения - кандидатов на основании режима предсказания вектора движения, и
при этом средство для отсечения пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов содержит средство для отсечения пространственных векторов движения - кандидатов, которые включают в себя один или более векторов движения - кандидатов по умолчанию, для удаления дублирующихся из пространственных векторов движения - кандидатов, и
при этом средство для выбора содержит средство для выбора временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата, содержит выбор временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, определенного как недоступный, или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке.
46. Устройство по п. 45, в котором средство для определения информации вектора движения по умолчанию содержит средство для определения амплитуды вектора движения без определения направления предсказания, идентифицирующего, предшествует ли или следует ли за текущим кадром опорный кадр временно, или индекса опоры, идентифицирующего опорный кадр, когда режимом предсказания вектора движения является режим адаптивного предсказания вектора движения (AMVP).
47. Устройство по п. 45, в котором средство для определения информации вектора движения по умолчанию содержит средство для определения амплитуды вектора движения, направления предсказания, идентифицирующего, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекса опоры, идентифицирующего опорный кадр, когда режимом предсказания вектора движения является режим слияния.
48. Устройство по п. 45, дополнительно содержащее средство для определения контекста для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
49. Устройство по п. 39, дополнительно содержащее:
средство для определения того, что один из пространственных векторов движения - кандидатов недоступен; и
в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, средство для удаления одного из пространственных векторов движения - кандидатов, который определен как недоступный, из процесса отсечения,
при этом средство для отсечения только пространственных векторов движения - кандидатов содержит средство для отсечения только тех из пространственных векторов движения - кандидатов, которые были определены как доступные, для удаления дублирующихся из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, или одного из пространственных векторов движения - кандидатов, который определен как недоступный.
50. Устройство по п. 39, дополнительно содержащее средство для определения одного или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения,
при этом средство для выбора временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, содержит средство для выбора временного вектора движения - кандидата, одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, или одного из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
51. Устройство для декодирования видеоданных, причем устройство содержит:
блок компенсации движения, который определяет пространственные векторы движения - кандидаты, связанные с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат соседние векторы движения, определенные для соседствующих участков, прилегающих к текущему участку, отсекает пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов без рассмотрения временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, во время процесса отсечения, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра, выбирает один из временного вектора движения - кандидата или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке, и выполняет компенсацию движения на основании выбранного вектора движения - кандидата.
52. Устройство по п. 51, в котором блок компенсации движения отсекает только пространственные векторы движения - кандидаты для удаления дублирующихся из пространственных векторов движения - кандидатов.
53. Устройство по п. 51,
в котором блок компенсации движения определяет некоторое число векторов движения - кандидатов как временной вектор движения - кандидат плюс векторы из пространственных векторов движения - кандидатов, оставшихся после отсечения;
в котором устройство дополнительно содержит блок энтропийного декодирования, который синтаксически анализирует кодированный индекс MVP из битового потока на основании определенного числа векторов движения - кандидатов, при этом кодированный индекс MVP содержит одно из унарного кодированного индекса MVP и усеченного унарного кодированного индекса MVP и декодирует кодированный индекс MVP для определения индекса MVP.
54. Устройство по п. 51, дополнительно содержащее:
определение того, что временной вектор движения - кандидат для текущего участка текущего кадра недоступен; и
в ответ на определение того, что временной вектор движения - кандидат недоступен, определение информации вектора движения по умолчанию для временного вектора движения - кандидата, при этом информация вектора движения по умолчанию содержит амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр.
55. Устройство по п. 54, дополнительно содержащее блок энтропийного декодирования, который определяет контекст для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
56. Устройство по п. 54, в котором блок компенсации движения дополнительно определяет, был ли опорный кадр intra-кодирован, и когда опорный кадр определен как intra-кодированный, извлекает информацию вектора движения по умолчанию на основании пространственных векторов движения, определенных для участка опорного кадра совместно размещенного в том же самом положении опорного кадра, что и текущий участок, находящийся в текущем кадре.
57. Устройство по п. 51, в котором блок компенсации движения определяет то, что один из пространственных векторов движения - кандидатов недоступен, в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, определяет вектор движения - кандидат по умолчанию, который включает в себя информацию вектора движения по умолчанию для одного из пространственных векторов движения - кандидатов на основании режима предсказания вектора движения, отсекает пространственные векторы движения - кандидаты, которые включают в себя один или более векторов движения - кандидатов по умолчанию, для удаления дублирующихся из пространственных векторов движения - кандидатов, и выбирает один из временных векторов движения - кандидатов, один из пространственных векторов движения - кандидатов, определенный как недоступный, или один из пространственных векторов движения - кандидатов, оставшихся после отсечения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке.
58. Устройство по п. 57, в котором блок компенсации движения определяет амплитуду вектора движения без определения направления предсказания, идентифицирующего, предшествует ли или следует ли за текущим кадром опорный кадр временно, или индекса опоры, идентифицирующего опорный кадр, когда режимом предсказания вектора движения является режим адаптивного предсказания вектора движения (AMVP).
59. Устройство по п. 57, в котором блок компенсации движения определяет амплитуду вектора движения, направление предсказания, идентифицирующее, предшествует ли или следует ли за текущим кадром опорный кадр временно, и индекс опоры, идентифицирующий опорный кадр, когда режимом предсказания вектора движения является режим слияния.
60. Устройство по п. 57, дополнительно содержащее блок энтропийного декодирования, который определяет контекст для выполнения контекстного адаптивного статистического декодирования без потерь на основании определенной информации вектора движения по умолчанию, при этом контекст идентифицирует таблицу кодирования для использования для декодирования видеоданных.
61. Устройство по п. 51, в котором блок компенсации движения определяет то, что один из пространственных векторов движения - кандидатов недоступен, в ответ на определение того, что один из пространственных векторов движения - кандидатов недоступен, удаляет один из пространственных векторов движения - кандидатов, который определен как недоступный, из процесса отсечения, и отсекает только те из пространственных векторов движения - кандидатов, которые были определены как доступные, для удаления дублирующихся из пространственных векторов движения - кандидатов без удаления временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, или одного из пространственных векторов движения - кандидатов, который определен как недоступный.
62. Устройство по п. 51, в котором блок компенсации движения дополнительно определяет один или более дополнительных пространственных векторов движения - кандидатов, которые не являются временно предсказанными и которые отличаются от какого-либо из временного вектора движения - кандидата и пространственных векторов движения - кандидатов, оставшихся после отсечения, и выбирает временной вектор движения - кандидат, один из пространственных векторов движения - кандидатов, оставшихся после отсечения, или один из дополнительных пространственных векторов движения - кандидатов, в качестве выбранного вектора движения - кандидата.
63. Невременный считываемый компьютером носитель, содержащий инструкции, которые, когда исполняются, побуждают один или более процессоров к:
определению пространственных векторов движения - кандидатов, связанных с текущим участком текущего видеокадра, при этом пространственные векторы движения - кандидаты содержат векторы движения, определенные для соседствующих участков текущего видеокадра, прилегающих к текущему участку;
отсечению пространственных векторов движения - кандидатов для удаления дублирующихся из пространственных векторов движения - кандидатов без рассмотрения временного вектора движения - кандидата, определенного для текущего участка текущего видеокадра, во время процесса отсечения, при этом временной вектор движения - кандидат содержит вектор движения, определенный для участка опорного видеокадра;
выбору одного из временного вектора движения - кандидата или одного из пространственных векторов движения - кандидатов, оставшихся после отсечения, в качестве выбранного вектора движения - кандидата для процесса предсказания вектора движения, на основании индекса предиктора вектора движения (MVP), сигнализируемого в битовом потоке; и
выполнению компенсации движения на основании выбранного вектора движения - кандидата.
Колосоуборка | 1923 |
|
SU2009A1 |
Y | |||
SU et al | |||
"On motion vector competition", JCTVC-C257, 3rd Meeting: Guangzhou, CN, 7-15 October 2010, опубл | |||
Печь-кухня, могущая работать, как самостоятельно, так и в комбинации с разного рода нагревательными приборами | 1921 |
|
SU10A1 |
Печь для непрерывного получения сернистого натрия | 1921 |
|
SU1A1 |
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
US 7567617 B2, 28.07.2009 | |||
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
ПРОСТРАНСТВЕННО-ВРЕМЕННОЕ ПРОГНОЗИРОВАНИЕ ДЛЯ ДВУНАПРАВЛЕНО ПРОГНОЗИРУЕМЫХ (В) ИЗОБРАЖЕНИЙ И ПРОГНОЗИРОВАНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ КОМПЕНСАЦИИ ДВИЖЕНИЯ МНОЖЕСТВЕННЫХ ИЗОБРАЖЕНИЙ С ПОМОЩЬЮ ЭТАЛОНА | 2003 |
|
RU2310231C2 |
Авторы
Даты
2015-05-10—Публикация
2012-01-18—Подача