KR20160106155A - 화면 콘텐츠 데이터의 비디오 인코딩 - Google Patents

화면 콘텐츠 데이터의 비디오 인코딩 Download PDF

Info

Publication number
KR20160106155A
KR20160106155A KR1020167021564A KR20167021564A KR20160106155A KR 20160106155 A KR20160106155 A KR 20160106155A KR 1020167021564 A KR1020167021564 A KR 1020167021564A KR 20167021564 A KR20167021564 A KR 20167021564A KR 20160106155 A KR20160106155 A KR 20160106155A
Authority
KR
South Korea
Prior art keywords
mode
motion
picture data
motion vector
encoder
Prior art date
Application number
KR1020167021564A
Other languages
English (en)
Other versions
KR102271780B1 (ko
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 KR20160106155A publication Critical patent/KR20160106155A/ko
Application granted granted Critical
Publication of KR102271780B1 publication Critical patent/KR102271780B1/ko

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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

Abstract

인코더의 입력부는 인코딩될 프레임들의 시퀀스를 포함하는 동영상 데이터를 수신하고, 각각의 프레임은 2 개의 차원에서 복수의 블록들을 포함하고 각각의 블록은 그 2 개의 차원에서 복수의 화소들을 포함한다. 움직임 예측 모듈은, 복수의 상기 프레임들의 각각의 프레임의 적어도 일부에 대해, 시퀀스의 다른 프레임의 각자의 참조 부분 - 각자의 참조 부분은 각자의 움직임 벡터만큼 블록으로부터 오프셋되어 있음 - 을 기준으로 하여 각각의 블록을 코딩하는 것에 의해 인코딩을 수행한다. 본 개시 내용에 따르면, 이 복수의 프레임들의 동영상 데이터는 화면 포착 스트림을 포함하고, 움직임 예측 모듈은 화면 포착 스트림의 움직임 벡터들 각각을 상기 차원들 중 적어도 하나의 차원에서 정수 개의 화소들로 제한하도록 구성되어 있다.

Description

화면 콘텐츠 데이터의 비디오 인코딩{VIDEO ENCODING OF SCREEN CONTENT DATA}
최근의 통신 시스템에서, 비디오 신호가, 유선 및/또는 무선 네트워크, 종종 패킷 기반 네트워크(인터넷 등)와 같은 매체를 통해, 하나의 단말로부터 다른 단말로 송신될 수 있다. 예를 들어, 비디오가 데스크톱 또는 랩톱 컴퓨터, 태블릿 또는 스마트폰과 같은 사용자 단말 상에서 실행되는 VoIP(voice over Internet Protocol) 클라이언트 애플리케이션으로부터 수행되는 VoIP 호(VoIP call)의 일부일 수 있다.
전형적으로, 비디오의 프레임들은 네트워크를 통한 전송을 위해 프레임들을 압축하기 위해 전송측 단말에서 인코더에 의해 인코딩된다. 주어진 프레임에 대한 인코딩은 블록들이 동일한 프레임 내의 다른 블록들을 기준으로 하여 인코딩되는 인트라 프레임 인코딩(intra frame encoding)을 포함할 수 있다. 이 경우에, 대상 블록(target block)은 그 블록과 이웃 블록 간의 차분(difference)(잔차(residual))의 측면에서 인코딩된다. 대안적으로, 일부 프레임에 대한 인코딩은 대상 프레임(target frame) 내의 블록들이, 전형적으로 움직임 예측(motion prediction)에 기초하여, 선행 프레임(preceding frame)에서의 대응하는 부분들을 기준으로 하여 인코딩되는 인터 프레임 인코딩(inter frame encoding)을 포함할 수 있다. 이 경우에, 대상 블록이 블록과 대응하는 부분(이로부터 블록이 예측되어야 함) 사이의 오프셋을 식별해주는 움직임 벡터(motion vector) 및 블록과 대응하는 부분(이로부터 블록이 예측됨) 사이의 차분(잔차)의 측면에서 인코딩된다. 수신기에 있는 대응하는 디코더는, 수신되는 비디오 신호의 프레임들을 압축 해제하여 디코더측에 있는 화면으로 출력하기 위해, 그 프레임들을 적절한 유형의 예측에 기초하여 디코딩한다.
비디오를 인코딩(압축)할 때, 현재 프레임에 대한 인터 프레임 예측(inter frame prediction)을 발생시키기 위해 움직임 벡터가 사용된다. 인코더는 먼저 현재 블록(대상 블록)과 가장 잘 정합하는 이전의 인코딩된 프레임에서의 유사한 블록(참조 블록)을 검색하고, 참조 블록과 대상 블록 사이의 변위를 인코딩된 비트스트림의 일부로서 디코더에 신호한다. 변위는 전형적으로 수평 및 수직(x 및 y) 좌표로서 표현되고, 움직임 벡터라고 지칭된다.
참조 "블록"이 실제로는 참조 프레임에서의 실제 블록 위치로 제약되지 않고(즉, 대상 블록과 동일한 격자로 제한되지 않고). 오히려 움직임 벡터만큼 대상 블록의 위치에 대해 오프셋되어 있는 참조 프레임의 대응하는 크기의 부분이다. 현재 표준에 따르면, 움직임 벡터는 소수 화소 분해능(fractional pixel resolution)으로 표현된다. 예를 들어, H.264 표준에서, 각각의 움직임 벡터는 1/4 화소 분해능으로 표현된다. 따라서 예로서, 현재 프레임에서의 16x16 블록이 대상 블록의 위치로부터 1 화소 좌측에 있는 이전 프레임에서의 다른 16x16 블록으로부터 예측되면, 움직임 벡터는 (4,0)이다. 또는, 대상 블록이 대상 블록으로부터 단지, 예컨대, 3/4 화소 좌측에 있는 참조 블록으로부터 예측되면, 움직임 벡터는 (3,0)이다. 소수 화소 위치(fractional pixel position)에 있는 참조 블록은 그 자체가 실제로 존재하지 않고, 오히려 참조 프레임의 화소들 사이의 보간에 의해 발생된다. 서브화소 움직임 벡터는 압축 효율의 측면에서 상당한 성능을 달성할 수 있다.
그렇지만, 소수 화소 분해능을 사용하는 것은 움직임이 정수 화소 분해능으로 추정되는 경우보다 움직임 벡터를 인코딩하는 데 더 많은 비트를 유발시키고, 이는 또한 최상의 정합하는 참조를 검색하는 데 더 많은 처리 자원을 필요로 한다. 비디오 코딩에 있어서, 예컨대, 더 잘 정합된 잔차의 감소된 크기가 일반적으로 움직임 벡터를 인코딩하는 데 유발된 비트보다 더 중요할 수 있거나, 달성되는 품질이 자원을 정당화시키는 것으로 간주될 수 있기 때문에, 이것은 가치있는 일일 수 있다. 그렇지만, 인코딩될 동영상 모두가 (즉, 카메라로부터 포착되는) 비디오인 것은 아니다. 이하는 카메라보다는 화면으로부터 포착되는 동영상을 인코딩(압축)할 때, 인코딩된 비트 스트림에서의 움직임 벡터들의 대부분이 일반적으로 정수 화소(integer pixel)를 가리킬 것인 반면, 그 중 아주 적은 수만이 소수 화소 위치에서 발견되는 경향이 있다는 본원에서 인식되는 관찰에 기초한다. 이와 같이, 인코더가 보통 비트 스트림에서의 움직임 벡터를 1/4 화소의 단위로 표현하지만, 화면 공유 또는 녹화 응용 분야에서, 움직임 벡터를 단지 1 화소의 단위로 인코딩하는 것에 의해 과도한 품질 손실 없이 대역폭이 실제로 절감될 수 있다. 대안적으로, 움직임 벡터가 인코딩된 비트스트림에서 소수 화소(fractional pixel)의 스케일로 여전히 표현되더라도, 움직임 벡터 검색을 정수 화소 오프셋으로 제한함으로써 처리 자원이 절감될 수 있다.
따라서, 본원에 개시되는 일 양태에 따르면, 동영상 데이터를 수신하기 위한 입력부, 및 동영상 데이터를 인코딩하는 데 사용하기 위한 움직임 예측 모듈을 포함하는 인코더가 제공된다. 동영상 데이터는 인코딩될 프레임들의 시퀀스를 포함하고, 각각의 프레임은 2 개의 차원에서 복수의 블록들로 분할되며, 각각의 블록은 상기 2 개의 차원에서 복수의 화소들을 포함한다. 블록들은, 예를 들어, H.264 또는 H.265와 같은 H.26x 표준에서 블록 또는 매크로블록이라고 지칭되는 구획일 수 있다. 움직임 예측 모듈은 시퀀스의 다른 프레임의 각자의 참조 부분(참조 "블록")을 기준으로 하여 각각의 블록(대상 블록)을 코딩하는 것에 의해 인터 프레임 인코딩을 수행하고, 여기서 각자의 참조 부분은 각자의 움직임 벡터만큼 대상 블록으로부터 오프셋되어 있다. 게다가, 본 개시 내용에 따르면, 상기 복수의 프레임들의 동영상 데이터는 화면 포착 스트림을 포함하고, 움직임 예측 모듈은 화면 포착 스트림의 움직임 벡터들 각각을 상기 차원들 중 적어도 하나의 차원에서 정수 개의 화소들로 제한하도록 구성되어 있다.
실시예에서, 소수 움직임 벡터(factional motion vector)가 (카메라에 의해 포착되는) 일반 비디오 또는 어쩌면 다른 동영상(예컨대, 애니메이션)에 대해 여전히 유용할 수 있다고 생각하여, 움직임 벡터가 유연한 방식으로 신호될 수 있고, 비디오 소스가 포착된 화면으로부터 온 것일 때, 움직임 벡터는 1 화소의 단위로 신호될 수 있지만, 일반 비디오 및/또는 다른 동영상에 대해, 소수 화소 단위가 여전히 사용될 수 있다.
따라서 실시예에서, 인코더는 또한 2 개의 모드 - 제1 모드와 제2 모드 - 사이에서 움직임 예측 모듈을 스위칭하도록 동작 가능한 제어기를 포함할 수 있다. 제1 모드에서는, 움직임 벡터가 (어느 한 차원에서) 정수 개의 화소들로 제한되지 않지만, 제2 모드에서는, 움직임 벡터가 적어도 하나의 차원에서 정수 개의 화소들로 제한된다(그리고 실시예에서는, 둘 다임). 제어기는 현재 인코딩되고 있는 동영상 데이터가 화면 포착 스트림을 포함한다고 결정하는 것에 따라 움직임 예측 모듈을 제2 모드로 스위칭하도록 구성될 수 있다.
예를 들면, 동영상 데이터는 화면 포착 스트림 및 비디오 스트림을 포함할 수 있다(예컨대, 이들은 인터넷과 같은 패킷 기반 네트워크를 통해 수행되는 호의 라이브 스트림(live stream)일 수 있거나, 나중에 재생하려고 의도되어 있는 저장된 스트림일 수 있다). 동영상 데이터의 일부 프레임들이 화면 포착 스트림의 프레임이고 다른 때에 동영상 데이터의 프레임들이 비디오 프레임일 수 있거나, 각각의 프레임 내의 상이한 영역들이, 각각, 화면 포착 스트림 및 비디오 스트림(예컨대, 상이한 슬라이스)을 포함할 수 있다. 이러한 경우에 대응하기 위해, 제어기가 현재 인코딩되고 있는 동영상 데이터가 화면 포착 스트림인지 비디오 스트림인지를 결정하고, 움직임 예측 모듈을 화면 포착에 대해서는 제2 모드로 그리고 비디오에 대해서는 제1 모드로 설정하도록 구성될 수 있다. 대안적으로, 다른 예로서, 화면 포착 스트림 및 비디오 스트림이 동일한 프레임들의 일부 프레임들의 상이한 영역들에 포함되면, 제어기가 프레임이 임의의 화면 포착 데이터를 포함하는 경우 제2 모드를 선택하고, 프레임이 화면 포착 데이터를 포함하지 않는 경우에만 다른 방식으로 제1 모드를 선택하도록 구성될 수 있거나, 이와 달리, 제어기가 프레임이 화면 포착 데이터만을 포함하고 비디오를 포함하지 않는 경우 제2 모드로 스위칭하고, 프레임이 임의의 비디오를 포함하는 경우에 다른 방식으로 제1 모드를 선택하도록 구성될 수 있다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 선택된 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징 또는 필수적인 특징을 언급하기 위한 것도 아니고, 청구된 발명 요지의 범주를 제한하기 위해 사용되기 위한 것도 아니다. 청구된 발명 요지가 본 명세서에서 살펴본 단점들 중 일부 또는 전부를 해결하는 구현들로 제한되지도 않는다.
본 개시 내용의 이해를 돕기 위해 그리고 실시예가 어떻게 실시될 수 있는지를 보여주기 위해, 예로서 첨부 도면이 참조된다.
도 1은 비디오 스트림의 개략적 표현을 나타낸 도면.
도 2는 통신 시스템의 개략 블록도.
도 3은 인코딩된 비디오 스트림의 개략적 표현을 나타낸 도면.
도 4는 인코더의 개략 블록도.
도 5는 디코더의 개략 블록도.
도 6은 인터 프레임 인코딩 방식의 개략적 표현을 나타낸 도면.
도 7은 다른 인터 프레임 인코딩 방식의 개략적 표현을 나타낸 도면.
도 1은 카메라로부터 포착되고, 인코딩된 비트스트림을 발생시키기 위해 비디오 인코더에 의해 인코딩될 공간 구획들로 분할되는 입력 비디오 신호의 개략적 예시를 제공한다. 신호는 시간상 복수의 프레임들(F) - 각각의 프레임은 시간상 상이한 각자의 순간(...t-1, t, t+1...)에서의 영상을 나타냄 - 로 분할되는 동영상 비디오를 포함한다. 각각의 프레임 내에서, 프레임은 공간상 복수의 구획들 - 각각의 구획은 복수의 화소들을 나타냄 - 로 분할된다. 이 구획은 블록이라고 지칭될 수 있다. 특정 방식에서, 프레임이 상이한 블록 레벨들로 분할 및 세분(sub-divide)된다. 예를 들어, 각각의 프레임이 매크로블록(macroblock; MB)들로 분할될 수 있고, 각각의 매크로블록은 블록들(b)로 분할될 수 있으며, 예컨대, 각각의 블록은 프레임 내의 8x8 화소들의 영역을 나타내고, 각각의 매크로블록은 2x2 블록들(16x16 화소들)의 영역을 나타낸다. 특정 방식에서, 각각의 프레임은 또한 독립적으로 디코딩 가능한 슬라이스(slice)(S)들로 분할될 수 있고, 각각의 슬라이스는 복수의 매크로블록들을 포함한다. 슬라이스(S)는 일반적으로 임의의 형상을 취할 수 있고, 예컨대, 각각의 슬라이스는 하나 이상의 매크로블록 행 또는 (예컨대, 영상에서의 관심 영역(ROI)에 대응하는) 불규칙적이거나 임의적으로 정의된 매크로블록 모음이다.
"화소"라는 용어와 관련하여, 이하에서, 이 용어는 픽처 어레이에 대한 샘플링 격자에서의 샘플 및 샘플링 위치를 지칭하는 데 사용된다(때때로 문헌에서 "화소"이라는 용어는 그 대신에 하나의 단일 공간 위치에 대응하는 3 가지 색 성분 모두를 지칭하는 데 사용되고, 때때로 단일의 어레이에서의 단일의 위치 또는 단일의 정수 샘플 값을 지칭하는 데 사용된다). 샘플링 격자의 분해능은 루마 샘플링 어레이(luma sampling array)와 크로마 샘플링 어레이(chroma sampling array) 간에 종종 상이하다. 실시예에서, 이하가 4:4:4 표현에 적용될 수 있지만, 예를 들어, 어쩌면 4:2:2 및 4:2:0에도 적용될 수 있다.
또한 유의할 점은, 임의의 주어진 표준이 블록 또는 매크로블록이라는 용어에 특정의 의미를 부여할 수 있지만, 블록이라는 용어가 또한 보다 일반적으로 본 기술 분야에서 인트라 또는 인터 예측과 같은 인코딩 및 디코딩 동작이 수행되는 레벨에서의 프레임의 구획을 지칭하는 데 종종 사용되고, 달리 구체적으로 언급하지 않는 한, 이러한 보다 일반적인 의미가 본원에서 사용될 것이라는 것이다. 예를 들어, 본원에서 언급되는 블록은 사실 H.26x 표준에서 블록 또는 매크로블록이라고 불리우는 구획일 수 있고, 다양한 인코딩 및 디코딩 스테이지가 문제의 인코딩 모드, 응용 분야 및/또는 표준에 적절한 임의의 이러한 구획의 레벨에서 동작할 수 있다.
포착되는 입력 신호에서의 블록은 보통 공간 영역(spatial domain)에서 표현되고, 여기서 각각의 색 공간 채널은 블록 내에서의 공간 위치의 함수로서 표현된다. 예를 들어, YUV 색 공간에서, 루미넌스(Y) 채널 및 크로미넌스(U, V) 채널 각각은 직교 좌표(x 및 y)의 함수(Y(x,y), U(x,y) 및 V(x,y))로서 표현될 수 있거나, RGB 색 공간에서, 적색(R) 채널, 녹색(G) 채널 및 청색(B) 채널 각각은 직교 좌표의 함수(R(x,y), G(x,y), B(x,y))로서 표현될 수 있다. 이 표현에서, 각각의 블록 또는 부분은 상이한 공간 좌표들(예컨대, x 및 y 좌표들)에서의 화소 값 세트에 의해 표현되고, 따라서 색 공간의 각각의 채널은 개별적인 화소 위치 세트의 각각의 화소 위치에서 그 채널의 각자의 크기로 표현된다.
그렇지만, 양자화 이전에, 블록이 인코딩 프로세스의 일부로서 변환 영역 표현(transform domain representation), 전형적으로 공간 주파수 영역 표현(때로는 단지 주파수 영역이라고 지칭됨)으로 변환될 수 있다. 주파수 영역에서, 블록에서의 각각의 색 공간 채널은 2 개의 차원의 각각의 차원에서 공간 주파수(1/길이의 차원)의 함수로서 표현된다. 예를 들어, 이것은 수평 방향 및 수직 방향에서, 각각, 파수(wavenumber) kx 및 ky로 표시될 수 있고, 따라서 채널들이 YUV 공간에서는 Y(kx, ky), U(kx, ky) 및 V(kx, ky)로서 표현될 수 있거나, RGB에서는 R(kx, ky), G(kx, ky), B(kx, ky)로서 표현될 수 있다. 이와 같이, 색 공간 채널을 개별적인 화소 위치 세트의 각각의 화소 위치에서의 크기로 표현하는 대신에, 이 변환은 각각의 색 공간 채널을 블록을 구성하는 개별적인 공간 주파수 성분 세트의 각각의 공간 주파수 성분과 연관된 계수로 표현한다(즉, 개별적인 공간 주파수 항 세트의 각각의 공간 주파수 항의 진폭이 블록에 걸쳐 상이한 공간 변동 주파수에 대응함). 이러한 변환들에 대한 가능한 것들은 푸리에 변환, DCT(Discrete Cosine transform), KLT(Karhunen-Loeve Transform) 또는 다른 것들을 포함한다.
도 2의 블록도는 본 개시 내용의 기법이 이용될 수 있는 통신 시스템의 일 예를 제공한다. 통신 시스템은 제1 전송측 단말(12) 및 제2 수신측 단말(22)을 포함한다. 예를 들어, 각각의 단말(12, 22)은 휴대폰 또는 스마트폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 또는 텔레비전 세트, 셋톱 박스, 스테레오 시스템 등과 같은 다른 가전 제품 중 하나를 포함할 수 있다. 제1 및 제2 단말(12, 22) 각각은 통신 네트워크(32)에 동작 가능하게 결합되고, 그에 의해, 제1 전송측 단말(12)은 제2 수신측 단말(22)에 의해 수신될 신호들을 전송하도록 구성되어 있다. 물론, 전송측 단말(12)이 또한 수신측 단말(22)로부터 신호들을 수신할 수 있을 것이고 그 반대일 수 있지만, 논의를 위해, 전송은 본원에서 제1 단말(12)의 관점으로부터 기술되고, 수신은 제2 단말(22)의 관점으로부터 기술된다. 통신 네트워크(32)는, 예를 들어, WAN(wide area network) 및/또는 LAN(local area network)과 같은 패킷 기반 네트워크, 및/또는 모바일 셀룰러 네트워크(mobile cellular network)를 포함할 수 있다.
제1 단말(12)은 플래시 메모리 또는 다른 전자 메모리, 자기 저장 디바이스, 및/또는 광 저장 디바이스와 같은 컴퓨터 판독 가능 저장 매체(14)를 포함한다. 제1 단말(12)은 또한 하나 이상의 실행 유닛들을 가지는 프로세서 또는 CPU 형태의 처리 장치(16), 송신기(18)를 가지는 유선 또는 무선 모뎀과 같은 송수신기, 비디오 카메라(15) 및 화면(17)(즉, 디스플레이 또는 모니터)을 포함한다. 카메라(15) 및 화면(17) 각각은 단말(12)과 동일한 케이스 내에 하우징되어 있을 수 있거나 그렇지 않을 수 있다(그리고 심지어 송신기(18)가 내장형이거나 외장형일 수 있고, 예컨대, 후자의 경우에 동글(dongle) 또는 무선 라우터를 포함한다). 저장 매체(14), 비디오 카메라(15), 화면(17) 및 송신기(18) 각각은 처리 장치(16)에 동작 가능하게 결합되고, 송신기(18)는 유선 또는 무선 링크를 통해 네트워크(32)에 동작 가능하게 결합된다. 이와 유사하게, 제2 단말은 전자, 자기, 및/또는 광 저장 디바이스와 같은 컴퓨터 판독 가능 저장 매체(24), 및 하나 이상의 실행 유닛들을 가지는 CPU 형태의 처리 장치(26)를 포함한다. 제2 단말은 적어도 수신기(28)를 가지는 유선 또는 무선 모뎀과 같은 송수신기 및 나머지 단말(22)과 동일한 케이스 내에 하우징될 수 있거나 그렇지 않을 수 있는 화면(25)을 포함한다. 제2 단말의 저장 매체(24), 화면(25) 및 수신기(28) 각각은 각자의 처리 장치(26)에 동작 가능하게 결합되고, 수신기(28)는 유선 또는 무선 링크를 통해 네트워크(32)에 동작 가능하게 결합된다.
제1 단말(12) 상의 저장소(14)는 적어도 동영상 데이터를 인코딩하기 위한 인코더를 저장하고, 인코더는 각자의 처리 장치(16) 상에서 실행되도록 구성되어 있다. 실행될 때, 인코더는 비디오 카메라(15)로부터 "원시(raw)"(인코딩되지 않은) 입력 비디오 스트림을 수신하고, 비디오 스트림을 보다 낮은 비트레이트의 스트림으로 압축하기 위해 비디오 스트림을 인코딩하도록 동작 가능하며, 송신기(18) 및 통신 네트워크(32)를 통해 제2 단말(22)의 수신기(28)로 전송하기 위해 인코딩된 비디오 스트림을 출력한다. 제2 단말(22) 상의 저장소(24)는 적어도 그 자신의 처리 장치(26) 상에서 실행되도록 구성된 비디오 디코더를 저장한다. 실행될 때, 디코더는 수신기(28)로부터 인코딩된 비디오 스트림을 수신하고 이를 화면(25)으로 출력하기 위해 디코딩한다.
인코더 및 디코더는 또한 화면 공유 스트림을 비롯한 다른 유형의 동영상 데이터를 인코딩 및 디코딩하도록 동작 가능하다. 화면 공유 스트림은, 하나 이상의 다른 원격 사용자가 인코더측에 있는 사용자가 화면 상에서 보고 있는 것을 볼 수 있도록, 또는 그 화면의 사용자가 나중에 하나 이상의 다른 사용자에게 재생하기 위해 화면 상에서 일어나고 있는 것을 기록할 수 있도록, 인코더측에서 화면(17)으로부터 포착되는 영상 데이터이다. 전송측 단말(12)과 수신측 단말(22) 사이에서 수행되는 호의 경우에, 전송측 단말(12)에 있는 화면(17)의 움직이는 콘텐츠가 라이브로(실시간으로) 인코딩되어 전송되고, 디코딩되어 수신측 단말(22)의 화면(25) 상에 디스플레이될 것이다. 예를 들어, 인코더측 사용자는 자신의 운영 체제의 데스크톱 또는 어떤 애플리케이션을 어떻게 다루고 있는지를 다른 사용자와 공유하고자 할 수 있다.
유의할 점은, 화면 공유 스트림이 화면 등으로부터 포착된 것이라고 말해지는 경우, 이것이 그렇게 하기 위한 임의의 특정의 메커니즘으로 제한되지 않는다는 것이다. 예컨대, 데이터가 화면(17)의 화면 버퍼로부터 판독되거나, 화면(17) 상에 디스플레이하기 위해 운영 체제 또는 애플리케이션으로부터 출력되고 있는 동일한 그래픽 데이터의 인스턴스를 수신하는 것에 의해 포착될 수 있다.
도 3은 전송측 단말(12) 상에서 실행 중인 인코더로부터 수신측 단말(22) 상에서 실행 중인 디코더로 전송될, 인코딩된 비트스트림(33)의 개략적 표현을 제공한다. 비트스트림(33)은 각각의 프레임 또는 슬라이스에 대한 인코딩된 영상 데이터(34)를 포함하며, 상기 인코딩된 영상 데이터(34)는 그 프레임 또는 슬라이스의 블록들에 대한 인코딩된 샘플을 임의의 연관된 움직임 벡터와 함께 포함한다. 하나의 응용 분야에서, 비트스트림은 전송측 단말(12)과 수신측 단말(22) 사이의 VoIP 호와 같은 라이브(실시간) 호의 일부로서 전송될 수 있다(VoIP 호는 또한 비디오 및 화면 공유를 포함할 수 있음). 비트스트림(33)은 또한 각각의 프레임 또는 슬라이스와 연관된 헤더 정보(36)를 포함한다. 실시예에서, 헤더(36)는 움직임 벡터의 분해능을 나타내는 적어도 하나의 플래그(37)의 형태의 적어도 하나의 부가 요소를 포함하도록 구성되어 있으며, 이에 대해서는 이하에서 보다 상세히 논의될 것이다.
도 4는 전송측 단말(12) 상에서 구현될 수 있는 것과 같은 인코더를 예시하는 블록도이다. 인코더는 DCT(discrete cosine transform) 모듈(51), 양자화기(53), 역변환 모듈(inverse transform module)(61), 역양자화기(63), 인트라 예측 모듈(intra prediction module)(41), 인터 예측 모듈(inter prediction module)(43), 스위치(47), 감산 스테이지(subtraction stage)(-)(49), 및 무손실 인코딩 스테이지(65)를 포함하는 주 인코딩 모듈(40)을 포함한다. 인코더는 인터 예측 모듈(43)에 결합된 제어 모듈(50)을 추가로 포함한다. 이 모듈들 또는 스테이지들 각각은 전송측 단말의 저장 매체(14) 상에 저장되고 그의 처리 장치(16) 상에서 실행되도록 구성된 코드의 일부분으로서 구현될 수 있지만, 이들 중 일부 또는 전부가 전체적으로 또는 부분적으로 전용 하드웨어 회로부에서 구현될 가능성이 배제되지 않는다.
감산 스테이지(49)는 복수의 프레임들(F)에 걸친 복수의 블록들을 포함하는 입력 신호의 인스턴스를 수신하도록 구성되어 있다. 입력 스트림은 카메라(15)로부터 수신되거나 화면(17) 상에 디스플레이되고 있는 것으로부터 포착된다. 인트라 예측(41) 또는 인터 예측(43)은 다른 이미 인코딩된 블록 또는 대응하는 크기의 참조 부분으로부터의 예측에 기초하여 인코딩될 현재 (대상) 블록의 예측된 버전을 발생시킨다. 예측된 버전은 감산 스테이지(49)의 입력부에 공급되고, 그곳에서 예측된 버전이 공간 영역에서 입력 신호(즉, 실제 신호)로부터 감산되어, 블록의 예측된 버전과 실제 입력 신호에서의 대응하는 블록 사이의 차분을 나타내는 잔차 신호를 생성한다.
인트라 예측 모드에서, 인트라 예측 모듈(41)은 동일한 프레임에서의 다른 이미 인코딩된 블록(전형적으로 이웃 블록)으로부터의 예측에 기초하여 인코딩될 현재 (대상) 블록의 예측된 버전을 발생시킨다. 인트라 프레임 인코딩을 수행할 때, 발상은 프레임 내의 영상 데이터의 일부분이 그 동일 프레임 내의 다른 부분과 어떻게 상이한지의 척도만을 인코딩하여 전송하는 것이다. 그 부분이 이어서 (처음에는 어떤 절대 데이터를 고려하여) 디코더에서 예측될 수 있고, 따라서 실제 데이터 자체보다는 예측과 실제 데이터 사이의 차분을 전송하기만 하면 된다. 차분 신호는 전형적으로 크기가 보다 작고, 따라서 (무손실 압축 스테이지(65) - 이하 참조 - 의 동작으로 인해) 인코딩할 보다 적은 비트를 취한다.
인터 예측 모드에서, 인터 예측 모듈(43)은 현재 블록과 상이한 프레임에서의 다른 이미 인코딩된 참조 부분 - 참조 부분은 블록의 크기를 갖지만 인터 예측 모듈(43)에 의해 예측되는 움직임 벡터만큼 공간 영역에서 대상 블록에 대해 오프셋되어 있음 - 으로부터의 예측에 기초하여, 인코딩될 현재 (대상) 블록의 예측된 버전을 발생시킨다(인터 예측은 또한 움직임 예측 또는 움직임 추정이라고도 지칭될 수 있음). 인터 예측 모듈(43)은, 공간 영역에서, 대상 프레임 이외의 하나 이상의 프레임들에서 복수의 각자의 가능한 움직임 벡터들만큼 오프셋되어 있는 복수의 후보 참조 부분들을 검색하는 것, 및 적당한 메트릭에 따라 대상 블록에 대한 잔차를 최소화하는 후보를 선택하는 것에 의해 주어진 대상 블록에 대한 최적의 참조를 선택한다. 인터 예측 모듈(43)은, 인트라 프레임 예측 스테이지(41) 대신에, 스위치(47)에 의해 피드백 경로로 스위칭되고, 따라서 피드백 루프가 이와 같이 하나의 프레임의 블록들과 다른 프레임의 블록들 사이에 생성되어, 다른 프레임의 블록들을 기준으로 하여 인터 프레임(inter frame)을 인코딩한다. 즉, 잔차는 이제 인터 예측된 블록과 실제 입력 블록 사이의 차분을 나타낸다. 이것은 전형적으로 인트라 프레임 인코딩보다 인코딩할 비트들을 훨씬 더 적게 취한다.
잔차 신호의 샘플들(예측이 입력 신호로부터 감산된 후의 잔차 블록들을 포함함)이 감산 스테이지(49)로부터 변환(DCT) 모듈(51)(또는 다른 적당한 변환)(여기서 그의 잔차 값들이 주파수 영역으로 변환됨)을 통해 이어서 양자화기(53)(여기서 변환된 값들이 실질적으로 이산 양자화 인덱스(discrete quantization index)들로 변환됨)로 출력된다. 변환 모듈(1) 및 양자화 모듈(53)에 의해 발생되는 잔차의 양자화된 변환된 인덱스들은 물론, 예측 모듈(41, 43)에서 사용되는 예측의 표시 및 인터 예측 모듈(43)에 의해 발생되는 임의의 움직임 벡터들 모두가 인코딩된 비디오 스트림(33)에 포함시키기 위해 출력되고(도 3의 요소(34)를 참조), 골롬(Golomb) 인코더 또는 엔트로피 인코더와 같은 추가의 무손실 인코딩 스테이지를 통해 움직임 벡터들 및 변환된 양자화된 인덱스들이 본 기술 분야에 공지된 무손실 인코딩 기법들을 사용하여 추가로 압축될 수 있다.
양자화된 변환된 신호의 인스턴스는 또한, 인코딩되고 있는 현재 대상 블록이 이전에 인코딩된 블록의 역양자화되고 역변환된 버전에 기초하여 예측된 것과 동일한 방식으로, 선택된 예측 모듈(41 또는 43)이 인코딩될 후속 블록을 예측하는 데 사용하기 위한 (디코더에서 보이게 될) 블록의 예측된 버전을 발생시키기 위해, 역양자화기(63) 및 역변환 모듈(61)을 통해 피드백된다. 스위치(47)는 역양자화기(63)의 출력을, 현재 인코딩되고 있는 프레임 또는 블록에 대해 사용되는 인코딩에 적절한, 인트라 예측 모듈(41) 또는 인터 예측 모듈(43) 중 어느 하나의 입력부로 전달하도록 구성되어 있다.
도 5는 수신측 단말(22) 상에서 구현될 수 있는 것과 같은 디코더를 예시하는 블록도이다. 디코더는 무손실 인코딩의 역(95), 역양자화 스테이지(83), 역DCT 변환 스테이지(81), 스위치(70), 및 인트라 예측 스테이지(71) 및 움직임 보상 스테이지(73)를 포함한다. 이 모듈들 또는 스테이지들 각각은 수신측 단말의 저장 매체(24) 상에 저장되고 그의 처리 장치(26) 상에서 실행되도록 구성된 코드의 일부분으로서 구현될 수 있지만, 이들 중 일부 또는 전부가 전체적으로 또는 부분적으로 전용 하드웨어 회로부에서 구현될 가능성이 배제되지 않는다.
역양자화기(83)는, 수신기(28) 및 역 무손실 코딩 스테이지(95)를 통해, 인코더로부터 인코딩된 신호(33)를 수신하도록 구성되어 있다. 역양자화기(83)는 인코딩된 신호 내의 양자화 인덱스들을 잔차 신호(잔차 블록들을 포함함)의 역양자화된 샘플들로 변환하고, 역양자화된 샘플들을 역DCT 모듈(81)로 전달하고, 역양자화된 샘플들은 역DCT 모듈(81)에서 다시 주파수 영역으로부터 공간 영역으로 변환된다. 스위치(70)는 이어서 역양자화된 공간 영역 잔차 샘플들을, 디코딩되고 있는 현재 프레임 또는 블록에 대해 사용되는 예측 모드에 적절하게, 인트라 예측 모듈(71) 또는 인터 예측 모듈(73)로 전달하고, 인트라 또는 인터 예측 모듈(71, 73)은 블록들을 디코딩하기 위해, 각각, 인트라 또는 인터 예측을 사용한다. 어느 모드를 사용할지는 인코딩된 비트스트림(33)에서 인코딩된 샘플들(34)과 함께 수신되는 예측의 표시 및/또는 임의의 움직임 벡터를 사용하여 결정된다. 이 스테이지로부터 계속하여, 디코딩된 블록들이 수신측 단말(22)에 있는 화면(25)을 통해 재생되기 위해 출력된다.
언급된 바와 같이, 종래의 표준들에 따른 코덱들은 1/4 화소의 분해능으로 움직임 예측을 수행하고, 이는 움직임 벡터가 또한 1/4 화소 스텝으로 표현된다는 것을 의미한다. 1/4 화소 분해능 움직임 추정의 일 예가 도 6에 도시되어 있다. 이 예에서, 대상 블록의 좌측 상부 코너에 있는 화소(p)는 화소들(a, b, c 및 d) 간의 보간으로부터 예측되고, 대상 블록의 다른 화소들은 또한, 하나의 프레임에서의 대상 블록과 다른 프레임에서의 참조 부분(이 블록들은 도 6에서 굵은 점선으로 도시되어 있음) 사이의 오프셋에 따라, 참조 프레임에서의 각자의 화소 그룹들 간의 유사한 보간에 기초하여 예측될 것이다. 그렇지만, 이러한 세분성(granularity)으로 움직임 추정을 수행하는 것은 이하에서 논의되는 바와 같은 결과를 갖는다.
무손실 코더(65) 및 무손실 디코더(95)를 참조하면, 무손실 코딩은 (양자화와 같이) 정보를 버리는 것이 아니라 상이한 값들을, 무손실 인코딩 스테이지(65)에 의해 인코딩될 데이터에서 그 값이 나올 가능성이 얼마나 되는지 또는 그 값이 얼마나 자주 나오는지에 따라, 표현하기 위해 상이한 길이의 코드워드를 사용하여 행해지는 압축의 한 형태이다. 예를 들어, 코드워드에서 1을 만나기 전에 앞쪽에 있는 0의 개수는 코드워드의 길이를 나타낼 수 있고, 따라서 1은 가장 짧은 코드워드이고, 010 및 011은 그 다음으로 가장 짧은 것이며, 이어서 00100 기타 등등이다. 이와 같이 가장 짧은 코드워드는 균일한 코드워드 길이가 사용되는 경우에 요구되는 것보다 훨씬 더 짧지만, 가장 긴 것은 그보다 더 길다. 그러나 가장 빈번한 또는 가장 가능성이 많은 값을 가장 짧은 코드워드에 할당하고 가장 가능성이 적거나 가장 덜 빈번히 나오는 값을 보다 긴 코드워드에 할당하는 것에 의해, 그 결과 얻어진 비트스트림(33)은 평균적으로 균일한 코드워드 길이가 사용되는 경우보다 인코딩된 값마다 보다 적은 비트를 유발시킬 수 있고, 이와 같이 어떤 추가 정보도 버리는 일 없이 압축을 달성할 수 있다.
무손실 인코딩 스테이지(65) 이전의 인코더(40)의 많은 부분은 무손실 코딩 스테이지(65)를 통과하기 전에 많은 수의 값들을 가능한 한 작게 만들도록 설계되어 있다. 그러면 보다 작은 값들이 보다 자주 나오기 때문에, 보다 작은 값들은 인코딩된 비트스트림(33)에서 보다 큰 값들보다 더 낮은 비트레이트를 유발시킬 것이다. 이러한 이유는 잔차가 절대 샘플과 달리 인코딩되기 때문이다. 이는 또한 변환(51)을 뒷받침하는 근거인데, 그 이유는 많은 샘플들이 변환 영역에서 영 또는 작은 계수로 변환되는 경향이 있기 때문이다.
유사한 고려사항이 움직임 벡터의 인코딩에 적용될 수 있다.
예를 들면, H.264/MPEG-4 Part 10 및 H.265/HEVC에서, 움직임 벡터는 지수 골롬 코딩(Exponential Golomb Coding)으로 인코딩된다. 하기의 표는 움직임 벡터 값과 인코딩된 비트를 보여주고 있다.
값 코드워드 유발된 비트 수
0 1 1
1 010 3
2 011 3
3 00100 5
4 00111 5
5 0001000 7
...
상기 표로부터, 값이 클수록, 많은 비트가 사용된다는 것을 알 수 있다. 이것은 움직임 벡터의 분해능이 높을수록, 많은 비트가 유발된다는 것을 의미한다. 예컨대, 따라서 1/4 화소 분해능의 경우, 1 화소의 오프셋이 4의 값으로 표현되어야만 하고, 인코딩된 비트스트림에 5 비트를 유발시킨다.
(카메라로부터 포착되는) 비디오를 인코딩함에 있어서, 움직임 벡터에서의 이 분해능의 비용은 가치있는 일일 수 있는데, 그 이유는 보다 세밀한 분해능이 보다 낮은 비용의 잔차 참조(residual reference)의 검색에서 보다 많은 기회를 제공할 수 있기 때문이다. 그렇지만, 장면으로부터 포착되는 동영상에 대해, 공간 변위의 대부분은 완전 화소 변위(full pixel displacement)인 경향이 있고 소수 화소 위치에 있는 경향이 있는 공간 변위는 거의 없으며, 따라서 움직임 벡터의 대부분이 정수 화소 값을 가리키는 경향이 있고, 소수 화소 값을 가리키는 경향이 있는 움직임 벡터는 거의 없다는 것이 본원에서 관찰된다.
이러한 것에 기초하여, 화면으로부터 포착된 영상 데이터에 대한 움직임 벡터를 1 화소의 분해능으로 인코딩하는 것이 바람직할 수 있다. 이러한 콘텐츠에 대한 움직임 벡터의 소수 부분에 비트가 소비될 필요가 없다는 사실을 고려하면, 이것은 이러한 콘텐츠를 인코딩하는 데 유발되는 비트 레이트가 감소될 수 있다는 것을 의미한다.
예를 들어, 인코더가 보통 비트스트림에서의 움직임 벡터를 1/4 화소 오프셋의 단위로 해석하지만, 인코더는 사실 이 분해능을 포기하고 그 대신에 화면 코딩 응용 분야에 대한 움직임 벡터를 정수 화소 오프셋의 단위로 인코딩함으로써 비트 레이트를 종종 절감할 수 있다. 이는 움직임 벡터의 정밀도를 4배만큼 감소시킬 것이지만, 이러한 정밀도는 일반적으로 화면 공유 또는 기록 응용 분야에 대해 덜 가치있고, 이것은 또한 벡터를 코딩하는 데 필요한 비트 수를 감소시킨다. 현재 (대상) 블록을 대상 블록으로부터 1 화소 좌측에 있는 참조 블록으로부터 예측하기 위해, 움직임 벡터는 (4,0) 대신에 (1,0)일 것이다. 상기 골롬 인코딩을 사용하여, 이것은 움직임 벡터를 인코딩하는 데 유발된 비트가 (00111, 1)로부터 (010, 1)로 변하고, 따라서 이 경우에 2 비트가 절감된다.
게다가, 실시예에서, 감소된 분해능의 움직임 벡터는 또한, 움직임 벡터 검색을 정수 값으로 제한함으로써, 인코더에서 수행되는 움직임 추정의 복잡도를 감소시키고, 따라서 검색에서 필요한 처리 자원을 감소시킨다. 대안적으로, 일반 검색을 수행하고 그 결과 얻어진 움직임 벡터를 정수 값으로 반올림하는 것이 가능할 것이다.
도 7은 완전 화소(whole pixel)의 분해능으로만 제약된 움직임 예측 - 움직임 벡터가 완전 화소 스텝(whole pixel step)으로만 제약됨 - 의 일 예를 나타낸 것이다. 도 6과 달리, 화소(p)은 어떤 보간도 없이 단일의 완전 화소(a)로부터만 예측된다. 화소(p)이 대안적으로 하나의 프레임에서의 대상 블록과 다른 프레임에서의 참조 부분(다시 말하지만, 굵은 점선으로 도시되어 있음) 사이의 오프셋에 따라 화소(b, c, d) 또는 다른 화소로부터 예측될 수 있을 것이지만, 제약조건으로 인해, 화소(p)이 화소들 사이의 보간으로부터 예측될 수 없을 것이다. 주의점: 임의의 주어진 블록에 대해, 도 6에 예로서 예시된 바와 같은 1/4 화소 예측은, 그것이 가장 낮은 잔차를 제공했다면, 어떤 보간도 없이 완전 화소 오프셋을 우연히 발생시켰을 수 있다. 그렇지만, 이는 그렇게 하는 것으로 제약되지 않을 것이고, 상당한 크기의 영상에 걸쳐, 모든 블록에 대해 우연히 그러할 가능성은 거의 없을 것이다.
소수 움직임 벡터 값이 카메라 포착 콘텐츠에 대해 여전히 아주 유용할 수 있다는 것을 고려하여, 실시예에서, 인코더(40)는 움직임 예측 모듈(43)에 결합된 제어기(50)를 구비하고, 제어기(50)는 움직임 벡터 분해능을 유연한 방식으로 선택하도록 구성되어 있고, 소스 데이터가 포착된 화면(17)으로부터 온 것이고 소수 화소 움직임이 없을 때, 움직임 벡터는 완전 화소의 단위로만 인코딩되고 전송되지만; 카메라 콘텐츠 비디오에 대해, 움직임 벡터는 여전히 소수 화소 정밀도로 인코딩되고 전송된다.
이것을 하기 위해, 제어기(50)는 포착되고 있는 콘텐츠의 유형이 화면 콘텐츠라는 사실을 나타내는 성능 휴리스틱(performance heuristic)을 측정하도록 구성될 수 있다. 그에 응답하여, 제어기는 이어서 화면 콘텐츠 코딩에 대한 소수 화소 움직임 보상을 디스에이블시킨다. 대안적으로, 제어기(50)는 애플리케이션 또는 운영 체제가 어떤 유형의 데이터를 인코딩을 위해 인코더에 공급하고 있는지에 관한 표시를 애플리케이션 또는 운영 체제로부터 수신할 수 있고, 제어기(50)는 그에 기초하여 모드를 선택할 수 있다. 다른 옵션으로서, 제어기(50)가 과거 데이터에 기초하여 선택을 할 수 있다. 선택이 프레임 단위로 행해질 수 있거나, 모드가 프레임 내의 상이한 영역들에 대해 개별적으로(예컨대, 슬라이스 단위로) 선택될 수 있다.
이와 같이, 프레임 또는 슬라이스를 인코딩하기 전에, 인코더는 과거 통계 데이터, 그의 적용 유형에 대해 알고 있는 것, 다중 패스 분석(multi-pass analysis), 또는 어떤 다른 이러한 기법과 같은 인자들에 기초하여 움직임 벡터 분해능을 결정할 수 있다. 인코더가 완전 화소 움직임 추정(full pixel motion estimation)만을 사용하기로 결정하면, 소수 화소 검색(fractional pixel search)이 생략된다. 스케일링된 움직임 벡터 예측이 소수 부분을 가지면, 예측이 정수 값으로 반올림된다.
추가의 실시예에서, 제어가 임의로 벡터의 수직 또는 수평 성분에 개별적으로 적용될 수 있다. 이것은 수평으로 또는 수직으로 스케일링되는 화면 비디오를 인코딩하는 데 유용할 수 있다.
움직임 벡터를 감소된 분해능 스케일로 정수 화소의 단위 또는 스텝으로 표현하고 따라서 종래의 코덱보다 연관된 비트레이트 절감을 달성하기 위해, 장래의 코덱 표준에 대해 움직임 벡터를 신호하기 위한 프로토콜이 업데이트되어야만 할 것이다. 실시예에서, 이것은 H.265(HEVC(High Efficiency Video Coding)) 표준에 대한 업데이트로서 구현될 수 있다. 포착된 화면 콘텐츠를 인코딩하는 데 있어서, 인코딩된 데이터(34)의 포맷은 각각의 움직임 벡터에 대한 감소된 크기의 움직임 벡터 필드를 부여받을 것이다. 정수 화소 모드로 인코딩되는 인코딩된 화면 포착 스트림에 대해, 관련 데이터(34)는 따라서 비트스트림(33)에서의 정수 움직임 벡터 그리고 실시예에서 비트스트림(33)에서의 정수 움직임 벡터만을 포함할 것이다.
실시예에서, 이것은 임의적이고, 연관된 프레임 또는 슬라이스의 인코딩에서 소수 화소(예컨대, 1/4 화소) 분해능 또는 정수 화소 분해능이 사용되고 있는지를 나타내는 플래그(37)가 또한 헤더(36)에 포함된다(도 3을 다시 참조할 것). 수평 분해능 및 수직 분해능이 개별적으로 선택될 수 있으면, 프레임 또는 슬라이스마다 2 개의 플래그(37)가 필요할 것이다.
대안적으로, 실시예에서, 정수 화소 움직임 벡터를 구현하기 위해 기존의 표준의 프로토콜을 업데이트하는 것이 필요하지 않다. 그 대신에, 움직임 벡터가 정수 오프셋으로 제한될 수 있지만, 이 정수 움직임 벡터가 그럼에도 불구하고 인코딩된 비트스트림(33)에 종래의 소수(예컨대, 1/4 화소) 스케일로 표현될 수 있다. 따라서, 1/4 화소 분해능의 경우에, 하나의 완전 화소의 오프셋이 여전히 종래의 방식으로 4의 값(예컨대, 코드워드 00111)에 의해 표현될 것이지만, 인코더에서 적용되는 제약조건으로 인해, 예컨대, 3/4 화소이 3의 값(코드워드 00100)에 의해 표현될 가능성은 없을 것이다. 이 경우에, 정수 움직임 벡터의 비트레이트 절감이 달성되지 않지만, 움직임 벡터 검색의 복잡도를 정수 오프셋으로 제한함으로써 처리 자원이 여전히 절감될 수 있다.
이하는 H.265 표준에 대한 업데이트에 기초한 예시적인 실시예를 개시한다. 수정은 움직임 벡터가 인코딩된 비트스트림(33)에서 감소된 정수 화소 스케일로 표현될 수 있게 하고, 움직임 벡터의 분해능을 그의 수평 성분 및 수직 성분으로 신호하기 위해 압축된 스트림의 헤더 정보(36)에 슬라이스당 2 개의 플래그(37)를 부가한다.
수정은 구문 또는 파싱 프로세스를 변경할 필요가 없고, 움직임 벡터 차분을 정수로 해석하고 스케일링된 MV 예측자(MV predictor)를 정수 값으로 반올림함으로써 디코딩 프로세스를 수정한다. 수정은 테스트되는 화면 콘텐츠 시퀀스에 대해 코딩 효율을 7%만큼이나 그리고 평균적으로 약 2%만큼 증가시키는 것으로 밝혀졌고, 또한 인코딩 및 디코딩 프로세스의 복잡도를 감소시킬 수 있다.
움직임 벡터의 해석을 위한 분해능을 나타내기 위해 상위 레벨 지시자가 (SPS, PPS, 및/또는 슬라이스 헤더 레벨에서) 추가된다.
디코딩 프로세스에서, 움직임 벡터가 완전 화소 분해능으로 되어 있는 것으로 표시되고 스케일링된 움직임 벡터 예측이 소수 부분을 갖는다면, 예측이 정수 값으로 반올림된다. 움직임 벡터 차분이 단순히 1/4 샘플 오프셋이 아니라 정수 오프셋으로서 해석된다. 모든 다른 디코딩 프로세스는 동일한 채로 있다. (헤더 레벨 아래에서의) 파싱 프로세스도 변하지 않는다. 움직임 벡터가 완전 샘플 정밀도(full-sample precision)로 코딩되고 입력 영상 데이터가 4:2:2 또는 4:2:0 샘플링을 사용할 때, 크로마 움직임 벡터가 1/2 샘플 크로마 움직임 변위를 생성할 통상의 방식으로 도출될 수 있다. 대안적으로, 크로마 움직임 벡터가 또한 정수 값으로 반올림될 수 있다.
앞서 언급된 스케일링은 HEVC(H.265)에서 일어나는 무언가이다. 발상은, 움직임 벡터가 어떤 다른 프레임을 코딩하기 위해 사용되는 경우, 움직임 벡터가 (i) 현재 픽처와 (ii) 그의 참조 픽처 사이의 상대 위치 변위(relative positioning displacement)의 측면에서 동등하게 될 움직임 벡터로 계산될 수 있다는 것이다. 이것은 다른 픽처의 동일 장소에 있는 부분에서 움직임 벡터에 의해 표시되는 변위의 상대 위치에 기초하고, (iii) 그 픽처와 (iv) 그 픽처가 그의 참조 픽처로서 참조하고 있었던 픽처 사이의 상대 위치 변위에 기초한다. 유의할 점은, 코딩된 데이터의 시간 프레임 레이트가 항상 일정한 것은 아니고, 또한 픽처들이 비트스트림에 코딩되는 순서와 픽처들이 포착되어 디스플레이되는 순서 사이에 차이가 있을 수 있고, 따라서 이 시간적 관계가 계산되고 이어서 움직임 벡터가 기본적으로 동일한 방향에서 동일한 움직임 속도를 나타내도록 움직임 벡터를 스케일링하는 데 사용될 수 있다는 것이다. 이것은 시간 움직임 벡터 예측(temporal motion vector prediction)이라고 알려져 있다.
다른 가능한 것은 정수 움직임만을 사용할 때마다 시간 움직임 벡터 예측을 디스에이블하는 것일 수 있다. 인코더로 하여금 그 특징의 사용을 디스에이블하게 하는 구문이 HEVC에 이미 있다. 그것은 디코더가 차분이 정수로 또는 소수 값으로 코딩되는지에 따라 상이한 방식으로 동작하는 특별한 프로세스를 가질 필요가 없게 하는 가능한 방식일 것이다. 이 사용 사례에서 어쨋든 시간 움직임 벡터 예측으로부터 획득되는 이득이 작을 수 있고(또는 영일 수 있고), 따라서 그것을 디스에이블하는 것이 바람직하지 않을 필요는 없다.
구문 변화와 관련하여, 움직임 벡터 분해능 제어 모드를 나타내기 위해 새로운 2-비트 지시자(motion_vector_resolution_control_idc라고 지칭될 수 있음)가 PPS 확장에 포함될 것이다. 3 개의 모드가 정의된다. 모드가 0일 때, 움직임 벡터는 1/4 화소 정밀도로 인코딩되고, 모든 디코딩 프로세스는 변하지 않은 채로 있다. 모드가 1일 때, PPS를 참조하는 슬라이스에서의 모든 움직임 벡터는 완전 화소 정밀도(full pixel precision)로 인코딩된다. 그리고 모드가 2일 때, 움직임 벡터 분해능이 슬라이스 헤더 내의 플래그에 의해 슬라이스 단위로 제어된다. motion_vector_resolution_control_idc가 존재하지 않을 때, 그의 값은 0으로서 추론된다.
motion_vector_resolution_control_idc가 2일 때, slice_motion_vector_resolution_flag라고 불리우는 부가의 플래그가 슬라이스 헤더에서 신호된다. 이 플래그가 0일 때, 이 슬라이스의 움직임 벡터는 1/4 화소 정밀도로 인코딩되고, 이 플래그가 1일 때, 움직임 벡터는 완전 화소 정밀도로 인코딩된다. 이 플래그가 존재하지 않을 때, 그의 값은 motion_vector_resolution_control_idc의 값과 같은 것으로 추론된다.
수정된 PPS 구문이 이하에 예시되어 있다:
Figure pct00001
수정된 슬라이스 헤더 구문이 이하에 예시되어 있다:
Figure pct00002
이상의 실시예들이 단지 예로서 기술되어 있다는 것을 잘 알 것이다.
예를 들면, 이상의 설명이 블록의 측면에서 기술되어 있지만, 이것이 꼭 임의의 특정 표준에서 블록이라고 불리우는 구획으로 제한하는 것은 아니다. 예를 들어, 본원에서 언급되는 블록은 H.26x 표준에서 블록 또는 매크로블록이라고 불리우는 구획일 수 있다.
본 개시 내용의 범주가 임의의 특정 코덱 또는 표준으로 제한되고, 일반적으로 본원에 개시된 기법이, H.264 또는 H.265와 같은 H.26x 표준이든 임의의 다른 표준이든 간에, 기존의 표준 또는 기존의 표준에 대한 업데이트와 관련하여 구현될 수 있거나, 맞춤 코덱에서 구현될 수 있다. 게다가, 본 개시 내용의 범주가 비디오 샘플들의 임의의 특정의 표현으로 구체적으로 제한되지 않는다(RGB, YUV 또는 다른 것으로 되어 있든 관계 없음). 그 범주가 임의의 특정의 양자화로도 DCT 변환으로도 제한되지 않는다. 예컨대, KLT(Karhunen-LoeveTransform)와 같은 대안의 변환이 사용될 수 있거나, 어떤 변환도 사용되지 않을 수 있다. 게다가, 본 개시 내용이 VoIP 통신 또는 임의의 특정의 종류의 네트워크를 통한 통신으로 제한되지 않고, 데이터를 전달할 수 있는 임의의 네트워크 또는 매체에서 사용될 수 있을 것이다.
움직임 벡터 오프셋이 정수 개의 화소 등으로 제한되거나 제한되지 않은 것으로 말해지는 경우에, 이것은 색 공간 채널들의 임의의 하나 또는 2 개의 색 공간 채널에서의 움직임 추정, 또는 3 개의 색상 채널 모두에서의 움직임 추정을 지칭할 수 있다.
게다가, 청구된 실시예가 인코딩된 비디오 및/또는 화면 포착 스트림이 네트워크를 통해 전송되는 응용 분야로도 제한되지 않고, 스트림이 라이브 스트림인 응용 분야로도 제한되지 않는다. 예를 들어, 다른 응용 분야에서, 스트림은 광 디스크, 하드 드라이브 또는 다른 자기 저장소, 또는 "플래시" 메모리 스틱 또는 다른 전자 메모리와 같은 저장 디바이스 상에 저장될 수 있다. 유의할 점은, 따라서 화면 공유 스트림이 꼭 라이브 공유(live sharing)를 의미할 필요는 없다는 것이다(그렇지만, 그것이 하나의 옵션인 것은 확실하다). 대안적으로 또는 그에 부가하여, 화면 공유 스트림이 나중에 하나 이상의 다른 사용자와 공유하기 위해 저장될 수 있거나, 포착된 영상 데이터가 공유되지 않고 오히려 그 때에 화면을 사용하고 있던 사용자를 위해 단지 기록될 수 있다. 일반적으로, 화면 포착은 하나 이상의 다른 사용자와 공유될(라이브이거나 그렇지 않음) 또는 포착하는 사용자를 위해 또는 단지 보관을 위해(어쩌면 그것이 밝혀질 수 있기 때문에 결코 실제로 다시는 보여지지 않도록) 단순히 기록될, 임의의 적당한 수단에 의해(꼭 화면 버퍼로부터 판독하는 것에 의할 필요는 없지만, 그것이 하나의 옵션임) 포착되는, 포착된 인코더측 화면 콘텐츠로 이루어져 있는 임의의 동영상 데이터일 수 있다.
또한 유의할 점은, 코덱이 화면 포착 데이터 및 비디오만을 인코딩하는 것으로 꼭 제한될 필요는 없다는 것이다. 실시예에서, 코덱이 또한 다른 유형의 동영상 데이터(예컨대, 애니메이션)을 인코딩할 수 있을 것이다. 이러한 다른 유형의 동영상 데이터가 소수 화소 모드 또는 정수 화소 모드로 인코딩될 수 있다. 다른 실시예에서, 화면 포착 스트림만을 인코딩하는 데 전용되어 있고 고정된 정수 화소 분해능을 갖는 특수 코덱이 구현될 수 있을 것이다.
게다가, 유의할 점은, 인터 프레임 인코딩이 꼭 항상 이전 프레임을 기준으로 하여 인코딩할 필요가 없고, 보다 일반적으로 일부 코덱이 대상 프레임 이외의 (대상 프레임에 선행하거나 그 앞에 있는) 상이한 프레임을 기준으로 한 인코딩을 가능하게 할 수 있다는 것이다(적당한 나가는 버퍼를 가정함).
게다가, 유의할 점은, 움직임 벡터 자체가 종종 차분 방식으로 인코딩될 수 있다는 것이다. 움직임 벡터가 정수 개의 화소 등으로 제한되는 것으로 말해지는 이러한 경우에, 이것은 차분 방식으로 인코딩된 형태의 움직임 벡터가 그렇게 제한된다는 것을 의미한다.
게다가, 디코더가 꼭 최종 사용자 단말에 구현될 필요는 없고, 수신측 단말에서의 즉각적인 소모를 위해 동영상 데이터를 출력할 필요도 없다. 대안의 구현에서, 수신측 단말은 동영상 데이터를 디코딩된 또는 트랜스코딩된 형태로 다른 단말로 출력하기 위해 또는 디코딩된 데이터를 나중에 소비하기 위해 저장하기 위해, 디코더 소프트웨어를 실행하는 서버와 같은 중간 단말일 수 있다. 이와 유사하게, 인코더가 최종 사용자 단말에 구현될 필요는 없고, 전송측 단말로부터 나오는 동영상 데이터를 인코딩할 필요도 없다. 다른 실시예에서, 전송측 단말은, 예를 들어, 다른 단말로부터 인코딩되지 않거나 대안적으로 인코딩된 형태로 동영상 데이터를 수신하고 그 데이터를, 서버에 저장하거나 수신측 단말로 포워딩하기 위해, 인코딩 또는 트랜스코딩하기 위해, 인코더 소프트웨어를 실행하는 서버와 같은 중간 단말일 수 있다.
일반적으로, 본원에 기술되는 기능들 중 임의의 것이 소프트웨어, 펌웨어, 하드웨어(예컨대, 고정 논리 회로부(fixed logic circuitry)), 또는 이 구현들의 조합을 사용하여 구현될 수 있다. "모듈", "기능", "구성요소" 및 "논리"라는 용어는, 본원에서 사용되는 바와 같이, 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우에, 모듈, 기능, 또는 논리는 프로세서(예컨대, CPU 또는 CPU들) 상에서 실행될 때 지정된 작업들을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능 메모리 디바이스들에 저장될 수 있다. 이하에 기술되는 기법들의 특징들이 플랫폼 독립적(platform-independent)이며, 플랫폼 독립적이라는 것은 기법들이 각종의 프로세서들을 가지는 각종의 상용 컴퓨팅 플랫폼들에서 구현될 수 있다는 것을 의미한다.
예를 들어, 단말들은 사용자 단말들의 하드웨어로 하여금 동작들(예컨대, 프로세서 기능 블록들 등)을 수행하게 하는 엔티티(예컨대, 소프트웨어)를 포함할 수 있다. 예를 들어, 단말들은 사용자 단말들, 그리고 보다 상세하게는 사용자 단말들의 운영 체제 및 연관된 하드웨어로 하여금 동작들을 수행하게 하는 명령어들을 유지하도록 구성될 수 있는 컴퓨터 판독 가능 매체를 포함할 수 있다. 이와 같이, 명령어들은 운영 체제 및 연관된 하드웨어를 동작들을 수행하도록 구성하고 이러한 방식으로 운영 체제 및 연관된 하드웨어를 기능들을 수행하도록 변환시키는 기능을 한다. 명령어들은 각종의 상이한 구성들을 통해 컴퓨터 판독 가능 매체에 의해 단말들에 제공될 수 있다.
컴퓨터 판독 가능 매체의 하나의 이러한 구성은 신호 전달 매체(signal bearing medium)이고, 따라서 네트워크를 통하는 등에 의해, 명령어들을 (예컨대, 반송파로서) 컴퓨팅 디바이스로 전송하도록 구성되어 있다. 컴퓨터 판독 가능 매체는 또한 컴퓨터 판독 가능 저장 매체로서 구성될 수 있고, 따라서 신호 전달 매체가 아니다. 컴퓨터 판독 가능 저장 매체의 예는 RAM(random-access memory), ROM(read-only memory), 광 디스크, 플래시 메모리, 하드 디스크 메모리, 그리고 명령어들 및 다른 데이터를 저장하기 위해 자기, 광, 및 다른 기법들을 사용할 수 있는 다른 메모리 디바이스들을 포함한다.
발명 요지가 구조적 특징들 및/또는 방법적 동작들과 관련하여 기술되어 있지만, 첨부된 청구범위에 한정되어 있는 발명 요지가 앞서 기술된 구체적인 특징들 또는 동작들로 꼭 제한될 필요는 없다는 것을 잘 알 것이다. 오히려, 앞서 기술된 구체적인 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.

Claims (15)

  1. 인코더로서,
    인코딩될 프레임들의 시퀀스를 포함하는 동영상 데이터를 수신하기 위한 입력부로서, 각각의 프레임은 2 개의 차원에서 복수의 블록들을 포함하고 각각의 블록은 상기 2 개의 차원에서 복수의 화소들을 포함하는 것인, 상기 입력부와,
    복수의 상기 프레임들의 각각의 프레임의 적어도 일부에 대해, 상기 시퀀스의 다른 프레임의 각자의 참조 부분 - 상기 각자의 참조 부분은 각자의 움직임 벡터만큼 상기 블록으로부터 오프셋되어 있음 - 을 기준으로 하여 각각의 블록을 코딩하는 것에 의해 상기 동영상 데이터를 인코딩하는 데 사용하기 위한 움직임 예측 모듈
    을 포함하며,
    상기 복수의 프레임들의 상기 동영상 데이터는 화면 포착 스트림(screen capture stream)을 포함하고, 상기 움직임 예측 모듈은 상기 화면 포착 스트림의 상기 움직임 벡터들 각각을 상기 차원들 중 적어도 하나의 차원에서 정수 개의 화소들로 제한하도록 구성되는 것인 인코더.
  2. 제1항에 있어서, 상기 인코더는 상기 차원들 중 적어도 하나 차원에서 상기 움직임 벡터가 정수 개의 화소들로 제한되지 않는 제1 모드와 상기 움직임 벡터가 정수 개의 화소들로 제한되는 제2 모드 사이에서 상기 움직임 예측 모듈을 스위칭하도록 동작 가능한 제어기를 포함하고, 상기 제어기는 현재 인코딩되고 있는 상기 동영상 데이터가 화면 포착 스트림을 포함한다고 결정하는 것에 따라 상기 움직임 예측 모듈을 상기 제2 모드로 스위칭하도록 구성되는 것인 인코더.
  3. 제2항에 있어서, 상기 동영상 데이터는 상기 화면 포착 스트림 및 비디오 스트림을 포함하고,
    상기 제어기는 현재 인코딩되고 있는 상기 동영상 데이터가 상기 화면 포착 스트림인지 상기 비디오 스트림인지를 결정하고, 상기 화면 포착 스트림이면, 상기 움직임 예측 모듈을 상기 제2 모드로 설정하며, 상기 비디오 스트림이면, 상기 움직임 예측 모듈을 상기 제2 모드로 설정하도록 구성되는 것인 인코더.
  4. 제2항 또는 제3항에 있어서, 상기 복수의 프레임들의 각각의 프레임은 복수의 영역들로 분할되고, 각각의 영역은 복수의 블록들을 포함하며, 상기 제어기는, 상기 영역이 화면 포착 데이터로 이루어져 있으면 상기 제2 모드로 그리고 상기 영역이 다른 유형의 동영상 데이터로 이루어져 있으면 상기 제1 모드로 스위칭하여, 상기 영역들의 각각의 개별 영역에 대해 상기 제1 모드와 상기 제2 모드 중에서 선택하도록 구성되는 것인 인코더.
  5. 제2항, 제3항 또는 제4항 중 어느 한 항에 있어서, 상기 제2 모드에서, 상기 움직임 벡터는 상기 차원들의 각각의 차원에서 정수 개의 화소들로 제한되는 것인 인코더.
  6. 제2항, 제3항 또는 제4항 중 어느 한 항에 있어서, 상기 제어기는 상기 차원들의 각각의 차원에서 개별적으로 상기 제2 모드를 적용할지를 선택하도록 구성되는 것인 인코더.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 움직임 예측 모듈에 의한 상기 코딩 이후에 상기 동영상 데이터를 무손실 코딩 기법에 따라 추가로 인코딩하도록 구성된 무손실 코딩 모듈(lossless coding module)을 더 포함하는 인코더.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 블록들은 H.26x 비디오 코딩 표준의 블록 또는 매크로블록인 것인 인코더.
  9. 제4항에 있어서, 상기 영역들은 H.26x 비디오 코딩 표준의 슬라이스이고, 상기 제어기는 슬라이스 단위로 상기 제1 모드와 상기 제2 모드 중에서 선택하도록 구성되는 것인 인코더.
  10. 동영상 데이터를 인코딩하기 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체 상에 담겨 있고, 실행될 때, 동작들을 수행하도록 구성되어 있으며, 상기 동작들은
    인코딩될 프레임들의 시퀀스를 포함하는 동영상 데이터를 수신하는 동작으로서, 각각의 프레임은 2 개의 차원에서 복수의 블록들을 포함하고 각각의 블록은 상기 2 개의 차원에서 복수의 화소들을 포함하는 것인 상기 동영상 데이터를 수신하는 동작과,
    복수의 상기 프레임들의 각각의 프레임의 적어도 일부에 대해, 상기 시퀀스의 다른 프레임의 각자의 참조 부분을 기준으로 하여 각각의 블록을 코딩하는 동작으로서, 상기 각자의 참조 부분은 각자의 움직임 벡터만큼 상기 블록으로부터 오프셋되어 있는 것인 상기 코딩하는 동작
    을 포함하고,
    상기 복수의 프레임들의 상기 동영상 데이터는 화면 포착 스트림을 포함하며, 상기 컴퓨터 프로그램 제품은 상기 화면 포착 스트림의 상기 움직임 벡터들 각각을 상기 차원들 중 적어도 하나의 차원에서 정수 개의 화소들로 제한하도록 구성되어 있는 것인 컴퓨터 프로그램 제품.
  11. 제10항에 있어서, 상기 차원들 중 적어도 하나 차원에서 상기 움직임 벡터가 정수 개의 화소들로 제한되지 않는 제1 모드와 상기 움직임 벡터가 정수 개의 화소들로 제한되는 제2 모드 사이에서 상기 움직임 예측 모듈을 스위칭하도록 동작 가능하고, 상기 컴퓨터 프로그램 제품은 현재 인코딩되고 있는 상기 동영상 데이터가 화면 포착 스트림을 포함한다고 결정하는 것에 따라 상기 움직임 예측 모듈을 상기 제2 모드로 스위칭하도록 구성되는 컴퓨터 프로그램 제품.
  12. 제11항에 있어서, 상기 동영상 데이터는 상기 화면 포착 스트림 및 비디오 스트림을 포함하고,
    상기 제어기는 현재 인코딩되고 있는 상기 동영상 데이터가 상기 화면 포착 스트림인지 상기 비디오 스트림인지를 결정하고, 상기 화면 포착 스트림이면, 상기 움직임 예측 모듈을 상기 제2 모드로 설정하며, 상기 비디오 스트림이면, 상기 움직임 예측 모듈을 상기 제2 모드로 설정하도록 구성되는 것인 컴퓨터 프로그램 제품.
  13. 제11항 또는 제12항에 있어서, 상기 복수의 프레임들의 각각의 프레임은 복수의 영역들로 분할되고, 각각의 영역은 복수의 블록들을 포함하며, 상기 컴퓨터 프로그램 제품은, 상기 영역이 화면 포착 데이터로 이루어져 있으면 상기 제2 모드로 그리고 상기 영역이 다른 유형의 동영상 데이터로 이루어져 있으면 상기 제1 모드로 스위칭하여, 상기 영역들의 각각의 개별 영역에 대해 상기 제1 모드와 상기 제2 모드 중에서 선택하도록 구성되는 것인 컴퓨터 프로그램 제품.
  14. 제11항, 제12항 또는 제13항 중 어느 한 항에 있어서, 상기 제2 모드에서, 상기 움직임 벡터는 상기 차원들의 각각의 차원에서 정수 개의 화소들로 제한되는 것인 컴퓨터 프로그램 제품.
  15. 제11항, 제12항 또는 제13항 중 어느 한 항에 있어서, 상기 컴퓨터 프로그램 제품은 상기 차원들의 각각의 차원에서 개별적으로 상기 제2 모드를 적용할지를 선택하도록 구성되는 것인 컴퓨터 프로그램 제품.
KR1020167021564A 2014-01-08 2014-12-19 화면 콘텐츠 데이터의 비디오 인코딩 KR102271780B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461925090P 2014-01-08 2014-01-08
US61/925,090 2014-01-08
US14/530,616 2014-10-31
US14/530,616 US9942560B2 (en) 2014-01-08 2014-10-31 Encoding screen capture data
PCT/US2014/071331 WO2015105661A1 (en) 2014-01-08 2014-12-19 Video encoding of screen content data

Publications (2)

Publication Number Publication Date
KR20160106155A true KR20160106155A (ko) 2016-09-09
KR102271780B1 KR102271780B1 (ko) 2021-06-30

Family

ID=53496197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167021564A KR102271780B1 (ko) 2014-01-08 2014-12-19 화면 콘텐츠 데이터의 비디오 인코딩

Country Status (11)

Country Link
US (1) US9942560B2 (ko)
EP (1) EP3075153B1 (ko)
JP (1) JP6576351B2 (ko)
KR (1) KR102271780B1 (ko)
CN (1) CN105900419B (ko)
AU (1) AU2014376189B2 (ko)
BR (1) BR112016015243B1 (ko)
CA (1) CA2935562C (ko)
MX (1) MX360925B (ko)
RU (1) RU2679349C1 (ko)
WO (1) WO2015105661A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
EP3457694A4 (en) * 2016-05-24 2019-05-22 Huawei Technologies Co., Ltd. IMAGE FORECASTING METHOD AND ASSOCIATED DEVICE
KR102543752B1 (ko) 2016-12-22 2023-06-14 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN108347602B (zh) * 2017-01-22 2021-07-30 上海澜至半导体有限公司 用于无损压缩视频数据的方法和装置
KR102559063B1 (ko) 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10674159B2 (en) * 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
SG11202012700UA (en) * 2018-06-28 2021-01-28 Huawei Tech Co Ltd Memory access window and padding for motion vector refinement and motion compensation
CN110166770B (zh) * 2018-07-18 2022-09-23 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质
JP7307191B2 (ja) 2019-04-01 2023-07-11 北京字節跳動網絡技術有限公司 履歴に基づく動きベクトル予測のための補間フィルタの使用
CN114270856A (zh) 2019-08-20 2022-04-01 北京字节跳动网络技术有限公司 视频处理中的备选插值滤波器的选择性使用

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040001544A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Motion estimation/compensation for screen capture video

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
EP0294958B1 (en) 1987-06-09 1995-08-23 Sony Corporation Motion compensated interpolation of digital television images
EP0294962B1 (en) 1987-06-09 1995-07-19 Sony Corporation Motion vector estimation in television images
DE69031107T2 (de) 1989-10-14 1997-11-13 Sony Corp Anordnung und Verfahren zum Übertragen eines Videosignals
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
KR950011200B1 (ko) 1990-10-31 1995-09-29 니뽕 빅터 가부시끼가이샤 인터레이스 동화상 신호의 압축 장치
JP3226539B2 (ja) 1991-05-24 2001-11-05 ブリティッシュ・ブロードキャスティング・コーポレーション ビデオ画像処理
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US5594813A (en) 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
PT1098529E (pt) 1993-03-24 2013-11-25 Sony Corp Método para codificar e descodificar vetores de movimento e respetivo dispositivo e método para codificar e descodificar sinais de imagem e respetivo dispositivo
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
TW283289B (ko) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
US5825929A (en) 1995-10-05 1998-10-20 Microsoft Corporation Transformation block optimization method
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5768537A (en) 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US5991447A (en) 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
KR100345423B1 (ko) 1997-03-31 2002-07-26 마츠시타 덴끼 산교 가부시키가이샤 동화상 표시 방법 및 그 장치
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
JP3129986B2 (ja) 1997-04-09 2001-01-31 日本車輌製造株式会社 杭施工機のトルク管理装置
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
US6574371B2 (en) 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
US6295376B1 (en) 1997-06-09 2001-09-25 Hitachi, Ltd. Image sequence coding method and decoding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
US6310918B1 (en) 1997-07-31 2001-10-30 Lsi Logic Corporation System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
US6020934A (en) 1998-03-23 2000-02-01 International Business Machines Corporation Motion estimation architecture for area and power reduction
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6259741B1 (en) 1999-02-18 2001-07-10 General Instrument Corporation Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
JP2000308064A (ja) 1999-04-22 2000-11-02 Mitsubishi Electric Corp 動きベクトル検出装置
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
CN1606880A (zh) 2001-12-20 2005-04-13 皇家飞利浦电子股份有限公司 视频编码和解码方法及设备
JP4401783B2 (ja) 2002-01-24 2010-01-20 株式会社日立製作所 動画像の符号化方法
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7110459B2 (en) 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US6980695B2 (en) * 2002-06-28 2005-12-27 Microsoft Corporation Rate allocation for mixed content video
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7072512B2 (en) * 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
EP1536647A1 (en) 2003-11-26 2005-06-01 STMicroelectronics Limited A video decoding device
KR100631777B1 (ko) 2004-03-31 2006-10-12 삼성전자주식회사 다 계층의 모션 벡터를 효율적으로 압축하는 방법 및 장치
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치
US8130825B2 (en) 2004-05-10 2012-03-06 Nvidia Corporation Processor for video data encoding/decoding
US7558428B2 (en) 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
JP4241588B2 (ja) 2004-11-30 2009-03-18 日本ビクター株式会社 動画像符号化装置、及び動画像復号化装置
WO2006124885A2 (en) 2005-05-12 2006-11-23 Kylintv, Inc. Codec for iptv
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US8155195B2 (en) 2006-04-07 2012-04-10 Microsoft Corporation Switching distortion metrics during motion estimation
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US7965767B2 (en) 2006-06-30 2011-06-21 Intel Corporation Two-dimensional filtering architecture
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
SG152082A1 (en) * 2007-10-19 2009-05-29 Creative Tech Ltd A method and system for processing a composite video image
US8279936B1 (en) 2007-12-11 2012-10-02 Marvell International Ltd. Method and apparatus for fractional pixel expansion and motion vector selection in a video codec
US20090168871A1 (en) * 2007-12-31 2009-07-02 Ning Lu Video motion estimation
US9584710B2 (en) * 2008-02-28 2017-02-28 Avigilon Analytics Corporation Intelligent high resolution video system
JP2009230537A (ja) 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
US8266665B2 (en) * 2008-03-25 2012-09-11 Verizon Patent And Licensing Inc. TV screen capture
US20090245374A1 (en) 2008-03-26 2009-10-01 Mediatek Inc. Video encoder and motion estimation method
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP5240530B2 (ja) * 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
US8295623B2 (en) 2008-10-14 2012-10-23 France Telecom Encoding and decoding with elimination of one or more predetermined predictors
TWI428022B (zh) * 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
US8428145B2 (en) 2008-12-31 2013-04-23 Entropic Communications, Inc. System and method for providing fast trick modes
US9472167B2 (en) * 2009-04-17 2016-10-18 International Business Machines Corporation Video capture through hardware
US8346915B2 (en) * 2009-05-04 2013-01-01 Qualcomm Incorporated System and method of recording and sharing mobile application activities
US8498493B1 (en) * 2009-06-02 2013-07-30 Imagination Technologies Limited Directional cross hair search system and method for determining a preferred motion vector
BRPI1012928A2 (pt) * 2009-06-09 2018-01-30 Sony Corp aparelho e método de processamento de imagem.
SI3448031T1 (sl) * 2009-06-18 2021-03-31 Kabushiki Kaisha Toshiba Naprava za video dekodiranje in postopek za video dekodiranje
US20110255589A1 (en) 2009-08-03 2011-10-20 Droplet Technology, Inc. Methods of compressing data and methods of assessing the same
KR20110017302A (ko) 2009-08-13 2011-02-21 삼성전자주식회사 움직임 벡터의 정확도 조절을 이용한 영상 부호화, 복호화 방법 및 장치
EP2489189A1 (en) 2009-10-14 2012-08-22 Thomson Licensing Methods and apparatus for adaptive coding of motion information
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
JP5617920B2 (ja) * 2010-06-04 2014-11-05 日本電気株式会社 通信システムと方法と装置
US20120008686A1 (en) 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
US20120051431A1 (en) 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US10327008B2 (en) 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US10045046B2 (en) 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
US9271005B2 (en) 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
WO2013002716A2 (en) 2011-06-30 2013-01-03 Telefonaktiebolaget L M Ericsson (Publ) A method a decoder and encoder for processing a motion vector
US10536701B2 (en) 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9521418B2 (en) 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
RU2583040C2 (ru) 2011-08-30 2016-05-10 Нокиа Текнолоджиз Ой Устройство, способ и компьютерная программа для кодирования и декодирования видеосигналов
RU2487489C2 (ru) * 2011-10-18 2013-07-10 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ поиска векторов перемещений в динамических изображениях
US9215266B2 (en) * 2012-01-26 2015-12-15 Zoom International S.R.O. System and method for zero-footprint screen capture
CN102740073B (zh) 2012-05-30 2015-06-17 华为技术有限公司 一种编码方法及装置
US9258562B2 (en) * 2012-06-13 2016-02-09 Qualcomm Incorporated Derivation of depth map estimate
US9338452B2 (en) 2012-07-09 2016-05-10 Qualcomm Incorporated Motion vector difference coding extension for enhancement layer
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040001544A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Motion estimation/compensation for screen capture video

Also Published As

Publication number Publication date
MX360925B (es) 2018-11-22
KR102271780B1 (ko) 2021-06-30
JP2017508348A (ja) 2017-03-23
BR112016015243A2 (ko) 2017-08-08
BR112016015243B1 (pt) 2023-03-14
US20150195557A1 (en) 2015-07-09
EP3075153A1 (en) 2016-10-05
JP6576351B2 (ja) 2019-09-18
WO2015105661A1 (en) 2015-07-16
CN105900419A (zh) 2016-08-24
AU2014376189A1 (en) 2016-07-14
CA2935562A1 (en) 2015-07-16
US9942560B2 (en) 2018-04-10
EP3075153B1 (en) 2021-06-02
CA2935562C (en) 2021-10-12
CN105900419B (zh) 2019-04-16
AU2014376189B2 (en) 2018-08-09
RU2679349C1 (ru) 2019-02-07
MX2016009023A (es) 2016-09-28

Similar Documents

Publication Publication Date Title
US11546629B2 (en) Representing motion vectors in an encoded bitstream
KR102271780B1 (ko) 화면 콘텐츠 데이터의 비디오 인코딩
US11166042B2 (en) Encoding/decoding with flags to indicate switching of color spaces, color sampling rates and/or bit depths
KR20160106703A (ko) 움직임 벡터 정밀도의 선택

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant