KR20160140819A - 미완성 비디오 데이터를 위한 프레임들의 디코딩 및 합성 - Google Patents
미완성 비디오 데이터를 위한 프레임들의 디코딩 및 합성 Download PDFInfo
- Publication number
- KR20160140819A KR20160140819A KR1020167030117A KR20167030117A KR20160140819A KR 20160140819 A KR20160140819 A KR 20160140819A KR 1020167030117 A KR1020167030117 A KR 1020167030117A KR 20167030117 A KR20167030117 A KR 20167030117A KR 20160140819 A KR20160140819 A KR 20160140819A
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- fragments
- data
- received
- computer
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/31—Communication aspects specific to video games, e.g. between several handheld game devices at close range
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods 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/895—Methods 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/127—Updating a frame memory using a transfer of data from a source area to a destination area
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
실시예들은 미완성 비디오 데이터를 디코딩하는 것에 관한 것이다. 하나의 시나리오에서, 컴퓨터 시스템은 프레임 조각(예컨대, 비디오 프레임)을 수신한다. 프레임은 다중 프레임 조각들을 포함하며, 각각의 프레임 조각은 개별적으로 디코딩가능해지도록 인코딩된다. 컴퓨터 시스템은 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 수신된 프레임 조각들을 디코딩한다. 그런 후, 프레임이 미완성이라는 것을 나타내는 조건이 발생하면, 컴퓨터 시스템은 아직 수신되지 않은 추가적인 프레임 조각을 대체시키기 위해 프레임 조각들을 합성한다.
Description
본 발명은 미완성 비디오 데이터를 위한 프레임들의 디코딩 및 합성에 관한 것이다.
비디오 데이터는 인터넷 및 다른 네트워크들을 통해 전세계의 모든 소비자들에게 일상적으로 전송된다. 비디오 데이터는 일반적으로 비디오 프레임 데이터 패킷 손실을 허용하거나 또는 이를 보상해주는 프로토콜들을 이용하여 보내진다. 예를 들어, H.264 포맷을 이용하여 인코딩된 비디오 프레임들은 다중의 상이한 조각들 또는 "슬라이스(slice)"들을 이용하여 전송될 수 있으며, 이들 각각은 다중 프레임 데이터 패킷들을 포함할 수 있다. 이러한 패킷들은 다양한 이유들로 전송 동안에 손실될 수 있거나 또는 지연될 수 있다. 주어진 프레임에 대한 프레임 데이터가 일정한 양의 시간 동안 수신되지 않은 채로 있으면, 이 프레임은 버려지고, 그 결과 비디오 소비자에 의해 주목가능할 수 있는 시각적 충실도(visual fidelity)의 손실을 초래시킨다.
본 명세서에서 설명된 실시예들은 미완성 비디오 데이터를 디코딩하는 것에 관한 것이다. 일 실시예에서, 컴퓨터 시스템은 프레임(예컨대, 비디오 프레임)의 조각을 수신한다. 프레임은 다중 프레임 조각들 또는 "슬라이스들"을 포함하며, 각각의 프레임 조각은 개별적으로 디코딩가능해지도록 인코딩된다. 컴퓨터 시스템은 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 수신된 프레임 조각들을 디코딩한다. 그런 후, 프레임이 미완성이라는 것을 나타내는 조건이 발생하면, 컴퓨터 시스템은 아직 수신되지 않은 추가적인 프레임 조각을 대체시키기 위해 프레임 조각들을 합성한다.
다른 실시예에서, 프레임의 조각들을 수신한 것에 응답하여, 컴퓨터 시스템은 다른 프레임 조각들이 수신되기를 기다리면서 수신된 프레임 조각들을 디코딩한다. 컴퓨터 시스템은 프레임이 미완성이라는 것을 나타내는 조건의 발생을 검출하며, 이 프레임은 여전히 수신되어야 할 적어도 하나의 추가적인 프레임 조각을 갖는다. 그런 후, 이러한 발생을 검출한 것에 응답하여, 컴퓨터 시스템은 향후 수신되어야 할 추가적인 프레임 조각들을 대체시키기 위해 프레임 조각들을 합성한다.
다른 실시예에서, 컴퓨터 시스템은 다중 프레임 조각들을 포함하는 프레임으로부터 프레임 조각에 액세스한다. 각각의 프레임 조각은 개별적으로 디코딩가능하다. 컴퓨터 시스템은 추가적인 프레임 조각이 수신되기를 기다리면서 액세스된 프레임 조각들을 디코딩한다. 그런 후, 컴퓨터 시스템은 적어도 하나의 추가적인 프레임 조각이 향후 수신되어야 한다라고 결정하고, 이러한 결정에 응답하여, 이전 프레임들과 연관된 프레임 데이터를 이용하여 프레임 조각들을 합성한다.
본 요약은 아래의 상세한 설명에서 보다 상세하게 설명되는 개념들의 선택을 단순한 형태로 소개하기 위해 제공된 것이다. 본 요약은 청구된 발명내용의 중요한 특징들 또는 필수적인 특징들을 식별시키려는 의도는 없으며, 또한 청구된 발명내용의 범위를 결정하는데 도움을 주려고 의도된 것도 아니다.
추가적인 특징들 및 장점들이 아래의 상세한 설명에서 진술될 것이며, 그 일부분은 상세한 설명으로부터 본 발명분야의 당업자에게 자명할 것이거나 또는 본 명세서의 교시내용의 실시에 의해 학습될 수 있다. 본 명세서에서 설명된 실시예들의 특징들 및 장점들은 첨부된 청구항들에서 특별히 지목한 수단들과 조합들을 통해 실현되고 획득될 수 있다. 본 명세서에서 설명된 실시예들의 특징들은 아래의 상세한 설명 및 첨부된 청구항들로부터 보다 완전히 명백해질 것이다.
본 명세서에서 설명된 실시예들의 상기 특징 및 다른 특징들을 더욱 명확화하기 위해, 첨부된 도면들을 참조하여 보다 구체적인 설명이 주어질 것이다. 이러한 도면들은 본 명세서에서 설명된 실시예들의 예시들을 도시한 것일 뿐이며, 이에 따라 그 범위의 한정으로 고려되어서는 안된다는 것을 알 것이다. 본 실시예들을 첨부 도면들의 이용을 통해 추가적인 구체성 및 상세사항을 갖고 설명하고 기술할 것이다.
도 1은 미완성 비디오 데이터를 디코딩하는 것을 비롯하여 본 명세서에서 설명된 실시예들이 동작할 수 있는 컴퓨터 아키텍처를 나타낸다.
도 2는 미완성 비디오 데이터를 디코딩하기 위한 예시적인 방법의 흐름도를 나타낸다.
도 3은 미완성 비디오 데이터를 디코딩하기 위한 대안적인 예시적 방법의 흐름도를 나타낸다.
도 4는 미완성 비디오 데이터를 디코딩하기 위한 다른 대안적인 예시적 방법의 흐름도를 나타낸다.
도 5는 프레임 조각들이 순차적 방식으로 디코딩되는 실시예를 나타낸다.
도 6은 프레임 조각들이 디코딩되고 합성되는 실시예를 나타낸다.
도 7은 프레임 조각들이 H.264 채널에서 디코딩되는 실시예를 나타낸다.
도 1은 미완성 비디오 데이터를 디코딩하는 것을 비롯하여 본 명세서에서 설명된 실시예들이 동작할 수 있는 컴퓨터 아키텍처를 나타낸다.
도 2는 미완성 비디오 데이터를 디코딩하기 위한 예시적인 방법의 흐름도를 나타낸다.
도 3은 미완성 비디오 데이터를 디코딩하기 위한 대안적인 예시적 방법의 흐름도를 나타낸다.
도 4는 미완성 비디오 데이터를 디코딩하기 위한 다른 대안적인 예시적 방법의 흐름도를 나타낸다.
도 5는 프레임 조각들이 순차적 방식으로 디코딩되는 실시예를 나타낸다.
도 6은 프레임 조각들이 디코딩되고 합성되는 실시예를 나타낸다.
도 7은 프레임 조각들이 H.264 채널에서 디코딩되는 실시예를 나타낸다.
본 명세서에서 설명된 실시예들은 미완성 비디오 데이터를 디코딩하는 것에 관한 것이다. 일 실시예에서, 컴퓨터 시스템은 프레임(예컨대, 비디오 프레임)의 조각을 수신한다. 프레임은 다중 프레임 조각들을 포함하며, 각각의 프레임 조각은 개별적으로 디코딩가능해지도록 인코딩된다. 컴퓨터 시스템은 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 수신된 프레임 조각들을 디코딩한다. 그런 후, 프레임이 미완성이라는 것을 나타내는 조건이 발생하면, 컴퓨터 시스템은 아직 수신되지 않은 추가적인 프레임 조각을 대체시키기 위해 프레임 조각들을 합성한다.
다른 실시예에서, 프레임의 조각들을 수신한 것에 응답하여, 컴퓨터 시스템은 다른 프레임 조각들이 수신되기를 기다리면서 수신된 프레임 조각들을 디코딩한다. 컴퓨터 시스템은 프레임이 미완성이라는 것을 나타내는 조건의 발생을 검출하며, 이 프레임은 여전히 수신되어야 할 적어도 하나의 추가적인 프레임 조각을 갖는다. 그런 후, 이러한 발생을 검출한 것에 응답하여, 컴퓨터 시스템은 향후 수신되어야 할 추가적인 프레임 조각들을 대체시키기 위해 프레임 조각들을 합성한다.
다른 실시예에서, 컴퓨터 시스템은 다중 프레임 조각들을 포함하는 프레임으로부터의 프레임 조각에 액세스한다. 각각의 프레임 조각은 개별적으로 디코딩가능하다. 컴퓨터 시스템은 추가적인 프레임 조각이 수신되기를 기다리면서 액세스된 프레임 조각들을 디코딩한다. 그런 후, 컴퓨터 시스템은 적어도 하나의 추가적인 프레임 조각이 향후 수신되어야 한다라고 결정하고, 이러한 결정에 응답하여, 이전 프레임들과 연관된 프레임 데이터를 이용하여 프레임 조각들을 합성한다.
이제 아래의 논의에서는 수행될 수 있는 복수의 방법들 및 방법 동작들을 언급한다. 방법 동작들은 일정한 순서로 논의될 수 있거나 또는 흐름도에서 특정 순서로 발생하는 것으로서 예시될 수 있지만, 동작은 해당 동작이 수행되기 전에 다른 동작이 완료되는 것에 의존하기 때문에, 명시적으로 언급되거나 또는 요구되지 않는 한, 어떠한 특정 순서도 반드시 필요한 것은 아니다.
본 명세서에서 설명된 실시예들은 다양한 유형들의 컴퓨팅 시스템들을 구현할 수 있다. 이러한 컴퓨팅 시스템들은 이제 점차적으로 폭넓게 다양한 형태들을 취한다. 컴퓨팅 시스템들은, 예컨대, 핸드헬드 디바이스, 어플라이언스, 랩탑 컴퓨터, 데스크탑 컴퓨터, 메인프레임, 분산형 컴퓨팅 시스템, 또는 심지어 컴퓨팅 시스템으로서 통상적으로 간주되지 않은 디바이스들일 수 있다. 본 설명과 청구항들에서, "컴퓨팅 시스템"의 용어는 적어도 하나의 물리적 및 유형적 프로세서, 및 프로세서에 의해 실행될 수 있는 컴퓨터로 실행가능한 명령어들을 구비할 수 있는 물리적 및 유형적 메모리를 포함하는 임의의 디바이스 또는 시스템(또는 이들의 조합)을 포함하는 것으로서 광범위하게 정의된 것이다. 컴퓨팅 시스템은 네트워크 환경을 통해 분산될 수 있고 다중 구성 컴퓨팅 시스템들을 포함할 수 있다.
도 1에서 예시된 바와 같이, 컴퓨팅 시스템(101)은 일반적으로 적어도 하나의 프로세싱 유닛(102A)과 메모리(103A)를 포함한다. 메모리(103A)는 휘발성, 비휘발성, 또는 이 둘의 어떠한 조합일 수 있는 물리적 시스템 메모리일 수 있다. "메모리"의 용어는 또한 물리적 저장 매체와 같은 비휘발성 대량 저장장치를 가리키는 것으로서 여기서 이용될 수 있다. 컴퓨팅 시스템이 분산형이면, 프로세싱, 메모리 및/또는 저장 능력이 또한 분산될 수 있다.
본 명세서에서 설명된 바와 같이, "실행가능한 모듈" 또는 "실행가능한 컴포넌트"의 용어는 컴퓨팅 시스템 상에서 실행될 수 있는 소프트웨어 객체들, 라우팅들, 또는 방법들을 가리킬 수 있다. 본 명세서에서 설명된 상이한 컴포넌트들, 모듈들, 엔진들, 및 서비스들이 컴퓨팅 시스템 상에서 실행되는 객체들 또는 프로세스들로서(예컨대, 개별적인 쓰레드들로서) 구현될 수 있다.
아래의 설명에서, 실시예들은 하나 이상의 컴퓨팅 시스템들에 의해 수행되는 동작들을 참조하여 설명된다. 이러한 동작들이 소프트웨어로 구현되는 경우, 해당 동작을 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서들은 컴퓨터로 실행가능한 명령어들을 실행시킨 것에 응답하여 컴퓨팅 시스템의 동작을 지시내린다. 예를 들어, 이러한 컴퓨터로 실행가능한 명령어들은 컴퓨터 프로그램 제품을 형성하는 하나 이상의 컴퓨터로 판독가능한 매체 상에서 구체화될 수 있다. 이러한 동작의 예시는 데이터의 조작을 수반한다. 컴퓨터로 실행가능한 명령어들(및 조작된 데이터)는 컴퓨팅 시스템(101)의 메모리(103A) 내에 저장될 수 있다. 컴퓨팅 시스템(101)은 또한 컴퓨팅 시스템(101)이 유선 또는 무선 네트워크를 통해 다른 메시지 프로세서들과 통신하도록 해주는 통신 채널들을 포함할 수 있다.
본 명세서에서 설명된 실시예들은, 아래에서 보다 자세하게 설명되는 바와 같이, 예컨대, 하나 이상의 프로세서들 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터 시스템을 포함할 수 있거나 또는 활용할 수 있다. 시스템 메모리는 총체적 메모리(103A) 내에 포함될 수 있다. 시스템 메모리는 또한 "메인 메모리"로서 칭해질 수 있고, 메모리 버스를 통해 적어도 하나의 프로세싱 유닛(102A)에 의해 어드레싱가능한 메모리 위치들을 포함하며, 이 경우 어드레스 위치는 메모리 버스 그 자체 상에 어서팅(assert)된다. 시스템 메모리는 통상적으로 휘발성이였지만, 본 명세서에서 설명된 원리들은 또한 시스템 메모리가 부분적으로 비휘발성이거나, 또는 심지어 완전히 비휘발성인 환경들에 적용된다.
본 발명의 범위 내의 실시예들은 또한 컴퓨터로 실행가능한 명령어들 및/또는 데이터 구조들을 운송하거나 또는 저장하기 위한 물리적 및 다른 컴퓨터로 판독가능한 매체를 포함한다. 이러한 컴퓨터로 판독가능한 매체는 범용 또는 특수목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터로 실행가능한 명령어들 및/또는 데이터 구조들을 저장하는 컴퓨터로 판독가능한 매체는 컴퓨터 저장 매체이다. 컴퓨터로 실행가능한 명령어들 및/또는 데이터 구조들을 운송하는 컴퓨터로 판독가능한 매체는 전송 매체이다. 따라서, 비제한적인 예시로서, 본 발명의 실시예들은 적어도 두 개의 뚜렷하게 상이한 종류들의 컴퓨터로 판독가능한 매체, 컴퓨터 저장 매체, 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터로 실행가능한 명령어들 및/또는 데이터 구조들을 저장하는 물리적 하드웨어 저장 매체이다. 물리적 하드웨어 저장 매체는 RAM, ROM, EEPROM, 솔리드 스테이트 드라이브("SSD"), 플래시 메모리, 상변화 메모리("PCM"), 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 디바이스들과 같은 컴퓨터 하드웨어, 또는 본 발명의 개시된 기능을 이행하기 위해 범용 또는 특수목적 컴퓨터 시스템에 의해 액세스되고 실행될 수 있는 컴퓨터로 실행가능한 명령어들 또는 데이터 구조들의 형태로 프로그램 코드를 저장하기 위해 이용될 수 있는 임의의 다른 하드웨어 저장 디바이스(들)을 포함한다.
전송 매체는 프로그램 코드를 컴퓨터로 실행가능한 명령어들 또는 데이터 구조들의 형태로 운송하기 위해 이용될 수 있고, 범용 또는 특수목적 컴퓨터 시스템에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크들을 포함할 수 있다. "네트워크"는 컴퓨터 시스템들 및/또는 모듈들 및/또는 다른 전자 디바이스들 간의 전자 데이터의 전송을 가능하게 해주는 하나 이상의 데이터 링크들로서 정의된다. 정보가 (하드와이어드, 무선, 또는 하드와이어드 또는 무선의 조합으로) 네트워크 또는 다른 통신 연결을 통해 컴퓨터 시스템에 전송되거나 또는 제공되는 경우, 컴퓨터 시스템은 이러한 연결을 전송 매체로서 바라볼 수 있다. 상기의 조합들은 또한 컴퓨터로 판독가능한 매체의 범위 내에 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트들에 도달시, 컴퓨터로 실행가능한 명령어들 또는 데이터 구조들의 형태의 프로그램 코드는 전송 매체로부터 컴퓨터 저장 매체로 자동적으로 (또는 그 반대로) 전달될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터로 실행가능한 명령어들 또는 데이터 구조들은 네트워크 인터페이스 모듈(예컨대, "NIC") 내의 RAM 내에 버퍼링될 수 있고, 그 후, 종국에는 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에 있는 덜 휘발성인 컴퓨터 저장 매체에 전달된다. 따라서, 컴퓨터 저장 매체는 전송 매체를 또한(또는 심지어 1차적으로) 활용하는 컴퓨터 시스템 컴포넌트들 내에 포함될 수 있다.
컴퓨터로 실행가능한 명령어들은, 예를 들어, 하나 이상의 프로세서들에서 실행될 때, 범용 컴퓨터 시스템, 특수목적 컴퓨터 시스템, 또는 특수목적 프로세싱 디바이스로 하여금 일정한 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다. 컴퓨터로 실행가능한 명령어들은, 예를 들어, 어셈블리 언어, 또는 심지어 소스 코드와 같은 바이너리, 중간 포맷 명령어들일 수 있다.
본 업계의 당업자는 본 명세서에서 설명된 원리들이 개인 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화기, PDA, 태블릿, 페이저, 라우터, 스위치 등을 비롯한, 많은 유형들의 컴퓨터 시스템 구성들과 함께 네트워크 컴퓨팅 환경들에서 실시될 수 있다는 것을 알 것이다. 본 발명은 또한 네트워크를 통해 (하드와이어드 데이터 링크, 무선 데이터 링크, 또는 하드와이어드 및 무선 데이터 링크들의 조합에 의해) 링크된 로컬 및 원격 컴퓨터 시스템들 둘 다가 태스크들을 수행하는 분산형 시스템 환경들에서 실시될 수 있다. 이에 따라, 분산형 시스템 환경에서, 컴퓨터 시스템은 복수의 구성 컴퓨터 시스템을 포함할 수 있다. 분산형 시스템 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 디바이스들 둘 다에 위치할 수 있다.
본 발명분야의 당업자는 또한 본 발명이 클라우드 컴퓨팅 환경에서 실시될 수 있다는 것을 알 것이다. 클라우드 컴퓨팅 환경들은 분산형일 수 있지만, 이것은 반드시 필요한 것은 아니다. 클라우드 컴퓨팅 환경들은, 분산형인 경우, 조직 내에서 국제적으로 분산될 수 있고/있거나 다중의 조직들에 걸쳐 소유된 컴포넌트들을 가질 수 있다. 이 설명 및 아래의 청구항들에서, "클라우드 컴퓨팅"은 구성가능한 컴퓨팅 자원들(예컨대, 네트워크, 서버, 저장장치, 애플리케이션, 및 서비스)의 공유된 풀에 대한 주문형 네트워크 액세스를 가능하게 하기 위한 모델로서 정의된다. "클라우드 컴퓨팅"의 정의는 적절하게 배치될 때 이러한 모델로부터 획득될 수 있는 임의의 다른 수많은 장점들로 한정되지 않는다.
또한, 본 명세서에서 설명된 시스템 아키텍처들은 전체적으로 본 시스템의 기능에 각각 기여하는 복수의 독립적인 컴포넌트들을 포함할 수 있다. 이러한 모듈성은 플랫폼 확장성의 문제에 접근할 때 증가된 유연성을 가능하게 하고, 이를 위해 다양한 장점들을 제공한다. 시스템 복잡성 및 성장은 한정된 기능 범위를 갖는 더 작은 규모 부분들의 이용을 통해 보다 손쉽게 관리될 수 있다. 이러한 느슨하게 결합된 모듈들의 이용을 통해 플랫폼 장애 허용이 강화된다. 개별적인 컴포넌트들은 사업적 필요성이 정하는 바에 따라 점진적으로 성장될 수 있다. 모듈러 개발은 또한 새로운 기능을 위해 시장에 투자하는 시간을 감소시키는 것으로 달리 말할 수 있다. 핵심 시스템에 영향을 미치지 않고서 새로운 기능이 추가되거나 또는 삭제될 수 있다.
도 1은 적어도 하나의 실시예가 활용될 수 있는 컴퓨터 아키텍처(100)를 나타낸다. 컴퓨터 아키텍처(100)는 컴퓨터 시스템(101)을 포함한다. 컴퓨팅 시스템(101, 113)은 클라우드 컴퓨팅 시스템들을 비롯하여, 임의의 유형의 로컬 또는 분산형 컴퓨터 시스템들일 수 있다. 이들 각각은 적어도 하나의 프로세서(102A/102B), 메모리(103A/103B) 및 통신 모듈(104A/104B)을 포함한다. 통신 모듈은 유선 또는 무선 네트워크 카드, 블루투스 무선기, 와이파이 무선기 또는 디지털 데이터를 송신하고/송신하거나 수신하도록 구성된 다른 하드웨어를 비롯한 유선 또는 무선 통신 수단을 포함할 수 있다. 통신 모듈(104A)은 예컨대, 컴퓨터 시스템(113)의 통신 모듈(104B)로부터 프레임들(111) 또는 프레임 조각들(110)을 수신할 수 있다.
몇몇의 실시예들에서, 컴퓨터 시스템(113)은 서버일 수 있다. 서버는 단일 컴퓨터 시스템일 수 있거나, 또는 분산형일 수 있다. 서버는 컴퓨터 시스템(101)과 같은 클라이언트들에게 데이터를 제공하도록 구성될 수 있다. 서버는 입력 또는 다른 데이터 요청들에 응답하여 애플리케이션 데이터를 클라이언트들에 제공할 수 있다. 몇몇의 경우들에서, 컴퓨터 시스템(113)은 비디오 게임 서버일 수 있다. 이 경우들에서, 비디오 게임 서버는 프레임들에 비디오 게임 콘텐츠를 제공하도록 구성될 수 있다. 이러한 프레임들은 인코딩될 수 있거나, 또는 적어도 몇몇의 경우들에서는, 원시 형태로 있을 수 있다. 프레임들은 풀 프레임 형태(111)로 또는 조각들(110)로 보내질 수 있다. 조각들은 데이터 패킷들을 통해 보내질 수 있고, 각각의 조각은 하나 이상의 데이터 패킷들을 포함할 수 있다. 이에 따라, 프레임 조각들은 컴퓨터 시스템(101)에 전송되고, 그 후 결합되어 풀 프레임을 형성한다. 동영상 픽처를 형성하기 위한 인접한 일련의 프레임들을 형성하기 위해 이러한 프레임 조각들은 연속적인 스트리밍 방식으로 보내질 수 있다. 게임 시나리오에서, 이러한 프레임들의 스트림은 비디오 게임 출력을 형성할 것이다. 비디오 게임 실시예는, 본 명세서에서 자주 언급되지만, 비디오 콘텐츠가 하나의 컴퓨터 시스템으로부터 다른 컴퓨터 시스템으로 전송(즉, 스트리밍)되는 실시예의 일례에 불과하다는 것을 이해해야 한다. 실제로, 후술하는 바와 같이, 미완성 데이터의 디코딩은 비디오 데이터가 손실성 네트워크를 통해 보내지는 다양한 상이한 시나리오들에서 이행될 수 있다.
프레임들(111)과 프레임 조각들(110)을 보다 쉽게 전송하도록 하기 위해, 이들은 종종 전송 전에 몇가지 방식으로 인코딩된다. 몇몇의 실시예들에서, 프레임들은 H.264 포맷에 따라 인코딩될 수 있다. 다른 실시예들에서는, 다른 포맷들이 이용될 수 있다. 컴퓨터 시스템(113)의 인코딩 모듈(114)은 선택된 인코딩 포맷에 따라 풀 프레임들 및/또는 프레임 조각들(110)을 인코딩할 수 있다. 그런 후, 이러한 인코딩된 프레임들 또는 프레임 조각들은 컴퓨터 시스템(101)에 전송되고, 그 후 컴퓨터 시스템(101)에서는 이 프레임들 또는 프레임 조각들이 디코딩되고 디스플레이(108) 상에 디스플레이된다. 디코딩 모듈(105)은 수신된 프레임들(111) 및 프레임 조각들(110)을 디코딩하고, 이들을 사용자에 대한 디스플레이를 위해 디스플레이(108)에 보낸다. 몇몇의 실시예들에서, 디코딩 모듈(105)은, 프레임 조각들 중 일부가 분실되었을지라도, 프레임 조각들(110)을 디스플레이하도록 구성될 수 있다. 실제로, 데이터 패킷들이 손실된 네트워크 트랜잭션에서, 프레임 조각들 중 일부 또는 프레임 조각들의 일부분들은 전송 동안에 손실될 수 있거나 또는 지연될 수 있다. 이 경우들에서, 디코딩 모듈은 손실되거나 또는 지연된 조각들이 나타나기를 기다리면서 수신했던 프레임 조각들(110)을 계속해서 디코딩할 것이다. 손실되거나 또는 지연된 조각들이 조만간 나타나지 않으면, 프레임 합성 모듈(107)은 다양한 상이한 프레임 합성 기술들을 이용하여 프레임 조각을 합성할 수 있다.
예컨대, 프레임 합성 모듈(107)은 하나 이상의 이전 프레임들에 대한 프레임 데이터를 검색함으로써 손실되거나 또는 지연된 프레임 조각을 합성할 수 있다. 프레임 합성 모듈(107)은 분실된 프레임 조각이, 디스플레이를 위해 현재 디코딩되고 준비 중에 있는 해당 프레임의 최상위 좌측 모서리에 있는 것이라고 결정할 수 있다. 그런 후, 프레임 합성 모듈(107)은 해당 프레임의 부분이 어떻게 보여지는 것인지(예컨대, 블루 스카이였는지, 또는 도시 배경이였는지 등)를 알아내기 위해 하나 이상의 이전 프레임들의 최상위 좌측 모서리에 대한 프레임 데이터를 검색할 수 있다. 그런 후, 이 데이터에 기초하여, 프레임 합성 모듈(107)은 해당 프레임이 실질적으로 정확하게 보이도록 분실된 프레임 조각(들)을 합성할 수 있다. 하지만, 충실도에서는 몇가지 손실이 있을 가능성이 있을 것이다. 이 때 컴퓨터 시스템(101)은, 적어도 하나의 프레임 조각이 손실되었거나 또는 상당히 지연되었다는 것과, 풀 프레임(111)이 보내져야 할 것이라는 것을 나타내는 표시(112)를 컴퓨터 시스템(113)에 보낼 수 있다. 그런 후, 프레임 델타(frame delta)들을 보내는 것(즉, 변경된 프레임의 부분들만을 보내는 것) 대신에, 부정확한 픽셀들을 정정하기 위해 풀 프레임(111)이 보내질 것이거나 또는 몇몇의 다른 리프레쉬가 수행될 것이다. 분실된 프레임 조각들을 합성하기 위해 많은 상이한 방법들 및 기술들이 이용될 수 있다는 것을 유념해야 한다. 이러한 프레임 합성 방법들 및 다른 개념들은 도 2, 도 3, 및 도 4의 방법들(200, 300, 400)을 각각 참조하여 아래에서 심화적으로 설명될 것이다.
상술한 시스템 및 아키텍처를 고려하여, 개시된 발명내용을 따라 구현될 수 있는 방법들은 도 2, 도 3, 및 도 4의 흐름도들을 참조하여 더 잘 이해될 것이다. 설명의 단순화를 위해, 방법들은 일련의 블록들로서 도시되고 설명된다. 하지만, 일부 블록들은 여기에 설명되고 도시된 것과는 상이한 순서들로 발생하고/발생하거나 다른 블록들과 동시에 발생할 수 있으므로, 청구된 발명내용은 블록들의 순서에 의해 제한받지 않음을 이해하고 인식해야 한다. 또한, 모든 예시된 블록들이 이후 설명되는 방법들을 구현하기 위해 필요하지는 않을 수 있다.
도 2는 미완성 비디오 데이터를 디코딩하기 위한 방법(200)의 흐름도를 나타낸다. 이제 방법(200)을 환경(100)의 컴포넌트들 및 데이터를 빈번히 참조하여 설명할 것이다.
방법(200)은 적어도 하나의 프레임 조각을 수신하는 동작을 포함하고, 프레임은 복수의 프레임 조각들을 포함하며, 각각의 프레임 조각 그 자체는 개별적으로 디코딩가능해지도록 인코딩된다(동작 210). 예를 들어, 컴퓨터 시스템(101)의 통신 모듈(104A)은 컴퓨터 시스템(113)의 통신 모듈(104B)로부터 프레임 조각(110)을 수신할 수 있다. 프레임 조각(110)은 단독으로 보내질 수 있거나, 또는 다른 조각들과 결합되어 보내질 수 있다. 또한, 프레임 조각 그 자체는 단일 데이터 패킷으로 보내질 수 있거나, 또는 복수의 데이터 패킷들로 분열될 수 있다. 프레임 조각(110)은 풀 프레임(예컨대, 참조번호 111)의 한 조각이며, 이에 따라, 다른 대응하는 프레임 조각들과 결합될 때 풀 프레임을 형성한다. 프레임들은 실질적으로 임의의 개수의 프레임 조각들로 분할될 수 있다. 이러한 조각들은, 그 후, 전송되고, 풀 프레임을 형성하도록 재조립된다. 몇몇의 실시예들에서, 프레임 조각들은 컴퓨터 시스템(101)에 전송되기 전에, 인코딩 모듈(114)에 의해 인코딩될 수 있다. 프레임들은 임의의 다양한 상이한 인코딩 포맷들로 인코딩될 수 있다. 이러한 인코딩 포맷들은 비디오 퀄리티, 전송 효율성(즉, 대역폭), 신속한 디코딩에 대해 최적화될 수 있거나, 또는 몇몇의 다른 고려사항에 대해 최적화될 수 있다.
각각의 프레임 조각(110)은 프레임 조각이 개별적으로 디코딩되도록 해주는 방식으로 개별적으로 인코딩될 수 있다. 따라서, 컴퓨터 시스템(101)의 디코딩 모듈(105)은 프레임 조각을 수신하고, 어떠한 다른 프레임 조각들을 수신하지 않고서 이 프레임 조각을 디코딩할 수 있다. 그런 후, 또다른 프레임 조각을 수신한 후, 그리고 다른 프레임 조각들이 수신되기를 기다리는 동안, 디코딩 모듈(105)은 최근에 수신된 조각을 디코딩하기 시작할 수 있다. 실제로, 이것은 방법(200) 내에서 설명되는데, 이는 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 수신된 프레임 조각들 중 적어도 하나를 디코딩하는 동작을 포함한다(동작 220). 이 프로세스는 도 5에서 심화적으로 나타난다.
도 5는 도 1의 디코딩 모듈(105)과 동일하거나 또는 이와 상이할 수 있는 디코더(501)를 포함한다. 디코더(501)는 이전에 수신된 프레임 조각(503A)을 가질 수 있고, 이것을 디코딩하는 것을 이미 시작했을 수 있다. 이렇게 디코딩된 프레임 조각(503A)은 프레임(505)에 추가될 수 있거나, 또는 그렇지 않고 프레임(505)을 형성하는 것을 시작할 수 있다. 프레임(505)의 바닥 부분을 형성하는 것이 도시되지만, 디코딩된 프레임 조각(503A)은 해당 프레임의 실질적으로 임의의 부분으로부터의 프레임 데이터를 포함할 수 있거나, 해당 프레임 내 단일 블록으로부터의 프레임 데이터를 포함할 수 있거나, 또는 해당 프레임의 상이한 부분들로부터의 프레임 데이터를 포함할 수 있다는 것을 이해할 것이다. 하지만, 단순화를 목적으로, 도 5와 도 6에서의 프레임 조각들은 수평적으로 서로 위아래로 적층되는 것으로서 도시된다. 도 5에서는 유입되는 프레임 조각들(502B, 502C, 502D)이 운송 중에 있는 것으로서 도시되며, 디코더(501)에 의해 아직 수신되지 않는다. 하지만, 이러한 프레임 조각들이 수신되면, 디코더(501)는 이들을 개별적으로 디코딩하는 것을 시작할 수 있다. 따라서, 프레임 조각(502B)이 수신되기를 기다리면서 수신된 프레임 조각(503A)은 디코딩될 수 있다. 마찬가지로, 프레임 조각(502C)이 수신되기를 기다리면서 프레임 조각(503B)은 디코딩될 수 있고, 프레임 조각(502D)이 수신되기를 기다리면서 프레임 조각(503C)은 디코딩될 수 있는 식으로 프레임 조각들은 디코딩된다. 이 방식에서, 디코더(501)는 현재 디코딩 프로세스를 시작해야 하는 프레임 데이터를 이용할 수 있다.
프레임 조각들은 또한 순서를 벗어나 디코딩될 수 있다. 프레임 조각들은 일반적으로 손실성 네트워크들을 통해 전송되며, 각각의 패킷(예컨대, UDP)의 안전한 전송을 보장하지 못하는 프로토콜들을 이용하여 전송될 수 있다. 따라서, 프레임 조각들은 다양한 이유들로 손실되거나 또는 지연될 수 있다. 하나의 예시에서, 프레임 조각(502C)은 프레임 조각(502B)보다 먼저 수신될 수 있다. 이 경우, 디코더(501)는 프레임 조각(502B)을 수신하기 전에 프레임 조각(502C)을 디코딩하는 것을 시작할 수 있다. 그런 후, 프레임 조각(502B)을 수신하면, 이것은 디코딩될 것이고 프레임(505)에 추가될 것이다. 최종적으로, 프레임(505)의 모든 성분 조각들을 수신하면, 해당 프레임이 디스플레이(504)에서 디스플레이될 것이다. 디스플레이는 임의의 유형의 모니터, 텔레비젼, 태블릿, 또는 디스플레이 수단일 수 있다. 프레임(505)은 일련의 프레임들 내의 하나의 프레임일 수 있다. 예를 들어, 스트리밍 비디오 또는 비디오 게임 시나리오에서, 데이터 스트리밍 서버는 매초마다 이러한 많은 프레임들을 보낼 가능성이 높을 것이다. 그러면 이러한 프레임들은 디스플레이(504) 상에서 순차적으로 디스플레이되어 사용자에 의해 보여질 동영상 픽처를 형성할 것이다.
도 2로 되돌아가서, 프레임이 미완성이라는 것을 나타내는 적어도 하나의 조건의 발생시, 방법(200)은 향후 수신되어야 할 적어도 하나의 추가적인 프레임 조각을 대체시키기 위해 하나 이상의 프레임 조각들을 합성하는 동작을 포함한다(동작 230). 이 조건은, 예를 들어, 하나 이상의 프레임 조각들이 손실되었거나 또는 지연되었다라고 결정하는 것을 포함할 수 있다. 조건 모니터링 모듈(106)은 유입하는 프레임 조각들을 모니터링하도록 구성될 수 있고, 프레임 조각이 손실되었거나 또는 상당히 지연되었다라고 결정할 수 있다. 이러한 결정시, 프레임 합성 모듈(107)은 분실된 프레임 조각을 합성하고, 합성된 데이터를 해당 프레임 내로 삽입하여 해당 프레임을 완성시킬 수 있다.
도 6에서 예시된 바와 같이, 디코딩된 프레임 조각들은 프레임을 형성하도록, 합성된 프레임 조각들과 결합될 수 있다. 디코더(601)는 도 5와 관련하여 상술한 바와 같이 프레임 조각들을 수신한다. 도시된 바와 같이, 프레임(607)은 이미 디코딩된 프레임 조각(605A)을 포함한다. 프레임 조각들(602B, 602C, 602D, 602E 등등)을 기다리면서 프레임 조각(605A)은 디코딩되었을 수 있다. 도 1의 조건 모니터링 모듈(106)은 프레임 조각(604B)이 손실되었거나 또는 지연되었다라고 결정할 수 있고, 프레임 조각(604B)을 합성하도록 프레임 합성 모듈(107)(또는 합성기(603))을 개시시킬 수 있다. 합성된 데이터는 다양한 방식들로 획득될 수 있는데, 이것은 도 3과 관련하여 아래에서 자세하게 설명될 것이다. 합성된 프레임 조각(604B)은 실제 프레임 조각이 있었을 부분(들)에 있도록 프레임(607) 내로 삽입될 수 있다. 디코더(601)는 합성기가 다른 프레임 조각들을 합성하는 동안에 프레임 조각들을 계속해서 디코딩할 수 있다. 이에 따라, 프레임 조각(602C)이 수신되고 디코딩될 수 있으며, 디코딩된 프레임 조각(605C)을 초래시킬 수 있다. 합성기가 분실되거나 지연된 프레임 조각을 위한 데이터를 합성하고 있는 동안에 참조번호(602D, 602E)와 같은 다른 프레임 조각들이 또한 수신되고 디코딩될 수 있다.
도 1로 되돌아가서, 조건 모니터링 모듈(106)은 프레임(111)이 미완성이라는 것을 나타내는 조건이 발생하였다고 결정할 수 있다. 이러한 조건은 프레임 조각 합성이 일어날 것이라는 것을 나타내는, 지정된 최소 문턱 개수의 프레임 조각들이 수신되었다는 표시를 포함할 수 있다. 따라서, 예를 들어, 최소 개수의 프레임 조각들이 프레임마다 또는 일련의 프레임들마다 구축될 수 있다. 최소 개수의 프레임 조각들이 도달하면, 해당 프레임은 합성을 통해 정정가능한 것으로 간주될 수 있다. 이로써, 프레임은, 나머지 프레임 조각들의 재생성(즉, 합성)이 허용가능하기에 충분한 수신된 데이터를 포함한다. 프레임 조각들의 이러한 최소 개수는 조정자에 의해, 프로그래머에 의해, 또는 다른 사용자에 의해 설정될 수 있다.
최소 개수의 프레임 조각들이 수신되지 않은 경우들에서, 또는 합성이 가능하지 않거나 또는 요망되지 않은 경우들(예컨대, 너무 많은 인공물들이 초래될 경우들)에서, 컴퓨터 시스템(101)은 해당 프레임 대체 데이터가 보내져야 할 것을 나타내는 표시(112)를 생성할 수 있다. 적어도 몇몇의 실시예들에서, 프레임 대체 데이터는 풀 프레임(예컨대, 참조번호 111)이다. 표시(112)는 컴퓨팅 시스템(113)에 보내지고, 컴퓨팅 시스템(113)은 풀 프레임(111)을 보내는 것에 의해 응답한다. 이 수신된 프레임 데이터는 (프레임 조각들이 보내졌던 경우) 기존 프레임 내로 병합될 수 있거나, 또는 풀 프레임으로서 병합될 수 있다.
따라서, 도 2의 방법(200)에서 설명된 바와 같이, 로우 레벨 패킷 손실이 검출될 때 무엇을 할지를 결정하고, 이러한 상황들에서, 데이터가 분실되었을 때 디코딩 레이턴시 및 시각적 손상을 최소화하기 위해 비디오 프레임 정보가 이용될 수 있다. 실시예들은 네트워크를 통해 유입되는 로우 레벨 데이터 패킷들을 프로세싱하고, 프레임 및 프레임 조각에 의해 데이터 패킷들을 추적 및 그룹화하며, 다른 프레임 데이터 패킷들이 도달하기를 기다리면서 그룹화된 프레임 조각들을 디코딩 모듈(105)에 제공한다. 프레임 조각으로부터의 데이터 패킷들이 에러 정정을 통해서도 복구될 수 없는 경우, 리프레쉬가 수행될 수 있을 때 까지(즉, 풀 프레임(111)이 보내질 때 까지) 시각적 손상을 최소화하는 합성된 데이터에 의해 부분적 프레임 조각들이 완성되거나 또는 이 데이터로 대체된다. 이것은 비디오 디코더들에게 유효한 데이터를 공급함으로써 견고한 에러 은폐를 갖지 않는 비디오 디코더들의 이용을 추가로 가능하게 해준다.
실제로, 몇몇의 실시예들에서, 컴퓨터 시스템(101)은 수신된 프레임 조각들(110) 중 적어도 하나가 순방향 에러 정정(forward error correction) 데이터를 포함한다고 결정할 수 있다. 그런 후, 이러한 순방향 에러 정정(forward error correction; FEC) 데이터는 해당 프레임 조각 내 에러들을 수정하고 궁극적으로 해당 프레임 조각을 이용하여 프레임을 형성하도록 구현될 수 있다. 이 경우들에서, 프레임 조각은 순방향 에러 정정이 개시되기 전에 디코딩될 수 있다. 다른 실시예들에서, 컴퓨터 시스템(101)은, 완성된 이러한 프레임 조각들을 디코딩하는 것을 계속하면서, 미수신된 프레임 조각을 가졌던 프레임에 대한 FEC 정보를 기다리도록 구성될 수 있다. 따라서, 디코딩 모듈(105)은, (예컨대, 손실되거나 또는 손상된 데이터 패킷들로 인해) 미완성되거나 또는 손상된 데이터를 갖는 이러한 프레임 조각들에 대한 FEC 데이터를 기다리면서도, 프레임 조각들을 계속해서 디코딩할 수 있다. 그런 후, FEC 정보에 대응하는 프레임 조각에 대한 FEC 데이터가 수신되면, 디코딩 모듈(105)은 FEC 정정된 프레임 조각을 디코딩하고, 해당 프레임 조각을 다른 프레임 조각들과 결합하여 디코딩된 프레임(109)을 형성할 수 있다. 이 프레임은 그 후 디스플레이(108) 상에서 디스플레이될 수 있다.
도 7은 H.264 포맷을 구현시키는 실시예를 나타낸다. 이 포맷이 이용되지만, 다른 포맷들이 또한 유사한 기술들과 함께 이용될 수 있다는 것이 이해될 것이다. 프레임 데이터 패킷들은 다중 프레임들에 걸쳐 추적될 수 있다. 이것은, 예컨대, 이전 프레임이 완성되었어야 했으며, 어떠한 분실된 패킷들도 도착하지 않을 것 같고 폐기된 패킷들로 간주될 것이라는 것을 컴퓨터 시스템(101)에게 나타내는 추적 정보를 초래시킨다. 도 7의 H.264 채널(702)은 프레임과 연관된 데이터 패킷들과 함께 현재 프로세싱되고 있는 알려진 프레임들을 추적하기 위해 프레임 트랙커(tracker) 객체들(703A, 703B, 703C)을 이용한다. 이러한 데이터 패킷들은 비디오 출력 채널(701) 또는 다른 스트리밍 소스들(예컨대, 실시간 전송 프로토콜(real-time transport protocol; RTP) 소스들)로부터 수신된다. 각각의 프레임에 대한 프로세싱 중인 슬라이스들 각각을 추적하기 위해 프레임 조각들(또는 본 명세서에서 설명된 "슬라이스들")은 슬라이스 트랙커 객체들(704A, 704B, 704C)에 의해 추적될 수 있다. 이것은 컴퓨터 시스템(101)으로 하여금 언제 새로운 프레임이 시작되고, 이전 프레임이 얼마나 완성되어 있으며, 어느 슬라이스들이 완성되거나 또는 분실되었는지, 언제 프레임이 순방향 에러 정정을 필요하는지 등을 알도록 해준다.
H.264 채널(702)은 어떠한 사전프로세싱없이 비디오 출력 채널(701)로부터 원시 RTP 데이터 패킷들(또는 다른 프로토콜의 데이터 패킷들)을 수신할 수 있다. 타임스탬프에 기초하여, 프레임 데이터 패킷들은 이용가능한 경우 기존의 프레임 트랙커 객체(예컨대, 참조번호 703A) 또는 새롭게 생성된 객체(예컨대, 참조번호 703C)에 공급된다. 프레임 데이터 패킷의 페이로드는 프레임 트랙커에 의해 수신될 때 분석되며, 프레임 데이터 패킷이 슬라이스 네트워크 추상화층 유닛(network abstraction layer unit; NALU)의 시작을 포함하면, 새로운 슬라이스 트랙커(예컨대, 참조번호 704C)가 생성되어 리스트에 추가된다. 프레임 데이터 패킷(예컨대, RTP 패킷(708))이 기존 슬라이스에 대한 시퀀스에서 다음번째에 있는 경우, 이것은 대응하는 슬라이스 트랙커에 제공된다. 그렇지 않은 경우, 프레임 데이터 패킷은 순위 밖(out-of-order; OOO) 패킷 리스트(예컨대, 참조번호 706) 내에서 홀딩되거나, 또는 중복된 경우에는 무시된다. 패킷이 순방향 에러 정정(FEC) 데이터(예컨대, 참조번호 707)를 포함한 경우, (단하나의 패킷이 분실된 몇몇의 경우들에서) 폐기된 패킷을 재생성하기 위해 즉시 이용되거나, 또는 더 많은 패킷들이 도착할 때의 나중의 이용을 위해 프레임 트랙커에 의해 홀딩된다.
적어도 몇몇의 실시예들에서, 프레임 데이터 패킷이 슬라이스 트랙커(예컨대, 참조번호 704A)에 제공될 때, 프레임 데이터 패킷은 정확한 시퀀스 순서에 놓여 있다라고 추정될 수 있다. 슬라이스의 최종 프레임 데이터 패킷이 수신되면, 슬라이스 NALU(예컨대, 참조번호 705)가 비디오 디코더(예컨대, 도 1의 참조번호 105)에 보내질 수 있다.
주어진 프레임(111)에 대한 슬라이스들(예컨대, 프레임 조각들(110))이 완성되어서 디코더(예컨대, 참조번호 105)에 보내지면, 프레임은 완성된 것으로 간주되고(예컨대, 참조번호 705), 채널은 이것을 디스플레이(108) 상의 디스플레이를 위해 포워딩할 수 있다. 다음번째 프레임에 대한 데이터가 도착하기 시작할 때 프레임 및 하나 이상의 슬라이스들이 완성되지 않은 경우, 컴퓨터 시스템(101)은 프레임 데이터가 폐기되어서 에러 정정을 통해서 재생성될 수 없다라고 결정할 수 있다. 이 경우들에서, 미완성 프레임 데이터에 의해 야기된 에러들을 은폐시키기 위해 프레임 조각 합성이 일어난다. 분실된 프레임 조각들은 프레임 합성 모듈(107)에 의해 합성되어 디코딩 모듈(105)은 해당 프레임을 프로세싱하는 것을 마무리할 수 있다. 도 7에서 설명된 H.264 실시예에서, 각각의 분실된 슬라이스에 대해, 이전의 참조 프레임으로부터의 픽셀들을 복사하는 합성된 슬라이스 NALU가 구축된다. 합성된 슬라이스 NALU는 디코딩을 위해 디코더(105)에 보내진다. 후속하는 완성된 슬라이스들이 또한 해당 프레임을 형성하도록 보내진다. 이것은 프레임 데이터가 미완성이거나 또는 손상된 경우들에서 완성된 출력 프레임을 산출시킨다.
손상된 프레임(즉, 합성된 부분들(109)을 갖는 디코딩된 프레임)이 이후의 어떠한 프레임들에 의해서도 참조되지 않으면, 이것은 디스플레이(108)에서 디스플레이되고 그 후 다음번째 프레임이 정상적으로 처리될 수 있다. 프레임 데이터 손상은 가시적일 수 있지만, 이는 단일 프레임 시간에 대해서만이며, 이후의 프레임들로 전파되지 않을 것이다. 또는, 손상 또는 다른 데이터 손실이 충분히 상당한 경우이면, 해당 프레임은 완전히 폐기될 수 있고 전혀 디스플레이되지 않을 수 있다. 손상된 프레임이 참조 프레임(예컨대, h.264 포맷 내 P 프레임)이면, 이러한 손상은 이후의 프레임들로 전파될 것이다(실제로, 이후의 프레임들에 대한 기초로서 이용된 그 어떠한 프레임이라도 자신의 손상을 전파시킬 것이다). 이 경우들에서, 손상된 프레임은 디스플레이되지만 비디오 소스는 데이터 손실이 발생하였다는 것을 비디오 출력 채널(701)을 통해 통지받는다. 이것은 비디오 공급자(예컨대, 도 1의 컴퓨터 시스템(113))로 하여금 즉시 리프레쉬를 트리거하도록 하며, (몇몇의 경우들에서는, 다음 두번째 또는 두 개에서) 해당 손상을 재빨리 제거하게 하도록 해준다.
이제 도 3을 참조하면, 미완성 비디오 데이터를 디코딩하기 위한 방법(300)의 흐름도가 나타난다. 이제 방법(300)을 환경(100)의 컴포넌트들 및 데이터를 빈번히 참조하여 설명할 것이다.
방법(300)은, 하나 이상의 프레임 조각들을 수신한 것에 응답하여, 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 수신된 하나 이상의 프레임 조각들을 디코딩하는 동작(동작 310)을 포함한다. 예를 들어, 컴퓨터 시스템(101)의 통신 모듈(104A)은, 결합되었을 때 풀 프레임(111)을 형성하는 프레임 조각들(110)을 수신할 수 있다. 디코딩 모듈(105)은, 추가적인 프레임 조각들이 수신되기를 기다리면서, 자신이 수신한 프레임 조각들이 순서대로 있지 않다 하더라도, 이러한 프레임 조각들을 디코딩하는 것을 시작할 수 있다. 조건 모니터링 모듈(106)은 프레임이 미완성이라는 것과, 적어도 하나의 추가적인 프레임 조각이 향후 수신되어야 한다는 것을 나타내는 조건의 발생을 검출할 수 있다(동작 320). 이 조건은 프레임 조각에 대한 프레임 데이터가 아직 수신되지 않았다는 결정, 또는 풀 프레임 조각이 수신되지 않았다는 결정일 수 있다. 추가적으로 또는 대안적으로, 이 조건은 후속 프레임의 적어도 하나의 조각을 수신하는 것일 수 있거나, 또는 주어진 조각에 대한 프레임 데이터가 손상되어 있거나 또는 그렇지는 않지만 이용가능하지 않다는 결정을 하는 것일 수 있다.
이러한 검출 동작에 응답하여, 프레임 합성 모듈(107)은 향후 수신되어야 할 추가적인 프레임 조각들을 대체시키기 위해 프레임 조각들을 합성할 수 있다(동작 330). 이러한 합성은 다양한 상이한 방식들로 발생할 수 있지만, 각각의 상이한 방법은 분실되거나 또는 손상된 데이터의 합성 또는 재생성을 초래시킨다. 몇몇의 경우들에서, 향후 수신되어야 할 프레임 조각들을 대체시키기 위해 프레임 조각들을 합성하는 것은 이전 프레임과 연관된 프레임 데이터를 이용하여 프레임 조각들을 합성하는 것을 포함한다. 이 경우들에서, 프레임 합성 모듈은 현재 프레임 내 프레임 데이터가 분실되거나 또는 손상되어 있는 부분들에서 픽셀들이 어떻게 보여졌는지를 결정하기 위해 하나 이상의 이전의 완성된 프레임들에 액세스하고 이를 분석할 수 있다. 이 정보를 이용하여, 프레임 합성 모듈(107)은 이전의 프레임들에서 나타났던 프레임 데이터와 유사하거나 또는 동일한 프레임 데이터를 생성할 수 있다.
더 나아가, 프레임 합성 모듈(107)은 프레임들 간의 이전의 이동을 결정하는 것을 비롯하여 다양한 인자들을 고려할 수 있다. 프레임들 간의 이전의 이동은 합성 중에 있는 프레임 내에서 데이터가 어떻게 변경을 유지해야하는지에 대한 인디케이터일 수 있다. 또한, 프레임 합성 모듈(107)은 하나 이상의 이전의 프레임들에 기초하여 카메라가 어느 방향으로 패닝(panning)되고 있는지를 결정할 수 있고, 결정된 패닝 방향을 이용하여 프레임 조각들을 합성할 수 있다. 따라서, 카메라가 좌측에서 우측으로 패닝 중에 있다라고 결정되면, 프레임 합성 모듈(107)은 이전에 프레임의 우측에 있었던 픽셀들이 프레임의 좌측쪽에 가까워지도록 점진적으로 이동할 것이라고 결정할 수 있다. (점진적인 좌에서 우로의 패닝 또는 위에서 아래로의 패닝에 반대되는) 불규칙한 이동들을 결정하거나 또는 현재 프레임(즉, 합성될 프레임)이 어떻게 보여져야 하는지에 대한 다른 인디케이터들을 제공하기 위해 모션 벡터들을 비롯한 다른 인자들이 이용될 수 있다. 이 정보를 이용하여, 프레임 합성 모듈(107)은 프레임 조각에 대한 분실된 프레임 데이터를 근사화하거나 또는 그렇지 않으면 이를 합성할 수 있고, 이 프레임 데이터는, 그 후, 이전에 디코딩된 프레임 조각들과 결합되어 완성된 프레임(111)을 형성한다.
도 4는 미완성 비디오 데이터를 디코딩하기 위한 대안적인 방법(방법(400))의 흐름도를 나타낸다. 이제 방법(400)을 환경(100)의 컴포넌트들 및 데이터를 빈번히 참조하여 설명할 것이다.
방법(400)은 적어도 하나의 프레임 조각에 액세스하는 동작을 포함하고, 이 프레임은 하나 이상의 프레임 조각들을 포함하며, 각각의 프레임 조각은 개별적으로 디코딩가능하다(동작 410). 디코딩 모듈(105)은 하나 이상의 수신된 프레임 조각들(110)에 액세스하고, 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 이러한 프레임 조각들(110)을 디코딩할 수 있다(동작 420). 조건 모니터링 모듈(106)은 적어도 하나의 추가적인 프레임 조각이 향후 수신되어야 하며, 이에 따라 프레임은 미완성이라고 결정할 수 있다(동작 430). 그 후, 이러한 결정에 응답하여, 프레임 합성 모듈은 적어도 하나의 이전 프레임과 연관된 프레임 데이터를 이용하여 프레임 조각들을 합성한다(동작 440). 프레임 및 프레임 조각들은 도 7에서 일반적으로 도시된 바와 같이, 개별적으로 추적될 수 있다. 컴퓨터 시스템(100)은, 다중 프레임들에 걸쳐 프레임 조각 데이터 패킷들을 추적함으로써, 후속 프레임에 대한 데이터 패킷들이 언제 수신되는지를 결정할 수 있다. 후속 프레임에 대한 데이터 패킷이 수신되면, 이것은 프레임 합성이 개시되게 하는 표시 또는 조건이 될 수 있다.
몇몇의 실시예들에서, 프레임 조각 추적 및/또는 프레임 추적은 프로토콜 기반 시퀀스 번호를 이용하거나, 점진적으로 증가하는 타임스탬프를 이용하거나, 또는 몇몇의 다른 유형의 식별자를 이용하여 구현될 수 있다. 프로토콜 기반 시퀀스 번호 또는 점진적으로 증가하는 타임스탬프는 각각의 프레임 및/또는 각각의 프레임 조각에 할당될 수 있다. 이것은 프레임 또는 프레임 조각이 개별적으로 추적되도록 해주며, 그 결과, 새로운 프레임 조각 또는 프레임에 대한 프레임 데이터가 언제 수신되었는지를 컴퓨터 시스템(101)에게 알려주도록 해준다. 예컨대, 프레임 및/또는 프레임 조각들은 스트리밍 비디오 게임의 일부로서 수신될 수 있다. 스트리밍 비디오 게임은 일반적으로, 사용자가 랙(lag)을 경험하지 않는 것을 보장하기 위해 높은 프레임 속도로 구동된다. 이러한 시나리오들에서, 컴퓨터 시스템(101)은 프레임 또는 프레임 조각이 미완성인지 여부, 및 해당 프레임의 부분들이 합성될 필요가 있는지 여부를 신속하게 결정하기 위해 프로토콜 기반 시퀀스 번호 또는 점진적으로 증가하는 타임스탬프를 이용할 수 있다. 프레임 또는 프레임 조각이 미완성인 경우(예컨대, 프레임 조각 데이터 패킷들을 프레임 조각들 및/또는 프레임들과 연관시키기 위해 이용된 타임스탬프 정보가 새로운 프레임이 수신 중에 있다라고 표시하는 경우), 프레임 합성 모듈은 분실되거나 또는 손상된 프레임 데이터를 즉시 합성하고 있을 수 있다. 이러한 방식으로, 프레임은 신속하게 완성되어져서 게임 플레이어에 대한 디스플레이를 위해 디스플레이(108)에 보내질 수 있다.
이에 따라, 미완성 비디오 데이터를 디코딩하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 다른 프레임 조각들을 기다리면서 프레임 조각들은 디코딩될 수 있다. 또한, 프레임 데이터의 임의의 부분이 분실되었거나 또는 손상되었다고 결정되는 경우, 분실되었거나 또는 손상된 데이터가 어떻게 보여졌을지를 근사화하기 위해 프레임의 해당 부분은 합성될 수 있다.
본 명세서에서 설명된 개념들 및 특징들은 본 발명의 사상 또는 설명적 특징으로부터 이탈하지 않고서 다른 특정 형태들로 구체화될 수 있다. 설명된 실시예들은 모든 측면들에서 예시적인 것으로서만 간주되어야 하며 제한적인 것으로서는 간주되지 않아야 한다. 따라서, 본 발명개시의 범위는 전술한 설명에 의해서라기 보다는 첨부된 청구항들에 의해서 나타내어진다. 본 청구항들의 의미 및 범위 내에 속하는 모든 변경들이 본 발명의 범위 내에 포함된다.
Claims (10)
- 컴퓨터로 실행가능한 명령어들을 포함한 메모리를 포함하는 컴퓨팅 시스템에 의해 수행되는 컴퓨터로 구현된 방법으로서, 상기 컴퓨터로 실행가능한 명령어들은, 상기 컴퓨팅 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 미완성 비디오 데이터를 디코딩하기 위한 방법을 수행하며, 상기 컴퓨터로 구현된 방법은,
비디오 데이터 내에 포함된 프레임 - 상기 프레임은 개별적으로 각각 디코딩가능한 복수의 프레임 조각들을 포함함 - 의 적어도 하나의 조각에 액세스하는 단계;
상기 프레임에 대한 적어도 하나의 추가적인 프레임 조각이 수신되기를 기다리면서 적어도 하나의 액세스된 프레임 조각을 디코딩하는 단계;
상기 프레임에 대한 적어도 하나의 추가적인 프레임 조각이 수신되지 않았다고 결정함으로써 상기 프레임이 미완성이라고 결정하는 단계; 및
상기 프레임이 미완성이라는 결정에 응답하여, 적어도 하나의 이전 프레임과 연관된 프레임 데이터의 적어도 일부분을 이용하여 상기 미완성 프레임에 대한 하나 이상의 프레임 조각들을 합성하는 단계
를 포함하는 컴퓨터로 구현된 방법. - 제1항에 있어서,
프레임들 및 프레임 조각들이 프로토콜 기반 시퀀스 번호와 점진적으로 증가하는 타임스탬프 중 적어도 하나를 이용하여 개별적으로 추적되는 것인, 컴퓨터로 구현된 방법. - 제1항에 있어서,
상기 디코딩된 적어도 하나의 액세스된 프레임 조각과 상기 하나 이상의 합성된 프레임 조각들을 결합하여 상기 프레임을 완성시키는 단계
를 더 포함하는 컴퓨터로 구현된 방법. - 제3항에 있어서,
상기 프레임을 완성시키는 단계는 상기 미완성 프레임에 대한 하나 이상의 프레임 조각들의 합성을 가능하게 하는 지정된 최소 문턱 개수의 프레임 조각들이 수신되었다고 결정하는 단계를 포함한 것인, 컴퓨터로 구현된 방법. - 제1항에 있어서,
상기 적어도 하나의 이전 프레임과 연관된 프레임 데이터의 적어도 일부분을 이용하여 상기 미완성 프레임에 대한 하나 이상의 프레임 조각들을 합성하는 단계는,
상기 미완성 프레임에 대한 적어도 하나의 수신된 프레임 조각이 순방향 에러 정정(forward error correction) 데이터를 포함한다고 결정하는 단계; 및
미완성이 되지 않았을 프레임을 생성하도록 상기 순방향 에러 정정 데이터를 구현하는 단계
를 포함한 것인, 컴퓨터로 구현된 방법. - 제1항에 있어서,
상기 미완성 프레임에 대한 순방향 에러 정정 데이터를 기다리는 단계, 및
상기 순방향 에러 정정 데이터를 기다리면서, 상기 미완성 프레임의 다른 프레임 조각들을 계속해서 디코딩하는 단계
를 더 포함하는 컴퓨터로 구현된 방법. - 제6항에 있어서,
상기 미완성 프레임에 대한 순방향 에러 정정 데이터를 수신하는 단계; 및
상기 순방향 에러 정정 데이터에 대응하는 상기 미완성 프레임의 프레임 조각을 디코딩하는 단계
를 더 포함하는 컴퓨터로 구현된 방법. - 제1항에 있어서,
하나 이상의 프레임들에 대한 하나 이상의 프레임 조각들이 수신되지 않았다는 것과 프레임 대체 데이터가 보내져야 할 것이라는 것을 나타내는 통지를 생성하는 단계; 및
상기 생성된 통지를 제2 컴퓨팅 시스템에 보내는 단계
를 더 포함하는 컴퓨터로 구현된 방법. - 제8항에 있어서,
상기 제2 컴퓨팅 시스템으로부터 상기 프레임 대체 데이터를 수신하는 단계; 및
상기 수신된 프레임 대체 데이터를 적어도 하나의 프레임 내로 병합시키는 단계
를 더 포함하는 컴퓨터로 구현된 방법. - 제1항에 있어서,
상기 컴퓨터로 구현된 방법을 위한 상기 컴퓨터로 실행가능한 명령어들은 하나 이상의 저장 디바이스들로 구성된 컴퓨터 프로그램 제품 상에 제공되며, 상기 하나 이상의 저장 디바이스들로부터 상기 컴퓨터로 실행가능한 명령어들은 하나 이상의 컴퓨터 시스템들의 시스템 메모리에 업로드될 수 있는 것인, 컴퓨터로 구현된 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/231,228 | 2014-03-31 | ||
US14/231,228 US9369724B2 (en) | 2014-03-31 | 2014-03-31 | Decoding and synthesizing frames for incomplete video data |
PCT/US2015/022599 WO2015153237A1 (en) | 2014-03-31 | 2015-03-26 | Decoding and synthesizing frames for incomplete video data |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160140819A true KR20160140819A (ko) | 2016-12-07 |
Family
ID=52875276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167030117A Withdrawn KR20160140819A (ko) | 2014-03-31 | 2015-03-26 | 미완성 비디오 데이터를 위한 프레임들의 디코딩 및 합성 |
Country Status (10)
Country | Link |
---|---|
US (2) | US9369724B2 (ko) |
EP (1) | EP3127331A1 (ko) |
JP (1) | JP6637900B2 (ko) |
KR (1) | KR20160140819A (ko) |
CN (1) | CN106134193A (ko) |
AU (1) | AU2015241276C1 (ko) |
CA (1) | CA2939827A1 (ko) |
MX (1) | MX2016012630A (ko) |
RU (1) | RU2689187C2 (ko) |
WO (1) | WO2015153237A1 (ko) |
Families Citing this family (6)
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 | 南京中电熊猫液晶显示科技有限公司 | 一种显示装置及其驱动方法 |
JP7448707B1 (ja) * | 2023-03-29 | 2024-03-12 | 株式会社Cygames | プログラム、クライアント端末、ゲームシステム、及び処理方法 |
Family Cites Families (29)
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 | 光伝送システム、これに用いる端局装置およびノード装置 |
US9077991B2 (en) * | 2002-12-10 | 2015-07-07 | Sony Computer Entertainment America Llc | System and method for utilizing forward error correction with video compression |
JP2005175787A (ja) * | 2003-12-10 | 2005-06-30 | Nec Corp | データ配信装置、データ配信システムおよびデータ配信方法 |
CN1985477B (zh) * | 2004-05-13 | 2012-11-07 | 高通股份有限公司 | 用于分配信息到通信系统的信道的方法和设备 |
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 |
RU2011120258A (ru) * | 2008-10-30 | 2012-12-10 | Нокиа Корпорейшн | Способ и устройство для перемежения блока данных |
US20100189182A1 (en) | 2009-01-28 | 2010-07-29 | Nokia Corporation | Method and apparatus for video coding and decoding |
EP2405661B1 (en) | 2010-07-06 | 2017-03-22 | Google, Inc. | Loss-robust video transmission using two decoders |
EP2908532B1 (en) | 2010-12-30 | 2018-10-03 | Skype | Concealment of data loss for video decoding |
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 |
-
2014
- 2014-03-31 US US14/231,228 patent/US9369724B2/en active Active
-
2015
- 2015-03-26 WO PCT/US2015/022599 patent/WO2015153237A1/en active Application Filing
- 2015-03-26 AU AU2015241276A patent/AU2015241276C1/en active Active
- 2015-03-26 JP JP2016559928A patent/JP6637900B2/ja active Active
- 2015-03-26 MX MX2016012630A patent/MX2016012630A/es unknown
- 2015-03-26 CN CN201580017957.XA patent/CN106134193A/zh active Pending
- 2015-03-26 EP EP15716634.9A patent/EP3127331A1/en not_active Withdrawn
- 2015-03-26 CA CA2939827A patent/CA2939827A1/en not_active Abandoned
- 2015-03-26 KR KR1020167030117A patent/KR20160140819A/ko not_active Withdrawn
- 2015-03-26 RU RU2016138439A patent/RU2689187C2/ru active
-
2016
- 2016-05-16 US US15/155,949 patent/US20160275922A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP3127331A1 (en) | 2017-02-08 |
CA2939827A1 (en) | 2015-10-08 |
US9369724B2 (en) | 2016-06-14 |
AU2015241276A1 (en) | 2016-09-08 |
JP2017516364A (ja) | 2017-06-15 |
US20160275922A1 (en) | 2016-09-22 |
JP6637900B2 (ja) | 2020-01-29 |
US20150281712A1 (en) | 2015-10-01 |
RU2016138439A3 (ko) | 2018-10-25 |
RU2016138439A (ru) | 2018-04-02 |
MX2016012630A (es) | 2016-12-14 |
CN106134193A (zh) | 2016-11-16 |
AU2015241276B2 (en) | 2019-01-31 |
AU2015241276C1 (en) | 2019-05-16 |
RU2689187C2 (ru) | 2019-05-24 |
WO2015153237A1 (en) | 2015-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160140819A (ko) | 미완성 비디오 데이터를 위한 프레임들의 디코딩 및 합성 | |
CN109600351B (zh) | 可扩展的鲁棒直播流送系统 | |
US9137168B2 (en) | Method, device and system for packet transmission over IP networks | |
US9998634B2 (en) | Video frame playback scheduling | |
WO2017107442A1 (zh) | 视频转码方法和装置 | |
JP6516767B2 (ja) | Mmtpデカプセル化バッファのシグナリング及び動作 | |
JP6663437B2 (ja) | Mmtpストリームをmpeg−2 tsに変換する方法及び装置 | |
US20160381396A1 (en) | Dynamic insertion of synchronization predicted video frames | |
CN112423140A (zh) | 视频播放方法、装置、电子设备和存储介质 | |
US20230217034A1 (en) | Split Rendering To Improve Tolerance To Delay Variation In Extended Reality Applications With Remote Rendering | |
US11095699B1 (en) | Streaming media file management | |
KR20160114717A (ko) | 비디오 데이터 인코딩 및 디코딩 방법 및 장치 | |
KR20160142850A (ko) | Mmt에서 미디어 데이터의 저 지연 소비 시그날링 및 동작 방법 및 장치 | |
US10116415B2 (en) | Transmission device, receiving device, transmission method, and receiving method | |
KR20120005371A (ko) | 블록 코드 심볼을 중복하여 버스트 데이터 손실을 복구하는 방법 및 장치 | |
US20240340329A1 (en) | Loss-resilient real-time video streaming | |
US20250104670A1 (en) | Low latency synchronization of video rendering pipelines with high refresh rates | |
JP4929393B1 (ja) | 受信装置、受信方法および受信プログラム | |
CN118677887A (zh) | 视频流传输模式匹配方法、装置、计算机设备和存储介质 | |
JP2016134673A (ja) | 送信装置、送信方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20161027 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination |