RU2689187C2 - Декодирование и синтезирование кадров для неполных видеоданных - Google Patents

Декодирование и синтезирование кадров для неполных видеоданных Download PDF

Info

Publication number
RU2689187C2
RU2689187C2 RU2016138439A RU2016138439A RU2689187C2 RU 2689187 C2 RU2689187 C2 RU 2689187C2 RU 2016138439 A RU2016138439 A RU 2016138439A RU 2016138439 A RU2016138439 A RU 2016138439A RU 2689187 C2 RU2689187 C2 RU 2689187C2
Authority
RU
Russia
Prior art keywords
frame
data
fragments
frames
computer system
Prior art date
Application number
RU2016138439A
Other languages
English (en)
Other versions
RU2016138439A (ru
RU2016138439A3 (ru
Inventor
Шон КАЛЛАХАН
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2016138439A publication Critical patent/RU2016138439A/ru
Publication of RU2016138439A3 publication Critical patent/RU2016138439A3/ru
Application granted granted Critical
Publication of RU2689187C2 publication Critical patent/RU2689187C2/ru

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/31Communication aspects specific to video games, e.g. between several handheld game devices at close range
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/127Updating a frame memory using a transfer of data from a source area to a destination area

Abstract

Изобретение относится к вычислительной технике. Технический результат заключается в декодировании неполных видеоданных. Машинореализуемый способ декодирования неполных видеоданных, в котором осуществляют доступ к по меньшей мере одной первой части первого кадра, содержащегося в видеоданных; декодируют эту по меньшей мере одну первую часть первого кадра, к которой осуществляется доступ, перед приемом по меньшей мере одной второй части первого кадра; определяют, что первый кадр является неполным, посредством определения того, что вторая часть первого кадра не принята; в ответ на определение того, что первый кадр является неполным, синтезируют по меньшей мере одну заменяющую часть для первого кадра, используя по меньшей мере часть данных кадра, относящихся к по меньшей мере одному предыдущему кадру; отображают поврежденный вариант первого кадра, причем поврежденный вариант первого кадра включает в себя упомянутую по меньшей мере одну первую часть и упомянутую заменяющую часть; отправляют во вторую вычислительную систему уведомление инициировать обновление первого кадра для приема второго кадра; принимают второй кадр из второй вычислительной системы и используют второй кадр вместо поврежденного варианта первого кадра в одном или более последующих кадрах, которые используют первый кадр в качестве опорного кадра. 4 н. и 16 з.п. ф-лы, 7 ил.

Description

УРОВЕНЬ ТЕХНИКИ
[0001] Видеоданные обычно передаются по Интернету и другим сетям потребителям во всем мире. Видеоданные типично отправляются с использованием протоколов, которые разрешают или компенсируют потери пакетов данных видеокадров. Например, видеокадры, кодированные с использованием H.264-формата, могут передаваться с использованием нескольких различных фрагментов или слайсов (слайсов), каждая из которых может включать в себя несколько пакетов данных кадров. Эти пакеты могут теряться в ходе передачи или могут задерживаться по различным причинам. Если данные кадра для данного кадра остаются непринятыми в течение определенного количества времени, кадр выбрасывается, что приводит к потерям визуальной точности воспроизведения, которая может быть заметной видеопотребителем.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0002] Варианты осуществления, описанные в данном документе, направлены на декодирование неполных видеоданных. В одном варианте осуществления, компьютерная система принимает фрагмент кадра (например, видеокадр). Кадр включает в себя несколько фрагментов кадра или слайсов, причем каждый фрагмент кадра кодируется таким образом, чтобы быть отдельно декодируемым. Компьютерная система декодирует принимаемые фрагменты кадра при ожидании приема по меньшей мере одного дополнительного фрагмента кадра. Затем, когда возникает состояние, указывающее, что кадр является неполным, компьютерная система синтезирует фрагменты кадра для замены этого дополнительного фрагмента кадра, который еще не принят.
[0003] В другом варианте осуществления, в ответ на прием фрагментов кадра, компьютерная система декодирует принимаемые фрагменты кадра при ожидании приема других фрагментов кадра. Компьютерная система обнаруживает возникновение состояния, указывающего то, что кадр является неполным, причем кадр имеет по меньшей мере один дополнительный фрагмент кадра, который еще должен быть принят. Затем в ответ на обнаружение возникновения, компьютерная система синтезирует фрагменты кадра для того, чтобы заменять эти дополнительные фрагменты кадра, которые еще должны быть приняты.
[0004] В другом варианте осуществления, компьютерная система осуществляет доступ к фрагменту кадра из кадра, который включает в себя несколько фрагментов кадра. Каждый фрагмент кадра является отдельно декодируемым. Компьютерная система декодирует фрагменты кадра, к которым осуществляется доступ, при ожидании приема дополнительного фрагмента кадра. Компьютерная система затем определяет то, что по меньшей мере один дополнительный фрагмент кадра еще должен быть принят, и в ответ на это определение, синтезирует фрагменты кадра с использованием данных кадра, ассоциированных с предыдущими кадрами.
[0005] Это краткое изложение сущности изобретения приведена для введения в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерение ни идентифицировать ключевые или важнейшие признаки заявленного изобретения, ни использоваться в качестве помощи при определении объема заявленного изобретения.
[0006] Дополнительные признаки и преимущества изложены в нижеприведенном описании и частично должны быть очевидными для специалистов в данной области техники из описания или могут выявляться при практическом применении идей в данном документе. Признаки и преимущества вариантов осуществления, описанных в данном документе, могут быть реализованы и получены посредством инструментов и комбинаций, детально указанных в прилагаемой формуле изобретения. Признаки вариантов осуществления, описанных в данном документе, должны становиться более очевидными из нижеприведенного описания и прилагаемой формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] Чтобы дополнительно прояснять вышеуказанные и другие признаки вариантов осуществления, описанных в данном документе, более подробное описание представлено в отношении прилагаемых чертежей. Следует принимать во внимание, что эти чертежи иллюстрируют только примеры вариантов осуществления, описанных в данном документе, и, следовательно, не должны считаться ограничивающими их объем. Варианты осуществления описываются и поясняются подробнее через использование прилагаемых чертежей, на которых:
[0008] Фиг. 1 иллюстрирует компьютерную архитектуру, в которой могут работать варианты осуществления, описанные в данном документе, включающие в себя декодирование неполными видеоданными.
[0009] Фиг. 2 иллюстрирует блок-схему последовательности операций примерного способа для декодирования неполных видеоданных.
[0010] Фиг. 3 иллюстрирует блок-схему последовательности операций альтернативного примерного способа для декодирования неполных видеоданных.
[0011] Фиг. 4 иллюстрирует блок-схему последовательности операций другого альтернативного примерного способа для декодирования неполных видеоданных.
[0012] Фиг. 5 иллюстрирует вариант осуществления, в котором фрагменты кадра декодируются последовательным способом.
[0013] Фиг. 6 иллюстрирует вариант осуществления, в котором фрагменты кадра декодируются и синтезируются.
[0014] Фиг. 7 иллюстрирует вариант осуществления, в котором фрагменты кадра декодируются в H.264-канале.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0015] Варианты осуществления, описанные в данном документе, направлены на декодирование неполных видеоданных. В одном варианте осуществления, компьютерная система принимает фрагмент кадра (например, видеокадр). Кадр включает в себя несколько фрагментов кадра, причем каждый фрагмент кадра закодирован так, что является отдельно декодируемым. Компьютерная система декодирует принимаемые фрагменты кадра при ожидании приема по меньшей мере одного дополнительного фрагмента кадра. Затем, когда возникает состояние, указывающее то, что кадр является неполным, компьютерная система синтезирует фрагменты кадра для замены этого дополнительного фрагмента кадра, который еще не принят.
[0016] В другом варианте осуществления, в ответ на прием фрагментов кадра, компьютерная система декодирует принимаемые фрагменты кадра при ожидании приема других фрагментов кадра. Компьютерная система обнаруживает возникновение состояния, указывающего то, что кадр является неполным, причем кадр имеет по меньшей мере один дополнительный фрагмент кадра, который еще должен быть принят. Затем в ответ на обнаружение возникновения, компьютерная система синтезирует фрагменты кадра для того, чтобы заменять эти дополнительные фрагменты кадра, которые еще должны быть приняты.
[0017] В другом варианте осуществления, компьютерная система осуществляет доступ к фрагменту кадра из кадра, который включает в себя несколько фрагментов кадра. Каждый фрагмент кадра является отдельно декодируемым. Компьютерная система декодирует фрагменты кадра, к которым осуществляется доступ, при ожидании приема дополнительного фрагмента кадра. Компьютерная система затем определяет то, что, по меньшей мере, один дополнительный фрагмент кадра еще должен быть принят, и в ответ на определение, синтезирует фрагменты кадра с использованием данных кадра, ассоциированных с предыдущими кадрами.
[0018] Нижеприведенное пояснение далее ссылается на определенное число способов и этапов способа, которые могут выполняться. Следует отметить, что хотя этапы способа могут поясняться в определенном порядке или иллюстрироваться на блок-схеме последовательности операций способа как осуществляющиеся в конкретном порядке, конкретный порядок не является обязательным, если иное не указано прямо, или является обязательным, поскольку этап зависит от завершения другого этапа до выполнения данного этапа.
[0019] Варианты осуществления, описанные в данном документе, могут реализовывать различные типы вычислительных систем. Эти вычислительные системы сегодня все в большей степени принимают множество форм. Вычислительные системы могут представлять собой, например, карманные устройства, бытовые приборы, переносные компьютеры, настольные компьютеры, мейнфреймы, распределенные вычислительные системы или даже устройства, которые традиционно не считаются вычислительной системой. В этом описании и в формуле изобретения, термин "вычислительная система" задается в широком смысле как включающий в себя любое устройство или систему (либо их комбинацию), которая включает в себя, по меньшей мере, один физический и материальный процессор и физическое и материальное запоминающее устройство, допускающее наличие машиноисполняемых инструкций, которые могут выполняться посредством процессора. Вычислительная система может быть распределена по сетевому окружению и может иметь несколько составляющих вычислительных систем.
[0020] Как проиллюстрировано на фиг. 1, вычислительная система 101 типично включает в себя, по меньшей мере, один модуль 102A обработки и запоминающее устройство 103A. Запоминающее устройство 103A может представлять собой физическое системное запоминающее устройство, которое может быть энергозависимым, энергонезависимым либо некоторой комбинацией означенного. Термин "запоминающее устройство" также может быть использован в данном документе для того, чтобы ссылаться на энергонезависимое устройство хранения большой емкости, такое как физические носители хранения данных. Если вычислительная система является распределенной, возможности обработки, запоминающего устройства и/или хранения также могут быть распределенными.
[0021] При использовании в данном документе, термин "выполняемый модуль" или "выполняемый компонент" может означать программные объекты, маршрутизации или способы, которые могут выполняться в вычислительной системе. Различные компоненты, модули, механизмы и службы, описанные в данном документе, могут быть реализованы как объекты или процессы, которые выполняются в вычислительной системе (к примеру, как отдельные подпроцессы).
[0022] В нижеследующем описании, варианты осуществления поясняются со ссылкой на этапы, которые выполняются посредством одной или более вычислительных систем. Если эти этапы реализованы в программном обеспечении, один или более процессоров ассоциированной вычислительной системы, которая выполняет этап, управляют работой вычислительной системы в ответ на выполнение машиночитаемых инструкций. Например, такие машиноисполняемые инструкции могут быть осуществлены на одном или более машиночитаемых носителей, которые формируют компьютерный программный продукт. Пример такой операции заключает в себе обработку данных. Машиноисполняемые инструкции (и обработанные данные) могут сохраняться в запоминающем устройстве 103A вычислительной системы 101. Вычислительная система 101 также может содержать каналы связи, которые обеспечивают возможность вычислительной системе 101 обмениваться данными с другими процессорами сообщений по проводной или беспроводной сети.
[0023] Варианты осуществления, описанные в данном документе, могут содержать или использовать систему специального назначения или общего назначения, которая включает в себя компьютерные аппаратные средства, такие как, например, один или более процессоров и системное запоминающее устройство, как подробнее поясняется ниже. Системное запоминающее устройство может быть включено в полное запоминающее устройство 103A. Системное запоминающее устройство также может упоминаться в качестве "основного запоминающего устройства" и включает в себя местоположения запоминающего устройства, которые являются адресуемыми посредством, по меньшей мере, одного модуля 102A обработки по шине запоминающего устройства, причем в этом случае местоположение адреса подтверждается непосредственно на шине запоминающего устройства. Системное запоминающее устройство традиционно является энергозависимым, но принципы, описанные в данном документе, также применяются в случаях, в которых системное запоминающее устройство, частично или даже полностью, является энергонезависимым.
[0024] Варианты осуществления в пределах объема настоящего изобретения также включают в себя физические и другие машиночитаемые носители для переноса или сохранения машиноисполняемых инструкций и/или структур данных. Эти машиночитаемые носители могу представлять собой любые доступные носители, к которым можно осуществлять доступ посредством компьютерной системы общего назначения или специального назначения. Машиночитаемые носители, которые сохраняют машиноисполняемые инструкции и/или структуры данных, представляют собой компьютерные носители хранения данных. Машиночитаемые носители, которые переносят машиноисполняемые инструкции и/или структуры данных, представляют собой среды передачи. Таким образом, в качестве примера, а не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два совершенно различных типа машиночитаемых носителей: компьютерные носители хранения данных и среды передачи.
[0025] Компьютерные носители хранения данных представляют собой физические аппаратные носители хранения данных, которые сохраняют машиноисполняемые инструкции и/или структуры данных. Физические аппаратные носители хранения данных включают в себя компьютерные аппаратные средства, к примеру, RAM, ROM, EEPROM, полупроводниковые накопители (SSD), флэш-память, запоминающее устройство на фазовых переходах (PCM), устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любое другое аппаратное устройство(а) хранения данных, которое может использоваться для того, чтобы сохранять программный код в форме машиноисполняемых инструкций или структур данных, к которому может осуществляться доступ и которое может выполняться посредством компьютерной системы общего назначения или специального назначения для того, чтобы реализовывать раскрытую функциональность изобретения.
[0026] Среды передачи могут включать в себя сеть и/или линии связи для передачи данных, которые могут использоваться для того, чтобы переносить программный код в форме машиноисполняемых инструкций или структур данных, и к которым может осуществляться доступ посредством системы общего назначения или специального назначения. "Сеть" задается как одна или более линий связи для передачи данных, которые обеспечивают транспортировку электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или предоставляется по сети или другим соединениям связи (проводным, беспроводным либо комбинации проводных и беспроводных) в компьютерную систему, компьютерная система может рассматривать соединение в качестве сред передачи. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[0027] Дополнительно, после достижения различных компонентов компьютерной системы, программный код в форме машиноисполняемых инструкций или структур данных может передаваться автоматически из сред передачи в компьютерные носители хранения данных (или наоборот). Например, машиноисполняемые инструкции или структуры данных, принятые по сети или линии связи для передачи данных, могут быть буферизованы в RAM в пределах сетевого интерфейсного модуля (например, NIC) и затем в конечном счете переданы в RAM компьютерной системы и/или в менее энергозависимые компьютерные носители хранения данных в компьютерной системе. Таким образом, следует понимать, что компьютерные носители хранения данных могут быть включены в компоненты компьютерной системы, которые также (или даже главным образом) используют среды передачи.
[0028] Машиночитаемые инструкции содержат, например, инструкции и данные, которые, при выполнении в одном или более процессоров, инструктируют компьютерной системе общего назначения, компьютерной системе специального назначения или устройству обработки специального назначения выполнять определенную функцию или группу функций. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, к примеру, на языке ассемблера или даже исходный код.
[0029] Специалисты в данной области техники должны принимать во внимание, что принципы, описанные в данном документе, могут осуществляться на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, сетевые PC, миникомпьютеры, мэйнфреймы, мобильные телефоны, PDA, планшетные компьютеры, устройства поискового вызова, маршрутизаторы, коммутаторы и т.п. Изобретение также может осуществляться на практике в распределенных системных окружениях, в которых локальные и удаленные компьютерные системы, которые соединены (посредством проводных линий связи для передачи данных, беспроводных линий связи для передачи данных или посредством комбинации проводных и беспроводных линий связи для передачи данных) через сеть, выполняют задачи. В связи с этим, в распределенном системном окружении, компьютерная система может включать в себя множество составляющих компьютерных систем. В распределенном системном окружении, программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.
[0030] Специалисты в данной области техники также должны принимать во внимание, что изобретение может осуществляться на практике в облачном вычислительном окружении. Облачные вычислительные окружения могут быть распределенными, хотя это не требуется. Если являются распределенными, облачные вычислительные окружения могут быть распределены по разным странам в пределах организации и/или иметь компонентами, которыми владеют несколько организаций. В этом описании и в прилагаемой формуле изобретения, "облачные вычисления" задаются как модель для обеспечения сетевого доступа по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов (например, сетей, серверов, устройств хранения, приложений и служб). Определение "облачных вычислений" не ограничено ни одним из множества других преимуществ, которые могут быть получены из такой модели при надлежащем развертывании.
[0031] Еще дополнительно, архитектуры системы, описанные в данном документе, могут включать в себя множество независимых компонентов, каждый из которых реализует часть функциональности системы в целом. Этот модульный принцип обеспечивает повышенную гибкость при решении вопросов масштабируемости платформы и в связи с этим предоставляет множество преимуществ. Сложность и рост системы могут проще управляться с помощью частей небольшого масштаба с ограниченным функциональным объемом. Отказоустойчивость платформы повышается с помощью этих слабо связанных модулей. Отдельные компоненты могут расширяться инкрементно в соответствии с бизнес-потребностями. Модульная разработка также приводит к меньшему времени вывода на рынок для новой функциональности. Новая функциональность может добавляться или исключаться без оказания влияния на базовую систему.
[0032] Фиг. 1 иллюстрирует компьютерную архитектуру 100, в которой может использоваться, по меньшей мере, один вариант осуществления. Компьютерная архитектура 100 включает в себя компьютерную систему 101. Компьютерные системы 101 и 113 могут представлять собой любой тип локальных компьютерных систем или распределенных компьютерных систем, включающих в себя облачные вычислительные системы. Каждая из них включает в себя, по меньшей мере, один процессор 102A/102B, запоминающее устройство 103A/103B и модуль 104A/104B связи. Модуль связи может включать в себя средства проводной или беспроводной связи, включающие в себя проводные или беспроводные сетевые карты, беспроводные Bluetooth-радиомодули, WiFi-радиомодули или другие аппаратные средства, выполненные с возможностью передавать и/или принимать цифровые данные. Модуль 104A связи, например, может принимать кадры 111 или фрагменты 110 кадра из модуля 104B связи компьютерной системы 113.
[0033] В некоторых вариантах осуществления, компьютерная система 113 может представлять собой сервер. Сервер может представлять собой одну компьютерную систему или может быть распределенным. Сервер может быть выполнен с возможностью предоставлять данные в клиенты, к примеру, в компьютерную систему 101. Сервер может предоставлять данные приложения в клиенты в ответ на ввод или другие запросы на данные. В некоторых случаях, компьютерная система 113 может представлять собой сервер видеоигр. В таких случаях, сервер видеоигр может быть выполнен с возможностью предоставлять кадры с контентом видеоигры. Эти кадры могут быть кодированы или, по меньшей мере, в некоторых случаях, могут быть в необработанной форме. Кадры могут отправляться в полнокадровой форме 111 или во фрагментах 110. Фрагменты могут отправляться через пакеты данных, и каждый фрагмент может включать в себя один или более пакетов данных. В связи с этим, фрагменты кадра передаются в компьютерную систему 101 и затем комбинируются таким образом, чтобы формировать полный кадр. Эти фрагменты кадра могут отправляться непрерывным потоковым способом для того, чтобы формировать смежную последовательность кадров для того, чтобы формировать киноизображение. В сценарии проведения игр, этот поток кадров должен формировать вывод видеоигры. Следует понимать, что вариант осуществления на основе видеоигр, хотя часто упоминается в данном документе, является просто одним примером варианта осуществления, в котором видеоконтент передается (т.е. передается в потоковом режиме) из одной компьютерной системы в другую. Фактически, декодирование неполных данных, как описано ниже, может реализовываться во множестве различных сценариев, в которых видеоданные отправляются по сети с потерями.
[0034] Чтобы упрощать передачу кадров 111 и фрагментов 110 кадра, они зачастую кодируются некоторым способом до передачи. В некоторых вариантах осуществления, кадры могут кодироваться согласно H.264-формату. В других вариантах осуществления, могут использоваться другие форматы. Модуль 114 кодирования компьютерной системы 113 может кодировать полные кадры и/или фрагменты 110 кадра согласно выбранному формату кодирования. Эти кодированные кадры или фрагменты кадра далее передаются в компьютерную систему 101, в которой они затем декодируются и отображаются на дисплее 108. Модуль 105 декодирования декодирует принимаемые кадры 111 и фрагменты 110 кадра и отправляет их на дисплей 108 для отображения пользователю. В некоторых вариантах осуществления, модуль 105 декодирования может быть выполнен с возможностью отображать фрагменты 110 кадра, даже когда некоторые фрагменты кадра пропущены. Фактически, в сетевой транзакции, в которой пакеты данных потеряны, некоторые фрагменты кадра или некоторые их части могут быть потеряны или могут задерживаться в ходе передачи. В таких случаях, модуль декодирования должен продолжать декодирование фрагментов 110 кадра, которые он принимает, при ожидании показа потерянных или задержанных фрагментов. Если потерянные или задержанные фрагменты не показаны во времени, модуль 107 синтезирования кадров может синтезировать фрагмент кадра с использованием множества различных технологий синтеза кадров.
[0035] Например, модуль 107 синтезирования кадров может синтезировать потерянный или задержанный фрагмент кадра посредством обращения к данным кадра для одного или более предыдущих кадров. Модуль 107 синтезирования кадров может определять то, что пропущенный фрагмент кадра находится в левом верхнем углу кадра, который в данный момент декодируется и подготавливается к отображению. Модуль 107 синтезирования кадров затем может обращаться к данным кадра для левого верхнего угла одного или более предыдущих кадров для того, чтобы выявлять то, на что эта часть кадра похожа (например, это синее небо или городской фон и т.д.). Затем на основе этих данных, модуль 107 синтезирования кадров может синтезировать пропущенный фрагмент(ы) кадра таким образом, что кадр выглядит практически точным. Тем не менее, вероятно, возникают некоторые потери точности воспроизведения. В этот момент, компьютерная система 101 может отправлять в компьютерную систему 113 индикатор 112, указывающий то, что, по меньшей мере, один фрагмент кадра потерян или существенно задержан, и то, что полный кадр 111 должен отправляться. Затем вместо отправки дельта-кадров (т.е. отправки просто частей кадра, которые изменены), должен отправляться полный кадр 111, либо должно выполняться некоторое другое обновление, чтобы корректировать некорректные пикселы. Следует отметить, что множество различных способов и технологий могут использоваться для того, чтобы синтезировать пропущенные фрагменты кадра. Эти способы синтеза кадров и другие принципы подробнее описываются ниже относительно способов 200, 300 и 400 по фиг. 2, 3 и 4, соответственно.
[0036] С учетом систем и архитектур, описанных выше, технологии, которые могут реализовываться в соответствии с раскрытым изобретением, должны лучше приниматься во внимание со ссылкой на блок-схемы последовательности операций способа по фиг. 2, 3 и 4. Для простоты пояснения, технологии показаны и описаны в качестве последовательности блоков. Тем не менее, следует понимать и принимать во внимание то, что заявленное изобретения не ограничено порядком блоков, поскольку некоторые блоки могут возникать в другом порядке и/или одновременно с другими блоками, если сравнивать с тем, что проиллюстрировано и описано в данном документе. Кроме того, не все проиллюстрированные этапы могут требоваться для того, чтобы реализовывать технологии, описанные далее.
[0037] Фиг. 2 иллюстрирует блок-схему последовательности операций способа 200 для декодирования неполных видеоданных. Способ 200 далее описывается со ссылкой на компоненты и данные окружения 100.
[0038] Способ 200 включает в себя этап приема, по меньшей мере, одного фрагмента кадра, причем кадр включает в себя множество фрагментов кадра, при этом каждый фрагмент кадра непосредственно кодируется так образом, чтобы быть отдельно декодируемым (этап 210). Например, модуль 104A связи компьютерной системы 101 может принимать фрагмент 110 кадра из модуля 104B связи компьютерной системы 113. Фрагмент 110 кадра может отправляться отдельно или в комбинации с другими фрагментами. Кроме того, сам фрагмент кадра может отправляться в одном пакете данных или может быть разбит на множество пакетов данных. Фрагмент 110 кадра представляет собой один фрагмент полного кадра (например, 111) и по сути формирует полный кадр при комбинировании с другими соответствующими фрагментами кадра. Кадры могут разделяться практически на любое число фрагментов кадра. Эти фрагменты затем переданы и повторно собраны с тем, чтобы формировать полный кадр. В некоторых вариантах осуществления, фрагменты кадра могут кодироваться посредством модуля 114 кодирования перед передачей в компьютерную систему 101. Кадры могут кодироваться в любом из множества различных форматов кодирования. Эти форматы кодирования могут быть оптимизированы согласно качеству видео, эффективности передачи (т.е. полосе пропускания), быстрому декодированию или согласно некоторым другим соображениям.
[0039] Каждый фрагмент 110 кадра может быть отдельно кодирован таким способом, который обеспечивает возможность отдельного декодирования фрагмента кадра. Таким образом, модуль 105 декодирования компьютерной системы 101 может принимать фрагмент кадра и декодировать его без приема других фрагментов кадра. Затем после приема другого фрагмента кадра и при ожидании приема других фрагментов кадра, модуль 105 декодирования может начинать декодирование недавно принимаемого фрагмента. Фактически, это описывается в способе 200, который включает в себя этап декодирования, по меньшей мере, одного из принимаемых фрагментов кадра при ожидании приема, по меньшей мере, одного дополнительного фрагмента кадра (этап 220). Этот процесс дополнительно иллюстрируется на фиг. 5.
[0040] Фиг. 5 включает в себя декодер 501, который может быть идентичным или отличным от модуля 105 декодирования по фиг. 1. Декодер 501, возможно, ранее принял фрагмент 503A кадра и, возможно, уже начал его декодирование. Этот декодированный фрагмент 503A кадра может добавляться или может иным образом начинать формирование кадра 505. Хотя показано как формирование нижней части кадра 505, следует понимать, что декодированный фрагмент 503A кадра может включать в себя данные кадра практически из любой части кадра и может включать в себя данные кадра из одного блока в кадре или может включать в себя данные кадра из различных частей кадра. Тем не менее, для простоты, фрагменты кадра на фиг. 5 и 6 показаны как накапливающиеся поверх друг друга горизонтально. Входящие фрагменты 502B, 502C и 502D кадра показаны на фиг 5 как передаваемые и еще не приняты посредством декодера 501. Тем не менее, по мере того, как эти принимаются фрагменты кадра, декодер 501 может начинать их декодирование отдельно. Таким образом, принимаемый фрагмент 503А кадра может декодироваться при ожидании приема фрагмента 502B кадра. Аналогично, фрагмент 503B кадра может декодироваться при ожидании приема фрагмента 502C кадра, фрагмент 503C кадра может декодироваться при ожидании приема фрагмента 502D кадра, и т.д. Таким образом, декодер 501 может использовать данные кадра, которые он в данный момент имеет, для того, чтобы начинать процесс декодирования.
[0041] Фрагменты кадра также могут декодироваться не по порядку. Фрагменты кадра типично передаются по сетям с потерями и могут передаваться с использованием протоколов, которые не гарантируют безопасную передачу каждого пакета (например, UDP). Таким образом, фрагменты кадра могут быть потеряны или задержаны по различным причинам. В одном примере, фрагмент 502C кадра может приниматься перед фрагментом 502B кадра. В таком случае, декодер 501 может начинать декодирование фрагмента 502C кадра до того, как он принимает фрагмент 502B кадра. Затем, при приеме фрагмента 502B кадра, он декодируется и добавляется в кадр 505. В завершение, после приема всех составляющих фрагментов кадра 505, кадр должен отображаться на дисплее 504. Дисплей может представлять собой любой тип монитора, телевизионного приемника, планшетного компьютера или средства отображения. Кадр 505 может представлять собой один кадр в последовательности кадров. Например, в сценарии потоковой передачи видео или видеоигры, сервер потоковой передачи данных с большой вероятностью должен отправлять множество таких кадров каждую секунду. Эти кадры затем должны отображаться последовательно на дисплее 504, чтобы формировать киноизображение, которое является просматриваемым пользователем.
[0042] Возвращаясь к фиг. 2, после возникновения, по меньшей мере, одного состояния, указывающего то, что кадр является неполным, способ 200 включает в себя этап синтезирования одного или более фрагментов кадра для того, чтобы заменять, по меньшей мере, один дополнительный фрагмент кадра, который еще должен быть принят (этап 230). Состояние может включать в себя, например, определение того, что один или более фрагментов кадра потеряны или задержаны. Модуль 106 мониторинга состояния может быть выполнен с возможностью отслеживать входящие фрагменты кадра и может определять то, что фрагмент кадра потерян или существенно задержан. После такого определения, модуль 107 синтезирования кадров может синтезировать пропущенный фрагмент кадра и вставлять синтезированные данные в кадр для того, чтобы заполнять кадр.
[0043] Как проиллюстрировано на фиг. 6, декодированные фрагменты кадра могут комбинироваться с синтезированными фрагментами кадра для того, чтобы формировать кадр. Декодер 601 принимает фрагменты кадра, как описано выше относительно фиг. 5. Как показано, кадр 607 включает в себя уже декодированный фрагмент 605A кадра. Фрагмент 605A кадра, возможно, декодирован при ожидании фрагментов 602B, 602C, 602D, 602E кадра и т.д. Модуль 106 мониторинга состояния по фиг. 1 может определять то, что фрагмент 604B кадра потерян или задержан, и может инициировать модуль 107 синтезирования кадров (или синтезатор 603) для того, чтобы синтезировать фрагмент 604B кадра. Синтезированные данные могут получаться множеством способов, как подробнее описано ниже относительно фиг. 3. Синтезированный фрагмент 604B кадра может вставляться в кадр 607 в части(ях), в которой должен быть фактический фрагмент кадра. Декодер 601 может продолжать декодирование фрагментов кадра, в то время как синтезатор синтезирует другие фрагменты кадра. Таким образом, фрагмент 602C кадра может приниматься и декодироваться, что приводит к декодированному фрагменту 605C кадра. Другие фрагменты кадра, к примеру, 602D и 602E, также могут приниматься и декодироваться, в то время как синтезатор синтезирует данные для пропущенного или задержанного фрагмента кадра.
[0044] Возвращаясь к фиг. 1, модуль 106 мониторинга состояния может определять то, что возникает состояние, указывающее то, что кадр 111 является неполным. Это состояние может включать в себя индикатор того, что принято указанное минимальное пороговое число фрагментов кадра, что указывает то, что синтез фрагментов кадров должен осуществляться. Таким образом, например, минимальное число фрагментов кадра может устанавливаться в расчете на кадр или в расчете на последовательность кадров. После того, как достигнуто минимальное число фрагментов кадра, этот кадр может считаться допускающим коррекцию через синтез. В связи с этим, кадр включает в себя достаточно принимаемых данных, так что воссоздание (т.е. синтез) оставшихся фрагментов кадра является допустимым. Это минимальное число фрагментов кадра может задаваться администратором, программистом или другим пользователем.
[0045] В случаях, если минимальное число фрагментов кадра не принято, или в случаях, если синтез является невозможным или нежелательным (например, в результате получается слишком большое число артефактов), компьютерная система 101 может формировать индикатор 112, указывающий то, что должны отправляться эти данные замены кадра. По меньшей мере, в некоторых вариантах осуществления, данные замены кадра представляют собой полный кадр (например, 111). Индикатор 112 отправляется в вычислительную систему 113, и она отвечает посредством отправки полного кадра 111. Эти принимаемые данные кадра могут быть включены в существующий кадр (если фрагменты кадра отправлены) либо могут быть включены в качестве полного кадра.
[0046] Таким образом, как описано в способе 200 по фиг. 2, информация видеокадров может использоваться для того, чтобы определять то, что следует делать, когда обнаруживаются потери низкоуровневых пакетов, и в таких ситуациях, минимизировать время задержки при декодировании и визуальное повреждение, когда данные пропущены. Варианты осуществления обрабатывают низкоуровневые пакеты данных, поступающие по сети, отслеживают и группируют пакеты данных посредством кадра и фрагмента кадра и подают сгруппированные фрагменты кадра в модуль 105 декодирования при ожидании поступления других пакетов данных кадров. Если пакеты данных из фрагмента кадра не могут восстанавливаться через коррекцию ошибок, частичные фрагменты кадра либо заполняются, либо заменяются посредством синтезированных данных, которые минимизируют визуальное повреждение до тех пор, пока обновление не сможет быть выполнено (т.е. пока полный кадр 111 не будет отправлен). Это дополнительно позволяет использовать видеодекодеры, которые не имеют надежного скрытия ошибок посредством предоставления в них допустимых данных.
[0047] Фактически, в некоторых вариантах осуществления, компьютерная система 101 может определять то, что, по меньшей мере, один из принимаемых фрагментов кадра 110 включает в себя данные прямой коррекции ошибок. Эти данные прямой коррекции ошибок (FEC) затем могут реализовываться, чтобы исправлять ошибки во фрагменте кадра и в конечном счете использовать этот фрагмент кадра для того, чтобы формировать кадр. В таких случаях, фрагмент кадра может декодироваться до того, как инициируется прямая коррекция ошибок. В других вариантах осуществления, компьютерная система 101 может быть выполнена с возможностью ожидать FEC-информации для кадра, который имеет непринятый фрагмент кадра, при продолжении декодировать те фрагменты кадра, которые являются полными. Таким образом, модуль 105 декодирования может продолжать декодировать фрагменты кадра, даже при ожидании FEC-данных для тех фрагментах кадра, которые имеют неполные или поврежденные данные (например, вследствие потерянных или поврежденных пакетов данных). Затем когда FEC-данные принимаются для того фрагмента кадра, которому соответствует FEC-информация, модуль 105 декодирования может декодировать FEC-скорректированный фрагмент кадра и комбинировать этот фрагмент кадра с другими, чтобы формировать декодированный кадр 109. Этот кадр затем может отображаться на дисплее 108.
[0048] Фиг. 7 иллюстрирует вариант осуществления, который реализует H.264-формат. Хотя используется этот формат, следует понимать, что другие форматы также могут использоваться в аналогичных технологиях. Пакеты данных кадров могут отслеживаться через несколько кадров. Это приводит к отслеживанию информации, которая указывает компьютерной системе 101 то, что, например, более ранний кадр должен заполняться, и то, что пропущенные пакеты с большой вероятностью не будут поступать и должны считаться отброшенными пакетами. H.264-канал 702 по фиг. 7 использует объекты 703A, 703B и 703C модуля отслеживания кадров для того, чтобы отслеживать известные в данный момент выполняющиеся кадры наряду с пакетами данных, ассоциированными с кадром. Эти пакеты данных принимаются из канала 701 видеовывода или других источников потоковой передачи (например, источников на основе транспортного протокола реального времени (RTP)). Фрагменты кадра (либо слайса при использовании в данном документе) могут отслеживаться посредством объектов 704A, 704B и 704C модуля отслеживания слайсов, чтобы отслеживать каждую из выполняющихся слайсов для каждого кадра. Это обеспечивает возможность компьютерной системе 101 знать то, когда новый кадр начинается, то, насколько полным является предыдущий кадр, то, какие слайсы являются полными или пропущенными, то, когда кадру требуется прямая коррекция ошибок, и т.д.
[0049] H.264-канал 702 может принимать необработанные RTP-пакеты данных (или пакеты данных другого протокола) из канала 701 видеовывода без предварительной обработки. На основе временной метки, пакеты данных кадров подаются либо в существующий объект модуля отслеживания кадров (например, 703A), если имеется, либо в новый созданный объект модуля отслеживания кадров (например, 703C). Рабочие данные пакета данных кадров анализируются, когда приняты посредством модуля отслеживания кадров, и если пакет данных кадров содержит начало единицы слоя абстрагирования от сети (NALU) слайса, новый модуль отслеживания слайсов (например, 704C) создается и добавляется в список. Если пакет данных кадров (например, RTP-пакет 708) является следующим в последовательности для существующего слайса, он подается в соответствующий модуль отслеживания слайсов. В противном случае, пакет данных кадров хранится в списке пакетов не по порядку (OOO) (например, 706) или игнорируется, если он представляет собой копию. Если пакет содержит данные прямой коррекции ошибок (FEC) (например, 707), он либо используется сразу для того, чтобы воссоздавать отброшенный пакет (в некоторых случаях, когда только один пакет пропущен), либо хранится посредством модуля отслеживания кадров для последующего использования, когда поступают дополнительные пакеты.
[0050] По меньшей мере, в некоторых вариантах осуществления, когда пакет данных кадров подается в модуль отслеживания слайсов (например, 704A), может предполагаться, что пакет данных кадров находится в корректном порядке следования. После того, как принимается пакет данных последнего кадра слайса, NALU слайса (например, 705) может отправляться в видеодекодер (например, 105 по фиг. 1).
[0051] Если слайсы (например, фрагменты 110 кадра) для данного кадра 111 заполнены и отправлены в декодер (например, 105), кадр считается полным (например, 705), и канал может перенаправлять его для отображения на дисплее 108. Когда кадр и одна или более его слайсов не являются полными, когда данные для следующего кадра начинают поступать, компьютерная система 101 может определять то, что отброшены данные кадра, которые не могут воссоздаваться через коррекцию ошибок. В таких случаях, возникает синтез фрагментов кадров для того, чтобы маскировать ошибки, вызываемые посредством неполных данных кадра. Пропущенные фрагменты кадра синтезируются посредством модуля 107 синтезирования кадров таким образом, что модуль 105 декодирования может заканчивать обработку кадра. В варианте осуществления на основе H.264, описанном на фиг. 7, для каждого пропущенного слайса компонуется синтезированная NALU слайса, которая копирует пикселы из предыдущего опорного кадра. Синтезированная NALU слайса отправляется в декодер 105 для декодирования. Последующие полные слайса также отправляются для того, чтобы формировать кадр. Это дает в результате полный выходной кадр в случаях, если данные кадра являются неполными или поврежденными.
[0052] Если на поврежденный кадр (т.е. декодированный кадр с синтезированными частями 109) не ссылаются последующие кадры, то он может отображаться на дисплее 108, и затем следующий кадр может обрабатываться нормально. Повреждение данных кадров может быть видимым, но только в пределах времени в течение одиночного кадра, и не должно распространяться на последующие кадры. Альтернативно, если повреждение или другие потери данных являются достаточно значимыми, кадр может быть отброшен полностью и не отображаться вообще. Если поврежденный кадр представляет собой опорный кадр (например, P-кадр в H.264-формате), то его повреждение распространяется на последующие кадры (фактически, любой кадр, используемый в качестве базиса для последующих кадров, имеет свое повреждение распространенным). В таких случаях, поврежденный кадр отображается, но видеоисточник уведомляется через канал 701 видеовывода касательно того, что возникают потери данных. Это обеспечивает возможность видеопоставщику (например, компьютерной системе 113 по фиг. 1) сразу инициировать обновление, быстро очищая повреждение (в некоторых случаях, за следующую секунду или две).
[0053] Обращаясь теперь к фиг. 3, проиллюстрирована блок-схема последовательности операций способа 300 для декодирования неполных видеоданных. Способ 300 далее описывается со ссылкой на компоненты и данные окружения 100.
[0054] Способ 300 включает в себя, в ответ на прием одного или более фрагментов кадра, этап декодирования принимаемых одного или более фрагментов при ожидании приема, по меньшей мере, одного дополнительного фрагмента кадра (этап 310). Например, модуль 104A связи компьютерной системы 101 может принимать фрагменты 110 кадра, которые при комбинировании формируют полный кадр 111. При ожидании дополнительных приема фрагментов кадра, модуль 105 декодирования может начинать декодирование тех фрагментов кадра, которые он принимает, даже если эти фрагменты кадра следуют не по порядку. Модуль 106 мониторинга состояния может обнаруживать возникновение состояния, указывающего то, что кадр является неполным в том, что, по меньшей мере, один дополнительный фрагмент кадра еще должен быть принят (этап 320). Состояние может представлять собой определение того, что данные кадра для фрагмента кадра еще не приняты, или что фрагмент полного кадра не принят. Дополнительно или альтернативно, состояние может представлять собой прием, по меньшей мере, одного фрагмента последующего кадра или выполнение определения того, что данные кадра для данного фрагмента являются поврежденными или иным образом являются неприменимыми.
[0055] В ответ на этот этап обнаружения, модуль 107 синтезирования кадров может синтезировать фрагменты кадра для того, чтобы заменять эти дополнительные фрагменты кадра, которые еще должны быть приняты (этап 330). Синтезирование может возникать множеством различных способов, при этом каждый различный способ приводит к синтезу или воссозданию пропущенных или поврежденных данных. В некоторых случаях, синтезирование фрагментов кадра для того, чтобы заменять эти фрагменты кадра, которые еще должны быть приняты, включает в себя синтезирование фрагментов кадра с использованием данных кадра, ассоциированных с предыдущим кадром. В таких случаях, модуль синтезирования кадров может осуществлять доступ и анализировать один или более предыдущих полных кадров для того, чтобы определять то, как пикселы выглядели в частях, в которых данные кадра в текущем кадре являются пропущенными или поврежденными. С использованием этой информации, модуль 107 синтезирования кадров может создавать данные кадра, которые являются аналогичными или идентичными данными кадра, которые появляются в предыдущих кадрах.
[0056] Дополнительно, модуль 107 синтезирования кадров может учитывать различные факторы, включающие в себя определение предыдущего перемещения между кадрами. Предыдущее перемещение между кадрами может представлять собой индикатор в отношении того, как данные должны продолжать изменяться в кадре, который синтезируется. Кроме того, модуль 107 синтезирования кадров может определять то, в каком направлении камера выполняется панорамирование, на основе одного или более предыдущих кадров и может синтезировать фрагменты кадра с использованием определенного направления панорамирования. Таким образом, если определяется то, что камера выполняет панорамирование слева направо, модуль 107 синтезирования кадров может определять то, что пикселы, которые ранее располагались в правой стороне кадра, должны прогрессивно перемещаться ближе к левой стороне кадра. Другие факторы, включающие в себя векторы движения, могут использоваться для того, чтобы определять ошибочные перемещения (в противоположность прогрессивным панорамированиям слева направо или сверху вниз) или предоставлять другие индикаторы в отношении того, на что должен быть похожим текущий кадр (т.е. кадр, который должен быть синтезирован). С использованием этой информации, модуль 107 синтезирования кадров может аппроксимировать или иным образом синтезировать пропущенные данные кадра для фрагмента кадра, который затем комбинируется с ранее декодированными фрагментами кадра для того, чтобы формировать полный кадр 111.
[0057] Фиг. 4 иллюстрирует блок-схему последовательности операций альтернативного способа (способ 400) для декодирования неполных видеоданных. Способ 400 далее описывается со ссылкой на компоненты и данные окружения 100.
[0058] Способ 400 включает в себя этап осуществления доступа, по меньшей мере, к одному фрагменту кадра, причем кадр включает в себя один или более фрагментов кадра, при этом каждый фрагмент кадра является отдельно декодируемым (этап 410). Модуль 105 декодирования может осуществлять доступ к одному или более принимаемым фрагментам кадра 110 и декодировать эти фрагменты кадра при ожидании приема, по меньшей мере, одного дополнительного фрагмента кадра (этап 420). Модуль 106 мониторинга состояния может определять то, что, по меньшей мере, один дополнительный фрагмент кадра еще должен быть принят, что обуславливает то, что кадр является неполным (этап 430). Затем в ответ на определение, модуль синтезирования кадров синтезирует фрагменты кадра с использованием данных кадра, ассоциированных, по меньшей мере, с одним предыдущим кадром (этап 440). Кадры и фрагменты кадра могут отслеживаться отдельно, как, в общем, показано на фиг. 7. Посредством отслеживания пакетов данных фрагментов кадра через несколько кадров, компьютерная система 10 может определять то, когда пакеты данных принимаются для последующего кадра. Когда пакет данных принимается для последующего кадра, он может представлять собой индикатор или состояние, которое инструктирует инициирование синтезу кадров.
[0059] В некоторых вариантах осуществления, отслеживание фрагментов кадра и/или отслеживание кадров может реализовываться с использованием протокольного порядкового номера, с использованием инкрементно увеличивающейся временной метки или с использованием некоторого другого типа идентификатора. Протокольный порядковый номер или инкрементно увеличивающаяся временная метка могут назначаться каждому кадру и/или каждому фрагменту кадра. Это обеспечивает возможность отдельного отслеживания кадра или фрагмента кадра и, следовательно, предупреждения компьютерной системы 101, когда данные кадра для нового фрагмента кадра или кадра приняты. Например, кадры и/или фрагменты кадра могут приниматься как часть потоковой видеоигры. Потоковые видеоигры типично проводятся на высокой частоте кадров для того, чтобы обеспечивать то, что пользователь не подвергается запаздыванию. В таких сценариях, компьютерная система 101 может использовать протокольный порядковый номер или инкрементно увеличивающуюся временную метку для того, чтобы быстро определять то, является либо нет кадр или фрагмент кадра неполным, и то, должны или нет части этого кадра быть синтезированы. Если он является неполным (например, информация временных меток, используемая для того, чтобы ассоциировать пакеты данных фрагментов кадра с фрагментами кадра и/или кадрами, указывает то, что новый кадр принимается), модуль синтезирования кадров может сразу синтезировать пропущенные или поврежденные данные кадра. Таким образом, кадр может быстро заполняться и отправляться на дисплей 108 для отображения игроку.
[0060] Соответственно, предусмотрены способы, системы и компьютерные программные продукты, которые декодируют неполные видеоданные. Фрагменты кадра могут декодироваться при ожидании других фрагментов кадра. Кроме того, если определяется то, что какая-либо часть данных кадра является пропущенной или поврежденной, эта часть кадра может быть синтезирована, чтобы аппроксимировать то, как должны выглядеть пропущенные или поврежденные данные.
[0061] Принципы и признаки, описанные в данном документе, могут быть осуществлены в других конкретных формах без отступления от своей сущности или дескриптивных характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях только как иллюстративные, а не ограничивающие. Следовательно, объем изобретения определяется прилагаемой формулой изобретения, а не вышеприведенным описанием. Все изменения, которые подпадают под смысл и рамки равнозначности формулы изобретения, должны охватываться ее объемом.

Claims (57)

1. Машинореализуемый способ декодирования неполных видеоданных, осуществляемый в вычислительной системе, включающей в себя по меньшей мере один процессор и память, причем способ содержит этапы, на которых:
осуществляют доступ к по меньшей мере одной первой части первого кадра, содержащегося в видеоданных, причем первый кадр включает в себя множество частей кадра, каждая из которых является отдельно декодируемой;
декодируют эту по меньшей мере одну первую часть первого кадра, к которой осуществляется доступ, перед приемом по меньшей мере одной второй части первого кадра;
определяют, что первый кадр является неполным, посредством определения того, что вторая часть первого кадра не принята;
в ответ на определение того, что первый кадр является неполным, синтезируют по меньшей мере одну заменяющую часть для первого кадра, используя по меньшей мере часть данных кадра, относящихся к по меньшей мере одному предыдущему кадру;
отображают поврежденный вариант первого кадра, причем поврежденный вариант первого кадра включает в себя упомянутую по меньшей мере одну первую часть и упомянутую заменяющую часть;
отправляют во вторую вычислительную систему уведомление инициировать обновление первого кадра для приема второго кадра;
принимают второй кадр из второй вычислительной системы и
используют второй кадр вместо поврежденного варианта первого кадра в одном или более последующих кадрах, которые используют первый кадр в качестве опорного кадра.
2. Машинореализуемый способ декодирования неполных видеоданных, осуществляемый в вычислительной системе, включающей в себя по меньшей мере один процессор и память, причем способ содержит этапы, на которых:
принимают по меньшей мере одну первую часть первого кадра, причем первый кадр включает в себя множество частей кадра, при этом каждая часть кадра первого кадра отдельно закодирована, с тем чтобы быть отдельно декодируемой;
декодируют эту по меньшей мере одну первую часть до приема по меньшей мере одной второй части первого кадра;
на основе, по меньшей мере, возникновения по меньшей мере одного состояния до приема упомянутой по меньшей мере одной второй части, каковое по меньшей мере одно состояние связано с данной по меньшей мере одной второй частью, синтезируют по меньшей мере одну заменяющую часть первого кадра для этой по меньшей мере одной второй части;
отображают поврежденный вариант первого кадра, причем поврежденный вариант первого кадра включает в себя упомянутую по меньшей мере одну первую часть и упомянутую заменяющую часть;
отправляют во вторую вычислительную систему уведомление инициировать обновление первого кадра для приема второго кадра;
принимают второй кадр из второй вычислительной системы и
используют второй кадр вместо поврежденного варианта первого кадра в одном или более последующих кадрах, которые используют первый кадр в качестве опорного кадра.
3. Способ по п. 2, в котором упомянутое по меньшей мере одно состояние содержит определение того, что упомянутая по меньшей мере одна вторая часть потеряна или задержана.
4. Способ по п. 2, дополнительно содержащий этап, на котором комбинируют декодированную по меньшей мере одну первую часть первого кадра и синтезированную заменяющую часть для формирования кадра.
5. Способ по п. 2, дополнительно содержащий этапы, на которых:
определяют, что принятая часть первого кадра включает в себя данные прямой коррекции ошибок; и
реализуют данные прямой коррекции ошибок, чтобы сформировать кадр.
6. Способ по п. 2, дополнительно содержащий этап, на котором ожидают информацию прямой коррекции ошибок для первого кадра, в то же время продолжая декодировать части кадра, которые являются полными.
7. Способ по п. 6, дополнительно содержащий этапы, на которых:
принимают информацию прямой коррекции ошибок для первого кадра и
декодируют часть кадра, которой соответствует эта информация прямой коррекции ошибок.
8. Способ по п. 2, в котором упомянутое по меньшей мере одно состояние содержит определение того, что было принято заданное минимальное пороговое количество частей кадра, чем указывается, что должно быть выполнено синтезирование упомянутой по меньшей мере одной заменяющей части первого кадра.
9. Способ по п. 2, в котором синтезирование по меньшей мере одной заменяющей части первого кадра для упомянутой по меньшей мере одной второй части содержит синтезирование одной или более частей кадра с использованием по меньшей мере части данных кадра, относящихся к по меньшей мере одному предыдущему кадру.
10. Способ по п. 2, дополнительно содержащий этап, на котором определяют, что первый кадр является опорным кадром, при этом упомянутая отправка во вторую вычислительную систему уведомления инициировать обновление первого кадра для приема второго кадра выполняется в результате определения того, что первый кадр является опорным кадром.
11. Компьютерная система, выполненная с возможностью декодирования неполных видеоданных, при этом компьютерная система содержит:
один или более процессоров;
системную память и
один или более машиночитаемых носителей, на которых хранятся машиноисполняемые инструкции, которые при их исполнении одним или более процессорами предписывают компьютерной системе:
в ответ на прием по меньшей мере одной первой части первого кадра декодировать принятую по меньшей мере одну первую часть первого кадра до приема по меньшей мере одной второй части первого кадра;
обнаруживать возникновение по меньшей мере одного состояния до приема упомянутой по меньшей мере одной второй части, каковое по меньшей мере одно состояние связано с данной по меньшей мере одной второй частью;
в ответ на данное обнаружение синтезировать по меньшей мере одну заменяющую часть первого кадра для этой по меньшей мере одной второй части;
отображать поврежденный вариант первого кадра, причем поврежденный вариант первого кадра включает в себя упомянутую по меньшей мере одну первую часть и упомянутую заменяющую часть;
отправлять во вторую вычислительную систему уведомление инициировать обновление первого кадра для приема второго кадра;
принимать второй кадр из второй вычислительной системы и
использовать второй кадр вместо поврежденного варианта первого кадра в одном или более последующих кадрах, которые используют первый кадр в качестве опорного кадра.
12. Компьютерная система по п. 11, в которой упомянутое синтезирование по меньшей мере одной заменяющей части первого кадра для по меньшей мере одной второй части содержит использование по меньшей мере части информации, указывающей предыдущее перемещение между кадрами.
13. Компьютерная система по п. 11, в которой упомянутое синтезирование по меньшей мере одной заменяющей части первого кадра для по меньшей мере одной второй части содержит определение того, в каком направлении камерой выполняется панорамирование, на основе одного или более предыдущих кадров и синтезирование одной или боле частей кадра с использованием этого определенного направления панорамирования.
14. Компьютерная система по п. 11, в которой упомянутое синтезирование по меньшей мере одной заменяющей части первого кадра для по меньшей мере одной второй части содержит использование данных кадра, указывающих векторы движения.
15. Компьютерная система по п. 11, в которой упомянутое обнаружение возникновения по меньшей одного состояния содержит прием по меньшей мере одной части последующего кадра.
16. Компьютерная система по п. 15, в которой машиноисполняемые инструкции дополнительно предписывают компьютерной системе отслеживать пакеты данных частей кадров по множеству кадров для определения того, когда пакеты данных принимаются для последующего кадра.
17. Компьютерная система по п. 15, в которой информация временной метки используется для связывания пакетов данных частей кадров с частями кадров и с кадрами.
18. Машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении одним или более процессорами вычислительной системы предписывают вычислительной системе выполнять способ декодирования неполных видеоданных, содержащий этапы, на которых:
осуществляют доступ к по меньшей мере одному фрагменту первого кадра, причем первый кадр включает в себя один или более фрагментов кадра, при этом каждый из фрагментов кадра является отдельно декодируемым;
декодируют этот по меньшей мере один фрагмент кадра, к которому осуществляется доступ, ожидая приема по меньшей мере одного дополнительного фрагмента кадра;
определив, что этот по меньшей мере один дополнительный фрагмент еще не принят, трактуют первый кадр как являющийся неполным;
в ответ на данное определение синтезируют один или более фрагментов кадра с использованием по меньшей мере части данных кадра, относящихся к по меньшей мере одному предыдущему кадру;
отображают поврежденный вариант первого кадра, причем поврежденный вариант первого кадра включает в себя упомянутый по меньшей мере один фрагмент кадра и синтезированные один или более фрагментов кадра;
отправляют во вторую вычислительную систему уведомление инициировать обновление кадра для приема второго кадра;
принимают второй кадр из второй вычислительной системы; и
используют второй кадр вместо поврежденного варианта первого кадра в одном или более последующих кадрах, которые используют первый кадр в качестве опорного кадра.
19. Машиночитаемый носитель по п. 18, при этом кадры и части кадров отслеживаются по отдельности с использованием по меньшей мере одного из порядкового номера, основывающегося на протоколе, и инкрементно увеливичающейся временной метки.
20. Машиночитаемый носитель по п. 18, при этом кадры принимаются как часть потока видеоигры.
RU2016138439A 2014-03-31 2015-03-26 Декодирование и синтезирование кадров для неполных видеоданных RU2689187C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/231,228 US9369724B2 (en) 2014-03-31 2014-03-31 Decoding and synthesizing frames for incomplete video data
US14/231,228 2014-03-31
PCT/US2015/022599 WO2015153237A1 (en) 2014-03-31 2015-03-26 Decoding and synthesizing frames for incomplete video data

