KR20230127361A - 움직임 벡터 정밀도의 선택 - Google Patents

움직임 벡터 정밀도의 선택 Download PDF

Info

Publication number
KR20230127361A
KR20230127361A KR1020237028185A KR20237028185A KR20230127361A KR 20230127361 A KR20230127361 A KR 20230127361A KR 1020237028185 A KR1020237028185 A KR 1020237028185A KR 20237028185 A KR20237028185 A KR 20237028185A KR 20230127361 A KR20230127361 A KR 20230127361A
Authority
KR
South Korea
Prior art keywords
precision
sample
video
encoder
fractional
Prior art date
Application number
KR1020237028185A
Other languages
English (en)
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 KR20230127361A publication Critical patent/KR20230127361A/ko

Links

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/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/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/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
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/142Detection of scene cut or scene change
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • 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
    • 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/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/177Methods 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 a group of pictures [GOP]
    • 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/179Methods 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 a scene or a shot
    • 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/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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 인코딩 동안 MV(motion vector) 정밀도를 선택하는 접근법이 제시된다. 이 접근법은 레이트 왜곡 성능 및/또는 계산 효율의 면에서 효과적인 압축을 용이하게 할 수 있다. 예를 들어, 비디오 인코더는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함하는 복수의 MV 정밀도 중에서 비디오의 유닛에 대한 MV 정밀도를 결정한다. 비디오 인코더는 소수 샘플 MV 정밀도를 가지는 MV 값 세트를 식별하고, 이어서 0의 소수 부분을 가지는 (세트 내에서의) MV 값들의 출현율에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택할 수 있다. 또는, 비디오 인코더가 레이트 왜곡 분석을 수행할 수 있고, 여기서 레이트 왜곡 분석은 정수 샘플 MV 정밀도 쪽으로 바이어스된다. 또는, 비디오 인코더는 비디오에 관한 정보를 수집하고, 수집된 정보에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택할 수 있다.

Description