Publications (3)

Publication Number Publication Date
RU2016138439A RU2016138439A (ru) 2018-04-02
RU2016138439A3 RU2016138439A3 (ru) 2018-10-25
RU2689187C2 true RU2689187C2 (ru) 2019-05-24

Family

ID=52875276

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016138439A RU2689187C2 (ru) 2014-03-31 2015-03-26 Декодирование и синтезирование кадров для неполных видеоданных

Country Status (10)

Country Link
US (2) US9369724B2 (ru)
EP (1) EP3127331A1 (ru)
JP (1) JP6637900B2 (ru)
KR (1) KR20160140819A (ru)
CN (1) CN106134193A (ru)
AU (1) AU2015241276C1 (ru)
CA (1) CA2939827A1 (ru)
MX (1) MX2016012630A (ru)
RU (1) RU2689187C2 (ru)
WO (1) WO2015153237A1 (ru)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2515362B (en) * 2013-12-16 2015-12-09 Imagination Tech Ltd Decoding frames
US9369724B2 (en) * 2014-03-31 2016-06-14 Microsoft Technology Licensing, Llc Decoding and synthesizing frames for incomplete video data
US10158889B2 (en) * 2015-01-31 2018-12-18 Intel Corporation Replaying old packets for concealing video decoding errors and video decoding latency adjustment based on wireless link conditions
JP6494386B2 (ja) * 2015-04-10 2019-04-03 キヤノン株式会社 撮像装置およびその制御方法
CN109473073B (zh) * 2018-12-03 2020-11-24 南京中电熊猫液晶显示科技有限公司 一种显示装置及其驱动方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010049585A1 (en) * 2008-10-30 2010-05-06 Nokia Corporation Method and apparatus for interleaving a data block
US20120008681A1 (en) * 2010-07-06 2012-01-12 Google Inc. Loss-robust video transmission using two decoders
US20120170658A1 (en) * 2010-12-30 2012-07-05 Ian Anderson Concealment Of Data Loss For Video Decoding
RU2011142754A (ru) * 2009-03-23 2013-04-27 Онлайв, Инк. Система и способ использования прямой коррекции ошибок со сжатием видео

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07322248A (ja) * 1994-05-30 1995-12-08 Matsushita Electric Ind Co Ltd 動画像データの伝送方法および伝送装置
JP2611667B2 (ja) * 1994-07-27 1997-05-21 日本電気株式会社 異種フレーム形式混在通信システム
US5768533A (en) * 1995-09-01 1998-06-16 National Semiconductor Corporation Video coding using segmented frames and retransmission to overcome channel errors
US5724369A (en) * 1995-10-26 1998-03-03 Motorola Inc. Method and device for concealment and containment of errors in a macroblock-based video codec
JP3478003B2 (ja) * 1996-06-19 2003-12-10 三菱電機株式会社 復号装置
JPH10145237A (ja) * 1996-11-11 1998-05-29 Toshiba Corp 圧縮データ復号装置
US6104757A (en) * 1998-05-15 2000-08-15 North Carolina State University System and method of error control for interactive low-bit rate video transmission
US6289054B1 (en) * 1998-05-15 2001-09-11 North Carolina University Method and systems for dynamic hybrid packet loss recovery for video transmission over lossy packet-based network
US6557001B1 (en) * 1998-11-23 2003-04-29 Moonlight Cordless Ltd. Method for enhancing video compression through automatic data analysis and profile selection
US7423983B1 (en) 1999-09-20 2008-09-09 Broadcom Corporation Voice and data exchange over a packet based network
US6574273B1 (en) * 2000-01-12 2003-06-03 Sony Corporation Method and apparatus for decoding MPEG video signals with continuous data transfer
US20020041339A1 (en) * 2000-10-10 2002-04-11 Klaus Diepold Graphical representation of motion in still video images
JP2002290381A (ja) * 2001-01-19 2002-10-04 Mitsubishi Electric Corp 光伝送システム、これに用いる端局装置およびノード装置
JP2005175787A (ja) * 2003-12-10 2005-06-30 Nec Corp データ配信装置、データ配信システムおよびデータ配信方法
EP2214412A3 (en) * 2004-05-13 2012-11-14 Qualcomm Incorporated Delivery of information over a communication channel
US7359409B2 (en) 2005-02-02 2008-04-15 Texas Instruments Incorporated Packet loss concealment for voice over packet networks
JP5224731B2 (ja) * 2007-06-18 2013-07-03 キヤノン株式会社 映像受信装置及び映像受信装置の制御方法
JP2009065259A (ja) * 2007-09-04 2009-03-26 Sanyo Electric Co Ltd 受信装置
US8660175B2 (en) * 2007-12-10 2014-02-25 Qualcomm Incorporated Selective display of interpolated or extrapolated video units
US8265171B2 (en) 2008-02-26 2012-09-11 Richwave Technology Corp. Error resilient video transmission using instantaneous receiver feedback and channel quality adaptive packet retransmission
KR20110106465A (ko) 2009-01-28 2011-09-28 노키아 코포레이션 비디오 코딩 및 디코딩을 위한 방법 및 장치
KR20130111072A (ko) * 2012-03-30 2013-10-10 삼성전자주식회사 디스플레이 시스템 및 그것의 디스플레이 장치
US9407923B2 (en) * 2013-05-20 2016-08-02 Gamefly Israel Ltd. Overconing lost IP packets in streaming video in IP networks
US20150117536A1 (en) * 2013-10-30 2015-04-30 Nvidia Corporation Video decoder techniques
US9369724B2 (en) * 2014-03-31 2016-06-14 Microsoft Technology Licensing, Llc Decoding and synthesizing frames for incomplete video data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010049585A1 (en) * 2008-10-30 2010-05-06 Nokia Corporation Method and apparatus for interleaving a data block
RU2011142754A (ru) * 2009-03-23 2013-04-27 Онлайв, Инк. Система и способ использования прямой коррекции ошибок со сжатием видео
US20120008681A1 (en) * 2010-07-06 2012-01-12 Google Inc. Loss-robust video transmission using two decoders
US20120170658A1 (en) * 2010-12-30 2012-07-05 Ian Anderson Concealment Of Data Loss For Video Decoding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Y. WANG et al. "Error Control and Concealment for Video Communication: A Review", опубл. 31.05.1998 на 24 страницах [найдено 23.10.2018], размещено в Интернет по адресу URL:https://ieeexplore.ieee.org/document/664283. *

Also Published As

Publication number Publication date
US20160275922A1 (en) 2016-09-22
US9369724B2 (en) 2016-06-14
RU2016138439A (ru) 2018-04-02
KR20160140819A (ko) 2016-12-07
AU2015241276A1 (en) 2016-09-08
JP2017516364A (ja) 2017-06-15
AU2015241276B2 (en) 2019-01-31
US20150281712A1 (en) 2015-10-01
RU2016138439A3 (ru) 2018-10-25
MX2016012630A (es) 2016-12-14
EP3127331A1 (en) 2017-02-08
CA2939827A1 (en) 2015-10-08
JP6637900B2 (ja) 2020-01-29
WO2015153237A1 (en) 2015-10-08
AU2015241276C1 (en) 2019-05-16
CN106134193A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
US10542065B2 (en) Method and apparatus for transmitting/receiving media contents in multimedia system
CA3088790C (en) Distribution and playback of media content
RU2689187C2 (ru) Декодирование и синтезирование кадров для неполных видеоданных
US9723099B2 (en) Screen sharing cache management
US11025952B2 (en) Video encoding/decoding method and device
KR102051012B1 (ko) 스케일러블하고 강인한 라이브 스트리밍 시스템
JP6663437B2 (ja) Mmtpストリームをmpeg−2 tsに変換する方法及び装置
JP2017518656A (ja) Mmtpデカプセル化バッファのシグナリング及び動作
US10652625B1 (en) Synchronization of multiple encoders for streaming content
KR20160114717A (ko) 비디오 데이터 인코딩 및 디코딩 방법 및 장치
CN113852824A (zh) 视频转码方法、装置、电子设备和存储介质
US11588868B2 (en) System and method of streaming content between peer devices in a broadcast environment
US20140294080A1 (en) Image processing device, image processing method, and computer program
KR20160142850A (ko) Mmt에서 미디어 데이터의 저 지연 소비 시그날링 및 동작 방법 및 장치
US11102269B1 (en) Media stream patching using dynamic frame prediction
JP2018536325A (ja) 画像群(gop)に基づいてビデオデータのストリームを符号化するための方法
US10652292B1 (en) Synchronization of multiple encoders for streaming content
US10812558B1 (en) Controller to synchronize encoding of streaming content
WO2021102992A1 (zh) 数据传输方法、装置、系统及存储介质
WO2023170679A1 (en) Synchronization of multiple content streams
JP2013026804A (ja) 映像伝送システム
JP2012114507A (ja) 受信装置、受信方法および受信プログラム