움직임 벡터 정밀도의 선택{SELECTION OF MOTION VECTOR PRECISION}
엔지니어는 디지털 비디오의 비트 레이트(bit rate)를 감소시키기 위해 압축(compression)(소스 코딩(source coding) 또는 소스 인코딩(source encoding)이라고도 불리움)을 사용한다. 압축은 비디오 정보를 보다 낮은 비트 레이트 형태로 변환함으로써 비디오 정보를 저장하고 전송하는 비용을 감소시킨다. 압축 해제(decompression)(디코딩(decoding)이라고도 불리움)는 압축된 형태로부터 원래 정보(original information)의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다.
지난 20년에 걸쳐, ITU-T H.261, H.262(MPEG-2 또는 ISO/IEC 13818-2), H.263 및 H.264(MPEG-4 AVC 또는 ISO/IEC 14496-10) 표준, MPEG-1(ISO/IEC 11172-2) 및 MPEG-4 Visual(ISO/IEC 14496-2) 표준, 및 SMPTE 421M(VC-1) 표준을 비롯한, 다양한 비디오 코덱 표준이 채택되었다. 보다 최근에, HEVC 표준(ITU-T H.265 또는 ISO/IEC 23008-2)이 승인되었다. (예컨대, 스케일러블 비디오 코딩/디코딩(scalable video coding/decoding)에 대한, 샘플 비트 심도(sample bit depth) 또는 크로마 샘플링 레이트(chroma sampling rate)의 면에서 보다 높은 충실도(fidelity)를 갖는 비디오의 코딩/디코딩에 대한, 또는 멀티뷰 코딩/디코딩(multi-view coding/decoding)에 대한) HEVC 표준에 대한 확장이 현재 개발 중이다. 비디오 코덱 표준은 전형적으로, 특정의 특징이 인코딩 및 디코딩에서 사용될 때 비트스트림에서의 파라미터를 상세히 기술하는, 인코딩된 비디오 비트스트림의 구문(syntax)에 대한 옵션을 정의한다. 많은 경우에, 비디오 코덱 표준은 또한 디코더가 디코딩에서 부합하는 결과를 달성하기 위해 수행해야만 하는 디코딩 동작에 관한 상세를 제공한다. 코덱 표준 이외에, 다양한 독점적 코덱 포맷(proprietary codec format)은 인코딩된 비디오 비트스트림의 구문에 대한 다른 옵션 및 대응하는 디코딩 동작을 정의한다.
일반적으로, 비디오 압축 기법은 "인트라 픽처(intra-picture)" 압축 및 "인터 픽처(inter-picture)" 압축을 포함한다. 인트라 픽처 압축 기법은 개개의 픽처를 압축하고, 인터 픽처 압축 기법은 선행 및/또는 후속 픽처(종종 참조 또는 앵커 픽처라고 불리움) 또는 픽처들을 참조하여 픽처를 압축한다.
인터 픽처 압축 기법은 비디오 시퀀스에서의 시간 중복성(temporal redundancy)을 이용함으로써 비트 레이트를 감소시키기 위해 움직임 추정(motion estimation) 및 움직임 보상(motion compensation)을 종종 사용한다. 움직임 추정은 픽처들 간의 움직임을 추정하는 프로세스이다. 하나의 통상적인 기법에서, 움직임 추정을 사용하는 인코더는 현재 픽처에서의 현재 샘플 값 블록을 다른 픽처(참조 픽처) 내의 검색 영역에 있는 동일한 크기의 후보 블록과 정합시키려고 시도한다. 인코더가 참조 픽처 내의 검색 영역에서 정확한 또는 "충분히 가까운" 일치를 발견할 때, 인코더는 현재 블록과 후보 블록 사이의 위치 변화를 (MV(motion vector: 움직임 벡터)와 같은) 움직임 데이터로서 파라미터화한다. MV가 종래에는 좌우 공간 변위를 나타내는 수평 MV 성분과 상하 공간 변위를 나타내는 수직 MV 성분을 가지는 2차원 값이다. 일반적으로, 움직임 보상은 움직임 데이터를 사용하여 참조 픽처(들)로부터 픽처를 재구성하는 프로세스이다.
MV는 현재 블록에 대한 참조 픽처 내의 동일 장소에 있는 위치(co-located position)로부터 시작하여 정수 개의 샘플 격자 위치로 환산되는 공간 변위를 나타낼 수 있다. 예를 들어, 현재 픽처에서 위치 (32, 16)에 있는 현재 블록에 대해, MV (-3, 1)은 참조 픽처에서의 위치 (29, 17)을 나타낸다. 또는, MV는 현재 블록에 대한 참조 픽처 내의 동일 장소에 있는 위치로부터의 소수 개의 샘플 격자 위치로 환산되는 공간 변위를 나타낼 수 있다. 예를 들어, 현재 픽처에서 위치 (32, 16)에 있는 현재 블록에 대해, MV (-3.5, 1.25)은 참조 픽처에서의 위치 (28.5, 17.25)을 나타낸다. 참조 픽처에서 소수 오프셋에 있는 샘플 값을 결정하기 위해, 인코더는 전형적으로 정수 샘플 위치에 있는 샘플 값들 사이에서 보간한다. 이러한 보간은 계산 집중적일 수 있다. 움직임 보상 동안, 디코더도 참조 픽처에서 소수 오프셋에 있는 샘플 값을 계산하기 위해 필요에 따라 보간을 수행한다.
상이한 비디오 코덱 표준 및 포맷이 상이한 MV 정밀도를 갖는 MV를 사용해왔다. 정수 샘플 MV 정밀도에 있어서, MV 성분은 공간 변위에 대한 정수 개의 샘플 격자 위치를 나타낸다. 1/2 샘플 MV 정밀도 또는 1/4 샘플 MV 정밀도와 같은 소수 샘플 MV 정밀도에 있어서, MV 성분은 공간 변위에 대한 정수 개의 샘플 격자 위치 또는 소수 개의 샘플 격자 위치를 나타낼 수 있다. 예를 들어, MV 정밀도가 1/4 샘플 MV 정밀도이면, MV 성분은 0 개의 샘플, 0.25 개의 샘플, 0.5 개의 샘플, 0.75 개의 샘플, 1.0 개의 샘플, 1.25 개의 샘플 등의 공간 변위를 나타낼 수 있다. 일부 비디오 코덱 표준 및 포맷은 인코딩 동안 MV 정밀도의 스위칭을 지원한다. 그렇지만, 특정 인코딩 시나리오에서, 어느 MV 정밀도를 사용할지에 관한 인코더측 결정이 효과적으로 행해지지 않는다.
요약하면, 상세한 설명은 MV(motion vector) 정밀도의 선택에 대한 인코더측 동작에서의 혁신을 제시한다. 예를 들어, 비디오 인코더가 비디오를 인코딩할 때, 비디오 인코더는 비디오의 어떤 단위에 대한 MV 정밀도를 결정한다.
본원에 기술되는 혁신의 일 양태에 따르면, 비디오 인코더가 단위에 대한 MV 정밀도를 결정할 때, 비디오 인코더는 소수 샘플 MV 정밀도를 가지는 MV 값 세트를 식별할 수 있다. 비디오 인코더는 0의 소수 부분을 가지는 MV 값들의, MV 값 세트 내에서의, 출현율(prevalence)에 적어도 부분적으로 기초하여 단위에 대한 MV 정밀도를 선택할 수 있다.
본원에 기술되는 혁신의 다른 양태에 따르면, 비디오 인코더가 단위에 대한 MV 정밀도를 결정할 때, 비디오 인코더는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함하는 다수의 MV 정밀도 중에서 결정하기 위해 레이트 왜곡 분석을 수행할 수 있다. 레이트 왜곡 분석은 (a) 왜곡 비용을 스케일링하는 것, (b) 왜곡 비용에 페널티(penalty)를 부가하는 것, (c) 비트 레이트 비용(bit rate cost)을 스케일링하는 것, (d) 비트 레이트 비용에 페널티를 부가하는 것, 및/또는 (e) 라그랑지 승수 인자(Lagrangian multiplier factor)를 조절하는 것에 의해 정수 샘플 MV 정밀도 쪽으로 바이어스된다.
본원에 기술되는 혁신의 다른 양태에 따르면, 비디오 인코더가 단위에 대한 MV 정밀도를 결정할 때, 비디오 인코더는 비디오에 관한 정보를 수집하고, 수집된 정보에 적어도 부분적으로 기초하여, 다수의 MV 정밀도 중에서 단위에 대한 MV 정밀도를 선택할 수 있다. 다수의 MV 정밀도는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함한다.
MV 정밀도를 선택하는 것에 대한 인코더측 옵션에 대한 혁신은 방법의 일부로서, 방법을 수행하도록 구성된 컴퓨팅 디바이스의 일부로서, 또는 컴퓨팅 디바이스로 하여금 방법을 수행하게 하기 위한 컴퓨터 실행 가능 명령어를 저장하는 유형적 컴퓨터 판독 가능 매체의 일부로서 구현될 수 있다. 다양한 혁신들이 결합하여 또는 개별적으로 사용될 수 있다.
본 발명의 전술한 목적, 특징 및 장점 그리고 다른 목적, 특징 및 장점이 첨부 도면을 참조하여 계속되는 이하의 발명을 실시하기 위한 구체적인 내용으로부터 보다 명백하게 될 것이다.
도 1은 일부 기술된 실시예가 구현될 수 있는 예시적인 컴퓨팅 시스템을 나타낸 도면.
도 2a 및 도 2b는 일부 기술된 실시예가 구현될 수 있는 예시적인 네트워크 환경을 나타낸 도면.
도 3은 일부 기술된 실시예가 구현될 수 있는 예시적인 인코더 시스템을 나타낸 도면.
도 4a 및 도 4b는 일부 기술된 실시예가 구현될 수 있는 예시적인 비디오 인코더를 나타낸 도면.
도 5는 화면 포착을 위한 입력을 제공할 수 있는 콘텐츠를 갖는 컴퓨터 바탕화면 환경을 나타낸 도면.
도 6은 자연스런 비디오 콘텐츠 및 인위적인 비디오 콘텐츠를 갖는 혼합 콘텐츠 비디오를 나타낸 도면.
도 7a 및 도 7b는, 각각, 정수 샘플 공간 변위 및 소수 샘플 공간 변위를 가지는 MV 값에 의한 움직임 보상을 나타낸 도면.
도 8은 인코딩 동안 MV 정밀도를 적응시키는 일반화된 기법을 나타낸 플로우차트.
도 9는 저복잡도 접근법을 사용하여 인코딩 동안 MV 정밀도를 적응시키는 예시적인 기법을 나타낸 플로우차트.
도 10은 저복잡도 접근법의 일부 변형에 따른 픽처의 상이한 영역을 나타낸 도면.
상세한 설명은 인코딩 동안의 MV(motion vector) 정밀도의 선택에서의 혁신을 제시한다. 이 접근법은 레이트 왜곡 성능 및/또는 계산 효율의 면에서 효과적인 압축을 용이하게 할 수 있다. 예를 들어, 비디오 인코더는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함하는 다수의 MV 정밀도 중에서 비디오의 어떤 유닛에 대한 MV 정밀도를 결정한다. 비디오 인코더는 소수 샘플 MV 정밀도를 가지는 MV 값 세트를 식별하고, 이어서 0의 소수 부분을 가지는 (세트 내에서의) MV 값들의 출현율에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택할 수 있다. 또는, 비디오 인코더가 레이트 왜곡 분석을 수행할 수 있고, 여기서 레이트 왜곡 분석은 정수 샘플 MV 정밀도 쪽으로 바이어스된다. 또는, 비디오 인코더는 비디오에 관한 정보를 수집하고, 수집된 정보에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택할 수 있다. 또는, 비디오 인코더는 어떤 다른 방식에서 비디오의 어떤 유닛에 대한 MV 정밀도를 결정할 수 있다.
본원에 기술되는 동작이 여러 곳에서 비디오 인코더에 의해 수행되는 것으로 기술되어 있지만, 많은 경우에, 동작이 다른 유형의 미디어 처리 도구에 의해 수행될 수 있다.
본원에 기술되는 혁신들 중 일부는 HEVC 표준에 특유한 구문 요소(syntax element) 및 동작을 참조하여 설명된다. 본원에 기술되는 혁신은 또한 다른 표준 또는 포맷에 대해 구현될 수 있다.
보다 일반적으로, 본원에 기술되는 예에 대한 다양한 대안이 가능하다. 예를 들어, 본원에 기술되는 방법들 중 일부가 기술된 방법 동작들의 순서를 변경하는 것에 의해, 특정의 방법 동작을 분할, 반복 또는 생략하는 것에 의해, 기타에 의해 수정될 수 있다. 개시되는 기술의 다양한 양태가 결합하여 또는 개별적으로 사용될 수 있다. 상이한 실시예가 기술되는 혁신들 중 하나 이상을 사용한다. 본원에 기술되는 혁신들 중 일부는 배경 기술에서 살펴본 문제점들 중 하나 이상을 해결한다. 전형적으로, 주어진 기법/도구가 이러한 문제점들 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템
도 1은 기술되는 혁신들 중 몇몇이 구현될 수 있는 적당한 컴퓨팅 시스템(100)의 일반화된 예를 나타낸 것이다. 혁신들이 비디오 인코딩을 위해 구성된 특수 목적 컴퓨팅 시스템을 비롯한 다양한 컴퓨팅 시스템에서 구현될 수 있기 때문에, 컴퓨팅 시스템(100)은 용도 또는 기능의 범주에 관한 어떤 제한을 암시하는 것으로 의도되어 있지 않다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 적어도 하나의 처리 유닛들(110, 115) 및 메모리(120, 125)를 포함한다. 처리 유닛(110, 115)은 컴퓨터 실행 가능 명령어를 실행한다. 처리 유닛은 CPU(central processing unit), ASIC(application-specific integrated circuit) 내의 프로세서, 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템(multi-processing system)에서는, 처리 능력을 증가시키기 위해 다수의 처리 유닛이 컴퓨터 실행 가능 명령어를 실행한다. 예를 들어, 도 1은 중앙 처리 유닛(central processing unit)(110)은 물론, 그래픽 처리 유닛 또는 코프로세싱 유닛(coprocessing unit)(115)을 나타내고 있다. 유형적 메모리(tangible memory)(120, 125)는 처리 유닛(들)에 의해 액세스 가능한, 휘발성 메모리(예컨대, 레지스터, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 어떤 조합일 수 있다. 메모리(120, 125)는 인코딩 동안의 MV 정밀도의 선택을 위한 하나 이상의 혁신들을 구현하는, 처리 유닛(들)에 의한 실행에 적당한 컴퓨터 실행 가능 명령어들의 형태로 된 소프트웨어(180)를 저장한다.
컴퓨팅 시스템은 부가의 특징을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 저장소(140), 하나 이상의 입력 디바이스(150), 하나 이상의 출력 디바이스(160), 및 하나 이상의 통신 연결(170)을 포함한다. 버스, 제어기 또는 네트워크와 같은 상호연결 메커니즘(도시되지 않음)은 컴퓨팅 시스템(100)의 구성요소들을 상호연결시킨다. 전형적으로, 운영 체제 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행 중인 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 시스템(100)의 구성요소의 활동을 조정한다.
유형적 저장소(140)는 이동식 또는 비이동식일 수 있고, 정보를 저장하는 데 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 임의의 다른 매체를 포함한다. 저장소(140)는 인코딩 동안의 MV 정밀도의 선택을 위한 하나 이상의 혁신들을 구현하는 소프트웨어(180)에 대한 명령어들을 저장한다.
입력 디바이스(들)(150)는 컴퓨팅 시스템(100)에 입력을 제공하는 키보드, 마우스, 펜, 또는 트랙볼과 같은 터치 입력 디바이스, 음성 입력 디바이스, 스캐닝 디바이스, 또는 다른 디바이스일 수 있다. 비디오의 경우, 입력 디바이스(들)(150)는 아날로그 또는 디지털 형태로 비디오 입력을 받아들이는 카메라, 비디오 카드, TV 튜너 카드, 화면 포착 모듈, 또는 유사한 디바이스, 또는 비디오 입력을 컴퓨팅 시스템(100) 내로 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 디바이스(들)(160)는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 디스플레이, 프린터, 스피커, CD 라이터(CD-writer), 또는 다른 디바이스일 수 있다.
통신 연결(들)(170)은 통신 매체를 통한 다른 컴퓨팅 엔터티와의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행 가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 다른 데이터와 같은 정보를 피변조 데이터 신호(modulated data signal)로 전달한다. 피변조 데이터 신호는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 또는 다른 반송파를 사용할 수 있다.
혁신이 일반적으로 컴퓨터 판독 가능 매체와 관련하여 기술되어 있을 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용 가능한 유형적 매체이다. 제한이 아닌 예로서, 컴퓨팅 시스템(100)에서, 컴퓨터 판독 가능 매체는 메모리(120, 125), 저장소(140), 및 상기한 것들 중 임의의 것의 조합을 포함한다.
혁신이 일반적으로 컴퓨팅 시스템에서 실제 또는 가상의 대상 프로세서 상에서 실행되는, 프로그램 모듈에 포함된 것과 같은, 컴퓨터 실행 가능 명령어와 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 형식을 구현하는 루틴, 프로그램, 라이브러리, 객체, 클래스, 구성요소, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능이 다양한 실시예에서 원하는 바에 따라 프로그램 모듈들 간에 결합되거나 분할될 수 있다. 프로그램 모듈에 대한 컴퓨터 실행 가능 명령어는 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템"과 "디바이스"라는 용어는 본원에서 서로 바꾸어 사용될 수 있다. 문맥이 명백히 달리 나타내지 않는 한, 어느 용어도 컴퓨팅 시스템 또는 컴퓨팅 디바이스의 유형에 대한 어떤 제한을 암시하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬이거나 분산되어 있을 수 있고, 본원에 기술되는 기능을 구현하는 소프트웨어를 갖는 특수 목적 하드웨어 및/또는 하드웨어의 임의의 조합을 포함할 수 있다.
개시되는 방법이 또한 개시되는 방법들 중 임의의 것을 수행하도록 구성된 특수 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 개시되는 방법은 개시되는 방법들 중 임의의 것을 구현하도록 특수 설계되거나 구성된 집적 회로(예컨대, ASIC DSP(digital signal process unit)와 같은 ASIC, GPU(graphics processing unit), 또는 FPGA(field programmable gate array)와 같은 PLD(programmable logic device))에 의해 구현될 수 있다.
제시를 위해, 발명을 실시하기 위한 구체적인 내용은 컴퓨팅 시스템에서의 컴퓨터 동작을 기술하기 위해 "결정한다" 및 "사용한다"와 같은 용어를 사용한다. 이 용어들은 컴퓨터에 의해 수행되는 동작에 대한 상위 레벨 추상화(high-level abstraction)이고, 사람에 의해 수행되는 동작과 혼동되어서는 안된다. 이 용어들에 대응하는 실제 컴퓨터 동작은 구현에 따라 다르다. 본원에서 사용되는 바와 같이, "최적화*"라는 용어(최적화 및 최적화하는과 같은 변형을 포함함)는 주어진 결정 범주 하에서 옵션들 중의 선택을 지칭하고, 최적화된 선택이 확장된 결정 범주에 대한 "최상의" 또는 "최적의" 선택임을 암시하지 않는다.
II. 예시적인 네트워크 환경
도 2a 및 도 2b는 비디오 인코더들(220) 및 비디오 디코더들(270)을 포함하는 예시적인 네트워크 환경들(201, 202)을 나타낸 것이다. 인코더(220) 및 디코더(270)는 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)에서, 각각의 RTC(real-time communication: 실시간 통신) 도구(210)는 양방향 통신을 위해 인코더(220) 및 디코더(270) 둘 다를 포함한다. 주어진 인코더(220)는 HEVC 표준(H.265라고도 알려져 있음), SMPTE 421M 표준, ISO-IEC 14496-10 표준(H.264 또는 AVC라고도 알려져 있음), 다른 표준, 또는 독점적 포맷(proprietary format)의 변형 또는 확장과 호환되는 출력을 생성할 수 있고, 대응하는 디코더(270)는 인코더(220)부터 인코딩된 데이터를 받는다. 양방향 통신은 화상 회의, 화상 전화 통화, 또는 다른 양자간 또는 다자간 통신 시나리오의 일부일 수 있다. 도 2a에서의 네트워크 환경(201)이 2 개의 실시간 통신 도구(210)를 포함하지만, 네트워크 환경(201)이 그 대신에 다자간 통신에 참여하는 3 개 이상의 실시간 통신 도구(210)를 포함할 수 있다.
실시간 통신 도구(210)는 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 도구(210)에 포함될 수 있는 예시적인 인코더 시스템(300)을 나타낸 것이다. 대안적으로, 실시간 통신 도구(210)는 다른 인코더 시스템을 사용한다. 실시간 통신 도구(210)는 디코더(270)에 의한 디코딩도 관리한다.
도 2b에 도시된 네트워크 환경(202)에서, 인코딩 도구(212)는 디코더(270)를 포함하는 다수의 재생 도구(214)로 전달하기 위한 비디오를 인코딩하는 인코더(220)를 포함한다. 비디오가 인코딩되어 하나의 장소로부터 하나 이상의 다른 장소로 송신되는 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 화면 포착 모듈, 원격 데스크톱 회의 프레젠테이션 또는 다른 시나리오를 위해 단방향 통신이 제공될 수 있다. 도 2b에서의 네트워크 환경(202)이 2 개의 재생 도구(214)를 포함하지만, 네트워크 환경(202)은 더 많거나 더 적은 수의 재생 도구(214)를 포함할 수 있다. 일반적으로, 재생 도구(214)는 재생 도구(214)가 수신할 비디오 스트림을 결정하기 위해 인코딩 도구(212)와 통신한다. 재생 도구(214)는 스트림을 수신하고, 수신된 인코딩된 데이터를 적절한 기간 동안 버퍼링하며, 디코딩 및 재생을 시작한다.
도 3은 인코딩 도구(212)에 포함될 수 있는 예시적인 인코더 시스템(300)을 나타낸 것이다. 대안적으로, 인코딩 도구(212)는 다른 인코더 시스템을 사용한다. 인코딩 도구(212)는 또한 하나 이상의 재생 도구(214)와의 연결을 관리하기 위한 서버측 제어기 논리(server-side controller logic)를 포함할 수 있다. 재생 도구(214)는 또한 인코딩 도구(212)와의 연결을 관리하기 위한 클라이언트측 제어기 논리(client-side controller logic)를 포함할 수 있다.
III. 예시적인 인코더 시스템
도 3은 일부 기술된 실시예가 구현될 수 있는 예시적인 인코더 시스템(300)의 블록도이다. 인코더 시스템(300)은 실시간 통신을 위한 저대기시간(low-latency) 인코딩 모드, 트랜스코딩 모드(transcoding mode), 및 파일 또는 스트림으로부터 재생을 위한 미디어를 생성하기 위한 고대기시간(higher-latency) 인코딩 모드와 같은 다수의 인코딩 모드 중 임의의 것에서 동작할 수 있는 범용 인코딩 도구일 수 있거나, 하나의 이러한 인코딩 모드를 위해 구성된 특수 목적 인코딩 도구일 수 있다. 인코더 시스템(300)은 운영 체제 모듈로서, 애플리케이션 라이브러리의 일부로서 또는 독립형 애플리케이션으로서 구현될 수 있다. 일반적으로, 인코더 시스템(300)은 비디오 소스(310)로부터 소스 비디오 프레임들(311)의 시퀀스를 수신하고 인코딩된 데이터를 채널(390)로의 출력으로서 생성한다. 채널로 출력되는 인코딩된 데이터는 선택된 MV 정밀도를 사용하여 인코딩된 콘텐츠를 포함할 수 있다.
비디오 소스(310)는 카메라, 튜너 카드, 저장 매체, 화면 포착 모듈, 또는 다른 디지털 비디오 소스일 수 있다. 비디오 소스(310)는, 예를 들어, 초당 30 프레임의 프레임 레이트(frame rate)로 비디오 프레임들의 시퀀스를 생성한다. 본원에서 사용되는 바와 같이, "프레임"이라는 용어는 일반적으로 소스, 코딩된 또는 재구성된 영상 데이터를 지칭한다. 순차 주사 비디오(progressive-scan video)의 경우, 프레임은 순차 주사 비디오 프레임(progressive-scan video frame)이다. 인터레이스 비디오(interlaced video)의 경우, 예시적인 실시예에서, 인터레이스 비디오 프레임(interlaced video frame)은 인코딩 이전에 디인터레이스(de-interlace)될 수 있다. 대안적으로, 2 개의 상보적인 인터레이스 비디오 필드가함께 단일의 비디오 프레임으로서 인코딩되거나 2 개의 개별적으로 인코딩된 필드로서 인코딩된다. 순차 주사 비디오 프레임 또는 비월 주사 비디오 프레임(interlaced-scan video frame)을 나타내는 것 이외에, "프레임" 또는 "픽처"라는 용어는 단일의 쌍이 아닌 비디오 필드(single non-paired video field), 상보적인 비디오 필드 쌍, 주어진 때의 비디오 객체를 표현하는 비디오 객체 평면(video object plane), 또는 보다 큰 영상에서의 관심 영역을 나타낼 수 있다. 비디오 객체 평면 또는 영역은 장면의 다수의 객체 또는 영역을 포함하는 보다 큰 영상의 일부일 수 있다.
도착하는 소스 프레임(311)은 다수의 프레임 버퍼 저장 구역(321, 322, ..., 32n)을 포함하는 소스 프레임 임시 메모리 저장 구역(320)에 저장된다. 프레임 버퍼(321, 322 등)는 소스 프레임 저장 구역(320)에 하나의 소스 프레임을 보유한다. 소스 프레임들(311) 중 하나 이상이 프레임 버퍼(321, 322 등)에 저장된 후에, 프레임 선택기(frame selector)(330)는 소스 프레임 저장 구역(320)으로부터 개개의 소스 프레임을 선택한다. 프레임이 인코더(340)에 입력하기 위해 프레임 선택기(330)에 의해 선택되는 순서는 프레임이 비디오 소스(310)에 의해 생성되는 순서와 상이할 수 있다(예컨대, 어떤 나중의 프레임이 먼저 인코딩될 수 있게 하고 따라서 시간상 역방향 예측(temporally backward prediction)을 용이하게 하기 위해, 어떤 프레임의 인코딩이 순서가 지연될 수 있다). 인코더(340)보다 앞에, 인코더 시스템(300)은 인코딩 이전에 선택된 프레임(331)의 전처리(pre-processing)(예컨대, 필터링)를 수행하는 전처리기(pre-processor)(도시되지 않음)를 포함할 수 있다. 전처리는 또한 주 성분(primary component)(예컨대, 루마(luma) 성분) 및 보조 성분(secondary component)(예컨대, 적색에 대한 색차(chroma difference) 성분 및 청색에 대한 색차 성분)로의 색 공간 변환(color space conversion) 및 (예컨대, 크로마 성분(chroma component)의 공간 분해능을 감소시키기 위한) 재샘플링 처리를 포함할 수 있다. 전형적으로, 인코딩 이전에, 비디오는 YUV와 같은 색 공간으로 변환되었고, 여기서 루마(luma)(Y) 성분의 샘플 값은 밝기 또는 휘도 값을 나타내고, 크로마(chroma)(U, V) 성분의 샘플 값은 색차 값(color-difference value)을 나타낸다. 크로마 샘플 값은 (예컨대, YUV 4:2:0 포맷 또는 YUV 4:2:2에 대해) 보다 낮은 크로마 샘플링 레이트로 서브샘플링될 수 있거나, 크로마 샘플 값은 (예컨대, YUV 4:4:4 포맷에 대해) 루마 샘플 값과 동일한 분해능을 가질 수 있다. YUV 4:2:0 포맷에서, 크로마 성분은 수평으로 2배만큼 그리고 수직으로 2배만큼 다운샘플링된다. YUV 4:2:2 포맷에서, 크로마 성분은 수평으로 2배만큼 다운샘플링된다. 또는, 비디오가 다른 포맷(예컨대, RGB 4:4:4 포맷)으로 인코딩될 수 있다.
인코더(340)는, 코딩된 프레임(341)을 생성하기 위해, 선택된 프레임(331)을 인코딩하고, 또한 MMCO(memory management control operation: 메모리 관리 제어 동작) 신호(342) 또는 RPS(reference picture set: 참조 픽처 세트) 정보를 생성한다. 현재 프레임이 인코딩된 첫 번째 프레임이 아닌 경우, 그의 인코딩 프로세스를 수행할 때, 인코더(340)는 디코딩된 프레임 임시 메모리 저장 구역(360)에 저장된 하나 이상의 이전에 인코딩된/디코딩된 프레임(369)을 사용할 수 있다. 이러한 저장된 디코딩된 프레임(369)은 현재 소스 프레임(331)의 콘텐츠의 인터 프레임 예측(inter-frame prediction)을 위한 참조 프레임(reference frame)으로서 사용된다. MMCO/RPS 정보(342)는 어느 재구성된 프레임이 참조 프레임으로서 사용될 수 있고 따라서 프레임 저장 구역에 저장되어야만 하는지를 디코더에게 알려준다.
일반적으로, 인코더(340)는 타일들로 분할하는 것, 인트라 예측 추정 및 예측, 움직임 추정 및 보상, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 작업을 수행하는 다수의 인코딩 모듈을 포함한다. 인코더(340)에 의해 수행되는 정확한 동작은 압축 포맷(compression format)에 따라 변할 수 있다. 출력되는 인코딩된 데이터의 포맷은 HEVC 포맷(H.265), WMV(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예컨대, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예컨대, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형 또는 확장일 수 있다.
인코더(340)는 프레임을 동일한 크기 또는 상이한 크기의 다수의 타일로 분할할 수 있다. 예를 들어, 인코더(340)는 프레임을, 프레임 경계와 함께, 프레임 내의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 분할하고, 여기서 각각의 타일은 직사각형 영역이다. 타일은 종종 병렬 처리를 위한 옵션을 제공하기 위해 사용된다. 프레임은 또한 하나 이상의 슬라이스로서 편성(organize)될 수 있고, 여기서 슬라이스는 프레임 전체 또는 프레임의 영역일 수 있다. 슬라이스는 프레임 내의 다른 슬라이스와 독립적으로 디코딩될 수 있고, 이는 오류 내성(error resilience)을 개선시킨다. 슬라이스 또는 타일의 내용이 인코딩 및 디코딩을 위해 블록 또는 다른 샘플 세트로 추가로 분할된다.
HEVC 표준에 따른 구문에 대해, 인코더는 프레임(또는 슬라이스 또는 타일)의 내용을 코딩 트리 유닛(coding tree unit)으로 분할한다. CTU(coding tree unit: 코딩 트리 유닛)는 루마 CTB(coding tree block: 코딩 트리 블록)로서 편성되는 루마 샘플 값 및 2 개의 크로마 CTB로서 편성되는 대응하는 크로마 샘플 값을 포함한다. CTU(및 그의 CTB)의 크기는 인코더에 의해 선택된다. 루마 CTB는, 예를 들어, 64x64, 32x32 또는 16x16 루마 샘플 값을 포함할 수 있다. CTU는 하나 이상의 코딩 유닛을 포함한다. CU(coding unit)는 루마 CB(coding block: 코딩 블록) 및 2 개의 대응하는 크로마 CB를 가진다. 예를 들어, 하나의 64x64 루마 CTB 및 2 개의 64x64 크로마 CTB를 갖는 CTU(YUV 4:4:4 포맷)는 4 개의 CU로 분할될 수 있고, 각각의 CU는 하나의 32x32 루마 CB 및 2 개의 32x32 크로마 CB를 포함하고, 각각의 CU는 어쩌면 보다 작은 CU로 추가로 분할된다. 또는, 다른 예로서, 하나의 64x64 루마 CTB 및 2 개의 32x32 크로마 CTB를 갖는 CTU(YUV 4:2:0 포맷)는 4 개의 CU로 분할될 수 있고, 각각의 CU는 하나의 32x32 루마 CB 및 2 개의 16x16 크로마 CB를 포함하고, 각각의 CU는 어쩌면 보다 작은 CU로 추가로 분할된다. CU의 가장 작은 허용 가능 크기(예컨대, 8x8, 16x16)는 비트스트림에서 신호될 수 있다.
일반적으로, CU는 인터(inter) 또는 인트라(intra)와 같은 예측 모드를 갖는다. CU는 예측 정보(예측 모드 상세, 변위 값, 기타 등등) 및/또는 예측 처리를 신호하기 위한 하나 이상의 예측 유닛을 포함한다. PU(prediction unit)는 루마 PB(prediction block: 예측 블록) 및 2 개의 크로마 PB를 가진다. 인트라 예측된 CU에 대해, PU는, CU가 가장 작은 크기(예컨대, 8x8)를 갖지 않는 한, CU와 동일한 크기를 갖는다. 그 경우에, CU에 대한 구문 요소에 의해 나타내는 바와 같이, CU는 4 개의 보다 작은 PU(예컨대, 가장 작은 CU 크기가 8x8인 경우 각각이 4x4임)로 분할될 수 있거나, PU가 가장 작은 CU 크기를 가질 수 있다. CU는 또한 잔차 코딩/디코딩(residual coding/decoding)을 위한 하나 이상의 변환 유닛(transform unit)을 가지며, 여기서 TU(transform unit: 변환 유닛)는 하나의 루마 TB(transform block: 변환 블록) 및 2 개의 크로마 TB를 갖는다. 인트라 예측된 CU에서의 PU는 단일의 TU(크기가 PU와 같음) 또는 다수의 TU를 포함할 수 있다. 인코더는 비디오를 CTU, CU, PU, TU, 기타로 어떻게 분할할지를 결정한다. H.264/AVC 표준과 관련하여, "매크로블록"이라는 용어는 H.265/HEVC 표준에 대한 CTU의 영역과 유사한 블록 형상의 영역을 나타내고, "서브매크로블록 파티션"이라는 용어는 CU 또는 PU의 영역과 유사한 블록 형상의 영역을 나타낸다. 본원에서 사용되는 바와 같이, "블록"이라는 용어는, 문맥에 따라, CB, PB, TB, CTU, CU, PU, TU, 매크로블록, 서브매크로블록 파티션 또는 다른 샘플 값 세트를 나타낼 수 있다.
도 3으로 돌아가서, 인코더는 소스 프레임(331)의 인트라 코딩된 블록을 소스 프레임(331) 내의 다른 이전에 재구성된 샘플 값으로부터의 예측으로 표현한다. 인트라 BC(block copy: 블록 복사) 예측에 있어서, 인트라 픽처 추정기(intra-picture estimator)는 다른 이전에 재구성된 샘플 값에 대한 블록의 변위를 추정한다. 인트라 프레임 예측 참조 영역(intra-frame prediction reference region)(또는 간단히 인트라 예측 영역)은 블록에 대한 BC 예측 값을 발생시키기 위해 사용되는 프레임 내의 샘플 영역이다. 인트라 프레임 예측 영역은 BV(block vector) 값(BV 추정에서 결정됨)으로 표시될 수 있다. 블록에 대한 인트라 공간 예측(intra spatial prediction)에 대해, 인트라 픽처 추정기는 이웃하는 재구성된 샘플 값의 블록 내로의 외삽(extrapolation)을 추정한다. 인트라 픽처 추정기는 엔트로피 코딩되어 있는, (인트라 BC 예측을 위한 BV 값 또는 인트라 공간 예측을 위한 예측 모드(방향)와 같은) 예측 정보를 출력할 수 있다. 인트라 프레임 예측 예측기(intra-frame prediction predictor)는 인트라 예측 값을 결정하기 위해 예측 정보를 적용한다.
인코더(340)는 소스 프레임(331)의 인터 프레임 코딩된, 예측된 블록을 참조 프레임으로부터의 예측으로 표현한다. 움직임 추정기(motion estimator)는 하나 이상의 참조 프레임(369)에 대한 블록의 움직임을 추정한다. 움직임 추정기는, 본원에 기술되는 바와 같이, MV(motion vector) 정밀도(예컨대, 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 또는 1/4 샘플 MV 정밀도)를 선택할 수 있고, 이어서 움직임 추정 동안 선택된 MV 정밀도를 사용할 수 있다. 다수의 참조 프레임이 사용될 때, 다수의 참조 프레임은 상이한 시간 방향 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 보상된 예측 참조 영역(motion-compensated prediction reference region)은 현재 프레임의 샘플 블록에 대한 움직임 보상된 예측 값을 발생시키는 데 사용되는 참조 프레임(들) 내의 샘플 영역이다. 움직임 추정기는 엔트로피 코딩되어 있는, MV 정보와 같은, 움직임 정보를 출력한다. 움직임 보상기(motion compensator)는 인터 프레임 예측을 위한 움직임 보상된 예측 값을 결정하기 위해 선택된 MV 정밀도를 가지는 MV 값을 참조 프레임(369)에 적용한다.
인코더는 블록의 예측 값(인트라 또는 인터)과 대응하는 원래 값 사이의 차이(있는 경우)를 결정할 수 있다. 이 예측 잔차 값(prediction residual value)은 주파수 변환(주파수 변환이 생략되지 않는 경우), 양자화 및 엔트로피 인코딩을 사용하여 추가로 인코딩된다. 예를 들어, 인코더(340)는 비디오의 픽처, 타일, 슬라이스 및/또는 다른 부분에 대해 QP(quantization parameter: 양자화 파라미터)에 대한 값을 설정하고, 그에 따라 변환 계수를 양자화한다. 인코더(340)의 엔트로피 코더(entropy coder)는 양자화된 변환 계수 값은 물론, 특정의 보조 정보(side information)(예컨대, MV 정보, 선택된 MV 정밀도, BV 값, QP 값, 모드 결정, 파라미터 선택)를 압축한다. 전형적인 엔트로피 코딩 기법은 지수 골롬 코딩(Exponential-Golomb coding), 골롬 라이스 코딩(Golomb-Rice coding), 산술 코딩(arithmetic coding), 차분 코딩(differential coding), 허프만 코딩(Huffman coding), 런 길이 코딩(run length coding), V2V(variable-length-to-variable-length) 코딩, V2F(variable-length-to-fixed-length) 코딩, LZ(Lempel-Ziv) 코딩, 사전 코딩(dictionary coding), PIPE(probability interval partitioning entropy coding), 및 이들의 조합을 포함한다. 엔트로피 코더는 상이한 종류의 정보에 대해 상이한 코딩 기법을 사용할 수 있고, (예컨대, 골롬 라이스 코딩에 뒤이어서 산술 코딩을 적용하는 것에 의해) 다수의 기법을 결합하여 적용할 수 있으며, 특정의 코딩 기법 내에서 다수의 코드 테이블 중에서 선택할 수 있다. 일부 구현에서, 주파수 변환이 생략될 수 있다. 이 경우에, 예측 잔차 값이 양자화되고 엔트로피 코딩될 수 있다.
디코딩된 프레임에서의 블록 경계 행 및/또는 열에 걸친 불연속을 평활화하기 위해 적응적 블록화 제거 필터(adaptive deblocking filter)가 인코더(340) 내의 움직임 보상 루프 내에 포함된다(즉, "루프내" 필터링). (도시되지 않은, 링잉 제거 필터링(de-ringing filtering), ALF(adaptive loop filtering), 또는 SAO(sample-adaptive offset) 필터링과 같은) 다른 필터링이 대안적으로 또는 그에 부가하여 루프내 필터링 동작으로서 적용될 수 있다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)(또는 프레임에 대한 의존 관계 및 정렬 구조를 인코더(340)에서 이미 알고 있기 때문에, MMCO/RPS 정보(342)와 동등한 정보)는 디코딩 프로세스 에뮬레이터(350)에 의해 처리된다. 디코딩 프로세스 에뮬레이터(350)는 디코더의 기능 중 일부(예를 들어, 참조 프레임을 재구성하는 디코딩 작업)를 구현한다. MMCO/RPS 정보(342)와 부합하는 방식으로, 디코딩 프로세스 에뮬레이터(350)는 주어진 코딩된 프레임(342)이 재구성되어 인코딩될 후속 프레임의 인터 프레임 예측에서 참조 프레임으로서 사용하기 위해 저장될 필요가 있는지를 결정한다. 코딩된 프레임(341)이 저장될 필요가 있는 경우, 디코딩 프로세스 에뮬레이터(350)는 코딩된 프레임(341)을 수신하고 대응하는 디코딩된 프레임(351)을 생성하는 디코더에 의해 수행될 디코딩 프로세스를 모델링한다. 그렇게 함에 있어서, 인코더(340)가 디코딩된 프레임 저장 구역(360)에 저장된 디코딩된 프레임(들)(369)을 사용할 때, 디코딩 프로세스 에뮬레이터(350)는 또한 디코딩 프로세스의 일부로서 저장 구역(360)으로부터의 디코딩된 프레임(들)(369)을 사용한다.
디코딩된 프레임 임시 메모리 저장 구역(360)은 다수의 프레임 버퍼 저장 구역(361, 362, ..., 36n)을 포함한다. MMCO/RPS 정보(342)와 부합하는 방식으로, 디코딩 프로세스 에뮬레이터(350)는 참조 프레임들로서 사용하기 위해 인코더(340)에 의해 더 이상 필요로 하지 않는 프레임들을 갖는 임의의 프레임 버퍼들(361, 362 등)을 식별하기 위해 저장 구역(360)의 내용을 관리한다. 디코딩 프로세스를 모델링한 후에, 디코딩 프로세스 에뮬레이터(350)는 새로 디코딩된 프레임(351)을 이러한 방식으로 식별된 프레임 버퍼(361, 362 등)에 저장한다.
코딩된 프레임(341) 및 MMCO/RPS 정보(342)는 임시 코딩된 데이터 구역(temporary coded data area)(370)에 버퍼링된다. 코딩된 데이터 구역(370)에 통합되어 있는 코딩된 데이터는, 기본 코딩된 비디오 비트스트림(elementary coded video bitstream)의 구문의 일부로서, 하나 이상의 픽처에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 구역(370)에 통합되어 있는 코딩된 데이터는 또한 코딩된 비디오 데이터에 관한 미디어 메타데이터를 (예컨대, 하나 이상의 SEI(supplemental enhancement information) 메시지 또는 VUI(video usability information) 메시지에 하나 이상의 파라미터로서) 포함할 수 있다.
임시 코딩된 데이터 구역(370)으로부터의 통합된 데이터(371)는 채널 인코더(channel encoder)(380)에 의해 처리된다. 채널 인코더(380)는 (예컨대, ITU-T H.222.0 | ISO/IEC 13818-1과 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 IETF RFC 3550과 같은 인터넷 실시간 전송 프로토콜 포맷에 따라) 미디어 스트림으로서 전송 또는 저장하기 위해 통합된 데이터를 패킷화(packetize) 및/또는 다중화(multiplex)할 수 있고, 이 경우에 채널 인코더(380)는 미디어 전송 스트림의 구문의 일부로서 구문 요소를 추가할 수 있다. 또는, 채널 인코더(380)는 (예컨대, ISO/IEC 14496-12와 같은 미디어 컨테이너 포맷(media container format)에 따라) 파일로서 저장하기 위해 통합된 데이터를 편성할 수 있고, 이 경우에 채널 인코더(380)는 미디어 저장 파일의 구문의 일부로서 구문 요소를 추가할 수 있다. 또는, 보다 일반적으로, 채널 인코더(380)는 하나 이상의 미디어 시스템 다중화 프로토콜 또는 전송 프로토콜을 구현할 수 있고, 이 경우에 채널 인코더(380)는 프로토콜(들)의 구문의 일부로서 구문 요소를 추가할 수 있다. 채널 인코더(380)는 출력에 대한 저장소, 통신 연결, 또는 다른 채널을 나타내는 출력을 채널(390)에 제공한다. 채널 인코더(380) 또는 채널(390)은 또한 FEC(forward-error correction: 순방향 오류 정정) 인코딩 및 아날로그 신호 변조와 같은 다른 요소(도시되지 않음)를 포함할 수 있다.
IV. 예시적인 비디오 인코더
도 4a 및 도 4b는 일부 기술된 실시예가 구현될 수 있는 일반화된 비디오 인코더(400)의 블록도이다. 인코더(400)는 현재 프레임(405)을 포함하는 비디오 픽처 시퀀스를 입력 비디오 신호(505)로서 수신하고, 코딩된 비디오 비트스트림(495)에서의 인코딩된 데이터를 출력으로서 생성한다.
인코더(400)는 블록 기반(block-based)이고, 구현에 의존하는 블록 포맷을 사용한다. 블록이 상이한 스테이지에서(예컨대, 예측, 주파수 변환 및/또는 엔트로피 인코딩 스테이지에서) 추가로 세분화될 수 있다. 예를 들어, 픽처가 64x64 블록, 32x32 블록 또는 16x16 블록으로 나누어질 수 있고, 이들이 차례로 코딩 및 디코딩을 위해 보다 작은 샘플 값 블록으로 나누어질 수 있다. HEVC 표준에 대한 인코딩의 구현에서, 인코더는 픽처를 CTU(CTB), CU(CB), PU(PB) 및 TU(TB)로 분할한다.
인코더(400)는 인트라 픽처 코딩(intra-picture coding) 및/또는 인터 픽처 코딩(inter-picture coding)을 사용하여 픽처를 압축한다. 인코더(400)의 구성요소들 중 다수는 인트라 픽처 코딩 및 인터 픽처 코딩 둘 다를 위해 사용된다. 그 구성요소들에 의해 수행되는 정확한 동작은 압축되는 정보의 유형에 따라 달라질 수 있다.
타일화 모듈(tiling module)(410)은, 선택적으로, 픽처를 동일한 크기 또는 상이한 크기의 다수의 타일로 분할한다. 예를 들어, 타일화 모듈(410)은 픽처를, 픽처 경계와 함께, 픽처 내의 타일의 수평 및 수직 경계를 정의하는 타일 행 및 타일 열을 따라 분할하고, 여기서 각각의 타일은 직사각형 영역이다.
일반 인코딩 제어(420)는 입력 비디오 신호(405)에 대한 픽처는 물론 인코더(400)의 다양한 모듈로부터의 피드백(도시되지 않음)을 수신한다. 전체적으로, 일반 인코딩 제어(420)는, 인코딩 동안 코딩 파라미터를 설정하고 변경하기 위해, 제어 신호(도시되지 않음)를 다른 모듈(타일화 모듈(410), 변환기/스케일러/양자화기(430), 스케일러/역변환기(435), 인트라 픽처 추정기(440), 움직임 추정기(450) 및 인트라/인터 스위치(intra/inter switch) 등)에 제공한다. 상세하게는, 움직임 추정기(450)와 관련하여, 일반 인코딩 제어(420)는 인코딩 동안 MV 정밀도를 결정할 수 있다. 일반 인코딩 제어(420)는 또한 인코딩 동안 중간 결과를 평가할 수 있다(예컨대, 레이트 왜곡 분석(rate-distortion analysis)을 수행함). 일반 인코딩 제어(420)는, 대응하는 디코더가 일관성 있는 결정을 할 수 있도록, 인코딩 동안 행해진 결정을 나타내는 일반 제어 데이터(422)를 생성한다. 일반 제어 데이터(422)는 헤더 포맷터/엔트로피 코더(header formatter/entropy coder)(490)에 제공된다.
현재 픽처가 인터 픽처 예측을 사용하여 예측되는 경우, 움직임 추정기(450)는 하나 이상의 참조 픽처에 대한 입력 비디오 신호(405)의 현재 픽처의 샘플 값 블록의 움직임을 추정한다. 움직임 추정기(450)는, 본원에 기술되는 바와 같이, MV(motion vector) 정밀도(예컨대, 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 또는 1/4 샘플 MV 정밀도)를 선택할 수 있고, 이어서 움직임 추정 동안 선택된 MV 정밀도를 사용할 수 있다. 디코딩된 픽처 버퍼(470)는 참조 픽처로서 사용하기 위해 하나 이상의 재구성된 이전에 코딩된 픽처(reconstructed previously coded picture)를 버퍼링한다. 다수의 참조 픽처가 사용될 때, 다수의 참조 픽처는 상이한 시간 방향 또는 동일한 시간 방향으로부터의 것일 수 있다. 움직임 추정기(450)는 MV 데이터, 병합 모드 인덱스 값(merge mode index value) 및 참조 픽처 선택 데이터와 같은 보조 정보 움직임 데이터(452)는 물론, 선택된 MV 정밀도를 나타내는 보조 정보를 생성한다. 움직임 데이터(452)를 포함하는 보조 정보는 헤더 포맷터/엔트로피 코더(490)에는 물론 움직임 보상기(455)에도 제공된다.
움직임 보상기(455)는 선택된 MV 정밀도를 가지는 MV 값을 디코딩된 픽처 버퍼(470)로부터의 재구성된 참조 픽처(들)에 적용한다. 픽처에 대한 크로마 데이터가 루마 데이터와 동일한 분해능을 가질 때(예컨대, 포맷이 YUV 4:4:4 포맷 또는 RGB 4:4:4 포맷일 때), 크로마 블록에 대해 적용되는 MV 값은 루마 블록에 대해 적용되는 MV 값과 동일할 수 있다. 다른 한편으로, 픽처에 대한 크로마 데이터가 루마 데이터에 비해 감소된 분해능을 가질 때(예컨대, 포맷이 YUV 4:2:0 포맷 또는 YUV 4:2:2 포맷일 때), (예컨대, YUV 4:2:0 포맷에 대해, MV 값의 수직 및 수평 성분을 2로 나누고 이를 크로마 움직임 보상 프로세스에 사용되는 정밀도로 버림(truncate)하거나 반올림(round)하는 것에 의해; YUV 4:2:2 포맷에 대해, MV 값의 수평 성분을 2로 나누고 이를 크로마 움직임 보상 프로세스에 사용되는 정밀도로 버림하거나 반올림하는 것에 의해) 크로마 블록에 대해 적용되는 MV 값은 크로마 분해능에서의 차이에 대해 조절하기 위해 스케일링 다운(scale down)되고 어쩌면 반올림된 MV 값일 수 있다. 움직임 보상기(455)는 현재 픽처에 대한 움직임 보상된 예측을 생성한다.
인코더(400) 내의 별도의 경로에서, 인트라 픽처 추정기(440)는 입력 비디오 신호(405)의 현재 픽처의 샘플 값 블록에 대한 인트라 픽처 예측을 어떻게 수행할지를 결정한다. 현재 픽처는 전체 또는 일부가 인트라 픽처 코딩을 사용하여 코딩될 수 있다. 현재 픽처의 재구성(438)의 값을 사용하여, 인트라 공간 예측에 대해, 인트라 픽처 추정기(440)는 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터 현재 픽처의 현재 블록의 샘플 값을 어떻게 공간적으로 예측할지를 결정한다. 또는, BV 값을 사용하는 인트라 BC 예측에 있어서, 인트라 픽처 추정기(440)는 현재 픽처 내의 상이한 후보 영역에 대한 현재 블록의 샘플 값의 변위를 추정한다.
인트라 픽처 추정기(440)는, 인트라 예측이 공간 예측 또는 인트라 BC 예측을 사용하는지를 나타내는 정보(예컨대, 인트라 블록마다의 플래그 값), (인트라 공간 예측에 대한) 예측 모드 방향, 및 (인트라 BC 예측에 대한) BV 값과 같은 인트라 예측 데이터(442)를 보조 정보로서 생성한다. 인트라 예측 데이터(442)는 헤더 포맷터/엔트로피 코더(490)에는 물론 인트라 픽처 예측기(445)에도 제공된다.
인트라 예측 데이터(442)에 따라, 인트라 픽처 예측기(445)는 현재 픽처의 이웃하는 이전에 재구성된 샘플 값으로부터 현재 픽처의 현재 블록의 샘플 값을 공간적으로 예측한다. 또는 인트라 BC 예측에 있어서, 인트라 픽처 예측기(445)는 현재 블록에 대한 BV 값에 의해 표시되는, 인트라 예측 영역의 이전에 재구성된 샘플 값을 사용하여 현재 블록의 샘플 값을 예측한다.
인트라/인터 스위치는 주어진 블록에 대한 예측(458)으로서 사용하기 위해 움직임 보상된 예측 또는 인트라 픽처 예측의 값을 선택한다. 잔차 코딩이 생략되지 않을 때, 예측(458)의 블록과 입력 비디오 신호(405)의 원래의 현재 픽처의 대응하는 부분 사이의 차이(있는 경우)는 잔차(418)의 값을 제공한다. 현재 픽처의 재구성 동안, 잔차 값이 인코딩/신호되었을 때, 재구성된 잔차 값들은 예측(458)과 결합되어, 비디오 신호(405)로부터의 원래 콘텐츠의 재구성(438)을 생성한다. 그렇지만, 손실 압축에서, 일부 정보가 비디오 신호(405)로부터 여전히 손실된다.
변환기/스케일러/양자화기(430)에서, 주파수 변환이 생략되지 않을 때, 주파수 변환기는 공간 영역 비디오 데이터를 주파수 영역(즉, 스펙트럼, 변환) 데이터로 변환시킨다. 블록 기반 비디오 코딩에 있어서, 주파수 변환기는 예측 잔차 데이터(또는 예측(458)이 널(null)인 경우, 샘플 값 데이터)의 블록에 이산 코사인 변환(DCT), 그의 정수 근사화(integer approximation), 또는 다른 유형의 순방향 블록 변환(forward block transform)(예컨대, 이산 사인 변환(discrete sine transform) 또는 그의 정수 근사화)을 적용하여, 주파수 변환 계수 블록을 생성한다. 인코더(400)는 또한 이러한 변환 단계가 생략된다는 것을 나타낼 수 있다. 스케일러/양자화기는 변환 계수를 스케일링하고 양자화한다. 예를 들어, 양자화기는 프레임 유닛으로, 타일 유닛으로, 슬라이스 유닛으로, 블록 유닛으로, 주파수 특정(frequency-specific) 유닛으로 또는 다른 유닛으로 변하는 양자화 계단 크기(quantization step size)로 데드존 스칼라 양자화(dead-zone scalar quantization)를 주파수 영역 데이터에 적용한다. 양자화된 변환 계수 데이터(432)는 헤더 포맷터/엔트로피 코더(490)에 제공된다. 주파수 변환이 생략되는 경우, 스케일러/양자화기는 예측 잔차 데이터(또는 예측(458)이 널인 경우, 샘플 값 데이터)의 블록을 스케일링 및 양자화하여, 헤더 포맷터/엔트로피 코더(490)에 제공되는 양자화된 값을 생성할 수 있다.
스케일러/역변환기(435)에서, 스케일러/역양자화기는 양자화된 변환 계수들에 대해 역스케일링 및 역양자화를 수행한다. 역 주파수 변환기는 역 주파수 변환을 수행하여, 재구성된 예측 잔차 값 블록 또는 재구성된 샘플 값 블록을 생성한다. 변환 스테이지가 생략된 경우, 역 주파수 변환도 생략된다. 이 경우에, 스케일러/역양자화기는 예측 잔차 데이터(또는 샘플 값 데이터)의 블록에 대해 역스케일링 및 역양자화를 수행하여, 재구성된 값을 생성할 수 있다. 잔차 값이 인코딩/신호되었을 때, 인코더(400)는 재구성된 잔차 값을 예측(458)의 값(예컨대, 움직임 보상된 예측 값, 인트라 픽처 예측 값)과 결합하여 재구성(438)을 형성한다. 잔차 값이 인코딩/신호되지 않았을 때, 인코더(400)는 예측(458)의 값을 재구성(438)으로서 사용한다.
인트라 픽처 예측의 경우, 재구성(438)의 값은 인트라 픽처 추정기(440) 및 인트라 픽처 예측기(445)에 피드백될 수 있다. 또한, 재구성(438)의 값이 후속 픽처의 움직임 보상된 예측을 위해 사용될 수 있다. 재구성(438)의 값이 추가로 필터링될 수 있다. 필터링 제어(460)는, 비디오 신호(405)의 주어진 픽처에 대해, 재구성(438)의 값에 대해 블록화 제거 필터링 및 SAO 필터링을 어떻게 수행할지를 결정한다. 필터링 제어(460)는 헤더 포맷터/엔트로피 코더(490) 및 병합기/필터(들)(465)에 제공되는 필터 제어 데이터(462)를 생성한다.
병합기/필터(들)(465)에서, 인코더(400)는 상이한 타일로부터의 콘텐츠를 픽처의 재구성된 버전에 병합한다. 인코더(400)는, 프레임에서의 경계에 걸쳐 불연속을 적응적으로 평활화하기 위해, 필터 제어 데이터(462)에 따라 블록화 제거 필터링 및 SAO 필터링을 선택적으로 수행한다. (도시되지 않은, 링잉 제거 필터링 또는 ALF와 같은) 다른 필터링이 대안적으로 또는 그에 부가하여 적용될 수 있다. 인코더(400)의 설정에 따라, 타일 경계가 선택적으로 필터링되거나 전혀 필터링되지 않을 수 있고, 인코더(400)는 이러한 필터링이 적용되었는지 여부를 나타내는 구문을 코딩된 비트스트림 내에 제공할 수 있다. 디코딩된 픽처 버퍼(470)는 후속하는 움직임 보상된 예측에서 사용하기 위해 재구성된 현재 픽처를 버퍼링한다.
헤더 포맷터/엔트로피 코더(490)는 일반 제어 데이터(422), 양자화된 변환 계수 데이터(432), 인트라 예측 데이터(442), 움직임 데이터(452) 및 필터 제어 데이터(462)를 포맷 지정하고 그리고/또는 엔트로피 코딩한다. MV 값이 예측 코딩될 수 있다. 예를 들어, 헤더 포맷터/엔트로피 코더(490)는, MV 예측 후에, 차분 MV 값에 대한 구문 요소와 같은 다양한 구문 요소의 엔트로피 코딩을 위해 지수 골롬 코딩(Exponential-Golomb coding)을 사용한다.
헤더 포맷터/엔트로피 코더(490)는 인코딩된 데이터를 코딩된 비디오 비트스트림(495)으로 제공한다. 코딩된 비디오 비트스트림(495)의 포맷은 HEVC 포맷, WMV(Windows Media Video) 포맷, VC-1 포맷, MPEG-x 포맷(예컨대, MPEG-1, MPEG-2, 또는 MPEG-4), H.26x 포맷(예컨대, H.261, H.262, H.263, H.264), 또는 다른 포맷의 변형 또는 확장일 수 있다.
구현 및 원하는 압축 유형에 따라, 인코더의 모듈이 추가되고, 생략되며, 다수의 모듈로 분할되고, 다른 모듈과 결합되며, 그리고/또는 유사한 모듈로 대체될 수 있다. 대안의 실시예에서, 상이한 모듈 및/또는 다른 구성의 모듈을 갖는 인코더가 기술되는 기법들 중 하나 이상을 수행한다. 인코더의 구체적인 실시예는 전형적으로 인코더(400)의 변형 또는 보완된 버전을 사용한다. 인코더(400) 내의 모듈들 간의 도시된 관계는 인코더에서의 정보의 일반적인 흐름을 나타내고; 간단함을 위해, 다른 관계는 도시되어 있지 않다.
V. 인코딩 동안의 MV 정밀도의 선택
이 섹션은 인코딩 동안의 MV(motion vector) 정밀도의 선택에 대한 다양한 접근법을 제시한다. 이 접근법은 인코딩 및 디코딩의 레이트 왜곡 성능 및/또는 계산 효율의 면에서 효과적인 압축을 용이하게 할 수 있다.
MV 정밀도를 선택하는 본원에 기술되는 접근법은 임의의 유형의 비디오를 인코딩할 때 적용될 수 있다. 그렇지만, 상세하게는, 본원에 기술되는 바와 같은 MV 정밀도의 선택은 화면 포착 콘텐츠(screen capture content)와 같은 특정의 인위적으로 생성된 비디오 콘텐츠를 인코딩할 때 성능을 향상시킬 수 있다.
A. 비디오의 유형
일반적으로, 화면 포착 비디오(화면 콘텐츠 비디오 또는 화면 포착 콘텐츠라고도 불리움)는 컴퓨터 화면 또는 다른 디스플레이에 대한 콘텐츠를 발생시키는 그래픽 렌더링 프로세스의 출력을 나타낸다. 이것은 현실 세계 물체의 카메라 센서 뷰로부터 포착되는 비디오 영상 또는 유사한 특성을 가지는 비디오를 지칭하는 자연스런 비디오와 대비된다. 화면 포착 비디오는, 카메라 포착 비디오 콘텐츠만과 달리(또는 그에 부가하여), 전형적으로 렌더링된 텍스트, 컴퓨터 그래픽, 애니메이션 발생 콘텐츠 또는 컴퓨터 디스플레이에 대한 렌더링 프로세스의 출력으로부터 포착된 다른 유사한 유형의 콘텐츠를 포함한다. 화면 포착 콘텐츠의 인코딩/디코딩에 대한 통상적인 시나리오는 원격 데스크톱 회의 및 자연스런 비디오 또는 다른 "혼합 콘텐츠" 비디오 상의 그래픽 또는 텍스트 오버레이의 인코딩/디코딩을 포함한다. 본원에 기술되는 혁신들 중 몇몇은 화면 포착 비디오 또는 다른 인위적으로 생성된 비디오의 인코딩을 위해 구성되어 있다. 이 혁신들은 또한 자연스런 비디오에 대해서도 사용될 수 있지만, 그만큼 효과적이지 않을 수 있다. 본원에 기술되는 다른 혁신들은 자연스런 비디오 또는 인위적으로 생성된 비디오의 인코딩에 효과적이다.
도 5는 화면 포착을 위한 입력을 제공할 수 있는 콘텐츠를 갖는 컴퓨터 바탕화면 환경(510)을 나타낸 것이다. 예를 들어, 화면 포착 비디오는 컴퓨터 바탕 화면(511) 전체의 일련의 영상을 나타낼 수 있다. 또는, 화면 포착 비디오는 게임 콘텐츠를 포함하는 앱 창(513), 웹 페이지 콘텐츠를 갖는 브라우저 창(512) 또는 워드 프로세서 콘텐츠를 갖는 창(514)과 같은, 컴퓨터 바탕화면 환경의 창들 중 하나에 대한 일련의 영상을 나타낼 수 있다.
컴퓨터에 의해 생성되는, 인위적으로 생성된 비디오 콘텐츠로서, 화면 포착 콘텐츠는, 비디오 카메라를 사용하여 포착되는 자연스런 비디오 콘텐츠와 비교하여, 비교적 적은 이산 샘플 값을 가지는 경향이 있다. 예를 들어, 화면 포착 콘텐츠의 영역은 종종 단일의 균일한 색상을 포함하는 반면, 자연스런 비디오 콘텐츠에서의 영역은 점진적으로 변하는 색상을 포함할 가능성이 보다 많다. 또한, 화면 포착 콘텐츠는 전형적으로, 콘텐츠가 (예컨대, 스크롤링으로 인해) 공간적으로 변위될 수 있더라도, 프레임마다 정확히 반복되는 독특한 구조(예컨대, 그래픽, 텍스트 문자)를 포함한다. 화면 포착 콘텐츠는 보통 높은 크로마 샘플링 분해능을 갖는 포맷(예컨대, YUV 4:4:4 또는 RGB 4:4:4)으로 인코딩되지만, 보다 낮은 크로마 샘플링 분해능을 갖는 포맷(예컨대, YUV 4:2:0, YUV 4:2:2)으로도 인코딩될 수 있다.
도 6은 어떤 자연스런 비디오(621)와 어떤 인위적으로 생성된 비디오 콘텐츠를 포함하는 혼합 콘텐츠 비디오(620)를 나타낸 것이다. 인위적으로 생성된 비디오 콘텐츠는 자연스런 비디오(621) 옆에 있는 그래픽(622) 및 자연스런 비디오(621) 아래쪽에 실행 중인 시세표시기(ticker)(623)를 포함한다. 도 5에 도시된 화면 포착 콘텐츠와 같이, 도 6에 도시된 인위적으로 생성된 비디오 콘텐츠는 비교적 적은 이산 샘플 값을 갖는 경향이 있다. 이는 또한 (예컨대, 스크롤링으로 인해) 프레임마다 정확히 반복되는 독특한 구조(예컨대, 그래픽, 텍스트 문자)를 갖는 경향이 있다.
화면 포착 비디오 또는 혼합 콘텐츠 비디오는 디스플레이 디바이스에 대한 출력 버퍼로부터 또는 프레임을 저장하는 하나 이상의 다른 버퍼로부터 주기적으로 읽힐 수 있다. 또는, 화면 포착 비디오는 (디스플레이 디바이스에 대한 출력 버퍼로부터 값을 주기적으로 읽거나, 운영 체제 모듈로부터의 디스플레이 명령을 가로채거나, 디스플레이될 샘플 값을 다른 방식으로 포착할 수 있는) 화면 포착 모듈로부터 제공될 수 있다. 화면 포착 비디오 또는 혼합 콘텐츠 비디오는 "라이브" 스트림으로부터 또는 저장소에 이전에 기록된 스트림으로부터 온 것일 수 있다.
B. 상이한 MV 정밀도
많은 인코딩 시나리오에서, 화면 포착 비디오 또는 다른 인위적으로 생성된 비디오 콘텐츠를 인코딩할 때, 대부분의 MV 값은 정수 샘플 공간 변위를 나타내고, 아주 적은 MV 값은 소수 샘플 공간 변위를 나타낸다. 이것은 전체적인 성능을 향상시키기 위해 MV 정밀도를 감소시키기 위한 기회들을 제공한다.
도 7a는 정수 샘플 공간 변위를 가지는 MV(720)를 사용한 움직임 보상을 나타낸 것이다. MV(720)는 현재 블록에 대한 참조 픽처에서의 동일 장소에 있는 위치(710)에 대한, 좌측으로 4 개의 샘플 그리고 위쪽으로 하나의 샘플의 공간 변위를 나타낸다. 예를 들어, 현재 픽처에서 위치 (64, 96)에 있는 4x4 현재 블록에 대해, MV(720)는 4x4 예측 영역(730) - 그의 위치는 참조 픽처에서 (60, 95)임 - 을 나타낸다. 예측 영역(730)은 참조 픽처에서 정수 샘플 위치에 재구성된 샘플 값을 포함한다. 인코더 또는 디코더는 예측 영역(730)의 값을 결정하기 위해 보간을 수행할 필요가 없다.
도 7b는 소수 샘플 공간 변위를 가지는 MV(721)를 사용한 움직임 보상을 나타낸 것이다. MV(721)는 현재 블록에 대한 참조 픽처에서의 동일 장소에 있는 위치(710)에 대한, 좌측으로 3.75 개의 샘플 그리고 위쪽으로 0.5 개의 샘플의 공간 변위를 나타낸다. 예를 들어, 현재 픽처에서 위치 (64, 96)에 있는 4x4 현재 블록에 대해, MV(721)는 4x4 예측 영역(731) - 그의 위치는 참조 픽처에서 (60.25, 95.5)임 - 을 나타낸다. 예측 영역(731)은 참조 픽처에서 소수 샘플 위치에 보간된 샘플 값을 포함한다. 인코더 또는 디코더는 예측 영역(731)의 샘플 값을 결정하기 위해 보간을 수행한다. 소수 샘플 공간 변위가 허용될 때, 현재 블록과 일치할 수 있는 보다 많은 후보 예측 영역이 있고, 따라서, 적어도 어떤 유형의 비디오 콘텐츠(예컨대, 자연스런 비디오)에 대해, 움직임 보상된 예측의 품질이 보통 향상된다.
비디오의 어떤 유닛에 대해 MV 정밀도가 정수 샘플 정밀도일 때, 유닛 내의 블록들에 대한 모든 MV 값은 정수 샘플 공간 변위를 나타낸다. 비디오의 어떤 유닛에 대해 MV 정밀도가 소수 샘플 정밀도일 때, 유닛 내의 블록에 대한 MV 값은 소수 샘플 공간 변위 또는 정수 샘플 공간 변위를 나타낼 수 있다. 즉, 비디오의 어떤 유닛에 대해 MV 정밀도가 소수 샘플 정밀도일 때, 유닛 내의 블록들에 대한 일부 MV 값은 소수 샘플 공간 변위를 나타낼 수 있는 반면, 유닛 내의 블록들에 대한 다른 MV 값은 정수 샘플 공간 변위를 나타낸다.
움직임 추정 및 움직임 보상을 사용하여 블록을 인코딩할 때, 인코더는 종종 블록의 샘플 값과 그의 움직임 보상된 예측 간의 샘플 유닛 차이(sample-by-sample difference)(잔차 값 또는 오차 값이라고도 불리움)를 계산한다. 잔차 값이 이어서 인코딩될 수 있다. 잔차 값에 대해, 인코딩 효율은 잔차 값의 복잡도 및 압축 프로세스의 일부로서 얼마나 많은 손실 또는 왜곡이 유입되는지에 의존한다. 일반적으로, 양호한 움직임 보상된 예측은, 잔차 값이 효율적으로 인코딩될 수 있는 작은 진폭의 차이이도록, 블록을 가깝게 근사화시킨다. 다른 한편으로, 좋지 않은 움직임 보상 예측은 종종 보다 큰 진폭의 값 - 효율적으로 인코딩하기가 보다 어려움 - 을 포함하는 잔차 값을 생성한다. 인코더는 전형적으로, 양호한 일치를 찾고 그로써 레이트 왜곡 성능을 향상시키려고 시도하면서, 움직임 추정을 수행하는 데 인코딩 시간의 대부분을 소비한다.
코덱이 정수 샘플 MV 정밀도를 갖는 MV 값을 사용할 때, 인코더 및 디코더는, MV 값이 정수 샘플 공간 변위를 나타내기 때문에, 움직임 보상을 위해 참조 픽처의 샘플 값들 간의 보간 동작을 수행할 필요가 없다. 코덱이 소수 샘플 MV 정밀도를 갖는 MV 값을 사용할 때, 인코더 및 디코더는 움직임 보상을 위해 참조 픽처의 샘플 값들 간의 보간 동작을 수행할 수 있지만(이는 적어도 소수 샘플 공간 변위를 나타내는 MV 값에 대해 계산 복잡도를 증가시킴), 움직임 보상된 예측은, 정수 샘플 MV 정밀도와 비교하여, 블록을 보다 가깝게 근사화시키는 경향이 있다(보다 적은 유효 값을 갖는 잔차 값을 가져옴).
C. MV 값의 표현
MV 값은 전형적으로 정수 값 - 그의 의미는 연관된 MV 정밀도에 의존함 - 을 사용하여 표현된다. 예를 들어, 정수 샘플 MV 정밀도에 대해, 1의 정수 값은 1 개의 샘플의 공간 변위를 나타내고, 2의 정수 값은 2 개의 샘플의 공간 변위를 나타내며, 이하 마찬가지이다. 예를 들어, 1/4 샘플 MV 정밀도에 대해, 1의 정수 값은 0.25 개의 샘플의 공간 변위를 나타낸다. 2, 3, 4 및 5의 정수 값은, 각각, 0.5 개, 0.75 개, 1.0 개 및 1.25 개의 샘플의 공간 변위를 나타낸다. MV 정밀도에 관계없이, 정수 값은 공간 변위의 크기를 나타낼 수 있고, 별도의 플래그 값은 변위가 마이너스인지 플러스인지를 나타낼 수 있다. 주어진 MV 값의 수평 MV 성분 및 수직 MV 성분이 2 개의 정수 값을 사용하여 표현될 수 있다. 이와 같이, MV 값을 표현하는 2 개의 정수 값의 의미는 MV 정밀도에 의존한다. 예를 들어, 2-샘플 수평 변위는 갖지만 수직 변위를 갖지 않는 MV 값에 대해, MV 정밀도가 1/4 샘플 MV 정밀도이면, MV 값은 (8, 0)으로서 표현된다. 그렇지만, MV 정밀도가 정수 샘플 MV 정밀도이면, MV 값은 (2, 0)으로서 표현된다.
인코딩된 비디오 데이터의 비트스트림에서의 MV 값은 전형적으로 (예컨대, MV 성분 별로) 엔트로피 코딩된다. MV 값이 또한 (예컨대, MV 성분 별로) 예측된 MV 값에 대해 차분 인코딩될 수 있다. 많은 경우에, MV 값은 예측된 MV 값과 같고, 따라서 차분 MV 값은, 아주 효율적으로 인코딩될 수 있는, 0이다. 차분 MV 값(또는, MV 예측이 사용되지 않는 경우, MV 값)은 지수 골롬 코딩, 컨텍스트 적응적 이진 산술 코딩 또는 다른 형태의 엔트로피 코딩을 사용하여 엔트로피 인코딩될 수 있다. MV 값(또는 차분 MV 값)과 인코딩된 비트 사이의 정확한 관계가, 일반적으로, 사용되는 엔트로피 코딩의 형태에 의존하지만, 보다 작은 값은, 보다 흔하기 때문에, 보다 효율적으로(즉, 보다 적은 비트를 사용하여) 인코딩되고, 보다 큰 값은, 덜 흔하기 때문에, 덜 효율적으로(즉, 보다 많은 비트를 사용하여) 인코딩된다.
D. 적응적 MV 정밀도 - 서문
이전의 3 개의 섹션을 요약하면, 정수 샘플 MV 정밀도를 갖는 MV 값을 사용하는 것은 MV 값을 신호하는 것과 연관된 비트 레이트를 감소시키고 (참조 픽처 내의 소수 샘플 위치에서의 샘플 값의 보간을 회피하는 것에 의해) 인코딩 및 디코딩의 계산 복잡도를 감소시키는 경향이 있지만, 움직임 보상된 예측의 품질을 감소시키고 따라서, 적어도 어떤 유형의 비디오 콘텐츠에 대해, 잔차 값의 진폭을 증가시킬 수 있다. 다른 한편으로, 소수 샘플 MV 정밀도를 갖는 MV 값을 사용하는 것은 MV 값을 신호하는 것과 연관된 비트 레이트를 증가시키고 (참조 픽처 내의 소수 샘플 위치에서의 샘플 값의 보간을 포함하는 것에 의해) 인코딩 및 디코딩의 계산 복잡도를 증가시키는 경향이 있지만, 움직임 보상된 예측의 품질을 향상시키고, 적어도 어떤 유형의 비디오 콘텐츠에 대해, 잔차 값의 진폭을 감소시킬 수 있다. 일반적으로, 계산 복잡도, MV 값을 신호하기 위한 비트 레이트, 및 움직임 보상된 예측의 품질이, 수확 체감점(point of diminishing returns)까지는, MV 정밀도가 (예컨대, 정수 샘플로부터 1/2 샘플로, 또는 1/2 샘플로부터 1/4 샘플로) 증가함에 따라 증가한다. 이와 동시에, MV 정밀도의 증가가 MV 값을 신호하는 데 필요한 비트 레이트를 증가시키는 경향이 있지만, 자연스런 콘텐츠를 인코딩할 때, 움직임 보상된 예측의 품질의 연관된 향상은 잔차 값의 적절한 근사값을 송신하는 데 필요한 비트 레이트를 감소시키고 그로써 적절한 픽처 품질로 비디오 콘텐츠를 인코딩하는 데 필요한 총 비트 레이트를 감소시킬 수 있다.
화면 포착 비디오 또는 다른 인위적으로 생성된 비디오 콘텐츠를 인코딩할 때, 소수 샘플 MV 정밀도의 (비트 레이트 및 계산 복잡도 측면에서의) 추가된 비용이 정당화되지 않을 수 있다. 예를 들어, 대부분의 MV 값이 정수 샘플 공간 변위를 나타내고, 아주 적은 MV 값이 소수 샘플 공간 변위를 나타내는 경우, 소수 샘플 MV 정밀도의 추가된 비용이 보장되지 않는다. 인코더는 움직임 추정 동안 소수 샘플 위치에서의 검색을 생략할 수 있다(그리고 소수 샘플 위치에서의 샘플 값을 결정하는 보간 동작을 생략할 수 있다). 이러한 콘텐츠에 대해, 정수 샘플 MV 정밀도를 갖는 MV 값을 사용함으로써, 움직임 보상된 예측의 품질에 대한 페널티가 그다지 없이, 비트 레이트 및 계산 복잡도가 감소될 수 있다.
소수 샘플 MV 정밀도가 다른 유형의 비디오 콘텐츠(예컨대, 카메라에 의해 포착된 자연스런 비디오)에 대해 여전히 유용할 수 있기 때문에, 인코더 및 디코더가 MV 정밀도 간에 스위칭하도록 구성될 수 있다. 예를 들어, 인코더 및 디코더가 화면 포착 비디오에 대해서는 정수 샘플 MV 정밀도를 사용할 수 있지만, 자연스런 비디오에 대해서는 소수 샘플 MV 정밀도(1/4 샘플 MV 정밀도 등)를 사용할 수 있다. 인코더가 MV 정밀도를 선택할 때 따를 수 있는 접근법이 다음 섹션에 기술되어 있다. 인코더는 선택된 MV 정밀도를 비트스트림에서의 하나 이상의 구문 요소를 사용하여 디코더로 신호할 수 있다.
MV 정밀도를 신호하는 하나의 접근법에서, MV 정밀도의 적응적 선택이 인에이블되어 있을 때, 인코더는 슬라이스 유닛으로 MV 정밀도를 선택한다. SPS(sequence parameter set: 시퀀스 파라미터 세트), PPS(picture parameter set: 픽처 파라미터 세트) 또는 다른 구문 구조에서의 플래그 값은 MV 정밀도의 적응적 선택이 인에이블되어 있는지를 나타낸다. 그러한 경우, 주어진 슬라이스에 대한 슬라이스 헤더 내의 하나 이상의 구문 요소는 그 슬라이스의 블록에 대한 선택된 MV 정밀도를 나타낸다. 예를 들어, 0의 플래그 값은 1/4 샘플 MV 정밀도를 나타내고, 1의 플래그 값은 정수 샘플 MV 정밀도를 나타낸다.
MV 정밀도를 신호하는 다른 접근법에서, 인코더는 픽처 유닛으로 또는 슬라이스 유닛으로 MV 정밀도를 선택한다. PPS 내의 구문 요소는 3 개의 MV 정밀도 모드 중 하나를 나타낸다: (0) PPS와 연관된 픽처의 슬라이스(들)의 MV 값에 대한 1/4 샘플 MV 정밀도, (1) PPS와 연관된 픽처의 슬라이스(들)의 MV 값에 대한 정수 샘플 MV 정밀도, 또는 (2) 슬라이스 헤더마다 신호되는 플래그 값에 의존하는 슬라이스-적응적 MV 정밀도, 여기서 슬라이스의 슬라이스 헤더 내의 플래그 값은 슬라이스의 MV 값에 대한 1/4 샘플 MV 정밀도 또는 정수 샘플 MV 정밀도를 나타낼 수 있다. 일 구현에서의 이 접근법에 관한 부가 상세에 대해서는, JCTVC-P0277를 참조하십시오.
MV 정밀도를 신호하는 또 다른 접근법에서, MV 정밀도의 적응적 선택이 인에이블되어 있을 때, 인코더는 CU 유닛으로 MV 정밀도를 선택한다. 주어진 CU에 대한 구조 내의 하나 이상의 구문 요소는 그 CU의 블록에 대한 선택된 MV 정밀도를 나타낸다. 예를 들어, CU에 대한 CU 구문 구조 내의 플래그 값은 CU와 연관된 모든 PU에 대한 MV 값이 정수 샘플 MV 정밀도 또는 1/4 샘플 MV 정밀도를 갖는지를 나타낸다. 일 구현에서의 이 접근법에 관한 부가 상세에 대해서는, JCTVC-P0283을 참조하십시오.
이 접근법들 중 임의의 것에서, 인코더 및 디코더는 수평 및 수직 MV 성분에 대해 상이한 MV 정밀도를 사용할 수 있다. 이것은 (스케일링되지 않은 차원에서는 정수 샘플 MV 정밀도를 사용하여 그리고 스케일링된 차원에서는 소수 샘플 MV 정밀도를 사용하여) 수평으로 또는 수직으로 스케일링된 화면 포착 비디오를 인코딩할 때 유용할 수 있다. 일부 구현에서, QP 값의 조절만을 통해서는 레이트 제어가 달성될 수 없는 경우, 인코더는 비트 레이트를 감소시키기 위해 화면 포착 비디오를 수평으로 또는 수직으로 크기 조정하고, 이어서 크기 조정된 비트 레이트를 인코딩할 수 있다. 디코더측에서, 비디오가 디코딩 후에 다시 그의 원래의 차원으로 스케일링된다. 인코더는 디코더로 수평 MV 성분에 대한 MV 정밀도를 (예컨대, 제1 플래그 값 또는 구문 요소를 사용해) 신호하고 또한 수직 MV 성분에 대한 MV 정밀도를 (예컨대, 제2 플래그 값 또는 구문 요소를 사용해) 신호할 수 있다.
보다 일반적으로, MV 정밀도의 적응적 선택이 인에이블되어 있을 때, 인코더는 어떤 방식으로 MV 정밀도를 선택하고 선택된 MV 정밀도를 신호한다. 예를 들어, SPS, PPS 또는 다른 구문 구조에서의 플래그 값은 MV 정밀도의 적응적 선택이 인에이블되어 있는지를 나타낼 수 있다. 적응적 MV 정밀도가 인에이블되어 있을 때, 시퀀스 계층 구문, 픽처 그룹 계층 구문("GOP 계층 구문"), 픽처 계층 구문, 슬라이스 계층 구문, 타일 계층 구문, 블록 계층 구문 또는 다른 구문 구조에서의 하나 이상의 구문 요소는 MV 값에 대한 선택된 MV 정밀도를 나타낼 수 있다. 또는, 시퀀스 계층 구문, GOP 계층 구문, 픽처 계층 구문, 슬라이스 헤더 계층 구문, 슬라이스 데이터 계층 구문, 타일 계층 구문, 블록 계층 구문 또는 다른 구문 구조에서의 하나 이상의 구문 요소는 상이한 MV 성분에 대한 선택된 MV 정밀도를 나타낼 수 있다. 2 개의 이용 가능한 MV 정밀도가 있을 때, 플래그 값은 2 개의 MV 정밀도 간의 선택을 나타낼 수 있다. 보다 많은 이용 가능한 MV 정밀도가 있을 때, 플래그 값은 그 MV 정밀도들 간의 선택을 나타낼 수 있다.
선택된 MV 정밀도(들)를 나타내는 구문 요소를 신호/파싱하기 위한 수정 이외에, 신호된 MV 값이 선택된 MV 정밀도에 따라 어떻게 해석되는지를 변경하기 위해 디코딩이 수정될 수 있다. MV 값이 어떻게 인코딩되고 재구성되는지의 상세는 MV 정밀도에 따라 달라질 수 있다. 예를 들어, MV 정밀도가 정수 샘플 정밀도일 때, 예측된 MV 값은 가장 가까운 정수로 반올림될 수 있고, 차분 MV 값은 정수 샘플 오프셋을 나타낼 수 있다. 또는, MV 정밀도가 1/4 샘플 정밀도일 때, 예측된 MV 값은 가장 가까운 1/4 샘플 오프셋으로 반올림될 수 있고, 차분 MV 값은 1/4 샘플 오프셋을 나타낼 수 있다. 또는, MV 값이 어떤 다른 방식으로 신호될 수 있다. MV 값이 정수 샘플 MV 정밀도를 갖고 비디오가 4:2:2 또는 4:2:0 크로마 샘플링을 사용할 때, 크로마 MV 값은 스케일링 등에 의해 도출될 수 있고, 그 결과 크로마에 대해 1/2 샘플 변위가 얻어질 수 있다. 또는, 크로마 MV 값이 정수 값으로 반올림될 수 있다.
E. MV 정밀도를 선택하는 접근법
비디오 인코딩 동안 MV 정밀도가 적응될 수 있을 때, 인코더가 비디오의 어떤 유닛에 대한 MV 정밀도를 선택할 때, 인코더는 비디오 소스로부터의 힌트에 기초하여 사용할 MV 정밀도(들)를 선택할 수 있다(이하의 접근법 1을 참조). 예를 들어, 비디오 소스는 비디오가 화면 포착 콘텐츠 또는 (카메라로부터 포착된) 자연스런 비디오라는 것을 나타낼 수 있다. 또는, 인코더는 다양한 MV 정밀도들의 전수적인 평가에 기초하여 MV 정밀도(들)를 선택할 수 있다(이하의 접근법 2를 참조). 또는, 인코더는 이전 유닛들로부터의 통계 데이터 및/또는 인코딩되고 있는 현재 유닛에 대한 통계 데이터의 분석에 기초하여 MV 정밀도(들)를 선택할 수 있다(이하의 접근법 3 및 접근법 4를 참조).
MV 정밀도를 선택하는 접근법들 중 일부는 화면 포착 인코딩 시나리오에 대해 적응되어 있다. 다른 접근법들은 보다 일반적으로 임의의 유형의 비디오 콘텐츠를 인코딩할 때 적용된다.
이 섹션에 기술되는 일부 예에서, 인코더는 1/4 샘플 MV 정밀도를 사용하는 것과 정수 샘플 MV 정밀도를 사용하는 것 중에 선택한다. 보다 일반적으로, 인코더는 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도, 1/4 샘플 MV 정밀도 및/또는 다른 MV 정밀도를 포함할 수 있는 다수의 이용 가능한 MV 정밀도 중에서 선택한다.
인코더가 비디오의 어떤 유닛에 대한 MV 정밀도를 선택할 때, 비디오의 유닛은 시퀀스, GOP, 픽처, 슬라이스, 타일, CU, PU, 다른 블록 또는 비디오의 다른 유형의 유닛일 수 있다. 복잡도와 유연성 간의 원하는 트레이드오프에 따라, 아주 국소적으로(예컨대, CU 유닛으로), 보다 큰 영역 단위로(예컨대, 타일 유닛으로 또는 슬라이스 유닛으로), 픽처 전체 유닛으로, 또는 보다 전역적인 유닛으로(예컨대, 인코딩 세션마다, 시퀀스마다, GOP 마다, 또는 검출된 장면 변화 사이의 일련의 픽처마다) MV 정밀도를 선택하는 것이 적절할 수 있다.
1. 애플리케이션, 운영 체제 또는 비디오 소스로부터의 힌트를 사용하는 접근법
인코더는 애플리케이션, 운영 체제 또는 비디오 소스에 의해 신호되는 힌트에 기초하여 MV 정밀도를 선택할 수 있다. 예를 들어, 힌트는 인코딩될 비디오 콘텐츠가 (자연스런 비디오 콘텐츠일 수 있는 삽입된 비디오 영역 없이), 워드 프로세서, 스프레드시트 애플리케이션, 또는 웹 브라우저와 같은, 특정의 애플리케이션에 의해 렌더링되었다는 것을 나타낼 수 있다. 이러한 애플리케이션에 의한 렌더링은 콘텐츠의 정수 샘플 공간 변위를 생성하는 경향이 있을 것이다. 이러한 힌트에 기초하여, 인코더는 정수 샘플 MV 정밀도를 선택할 수 있다. 보통 자연스런 비디오 콘텐츠를 렌더링하지 않는 워드 프로세서, 스프레드시트 애플리케이션, 웹 브라우저 또는 다른 애플리케이션에 의해 렌더링된 콘텐츠에 대해, 정수 샘플 MV 정밀도가 소수 샘플 MV 정밀도보다 바람직할 가능성이 있다. (그러나 비디오가 크기 조정된 경우, 소수 샘플 MV 정밀도가 바람직할 수 있다.)
또는, 힌트는 비디오 콘텐츠가 전형적으로 인위적으로 생성된 비디오 콘텐츠를 전달하는 화면 포착 모듈 또는 다른 비디오 소스에 의해 전달되었다는 것을 나타낼 수 있다. 이러한 콘텐츠에 대해, 정수 샘플 MV 정밀도가 소수 샘플 MV 정밀도보다 바람직할 가능성이 있고, 따라서 인코더는 정수 샘플 MV 정밀도를 선택한다. (그러나 비디오가 크기 조정된 경우, 소수 샘플 MV 정밀도가 바람직할 수 있다.)
다른 한편으로, 힌트가 비디오 콘텐츠가 카메라, DVD 또는 다른 디스크, 또는 튜너 카드에 의해 전달되거나, 비디오 플레이어에 의해 렌더링되었다는 것을 나타내는 경우, 인코더는 소수 샘플 MV 정밀도를 선택할 수 있다. 이러한 콘텐츠에 대해, 소수 샘플 MV 정밀도가 정수 샘플 MV 정밀도보다 바람직할 가능성이 있다.
힌트가 인코딩 세션에, 일련의 프레임에, 단일의 비디오 프레임에 또는 비디오 프레임의 일부(애플리케이션과 연관된 창에 대응하는 구역 등)에 적용될 수 있다.
어떤 경우에, 인코더는 비디오 콘텐츠의 속성에 관한 비디오 소스, 운영 체제 또는 애플리케이션에 의해 제공되는 힌트를 수신하지 않을 수 있거나 그를 해석하지 못할 수 있다. 또는, (예컨대, 자연스런 비디오 콘텐츠 및 인위적으로 생성된 비디오 콘텐츠를 포함하는 혼합 콘텐츠 비디오에 대해, 또는 크기 조정된 비디오에 대해) 힌트가 틀리거나 오해의 소지가 있을 수 있다. 이러한 경우에, 인코더는 어느 MV 정밀도(들)가 선택되어야 하는지를 결정하기 위해 다른 접근법을 사용할 수 있다.
2. 무차별 인코딩 접근법
MV 정밀도를 신호하는 다른 접근법 세트에서, 인코더는 상이한 MV 정밀도를 사용하여 비디오의 유닛을 여러 번(예컨대, 정수 샘플 MV 정밀도를 사용하여 한번, 1/4 샘플 MV 정밀도를 사용하여 한번) 인코딩한다. 인코더는 최상의 성능을 제공하는 MV 정밀도를 선택하고, 출력을 위한 유닛 인코딩할 때 선택된 MV 정밀도를 사용한다. 비디오의 유닛은 블록, PU, CU, 슬라이스, 타일, 픽처, GOP, 시퀀스 또는 비디오의 다른 유형의 유닛일 수 있다. 전형적으로, 인코더는 이러한 접근법에서 다수의 인코딩 패스(pass of encoding)를 수행한다.
어느 MV 정밀도가 최상의 성능을 제공하는지를 평가하기 위해, 인코더는 유닛의 인코딩 동안 상이한 MV 정밀도가 사용될 때 레이트 왜곡 비용을 결정하고, 가장 낮은 레이트 왜곡 비용을 갖는 옵션을 선택할 수 있다. 레이트 왜곡 비용은 왜곡 비용(D) 및 비트 레이트 비용(R)을 가지며, 왜곡 비용에 대해 비트 레이트 비용을 가중시키거나(D+λR) 그 반대인(R+λD) 인자(λ)(종종 라그랑지 승수라고 불리움)를 갖는다. 비트 레이트 비용은 추정된 또는 실제 비트 레이트 비용일 수 있다. 일반적으로, 왜곡 비용은 원래의 샘플과 재구성된 샘플 간의 비교에 기초한다. 왜곡 비용은 SAD(sum of absolute differences), SAHD(sum of absolute Hadamard-transformed differences) 또는 다른 SATD(sum of absolute transformed differences), SSE(sum of squared errors), MSE(mean squared error), 평균 분산(mean variance) 또는 다른 왜곡 메트릭으로서 측정될 수 있다. 인자(λ)는 인코딩 동안 달라질 수 있다(예컨대, 양자화 계단 크기(quantization step size)가 보다 클 때 비트 레이트 비용의 상대 가중치를 증가시킴). 레이트 왜곡 비용은 보통 상이한 MV 정밀도 옵션들의 성능의 가장 정확한 평가를 제공하지만, 또한 가장 높은 계산 복잡도를 갖는다.
인코더는 레이트 왜곡 분석을 정수 샘플 MV 정밀도 옵션 쪽으로 바이어싱시키기 위해 레이트 왜곡 비용 함수의 항들 중 하나 이상을 변화시킬 수 있다. 예를 들어, 다수의 MV 정밀도 중에서 결정하기 위해 레이트 왜곡 분석을 사용하여 비디오의 어떤 유닛에 대한 MV 정밀도를 결정할 때, 레이트 왜곡 분석은 왜곡 비용을 스케일링하는 것, 왜곡 비용에 페널티를 부가하는 것, 비트 레이트 비용을 스케일링하는 것, 비트 레이트 비용에 페널티를 부가하는 것, 및/또는 라그랑지 승수 인자를 조절하는 것에 의해 정수 샘플 MV 정밀도 쪽으로 바이어싱된다. 소수 샘플 MV 정밀도를 평가할 때, 인코더는 (예컨대, 1 초과의 인자에 의해) 왜곡 비용을 스케일링 업(scale up)하고, (1 초과의 인자에 의해) 비트 레이트 비용을 스케일링 업하며, 왜곡 페널티를 부가하고, 비트 레이트 페널티를 부가하며, 그리고/또는 보다 큰 라그랑지 승수 인자를 사용할 수 있다. 또는, 정수 샘플 MV 정밀도를 평가할 때, 인코더는 (예컨대, 1 미만의 인자에 의해) 왜곡 비용을 스케일링 다운하고, (1 미만의 인자에 의해) 비트 레이트 비용을 스케일링 다운하며, 그리고/또는 보다 작은 라그랑지 승수 인자를 사용할 수 있다.
인코더는 인코딩 동안 정수 샘플 MV 정밀도 쪽으로의 또는 그 반대쪽으로의 바이어스의 정도를 변화시킬 수 있다. 예를 들어, 인코더는 정수 샘플 MV 값이 비디오 콘텐츠를 인코딩하는 데 보다 적절할 가능성이 있는 신뢰 수준에 따라 정수 샘플 MV 정밀도 쪽으로의 바이어스를 조절할 수 있다(예컨대, 비디오 콘텐츠가 인위적으로 생성된 콘텐츠일 가능성이 있는 경우 정수 샘플 MV 정밀도 쪽으로의 바이어스를 증가시킴). 또는, 인코더는 인코딩 및/또는 디코딩에 대한 계산 능력에 따라 정수 샘플 MV 정밀도 쪽으로의 바이어스를 조절할 수 있다(예컨대, 이용 가능한 계산 능력이 보다 낮은 경우 정수 샘플 MV 정밀도 쪽으로의 바이어스를 증가시킴).
대안적으로, 인코더는 어느 MV 정밀도가 최상의 성능을 제공하는지를 평가하기 위해 다른 접근법을 사용할 수 있다. 예를 들어, 인코더는, 주어진 양자화 계단 크기에 대해, 어느 MV 정밀도가 가장 적은 비트의 인코딩된 데이터를 가져오는지를 측정한다. 또는, 인코더는 상이한 MV 정밀도를 사용하는 인코딩에 대한 왜곡만을 평가한다. 또는, 인코더는 단일의 인코딩 패스에서 결정할 정도로 충분히 간단할 수 있는, 정수 샘플 MV 정밀도와 비교하여 소수 샘플 MV 정밀도에 대한 왜곡 감소 이점과 같은 보다 간단한 척도를 사용한다. 예를 들어, 인코더는, 정수 샘플 MV 정밀도가 사용될 때와 비교하여, 소수 샘플 MV 정밀도가 사용될 때의 (SAD, SATD, TSE, MSE, 또는 다른 왜곡 메트릭의 측면에서의) 왜곡 감소의 양을 검사한다.
무차별 인코딩 접근법은 계산 집중적일 수 있다. 무차별 인코딩 접근법은, 고정 MV 정밀도를 사용하는 인코딩과 비교하여, 어쩌면 상당한 부가 계산, 부가 메모리 저장소, 및 부가 메모리 읽기 및 쓰기 동작을 필요로 한다.
3. 콘텐츠 분석을 사용하는 접근법
MV 정밀도를 신호하는 다른 접근법 세트에서, 인코더는 입력 비디오 콘텐츠 및/또는 인코딩된 비디오 콘텐츠의 분석에 기초하여 비디오의 어떤 유닛에 대한 MV 정밀도를 선택한다. 비디오의 유닛은 블록, PB, PU, CU, CTU, 서브매크로블록 파티션, 매크로블록, 슬라이스, 타일, 픽처, GOP, 시퀀스 또는 비디오의 다른 유형의 유닛일 수 있다.
도 8은 인코딩 동안 MV 정밀도를 적응시키는 기법(800)을 나타낸 것이다. 기법(800)은 도 3 또는 도 4a 및 도 4b를 참조하여 기술된 것과 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다. 기법(800)에 따르면, 비디오의 인코딩 동안, 인코더는 비디오의 유닛들에 대한 다수의 MV 정밀도 중에서 MV 정밀도를 결정한다. 다수의 MV 정밀도는 하나 이상의 소수 샘플 MV 정밀도는 물론 정수 샘플 MV 정밀도를 포함할 수 있다. 예를 들어, 다수의 MV 정밀도는 정수 샘플 MV 정밀도 및 1/4 샘플 MV 정밀도를 포함할 수 있다. 또는, 다수의 MV 정밀도는 정수 샘플 MV 정밀도, 1/2 샘플 MV 정밀도 및 1/4 샘플 MV 정밀도를 포함할 수 있다.
구체적으로는, 비디오의 어떤 유닛을 인코딩할 때, 인코더는 MV 정밀도를 변경할지를 결정한다(810). 인코딩의 시작에서, 인코더는 처음에 MV 정밀도를 기본값에 따라 설정하거나, MV 정밀도를 변경하는 것처럼 진행할 수 있다. 비디오의 나중의 유닛에 대해, 인코더는 (하나 이상의 이전에 인코딩된 유닛에 대해 사용된) 현재 MV 정밀도를 사용하거나 MV 정밀도를 변경할 수 있다. 예를 들어, 인코더는 정의된 이벤트의 발생 시에(예컨대, 문턱값 개수의 유닛의 인코딩 후에, 장면 변화 후에, 비디오의 유형이 변했다는 결정 후에) MV 정밀도를 변경하기로 결정할 수 있다.
MV 정밀도를 변경하기 위해, 인코더는 비디오에 관한 정보를 수집한다(820). 일반적으로, 수집된 정보는 입력 비디오의 특성 또는 인코딩된 비디오의 특성일 수 있다. 수집된 정보는 인코딩되고 있는 현재 유닛에 관련되어 있고 그리고/또는 비디오의 이전에 인코딩된 유닛에 관련되어 있을 수 있다. (수집된 정보가 비디오의 하나 이상의 이전에 인코딩된 유닛에 관련되어 있을 때, 이러한 정보의 수집(820)은 이전 유닛(들)의 인코딩 이전에, 그 동안에 또는 그 후에 일어날 수 있다. 이 수집(820)은 도 8에 도시된 타이밍과 상이하고, MV 정밀도를 변경하는 것에 관한 결정(810)에 관계없이 일어난다.) 인코더는 이어서 수집된 정보에 적어도 부분적으로 기초하여 비디오의 유닛에 대한 MV 정밀도를 선택한다(830).
일 예로서, 인코더는 현재 유닛에 대한 샘플 값을 수집할 수 있다. 적은 수의 이산 샘플 값의 존재는 화면 포착 콘텐츠를 나타내고, 따라서 정수 샘플 MV 정밀도가 선택되어야만 한다는 것을 암시하는 경향이 있다. 다른 한편으로, 많은 수의 이산 샘플 값의 존재는 자연스런 비디오를 나타내고, 따라서 소수 샘플 MV 정밀도가 선택되어야만 한다는 것을 암시하는 경향이 있다. 샘플 값은 히스토그램으로서 편성될 수 있다. 샘플 값은 YUV 색 공간에서의 루마(Y) 샘플로부터만, YUV 색 공간에서의 루마는 물론 크로마(U, V) 샘플로부터, RGB 색 공간에서의 R, G 및 B 샘플로부터, 또는 RGB 색 공간에서의 G(또는 R 또는 B) 샘플로부터만 수집될 수 있다. 예를 들어, MV 정밀도를 선택할 때, 인코더는 수집된 샘플 값 중에서 독특한 샘플 값들의 개수를 결정한다. 인코더는 개수를 문턱값과 비교한다. 개수가 문턱값보다 낮으면, 인코더는 정수 샘플 MV 정밀도를 선택한다. 개수가 문턱값보다 높으면, 인코더는 소수 샘플 MV 정밀도를 선택한다. 경계 조건(개수가 문턱값과 같은 것)은, 구현에 따라, 어느 한 옵션을 사용하여 처리될 수 있다. 또는, 인코더는 수집된 샘플 값으로부터의 통계를 다른 방식으로 고려한다. 예를 들어, 인코더는 x 개의 가장 흔한 수집된 샘플 값이 샘플 값들의 y% 초과를 차지하는지를 결정한다. 그러한 경우, 인코더는 정수 샘플 MV 정밀도를 선택하고; 그렇지 않은 경우, 인코더는 소수 샘플 MV 정밀도를 선택한다. x 및 y의 값은 구현에 의존한다. x의 값은 10 또는 어떤 다른 개수일 수 있다. y의 값은 80, 90 또는 100보다 작은 어떤 퍼센트일 수 있다.
다른 예로서, 인코더는 각자의 MV 정밀도로 인코딩된 현재 유닛의 블록들에 대한 왜곡 척도를 수집할 수 있다. 예를 들어, 인코더는, 정수 샘플 MV 정밀도와 비교하여, 소수 샘플 MV 정밀도를 사용할 때의 왜곡의 개선(감소)을 기록한다. MV 정밀도를 선택할 때, 인코더는 왜곡의 감소가 MV 정밀도의 증가를 정당화시키는지를 결정한다.
다른 예로서, 인코더는 하나 이상의 이전 유닛에 대한 (소수 샘플 MV 정밀도를 가지는) MV 값을 수집할 수 있다. 수집된 MV 값은 그의 소수 부분의 값에 따라, 예컨대, 1/4 샘플 MV 정밀도 MV 값에 대해, 0의 소수 부분을 가지는 MV 값에 대한 빈, 0.25의 소수 부분을 가지는 MV 값에 대한 빈, 0.5의 소수 부분을 가지는 MV 값에 대한 빈, 및 0.75의 소수 부분을 가지는 MV 값에 대한 빈을 갖는 히스토그램으로 편성될 수 있다. 이 접근법의 저복잡도 변형이 다음 섹션에서 기술된다.
다른 예로서, 인코더는 소수 샘플 MV 정밀도를 사용하여 인코딩된 블록에 대한 MV 데이터(차분 MV 값)에 대한 인코딩된 비트의 개수에 관한 정보를 수집할 수 있다. 차분 MV 값에 대한 낮은 평균 비트 수는 규칙적인(예측 가능한) 움직임을 나타내고, 정수 샘플 MV 정밀도가 적절할 때 보다 통상적이다. 차분 MV 값에 대해 사용되는 높은 평균 비트 수는 소수 샘플 MV 정밀도가 적절할 때 보다 통상적이다. MV 정밀도를 선택할 때, 인코더는 차분 MV 값에 대한 인코딩된 비트의 개수들의 평균(또는 중간(median)) 비트 수를 측정한다. 인코더는 측정을 문턱값과 비교한다. 측정이 문턱값보다 낮으면, 인코더는 정수 샘플 MV 정밀도를 선택한다. 측정이 문턱값보다 높으면, 인코더는 소수 샘플 MV 정밀도를 선택한다. 경계 조건(측정이 문턱값과 같은 것)은, 구현에 따라, 어느 한 옵션을 사용하여 처리될 수 있다.
다른 예로서, 유닛을 인코딩할 때, 인코더는 유닛의 블록(예컨대, PU)마다 다수의 MV 정밀도를 평가하고, 어느 MV 정밀도가 그 블록에 대한 최상의 성능을 제공하는지를 나타내는 정보를 블록마다 수집한다. 인코더는 블록이 정수 샘플 MV 정밀도를 사용하여 인코딩될 때의 레이트 왜곡 비용(예컨대, D+λR)을 결정하고, 또한 블록이 소수 샘플 MV 정밀도를 사용하여 인코딩될 때의 레이트 왜곡 비용(예컨대, D+λR)을 결정할 수 있다. 인코더는 다수의 MV 정밀도 각각이 유닛 내의 각자의 블록에 대해 몇번 최상인지를 결정하고, 가장 큰 카운트를 갖는 MV 정밀도를 선택한다. 예를 들어, 픽처 내의 블록들 각각에 대해, 인코더는 블록이 정수 샘플 MV 정밀도를 사용하여 인코딩될 때의 레이트 왜곡 비용을 결정하고, 또한 블록이 1/4 샘플 MV 정밀도를 사용하여 인코딩될 때의 레이트 왜곡 비용을 결정한다. 인코더는 정수 샘플 MV 정밀도가 보다 나은 횟수 및 1/4 샘플 MV 정밀도가 보다 나은 횟수를 카운트하고, 둘 중 높은 것을 선택한다. 대안적으로, 인코더는 정수 샘플 MV 정밀도가 유닛의 블록들에 대해 몇번 최상인지의 카운트를 결정하고, 이어서 카운트가 유닛 내의 블록들의 개수의 문턱값 퍼센트보다 높은 경우에만 정수 샘플 MV 정밀도를 선택한다. 일부 구현에서, 인코더는 임의의 값의 MV를 갖는 블록들을 고려한다. 다른 구현에서, 인코더는 영이 아닌 값의 MV를 갖는 블록들만을 고려한다. 주어진 유닛에 대해 사용된 MV 정밀도 모드에 관계없이, 하나 이상의 후속 유닛에 대한 MV 정밀도를 선택하기 위해, 다수의 MV 정밀도의 이러한 블록별 평가가 주어진 유닛의 블록들에 대해 수행될 수 있다. 또는, 주어진 유닛에 대한 MV 정밀도를 선택하기 위해 주어진 유닛에 대해 다수의 MV 정밀도의 블록별 평가가 수행될 수 있다.
대안적으로, 인코더는 정보를 수집하고 선택된 정보에 적어도 부분적으로 기초하여 MV 정밀도를 선택하는 다른 접근법을 사용한다.
도 8로 돌아가서, MV 정밀도가 변했든 그렇지 않든 간에, 인코더는 선택된 MV 정밀도를 사용하여 유닛을 인코딩한다(840). 비디오의 유닛 내의 블록(예컨대, PU, 매크로블록, 또는 다른 블록)에 대한 MV 값은 선택된 MV 정밀도를 갖는다. 인코더는 현재 유닛에 대한 인코딩된 데이터를, 예컨대, 비트스트림으로 출력한다. 인코딩된 데이터는 선택된 MV 정밀도를 나타내는 구문 요소를 포함할 수 있다.
인코더는 다음 유닛을 계속할지 여부를 결정한다(850). 그러한 경우, 인코더는 다음 유닛에 대해 MV 정밀도를 변경할지를 결정한다(810). 이와 같이, MV 정밀도가 각각의 유닛에 대해(예컨대, 세그먼트별로, GOP별로, 픽처별로, 슬라이스별로, CTU별로, CU별로, PU별로, PB별로, 매크로블록별로, 서브매크로블록 파티션별로) 선택될 수 있다. 또는, 복잡도를 감소시키기 위해, 유닛에 대한 MV 정밀도가 때때로(예컨대, 주기적으로 또는 정의된 이벤트의 발생 시에) 변경되고, 하나 이상의 후속 유닛에 대해 반복될 수 있다.
인코더가 픽처마다 동일한 타일 패턴을 사용할 때, 인코더는 픽처마다 타일별 MV 정밀도를 반복할 수 있다. 픽처마다 동일한 장소에 있는 타일이 동일한 MV 정밀도를 사용할 수 있다. 이와 유사하게, 픽처마다 동일한 장소에 있는 슬라이스가 동일한 MV 정밀도를 사용할 수 있다. 예를 들어, 비디오가 컴퓨터 바탕 화면을 나타내고, 바탕 화면의 일부가 자연스런 비디오 콘텐츠를 디스플레이하는 창을 갖는 것으로 가정한다. 픽처마다 바탕 화면의 그 영역 내에서 소수 샘플 MV 정밀도가 사용될 수 있는 반면, 텍스트 또는 다른 렌더링된 콘텐츠를 보여주는 다른 구역들은 정수 샘플 MV 정밀도를 사용하여 인코딩된다.
이 접근법 세트에서, 인코더는 단일 패스 인코딩을 사용할 수 있다. 인코딩되고 있는 비디오의 현재 유닛에 대해, 현재 유닛에 대한 선택된 MV 정밀도는 (시간 순서, 출력 순서 또는 디스플레이 순서라고도 불리우는 입력 순서가 아니라, 디코딩 순서 또는 비트스트림 순서라고도 불리우는 인코딩 순서에서) 비디오의 하나 이상의 이전 유닛로부터 수집된 정보에 적어도 부분적으로 의존할 수 있다.
대안적으로, 이 접근법 세트에서, 인코더는 다중 패스 인코딩 또는 짧은 미리보기 창(look-ahead window)을 갖는 인코딩(때때로 1.5 패스 인코딩(1.5-pass encoding)이라고 불리움)을 사용할 수 있다. 인코딩되고 있는 비디오의 현재 유닛에 대해, 선택된 MV 정밀도는 현재 유닛로부터의 수집된 정보에 적어도 부분적으로 의존한다. 현재 유닛에 대한 선택된 MV 정밀도는 또한 (입력 순서가 아니라 인코딩 순서에서) 비디오의 하나 이상의 이전 유닛로부터의 수집된 정보에 적어도 부분적으로 의존할 수 있다.
이 접근법 세트에서, 인코더는 정수 샘플 MV 정밀도가 적절한 신뢰 수준에 적어도 부분적으로 기초하여 정수 샘플 MV 정밀도 쪽으로의 또는 그 반대쪽으로의 바이어스의 양을 조절할 수 있다. 인코더는 또한 인코딩 및/또는 디코딩의 계산 능력에 적어도 부분적으로 기초하여 정수 샘플 MV 정밀도 쪽으로의 또는 그 반대쪽으로의 바이어스의 양을 조절할 수 있다(보다 적은 계산 능력이 이용 가능한 경우 계산 복잡도를 감소시키기 위해 정수 샘플 MV 정밀도를 우선시함). 예를 들어, 정수 샘플 MV 정밀도의 선택을 우선시하기 위해, 인코더는, 정수 샘플 MV 정밀도가 선택될 가능성이 보다 많도록 하기 위해, 비교 동작에서 사용되는 문턱값을 조절할 수 있다.
이 접근법 세트에서, 선택된 MV 정밀도는 비디오의 유닛 내의 블록들에 대한 MV 값들의 수평 MV 성분 및/또는 수직 MV 성분에 대한 것일 수 있고, 여기서 수평 MV 성분 및 수직 MV 성분은 상이한 MV 정밀도를 갖도록 허용되어 있다. 또는, 선택된 MV 정밀도는 비디오의 유닛 내의 블록들에 대한 MV 값들의 수평 MV 성분 및 수직 MV 성분 둘 다에 대한 것일 수 있고, 여기서 수평 MV 성분 및 수직 MV 성분은 동일한 MV 정밀도를 갖는다.
이 접근법 세트에서, (예컨대, 비트스트림에서의) 인코딩된 비디오는 유닛에 대한 선택된 MV 정밀도를 나타내는 하나 이상의 구문 요소를 포함한다. 대안적으로, 인코딩된 비디오는 유닛에 대한 선택된 MV 정밀도를 나타내는 어떤 구문 요소도 갖지 않을 수 있다(이하에서 비규범적 접근법에 관한 섹션을 참조). 예를 들어, 비트스트림이 소수 샘플 MV 정밀도를 갖는 MV 값의 시그널링을 지원하는 경우라도, 인코더는 0의 소수 부분을 갖는 MV 값만을 사용하도록 비디오의 유닛에 대한 움직임 추정을 제약할 수 있다. 이것은 보간 동작을 회피함으로써 인코딩 및 디코딩의 계산 복잡도를 감소시킬 수 있다.
4. 저복잡도 콘텐츠 분석을 사용하는 접근법
의사 결정 프로세스를 단순화시키기 위해, 인코더는 MV 정밀도를 선택하기 전에 보다 작은 데이터 세트를 고려하거나 MV 정밀도를 선택할 때 보다 간단한 결정 논리를 사용하여, 다중 인코딩 패스를 피할 수 있다.
도 9는 저복잡도 접근법을 사용하여 인코딩 동안 MV 정밀도를 적응시키는 기법(900)을 나타낸 것이다. 기법(900)은 도 3 또는 도 4a 및 도 4b를 참조하여 기술된 것과 같은 인코더에 의해 또는 다른 인코더에 의해 수행될 수 있다. 기법(900)은, 도 8을 참조하여 기술된 바와 같이, 비디오에 관한 정보를 수집하고 수집된 정보에 적어도 부분적으로 기초하여 MV 정밀도를 선택하는 하나의 접근법을 상세히 설명한다.
기법(900)에 따르면, 비디오의 인코딩 동안, 인코더는 비디오의 어떤 유닛에 대한 MV 정밀도를 결정한다. 유닛에 대한 MV 정밀도를 결정할 때, 인코더는 소수 샘플 MV 정밀도를 가지는 MV 값 세트를 식별한다(910). MV 값 세트는 영 값의 MV 및 영이 아닌 값의 MV를 포함하도록 허용될 수 있다. 또는, MV 값 세트는 영이 아닌 값의 MV만을 포함하도록 제약될 수 있다. 또는, MV 값 세트는 특정 블록 크기 이상의 블록들로부터의 영이 아닌 값의 MV만을 포함하도록 추가로 제약될 수 있다.
인코더는 0의 소수 부분을 가지는 MV 값들의, MV 값 세트 내에서의, 출현율(prevalence)에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택한다(920). 출현율은 0의 소수 부분을 가지는 MV 값 세트의 분율(fraction)로 측정될 수 있다. 예를 들어, 픽처에 대해, 인코더는 0의 소수 부분을 가지는 MV 값의 퍼센트를 결정할 수 있다. 또는, MV 값 세트를 사용하는 영역 또는 영역 세트에 대해, 출현율은 0의 소수 부분을 가지는 그 영역 또는 영역 세트의 분율로 측정될 수 있다. 분율이 문턱값을 초과하면, 유닛에 대한 선택된 MV 정밀도는 정수 샘플 MV 정밀도이다. 분율이 문턱값을 초과하지 않으면, 유닛에 대한 선택된 MV 정밀도는 소수 샘플 MV 정밀도이다. 경계 조건(분율이 문턱값과 같은 것)은, 구현에 따라, 어느 한 옵션을 사용하여 처리될 수 있다.
유닛에 대한 MV 정밀도의 선택(920)은 또한, 문턱값 양의 영이 아닌 값의 MV들이 있으면 정수 샘플 MV 정밀도로의 스위칭이 허용되도록, 영이 아닌 값의 MV들의 출현율에 적어도 부분적으로 기초할 수 있다. 영이 아닌 값의 MV들의 출현율은 영이 아닌 값의 MV들인 MV 값들의 분율로, 영이 아닌 값의 MV들을 사용하는 블록들의 개수로, 또는 영이 아닌 값의 MV들을 사용하는 영역 또는 영역 세트의 분율로 측정될 수 있다. 이 경우에, 소수 샘플 MV 정밀도를 가지는 MV 값 세트는 영역 또는 영역 세트의 영이 아닌 값의 MV 들 중에서 식별될 수 있다. 이와 같이, 인코더는 영이 아닌 값의 MV들인 MV 세트 내에서의 0의 소수 부분을 가지는 영이 아닌 값의 MV들의 출현율을 고려할 수 있다. 예를 들어, 인코더는 2 개의 조건이 충족되면 정수 샘플 MV 정밀도로 스위칭한다: (1) 충분히 많은 양의 영이 아닌 값의 MV들이 검출되는 것, 및 (2) 그 영이 아닌 값의 MV 세트 내에서, 0의 소수 부분을 갖는 것이 충분히 많은 것(또는 대안적으로, 영이 아닌 소수 부분을 갖는 것이 충분히 적은 것). 영이 아닌 값의 MV의 출현율과 0의 소수 부분을 가지는 MV 값의 출현율은 (MV 값의 연관된 블록 크기에 관계없이) MV 값을 카운트하는 것에 의해 또는 (예컨대, 일부 MV 값이 다른 것보다 더 큰 블록에 적용되기 때문에) MV 값에 대한 연관된 블록 크기를 고려하는 것에 의해 결정될 수 있다.
인코더는 유닛에 대한 선택된 MV 정밀도를 사용하여 유닛을 인코딩한다. 비디오의 유닛 내의 블록(예컨대, PU, 매크로블록, 또는 다른 블록)에 대한 MV 값은 유닛에 대한 선택된 MV 정밀도를 갖는다. 인코더는 현재 유닛에 대한 인코딩된 데이터를, 예컨대, 비트스트림으로 출력한다. 인코딩된 데이터는 유닛에 대한 선택된 MV 정밀도를 나타내는 구문 요소를 포함할 수 있다.
인코더가 MV 정밀도를 설정하는 데 소비하는 시간의 양을 감소시키기 위해, 유닛에 대해 정수 샘플 MV 정밀도가 선택된 후에, 어떤 이벤트가 MV 정밀도를 소수 샘플 MV 정밀도로 스위칭 백시킬 때까지, 선택된 MV 정밀도가 비디오의 후속 유닛들에 대해 사용될 수 있다. 예를 들어, 이벤트는 정의된 수의 유닛을 인코딩하는 것, 장면 변화, 또는 인코딩 동안의 관찰에 기초하여, 소수 샘플 MV 정밀도로의 스위칭 백이 유익할 것이라는 결정일 수 있다.
하나의 예시적인 구현에서, 인코더는 비디오의 어떤 유닛(예컨대, 픽처, 타일, 슬라이스 또는 CU)를 한번만 인코딩한다. 먼저, 인코더는 1/4 샘플 MV 정밀도를 사용하여 유닛을 인코딩한다. 인코딩 동안, 인코더는 MV 값의 소수 부분이 0인지 여부를 결정한다. 예를 들어, 인코더는 MV 값의 어떤 분율이 영이 아닌 소수 부분을 갖는지를 측정한다. 또는, 일부 MV 값이 다른 것보다 더 큰 픽처 영역에 영향을 미치기 때문에, 인코더는 인터 픽처 예측된 영역(들)의 어떤 분율이 영이 아닌 소수 부분을 갖는 MV 값을 사용하는지를 측정한다(MV 값의 카운트가 아니라 면적을 측정함). 분율이 (구현에 의존하고, 예를 들어, 75%인) 문턱값을 초과하면, 인코더는 비디오의 하나 이상의 후속 유닛에 대해 정수 샘플 MV 정밀도로 스위칭한다.
이 예시적인 구현에서, 인코더가 정수 샘플 MV 정밀도로 스위칭한 후에, 인코더는 그 정수 샘플 MV 정밀도를 무한히 또는 정의된 이벤트가 소수 샘플 MV 정밀도로의 스위칭 백을 트리거할 때까지 적어도 일시적으로 유지할 수 있다. 이벤트는, 예를 들어, 특정의 수의 유닛(예컨대, 100 개의 유닛)의 인코딩일 수 있다. 또는, 이벤트는 장면 변화일 수 있다. 또는, 이벤트는, 인코딩 동안 수집된 통계에 기초하여, 소수 샘플 MV 정밀도로의 스위칭 백이 유익할 가능성이 많다는 결정일 수 있다. (이러한 통계는 어떤 제한된 양의 면적의 인코딩 동안 소수 샘플 MV 정밀도가 그 면적에 대해 더 나을 것인지를 결정하기 위해 수집되고, 이어서 하나 이상의 유닛에 대한 MV 정밀도를 스위칭하기 위해 적용될 수 있다.)
비디오 콘텐츠가 자연스런 비디오 콘텐츠이든 인위적으로 생성된 비디오 콘텐츠이든 간에, 비디오의 큰 부분은 정지해 있을 수 있다. 예를 들어, 정지 부분은 자연스런 비디오에서의 움직이지 않는 배경 또는 화면 포착 콘텐츠에서의 움직이지 않는 콘텐츠일 수 있다. 비디오의 정지 부분은, MV 정밀도가 소수 샘플 MV 정밀도일 때 0의 소수 부분을 가지는, 영 값의 MV를 갖는다. 상당한 수의 영 값의 MV 값의 존재는 영이 아닌 소수 부분을 갖는 MV 값의 분율을 고려하는 결정 논리를 혼란시킬 수 있다.
따라서, 인코더는 영 값의 MV를 고려하지 않을 수 있다. 도 10은 (대체로) 영 값의 MV를 갖는 하나의 움직이지 않는 부분(1001) 및 (대체로) 영이 아닌 값의 MV를 갖는 2 개의 움직이는 부분(1002, 1003)을 포함하는 픽처(1000)를 나타낸 것이다. 인코더는 움직이는 부분(1002, 1003)에서의 영이 아닌 값의 MV는 고려하지만, 움직이지 않는 부분(1001)의 MV 값은 고려하지 않는다. 인코더는 0의 소수 부분을 갖는 (움직이는 부분(1002, 1003)에 있는) 영이 아닌 값의 MV의 분율이 문턱값을 초과할 때(또는 (면적의 측면에서의) 영의 소수 부분을 갖는 영이 아닌 MV를 사용하는 픽처의 분율이 문턱값을 초과할 때) 정수 샘플 MV 정밀도로 스위칭할 수 있다.
인코더는 또한, 적은 수의 MV 값에 기초하여 결정이 행해지지 않도록, 평가되는 영이 아닌 값의 MV의 개수가 문턱값 양을 초과하는지를 검사할 수 있다. 이것은 의사 결정 프로세스를 보다 강건하게 만들 수 있다.
다른 예시적인 구현에서, 인코더는 비디오의 주어진 유닛(예컨대, 픽처, 타일, 슬라이스 또는 CU)를 1/4 샘플 MV 정밀도를 사용하여 인코딩한다. 인코더는 (1) 유닛의 x% 초과가 영이 아닌 값의 MV에 의한 인터 픽처 예측를 사용하고, (2) 영이 아닌 MV를 사용하는 유닛의 부분의 y% 초과가 정수 값의 MV(0의 소수 부분)를 갖는 경우, 비디오의 하나 이상의 후속 유닛에 대해 정수 샘플 MV 정밀도로 스위칭한다. x 및 y의 값은 구현에 의존하고, 예를 들어, 각각, 5 및 75일 수 있다.
유사한 예시적인 구현에서, 인코더는 비디오의 주어진 유닛(예컨대, 픽처, 타일, 슬라이스 또는 CU)를 1/4 샘플 MV 정밀도를 사용하여 인코딩한다. 인코더는 (1) 유닛의 z개 초과의 PU가 영이 아닌 값의 MV를 갖고, (2) 그 PU의 y% 초과가 정수 값의 MV(0의 소수 부분)를 갖는 경우, 비디오의 하나 이상의 후속 유닛에 대해 정수 샘플 MV 정밀도로 스위칭한다. z 및 y의 값은 구현에 의존하고, 예를 들어, 각각, 100 및 75일 수 있다.
보다 큰 영역에 대한 MV 값이 보다 작은 영역에 대한 MV 값보다 더 신뢰성 있을 수 있다. 인코더는 어느 MV 값이 평가되는지를 제한할 수 있다. 예를 들어, 인코더는 특정 블록 크기 이상(예컨대, 16x16 이상)의 블록들에 대한 MV 값만을 평가할 수 있다.
다른 예시적인 구현에서, 인코더는 비디오의 주어진 유닛(예컨대, 픽처, 타일, 슬라이스 또는 CU)를 1/4 샘플 MV 정밀도를 사용하여 인코딩한다. 인코더는 (1) 유닛의 z개 초과의 PU가 w x w 이상이고 영이 아닌 값의 MV를 가지며, (2) 그 PU의 y% 초과가 정수 값의 MV(0의 소수 부분)를 갖는 경우, 비디오의 하나 이상의 후속 유닛에 대해 정수 샘플 MV 정밀도로 스위칭한다. w, z 및 y의 값은 구현에 의존하고, 예를 들어, 각각, 16, 100 및 75일 수 있다.
5. 비규범적 접근법
이전의 예들 대부분에서, 인코더는 인코딩된 데이터에서의 선택된 MV 정밀도를 나타내는 하나 이상의 구문 요소를, 예컨대, 비트스트림으로 신호한다. 디코더는 선택된 MV 정밀도를 나타내는 구문 요소(들)를 파싱하고, 선택된 MV 정밀도에 따라 MV 값을 해석한다.
대안적으로, 비규범적 접근법에서, 인코더는 인코더에 의해 선택된 MV 정밀도를 나타내는 어떤 구문 요소도 신호하지 않는다. 예를 들어, 인코더는 정수 샘플 MV 정밀도와 소수 샘플 MV 정밀도 중에서 선택하지만, 항상 MV 값을 소수 샘플 MV 정밀도로 인코딩한다. 디코더는 소수 샘플 MV 정밀도로 MV 값을 재구성하고 적용한다.
인코더가 정수 샘플 MV 정밀도를 선택할 때, 인코더는 소수 샘플 오프셋에서의 샘플 값의 보간을 회피하는 것에 의해 그리고 정수 샘플 오프셋에서만 후보 예측 영역을 평가하는 것에 의해 움직임 추정을 단순화할 수 있다. 또한, MV 예측이 - 예컨대, 시간 MV 예측을 사용하여 - 소수 값을 생성하는 경우, 인코더는 MV 차분을 (예컨대, 시간 MV 예측으로부터의) 소수 값의 MV 예측에 가산할 때 정수 값이 얻어지는 그 MV 예측 차분만을 고려할 수 있다. 디코딩 동안, 움직임 보상이 소수 샘플 오프셋에서의 샘플 값의 보간을 회피하는 것에 의해 단순화될 수 있다.
이전의 섹션에서 기술된 특정 접근법(예컨대, 왜곡 비용 및/또는 비트 레이트 비용을 스케일링하는 것에 의해 스케일된 레이트 왜곡 비용을 사용하는 것, 또는 왜곡 비용 페널티 또는 비트 레이트 비용 페널티를 부가하는 것, 또는 가중치 인자를 조절하는 것)이 또한 비규범적 접근법에 대해 적응될 수 있다. 인코더는 인코딩 동안 정수 샘플 MV 정밀도 쪽으로의 또는 그 반대쪽으로의 바이어스의 정도를 변화시킬 수 있다. 스케일링, 페널티 및/또는 가중치 인자를 통해, 인코더는 정수 샘플 MV 값이 비디오 콘텐츠를 인코딩하는 데 보다 적절할 가능성이 있는 신뢰 수준에 따라, 또는 인코딩 또는 디코딩에 대한 계산 능력에 따라 정수 샘플 MV 정밀도 쪽으로의 바이어스를 조절할 수 있다.
6. 대안 및 변형
일부 사용 시나리오에서, 픽처의 인코딩 순서(디코딩 순서 또는 디코딩되는 순서라고도 불리움)는 입력/카메라 포착 및 디스플레이에서의 시간 순서(디스플레이 순서라고도 불리움)와 상이하다. 인코더는 MV 정밀도를 선택할 때 이러한 재정렬(reordering)을 고려할 수 있다. 예를 들어, 인코더는 픽처들의 인코딩 순서가 아니라 픽처들의 시간 순서에 기초하여 MV 정밀도(들)를 선택할 수 있다.
본원에 기술되는 예들 중 다수의 예에서, 인트라 BC 예측 및 움직임 보상이 개별적인 구성요소 또는 프로세스에서 구현되고, BV 추정 및 움직임 추정이 개별적인 구성요소 또는 프로세스에서 구현된다. 대안적으로, 인트라 BC 예측이 움직임 보상의 특별한 경우로서 구현될 수 있고, BV 추정이, 현재 픽처가 참조 픽처로서 사용되는, 움직임 추정의 특별한 경우로서 구현될 수 있다. 이러한 구현에서, BV 값은 MV 값으로서 신호되지만, 인터 픽처 예측보다는 (현재 픽처 내에서의) 인트라 BC 예측을 위해 사용될 수 있다. 이 용어가 본원에서 사용되는 바와 같이, "인트라 BC 예측"은, 그 예측이 인트라 픽처 예측 모듈, 움직임 보상 모듈, 또는 어떤 다른 모듈을 사용하여 제공되든 관계없이, 현재 픽처 내에서의 예측을 나타낸다. 이와 유사하게, BV 값이 MV 값을 사용하여 또는 독특한 유형의 파라미터 또는 구문 요소를 사용하여 표현될 수 있고, BV 추정은 인트라 픽처 추정 모듈, 움직임 추정 모듈 또는 어떤 다른 모듈을 사용하여 제공될 수 있다. 인트라 BC 예측(즉, 현재 픽처가 참조 픽처임)에 대한 BV 값으로서 사용될 MV 값의 정밀도를 결정하기 위해, MV 정밀도를 선택하는 본원에 기술되는 접근법이 적용될 수 있다.
VI. 혁신적 특징
이하에 제시되는 청구항에 부가하여, 본원에 기술되는 혁신적 특징은 이하의 것을 포함하지만, 이들로 제한되지 않는다.
# 특징
A1 컴퓨팅 디바이스로서,
비디오를 인코딩하는 수단과,
인코딩된 비디오를 출력하는 수단
을 포함하며,
상기 비디오를 인코딩하는 수단은, 비디오의 유닛에 대한 MV(motion vector) 정밀도를 결정하는 수단을 포함하고, 비디오의 유닛 내의 블록들에 대한 MV 값들은 유닛에 대한 MV 정밀도를 가지며, 유닛에 대한 MV 정밀도를 결정하는 수단은,
소수 샘플 MV 정밀도를 가지는 MV 값 세트를 식별하는 수단; 및
0의 소수 부분을 가지는 MV 값들의, MV 값 세트 내에서의, 출현율에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택하는 수단을 포함하는 것인, 컴퓨팅 디바이스.
B1 컴퓨팅 디바이스로서,
비디오를 인코딩하는 수단과,
인코딩된 비디오를 출력하는 수단
을 포함하며,
상기 비디오을 인코딩하는 수단은, 비디오의 유닛에 대한 MV(motion vector) 정밀도를 결정하는 수단을 포함하고, 비디오의 유닛 내의 블록들에 대한 MV 값들은 유닛에 대한 MV 정밀도를 가지며, 결정하는 수단은 복수의 MV 정밀도 중에서 결정하기 위해 레이트 왜곡 분석을 수행하는 수단을 포함하고, 복수의 MV 정밀도는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함하며, 레이트 왜곡 분석은 (a) 왜곡 비용을 스케일링하는 것, (b) 왜곡 비용에 페널티를 부가하는 것, (c) 비트 레이트 비용을 스케일링하는 것, (d) 비트 레이트 비용에 페널티를 부가하는 것, 및/또는 (e) 라그랑지 승수 인자를 조절하는 것에 의해 정수 샘플 MV 정밀도 쪽으로 바이어스되는 것인 컴퓨팅 디바이스.
C1 컴퓨팅 디바이스로서,
비디오를 인코딩하는 수단과,
인코딩된 비디오를 출력하는 수단
을 포함하며,
상기 비디오를 인코딩하는 수단은, 복수의 MV(motion vector) 정밀도 중에서 비디오의 어떤 유닛에 대한 MV 정밀도를 결정하는 수단을 포함하고, 복수의 MV 정밀도는 하나 이상의 소수 샘플 MV 정밀도 및 정수 샘플 MV 정밀도를 포함하며, 비디오의 유닛 내의 블록들에 대한 MV 값들은 유닛에 대한 MV 정밀도를 가지며, 결정하는 수단은,
비디오에 관한 정보를 수집하는 수단; 및
수집된 정보에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택하는 수단을 포함하는 것인 컴퓨팅 디바이스.
개시된 발명의 원리가 적용될 수 있는 많은 가능한 실시예를 바탕으로, 예시된 실시예가 본 발명의 바람직한 예에 불과하고 본 발명의 범주를 제한하는 것으로서 해석되어서는 안된다는 것을 잘 알 것이다. 오히려, 본 발명의 범주는 이하의 청구범위에 의해 한정된다. 따라서, 이 청구범위의 범주 및 사상 내에 속하는 모든 것을 본 발명으로서 청구한다.

Claims (20)

  1. 프로그래밍될 때, 하나 이상의 프로세싱 유닛이 동작들을 수행하게 하는 컴퓨터 실행가능한 명령어들이 저장되어 있는 하나 이상의 비일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    비디오 시퀀스의 프레임들을 인코딩함으로써, 인코딩된 데이터를 생성하는 동작 - 상기 프레임들을 인코딩하는 것은,
    표시자(indicator)를 설정하는 동작 - 상기 표시자는 (a) 움직임 벡터(motion vector; "MV") 정밀도가 상기 비디오 시퀀스의 유닛들에 대해 적응적으로 선택되는지 여부, 및 (b) 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되지 않는 경우, 상기 유닛들에 대한 상기 MV 정밀도가 소수 샘플 정밀도(fractional-sample precision)인지, 아니면 정수 샘플 정밀도(integer-sample precision)인지 여부를 나타냄 - ;
    상기 비디오 시퀀스에 대해 적용되는 제1 계층 구문(syntax) 구조 내의 표시자를 인코딩하는 동작 - 상기 표시자는 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택된 것을 나타냄 - ; 및
    상기 유닛들 중 현재 유닛에 대해,
    상기 현재 유닛에 대한 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 선택하는 동작 - 상기 선택하는 동작은 상기 현재 유닛에 관한 정보를 수집하는 동작, 및 상기 수집된 정보에 적어도 부분적으로 기초하여, 상기 현재 유닛에 대한 상기 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 결정하는 동작을 포함함 - ; 및
    상기 현재 유닛에 대한 제2 계층 구문 구조 내의 플래그(flag)를 인코딩 하는 동작 - 상기 플래그는 상기 현재 유닛에 대한 상기 MV 정밀도를 소수 샘플 정밀도 또는 정수 샘플 정밀도로 나타냄 -
    을 포함함 - ; 및
    비트스트림의 부분으로서 상기 인코딩된 데이터를 출력하는 동작
    을 포함하고,
    상기 인코딩된 데이터는, 상기 제1 계층 구문 구조 내의 인코딩된 표시자, 및 상기 현재 유닛에 대한 제2 계층 구문 구조 내의 플래그 - 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되고, 상기 플래그는 상기 현재 유닛에 대한 상기 MV 정밀도를 나타냄 - 를 포함하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서,
    상기 제1 계층 구문 구조는 시퀀스 계층 구문 구조이고, 상기 유닛들은 상기 비디오 시퀀스의 프레임들이고, 상기 제2 계층 구문 구조는 픽처 계층 구문 구조인 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  3. 제1항에 있어서,
    상기 제1 계층 구문 구조는 시퀀스 파라미터 세트이고, 상기 유닛들은 상기 비디오 시퀀스의 상기 프레임들의 슬라이스들이고, 상기 제2 계층 구문 구조는 슬라이스 헤더 계층 구문 구조인 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  4. 제1항에 있어서,
    상기 표시자에 대해,
    제1 가능한 값은, 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되지 않는 것을 나타내고, 또한 상기 유닛들에 대한 상기 MV 정밀도가 소수 샘플 정밀도인 것을 나타내고;
    제2 가능한 값은, 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되지 않는 것을 나타내고, 또한 상기 유닛들에 대한 상기 MV 정밀도가 정수 샘플 정밀도인 것을 나타내고;
    제3 가능한 값은, 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되는 것을 나타내는 것인,
    하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  5. 제1항에 있어서,
    상기 표시자를 인코딩하는 동작은, 상기 제1 계층 구문 구조 내의 2개의 비트들을 사용하거나 상기 제1 계층 구문 구조에 대한 2비트 값을 엔트로피 코딩하는 동작을 포함하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  6. 제1항에 있어서,
    상기 소수 샘플 정밀도는 1/4 샘플 정밀도인 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  7. 제1항에 있어서,
    상기 수집된 정보는 상기 현재 유닛의 샘플 값들을 포함하고, 상기 현재 유닛에 대한 상기 MV 정밀도는 상기 현재 유닛의 상기 샘플 값들 중 이산(discrete) 샘플 값의 수에 적어도 부분적으로 의존하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  8. 제7항에 있어서,
    상기 선택하는 동작은 이전 유닛에 관한 정보를 수집하는 동작을 더 포함하고, 상기 이전 유닛에 관해 수집된 정보는 상기 이전 유닛의 샘플 값들을 포함하며, 상기 현재 유닛의 상기 MV 정밀도의 결정은 또한, 상기 이전 유닛에 관해 수집된 정보에 적어도 부분적으로 기초하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  9. 제1항에 있어서,
    상기 수집된 정보는 상기 현재 유닛의 얼마나 많은 블록들이 움직임이 없는지의 측정값을 포함하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  10. 제1항에 있어서,
    상기 수집된 정보는 상기 현재 유닛의 블록들에 대한 얼마나 많은 MV 값들이 영(zero)이 아니고, 영의 소수 부분을 갖는지 추적하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  11. 제1항에 있어서,
    상기 수집된 정보는 상기 현재 유닛의 블록들에 대한 MV 값들에 사용되는 비트들을 추적하는 것인, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  12. 컴퓨터 시스템으로서,
    비디오 인코더; 및
    버퍼
    를 포함하고,
    상기 비디오 인코더는 상기 컴퓨터 시스템의 하나 이상의 프로세싱 유닛을 사용하여 구현되고, 동작들을 수행함에 의해 비디오 시퀀스의 프레임들을 인코딩하도록 구성됨으로써, 인코딩된 데이터를 생성하며, 상기 동작들은,
    표시자를 설정하는 동작 - 상기 표시자는 (a) 움직임 벡터("MV") 정밀도가 상기 비디오 시퀀스의 유닛들에 대해 적응적으로 선택되는지 여부, 및 (b) 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되지 않는 경우, 상기 유닛들에 대한 상기 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 나타냄 - ;
    상기 비디오 시퀀스에 대해 적용되는 제1 계층 구문 구조 내의 표시자를 인코딩하는 동작 - 상기 표시자는 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택된 것을 나타냄 - ; 및
    상기 유닛들 중 현재 유닛에 대해,
    상기 현재 유닛에 대한 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 선택하는 동작 - 상기 선택하는 동작은 비디오 콘텐츠 유형을 결정하는 동작 및, 상기 비디오 콘텐츠 유형에 적어도 부분적으로 기초하여, 상기 현재 유닛에 대한 상기 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 결정하는 동작을 포함함 - ; 및
    상기 현재 유닛에 대한 제2 계층 구문 구조 내의 플래그를 인코딩 하는 동작 - 상기 플래그는 상기 현재 유닛에 대한 상기 MV 정밀도를 소수 샘플 정밀도 또는 정수 샘플 정밀도로 나타냄 -
    을 포함하고,
    상기 버퍼는 상기 컴퓨터 시스템의 메모리를 사용하여 구현되고, 비트스트림의 부분으로서의 출력을 위해 상기 인코딩된 데이터를 저장하도록 구성되며,
    상기 인코딩된 데이터는, 상기 제1 계층 구문 구조 내의 인코딩된 표시자, 및 상기 현재 유닛에 대한 제2 계층 구문 구조 내의 플래그 - 상기 유닛들에 대한 상기 MV 정밀도가 적응적으로 선택되고, 상기 플래그는 상기 현재 유닛에 대한 상기 MV 정밀도를 나타냄 - 를 포함하는 것인, 컴퓨터 시스템.
  13. 제12항에 있어서,
    상기 제1 계층 구문 구조는 시퀀스 계층 구문 구조이고, 상기 유닛들은 상기 비디오 시퀀스의 프레임들이고, 상기 제2 계층 구문 구조는 픽처 계층 구문 구조이거나; 또는
    상기 제1 계층 구문 구조는 시퀀스 파라미터 세트이고, 상기 유닛들은 상기 비디오 시퀀스의 상기 프레임들의 슬라이스들이고, 상기 제2 계층 구문 구조는 슬라이스 헤더 계층 구문 구조
    인 것인, 컴퓨터 시스템.
  14. 제12항에 있어서,
    상기 표시자를 인코딩하는 동작은, 상기 제1 계층 구문 구조 내의 2개의 비트들을 사용하거나, 상기 제1 계층 구문 구조에 대한 2비트 값을 엔트로피 코딩하는 동작을 포함하는 것인, 컴퓨터 시스템.
  15. 제12항에 있어서, 상기 선택하는 동작은,
    상기 비디오 콘텐츠 유형이 화면 포착 콘텐츠(screen capture content)인 경우, 상기 현재 유닛에 대한 상기 MV 정밀도가 정수 샘플 정밀도를 나타내도록 상기 플래그를 설정하는 동작;
    그렇지 않으면, 상기 비디오 콘텐츠 유형은 자연스런 비디오 콘텐츠(natural video content)이고, 상기 현재 유닛에 대한 상기 MV 정밀도가 소수 샘플 정밀도를 나타내도록 상기 플래그를 설정하는 동작
    을 포함하는 것인, 컴퓨터 시스템.
  16. 제12항에 있어서,
    상기 비디오 콘텐츠 유형을 결정하는 동작은 상기 현재 유닛에 대한 비디오 콘텐츠를 제공하는 비디오 소스를 결정하는 동작을 포함하고,
    상기 비디오 소스는, 카메라, 튜너 카드, 디스크 매체, 화면 포착 모듈, 및 전형적으로 인위적으로 생성된 비디오 콘텐츠를 전달하기 위한 다른 비디오 소스로 구성된 그룹으로부터 선택되는 것인, 컴퓨터 시스템.
  17. 제12항에 있어서,
    상기 비디오 콘텐츠 유형을 결정하는 동작은 상기 현재 유닛에 대한 비디오 콘텐츠를 제공하는 애플리케이션을 결정하는 동작을 포함하고,
    상기 애플리케이션은, 워드 프로세서, 스프레드시트 애플리케이션, 및 웹 브라우저로 구성된 그룹으로부터 선택되는 것인, 컴퓨터 시스템.
  18. 비디오 인코더를 구현하는 컴퓨터 시스템에 의해 수행되는 방법으로서, 상기 방법은,
    비디오 시퀀스의 프레임들을 인코딩함으로써, 인코딩된 데이터를 생성하는 단계 - 상기 프레임들을 인코딩하는 것은,
    표시자를 설정하는 단계 - 상기 표시자는 (a) 움직임 벡터("MV") 정밀도가 상기 비디오 시퀀스의 상기 프레임들의 슬라이스들에 대해 적응적으로 선택되는지 여부, 및 (b) 상기 프레임들의 상기 슬라이스들에 대한 상기 MV 정밀도가 적응적으로 선택되지 않는 경우, 상기 프레임들의 상기 슬라이스들에 대한 상기 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 나타냄 - ;
    상기 비디오 시퀀스에 대해 적용되는 제1 계층 구문 구조 내의 표시자를 인코딩하는 단계 - 상기 표시자는 상기 프레임들의 상기 슬라이스들에 대한 상기 MV 정밀도가 적응적으로 선택된 것을 나타냄 - ;
    상기 비디오 시퀀스의 상기 프레임들 중 제1 프레임에 대해, 상기 제1 프레임 내의 다수의 슬라이스들 각각에 대해,
    슬라이스에 대한 MV 정밀도가 소수 샘플 정밀도인지, 아니면 정수 샘플 정밀도인지 여부를 선택하는 단계; 및
    상기 슬라이스에 대한 슬라이스 헤더 계층 구문 구조 내의 플래그를 인코딩 하는 단계 - 상기 플래그는 상기 슬라이스에 대한 상기 MV 정밀도를 소수 샘플 정밀도 또는 정수 샘플 정밀도로 나타냄 - ; 및
    상기 비디오 시퀀스의 상기 프레임들 중 제2 프레임에 대해,
    상기 제2 프레임 내의 다수의 슬라이스들이 상기 제1 프레임 내의 다수의 슬라이스들과 동일 장소에 있는(co-located) 것을 결정하는 단계; 및
    상기 제1 프레임 내의 다수의 슬라이스들 각각에 대해 선택된 MV 정밀도들을 상기 제2 프레임 내의 다수의 슬라이스들 각각에 대한 MV 정밀도들로 사용하는 단계 - 상기 제2 프레임 내의 다수의 슬라이스들에 대한 슬라이스 헤더 계층 구문 구조 내에 인코딩된 플래그는 상기 제2 프레임 내의 다수의 슬라이스들 각각에 대한 MV 정밀도들을 나타냄 -
    를 포함함 - ; 및
    비트스트림의 부분으로서 상기 인코딩된 데이터를 출력하는 단계
    를 포함하고,
    상기 인코딩된 데이터는, 상기 제1 계층 구문 구조 내의 인코딩된 표시자, 및 슬라이스들 각각에 대한 상기 슬라이스 헤더 계층 구문 구조 내의 플래그들 - 상기 프레임들의 상기 슬라이스들에 대한 상기 MV 정밀도가 적응적으로 선택됨 - 을 포함하는 것인, 방법.
  19. 제18항에 있어서,
    상기 제1 프레임 내의 다수의 슬라이스들 중 하나는 컴퓨터 데스크톱의 창(window)에 대응하고, 상기 제2 프레임 내의 다수의 슬라이스들 중 하나는 상기 컴퓨터 데스크톱의 창에 대응하는 것인, 방법.
  20. 제18항에 있어서,
    상기 제1 프레임 내의 다수의 슬라이스들 중 제1 슬라이스는 자연스런 비디오 콘텐츠의 구역(area)에 대응하고,
    상기 제2 프레임 내의 다수의 슬라이스들 중 제1 슬라이스는 자연스런 비디오 콘텐츠의 상기 구역에 대응하고
    상기 제1 프레임 내의 다수의 슬라이스들 중 제2 슬라이스는 화면 포착 콘텐츠의 구역에 대응하고,
    상기 제2 프레임 내의 다수의 슬라이스들 중 제2 슬라이스는 화면 포착 콘텐츠의 상기 구역에 대응하는 것인, 방법.
KR1020237028185A 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택 KR20230127361A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201461925090P 2014-01-08 2014-01-08
US61/925,090 2014-01-08
US201461934574P 2014-01-31 2014-01-31
US61/934,574 2014-01-31
US14/513,132 2014-10-13
US14/513,132 US9749642B2 (en) 2014-01-08 2014-10-13 Selection of motion vector precision
KR1020227038477A KR102570202B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
PCT/US2014/071332 WO2015105662A1 (en) 2014-01-08 2014-12-19 Selection of motion vector precision

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020227038477A Division KR102570202B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택

Publications (1)

Publication Number Publication Date
KR20230127361A true KR20230127361A (ko) 2023-08-31

Family

ID=53496189

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020237028185A KR20230127361A (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020227003301A KR102465021B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020167021658A KR102270095B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020227038477A KR102570202B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020217017819A KR102360403B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020227003301A KR102465021B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020167021658A KR102270095B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020227038477A KR102570202B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택
KR1020217017819A KR102360403B1 (ko) 2014-01-08 2014-12-19 움직임 벡터 정밀도의 선택

Country Status (11)

Country Link
US (8) US9749642B2 (ko)
EP (1) EP3075154B1 (ko)
JP (1) JP6498679B2 (ko)
KR (5) KR20230127361A (ko)
CN (4) CN110177274B (ko)
AU (1) AU2014376190B2 (ko)
BR (2) BR112016015854B1 (ko)
CA (2) CA3118603A1 (ko)
MX (1) MX359698B (ko)
RU (1) RU2682859C1 (ko)
WO (1) WO2015105662A1 (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9491461B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
US9326047B2 (en) 2013-06-06 2016-04-26 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
BR112016017201B1 (pt) * 2014-01-29 2023-09-26 Hfi Innovation Inc Método de codificação e decodificação para precisão adaptativa de vetor de movimento de um bloco de dados de vídeo
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US10523985B2 (en) 2014-12-24 2019-12-31 Activevideo Networks, Inc. Managing deep and shallow buffers in a thin-client device of a digital media distribution network
US10264293B2 (en) 2014-12-24 2019-04-16 Activevideo Networks, Inc. Systems and methods for interleaving video streams on a client device
US10313675B1 (en) * 2015-01-30 2019-06-04 Google Llc Adaptive multi-pass video encoder control
US10200713B2 (en) 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
US20160337662A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Storage and signaling resolutions of motion vectors
US10880566B2 (en) 2015-08-28 2020-12-29 Boe Technology Group Co., Ltd. Method and device for image encoding and image decoding
CN105163124B (zh) * 2015-08-28 2019-01-18 京东方科技集团股份有限公司 一种图像编码方法、图像解码方法及装置
WO2017194756A1 (en) * 2016-05-12 2017-11-16 Telefonaktiebolaget Lm Ericsson (Publ) Methods and arrangements for coding and decoding motion vectors
CN116600109A (zh) * 2016-08-11 2023-08-15 Lx 半导体科技有限公司 图像编码/解码方法和图像数据的发送方法
US11122281B2 (en) * 2016-09-21 2021-09-14 Kakadu R&D Pty Ltd. Base anchored models and inference for the compression and upsampling of video and multiview imagery
KR20180043151A (ko) * 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화를 위한 장치 및 방법
CN106788920B (zh) * 2016-12-19 2019-08-23 珠海格力电器股份有限公司 一种波特率偏差检测方法、装置及空调室内机
MX2019007219A (es) 2016-12-22 2019-09-05 Kt Corp Metodo y aparato para procesar señales de video.
KR102559063B1 (ko) 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10203807B2 (en) * 2017-03-20 2019-02-12 Microsoft Technology Licensing, Llc Method for sampling output from a grid based digitizer sensor
KR102358294B1 (ko) 2017-04-21 2022-02-08 제니맥스 미디어 인크. 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
TWI755616B (zh) 2017-04-21 2022-02-21 美商時美媒體公司 用於編碼器導引自適應性品質演現的系統及方法
BR112019022007A2 (pt) 2017-04-21 2020-05-12 Zenimax Media Inc. Sistemas e métodos para vetores de movimento gerados em jogos
CA3059743A1 (en) 2017-04-21 2018-10-25 Zenimax Media Inc. Systems and methods for deferred post-processes in video encoding
GB2590034B (en) 2017-04-21 2021-12-22 Zenimax Media Inc Systems and methods for player input motion compensation by anticipating motion vectors and/or caching repetitive motion vectors
US10771789B2 (en) * 2017-05-19 2020-09-08 Google Llc Complexity adaptive rate control
US11303689B2 (en) * 2017-06-06 2022-04-12 Nokia Technologies Oy Method and apparatus for updating streamed content
US11272207B2 (en) * 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
US20190014332A1 (en) * 2017-07-07 2019-01-10 Apple Inc. Content-aware video coding
US10841794B2 (en) * 2017-09-18 2020-11-17 Futurewei Technologies, Inc. Adaptive motion vector resolution
CN110166778A (zh) * 2018-02-12 2019-08-23 华为技术有限公司 视频解码方法、视频解码器以及电子设备
KR102368622B1 (ko) * 2018-02-28 2022-02-28 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
WO2019240630A1 (en) * 2018-06-13 2019-12-19 Huawei Technologies Co., Ltd. Intra sharpening and/or de-ringing filter for video coding
CN116347099A (zh) 2018-06-19 2023-06-27 北京字节跳动网络技术有限公司 没有运动矢量预测截断的选择的运动矢量差精度
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding
CN110809155B (zh) 2018-08-04 2023-01-31 北京字节跳动网络技术有限公司 视频处理方法、装置和计算机可读介质
TWI753280B (zh) * 2018-08-04 2022-01-21 大陸商北京字節跳動網絡技術有限公司 Bio中的mv精度
AU2018217333A1 (en) * 2018-08-17 2020-03-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a transformed block of video samples
KR20240005178A (ko) 2018-09-19 2024-01-11 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용
CN111010569B (zh) 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
KR20240049658A (ko) * 2018-10-09 2024-04-16 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
CN113039801B (zh) 2018-11-17 2023-12-19 北京字节跳动网络技术有限公司 用运动矢量差候选构建Merge
CN111010581B (zh) * 2018-12-07 2022-08-12 北京达佳互联信息技术有限公司 运动矢量信息的处理方法、装置、电子设备及存储介质
WO2020125755A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector range based on motion vector precision
CN113196773B (zh) 2018-12-21 2024-03-08 北京字节跳动网络技术有限公司 具有运动矢量差的Merge模式中的运动矢量精度
US10951895B2 (en) 2018-12-31 2021-03-16 Alibaba Group Holding Limited Context model selection based on coding unit characteristics
CN113574867B (zh) * 2019-01-12 2022-09-13 北京字节跳动网络技术有限公司 Mv精度约束
CN118118659A (zh) 2019-01-31 2024-05-31 北京字节跳动网络技术有限公司 记录仿射模式自适应运动矢量分辨率的上下文
CN113366851A (zh) 2019-01-31 2021-09-07 北京字节跳动网络技术有限公司 对称运动矢量差编解码模式的快速算法
CN111567044A (zh) * 2019-03-13 2020-08-21 北京大学 一种视频处理方法、装置、编码设备及解码设备
US11350108B2 (en) * 2019-03-18 2022-05-31 Tencent America LLC Affine inter prediction refinement with optical flow
EP3713235B1 (en) * 2019-03-19 2023-08-02 Axis AB Methods and devices for encoding a video stream using a first and a second encoder
US20190222858A1 (en) * 2019-03-26 2019-07-18 Intel Corporation Optimal out of loop inter motion estimation with multiple candidate support
WO2020235659A1 (ja) * 2019-05-21 2020-11-26 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法および復号方法
CN114513666B (zh) * 2019-06-17 2023-01-17 北京达佳互联信息技术有限公司 用于视频编解码中的解码器侧运动矢量细化的方法和装置
CN112243123B (zh) * 2019-07-16 2022-05-27 四川大学 一种基于无损编码的hevc码率优化方法
US11900640B2 (en) 2020-07-15 2024-02-13 Tencent America LLC Method and apparatus for substitutional neural residual compression
US20220239923A1 (en) * 2021-01-26 2022-07-28 Meta Platforms, Inc. Dynamically biasing mode selection in video encoding
US11368694B1 (en) 2021-01-26 2022-06-21 Meta Platforms, Inc. Architecture for rate estimation in video coding
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression

Family Cites Families (230)

* 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
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
DE3854171T2 (de) 1987-06-09 1995-12-21 Sony Corp Bewertung von Bewegungsvektoren in Fernsehbildern.
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
EP0424026B1 (en) 1989-10-14 1997-07-23 Sony Corporation Video signal transmitting system and method
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 니뽕 빅터 가부시끼가이샤 인터레이스 동화상 신호의 압축 장치
HU9300005D0 (en) 1991-05-24 1993-04-28 British Broadcasting Corp Method for processing video picture
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
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
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
EP0535746B1 (en) 1991-09-30 1997-01-29 Philips Electronics Uk Limited 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
US5436665A (en) 1992-03-03 1995-07-25 Kabushiki Kaisha Toshiba Motion picture coding apparatus
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
JPH0662386A (ja) 1992-08-04 1994-03-04 G C Technol Kk 解像度変換復号方法と装置
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
JP3200196B2 (ja) * 1992-10-15 2001-08-20 株式会社リコー 動きベクトル検出方法
WO1994022269A1 (en) 1993-03-24 1994-09-29 Sony Corporation Method and apparatus for coding/decoding motion vector, and method and apparatus for coding/decoding image signal
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
CN1099723A (zh) 1993-08-31 1995-03-08 张智新 硫酸铵分解法
KR970003102B1 (ko) 1993-09-17 1997-03-14 대우전자 주식회사 영상 복호기에서의 하프 픽셀 움직임 보상 회로
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
US6301299B1 (en) 1994-10-28 2001-10-09 Matsushita Electric Industrial Co., Ltd. Memory controller for an ATSC video decoder
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
US5970173A (en) 1995-10-05 1999-10-19 Microsoft Corporation Image compression and affine transformation for image motion compensation
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 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
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
US6330344B1 (en) 1997-02-14 2001-12-11 Sony Corporation Image processing device and method employing motion detection to generate improved quality image from low resolution image
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
CN1253652A (zh) 1997-03-31 2000-05-17 松下电器产业株式会社 活动图像显示方法及其装置
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
ES2545066T3 (es) * 1997-06-09 2015-09-08 Hitachi, Ltd. Medio de grabación de información de imágenes
US6574371B2 (en) 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) * 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
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
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
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
JP3856262B2 (ja) * 1998-03-09 2006-12-13 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び動き補償符号記録媒体
US6611624B1 (en) 1998-03-13 2003-08-26 Cisco Systems, Inc. System and method for frame accurate splicing of compressed bitstreams
US6020934A (en) 1998-03-23 2000-02-01 International Business Machines Corporation Motion estimation architecture for area and power reduction
US6195389B1 (en) 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
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
US6466624B1 (en) 1998-10-28 2002-10-15 Pixonics, Llc Video decoder with bit stream based enhancements
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6584154B1 (en) 1998-11-26 2003-06-24 Oki Electric Industry Co., Ltd. Moving-picture coding and decoding method and apparatus with reduced computational cost
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
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 動きベクトル検出装置
EP1050850A1 (en) 1999-05-03 2000-11-08 THOMSON multimedia Process for estimating a dominant motion between two frames
US6556624B1 (en) 1999-07-27 2003-04-29 At&T Corp. Method and apparatus for accomplishing multiple description coding for video
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
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
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
GB2382940A (en) 2001-11-27 2003-06-11 Nokia Corp Encoding objects and background blocks
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
JP2003189312A (ja) 2001-12-20 2003-07-04 Oki Electric Ind Co Ltd 動画像符号化装置及び動画像復号化装置
US20050069212A1 (en) 2001-12-20 2005-03-31 Koninklijke Philips Electronics N.V Video encoding and decoding method and device
WO2003063503A1 (en) 2002-01-24 2003-07-31 Hitachi, Ltd. Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7305034B2 (en) 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7620109B2 (en) 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US7110459B2 (en) 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7116831B2 (en) 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
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
US7224731B2 (en) 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
WO2004008733A2 (en) 2002-07-15 2004-01-22 Nokia Corporation Method for error concealment in video sequences
JP4724351B2 (ja) 2002-07-15 2011-07-13 三菱電機株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
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
US7831088B2 (en) 2003-06-13 2010-11-09 Georgia Tech Research Corporation Data reconstruction using directional interpolation techniques
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
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
KR100678949B1 (ko) 2004-07-15 2007-02-06 삼성전자주식회사 비디오 코딩 및 디코딩 방법, 비디오 인코더 및 디코더
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 日本ビクター株式会社 動画像符号化装置、及び動画像復号化装置
JP4216796B2 (ja) * 2004-12-15 2009-01-28 日本電信電話株式会社 動きベクトル探索方法,動きベクトル探索装置,動きベクトル探索プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2006096612A2 (en) 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
WO2006112272A1 (ja) 2005-04-13 2006-10-26 Ntt Docomo, Inc. 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、および動画像復号プログラム
KR100703778B1 (ko) 2005-04-29 2007-04-06 삼성전자주식회사 고속 fgs를 지원하는 비디오 코딩 방법 및 장치
WO2006124885A2 (en) 2005-05-12 2006-11-23 Kylintv, Inc. Codec for iptv
US20070025442A1 (en) * 2005-07-28 2007-02-01 Sanyo Electric Co., Ltd. Coding method for coding moving images
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
GB0600141D0 (en) 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
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
US9014280B2 (en) 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
US9445128B2 (en) 2006-12-08 2016-09-13 Freescale Semiconductor, Inc. System and method of determining deblocking control flag of scalable video system for indicating presentation of deblocking parameters for multiple layers
BRPI0809668B1 (pt) * 2007-04-09 2020-07-28 Nokia Technologies Oy vetores de movimento de alta precisão para codificação de vídeos com baixa complexidade de codificação e decodificação
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
SG152082A1 (en) 2007-10-19 2009-05-29 Creative Tech Ltd A method and system for processing a composite video image
US8582652B2 (en) 2007-10-30 2013-11-12 General Instrument Corporation Method and apparatus for selecting a coding mode
US20090141808A1 (en) 2007-11-30 2009-06-04 Yiufai Wong System and methods for improved video decoding
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
CN101911706A (zh) 2008-01-09 2010-12-08 三菱电机株式会社 图像编码装置、图像解码装置、图像编码方法以及图像解码方法
KR101431543B1 (ko) 2008-01-21 2014-08-21 삼성전자주식회사 영상 부호화/복호화 장치 및 방법
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
US8831086B2 (en) * 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US20090257499A1 (en) * 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US20090262801A1 (en) * 2008-04-17 2009-10-22 Qualcomm Incorporated Dead zone parameter selections for rate control in video coding
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP5240530B2 (ja) 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
EP2351373B1 (fr) * 2008-10-14 2018-07-04 Orange Codage et decodage avec elimination d'un ou plusieurs predicteurs predetermines
TWI428022B (zh) 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
DE102008064280A1 (de) * 2008-12-20 2010-06-24 Bayer Technology Services Gmbh Verfahren zur Herstellung von Bis(Para-Aminocyclohexyl)Methan
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
US20120069906A1 (en) 2009-06-09 2012-03-22 Kazushi Sato Image processing apparatus and method (as amended)
JP2010288110A (ja) 2009-06-12 2010-12-24 Sony Corp 画像処理装置および画像処理方法
MX2011013707A (es) * 2009-06-18 2012-02-28 Toshiba Kk Dispositivo de codificacion de imagenes dinamicas y dispositivo de decodificacion de imagenes dinamicas.
JP5353532B2 (ja) * 2009-07-29 2013-11-27 ソニー株式会社 画像処理装置及び画像処理方法
US20110255589A1 (en) 2009-08-03 2011-10-20 Droplet Technology, Inc. Methods of compressing data and methods of assessing the same
JP2011041037A (ja) 2009-08-12 2011-02-24 Sony Corp 画像処理装置および方法
KR20110017302A (ko) * 2009-08-13 2011-02-21 삼성전자주식회사 움직임 벡터의 정확도 조절을 이용한 영상 부호화, 복호화 방법 및 장치
KR101678968B1 (ko) 2009-08-21 2016-11-25 에스케이텔레콤 주식회사 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101377530B1 (ko) 2009-08-21 2014-03-27 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
ATE547775T1 (de) 2009-08-21 2012-03-15 Ericsson Telefon Ab L M Verfahren und vorrichtung zur schätzung von interframe-bewegungsfeldern
WO2011021915A2 (ko) 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
KR101792041B1 (ko) 2009-10-14 2017-11-02 톰슨 라이센싱 움직임 정보의 적응적 코딩 방법 및 장치
US8411750B2 (en) 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US20110176611A1 (en) 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
EP2362655B1 (en) 2010-02-10 2013-07-17 Telefonaktiebolaget L M Ericsson (Publ) Motion-vector estimation
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
US9237355B2 (en) * 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
WO2011126272A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
US9245528B2 (en) 2010-06-04 2016-01-26 Nec Corporation Communication system, method, and apparatus
US20120008686A1 (en) * 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
JP5563403B2 (ja) * 2010-08-12 2014-07-30 日本電信電話株式会社 映像符号化方法,映像復号方法,映像符号化装置,映像復号装置およびそれらのプログラム
RU2010135495A (ru) 2010-08-24 2012-02-27 ЭлЭсАй Корпорейшн (US) Видеотранскодер с гибким управлением качеством и сложностью
US20120051431A1 (en) * 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US9288490B2 (en) 2010-09-30 2016-03-15 Panasonic Intellectual Property Corporation Of America Image decoding method, image coding method, image decoding apparatus, image coding apparatus, program, and integrated circuit
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
JP2012126040A (ja) 2010-12-16 2012-07-05 Ricoh Co Ltd 画像形成装置
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
US9001883B2 (en) 2011-02-16 2015-04-07 Mediatek Inc Method and apparatus for slice common information sharing
TWI466550B (zh) 2011-02-23 2014-12-21 Novatek Microelectronics Corp 多媒體裝置及其移動偵測方法
US9271005B2 (en) 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
WO2012120863A1 (ja) * 2011-03-08 2012-09-13 パナソニック株式会社 動画像符号化方法および動画像復号方法
US20120236115A1 (en) 2011-03-14 2012-09-20 Qualcomm Incorporated Post-filtering in full resolution frame-compatible stereoscopic video coding
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
JP2012231301A (ja) 2011-04-26 2012-11-22 Sony Corp 係数学習装置および方法、画像処理装置および方法、プログラム、並びに記録媒体
US20140126644A1 (en) 2011-06-30 2014-05-08 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
US9288505B2 (en) 2011-08-11 2016-03-15 Qualcomm Incorporated Three-dimensional video with asymmetric spatial resolution
RU2583040C2 (ru) 2011-08-30 2016-05-10 Нокиа Текнолоджиз Ой Устройство, способ и компьютерная программа для кодирования и декодирования видеосигналов
CN102946534A (zh) * 2011-09-02 2013-02-27 斯凯普公司 视频编码
CN102946533B (zh) 2011-09-02 2016-08-17 斯凯普公司 视频编码
RU2487489C2 (ru) 2011-10-18 2013-07-10 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ поиска векторов перемещений в динамических изображениях
RU2628226C2 (ru) 2011-12-16 2017-08-15 Сан Пэтент Траст Способ кодирования видеоизображений, устройство кодирования видеоизображений, способ декодирования видеоизображений, устройство декодирования видеоизображений и устройство кодирования/декодирования видеоизображений
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9538200B2 (en) 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
US20130188718A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc without including a temporally neighboring block motion vector in a candidate list
US9215266B2 (en) 2012-01-26 2015-12-15 Zoom International S.R.O. System and method for zero-footprint screen capture
US9363512B2 (en) 2012-03-08 2016-06-07 Blackberry Limited Motion vector sign bit hiding
KR102099485B1 (ko) 2012-04-11 2020-04-09 구글 테크놀로지 홀딩스 엘엘씨 시간적 예측을 위한 시간적 모션 벡터 예측기(mvp) 플래그의 시그널링
US20130287109A1 (en) 2012-04-29 2013-10-31 Qualcomm Incorporated Inter-layer prediction through texture segmentation for video coding
US20130294513A1 (en) 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
CN102740073B (zh) 2012-05-30 2015-06-17 华为技术有限公司 一种编码方法及装置
US9253487B2 (en) 2012-05-31 2016-02-02 Qualcomm Incorporated Reference index for enhancement layer in scalable video coding
US9584805B2 (en) 2012-06-08 2017-02-28 Qualcomm Incorporated Prediction mode information downsampling in enhanced layer coding
US9258562B2 (en) 2012-06-13 2016-02-09 Qualcomm Incorporated Derivation of depth map estimate
US9219913B2 (en) 2012-06-13 2015-12-22 Qualcomm Incorporated Inferred base layer block for TEXTURE—BL mode in HEVC based single loop scalable video coding
US9338452B2 (en) * 2012-07-09 2016-05-10 Qualcomm Incorporated Motion vector difference coding extension for enhancement layer
US9674519B2 (en) 2012-11-09 2017-06-06 Qualcomm Incorporated MPEG frame compatible video coding
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream

Also Published As

Publication number Publication date
CN110177274A (zh) 2019-08-27
US9900603B2 (en) 2018-02-20
US20230209070A1 (en) 2023-06-29
MX359698B (es) 2018-10-08
MX2016009025A (es) 2016-09-28
US20170359587A1 (en) 2017-12-14
US20200177887A1 (en) 2020-06-04
WO2015105662A1 (en) 2015-07-16
US10735747B2 (en) 2020-08-04
KR20160106703A (ko) 2016-09-12
US12108054B2 (en) 2024-10-01
CN105900420A (zh) 2016-08-24
CN110149513A (zh) 2019-08-20
CN110149513B (zh) 2022-10-14
KR20220153111A (ko) 2022-11-17
BR122022001631B1 (pt) 2023-03-14
CA3118603A1 (en) 2015-07-16
AU2014376190A1 (en) 2016-07-07
US11638016B2 (en) 2023-04-25
EP3075154B1 (en) 2020-03-04
BR112016015854A2 (pt) 2017-08-08
US20190281309A1 (en) 2019-09-12
CA2935340C (en) 2023-01-24
US20180131947A1 (en) 2018-05-10
KR102360403B1 (ko) 2022-02-08
CN110177274B (zh) 2022-10-14
KR102270095B1 (ko) 2021-06-25
CN110099278A (zh) 2019-08-06
EP3075154A1 (en) 2016-10-05
BR112016015854A8 (pt) 2020-06-09
AU2014376190B2 (en) 2018-12-20
RU2682859C1 (ru) 2019-03-21
US11095904B2 (en) 2021-08-17
JP2017508344A (ja) 2017-03-23
US20210337214A1 (en) 2021-10-28
US10681356B2 (en) 2020-06-09
US20150195525A1 (en) 2015-07-09
RU2016127410A (ru) 2018-01-10
CN105900420B (zh) 2019-06-11
KR20210073608A (ko) 2021-06-18
US10313680B2 (en) 2019-06-04
US9749642B2 (en) 2017-08-29
KR20220019845A (ko) 2022-02-17
US20200329247A1 (en) 2020-10-15
KR102465021B1 (ko) 2022-11-09
JP6498679B2 (ja) 2019-04-10
KR102570202B1 (ko) 2023-08-23
CA2935340A1 (en) 2015-07-16
BR112016015854B1 (pt) 2023-03-14
CN110099278B (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
US20210337214A1 (en) Selection of motion vector precision
US12101503B2 (en) Encoding strategies for adaptive switching of color spaces, color sampling rates and/or bit depths
US20190098310A1 (en) Adaptive skip or zero block detection combined with transform size decision
US20160373739A1 (en) Intra/inter decisions using stillness criteria and information from previous pictures

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right