KR101037834B1 - Coding and decoding for interlaced video - Google Patents

Coding and decoding for interlaced video Download PDF

Info

Publication number
KR101037834B1
KR101037834B1 KR1020097018329A KR20097018329A KR101037834B1 KR 101037834 B1 KR101037834 B1 KR 101037834B1 KR 1020097018329 A KR1020097018329 A KR 1020097018329A KR 20097018329 A KR20097018329 A KR 20097018329A KR 101037834 B1 KR101037834 B1 KR 101037834B1
Authority
KR
South Korea
Prior art keywords
field
motion vector
interlaced
macroblock
prediction
Prior art date
Application number
KR1020097018329A
Other languages
Korean (ko)
Other versions
KR20090108656A (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
Priority claimed from US10/857,473 external-priority patent/US7567617B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Priority claimed from PCT/US2004/029034 external-priority patent/WO2005027496A2/en
Publication of KR20090108656A publication Critical patent/KR20090108656A/en
Application granted granted Critical
Publication of KR101037834B1 publication Critical patent/KR101037834B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/16Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
    • 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
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/176Methods 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 block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Abstract

(1) 인터레이스형 전방 예측 필드에 대한 하이브리드 움직임 벡터 예측, (2) 움직임 벡터 블록 패턴을 사용하는 것, (3) 움직임 벡터 예측자에 대한 우세 및 비우세 극성 간에 선택하는 것, (4) 참조 필드 선택 정보 및 차분 움직임 벡터 정보의 공동 코딩 및 디코딩(joint coding and decoding), (5) 인터레이스형 전방 예측 필드의 매크로블록에 대한 매크로블록 모드 정보의 공동 코딩/디코딩, (6) 인터레이스형 전방 예측 필드에 대해 이용가능한 참조 필드의 수의 신호를 사용하는 것, 및 (7) 인터레이스형 전방 예측 필드의 매크로블록들에 대한 크로마 움직임 벡터를 도출하는 것을 비롯한, 인터레이스형 비디오를 코딩 및 디코딩하는 여러가지 기술 및 도구가 기술되어 있다. 이 여러가지 기술 및 도구는 조합하여 또는 독립적으로 사용될 수 있다.See (1) hybrid motion vector prediction for interlaced forward prediction field, (2) using motion vector block pattern, (3) choosing between dominant and non-dominant polarity for motion vector predictor, (4) Joint coding and decoding of field selection information and differential motion vector information, (5) co-coding / decoding of macroblock mode information for macroblocks of interlaced forward prediction fields, (6) interlaced forward prediction Various techniques for coding and decoding interlaced video, including using a signal of the number of reference fields available for the field, and (7) deriving chroma motion vectors for macroblocks of the interlaced forward prediction field. And tools are described. These various techniques and tools can be used in combination or independently.

인터레이스형 비디오, 인코딩, 디코딩, 움직임 벡터, 움직임 보상, 매크로블록 Interlaced video, encoding, decoding, motion vectors, motion compensation, macroblocks

Description

인터레이스형 비디오의 코딩 및 디코딩{CODING AND DECODING FOR INTERLACED VIDEO}Coding and decoding of interlaced video {CODING AND DECODING FOR INTERLACED VIDEO}

저작권 허가Copyright permission

본 특허 문서의 개시 내용의 일부분은 저작권 보호를 받는 자료를 포함하고 있다. 저작권 소유자는 본 개시 내용이 특허청 특허 파일 또는 기록물에 나오는 것처럼 누군가에 의한 본 특허 개시 내용의 팩시밀리 재현에 대해 이의를 제기하지 않지만, 다른 경우에는 어떤 경우라도 모든 저작권을 보유한다.Portions of the disclosure of this patent document contain copyrighted material. The copyright owner does not dispute the facsimile reproduction of this patent disclosure by anyone, as the disclosure appears in a patent office file or a record, but otherwise reserves all copyrights.

본 발명은 인터레이스형 비디오 코딩 및 디코딩을 위한 기술 및 도구에 관한 것이다.The present invention relates to techniques and tools for interlaced video coding and decoding.

디지털 비디오는 대량의 스토리지 및 전송 용량을 소모한다. 일반적인 미가공된(raw) 디지털 비디오 시퀀스는 초당 15 또는 30 프레임을 포함한다. 각각의 프레임은 수만 또는 수십만의 픽셀(pixel)(펠(pel)이라고도 함)을 포함할 수 있으며, 각각의 픽셀은 픽처의 작은 요소를 말한다. 미가공된 형태에서, 컴퓨터는 통상적으로 픽셀을 일련의 3개의 샘플(총 24비트임)로서 나타낸다. 예를 들어, 픽셀은 픽셀의 그레이스케일 성분을 정의하는 8-비트 루미넌스 샘플(luminance sample)(본 명세서에서 용어 "루미넌스"와 "루마"가 상호교환가능하게 사용되기 때문에, 루마 샘플(luma sample)이라고도 함) 및 픽셀의 컬러 성분을 정의하는 2개의 8-비트 크로미넌스 샘플(chrominance sample)(본 명세서에서 용어 "크로미넌스"와 "크로마"가 상호교환가능하게 사용되기 때문에, 크로마 샘플(choroma sample)이라고도 함)을 포함할 수 있다. 따라서, 일반적인 미가공된 디지털 비디오 시퀀스의 초당 비트수, 즉 비트 레이트는 초당 5백만 비트 이상일 수 있다.Digital video consumes large amounts of storage and transmission capacity. Typical raw digital video sequences include 15 or 30 frames per second. Each frame may contain tens or hundreds of thousands of pixels (also called pels), each pixel representing a small element of a picture. In the raw form, a computer typically represents a pixel as a series of three samples (24 bits total). For example, a pixel is a luma sample because an 8-bit luminance sample that defines the grayscale component of the pixel (as the terms "luminance" and "luma" are used interchangeably herein). And two 8-bit chrominance samples (also referred to herein) as defining the color components of a pixel (as the terms "chrominance" and "chroma" are used interchangeably herein), (also called a choroma sample). Thus, the number of bits per second, ie, the bit rate, of a typical raw digital video sequence may be at least 5 million bits per second.

많은 컴퓨터 및 컴퓨터 네트워크는 미가공된 디지털 비디오를 처리할 자원이 부족하다. 이러한 이유로, 엔지니어들은 디지털 비디오의 비트 레이트를 감소시키기 위해 압축(코딩 또는 인코딩이라고도 함)을 사용한다. 압축은 비디오를 더 낮은 비트 레이트 형태로 변환함으로써 비디오를 저장 및 전송하는 비용을 감소시킨다. 압축 해제(디코딩이라고도 함)는 압축된 형태로부터 원본 비디오의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템을 말한다. 압축은 비디오의 품질이 떨어지지 않는 무손실(lossless)일 수 있지만, 비트 레이트의 감소는 비디오 데이터의 본질적인 변동성(variability) 정도(때로는 엔트로피라고 함)에 의해 제한된다. 또는, 압축은 비디오의 품질이 떨어지는 유손실(lossy)일 수 있지만, 달성가능한 비트 레이트의 감소가 더욱 극적이다. 유손실 압축은 종종 무손실 압축과 함께 사용된다 - 유손실 압축은 정보의 근사값을 달성하고 무손실 압축은 그 근사값을 표현하는 데 적용된다.Many computers and computer networks lack the resources to process raw digital video. For this reason, engineers use compression (also known as coding or encoding) to reduce the bit rate of digital video. Compression reduces the cost of storing and transmitting video by converting the video to a lower bit rate form. Decompression (also known as decoding) reconstructs the version of the original video from the compressed form. "Codec" refers to an encoder / decoder system. Compression can be lossless where the quality of the video does not degrade, but the reduction in bit rate is limited by the inherent degree of variability (sometimes called entropy) of the video data. Alternatively, compression may be lossy with poor quality of video, but the reduction in achievable bit rate is more dramatic. Lossy compression is often used in combination with lossless compression-lossy compression achieves an approximation of information and lossless compression is applied to express that approximation.

일반적으로, 비디오 압축 기술은 "인트라-픽처(intra-picture)" 압축 및 "인터-픽처(inter-picture)" 압축을 포함하며, 여기서 픽처는 예를 들어 순차 스캔 된(progressively scanned) 비디오 프레임, 인터레이스형(interlaced) 비디오 프레임(비디오 필드에 대한 교대하는 라인을 가짐), 또는 인터레이스형 비디오 필드를 말한다. 순차 프레임(progressive frame)의 경우, 인트라-픽처 압축 기술은 개개의 프레임(일반적으로, I-프레임 또는 키 프레임이라고 함)을 압축하고, 인터-픽처 압축 기술은 이전 및/또는 다음 프레임(일반적으로 참조 프레임(reference frame) 또는 앵커 프레임(anchor frame)이라고 함) 또는 프레임들(B-프레임에 대한 것)을 참조하여 프레임(일반적으로, 예측 프레임, P-프레임 또는 B-프레임이라고 함)을 압축한다.In general, video compression techniques include "intra-picture" compression and "inter-picture" compression, where a picture is, for example, a progressively scanned video frame, Interlaced video frames (with alternating lines to video fields), or interlaced video fields. In the case of progressive frames, intra-picture compression techniques compress individual frames (commonly referred to as I-frames or key frames), and inter-picture compression techniques involve previous and / or next frames (usually Compress a frame (generally called a predictive frame, P-frame, or B-frame) with reference to a reference frame or anchor frame or frames (for B-frames) do.

인터-픽처 압축 기술은 종종 움직임 추정(motion estimation) 및 움직임 보상(motion compensation)을 사용한다. 예를 들어, 움직임 추정의 경우, 인코더는 현재 예측 프레임을 8x8 또는 16x16 픽셀 단위로 분할한다. 현재 프레임의 단위에 대해, 참조 프레임 내의 유사한 단위가 예측자로 사용하기 위해 탐색된다. 움직임 벡터는 참조 프레임에서의 예측자의 위치를 가리킨다. 환언하면, 현재 프레임의 단위에 대한 움직임 벡터는 현재 프레임 내의 단위의 공간 위치와 참조 프레임에서의 예측자의 공간 위치 간의 변위를 가리킨다. 인코더는 잔차(residual)(오차 신호라고도 함)를 결정하기 위해 현재 단위와 예측자 간의 샘플별 차이를 계산한다. 현재 단위 크기가 16x16인 경우, 잔차는 4개의 8x8 블록으로 분할된다. 각각의 8x8 잔차에 대해, 인코더는 일련의 주파수 영역(즉, 스펙트럼) 계수를 발생하는 가역 주파수 변환 동작을 적용한다. 이산 코사인 변환["DCT"]는 주파수 변환의 한 유형이다. 그 결과 얻어지는 스펙트럼 계수들의 블록은 양자화되고 엔트로피 인코 딩된다. 예측 프레임이 차후의 움직임 보상을 위한 참조로서 사용되는 경우, 인코더는 예측 프레임을 재구성한다. 잔차를 재구성할 때, 인코더는 양자화되었던 변환 계수(예를 들어, DCT 계수)를 재구성하고 역DCT["IDCT"] 등의 주파수 역변환을 수행한다. 인코더는 예측자를 계산하기 위해 움직임 보상을 수행하고, 예측자를 잔차와 합성한다. 디코딩 동안에, 디코더는 일반적으로 정보를 엔트로피 디코딩하고 잔차를 재구성, 움직임 보상을 수행, 및 예측자를 잔차와 합성하기 위해 유사한 동작을 수행한다.Inter-picture compression techniques often use motion estimation and motion compensation. For example, for motion estimation, the encoder splits the current prediction frame in units of 8x8 or 16x16 pixels. For the units of the current frame, similar units within the reference frame are searched for use as predictors. The motion vector indicates the position of the predictor in the reference frame. In other words, the motion vector for the unit of the current frame indicates the displacement between the spatial position of the unit in the current frame and the predictor's spatial position in the reference frame. The encoder calculates the sample-by-sample difference between the current unit and the predictor to determine a residual (also called an error signal). If the current unit size is 16x16, the residual is divided into four 8x8 blocks. For each 8x8 residual, the encoder applies a reversible frequency conversion operation that generates a series of frequency domain (ie, spectral) coefficients. Discrete cosine transform ["DCT"] is a type of frequency transform. The resulting block of spectral coefficients is quantized and entropy encoded. If the predictive frame is used as a reference for subsequent motion compensation, the encoder reconstructs the predictive frame. When reconstructing the residuals, the encoder reconstructs the quantized transform coefficients (eg, DCT coefficients) and performs a frequency inverse transform, such as inverse DCT [“IDCT”]. The encoder performs motion compensation to calculate the predictor and combines the predictor with the residual. During decoding, decoders generally perform similar operations to entropy decode information, reconstruct residuals, perform motion compensation, and synthesize predictors with residuals.

I. I. WindowsWindows MediaMedia VideoVideo 버전 8 및 9에서의  In versions 8 and 9 인터Inter 압축( compression( InterInter CompressionCompression ))

마이크로소프트사의 Windows Media Video, 버전 8["WMV8"]은 비디오 인코더 및 비디오 디코더를 포함한다. WMV8 인코더는 인트라 및 인터 압축을 사용하고, WMV8 디코더는 인트라 및 인터 압축 해제를 사용한다. Windows Media Video, 버전 9["WMV9"]는 많은 동작에 대해 유사한 아키텍처를 사용한다.Microsoft's Windows Media Video, version 8 ["WMV8"] includes a video encoder and a video decoder. WMV8 encoders use intra and inter compression, and WMV8 decoders use intra and inter decompression. Windows Media Video, version 9 ["WMV9"], uses a similar architecture for many operations.

WMV8 인코더에서의 인터 압축은 블록-기반 움직임-보상된 예측 코딩 및 이에 뒤따른 잔차 오차(residual error)의 변환 코딩(transform coding)을 사용한다. 도 1 및 도 2는 WMV8 인코더에서의 예측 프레임에 대한 블록-기반 인터 압축을 나타낸 것이다. 상세하게는, 도 1은 예측 프레임(110)에 대한 움직임 추정을 나타내고, 도 2는 예측 프레임의 움직임-보상된 블록에 대한 예측 잔차(prediction residual)의 압축을 나타낸 것이다.Inter compression in the WMV8 encoder uses block-based motion-compensated predictive coding followed by transform coding of residual error. 1 and 2 show block-based inter compression for predictive frames in a WMV8 encoder. Specifically, FIG. 1 shows the motion estimation for the prediction frame 110, and FIG. 2 shows the compression of the prediction residual for the motion-compensated block of the prediction frame.

예를 들어, 도 1에서, WMV8 인코더는 예측 프레임(110)에서의 매크로블 록(115)에 대한 움직임 벡터를 계산한다. 움직임 벡터를 계산하기 위해, 인코더는 참조 프레임(130)의 탐색 영역(135)에서 탐색을 한다. 탐색 영역(135) 내에서, 인코더는 양호하게 일치하는 것인 후보 매크로블록을 찾기 위해 예측 프레임(110)으로부터의 매크로블록(115)을 여러가지 후보 매크로블록과 비교한다. 인코더는 일치하는 매크로블록에 대한 움직임 벡터(엔트로피 코딩됨)를 규정하는 정보를 출력한다.For example, in FIG. 1, the WMV8 encoder calculates a motion vector for macroblock 115 in prediction frame 110. To calculate the motion vector, the encoder searches in the search region 135 of the reference frame 130. Within the search region 135, the encoder compares the macroblock 115 from the prediction frame 110 with various candidate macroblocks to find candidate macroblocks that are well matched. The encoder outputs information defining a motion vector (entropy coded) for the matching macroblock.

움직임 벡터값이 종종 공간적으로 둘러싸고 있는 움직임 벡터들의 값들과 상관되어 있기 때문에, 움직임 벡터 정보를 전송하기 위해 사용되는 데이터의 압축은 이웃 매크로블록들로부터 움직임 벡터 예측자를 결정 또는 선택하고 이 움직임 벡터 예측자를 사용하여 현재 매크로블록에 대한 움직임 벡터를 예측함으로써 달성될 수 있다. 인코더는 움직임 벡터와 움직임 벡터 예측자 간의 차이를 인코딩할 수 있다. 예를 들어, 인코더는 움직임 벡터의 수평 성분과 움직임 벡터 예측자의 수평 성분 간의 차이를 계산하고, 움직임 벡터의 수직 성분과 움직임 벡터 예측자의 수직 성분 간의 차이를 계산하며, 이 차이들을 인코딩한다.Since the motion vector value is often correlated with the values of the spatially surrounding motion vectors, the compression of the data used to transmit the motion vector information determines or selects the motion vector predictor from neighboring macroblocks and Can be achieved by predicting the motion vector for the current macroblock. The encoder can encode the difference between the motion vector and the motion vector predictor. For example, the encoder calculates the difference between the horizontal component of the motion vector and the horizontal component of the motion vector predictor, calculates the difference between the vertical component of the motion vector and the vertical component of the motion vector predictor, and encodes the differences.

이 차분을 움직임 벡터 예측자에 가산함으로써 움직임 벡터를 재구성한 후에, 디코더는 인코더 및 디코더에서 이용가능한 이전에 재구성된 프레임인 참조 프레임(130)으로부터의 정보를 사용하여 매크로블록(115)에 대한 예측 매크로블록을 계산하기 위해 움직임 벡터를 사용한다. 예측은 좀처럼 완벽하지 않으며, 따라서 인코더는 보통 예측 매크로블록과 매크로블록(115) 자체 간의 픽셀 차이의 블록(오차 또는 잔차 블록이라고도 함)을 인코딩한다.After reconstructing the motion vector by adding this difference to the motion vector predictor, the decoder predicts for macroblock 115 using information from reference frame 130, which is a previously reconstructed frame available at the encoder and decoder. Use motion vectors to compute macroblocks. Prediction is rarely perfect, so the encoder usually encodes a block of pixel differences (also called an error or residual block) between the prediction macroblock and the macroblock 115 itself.

도 2는 WMV8 인코더에서의 오차 블록(235)의 계산 및 인코딩의 예를 나타낸 것이다. 오차 블록(235)은 예측 블록(215)과 원래의 현재 블록(225) 간의 차이이다. 인코더는 이산 코사인 변환["DCT"](240)을 오차 블록(235)에 적용하고, 그 결과 계수들의 8x8 블록(245)이 얻어진다. 이어서, 인코더는 DCT 계수들을 양자화(250)하고, 그 결과 양자화된 DCT 계수들의 8x8 블록(255)이 얻어진다. 인코더는 8x8 블록(255)을 스캔(260)하여 계수들이 일반적으로 최저 주파수에서 최고 주파수까지 순서화되어 있는 1차원 어레이(265)로 만든다. 인코더는 런 랭스 코딩(run length coding)(270)의 변형을 사용하여 스캔된 계수들을 엔트로피 인코딩한다. 인코더는 하나 이상의 런/레벨/마지막(run/level/last) 테이블(275)로부터 엔트로피 코드를 선택하고 이 엔트로피 코드를 출력한다.2 shows an example of the calculation and encoding of error block 235 in a WMV8 encoder. Error block 235 is the difference between prediction block 215 and original current block 225. The encoder applies a discrete cosine transform ["DCT"] 240 to the error block 235, resulting in an 8x8 block 245 of coefficients. The encoder then quantizes the DCT coefficients 250, resulting in an 8 × 8 block 255 of quantized DCT coefficients. The encoder scans 260 an 8x8 block 255 to produce a one-dimensional array 265 with coefficients generally ordered from lowest frequency to highest frequency. The encoder uses a variant of run length coding 270 to entropy encode the scanned coefficients. The encoder selects an entropy code from one or more run / level / last tables 275 and outputs this entropy code.

도 3은 인터-코딩된 블록에 대한 대응하는 디코딩 프로세스(300)의 예를 나타낸 것이다. 도 3을 요약하면, 디코더는 하나 이상의 런/레벨/마지막 테이블(315)을 갖는 가변 길이 디코딩(310) 및 런 랭스 디코딩(320)을 사용하여 예측 잔차를 나타내는 엔트로피-코딩된 정보를 디코딩(310, 320)한다. 디코더는 엔트로피-디코딩된 정보를 저장하고 있는 1차원 어레이(325)를 역스캔(330)하여 2차원 블록(335)으로 만든다. 디코더는 이 데이터를 역양자화 및 역이산 코사인 변환(둘다 340으로 나타냄)하고, 그 결과 재구성된 오차 블록(345)이 얻어진다. 별도의 움직임 보상 경로에서, 디코더는 참조 프레임으로부터의 변위에 대한 움직임 벡터 정보(355)를 사용하여 예측 블록(365)을 계산한다. 디코더는 재구성된 블록(375)을 형성하기 위해 예측 블록(365)을 재구성된 오차 블록(345)과 합성(370)한다.3 shows an example of a corresponding decoding process 300 for an inter-coded block. 3, the decoder decodes 310 the entropy-coded information representing the prediction residual using variable length decoding 310 and run length decoding 320 with one or more run / level / last table 315. , 320). The decoder inversely scans 330 a one-dimensional array 325 that stores entropy-decoded information into a two-dimensional block 335. The decoder dequantizes this data and inverse discrete cosine transform (both represented by 340), resulting in a reconstructed error block 345. In a separate motion compensation path, the decoder calculates the prediction block 365 using the motion vector information 355 for the displacement from the reference frame. The decoder combines 370 the prediction block 365 with the reconstructed error block 345 to form a reconstructed block 375.

IIII . . 인터레이스형Interlaced 비디오 및 순차 비디오 Video and Sequential Video

비디오 프레임은 비디오 신호의 공간적 정보의 라인들을 포함한다. 순차 비디오의 경우, 이들 라인은 한 순간부터 출발하여 계속하여 래스터 스캔 방식으로 연속적인 라인들을 거쳐 프레임의 하단까지의 샘플을 포함한다. 순차 I-프레임은 인트라-코딩된 순차 비디오 프레임이다. 순차 P-프레임은 전방 예측을 사용하여 코딩된 순차 비디오 프레임이고, 순차 B-프레임은 양방향 예측을 사용하여 코딩된 순차 비디오 프레임이다.The video frame includes lines of spatial information of the video signal. In the case of sequential video, these lines contain samples starting from one moment and continuing through successive lines in a raster scan to the bottom of the frame. Sequential I-frames are intra-coded sequential video frames. Sequential P-frames are sequential video frames coded using forward prediction, and sequential B-frames are sequential video frames coded using bidirectional prediction.

인터레이스형 비디오의 주요 측면은 전체 비디오 프레임의 래스터 스캔이 교대하는 라인을 각각의 패스(pass)에서 스캔함으로써 2번의 패스로 수행된다는 것이다. 예를 들어, 첫번째 스캔은 프레임의 짝수 라인으로 이루어져 있고, 두번째 스캔은 스캔의 홀수 라인으로 이루어져 있다. 이 결과, 각각의 프레임은 2개의 서로 다른 기간(time epoch)을 나타내는 2개의 필드를 포함한다. 도 4는 상부 필드(410) 및 하부 필드(420)를 포함하는 인터레이스형 비디오 프레임(400)을 나타낸 것이다. 프레임(400)에서, 짝수 번호 라인(상부 필드)은 한 시각(예를 들어, 시각 t)에서 시작하여 스캔되고, 홀수 번호 라인(하부 필드)은 다른(일반적으로, 나중의) 시각(예를 들어, 시각 t+1)에서 시작하여 스캔된다. 이 타이밍은 인터레이스형 비디오 프레임의 영역들에서 톱니 형태의 특징을 생성할 수 있으며, 이 경우 2개의 필드가 서로 다른 때에 시작하여 스캔될 때 움직임이 존재한다. 이 때문에, 인터레이스형 비디오 프레임은 필드 구조에 따라 재정렬될 수 있으며 홀수 라인이 한 필드로 함께 그룹화되고 짝수 라인이 또하나의 필드로 함께 그룹화된다. 필드 코딩이라고 하는 이 구성은 이러한 톱날같은 아티팩트의 감소를 위해 움직임이 많은 픽처(high-motion picture)에 유용하다. 반면에, 정적인 영역에서는, 이러한 구성이 없어도 인터레이스형 비디오 프레임에서의 이미지 디테일이 보다 효율적으로 보존될 수 있다. 따라서, 프레임 코딩은 종종 정적인 또는 움직임 적은(low-motion) 인터레이스형 비디오 프레임에서 사용되며, 이 경우 원래의 교대하는 필드 라인 구성이 보존된다.The main aspect of interlaced video is that raster scans of the entire video frame are performed in two passes by scanning alternating lines in each pass. For example, the first scan consists of even lines of the frame and the second scan consists of odd lines of the scan. As a result, each frame contains two fields representing two different time epochs. 4 shows an interlaced video frame 400 that includes an upper field 410 and a lower field 420. In frame 400, the even numbered lines (upper field) are scanned starting at one time (e.g., time t), and the odd numbered lines (lower field) are scanned at another (typically, later) time (e.g., For example, scanning starts at time t + 1). This timing can produce a sawtooth feature in the regions of the interlaced video frame, where there is motion when the two fields start and scan at different times. Because of this, interlaced video frames can be rearranged according to the field structure, with odd lines grouped together in one field and even lines grouped together in another field. This configuration, called field coding, is useful for high-motion pictures for reducing such saw blade-like artifacts. In the static domain, on the other hand, image details in interlaced video frames can be preserved more efficiently without such a configuration. Thus, frame coding is often used in static or low-motion interlaced video frames, where the original alternating field line configuration is preserved.

일반적인 순차 비디오 프레임은 교대하지 않는 라인(non-alternating line)을 갖는 한 프레임의 콘텐츠로 이루어져 있다. 인터레이스형 비디오와 반대로, 순차 비디오는 비디오 프레임을 개별적인 필드로 분할하지 않으며, 전체 프레임이 단일의 시각에 시작하여 좌에서 우로, 상에서 하로 스캔된다.A typical sequential video frame consists of one frame of content with non-alternating lines. In contrast to interlaced video, sequential video does not divide the video frame into separate fields, and the entire frame is scanned from left to right, top to bottom, starting at a single time.

IIIIII . . WMVWMV 인코더 및 디코더에서의 이전의 코딩 및 디코딩 Previous coding and decoding at encoders and decoders

실행가능 형태로 출시된 WMV 인코더 및 디코더에서의 이전의 소프트웨어는 순차 및 인터레이스형 P-프레임의 코딩 및 디코딩을 사용하였다. 인코더 및 디코더가 많은 서로 다른 인코딩/디코딩 시나리오 및 많은 서로 다른 유형의 콘텐츠에 대해 효율적이지만, 몇가지 점에서 개선의 여지가 있다.Previous software in WMV encoders and decoders released in executable form used coding and decoding of sequential and interlaced P-frames. Although encoders and decoders are efficient for many different encoding / decoding scenarios and many different types of content, there are some room for improvement.

A. 움직임 보상을 위한 참조 A. Reference for Motion Compensation 픽처Picture

인코더 및 디코더는 순차 전방 예측 필드 및 인터레이스형 전방 예측 필드에 대해 움직임 보상을 사용한다. 순차 P-프레임의 경우, 움직임 보상은 현재 P-프레 임에 바로 선행하는 이전에 재구성된 I-프레임 또는 P-프레임인 단일의 참조 프레임에 대한 것이다. 현재 P-프레임에 대한 참조 프레임을 알고 있고 또 단지 하나의 참조 프레임만이 가능하기 때문에, 다수의 참조 프레임 간에 선택하는 데 사용되는 정보가 필요없다.The encoder and decoder use motion compensation for the sequential forward prediction field and the interlaced forward prediction field. For sequential P-frames, motion compensation is for a single reference frame that is a previously reconstructed I-frame or P-frame immediately preceding the current P-frame. Since we know the reference frame for the current P-frame and only one reference frame is possible, there is no need for information used to select between multiple reference frames.

인터레이스형 P-프레임에 대한 매크로블록은 필드-코딩 또는 프레임-코딩될 수 있다. 필드-코딩된 매크로블록에서, 최대 2개의 움직임 벡터가 매크로블록과 연관되며, 하나는 상부 필드에 대한 것이고 다른 하나는 하부 필드에 대한 것이다. 프레임 코딩된 매크로블록에서, 최대 1개의 움직임 벡터가 매크로블록과 연관되어 있다. 인터레이스형 P-프레임에서의 프레임 코딩된 매크로블록의 경우, 움직임 보상은 현재 P-프레임에 바로 선행하는 이전에 재구성된 I-프레임 또는 P-프레임인 단일의 참조 프레임에 대한 것이다. 인터레이스형 P-프레임에서의 필드-코딩된 매크로블록의 경우, 움직임 보상은 여전히 단일의 참조 프레임에 대한 것이지만, 참조 프레임의 상부 필드의 라인들만이 필드-코딩된 매크로블록의 상부 필드에 대한 움직임 벡터에 대해 고려되고, 참조 프레임의 하부 필드의 라인들만이 필드-코딩된 매크로블록의 하부 필드에 대한 움직임 벡터에 대해 고려된다. 다시 말하면, 참조 프레임을 알고 있고 또 하나의 참조 프레임만이 가능하기 때문에, 다수의 참조 프레임 간에 선택하는 데 사용되는 정보가 필요없다.Macroblocks for interlaced P-frames may be field-coded or frame-coded. In a field-coded macroblock, up to two motion vectors are associated with the macroblock, one for the upper field and the other for the lower field. In a frame coded macroblock, at most one motion vector is associated with the macroblock. For frame coded macroblocks in interlaced P-frames, motion compensation is for a single reference frame that is a previously reconstructed I-frame or P-frame immediately preceding the current P-frame. For field-coded macroblocks in interlaced P-frames, motion compensation is still for a single reference frame, but only the lines of the upper field of the reference frame are motion vectors for the upper field of the field-coded macroblock. Is considered, and only the lines of the lower field of the reference frame are considered for the motion vector for the lower field of the field-coded macroblock. In other words, since the reference frame is known and only one reference frame is possible, there is no need for information used to select between multiple reference frames.

어떤 인코딩/디코딩 시나리오(예를 들어, 많은 움직임을 갖는 높은 비트 레이트 인터레이스형 비디오)에서, 전방 예측에 대한 움직임 보상을 단일의 참조에 대한 것으로 한정하는 것은 전체 압축 효율을 해칠 수 있다.In some encoding / decoding scenarios (eg, high bit rate interlaced video with many motions), limiting motion compensation for forward prediction to a single reference can hurt overall compression efficiency.

B. 매크로블록 정보의 B. Macroblock Information 시그널링Signaling

인코더 및 디코더는 순차 또는 인터레이스형 P-프레임에 대한 매크로블록 정보의 시그널링을 사용한다.The encoder and decoder use signaling of macroblock information for sequential or interlaced P-frames.

1. 순차 P-프레임에 대한 매크로블록 정보의 1. Macroblock Information for Sequential P-frames 시그널링Signaling

순차 P-프레임은 1MV 또는 혼합 4MV 프레임일 수 있다. 1MV 순차 P-프레임은 1MV 매크로블록을 포함한다. 1MV 매크로블록은 매크로블록 내의 6개의 블록 모두에 대한 예측 블록의 변위를 가리키기 위해 하나의 움직임 벡터를 갖는다. 혼합-MV 순차 P-프레임은 1MV 및/또는 4MV 매크로블록을 포함한다. 4MV 매크로블록은 0개 내지 4개의 움직임 벡터를 가지며, 각각의 움직임 벡터는 매크로블록의 최대 4개의 루미넌스 블록 중 하나에 대한 것이다. 순차 P-프레임에서의 매크로블록은 3가지 가능한 유형, 1MV, 4MV 및 건너뜀(skipped) 중 하나일 수 있다. 게다가, 1MV 및 4MV 매크로블록은 인트라 코딩될 수 있다. 매크로블록 유형은 픽처와 매크로블록 계층 요소(macroblock layer element)의 조합에 의해 표시된다.Sequential P-frames may be 1MV or mixed 4MV frames. A 1MV sequential P-frame includes a 1MV macroblock. The 1MV macroblock has one motion vector to indicate the displacement of the prediction block for all six blocks in the macroblock. Mixed-MV sequential P-frames include 1MV and / or 4MV macroblocks. A 4MV macroblock has zero to four motion vectors, each motion vector for one of up to four luminance blocks of the macroblock. Macroblocks in a sequential P-frame may be one of three possible types, 1MV, 4MV and skipped. In addition, the 1MV and 4MV macroblocks can be intra coded. The macroblock type is represented by a combination of a picture and a macroblock layer element.

따라서, 1MV 매크로블록은 1MV 및 혼합-MV 순차 P-프레임에서 발생할 수 있다. 단일의 움직임 벡터 데이터 MVDATA 요소가 1MV 매크로블록 내의 모든 블록과 연관된다. MVDATA는 블록들이 인트라 유형 또는 인터 유형으로서 코딩되는지를 시그널링한다. 블록들이 인터 유형으로서 코딩되는 경우, MVDATA는 또한 움직임 벡터 차분도 나타낸다.Thus, 1MV macroblocks can occur in 1MV and mixed-MV sequential P-frames. A single motion vector data MVDATA element is associated with every block in the 1MV macroblock. MVDATA signals whether blocks are coded as intra type or inter type. If the blocks are coded as inter type, MVDATA also indicates motion vector difference.

순차 P-프레임이 1MV인 경우, 그 프레임 내의 모든 매크로블록은 1MV 매크로블록이고, 따라서 매크로블록 유형을 개별적으로 시그널링할 필요가 없다. 순차 P-프레임이 혼합-MV인 경우, 그 프레임 내의 매크로블록은 1MV 또는 4MV일 수 있다. 이 경우, 프레임 내의 각 매크로블록에 대해 매크로블록 유형(1MV 또는 4MV)이 비트스트림 내의 픽처 계층(picture layer)에 있는 비트플레인(bitplane)에 의해 시그널링된다. 디코딩된 비트플레인은 좌측 상부로부터 우측 하부로 래스터 스캔 순서로 매크로블록에 대한 1MV/4MV 상태를 1-비트 값의 플레인으로서 나타낸다. 0의 값은 대응하는 매크로블록이 1MV 모드로 코딩되어 있음을 나타낸다. 1의 값은 대응하는 매크로블록이 4MV 모드로 코딩되어 있음을 나타낸다. 한 코딩 모드에서, 1MV/4MV 상태 정보는 (순차 P-프레임에 대한 플레인으로서가 아니라) 비트스트림의 매크로블록 계층에서 매크로블록마다 시그널링된다.If the sequential P-frame is 1MV, all macroblocks within that frame are 1MV macroblocks, and thus there is no need to signal the macroblock type separately. If the sequential P-frame is mixed-MV, the macroblocks in that frame may be 1MV or 4MV. In this case, for each macroblock in the frame, the macroblock type (1MV or 4MV) is signaled by the bitplane in the picture layer in the bitstream. The decoded bitplane represents the 1MV / 4MV state for the macroblock as the 1-bit value plane from the upper left to the lower right in raster scan order. A value of 0 indicates that the corresponding macroblock is coded in 1MV mode. A value of 1 indicates that the corresponding macroblock is coded in 4MV mode. In one coding mode, 1MV / 4MV state information is signaled per macroblock in the macroblock layer of the bitstream (not as a plane for sequential P-frames).

4MV 매크로블록은 혼합-MV 순차 P-프레임에서 발생한다. 4MV 매크로블록 내의 개개의 블록들은 인트라 블록으로서 코딩될 수 있다. 4MV 매크로블록의 4개의 루미넌스 블록 각각에 대해, 인트라/인터 상태는 그 블록과 관련 블록 움직임 벡터 데이터 BLKMVDATA 요소에 의해 시그널링된다. 4MV 매크로블록의 경우, 코딩된 블록 패턴 CBPCY 요소는 어느 블록이 비트스트림에 존재하는 BLKMVDATA 요소를 갖는지를 나타낸다. 크로마 블록에 대한 인터/인트라 상태는 루미넌스 인터/인트라 상태로부터 도출된다. 루미넌스 블록 중 2개 이상이 인트라로서 코딩되어 있는 경우, 크로마 블록도 역시 인트라로서 코딩된다.4MV macroblocks occur in mixed-MV sequential P-frames. Individual blocks within a 4MV macroblock may be coded as intra blocks. For each of the four luminance blocks of the 4MV macroblock, the intra / inter status is signaled by that block and the associated block motion vector data BLKMVDATA element. For 4MV macroblocks, the coded block pattern CBPCY element indicates which block has the BLKMVDATA element present in the bitstream. The inter / intra state for the chroma block is derived from the luminance inter / intra state. If two or more of the luminance blocks are coded as intra, then the chroma block is also coded as intra.

게다가, 프레임 내의 각 매크로블록의 건너뜀/건너뛰지 않음(skipped/not skipped) 상태도 역시 순차 P-프레임에 대한 비트플레인에 의해 시그널링된다. 건너뜀 매크로블록은 여전히 하이브리드 움직임 벡터 예측에 대한 관련 정보를 가질 수 있다.In addition, the skipped / not skipped status of each macroblock in a frame is also signaled by the bitplane for the sequential P-frame. The skipped macroblock may still have relevant information for hybrid motion vector prediction.

CBCPY는 6-비트 필드로 디코딩되는 가변 길이 코드["VLC"]이다. CBPCY는 1MV 및 4MV 매크로블록에 대한 비트스트림에서 서로 다른 위치에 나타나고 1MV 및 4MV 매크로블록에 대해 서로 다른 시맨틱스를 갖는다.CBCPY is a variable length code ["VLC"] that is decoded into a 6-bit field. CBPCY appears at different positions in the bitstream for 1MV and 4MV macroblocks and has different semantics for 1MV and 4MV macroblocks.

CBPCY는 (1) MVDATA가 매크로블록이 인터-코딩되어 있다고 가리키는 경우, 및 (2) MVDATA가 1MV 매크로블록의 적어도 하나의 블록이 계수 정보(MVDATA로부터 디코딩된 "마지막" 값에 의해 표시됨)를 포함하고 있다고 가리키는 경우, 1MV 매크로블록 계층에 존재한다. CBPCY가 존재하는 경우, 이는 대응하는 6개의 블록 중 어느 것이 적어도 하나의 영이 아닌(non-zero) 계수를 포함하는지를 나타내는 6-비트 필드로 디코딩된다.CBPCY indicates that (1) MVDATA indicates that macroblocks are inter-coded, and (2) MVDATA contains coefficient information (indicated by the "last" value decoded from MVDATA) at least one block of the 1MV macroblock. If present, it exists in the 1MV macroblock layer. If CBPCY is present, it is decoded into a 6-bit field indicating which of the corresponding six blocks contains at least one non-zero coefficient.

CBPCY는 4MV 매크로블록 계층에 항상 존재한다. 루미넌스 블록에 대한 CBPCY 비트 위치(비트 0 내지 3)는 크로마 블록에 대한 비트 위치(비트 4 및 5)와 약간 다른 의미를 갖는다. 루미넌스 블록에 대한 비트 위치의 경우, 0은 대응하는 블록이 움직임 벡터 정보 또는 임의의 영이 아닌(non-zero) 계수를 포함하지 않음을 나타낸다. 이러한 블록의 경우, BLKMVDATA는 존재하지 않으며, 예측 움직임 벡터가 움직임 벡터로서 사용되고, 잔차 데이터가 없다. 움직임 벡터 예측자가 하이브리드 움직임 벡터 예측이 사용됨을 나타내는 경우, 사용할 움직임 벡터 예측자 후보를 나타내는 단일 비트가 존재한다. 루미넌스 블록에 대한 비트 위치에서의 1은 그 블록에 대해 BLKMVDATA가 존재함을 나타낸다. BLKMVDATA는 그 블록이 인터인지 인트라인지를 가리키며, 그 블록이 인터인 경우 움직임 벡터 차분을 가리킨 다. BLKMVDATA는 또한 그 블록에 대한 계수 데이터(BLKMVDATA로부터 디코딩된 "마지막" 값을 가짐)가 있는지를 나타낸다. 크로마 블록에 대한 비트 위치의 경우, 0 또는 1은 대응하는 블록이 영이 아닌 계수 정보를 포함하는지를 나타낸다.CBPCY is always present in the 4MV macroblock layer. The CBPCY bit position (bits 0 to 3) for the luminance block has a slightly different meaning than the bit position (bits 4 and 5) for the chroma block. For the bit position for the luminance block, 0 indicates that the corresponding block does not contain motion vector information or any non-zero coefficient. For such a block, BLKMVDATA does not exist, the predicted motion vector is used as the motion vector, and there is no residual data. If the motion vector predictor indicates that hybrid motion vector prediction is used, there is a single bit indicating the motion vector predictor candidate to use. One in the bit position for the luminance block indicates that BLKMVDATA is present for that block. BLKMVDATA indicates whether the block is inter or intra, and if the block is inter, it indicates a motion vector difference. BLKMVDATA also indicates whether there is coefficient data (with the "last" value decoded from BLKMVDATA) for that block. For bit positions for chroma blocks, 0 or 1 indicates whether the corresponding block contains non-zero coefficient information.

인코더 및 디코더는 각각 MVDATA, BLKMVDATA 및 CBPCY의 VLC 테이블에 대한 코드 테이블 선택을 사용한다.The encoder and decoder use code table selection for the VLC table of MVDATA, BLKMVDATA and CBPCY, respectively.

2. 2. 인터레이스형Interlaced P-프레임에 대한 매크로블록 정보의  Of macroblock information for a P-frame 시그널링Signaling

인터레이스형 P-프레임은 프레임-코딩된 매크로블록과 필드-코딩된 매크로블록의 혼합을 가질 수 있다. 필드-코딩된 매크로블록에서, 최대 2개의 움직임 벡터가 매크로블록과 연관되어 있다. 프레임-코딩된 매크로블록에서, 최대 1개의 움직임 벡터가 매크로블록과 연관되어 있다. 시퀀스 계층 요소 INTERLACE가 1인 경우, 픽처 계층 요소 INTRLCF가 비트스트림에 존재한다. INTRLCF는 그 프레임 내의 매크로블록을 코딩하는 데 사용된 모드를 가리키는 1-비트 요소이다. INTRLCF = 0인 경우, 프레임 내의 모든 매크로블록이 프레임 모드로 코딩된다. INTRLCF = 1인 경우, 매크로블록은 필드 모드 또는 프레임 모드로 코딩될 수 있고, 픽처 계층에 존재하는 비트플레인 INTRLCMB는 인터레이스형 P-프레임에서의 각 매크로블록에 대한 필드/프레임 코딩 상태를 가리킨다.Interlaced P-frames may have a mixture of frame-coded macroblocks and field-coded macroblocks. In a field-coded macroblock, up to two motion vectors are associated with the macroblock. In a frame-coded macroblock, at most one motion vector is associated with the macroblock. If the sequence layer element INTERLACE is 1, the picture layer element INTRLCF is present in the bitstream. INTRLCF is a 1-bit element indicating the mode used to code the macroblocks within that frame. If INTRLCF = 0, all macroblocks in the frame are coded in frame mode. If INTRLCF = 1, the macroblock can be coded in field mode or frame mode, and the bitplane INTRLCMB present in the picture layer indicates the field / frame coding state for each macroblock in the interlaced P-frame.

인터레이스형 P-프레임에서의 매크로블록은 3가지 가능한 유형, 즉 프레임-코딩(frame-coded), 필드-코딩(field-coded) 및 건너뜀(skipped) 중 하나일 수 있다. 매크로블록 유형은 픽처 및 매크로블록 계층 요소의 조합에 의해 표시된다.Macroblocks in interlaced P-frames can be one of three possible types: frame-coded, field-coded and skipped. The macroblock type is represented by a combination of picture and macroblock layer elements.

단일의 MVDATA가 프레임-코딩된 매크로블록 내의 모든 블록과 연관되어 있 다. MVDATA는 블록들이 인트라 유형 또는 인터 유형으로서 코딩되어 있는지를 나타낸다. 블록들이 인터로서 코딩되어 있는 경우, MVDATA는 또한 움직임 벡터 차분도 나타낸다.A single MVDATA is associated with every block in the frame-coded macroblock. MVDATA indicates whether the blocks are coded as an intra type or an inter type. If the blocks are coded as inter, MVDATA also indicates motion vector difference.

필드-코딩된 매크로블록에서, 상부 필드 움직임 벡터 데이터 TOPMVDATA 요소는 상부 필드 블록과 연관되어 있으며, 하부 필드 움직임 벡터 데이터 BOTMVDATA 요소는 하부 필드 블록과 연관되어 있다. 이들 요소는 각 필드의 첫번째 블록에서 시그널링된다. 보다 구체적으로는, TOPMVDATA는 좌측 상부 필드 블록과 함께 시그널링되고, BOTMVDATA는 좌측 하부 필드 블록과 함께 시그널링된다. TOPMVDATA는 상부 필드 블록이 인트라인지 인터인지를 나타낸다. 블록이 인터인 경우, TOPMVDATA는 또한 상부 필드 블록에 대한 움직임 벡터 차분도 나타낸다. 이와 유사하게, BOTMVDATA는 하부 필드 블록에 대한 인터/인트라 상태, 및 하부 필드 블록에 대한 잠재적인 움직임 벡터 차분 정보를 시그널링한다. CBPCY는 어느 필드가 비트스트림에 존재하는 움직임 벡터 데이터 요소를 갖는지를 나타낸다.In the field-coded macroblock, the upper field motion vector data TOPMVDATA element is associated with the upper field block and the lower field motion vector data BOTMVDATA element is associated with the lower field block. These elements are signaled in the first block of each field. More specifically, TOPMVDATA is signaled with the left upper field block and BOTMVDATA is signaled with the left lower field block. TOPMVDATA indicates whether the upper field block is intra or inter. If the block is inter, TOPMVDATA also indicates a motion vector difference for the upper field block. Similarly, BOTMVDATA signals the inter / intra state for the lower field block, and potential motion vector difference information for the lower field block. CBPCY indicates which field has a motion vector data element present in the bitstream.

건너뜀 매크로블록은 픽처 계층에 있는 SKIPMB 비트플레인에 의해 시그널링된다. CBPCY 및 움직임 벡터 데이터 요소는 블록이 AC 계수를 갖는지를 지정하는 데 사용된다. MVDATA로부터 디코딩된 "마지막" 값이 움직임 벡터 이후에 디코딩할 데이터가 있음을 나타내는 경우, CBPCY가 인터레이스형 P-프레임의 프레임-코딩된 매크로블록에 대해 존재한다. CBPCY가 존재하는 경우, 이는 6-비트 필드로 디코딩된다, 즉 4개의 Y 블록 각각에 대해 1 비트, 양쪽 U 블록(상부 필드 및 하부 필드)에 대해 1 비트, 및 양쪽 V 블록(상부 필드 및 하부 필드)에 대해 1 비트이다.The skipped macroblock is signaled by the SKIPMB bitplane in the picture layer. CBPCY and motion vector data elements are used to specify whether the block has an AC coefficient. If the "last" value decoded from MVDATA indicates that there is data to decode after the motion vector, then CBPCY is present for the frame-coded macroblock of the interlaced P-frame. If CBPCY is present, it is decoded into 6-bit fields, i.e. 1 bit for each of the 4 Y blocks, 1 bit for both U blocks (upper field and lower field), and both V blocks (upper field and lower). Field is 1 bit.

CBPCY는 필드-코딩된 매크로블록에 대해 항상 존재한다. CBPCY 및 2 필드 움직임 벡터 데이터 요소는 매크로블록의 블록들에 AC 계수가 존재하는지를 결정하는 데 사용된다. CBPCY의 의미는 비트 1, 3, 4 및 5의 경우 프레임-코딩된 매크로블록에 대한 것과 동일하다. 즉, 이들은 각각 우측 상부 필드 Y 블록, 우측 하부 필드 Y 블록, 상부/하부 U 블록, 및 상부/하부 V 블록에 AC 계수가 존재하는지 여부를 나타낸다. 비트 위치 0 및 2의 경우, 그 의미가 약간 다르다. 비트 위치 0에 있는 0은 TOPMVDATA가 존재하지 않고 움직임 벡터 예측자가 상부 필드 블록에 대한 움직임 벡터로서 사용됨을 나타낸다. 이는 또한 좌측 상부 필드 블록이 영이 아닌 계수를 포함하지 않음을 나타낸다. 비트 0에 있는 1은 TOPMVDATA가 존재함을 나타낸다. TOPMVDATA는 상부 필드 블록이 인터인지 인트라인지를 나타내며 또한 그 블록이 인터인 경우, 움직임 벡터 차분도 나타낸다. TOPMVDATA로부터 디코딩된 "마지막" 값이 1로 디코딩되는 경우, 좌측 상부 필드 블록에 대해 AC 계수가 존재하지 않으며, 그렇지 않은 경우 좌측 상부 필드 블록에 대해 영이 아닌 AC 계수가 있다. 이와 유사하게, 상기 규칙은 BOTMVDATA 및 좌측 하부 필드 블록에 대한 비트 위치 2에 적용된다.CBPCY is always present for field-coded macroblocks. The CBPCY and two field motion vector data elements are used to determine if an AC coefficient is present in the blocks of the macroblock. The meaning of CBPCY is the same as for frame-coded macroblocks for bits 1, 3, 4 and 5. That is, they indicate whether an AC coefficient exists in the upper right field Y block, the lower right field Y block, the upper / lower U block, and the upper / lower V block, respectively. For bit positions 0 and 2, the meaning is slightly different. 0 at bit position 0 indicates that there is no TOPMVDATA and the motion vector predictor is used as the motion vector for the upper field block. This also indicates that the left upper field block does not contain nonzero coefficients. A 1 in bit 0 indicates that TOPMVDATA is present. TOPMVDATA indicates whether the upper field block is inter or intra and also indicates motion vector difference when the block is inter. When the "last" value decoded from TOPMVDATA is decoded to 1, there is no AC coefficient for the left upper field block, otherwise there is a non-zero AC coefficient for the left upper field block. Similarly, the rule applies to bit position 2 for BOTMVDATA and the left lower field block.

인코더 및 디코더는 각각 MVDATA, TOPMVDATA, BOTMVDATA 및 CBPCY의 VLC 테이블에 대한 코드 테이블 선택을 사용한다.The encoder and decoder use code table selection for the VLC table of MVDATA, TOPMVDATA, BOTMVDATA and CBPCY, respectively.

3. 매크로블록 정보의 이전의 3. Transfer of Macroblock Information 시그널링에서의In signaling 문제점들 Problems

요약하면, 순차 P-프레임 및 인터레이스형 P-프레임의 매크로블록에 대한 여러가지 정보가 프레임 및 매크로블록 계층에서 개별적인 코드로(또는 코드들의 조 합으로) 시그널링된다. 이 개별적으로 시그널링된 정보는 움직임 벡터의 개수, 매크로블록 인트라/인터 상태, CBPCY가 존재하는지 여부(예를 들어, 1MV 및 프레임-코딩된 매크로블록에 대한 "마지막" 값을 가짐), 및 움직임 벡터 데이터가 존재하는지(예를 들어, 4MV 및 필드-코딩된 매크로블록에 대한 CBPCY를 가짐) 여부를 포함한다. 이 시그널링이 많은 경우에 양호한 전체 성능을 제공하지만, 여러가지 통상의 경우에 서로 다른 시그널링된 정보 간의 통계적 의존관계를 적절히 이용하지 않는다. 게다가, 이는 4MV 매크로블록에 대한 CBPCY의 존재 여부 또는 1MV 매크로블록에 대한 움직임 벡터 데이터의 존재 여부 등의 여러가지 유용한 구성을 가능하게 해주지도 않으며 이에 대해 언급하지도 않고 있다.In summary, various information about macroblocks of sequential P-frames and interlaced P-frames is signaled as separate codes (or a combination of codes) in the frame and macroblock layers. This individually signaled information includes the number of motion vectors, macroblock intra / inter status, whether CBPCY is present (eg, has a "last" value for 1MV and frame-coded macroblocks), and motion vectors Whether data is present (eg, having 4MV and CBPCY for field-coded macroblocks). While this signaling provides good overall performance in many cases, it does not properly exploit the statistical dependencies between different signaled information in various common cases. In addition, this does not enable or mention various useful configurations, such as the presence of CBPCY for 4MV macroblocks or the presence of motion vector data for 1MV macroblocks.

게다가, 움직임 벡터 데이터의 존재 여부가 시그널링되는 범위까지, 이 시그널링은 CBPCY 요소의 종래의 역할에 대한 혼란스런 재정의를 필요로 한다. 이것은 차례로 그 목적으로 종래에는 사용되지 않은 서로 다른 요소(예를 들어, BLKMVDATA, TOPMVDATA, BOTMVDATA)를 갖는 종래의 CBPCY 정보의 시그널링을 필요로 한다. 그리고, 이 시그널링은 움직임 벡터 데이터가 존재하지 않을 때 계수 정보의 존재 등의 여러가지 유용한 구성을 가능하게 해주지도 않고 또 그에 대해 언급하지도 않고 있다.In addition, to the extent that the presence or absence of motion vector data is signaled, this signaling requires a confusing redefinition of the conventional role of the CBPCY element. This in turn requires signaling of conventional CBPCY information with different elements (eg BLKMVDATA, TOPMVDATA, BOTMVDATA) not conventionally used for that purpose. And this signaling does not enable or mention various useful configurations such as the presence of coefficient information when there is no motion vector data.

C. 움직임 벡터 예측C. Motion Vector Prediction

인터레이스형 또는 순차 P-프레임에서의 매크로블록(또는 블록, 또는 매크로블록의 필드, 기타 등등)에 대한 움직임 벡터의 경우, 인코더는 이웃하는 움직임 벡터에 기초하여 움직임 벡터 예측자를 계산하고 움직임 벡터와 움직임 벡터 예측 자 간의 차분을 계산하며 또 그 차분을 인코딩함으로써 움직임 벡터를 인코딩한다. 디코더는 움직임 벡터 예측자를 계산하고(다시 말하면, 이웃하는 움직임 벡터에 기초함) 움직임 벡터 차분을 디코딩하며 움직임 벡터 차분을 움직임 벡터 예측자에 가산함으로써 움직임 벡터를 재구성한다.For motion vectors for macroblocks (or blocks, or fields of macroblocks, etc.) in interlaced or sequential P-frames, the encoder calculates a motion vector predictor based on neighboring motion vectors and moves motion vectors and motions. The motion vector is encoded by calculating the difference between the vector predictors and encoding the difference. The decoder reconstructs the motion vector by calculating the motion vector predictor (ie, based on the neighboring motion vector), decoding the motion vector difference and adding the motion vector difference to the motion vector predictor.

도 5a 및 도 5b는 1MV 순차 P-프레임에서의 1MV 매크로블록에 대한 후보 움직임 벡터 예측자를 위해 고려되는 매크로블록의 위치를 나타낸 것이다. 후보 예측자는 매크로블록이 그 행에서의 마지막 매크로블록인 경우를 제외하고는 좌측, 상부 및 우측-상부 매크로블록으로부터 취해진다. 이 경우, 예측자 B는 우측-상부가 아니라 좌측-상부 매크로블록으로부터 취해진다. 프레임이 1 매크로블록 폭인 특별한 경우에, 예측자는 항상 예측자 A(상부 예측자)이다. 매크로블록이 상부 행에 있기 때문에 예측자 A가 경계 밖에 있는 경우, 예측자는 예측자 C이다. 여러가지 다른 규칙들이 인트라-코딩된 예측자 등의 다른 특수한 경우에 대처한다.5A and 5B show the positions of macroblocks considered for candidate motion vector predictors for 1MV macroblocks in a 1MV sequential P-frame. Candidate predictors are taken from left, top, and right-top macroblocks except where the macroblock is the last macroblock in the row. In this case, predictor B is taken from the left-top macroblock rather than the right-top. In the special case where a frame is one macroblock wide, the predictor is always predictor A (upper predictor). If predictor A is out of bounds because the macroblock is in the upper row, the predictor is predictor C. Various other rules address other special cases, such as intra-coded predictors.

도 6a 내지 도 10은 혼합-MV 순차 P-프레임에서의 1MV 또는 4MV 매크로블록의 움직임 벡터에 대한 최대 3개의 후보 움직임 벡터에 대해 고려되는 블록 또는 매크로블록의 위치를 나타낸 것이다. 동 도면들에서 큰 정사각형은 매크로블록 경계이고, 작은 정사각형은 블록 경계이다. 프레임이 1 매크로블록 폭인 특별한 경우에, 예측자는 항상 예측자 A(상부 예측자)이다. 여러가지 다른 규칙이 상부 행 4MV 매크로블록에 대한 상부 행 블록, 상부 행 1MV 매크로블록, 및 인트라-코딩된 예측자 등의 다른 특수한 경우에 대처한다.6A to 10 illustrate the positions of blocks or macroblocks considered for up to three candidate motion vectors relative to the motion vectors of the 1MV or 4MV macroblocks in a mixed-MV sequential P-frame. In the figures, the large square is the macroblock boundary and the small square is the block boundary. In the special case where a frame is one macroblock wide, the predictor is always predictor A (upper predictor). Various other rules address other special cases, such as the top row block, the top row 1MV macroblock, and the intra-coded predictor for the top row 4MV macroblock.

구체적으로는, 도 6a 및 도 6b는 혼합-MV 순차 P-프레임에서의 1MV 현재 매 크로블록에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타낸 것이다. 이웃하는 매크로블록은 1MV 또는 4MV 매크로블록일 수 있다. 도 6a 및 도 6b는 이웃들이 4MV인 것으로 가정할 때 후보 움직임 벡터의 위치를 나타낸 것이다(즉, 예측자 A는 현재 매크로블록 상부의 매크로블록에서의 블록 2에 대한 움직임 벡터이고, 예측자 C는 현재 매크로블록의 바로 좌측의 매크로블록에서의 블록 1에 대한 움직임 벡터이다). 이웃들 중 어느 것이라도 1MV 매크로블록인 경우, 도 5a 및 도 5b에 도시된 움직임 벡터 예측자는 전체 매크로블록에 대한 움직임 벡터 예측자로 취해진다. 도 6b가 도시하는 바와 같이, 매크로블록이 그 행에서의 마지막 매크로블록인 경우, 예측자 B는 그렇지 않은 경우에서와 같이 우측-상부 매크로블록에서의 블록 2로부터가 아니라 좌측-상부 매크로블록의 블록 3으로부터 온 것이다.Specifically, FIGS. 6A and 6B show the positions of blocks considered for the candidate motion vector predictor for 1 MV current macroblock in a mixed-MV sequential P-frame. The neighboring macroblocks may be 1MV or 4MV macroblocks. 6A and 6B show the positions of candidate motion vectors assuming neighbors are 4MV (ie, predictor A is the motion vector for block 2 in the macroblock above the current macroblock, and predictor C is Motion vector for block 1 in the macroblock immediately to the left of the current macroblock). If any of the neighbors is a 1MV macroblock, the motion vector predictor shown in Figs. 5A and 5B is taken as the motion vector predictor for the entire macroblock. As FIG. 6B shows, if the macroblock is the last macroblock in the row, predictor B is not the block of the left-top macroblock, but from block 2 in the right-top macroblock as otherwise. Is from 3.

도 7a 내지 도 10은 혼합-MV 순차 P-프레임의 4MV 매크로블록에서의 4개의 루미넌스 블록 각각에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타낸 것이다. 도 7a 및 도 7b는 위치 0에 있는 블록에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타내고, 도 8a 및 도 8b는 위치 1에 있는 블록에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타내며, 도 9는 위치 2에 있는 블록에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타내고, 도 10은 위치 3에 있는 블록에 대한 후보 움직임 벡터 예측자에 대해 고려되는 블록들의 위치를 나타낸다. 다시 말하면, 이웃이 1MV 매크로블록인 경우, 그 매크로블록에 대한 움직임 벡터 예측자는 그 매크로블 록의 블록들에 대해 사용된다.7A-10 illustrate the positions of blocks considered for the candidate motion vector predictor for each of four luminance blocks in a 4MV macroblock of a mixed-MV sequential P-frame. 7A and 7B show the positions of the blocks considered for the candidate motion vector predictor for the block at position 0, and FIGS. 8A and 8B illustrate the candidate motion vector predictors for the block at position 1 9 shows the positions of the blocks considered for the candidate motion vector predictor for the block at position 2, and FIG. 10 shows the positions for the candidate motion vector predictor for the block at position 3 Indicates the location of the blocks. In other words, if the neighbor is a 1MV macroblock, the motion vector predictor for that macroblock is used for the blocks of that macroblock.

매크로블록이 그 행에서의 첫번째 매크로블록인 경우, 블록 0에 대한 예측자 B는 그 행에 있는 나머지 매크로블록에 대한 블록 0와 다르게 처리된다(도 7a 및 도 7b 참조). 이 경우, 예측자 B는 그렇지 않은 경우에서와 같이 현재 매크로블록의 좌측 상부의 매크로블록에서의 블록 3으로부터가 아니라 현재 매크로블록 바로 상부의 매크로블록에서의 블록 3으로부터 취해진다. 이와 유사하게, 매크로블록이 그 행에서 마지막 매크로블록인 경우, 블록 1에 대한 예측자 B는 다르게 처리된다(도 8a 및 도 8b 참조). 이 경우, 예측자는 그렇지 않은 경우에서와 같이 현재 매크로블록의 우측 상부의 매크로블록에서의 블록 2로부터가 아니라 현재 매크로블록 바로 상부의 매크로블록에서의 블록 2로부터 취해진다. 일반적으로, 매크로블록이 첫번째 매크로블록 열에 있는 경우, 블록 0 및 2에 대한 예측자 C는 0으로 설정된다.If the macroblock is the first macroblock in that row, predictor B for block 0 is treated differently from block 0 for the remaining macroblocks in that row (see FIGS. 7A and 7B). In this case, predictor B is taken from block 3 in the macroblock immediately above the current macroblock, rather than from block 3 in the macroblock at the top left of the current macroblock as otherwise. Similarly, if the macroblock is the last macroblock in the row, the predictor B for block 1 is treated differently (see Figures 8A and 8B). In this case, the predictor is taken from block 2 in the macroblock immediately above the current macroblock and not from block 2 in the macroblock at the top right of the current macroblock as otherwise. In general, if the macroblock is in the first macroblock column, the predictor C for blocks 0 and 2 is set to zero.

순차 P-프레임의 매크로블록이 건너뜀(skipped)으로서 코딩되어 있는 경우, 그에 대한 움직임 벡터 예측자는 매크로블록에 대한 움직임 벡터로서 사용된다(또는 그의 블록에 대한 예측자가 그 블록에 대해 사용된다). 하이브리드 움직임 벡터 예측에서 어느 예측자를 사용할지를 나타내기 위해 단일 비트가 여전히 존재할 수 있다.If a macroblock of a sequential P-frame is coded as skipped, the motion vector predictor for it is used as the motion vector for the macroblock (or the predictor for that block is used for that block). There may still be a single bit to indicate which predictor to use in hybrid motion vector prediction.

도 11, 도 12a 및 도 12b는 각각 인터레이스형 P-프레임에서 프레임-코딩된 매크로블록 및 필드-코딩된 매크로블록에 대한 움직임 벡터 예측을 위한 후보 예측자의 예를 나타낸 것이다. 도 11은 인터레이스형 P-프레임에서의 내부 위치에 있 는 현재의 프레임-코딩된 매크로블록에 대한 후보 예측자 A, B 및 C를 나타낸다(매크로블록 행에서의 첫번째 또는 마지막 매크로블록이 아님, 상부 행에 있지 않음). 예측자는 A, B 및 C로 표시된 것과 다른 후보 방향으로부터 획득될 수 있다(예를 들어, 현재 매크로블록이 행에서 또는 상부 행에서 첫번째 매크로블록 또는 마지막 매크로블록인 경우 등의 특수한 경우에, 어떤 예측자가 이러한 경우에 이용가능하지 않기 때문임). 현재의 프레임-코딩된 매크로블록의 경우, 예측자 후보는 이웃하는 매크로블록이 필드-코딩되었는지 프레임-코딩되었는지에 따라 다르게 계산된다. 이웃하는 프레임-코딩된 매크로블록의 경우, 그에 대한 움직임 벡터가 단순히 예측자 후보로서 취해진다. 이웃하는 필드-코딩된 매크로블록의 경우, 후보 움직임 벡터는 상부 및 하부 필드 움직임 벡터를 평균함으로써 결정된다.11, 12A and 12B show examples of candidate predictors for motion vector prediction for frame-coded macroblocks and field-coded macroblocks in interlaced P-frames, respectively. 11 shows candidate predictors A, B, and C for the current frame-coded macroblock at an internal position in an interlaced P-frame (not the first or last macroblock in the macroblock row, top). Not in a row). Predictors may be obtained from candidate directions other than those indicated by A, B, and C (eg, in special cases, such as when the current macroblock is the first macroblock or the last macroblock in a row or in an upper row, etc. Self is not available in this case). For the current frame-coded macroblock, the predictor candidate is calculated differently depending on whether the neighboring macroblock is field-coded or frame-coded. For neighboring frame-coded macroblocks, the motion vector for it is simply taken as the predictor candidate. For neighboring field-coded macroblocks, the candidate motion vectors are determined by averaging the upper and lower field motion vectors.

도 12a 및 도 12b는 그 필드에서의 내부 위치에 있는 필드-코딩된 매크로블록 내의 현재 필드에 대한 후보 예측자 A, B 및 C를 나타낸다. 도 12a에서, 현재 필드는 하부 필드이고, 이웃하는 매크로블록에서의 하부 필드 움직임 벡터가 후보 예측자로서 사용된다. 도 12b에서, 현재 필드는 상부 필드이고, 이웃하는 매크로블록에서의 상부 필드 움직임 벡터가 후보 예측자로서 사용된다. 현재의 필드-코딩된 매크로블록에서의 각 필드에 대해, 각 필드에 대한 움직임 벡터 예측자 후보의 수는 최대 3개이며, 각각의 후보는 현재 필드와 동일한 필드 유형(예를 들어, 상부 또는 하부)으로부터 나온다. 이웃하는 매크로블록이 프레임-코딩되어 있는 경우, 그에 대한 움직임 벡터는 그의 상부 필드 예측자 및 하부 필드 예측자로서 사용된다. 다시 말하면, 현재의 매크로블록이 행에서 또는 상부 행에서 첫번째 매 크로블록 또는 마지막 매크로블록인 경우 어떤 예측자가 이러한 경우에 이용가능하지 않기 때문에, 여러가지 특수한 경우(도시 생략)가 적용된다. 프레임이 1 매크로블록 폭인 경우, 움직임 벡터 예측자는 예측자 A이다. 이웃하는 매크로블록이 인트라인 경우, 그에 대한 움직임 벡터 예측자는 0이다.12A and 12B show candidate predictors A, B, and C for the current field in the field-coded macroblock at an internal position in that field. In FIG. 12A, the current field is a lower field, and the lower field motion vector in the neighboring macroblock is used as the candidate predictor. In FIG. 12B, the current field is the upper field, and the upper field motion vector in the neighboring macroblock is used as the candidate predictor. For each field in the current field-coded macroblock, the number of motion vector predictor candidates for each field is up to three, with each candidate having the same field type (eg, top or bottom) as the current field. From) If a neighboring macroblock is frame-coded, the motion vector for it is used as its upper field predictor and lower field predictor. In other words, various special cases (not shown) apply because no predictor is available in this case if the current macroblock is the first macroblock or the last macroblock in the row or in the upper row. If the frame is one macroblock wide, the motion vector predictor is predictor A. If the neighboring macroblock is intra, then the motion vector predictor for it is zero.

도 13a 및 도 13b는 일련의 예측자 A, B 및 C가 주어진 경우 움직임 벡터 예측자를 계산하기 위한 의사 코드를 나타낸 것이다. 일련의 예측자 후보로부터 예측자를 선택하기 위해, 인코더 및 디코더는 도 13c에 도시한 3개 중의 메디안(median-of-three) 알고리즘 등의 선택 알고리즘을 사용한다.13A and 13B show pseudo codes for calculating a motion vector predictor given a series of predictors A, B and C. To select predictors from a series of predictor candidates, the encoder and decoder use a selection algorithm such as a median-of-three algorithm shown in FIG. 13C.

D. 순차 P-프레임에 대한 D. For Sequential P-Frames 하이브리드hybrid 움직임 벡터 예측 Motion vector prediction

순차 P-프레임의 움직임 벡터에 대해서 하이브리드 움직임 벡터 예측이 가능하다. 매크로블록 또는 블록의 움직임 벡터의 경우, 순차 P-프레임이 1MV 또는 혼합-MV인지에 상관없이, 예측자 선택이 비트스트림에 명시적으로 코딩되어 있는지를 판정하기 위해 이전의 섹션에서 계산된 움직임 벡터 예측자가 A 및 C 예측자에 대해 테스트된다. 그렇게 되어 있는 경우, (상기 섹션 C에서 계산된 움직임 벡터 예를 사용하지 않고) 예측자 A 또는 예측자 C를 움직임 벡터에 대한 움직임 벡터 예측자로서 사용할지를 가리키는 비트가 디코딩된다. 하이브리드 움직임 벡터 예측이 인터레이스형 P-프레임 또는 임의의 인터레이스형 비디오 표현에 대한 움직임 벡터 예측에서 사용되지 않는다.Hybrid motion vector prediction is possible for motion vectors of sequential P-frames. For macroblocks or block motion vectors, the motion vector computed in the previous section to determine whether the predictor selection is explicitly coded in the bitstream, regardless of whether the sequential P-frame is 1MV or mixed-MV. Predictors are tested against A and C predictors. If so, the bits indicating whether to use predictor A or predictor C as the motion vector predictor for the motion vector (without using the motion vector example calculated in section C above) are decoded. Hybrid motion vector prediction is not used in motion vector prediction for interlaced P-frames or any interlaced video representation.

도 14a 및 도 14b의 의사 코드는 순차 P-프레임의 움직임 벡터에 대한 하이브리드 움직임 벡터 예측을 나타낸 것이다. 의사 코드에서, 변수 predictor_pre_x 및 predictor_pre_y는 각각 이전의 섹션에서 계산된 수평 및 수직 움직임 벡터 예측자이다. 변수 predictor_post_x 및 predictor_post_y는 각각 하이브리드 움직임 벡터 예측에 대한 검사 후의 수평 및 수직 움직임 벡터 예측자이다.14A and 14B illustrate hybrid motion vector prediction for motion vectors of sequential P-frames. In the pseudo code, the variables predictor_pre_x and predictor_pre_y are the horizontal and vertical motion vector predictors respectively calculated in the previous section. The variables predictor_post_x and predictor_post_y are the horizontal and vertical motion vector predictors after the test for hybrid motion vector prediction, respectively.

E. 움직임 벡터 차분의 디코딩E. Decoding Motion Vector Difference

순차 P-프레임의 매크로블록 또는 블록의 경우, MVDATA 또는 BLKMVDATA 요소는 움직임 벡터 차분 정보를 시그널링한다. 1MV 매크로블록은 단일의 MVDATA를 갖는다. 4MV 매크로블록은 0 내지 4개의 BLKMVDATA 요소(이의 존재 여부는 CBPCY에 의해 표시됨)를 갖는다. For macroblocks or blocks of sequential P-frames, the MVDATA or BLKMVDATA elements signal motion vector difference information. A 1 MV macroblock has a single MVDATA. The 4MV macroblock has 0 to 4 BLKMVDATA elements, the presence of which is indicated by CBPCY.

MVDATA 또는 BLKMVDATA는 3가지 것, 즉 (1) 수평 움직임 벡터 차분 성분, (2) 수직 움직임 벡터 차분 성분, 및 (3) 일반적으로 변환 계수가 존재하는지 여부를 가리키는 이진 "마지막" 플래그를 공동으로 인코딩한다. 매크로블록(또는 4MV의 경우 블록)이 인트라-코딩되어 있는지 인터-코딩되어 있는지가 움직임 벡터 차분 가능값들 중 하나로서 시그널링된다. 도 15a 및 도 15b의 의사 코드는 MVDATA 또는 BLKMVDATA의 경우 움직임 벡터 차분 정보, 인터/인트라 유형, 및 last 플래그 정보가 어떻게 디코딩되는지를 나타낸 것이다. 이 의사 코드에서, 변수 last_flag는 이진 플래그이며, 그의 사용에 대해서는 매크로블록 정보의 시그널링에 관한 섹션에서 기술된다. 변수 intra_flag는 블록 또는 매크로블록이 인트라인지 여부를 가리키는 이진 플래그이다. 변수 dmv_x 및 dmv_y는 각각 차분 수평 및 수직 움직임 벡터 성분이다. 변수 k_x 및 k_y는 연장된 범위 움직임 벡터에 대한 고정 길이이며, 그의 값은 도 15c의 테이블에 나타낸 바와 같이 변한다. 변수 halfpel_flag 는 움직임 벡터에 대해 1/4 픽셀 정밀도의 1/2 픽셀이 사용되는지 여부를 가리키는 이진값이며, 그의 값은 픽처 계층 신택스 요소에 기초하여 설정된다. 마지막으로, 테이블 size_table 및 offset_table은 다음과 같이 정의된 어레이이다.MVDATA or BLKMVDATA jointly encode three things: (1) the horizontal motion vector differential component, (2) the vertical motion vector differential component, and (3) a binary "last" flag that generally indicates whether a transform coefficient is present. do. Whether the macroblock (or block in case of 4MV) is intra-coded or inter-coded is signaled as one of the motion vector difference possible values. The pseudo code of FIGS. 15A and 15B shows how motion vector difference information, inter / intra type, and last flag information are decoded in case of MVDATA or BLKMVDATA. In this pseudo code, the variable last_flag is a binary flag, the use of which is described in the section on the signaling of macroblock information. The variable intra_flag is a binary flag indicating whether a block or macroblock is intra. The variables dmv_x and dmv_y are the differential horizontal and vertical motion vector components, respectively. The variables k_x and k_y are fixed lengths for the extended range motion vector whose values vary as shown in the table of FIG. 15C. The variable halfpel_flag is a binary value indicating whether 1/2 pixel of 1/4 pixel precision is used for the motion vector, the value of which is set based on the picture layer syntax element. Finally, tables size_table and offset_table are arrays defined as follows:

size_table[6] = {0, 2, 3, 4, 5, 8}이고,size_table [6] = {0, 2, 3, 4, 5, 8},

offset_table[6] = {0, 1, 3, 7, 15, 31}이다.offset_table [6] = {0, 1, 3, 7, 15, 31}.

인터레이스형 P-프레임의 프레임-코딩된 또는 필드-코딩된 매크로블록의 경우, MVDATA, TOPMVDATA 및 BOTMVDATA 요소는 동일한 방식으로 디코딩된다.For frame-coded or field-coded macroblocks of interlaced P-frames, the MVDATA, TOPMVDATA and BOTMVDATA elements are decoded in the same way.

F. 움직임 벡터의 재구성 및 도출F. Reconstruction and Derivation of Motion Vectors

루미넌스 움직임 벡터는 인코딩된 움직임 벡터 차분 정보 및 움직임 벡터 예측자로부터 재구성되고, 크로미넌스 움직임 벡터는 재구성된 루미넌스 움직임 벡터로부터 도출된다.The luminance motion vector is reconstructed from the encoded motion vector difference information and the motion vector predictor, and the chrominance motion vector is derived from the reconstructed luminance motion vector.

순차 P-프레임의 1MV 및 4MV 매크로블록의 경우, 루미넌스 움직임 벡터는 다음과 같이 움직임 벡터 예측자에 차분을 가산함으로써 재구성된다.For 1MV and 4MV macroblocks of sequential P-frames, the luminance motion vector is reconstructed by adding the difference to the motion vector predictor as follows.

mv_x = (dmv_x + predictor_x) smod range_x,mv_x = (dmv_x + predictor_x) smod range_x,

mv_y = (dmv_y + predictor_y) smod range_y,mv_y = (dmv_y + predictor_y) smod range_y,

여기서, smod는 다음과 같이 정의되는 부호를 갖는 모듈러스(signed modulus) 연산이고,Where smod is a signed modulus operation defined as

A smod b = ((A+b) % 2b) - b,A smod b = ((A + b)% 2b)-b,

이는 재구성된 벡터가 유효하도록 보장한다.This ensures that the reconstructed vector is valid.

1MV 매크로블록에서, 매크로블록의 루미넌스 성분을 이루는 4개의 블록에 대 해 단일의 움직임 벡터가 있다. 매크로블록이 인트라인 경우, 매크로블록과 연관되어 있는 움직임 벡터가 없다. 매크로블록이 건너뜀(skipped)인 경우, dmv_x = 0 이고 dmv_y = 0이며, 따라서 mv_x = predictor_x이고 mv_y = predictor_y이다.In a 1MV macroblock, there is a single motion vector for the four blocks that make up the luminance component of the macroblock. If the macroblock is intra, there is no motion vector associated with the macroblock. If the macroblock is skipped, then dmv_x = 0 and dmv_y = 0, so mv_x = predictor_x and mv_y = predictor_y.

4MV 매크로블록 내의 각각의 인터 루미넌스 블록은 그 자신의 움직임 벡터를 갖는다. 따라서, 4MV 매크로블록에는 0 내지 4개의 루미넌스 움직임 벡터가 있게 된다. 4MV 매크로블록이 건너뜀인 경우 또는 4MV 매크로블록에 대한 CBPCY가 그 블록이 비코딩되어 있음을 가리키는 경우, 4MV 매크로블록에 비코딩된 블록이 있을 수 있다. 블록이 코딩되어 있지 않은 경우, dmv_x = 0이고 dmv_y = 0이며, 따라서 mv_x = predictor_x이고 mv_y = predictor_y이다.Each inter luminance block in a 4MV macroblock has its own motion vector. Thus, there are zero to four luminance motion vectors in the 4MV macroblock. If the 4MV macroblock is skipped or if the CBPCY for the 4MV macroblock indicates that the block is uncoded, there may be a non-coded block in the 4MV macroblock. If the block is not coded, then dmv_x = 0 and dmv_y = 0, so mv_x = predictor_x and mv_y = predictor_y.

순차 P-프레임의 경우, 크로마 움직임 벡터는 루미넌스 움직임 벡터로부터 도출된다. 또한, 4MV 매크로블록의 경우, 크로마 블록을 인터 또는 인트라로서 코딩할지의 결정은 루미넌스 블록의 상태에 기초하여 행해진다. 크로마 벡터는 2 단계로 구성된다.For sequential P-frames, the chroma motion vector is derived from the luminance motion vector. In addition, in the case of the 4MV macroblock, the determination of whether to code the chroma block as inter or intra is made based on the state of the luminance block. Chroma vectors are composed of two steps.

첫번째 단계에서, 공칭 크로마 움직임 벡터는 루미넌스 움직임 벡터들을 적절히 합성 및 스케일링함으로써 얻어진다. 이 스케일링은 1/2 픽셀 오프셋이 1/4 픽셀 오프셋보다 우선되도록 수행된다. 도 16a는 1MV 매크로블록에 대해 루미넌스 움직임 벡터로부터 크로마 움직임 벡터를 도출할 때 스케일링을 위한 의사 코드를 나타낸 것이다. 도 16b는 4MV 매크로블록에 대해 크로마 움직임 벡터를 도출할 때 최대 4개의 루미넌스 움직임 벡터를 합성 및 스케일링하기 위한 의사 코드를 나타낸 것이다. 도 13c는 median3() 함수에 대한 의사 코드를 나타낸 것이고, 도 16c 는 median4() 함수에 대한 의사 코드를 나타낸 것이다.In a first step, a nominal chroma motion vector is obtained by properly combining and scaling luminance motion vectors. This scaling is performed so that the half pixel offset takes precedence over the quarter pixel offset. FIG. 16A illustrates a pseudo code for scaling when deriving a chroma motion vector from a luminance motion vector for a 1MV macroblock. 16B illustrates pseudo code for synthesizing and scaling up to four luminance motion vectors when deriving chroma motion vectors for a 4MV macroblock. 13C shows a pseudo code for the median3 () function, and FIG. 16C shows a pseudo code for the median4 () function.

두번째 단계에서, 시퀀스 레벨 1-비트 요소는 크로마 움직임 벡터의 추가의 반올림이 필요한지를 결정하는 데 사용된다. 그렇다면, 1/4 픽셀(quarter-pixel) 오프셋에 있는 크로마 움직임 벡터는 가장 가까운 완전 픽셀(full-pixel) 위치로 반올림된다.In the second step, sequence level 1-bit elements are used to determine if further rounding of the chroma motion vector is needed. If so, the chroma motion vector at the quarter-pixel offset is rounded up to the nearest full-pixel position.

인터레이스형 P-프레임의 프레임-코딩된 및 필드-코딩된 매크로블록의 경우, 루미넌스 움직임 벡터는 순차 P-프레임에 대해 행해진 것처럼 재구성된다. 프레임-코딩된 매크로블록에서, 매크로블록의 루미넌스 성분을 이루는 4개의 블록에 대해 단일의 움직임 벡터가 있다. 매크로블록이 인트라인 경우, 그 매크로블록과 관련 움직임 벡터가 없다. 매크로블록이 건너뜀인 경우, dmv_x = 0이고 dmv_y = 0이며, 따라서 mv_x = predictor_x이고 mv_y = predictor_y이다. 필드-코딩된 매크로블록에서, 각각의 필드는 그 자신의 움직임 벡터를 가질 수 있다. 따라서, 필드-코딩된 매크로블록에는 0 내지 2개의 루미넌스 움직임 벡터가 있게 된다. 필드-코딩된 매크로블록이 건너뜀인 경우 또는 필드-코딩된 매크로블록에 대한 CBPCY가 그 필드가 비코딩되어 있음을 가리키는 경우, 필드-코딩된 매크로블록에 비코딩된 필드가 있을 수 있다. 필드가 코딩되지 않은 경우, dvm_x = 0이고 dvm_y = 0이며, 따라서 mv_x = predictor_x이고 mv_y = predictor_y이다.For frame-coded and field-coded macroblocks of interlaced P-frames, the luminance motion vectors are reconstructed as if they were done for sequential P-frames. In a frame-coded macroblock, there is a single motion vector for the four blocks that make up the luminance component of the macroblock. If a macroblock is intra, there is no motion vector associated with that macroblock. If the macroblock is skipped, then dmv_x = 0 and dmv_y = 0, so mv_x = predictor_x and mv_y = predictor_y. In a field-coded macroblock, each field may have its own motion vector. Thus, there will be zero to two luminance motion vectors in the field-coded macroblock. If the field-coded macroblock is skipped or if the CBPCY for the field-coded macroblock indicates that the field is uncoded, there may be a non-coded field in the field-coded macroblock. If the field is not coded, then dvm_x = 0 and dvm_y = 0, so mv_x = predictor_x and mv_y = predictor_y.

인터레이스형 P-프레임의 경우, 크로마 움직임 벡터는 루미넌스 움직임 벡터로부터 도출된다. 프레임-코딩된 매크로블록의 경우, 단일의 루미넌스 움직임 벡터에 대응하는 하나의 크로미넌스 움직임 벡터가 있다. 필드-코딩된 매크로블록의 경우, 2개의 크로미넌스 움직임 벡터가 있다. 하나는 상부 필드에 대한 것이고 하나는 하부 필드에 대한 것이며, 상부 및 하부 필드 루미넌스 움직임 벡터에 대응한다. 크로마 움직임 벡터를 도출하기 위한 규칙은 필드-코딩된 매크로블록 및 프레임-코딩된 매크로블록 둘다에 대해 동일하다. 이 규칙은 매크로블록의 유형이 아니라 루미넌스 움직임 벡터에 의존한다. 도 17은 인터레이스형 P-프레임의 프레임-코딩된 또는 필드-코딩된 매크로블록에 대한 루미넌스 움직임 벡터로부터 크로마 움직임 벡터를 도출하기 위한 의사 코드를 나타낸 것이다. 기본적으로, 크로미넌스 움직임 벡터의 x 성분은 4배 스케일링되는 반면 크로미넌스 움직임 벡터의 y 성분은 그대로 있다(4:1:1 매크로블록 크로마 서브샘플링 때문임). 크로미넌스 움직임 벡터의 스케일링된 x 성분도 역시 이웃하는 1/4 픽셀 위치로 반올림된다. cmv_x 또는 cmv_y가 범위를 벗어난 경우, 이는 유효한 범위로 다시 끌려 들어온다.For an interlaced P-frame, the chroma motion vector is derived from the luminance motion vector. In the case of a frame-coded macroblock, there is one chrominance motion vector corresponding to a single luminance motion vector. For field-coded macroblocks, there are two chrominance motion vectors. One for the upper field and one for the lower field, corresponding to the upper and lower field luminance motion vectors. The rules for deriving chroma motion vectors are the same for both field-coded macroblocks and frame-coded macroblocks. This rule depends not on the type of macroblock but on the luminance motion vector. 17 shows a pseudo code for deriving a chroma motion vector from a luminance motion vector for a frame-coded or field-coded macroblock of an interlaced P-frame. Basically, the x component of the chrominance motion vector is scaled 4 times while the y component of the chrominance motion vector remains the same (due to 4: 1: 1 macroblock chroma subsampling). The scaled x component of the chrominance motion vector is also rounded up to the neighboring quarter pixel position. If cmv_x or cmv_y is out of range, it is dragged back into the valid range.

G. 세기 보상G. Century Reward

순차 P-프레임의 경우, 픽처 계층은 프레임에 대한 움직임 보상 모드 및 세기 보상을 제어하는 신택스 요소를 포함한다. 세기 보상이 시그널링되는 경우, 픽처 계층에서 LUMSCALE 및 LUMSHIFT 요소가 뒤따른다. LUMSCALE 및 LUMSHIFT는 세기 보상 프로세스에서 사용되는 파라미터를 지정하는 6-비트 값이다.For sequential P-frames, the picture layer includes a syntax element that controls the motion compensation mode and intensity compensation for the frame. If intensity compensation is signaled, this is followed by the LUMSCALE and LUMSHIFT elements in the picture layer. LUMSCALE and LUMSHIFT are 6-bit values that specify the parameters used in the intensity compensation process.

세기 보상이 순차 P-프레임에 대해 사용될 때, 참조 프레임 내의 픽셀들은 P-프레임에 대한 움직임-보상된 예측에서 이들을 사용하기에 앞서 재매핑된다. 도 18의 의사 코드는 LUMSCALE 및 LUMSHIFT 요소가 참조 프레임 픽셀을 재매핑하는 데 사용되는 룩업 테이블을 구축하는 데 어떻게 사용되는지를 나타낸 것이다. 다음과 같이, 참조 프레임의 Y 성분은 LUTY[] 테이블을 사용하여 재매핑되고, U 및 V 성분은 LUTUV[] 테이블을 사용하여 재매핑된다.When intensity compensation is used for sequential P-frames, the pixels in the reference frame are remapped prior to using them in the motion-compensated prediction for the P-frame. The pseudo code of FIG. 18 shows how the LUMSCALE and LUMSHIFT elements are used to build a lookup table used to remap reference frame pixels. As follows, the Y component of the reference frame is remapped using the LUTY [] table, and the U and V components are remapped using the LUTUV [] table.

Figure 112009053892549-pat00001
, 및
Figure 112009053892549-pat00001
, And

Figure 112009053892549-pat00002
,
Figure 112009053892549-pat00002
,

여기서,

Figure 112009053892549-pat00003
는 참조 프레임에서의 원래의 루미넌스 픽셀 값이고,
Figure 112009053892549-pat00004
는 참조 프레임에서의 재매핑된 루미넌스 픽셀 값이며,
Figure 112009053892549-pat00005
는 참조 프레임에서의 원래의 U 또는 V 픽셀 값이고,
Figure 112009053892549-pat00006
는 참조 프레임에서의 재매핑된 U 또는 V 픽셀 값이다.here,
Figure 112009053892549-pat00003
Is the original luminance pixel value in the reference frame,
Figure 112009053892549-pat00004
Is the remapped luminance pixel value in the reference frame,
Figure 112009053892549-pat00005
Is the original U or V pixel value in the reference frame,
Figure 112009053892549-pat00006
Is the remapped U or V pixel value in the reference frame.

인터레이스형 P-프레임의 경우, 1-비트 픽처-계층 INTCOMP 값은 프레임에 대해 세기 보상이 사용되는지 여부를 시그널링한다. 세기 보상이 사용되는 경우, 픽처 계층에서 LUMSCALE 및 LUMSHIFT 요소가 뒤따라오며, 여기서 LUMSCALE 및 LUMSHIFT는 전체 인터레이스형 P-프레임에 대한 세기 보상 프로세스에서 사용되는 파라미터를 지정하는 6-비트 값이다. 세기 보상 자체는 순차 P-프레임에 대한 것과 동일한다.For interlaced P-frames, the 1-bit picture-layer INTCOMP value signals whether intensity compensation is used for the frame. When intensity compensation is used, it is followed by LUMSCALE and LUMSHIFT elements in the picture layer, where LUMSCALE and LUMSHIFT are 6-bit values that specify the parameters used in the intensity compensation process for the entire interlaced P-frame. The intensity compensation itself is the same as for sequential P-frames.

VIVI . 비디오 압축 및 압축 해제에 대한 표준. Standard for Video Compression and Decompression

이전의 WMV 인코더 및 디코더와 별도로, 몇가지 국제 표준이 비디오 압축 및 압축 해제와 관련되어 있다. 이들 표준은 MPEG(Motion Picture Experts Group) 1, 2 및 4 표준 및 ITU(International Telecommunication Union)로부터의 H.261, H.262(MPEG2에 대한 다른 이름), H.263 및 H.264 표준을 포함한다. 이들 표준 중 하나를 따르는 인코더 및 디코더는 일반적으로 픽처들 간의 시간 중복성(temporal redundancy)을 감소시키기 위해 움직임 추정 및 보상을 사용한다.Apart from previous WMV encoders and decoders, several international standards relate to video compression and decompression. These standards include the Motion Picture Experts Group (MPEG) 1, 2, and 4 standards and H.261, H.262 (another name for MPEG2), H.263, and H.264 standards from the International Telecommunication Union (ITU). do. Encoders and decoders that follow one of these standards generally use motion estimation and compensation to reduce temporal redundancy between pictures.

A. 움직임 보상을 위한 참조 A. Reference for Motion Compensation 픽처Picture

몇가지 표준의 경우, 전방 예측 프레임에 대한 움직임 보상은 현재의 전방 예측 프레임에 바로 선행하는 이전에 재구성된 I-프레임 또는 P-프레임인 단일의 참조 프레임과 관련되어 있다. 현재의 전방 예측 프레임에 대한 참조 프레임을 알고 있고 또 하나의 참조 프레임만이 가능하기 때문에, 다수의 참조 프레임 간에 선택하는 데 사용되는 정보는 필요없다. 예를 들어, H.261 및 MPEG 1 표준을 참조하기 바란다. 어떤 인코딩/디코딩 시나리오(예를 들어, 많은 움직임을 갖는 높은 비트 레이트 인터레이스형 비디오)에서, 전방 예측에 대한 움직임 보상을 단일 참조에 관련되도록 제한하는 것은 전체 압축 효율을 해칠 수 있다.For some standards, motion compensation for forward prediction frames is associated with a single reference frame, which is a previously reconstructed I-frame or P-frame immediately preceding the current forward prediction frame. Since the reference frame for the current forward prediction frame is known and only one reference frame is possible, the information used to select between multiple reference frames is not necessary. See, for example, H.261 and MPEG 1 standards. In some encoding / decoding scenarios (eg, high bit rate interlaced video with many motions), limiting motion compensation for forward prediction to be related to a single reference can impair overall compression efficiency.

H.262 표준은 인터레이스형 비디오 프레임이 단일 프레임으로서 또는 2개의 필드로서 인코딩될 수 있게 해주며, 여기서 프레임 인코딩 또는 필드 인코딩은 프레임별로 적응적으로 선택될 수 있다. 현재 필드의 필드-기반 예측의 경우, 움직임 보상은 이전에 재구성된 상부 필드 또는 하부 필드를 사용한다[H262 표준, 섹션 7.6.1 및 7.6.2.1 참조]. H.262 표준은 현재 필드에 대한 움직임 벡터로 움직임 보상을 하는 데 사용하기 위해 2개의 참조 필드 중에 선택하는 것에 대해 기술하고 있다[H.262 표준, 섹션 6.2.5.2, 6.3.17.2 및 7.6.4 참조]. 16x16 매크로블록에 대한 주어진 움직임 벡터(또는 매크로블록의 상부 16x8 반쪽 또는 매크로블록의 하 부 16x8 반쪽)의 경우, 상부 참조 필드 또는 하부 참조 필드에 움직임 벡터를 적용할지를 나타내기 위해 단일 비트가 시그널링된다[Id .]. 부가의 상세에 대해서는, H.262 표준을 참조하기 바란다.The H.262 standard allows interlaced video frames to be encoded as a single frame or as two fields, where frame encoding or field encoding can be adaptively selected frame by frame. For field-based prediction of the current field, motion compensation uses previously reconstructed upper or lower fields [see H262 standard, section 7.6.1 and 7.6.2.1]. The H.262 standard describes the choice of two reference fields for use in motion compensation with the motion vectors for the current field [H.262 standard, section 6.2.5.2, 6.3.17.2 and 7.6.4. Reference]. For a given motion vector (or upper 16x8 half of a macroblock or lower 16x8 half of a macroblock) for a 16x16 macroblock, a single bit is signaled to indicate whether to apply the motion vector to the upper reference field or the lower reference field [ Id . ]. See the H.262 standard for additional details.

어떤 경우에 이러한 참조 필드 선택이 움직임 보상에서의 어떤 유연성 및 예측 개선을 제공하지만, 이는 비트 레이트에 관한 몇가지 단점을 가지고 있다. 움직임 벡터에 대한 참조 필드 선택 시그널링은 많은 비트를 소비할 수 있다. 예를 들어, 810개 매크로블록을 갖는 단일의 720x288 필드의 경우(각각의 매크로블록은 0, 1, 또는 2개의 움직임 벡터를 가짐), 움직임 벡터에 대한 참조 필드 선택 비트는 최대 1620 비트를 소비한다. 개별적인 움직임 벡터에 대해 어느 참조 필드가 선택되어지는지를 예측함으로써 참조 필드 선택 정보의 비트 레이트를 감소시키려는 시도가 행해지지 않는다. 참조 필드 선택 정보의 신호는 순수 코딩 효율의 관점에서 비효율적이다. 게다가, 어떤 시나리오의 경우, 정보가 인코딩되지만, 참조 필드 선택 정보는 움직임 보상에서의 다수의 이용가능한 참조를 갖는 것으로부터의 예측 개선의 이점이 무색케될 정도로 많은 비트를 소비할 수 있다. 이러한 시나리오에 대처하기 위해 참조 필드 선택을 디스에이블하는 옵션이 주어져 있지 않다.In some cases this reference field selection provides some flexibility and prediction improvement in motion compensation, but this has some disadvantages with regard to bit rate. Reference field selection signaling for a motion vector may consume many bits. For example, for a single 720x288 field with 810 macroblocks (each macroblock has 0, 1, or 2 motion vectors), the reference field select bit for the motion vector consumes at most 1620 bits. . No attempt is made to reduce the bit rate of the reference field selection information by predicting which reference field is selected for the individual motion vector. The signal of the reference field selection information is inefficient in terms of pure coding efficiency. In addition, for some scenarios, the information is encoded, but the reference field selection information may consume so many bits that the benefit of prediction improvement from having multiple available references in motion compensation is overshadowed. There is no option to disable the reference field selection to cope with this scenario.

H.262 표준은 또한 인터레이스형 P-픽처에서 16x16 블록에 대해 2개의 전방 필드-기반 예측이 평균되는 예측 모드인 듀얼-프라임 예측(dual-prime prediction)에 대해서도 기술하고 있다[H.262 표준, 섹션 7.6.3.6 참조].The H.262 standard also describes dual-prime prediction, a prediction mode in which two forward field-based predictions are averaged over 16x16 blocks in an interlaced P-picture [H.262 standard, See section 7.6.3.6].

MPEG-4 표준에 의해 인터레이스형 비디오 프레임의 매크로블록이 프레임-코딩 또는 필드-코딩될 수 있다[MPEG-4 표준, 섹션 6.1.3.8 참조]. 필드-코딩된 매 의 상부 또는 하부 필드 라인의 필드-기반 예측의 경우, 움직임 보상은 이전에 재구성된 상부 필드 또는 하부 필드를 사용한다[MPEG-4 표준, 섹션 6.3.7.3 및 7.6.2 참조]. MPEG-4 표준은 움직임 보상에 사용하기 위해 2개의 참조 필드 중에서 선택하는 것에 대해 기술하고 있다[MPEG-4 표준, 섹션 6.3.7.3 참조]. 매크로블록의 상부 필드 라인 또는 하부 필드 라인에 대한 주어진 움직임 벡터의 경우, 움직임 벡터를 상부 참조 필드에 적용할지 또는 하부 참조 필드에 적용할지를 가리키기 위해 단일 비트가 시그널링된다[Id .]. 부가의 상세에 대해서는, MPEG-4 표준을 참조하기 바란다. 참조 필드 선택 정보의 이러한 시그널링은 H.262에 대해 전술한 것과 유사한 문제점을 갖는다.Macroblocks of interlaced video frames can be frame-coded or field-coded by the MPEG-4 standard [see MPEG-4 standard, section 6.1.3.8]. For field-based prediction of the upper or lower field lines of field-coded sheets, motion compensation uses previously reconstructed upper or lower fields [see MPEG-4 standard, sections 6.3.7.3 and 7.6.2]. . The MPEG-4 standard describes the selection of two reference fields for use in motion compensation [see MPEG-4 standard, section 6.3.7.3]. For a given motion vector for the upper field line or lower field line of the macroblock, a single bit is signaled to indicate whether to apply the motion vector to the upper reference field or the lower reference field [ Id . ]. See the MPEG-4 standard for additional details. This signaling of reference field selection information has a similar problem as described above for H.262.

H.263 표준은 선택적인 참조 픽처 선택 모드를 비롯하여 순차 P-프레임에 대한 움직임 보상에 대해 기술하고 있다[H.263 표준, 섹션 3.4.12, 부록 N 참조]. 통상, 가장 최근의 시간상 이전의 앵커 픽처가 움직임 보상을 위해 사용된다. 그렇지만, 참조 픽처 선택 모드가 사용되는 경우, 가장 최근의 참조 픽처가 아닌 픽처들로부터 시간 예측을 할 수 있다[Id .]. 이것은 인코더가 채널의 조건에 대해 그의 비디오 인코딩을 최적화(예를 들어, 인터-프레임 코딩에서 참조하기 위해 필요한 정보의 손실로 인한 에러 전파를 중단)할 수 있게 해줌으로써 에러가 발생하기 쉬운(error-prone) 채널을 통한 실시간 비디오 통신의 성능을 향상시킬 수 있다[Id .]. 사용되는 경우, 픽처 내의 주어진 그룹의 블록 또는 슬라이스의 경우, 10-비트 값은 그 그룹의 블록 또는 슬라이스의 예측을 위해 사용된 참조를 가리킨다[Id .]. H.263에 기술된 참조 픽처 선택 메카니즘은 순차 비디오에 대한 것이고 그 자체로서 압축 효율을 향상시키기 위한 것이 아니라 에러가 발생하기 쉬운 채널에서의 에러 전파의 문제를 해소하도록 구성되어 있다.The H.263 standard describes motion compensation for sequential P-frames, including an optional reference picture selection mode [see H.263 standard, section 3.4.12, Appendix N]. Typically, the most recent previous anchor picture is used for motion compensation. However, when the reference picture selection mode is used, time prediction can be made from pictures other than the most recent reference picture [ Id . ]. This allows the encoder to optimize its video encoding for the conditions of the channel (e.g., stop error propagation due to loss of information needed for reference in inter-frame coding). prone) can improve the performance of real-time video communications over channels [ Id . ]. If used, for a block or slice of a given group within a picture, the 10-bit value indicates the reference used for prediction of the block or slice of that group [ Id . ]. The reference picture selection mechanism described in H.263 is for sequential video and is not intended to improve compression efficiency on its own but is configured to solve the problem of error propagation in error prone channels.

H.264 표준의 초안 JVT-D157에, 블록의 움직임-보상된 예측을 위한 인터 예측(inter prediction) 프로세스는 다수의 저장된 이전에 디코딩된 픽처로부터 참조 픽처를 선택하는 것을 수반할 수 있다[JVT-D157, 섹션 0.4.3]. 픽처 레벨에서, 하나 이상의 파라미터는 픽처를 디코딩하는 데 사용되는 참조 픽처의 개수를 지정한다[JVT-D157, 섹션 7.3.2.2 및 7.4.2.2]. 슬라이스 레벨에서, 이용가능한 참조 픽처의 개수는 변할 수 있으며, 리스트에 있는 참조 픽처를 순서 조정 및 관리하기 위해 부가의 파라미터가 수신될 수 있다[JVT-D157, 섹션 7.3.3 및 7.4.3]. (매크로블록 또는 서브-매크로블록 부분에 대한) 주어진 움직임 벡터의 경우, 참조 인덱스가 존재하는 경우 이는 예측을 위해 사용될 참조 픽처를 가리킨다[JVT-D157, 섹션 7.3.5.1 및 7.4.5.1]. 참조 인덱스는 리스트에서 첫번째, 두번째, 세번째, 기타의 프레임 또는 필드를 가리킨다[Id .]. 리스트에 하나의 활성 참조 픽처만이 있는 경우, 참조 인덱스는 존재하지 않는다[Id .]. 리스트에 단지 2개의 활성 참조 픽처가 있는 경우, 참조 인덱스를 나타내기 위해 단일의 인코딩된 비트가 사용된다[Id.]. 부가의 상세에 대해서는, H.264 표준의 초안 JVT-D157를 참조하기 바란다.In draft JVT-D157 of the H.264 standard, the inter prediction process for motion-compensated prediction of a block may involve selecting a reference picture from a number of stored previously decoded pictures [JVT- D157, section 0.4.3]. At the picture level, one or more parameters specify the number of reference pictures used to decode the picture [JVT-D157, section 7.3.2.2 and 7.4.2.2]. At the slice level, the number of available reference pictures can vary, and additional parameters can be received to reorder and manage the reference pictures in the list [JVT-D157, section 7.3.3 and 7.4.3]. For a given motion vector (for the macroblock or sub-macroblock portion), if a reference index is present it indicates the reference picture to be used for prediction [JVT-D157, section 7.3.5.1 and 7.4.5.1]. The reference index points to the first, second, third, or other frame or field in the list [ Id . ]. If there is only one active reference picture in the list, there is no reference index [ Id . ]. If there are only two active reference pictures in the list, a single encoded bit is used to indicate the reference index [Id.]. See draft JVT-D157 in the H.264 standard for additional details.

JVT-D157의 참조 픽처 선택은 유연성을 제공하며, 그에 의해 움직임 보상을 위한 예측을 향상시킬 수 있다. 그렇지만, 참조 픽처 리스트를 관리하고 참조 픽처 선택을 시그널링하는 프로세스는 복잡하고 어떤 시나리오에서는 비효율적인 비 트 수를 소비한다.The reference picture selection of the JVT-D157 provides flexibility, thereby improving the prediction for motion compensation. However, the process of managing the reference picture list and signaling the reference picture selection is complex and in some scenarios consumes an inefficient number of bits.

B. 매크로블록 B. Macroblocks 모드의Mod 신호 signal

다양한 표준들은 매크로블록 정보를 시그널링하기 위해 서로 다른 메카니즘을 사용한다. 예를 들어, H.261 표준에서는, 매크로블록의 매크로블록 헤더는 VLC로서 시그널링되는 매크로블록 유형 MTYPE 요소를 포함한다[H.261 표준, 섹션 4.2.3]. MTYPE 요소는 예측 모드(인트라, 인터, 인터 + MC, 인터 + MC + 루프 필터링), 매크로블록에 대해 양자화기 MQANT 요소가 존재하는지 여부, 매크로블록에 대해 움직임 벡터 데이터 MVD 요소가 존재하는지 여부, 매크로블록에 대해 코딩된 블록 패턴 CBP 요소가 존재하는지 여부, 및 매크로블록의 블록들에 대해 변환 계수 TCOEFF 요소가 존재하는지 여부를 가리킨다[Id.]. 모든 움직임-보상된 매크로블록에 대해 MVD 요소가 존재한다[Id.].Various standards use different mechanisms for signaling macroblock information. For example, in the H.261 standard, the macroblock header of a macroblock includes a macroblock type MTYPE element signaled as VLC [H.261 standard, section 4.2.3]. The MTYPE element is a prediction mode (intra, inter, inter + MC, inter + MC + loop filtering), whether a quantizer MQANT element exists for the macroblock, whether the motion vector data MVD element exists for the macroblock, the macro Indicates whether a coded block pattern CBP element exists for the block and whether a transform coefficient TCOEFF element exists for the blocks of the macroblock [Id.]. There is an MVD element for every motion-compensated macroblock [Id.].

MPEG-1 표준에서, 매크로블록은 VLC로서 시그널링되는 macroblock_type 요소를 갖는다[MPEG-1 표준, 섹션 2.4.3.6, 테이블 B.2a, 테이블 B.2a 내지 B.2d, D.6.4.2]. 전방 예측 픽처에서의 매크로블록의 경우, macroblock_type 요소는 매크로블록에 대해 양자화기 스케일 요소가 존재하는지 여부, 매크로블록에 대해 전방 움직임 벡터 데이터가 존재하는지 여부, 매크로블록에 대해 코딩된 블록 패턴 요소가 존재하는지 여부, 및 매크로블록이 인트라인지 여부를 가리킨다[Id.]. 매크로블록이 전방 움직임 보상을 사용하는 경우, 전방 움직임 벡터 데이터가 항상 존재한다[Id.].In the MPEG-1 standard, macroblocks have a macroblock_type element signaled as VLC [MPEG-1 standard, section 2.4.3.6, table B.2a, table B.2a to B.2d, D.6.4.2]. For macroblocks in the forward prediction picture, the macroblock_type element is used to determine whether there is a quantizer scale element for the macroblock, whether forward motion vector data exists for the macroblock, and if there are coded block pattern elements for the macroblock. And whether the macroblock is intra [Id.]. If the macroblock uses forward motion compensation, forward motion vector data is always present [Id.].

H.262 표준에서, 매크로블록은 VLC로서 시그널링되는 macroblock_type 요소 를 갖는다[H.261 표준, 섹션 6.2.5.1, 6.3.17.1, 및 테이블 B.2 내지 B.8]. 전방 예측 픽처에서의 매크로블록의 경우, macroblock_type 요소는 매크로블록에 대해 quantizer_scale_code 요소가 존재하는지 여부, 매크로블록에 대해 전방 움직임 벡터 데이터가 존재하는지 여부, 매크로블록에 대해 코딩된 블록 패턴 요소가 존재하는지 여부, 매크로블록이 인트라인지 여부, 및 매크로블록에 대한 확장성 옵션(scalability option)을 가리킨다[Id.]. 매크로블록이 전방 움직임 보상을 사용하는 경우, 전방 움직임 벡터 데이터가 항상 존재한다[Id.]. 별도의 코드(frame_motion_type 또는 field_motion_type)가 매크로블록에 대한 움직임 벡터의 수 및 움직임 벡터 포맷을 비롯한 매크로블록 예측 유형을 추가로 가리킬 수 있다[Id.].In the H.262 standard, macroblocks have a macroblock_type element that is signaled as a VLC [H.261 standard, section 6.2.5.1, 6.3.17.1, and tables B.2 to B.8]. For macroblocks in a forward prediction picture, the macroblock_type element is used to determine whether a quantizer_scale_code element exists for the macroblock, whether forward motion vector data exists for the macroblock, and whether a coded block pattern element exists for the macroblock. , Whether the macroblock is intra, and the scalability option for the macroblock [Id.]. If the macroblock uses forward motion compensation, forward motion vector data is always present [Id.]. A separate code (frame_motion_type or field_motion_type) may further indicate the macroblock prediction type, including the number of motion vectors for the macroblock and the motion vector format [Id.].

H.263 표준에서, 매크로블록은 VLC로서 시그널링되는 크로미넌스 MCBPC 요소에 대한 매크로블록 유형 및 코딩된 블록 패턴을 갖는다[H.263 표준, 섹션 5.3.2, 테이블 8 및 9, 및 F.2]. 매크로블록 유형은 매크로블록에 관한 정보(예를 들어, 인터, 인터4V, 인트라)를 제공한다[Id.]. 인터-코딩된 픽처에서의 코딩된 매크로블록의 경우, 루미넌스에 대한 MCBPC 및 코딩된 블록 패턴이 항상 존재하며, 매크로블록 유형은 매크로블록에 대해 양자화기 정보 요소가 존재하는지를 가리킨다. 전방 움직임-보상된 매크로블록은 항상 매크로블록(또는 인터4V 유형의 경우 블록)에 대한 움직임 벡터 데이터가 존재한다[Id.]. MPEG-4 표준은 이와 유사하게 VLC로서 시그널링되는 MCBPC 요소를 규정한다[MPEG-4 표준, 섹션 6.2.7, 6.3.7, 11.1.1].In the H.263 standard, macroblocks have a macroblock type and a coded block pattern for chrominance MCBPC elements signaled as VLC [H.263 standard, section 5.3.2, tables 8 and 9, and F.2 ]. The macroblock type provides information about the macroblock (eg inter, inter4V, intra) [Id.]. For coded macroblocks in inter-coded pictures, there is always an MCBPC and coded block pattern for luminance, and the macroblock type indicates whether a quantizer information element is present for the macroblock. The forward motion-compensated macroblock always has motion vector data for the macroblock (or block in case of inter4V type) [Id.]. The MPEG-4 standard similarly defines an MCBPC element signaled as VLC [MPEG-4 standard, section 6.2.7, 6.3.7, 11.1.1].

JVT-D157에서, mb_type 요소는 매크로블록 계층의 일부이다[JVT-D157, 섹션 7.3.5 및 7.4.5]. mb_type는 매크로블록 유형 및 여러가지 관련 정보를 가리킨다[Id.]. 예를 들어, P-슬라이스의 경우, mb_type 요소는 예측의 유형(인트라 또는 전방), 매크로블록이 인트라 코딩되어 있는 경우 여러가지 인트라 모드 코딩 파라미터, 매크로블록 파티션(예를 들어, 16x16, 16x8, 8x16, 또는 8x8) 및 따라서 매크로블록이 전방 예측된 경우 움직임 벡터의 개수, 및 참조 픽처 선택 정보가 존재하는지 여부(파티션이 8x8인 경우)를 가리킨다[Id.]. 예측의 유형 및 mb_type도 역시 함께 매크로블록에 대해 코딩된 블록 패턴 요소가 존재하는지 여부를 가리킨다[Id.]. 전방 움직임-보상된 매크로블록에서의 각각의 16x16, 16x8, 8x16 파티션의 경우, 움직임 벡터 데이터가 시그널링된다[Id.]. 8x8 파티션을 갖는 전방 예측 매크로블록의 경우, 8x8 파티션마다의 sub_mb_type 요소는 그에 대한 예측의 유형(인트라 또는 전방)을 가리킨다[Id.]. 8x8 파티션이 전방 예측된 경우, sub_mb_type는 서브-파티션(예를 들어, 8x8, 8x4, 4x8 또는 4x4) 및 따라서 8x8 파티션에 대한 움직임 벡터의 개수를 가리킨다[Id.]. 전방 움직임-보상된 8x8 파티션에서의 각각의 서브-파티션에 대해, 움직임 벡터 데이터가 시그널링된다[Id.].In JVT-D157, the mb_type element is part of the macroblock layer [JVT-D157, section 7.3.5 and 7.4.5]. mb_type indicates a macroblock type and various related information [Id.]. For example, for a P-slice, the mb_type element may be the type of prediction (intra or forward), the various intra mode coding parameters if the macroblock is intra coded, the macroblock partition (e.g. 16x16, 16x8, 8x16, Or 8x8) and thus the number of motion vectors when the macroblock is predicted forward, and whether the reference picture selection information is present (if the partition is 8x8) [Id.]. The type of prediction and mb_type also together indicate whether a block pattern element coded for the macroblock exists [Id.]. For each 16x16, 16x8, 8x16 partition in the forward motion-compensated macroblock, motion vector data is signaled [Id.]. For a forward prediction macroblock with 8x8 partitions, the sub_mb_type element for every 8x8 partition indicates the type of prediction (intra or forward) for it [Id.]. If an 8x8 partition is predicted forward, sub_mb_type indicates the number of motion vectors for the sub-partition (eg 8x8, 8x4, 4x8 or 4x4) and therefore 8x8 partition [Id.]. For each sub-partition in the forward motion-compensated 8x8 partition, motion vector data is signaled [Id.].

여러가지 표준은 매크로블록 정보를 위한 다양한 시그널링 메카니즘을 사용한다. 이들 시그널링 메카니즘이 어떤 이점을 가질 수 있든지 간에, 이들은 이하의 단점도 갖는다. 첫째, 이들은 때때로 매크로블록 유형, 코딩된 블록 패턴 정보의 존재 여부, 및 움직임-보상된 매크로블록에 대한 움직임 벡터 차분 정보의 존재 여부를 효율적으로 시그널링하지 않는다. 실제로, 이들 표준은 일반적으로 움직임 -보상된 매크로블록(또는 블록 또는 그의 필드)에 대한 움직임 벡터 차분 정보의 존재 여부를 전혀 시그널링하지 않으며, 그 대신에 움직임 보상이 사용되는 경우 움직임 벡터 차분 정보가 시그널링되는 것으로 가정한다. 마지막으로, 이들 표준은 매크로블록 모드 정보를 위해 어느 코드 테이블을 사용할지의 결정에서 유연성이 없다.Different standards use various signaling mechanisms for macroblock information. Whatever advantages these signaling mechanisms may have, they also have the following disadvantages. First, they sometimes do not effectively signal the macroblock type, the presence of coded block pattern information, and the presence of motion vector difference information for motion-compensated macroblocks. In practice, these standards generally do not signal the presence or absence of motion vector difference information for motion-compensated macroblocks (or blocks or fields thereof); instead, motion vector difference information is signaled when motion compensation is used. Assume that Finally, these standards are inflexible in determining which code table to use for macroblock mode information.

C. 움직임 벡터 예측C. Motion Vector Prediction

H.261, H.262, H.263, MPEG-1, MPEG-4, 및 JVT-D157은 어떤 형태의 움직임 벡터 예측을 규정하지만, 움직임 벡터 예측의 상세는 표준들 간에 많이 다르다. 움직임 벡터 예측은 예를 들어 H.261 표준에서 가장 간단하며, 여기에서 현재 매크로블록의 움직임 벡터에 대한 움직임 벡터 예측자는 이전에 코딩된/디코딩된 매크로블록의 움직임 벡터이다[H.261 표준, 섹션 4.2.3.4]. 여러가지 특수한 경우에(예를 들어, 현재 매크로블록이 행에서 첫번째인 경우) 움직임 벡터 예측자는 0이다. MPEG-1 표준에서 움직임 벡터 예측은 유사하다[MPEG-1 표준, 섹션 2.4.4.2 및 D.6.2.3]. H.261, H.262, H.263, MPEG-1, MPEG-4, and JVT-D157 define some form of motion vector prediction, but the details of motion vector prediction vary greatly between standards. Motion vector prediction is the simplest in the H.261 standard, for example, where the motion vector predictor for the motion vector of the current macroblock is the motion vector of the previously coded / decoded macroblock [H.261 standard, section 4.2.3.4]. In various special cases (eg, when the current macroblock is first in a row), the motion vector predictor is zero. Motion vector prediction in the MPEG-1 standard is similar [MPEG-1 standard, section 2.4.4.2 and D.6.2.3].

다른 표준들(H.262 등)은 훨씬 더 복잡한 움직임 벡터 예측을 규정하지만, 여전히 일반적으로 단일의 이웃으로부터 움직임 벡터 예측자를 결정한다[H.262 표준, 섹션 7.6.3]. 움직임이 균일한 경우에 단일의 이웃으로부터 움직임 벡터 예측자를 결정하는 것으로 충분하지만, 많은 다른 경우에는 비효율적이다.Other standards (H.262, etc.) prescribe much more complex motion vector predictions, but still generally determine motion vector predictors from a single neighbor [H.262 standard, section 7.6.3]. It is sufficient to determine the motion vector predictor from a single neighbor if the motion is uniform, but in many other cases it is inefficient.

따라서, 다른 표준들(H.263, MPEG-4, JVT-D157)은 서로 다른 후보 움직임 벡터 예측자를 갖는 다수의 서로 다른 이웃으로부터 움직임 벡터 예측자를 결정한 다[H.263 표준, 섹션 6.1.1; MPEG-4 표준, 섹션 7.5.5 및 7.6.2, F.2; JVT-D157, 섹션 8.4.1]. 이들은 더 많은 종류의 움직임에 대해 효율적이지만, 여전히 서로 다른 후보 움직임 벡터 예측자들 간의 변동이 많아 움직임 패턴의 불연속을 나타내는 시나리오에 적절히 대처하지 않는다.Thus, different standards (H.263, MPEG-4, JVT-D157) determine motion vector predictors from a number of different neighbors with different candidate motion vector predictors [H.263 standard, section 6.1.1; MPEG-4 standard, sections 7.5.5 and 7.6.2, F.2; JVT-D157, section 8.4.1]. They are efficient for more types of motion, but still do not adequately cope with scenarios that show a large variation between different candidate motion vector predictors, indicating discontinuities in the motion pattern.

부가의 상세에 대해서는, 각자의 표준을 참조하기 바란다.Please refer to your standards for additional details.

D. 움직임 벡터 차분의 디코딩D. Decoding Motion Vector Difference

H.261, H.262, H.263, MPEG-1, MPEG-4 및 JVT-D157은 어떤 형태의 차분 움직임 벡터 코딩 및 디코딩을 규정하지만, 이 코딩 및 디코딩의 상세는 표준들 간에 크게 다르다. 움직임 벡터 코딩 및 디코딩은 예를 들어 H.261 표준에서 가장 간단하며, 여기에서는 하나의 VLC가 수평 차분 성분을 나타내고 다른 VLC가 수직 차분 성분을 나타낸다[H.261 표준, 섹션 4.2.3.4]. 다른 표준들은 움직임 벡터 차분 정보를 위한 보다 복잡한 코딩 및 디코딩을 규정한다. 부가의 상세에 대해서는, 각자의 표준을 참조하기 바란다.H.261, H.262, H.263, MPEG-1, MPEG-4 and JVT-D157 prescribe some form of differential motion vector coding and decoding, but the details of this coding and decoding vary greatly between standards. Motion vector coding and decoding is, for example, the simplest in the H.261 standard, where one VLC represents a horizontal difference component and another VLC represents a vertical difference component [H.261 standard, section 4.2.3.4]. Other standards specify more complex coding and decoding for motion vector difference information. Please refer to your standards for additional details.

E. 움직임 벡터의 재구성 및 도출E. Reconstruction and Derivation of Motion Vectors

일반적으로, H.261, H.262, H.263, MPEG-1, MPEG-4 또는 JVT-D157에서의 움직임 벡터는 움직임 벡터 예측자와 움직임 벡터 차분을 합성함으로써 재구성된다. 다시 말하면, 재구성의 상세는 표준에 따라 다르다.In general, motion vectors in H.261, H.262, H.263, MPEG-1, MPEG-4, or JVT-D157 are reconstructed by synthesizing motion vector predictors and motion vector differences. In other words, the details of the reconstruction depend on the standard.

크로미넌스 움직임 벡터(이는 시그널링되지 않음)는 일반적으로 루미넌스 움직임 벡터(이는 시그널링됨)로부터 도출된다. 예를 들어, H.261 표준에서, 루미넌스 움직임 벡터는 크로미넌스 움직임 벡터를 도출하기 위해 이등분되어 0으로 버 림(truncate)된다[H.261 표준, 섹션 3.2.2]. 이와 유사하게, MPEG-1 표준 및 JVT-D157에서 크로미넌스 움직임 벡터를 도출하기 위해 루미넌스 움직임 벡터가 이등분된다[MPEG-1 표준, 섹션 2.4.4.2; JVT-D157, 섹션 8.4.1.4].The chrominance motion vector (which is not signaled) is generally derived from the luminance motion vector (which is signaled). For example, in the H.261 standard, luminance motion vectors are bisected and truncated to zero to derive the chrominance motion vectors [H.261 standard, section 3.2.2]. Similarly, luminance motion vectors are bisected to derive chrominance motion vectors in the MPEG-1 standard and JVT-D157 [MPEG-1 standard, section 2.4.4.2; JVT-D157, section 8.4.1.4].

H.262 표준에서, 루미넌스 움직임 벡터는 크로미넌스 서브-샘플링 모드에 따른 인자만큼 크로미넌스 움직임 벡터로 다운 스케일링(scale down)된다[H.262 표준, 섹션 7.6.3.7].In the H.262 standard, the luminance motion vector is scaled down to the chrominance motion vector by a factor according to the chrominance sub-sampling mode [H.262 standard, section 7.6.3.7].

H.263 표준에서, 4개의 루미넌스 블록 모두에 대해 단일의 루미넌스 움직임 벡터를 갖는 매크로블록의 경우, 크로미넌스 움직임 벡터은 루미넌스 움직임 벡터를 2로 나누고 1/2 픽셀 위치로 반올림함으로써 도출된다[H.263 표준, 섹션 6.1.1]. 4개의 루미넌스 움직임 벡터를 갖는 매크로블록의 경우(블록마다 하나씩), 크로미넌스 움직임 벡터는 4개의 루미넌스 움직임 벡터를 합산하고, 8로 나누어 1/2 픽셀 위치로 반올림함으로써 도출된다[H.263 표준, 섹션 F.2]. MPEG-4 표준에서 크로미넌스 움직임 벡터는 이와 유사하게 도출된다[MPEG-4 표준, 섹션 7.5.5 및 7.6.2].In the H.263 standard, for a macroblock having a single luminance motion vector for all four luminance blocks, the chrominance motion vector is derived by dividing the luminance motion vector by two and rounding it to the half pixel position [H. 263 standard, section 6.1.1]. For macroblocks with four luminance motion vectors (one per block), the chrominance motion vectors are derived by summing four luminance motion vectors, dividing by eight and rounding them to half pixel positions [H.263 standard] , Section F.2]. Chrominance motion vectors are similarly derived in the MPEG-4 standard [MPEG-4 standard, section 7.5.5 and 7.6.2].

F. 가중 예측F. Weighted Forecast

H.264 표준의 초안 JVT-D157은 가중 예측에 대해 기술한다. 픽처에 대한 가중 예측 플래그는 픽처에서의 예측 슬라이스에 대해 가중 예측이 사용되는지 여부를 가리킨다[JVT-D157, 섹션 7.3.2.2 및 7.4.2.2]. 픽처에 대해 가중 예측이 사용되는 경우, 픽처에서의 각각의 예측 슬라이스는 예측 가중치의 테이블을 갖는다[JVT-D157, 섹션 7.3.3, 7.3.3.2, 7.4.3.3 및 10.4.1]. 테이블의 경우, 루마 가 중치 파라미터의 분모 및 크로마 가중치 파라미터의 분모가 시그널링된다[Id.]. 이어서, 슬라이스에 대해 이용가능한 각각의 참조 픽처에 있어서, 루마 가중치 플래그는 픽처에 대해 루마 가중치 및 루마 오프셋 분자 파라미터가 시그널링되는지 여부를 가리키고(시그널링되는 경우, 픽처 다음에 파라미터가 옴), 크로마 가중치 플래그는 픽처에 대해 크로마 가중치 및 크로마 오프셋 분자 파라미터가 시그널링되는지 여부를 가리킨다(시그널링되는 경우, 픽처 다음에 파라미터가 옴)[Id.]. 시그널링되지 않는 분자 가중치 파라미터는 시그널링된 분모 값과 관련된 디폴트 값을 부여받는다[Id.]. JVT-D157가 가중 예측 파라미터를 시그널링함에 있어서 어떤 유연성을 제공하는 반면, 여러가지 시나리오에서 이 시그널링 메카니즘은 비효율적이다.Draft JVT-D157 of the H.264 standard describes weighted prediction. The weighted prediction flag for a picture indicates whether weighted prediction is used for the prediction slice in the picture [JVT-D157, section 7.3.2.2 and 7.4.2.2]. When weighted prediction is used for a picture, each prediction slice in the picture has a table of prediction weights [JVT-D157, section 7.3.3, 7.3.3.2, 7.4.3.3 and 10.4.1]. For a table, the denominator of the luma weight parameter and the denominator of the chroma weight parameter are signaled [Id.]. Then, for each reference picture available for the slice, the luma weight flag indicates whether the luma weight and luma offset molecular parameters are signaled for the picture (if signaled, followed by the parameter if signaled), and the chroma weight flag. Indicates whether the chroma weight and chroma offset molecular parameters are signaled for the picture (if signaled, the parameter follows the picture) [Id.]. Molecular weight parameters that are not signaled are given default values associated with the signaled denominator values [Id.]. While JVT-D157 offers some flexibility in signaling weighted prediction parameters, in many scenarios this signaling mechanism is inefficient.

디지털 비디오에 대한 비디오 압축 및 압축 해제의 중요성을 고려하면, 비디오 압축 및 압축 해제가 풍성하게 발전된 분야라는 것이 놀랍지 않다. 그렇지만, 이전의 비디오 압축 및 압축 해제 기술의 어떤 이점도 이하의 기술 및 도구의 이점을 갖지 않는다.Given the importance of video compression and decompression for digital video, it is not surprising that video compression and decompression is a well-developed field. However, none of the advantages of previous video compression and decompression techniques have the advantages of the following techniques and tools.

요약하면, 상세한 설명은 인터레이스형 비디오를 코딩 및 디코딩하는 여러가지 기술 및 도구에 관한 것이다. 이 여러가지 기술 및 도구는 조합하여 또는 독립적으로 사용될 수 있다.In summary, the detailed description is directed to various techniques and tools for coding and decoding interlaced video. These various techniques and tools can be used in combination or independently.

상세한 설명의 일부는 인터레이스형 전방 예측 필드에 대한 하이브리드 움직임 벡터 예측을 위한 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the detailed description is directed to various techniques and tools for hybrid motion vector prediction for interlaced forward prediction fields. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 움직임 벡터 예측자에 적용가능한 예측자 극성 신호에 적어도 부분적으로 기초하여 하이브리드 움직임 벡터 예측 조건을 검사한다. 예를 들어, 예측자 극성 신호는 움직임 벡터 예측자에 대한 우세 극성 또는 비우세 극성을 선택하기 위한 것이다. 이 도구는 이어서 움직임 벡터 예측자를 결정한다.A tool such as a video encoder or decoder examines the hybrid motion vector prediction condition based at least in part on the predictor polarity signal applicable to the motion vector predictor. For example, the predictor polarity signal is for selecting a dominant polarity or a non-dominant polarity for the motion vector predictor. The tool then determines the motion vector predictor.

또는, 비디오 인코더 또는 디코더 등의 도구는 인터레이스형 전방 예측 필드의 움직임 벡터에 대한 최초의 도출된 움직임 벡터 예측자를 결정한다. 이 도구는 이어서 최초의 도출된 움직임 벡터 예측자 및 하나 이상의 이웃 움직임 벡터에 적어도 부분적으로 기초하여 변동 조건을 검사한다. 이 변동 조건이 만족되는 경우, 이 도구는 하나 이상의 이웃 움직임 벡터 중 하나를 움직임 벡터에 대한 최종 움직임 벡터 예측자로서 사용한다. 그렇지 않은 경우, 이 도구는 최초의 도출된 움직 임 벡터 예측자를 최종 움직임 벡터 예측자로서 사용한다.Or, a tool such as a video encoder or decoder determines the first derived motion vector predictor for the motion vector of the interlaced forward prediction field. The tool then checks for variation conditions based at least in part on the original derived motion vector predictor and one or more neighboring motion vectors. If this variation condition is met, the tool uses one of the one or more neighboring motion vectors as the final motion vector predictor for the motion vector. Otherwise, the tool uses the first derived motion vector predictor as the final motion vector predictor.

상세한 설명의 일부는 다수의 움직임 벡터를 갖는 매크로블록에 대한 움직임 벡터 데이터의 존재 여부를 시그널링하는 움직임 벡터 블록 패턴을 사용하는 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the detailed descriptions relate to various techniques and tools that use motion vector block patterns to signal the presence or absence of motion vector data for macroblocks having multiple motion vectors. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 복수의 루미넌스 움직임 벡터를 갖는 매크로블록에 대한 제1 정보를 나타내는 제1 가변 길이 코드를 처리한다. 이 제1 정보는 매크로블록의 루미넌스 움직임 벡터마다 하나씩의 움직임 벡터 데이터 존재 표시자를 포함한다. 이 도구는 또한 매크로블록에 대한 제2 정보를 나타내는 제2 가변 길이 코드를 처리한다. 이 제2 정보는 매크로블록의 복수의 블록에 대한 복수의 변환 계수 데이터 존재 표시자를 포함한다.A tool such as a video encoder or decoder processes the first variable length code representing the first information for the macroblock having a plurality of luminance motion vectors. This first information includes one motion vector data present indicator for each luminance motion vector of the macroblock. The tool also processes a second variable length code representing the second information for the macroblock. This second information includes a plurality of transform coefficient data present indicators for the plurality of blocks of the macroblock.

또는, 비디오 인코더 또는 디코더 등의 도구는 제1 개수(단, 이 제1 개수는 1보다 큼)의 루미넌스 움직임 벡터를 갖는 매크로블록에 대해, 제2 개수(단, 이 제2 개수는 제1 개수와 동일함)의 비트로 이루어진 움직임 벡터 블록 패턴을 처리한다. 이 비트들 각각은 루미넌스 움직임 벡터 중 대응하는 것이 비트스트림으로 시그널링된 관련 움직임 벡터 데이터를 갖는지 여부를 가리킨다. 이 도구는 또한 관련 움직임 벡터 데이터가 비트스트림으로 시그널링될 것으로 표시된 루미넌스 움직임 벡터 각각에 대한 관련 움직임 벡터 데이터를 처리한다.Alternatively, a tool such as a video encoder or decoder may be used for macroblocks having a luminance motion vector of a first number (where the first number is greater than one), wherein the second number is a first number. Motion vector block pattern consisting of bits). Each of these bits indicates whether the corresponding one of the luminance motion vectors has associated motion vector data signaled in the bitstream. The tool also processes the relevant motion vector data for each of the luminance motion vectors for which the relevant motion vector data is indicated to be signaled in the bitstream.

상세한 설명의 일부는 움직임 벡터 예측자에 대한 우세 극성과 비우세 극성 간에 선택하는 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이 하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the details relate to various techniques and tools for choosing between dominant and non-dominant polarities for motion vector predictors. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 움직임 벡터 예측자에 대한 우세 극성을 결정한다. 이 도구는 우세 극성에 적어도 부분적으로 기초하여 움직임 벡터 예측자를 처리하고, 움직임 벡터 예측자에 적어도 부분적으로 기초하여 움직임 벡터를 처리한다. 예를 들어, 움직임 벡터는 인터레이스형 전방 예측 필드의 현재 블록 또는 매크로블록에 대한 것이고, 우세 극성은 이웃하는 블록 또는 매크로블록에 대한 다수의 이전의 움직임 벡터 각각의 극성에 적어도 부분적으로 기초한다.Tools such as a video encoder or decoder determine the dominant polarity for the motion vector predictor. The tool processes the motion vector predictor based at least in part on the dominant polarity and processes the motion vector based at least in part on the motion vector predictor. For example, the motion vector is for the current block or macroblock of the interlaced forward prediction field, and the dominant polarity is based at least in part on the polarity of each of the plurality of previous motion vectors for the neighboring block or macroblock.

또는, 비디오 인코더 또는 디코더 등의 도구는 움직임 벡터 예측자에 대한 우세 극성과 비우세 극성 간의 선택을 가리키는 정보를 처리하고, 움직임 벡터 예측자에 적어도 부분적으로 기초하여 움직임 벡터를 처리한다. 예를 들어, 디코더는 우세 극성 및 비우세 극성을 결정하고, 이어서 우세 극성 및 비우세 극성, 그리고 이들 간의 선택을 가리키는 정보에 적어도 부분적으로 기초하여 움직임 벡터 예측자를 결정한다.Or, a tool such as a video encoder or decoder processes information indicating a choice between a predominant polarity and a non predominant polarity for the motion vector predictor and processes the motion vector based at least in part on the motion vector predictor. For example, the decoder determines the dominant polarity and the non-dominant polarity, and then determines the motion vector predictor based at least in part on the information indicating the dominant polarity and the non-dominant polarity and the selection therebetween.

상세한 설명의 일부는 참조 필드 선택 정보 및 차분 움직임 벡터 정보의 공동 코딩 및 디코딩을 위한 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the detailed description is directed to various techniques and tools for joint coding and decoding of reference field selection information and differential motion vector information. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 움직임 벡터에 대한 차분 움직임 벡터 정보 및 움직임 벡터 예측자 선택을 공동으로 나타내는 가변 길이 코드를 디코딩한다. 이 디코더는 이어서 차분 움직임 벡터 정보 및 움직임 벡터 예측자 선택에 적어도 부분적으로 기초하여 움직임 벡터를 재구성한다.Tools such as a video encoder or decoder decode variable length codes that jointly represent differential motion vector information and motion vector predictor selection for the motion vector. The decoder then reconstructs the motion vector based at least in part on differential motion vector information and motion vector predictor selection.

또는 비디오 인코더 또는 디코더 등의 도구는 움직임 벡터에 대한 우세/비우세 예측자 선택을 결정한다. 이 인코더는 움직임 벡터에 대한 차분 움직임 벡터 정보를 결정하고 우세/비우세 예측자 선택을 차분 움직임 벡터 정보로 공동으로 코딩한다.Or a tool such as a video encoder or decoder determines the dominant / non-dominant predictor selection for the motion vector. The encoder determines differential motion vector information for the motion vector and jointly codes the dominant / non-dominant predictor selection into the differential motion vector information.

상세한 설명의 일부는 인터레이스형 전방 예측 필드에 대한 매크로블록에 대한 매크로블록 모드 정보의 공동 코딩/디코딩 및 코드 테이블 선택을 위한 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the description is directed to various techniques and tools for co-coding / decoding of macroblock mode information for macroblocks for interlaced forward prediction fields and code table selection. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 매크로블록에 대한 매크로블록 모드 정보를 공동으로 시그널링하는 가변 길이 코드를 처리한다. 매크로블록은 움직임 보상되어 있고, 공동으로 시그널링된 매크로블록 모드 정보는, (1) 매크로블록 유형, (2) 코딩된 블록 패턴이 존재하는지 여부, 및 (3) 움직임 보상된 매크로블록에 대해 움직임 벡터 데이터가 존재하는지 여부를 포함한다.Tools such as video encoders or decoders process variable length codes that jointly signal macroblock mode information for macroblocks. The macroblock is motion compensated, and the jointly signaled macroblock mode information includes: (1) macroblock type, (2) whether a coded block pattern exists, and (3) motion vector for the motion compensated macroblock. Contains whether data exists.

또는, 비디오 인코더 또는 디코더 등의 도구는 인터레이스형 전방 예측 필드에 대한 매크로블록 모드 정보에 대한 다수의 이용가능한 코드 테이블 중에서 한 코드 테이블을 선택한다. 이 도구는 매크로블록에 대한 매크로블록 모드 정보를 가리키는 가변 길이 코드를 처리하기 위해 선택된 코드 테이블을 사용한다. 매크로블록 모드 정보는, (1) 매크로블록 유형, (2) 코딩된 블록 패턴이 존재하는지 여부, 및 (3) 매크로블록 유형에 대해 적용가능한 경우, 움직임 벡터 데이터가 존재하는지 여부를 포함한다.Or, a tool such as a video encoder or decoder selects one code table from among a number of available code tables for macroblock mode information for the interlaced forward prediction field. This tool uses the selected code table to process variable length codes that point to macroblock mode information for macroblocks. The macroblock mode information includes (1) macroblock type, (2) whether a coded block pattern exists, and (3) whether motion vector data is present, if applicable for the macroblock type.

상세한 설명의 일부는 인터레이스형 전방 예측 필드에 대해 이용가능한 참조 필드의 개수의 신호를 사용하는 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the detailed description is directed to various techniques and tools that use signals of the number of reference fields available for interlaced forward prediction fields. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는 인터레이스형 전방 예측 필드가 움직임 보상을 위해 하나의 참조 필드 또는 2개의 가능한 참조 필드를 갖는지를 가리키는 제1 신호를 처리한다. 제1 신호가 인터레이스형 전방 예측 필드가 하나의 참조 필드를 갖는 것을 가리키고 있는 경우, 이 도구는 2개의 가능한 참조 필드 중에서 하나의 참조 필드를 식별해주는 제2 신호를 처리한다. 반면에, 제1 신호가 인터레이스형 전방 예측 필드가 2개의 가능한 참조 필드를 갖는 것을 가리키고 있는 경우, 인터레이스형 전방 예측 필드의 블록 및/또는 매크로블록에 대한 다수의 움직임 벡터 각각에 대해, 이 도구는 2개의 가능한 참조 필드 간에 선택하기 위해 제3 신호를 처리할 수 있다. 이 도구는 이어서 인터레이스형 전방 예측 필드에 대한 움직임 보상을 수행한다.A tool such as a video encoder or decoder processes the first signal indicating whether the interlaced forward prediction field has one reference field or two possible reference fields for motion compensation. If the first signal indicates that the interlaced forward prediction field has one reference field, the tool processes the second signal that identifies one of the two possible reference fields. On the other hand, if the first signal indicates that the interlaced forward prediction field has two possible reference fields, then for each of the multiple motion vectors for the block and / or macroblock of the interlaced forward prediction field, The third signal can be processed to select between two possible reference fields. The tool then performs motion compensation on the interlaced forward prediction field.

또는, 비디오 인코더 또는 디코더 등의 도구는 인터레이스형 전방 예측 필드가 움직임 보상을 위해 하나의 참조 필드 또는 2개의 가능한 참조 필드를 갖는지를 가리키는 신호를 처리한다. 이 도구는 인터레이스형 전방 예측 필드에 대한 움직임 보상을 수행한다. 이 도구는 또한 참조 필드 버퍼를 관리하기 위해 부가의 신호를 처리하지 않고 차후의 움직임 보상을 위해 참조 필드 버퍼를 갱신한다.Or, a tool such as a video encoder or decoder processes a signal indicating whether the interlaced forward prediction field has one reference field or two possible reference fields for motion compensation. This tool performs motion compensation on the interlaced forward prediction field. The tool also updates the reference field buffer for subsequent motion compensation without processing additional signals to manage the reference field buffer.

상세한 설명의 일부는 인터레이스형 전방 예측 필드의 매크로블록에 대한 크로마 움직임 벡터를 도출하는 여러가지 기술 및 도구에 관한 것이다. 설명된 기술 및 도구는 이하의 것을 포함하지만 이에 한정되는 것은 아니다.Some of the detailed description is directed to various techniques and tools for deriving chroma motion vectors for macroblocks of interlaced forward prediction fields. The described techniques and tools include, but are not limited to the following.

비디오 인코더 또는 디코더 등의 도구는, 하나 이상의 루마(luma) 움직임 벡터를 갖는 매크로블록에 대해, 하나 이상의 루마 움직임 벡터의 극성 평가에 적어도 부분적으로 기초하여 크로마(chroma) 움직임 벡터를 도출한다. 예를 들어, 하나 이상의 루마 움직임 벡터 각각은 홀수 또는 짝수 극성이며, 극성 평가는 어느 극성이 하나 이상의 루마 움직임 벡터 중에서 더 흔한지를 결정하는 단계를 포함한다. A tool, such as a video encoder or decoder, derives a chroma motion vector for a macroblock having one or more luma motion vectors based at least in part on the polarity evaluation of the one or more luma motion vectors. For example, each of the one or more luma motion vectors is an odd or even polarity, and the polarity assessment includes determining which polarity is more common among the one or more luma motion vectors.

또는, 비디오 인코더 또는 디코더 등의 도구는 매크로블록에 대한 복수의 루마 움직임 벡터 중에서 우세 극성을 결정한다. 이 도구는 이어서 우세 극성을 갖는 복수의 루마 움직임 벡터 중 하나 이상에 적어도 부분적으로 기초하여 매크로블록에 대한 크로마 움직임 벡터를 도출한다.Or, a tool such as a video encoder or decoder determines the dominant polarity among the plurality of luma motion vectors for the macroblock. The tool then derives a chroma motion vector for the macroblock based at least in part on one or more of the plurality of luma motion vectors having the dominant polarity.

부가의 특징 및 이점은 첨부 도면을 참조하여 기술되는 여러가지 실시예들에대한 이하의 상세한 설명으로부터 명백하게 될 것이다.Additional features and advantages will be apparent from the following detailed description of various embodiments described with reference to the accompanying drawings.

본 출원은 인터레이스형 비디오의 효율적인 압축 및 압축 해제를 위한 기술 및 도구에 관한 것이다. 인터레이스형 비디오 콘텐츠의 압축 및 압축 해제는 인터레이스형 비디오 표현의 특정의 특성들을 처리하도록 특별히 설계된 여러가지 기술 및 도구로 개선된다. 여러가지 기술된 실시예들에서, 비디오 인코더 및 디코더는 서로 다른 계층 또는 레벨(예를 들어, 시퀀스 레벨, 프레임 레벨, 필드 레벨, 슬라 이스 레벨, 매크로블록 레벨 및/또는 블록 레벨)을 포함하는 비트스트림 포맷 또는 신택스와 함께 사용하기 위한 대응하는 시그널링 기술과 함께 인터레이스형 전방 예측 필드를 인코딩 및 디코딩하는 기술을 포함한다.The present application relates to techniques and tools for efficient compression and decompression of interlaced video. Compression and decompression of interlaced video content is enhanced with various techniques and tools specifically designed to address certain characteristics of interlaced video representations. In various described embodiments, the video encoder and decoder may comprise a bitstream comprising different layers or levels (eg, sequence level, frame level, field level, slice level, macroblock level and / or block level). Techniques for encoding and decoding interlaced forward prediction fields along with corresponding signaling techniques for use with format or syntax.

인터레이스형 비디오 콘텐츠는 케이블, 위성 또는 DSL, 기타 등등을 통한 디지털 비디오 방송 시스템에서 통상 사용된다. 인터레이스형 비디오 콘텐츠를 압축 및 압축 해제하기 위한 효율적인 기술 및 도구는 비디오 코덱의 중요한 부분이다.Interlaced video content is commonly used in digital video broadcasting systems via cable, satellite or DSL, and the like. Efficient techniques and tools for compressing and decompressing interlaced video content are an important part of the video codec.

본 명세서에 기술된 구현들에 대한 여러가지 대안이 가능하다. 예를 들어, 플로우차트도를 참조하여 기술된 기술들은 플로우차트에 도시된 단계들의 순서를 변경함으로써, 어떤 단계를 반복 또는 생략함으로써, 기타 등등에 의해 달라질 수 있다. 다른 예로서, 어떤 구현이 특정의 매크로블록 포맷과 관련하여 기술되어 있지만, 다른 포맷도 사용될 수 있다. 게다가, 인터레이스형 전방 예측 필드와 관련하여 기술된 기술 및 도구는 또한 다른 유형의 픽처에 적용가능할 수 있다.Various alternatives to the implementations described herein are possible. For example, the techniques described with reference to a flowchart diagram may be varied by changing the order of the steps shown in the flowchart, by repeating or omitting certain steps, and the like. As another example, although some implementations are described with respect to a particular macroblock format, other formats may be used. In addition, the techniques and tools described with respect to interlaced forward prediction fields may also be applicable to other types of pictures.

여러가지 실시예들에서, 인코더 및 디코더는 비트스트림에서 플래그 및/또는 신호를 사용한다. 특정의 플래그 및 신호가 기술되어 있지만, 이러한 설명 방식이 플래그 및 신호에 대한 다른 규약(예를 들어, 1이 아닌 0)을 포괄함을 잘 알 것이다.In various embodiments, the encoder and decoder use flags and / or signals in the bitstream. Although specific flags and signals are described, it will be appreciated that this description encompasses other conventions for flags and signals (eg, 0 rather than 1).

여러가지 기술 및 도구는 조합하여 또는 독립적으로 사용될 수 있다. 서로 다른 실시예들은 기재된 기술 및 도구 중 하나 이상을 구현한다. 본 명세서에 기재된 어떤 기술 및 도구는 비디오 인코더 또는 디코더에서 사용될 수 있거나 또는 어떤 다른 시스템에서는 비디오 인코딩 또는 디코딩으로 특별히 제한되지 않는다.Various techniques and tools may be used in combination or independently. Different embodiments implement one or more of the described techniques and tools. Any of the techniques and tools described herein may be used in a video encoder or decoder or in some other systems are not particularly limited to video encoding or decoding.

I. 컴퓨팅 환경I. Computing Environment

도 19는 기재된 실시예들 중 몇개가 구현될 수 있는 적당한 컴퓨팅 환경(1900)의 일반화된 예를 나타낸 것이다. 이들 기술 및 도구가 다양한 범용 또는 전용 컴퓨팅 환경에서 구현될 수 있기 때문에, 컴퓨팅 환경(1900)은 사용 또는 기능의 범위에 관하여 어떤 제한을 암시하기 위한 것이 아니다.19 illustrates a generalized example of a suitable computing environment 1900 in which some of the described embodiments may be implemented. Because these techniques and tools can be implemented in a variety of general purpose or dedicated computing environments, computing environment 1900 is not intended to suggest any limitation as to the scope of use or functionality.

도 19를 참조하면, 컴퓨팅 환경(1900)은 적어도 하나의 프로세싱 유닛(1910) 및 메모리(1920)를 포함한다. 도 19에서, 이 가장 기본적인 구성(1930)은 점선 안에 포함되어 있다. 프로세싱 유닛(1910)은 컴퓨터 실행가능 명령어를 실행하고 또 실제(real) 또는 가상(virtual) 프로세서일 수 있다. 멀티-프로세싱 시스템에서는, 처리 능력을 향상시키기 위해 다수의 프로세싱 유닛이 컴퓨터 실행가능 명령어를 실행한다. 메모리(1920)는 휘발성 메모리(예를 들어, 레지스터, 캐쉬, RAM), 비휘발성 메모리(예를 들어, ROM, EEPROM, 플래쉬 메모리, 기타), 또는 이 둘의 어떤 조합일 수 있다. 메모리(1920)는 비디오 인코더 또는 디코더를 구현하는 소프트웨어(1980)를 저장한다.Referring to FIG. 19, the computing environment 1900 includes at least one processing unit 1910 and a memory 1920. In Fig. 19, this most basic configuration 1930 is contained within a dashed line. The processing unit 1910 executes computer executable instructions and may be a real or virtual processor. In a multi-processing system, multiple processing units execute computer executable instructions to improve processing power. Memory 1920 may be volatile memory (eg, registers, cache, RAM), nonvolatile memory (eg, ROM, EEPROM, flash memory, etc.), or some combination of the two. Memory 1920 stores software 1980 that implements a video encoder or decoder.

컴퓨팅 환경은 부가의 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(1900)은 스토리지(1940), 하나 이상의 입력 장치(1950), 하나 이상의 출력 장치(1960), 및 하나 이상의 통신 연결(1970)을 포함한다. 버스, 콘트롤러, 또는 네트워크 등의 상호 연결 메카니즘(도시 생략)은 컴퓨팅 환경(1900)의 컴포넌트들을 상호 연결시킨다. 일반적으로, 오퍼레이팅 시스템 소프트웨어(도시 생략)는 컴퓨팅 환 경(1900)에서 실행되는 다른 소프트웨어를 위한 오퍼레이팅 환경을 제공하고, 컴퓨팅 환경(1900)의 컴포넌트들의 활동을 조정한다.The computing environment may have additional features. For example, computing environment 1900 includes storage 1940, one or more input devices 1950, one or more output devices 1960, and one or more communication connections 1970. Interconnection mechanisms (not shown), such as a bus, controller, or network, interconnect the components of computing environment 1900. In general, operating system software (not shown) provides an operating environment for other software running in computing environment 1900 and coordinates the activities of components of computing environment 1900.

스토리지(1940)는 분리형 또는 비분리형일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD 또는 정보를 저장하는 데 사용될 수 있고 또 컴퓨팅 환경(1900) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 스토리지(1940)는 비디오 인코더 또는 디코더를 구현하는 소프트웨어(1980)에 대한 명령어를 저장한다.Storage 1940 may be removable or non-removable, and may be used to store magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or information and any other that may be accessed within computing environment 1900. Media. Storage 1940 stores instructions for software 1980 implementing a video encoder or decoder.

입력 장치(들)(1950)는 키보드, 마우스, 펜, 또는 트랙볼 등의 터치 입력 장치, 음성 입력 장치, 스캐닝 장치, 또는 컴퓨팅 환경(1900)으로의 입력을 제공하는 다른 장치일 수 있다. 오디오 또는 비디오 인코딩의 경우, 입력 장치(들)(1950)는 사운드 카드, 비디오 카드, TV 튜너, 또는 아날로그 또는 디지털 형태로 오디오 또는 비디오 입력을 받아들이는 유사한 장치, 또는 오디오 또는 비디오 샘플을 컴퓨팅 환경(1900)으로 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 장치(들)(1960)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 환경(1900)으로부터의 출력을 제공하는 다른 장치일 수 있다.The input device (s) 1950 may be a touch input device such as a keyboard, mouse, pen, or trackball, a voice input device, a scanning device, or another device that provides input to the computing environment 1900. In the case of audio or video encoding, the input device (s) 1950 may include a sound card, video card, TV tuner, or similar device that accepts audio or video input in analog or digital form, or an audio or video sample in a computing environment ( 1900) can be a CD-ROM or CD-RW. Output device (s) 1960 may be a display, printer, speaker, CD-writer, or other device that provides output from computing environment 1900.

통신 연결(들)(1970)은 통신 매체를 통해 다른 컴퓨팅 개체로의 통신을 가능하게 해준다. 통신 매체는 변조된 데이터 신호로 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 기타 데이터 등의 정보를 전달한다. 변조된 데이터 신호는 그의 특성 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 말한다. 제한이 아닌 예로서, 통신 매체는 전기, 광학, RF, 적외선, 음향 또는 다른 반송파로 구현되는 유선 또는 무선 기술을 포함한다.Communication connection (s) 1970 enables communication to other computing entities via communication media. The communication medium carries information such as computer executable instructions, audio or video inputs or outputs, or other data in a modulated data signal. A modulated data signal is a signal that is set or changed in such a way that one or more of its characteristics encode information in the signal. By way of example, and not limitation, communication media includes wired or wireless technology implemented with electrical, optical, RF, infrared, acoustic, or other carrier waves.

이들 기술 및 도구는 컴퓨터 판독가능 매체의 일반적인 관점에서 기술될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 컴퓨팅 환경(1900)에서, 컴퓨터 판독가능 매체는 메모리(1920), 스토리지(1940), 통신 매체, 및 임의의 상기한 것의 조합을 포함한다.These techniques and tools may be described in the general context of computer readable media. Computer-readable media can be any available media that can be accessed within a computing environment. By way of example, and not limitation, in computing environment 1900, computer readable media includes memory 1920, storage 1940, communication media, and any combination of the above.

이들 기술 및 도구는 컴퓨팅 환경에서 타겟 실제 또는 가상 프로세서 상에서 실행되고 있는, 프로그램 모듈에 포함된 것 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 라이브러리, 객체, 클래스, 컴포넌트, 데이터 구조, 기타 등등을 포함한다. 프로그램 모듈의 기능은 여러가지 환경에서 원하는 바에 따라 프로그램 모듈들 간에 결합 또는 분리될 수 있다. 프로그램 모듈의 컴퓨터 실행가능 명령어는 로컬 또는 분산 컴퓨팅 환경 내에서 실행될 수 있다.These techniques and tools may be described in the general context of computer-executable instructions, such as those included in program modules, being executed on a target real or virtual processor in a computing environment. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or separated between the program modules as desired in various environments. The computer executable instructions of the program module may be executed within a local or distributed computing environment.

설명을 위해, 상세한 설명은 컴퓨팅 환경에서의 컴퓨터 동작을 기술하기 위해 "추정", "보상", "예측" 및 "적용" 등의 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행되는 동작들에 대한 고도의 추상화이며, 사람에 의해 수행되는 행동과 혼동해서는 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현에 따라 달라진다.For purposes of explanation, the detailed description uses terms such as "estimation", "compensation", "prediction", and "apply" to describe computer operations in the computing environment. These terms are highly abstraction of the operations performed by the computer and should not be confused with the actions performed by humans. Actual computer operation corresponding to these terms will vary from implementation to implementation.

IIII . 일반화된 비디오 인코더 및 디코더. Generalized Video Encoder and Decoder

도 20은 일반화된 비디오 인코더 시스템(2000)의 블록도이고, 도 21은 비디오 디코더 시스템(2100)의 블록도이며, 이들과 관련하여 여러가지 기술된 실시예들이 구현될 수 있다.20 is a block diagram of a generalized video encoder system 2000, and FIG. 21 is a block diagram of a video decoder system 2100, in which various described embodiments may be implemented.

인코더와 디코더 내의 모듈들 간에 도시된 관계는 인코더 및 디코더에서의 정보의 주요 흐름을 가리키며, 간단함을 위해 다른 관계는 나타내지 않았다. 상세하게는, 도 20 및 도 21은 보통 비디오 시퀀스, 프레임, 매크로블록, 블록, 기타 등등을 위해 사용되는 인코더 설정, 모드, 테이블, 기타 등등을 가리키는 부수적인 정보를 나타내지 않았다. 이러한 부수적인 정보는 일반적으로 부수적인 정보의 엔트로피 인코딩 후에 출력 비트스트림으로 전송된다. 출력 비트스트림의 포맷은 윈도즈 미디어 비디오(Windows Media Video) 버전 9 또는 다른 포맷일 수 있다.The relationship shown between the modules in the encoder and decoder indicates the main flow of information at the encoder and decoder, and for simplicity no other relationship is shown. In particular, FIGS. 20 and 21 do not represent incidental information indicating encoder settings, modes, tables, etc., which are commonly used for video sequences, frames, macroblocks, blocks, and the like. This incidental information is generally sent to the output bitstream after entropy encoding of the incidental information. The format of the output bitstream may be Windows Media Video version 9 or other format.

인코더(2000) 및 디코더(2100)는 비디오 프레임, 비디오 필드, 또는 프레임과 필드의 조합일 수 있는 비디오 픽처를 처리한다. 픽처 및 매크로블록 레벨에서의 비트스트림 신택스 및 시맨틱스는 프레임 또는 필드가 사용되는지에 의존할 수 있다. 또한, 매크로블록 구성 및 전체 타이밍에 대한 변화가 있을 수 있다. 인코더(2000) 및 디코더(2100)는 블록-기반이고, 프레임의 경우 4:2:0 매크로블록 포맷을 사용하고, 각각의 매크로블록은 4개의 8x8 루미넌스 블록(때로는 하나의 16x16 매크로블록으로서 취급됨) 및 2개의 8x8 크로미넌스 블록을 포함한다. 필드의 경우, 동일하거나 다른 매크로블록 구성 및 포맷이 사용될 수 있다. 8x8 블록은 다른 단계에서, 예를 들어 주파수 변환 및 엔트로피 인코딩 단계에서 추가로 세분될 수 있다. 예시적인 비디오 프레임 구성은 다음 섹션에서 기술된다.Encoder 2000 and decoder 2100 process video pictures, which may be video frames, video fields, or a combination of frames and fields. Bitstream syntax and semantics at the picture and macroblock level may depend on whether a frame or field is used. In addition, there may be changes to the macroblock configuration and overall timing. Encoder 2000 and decoder 2100 are block-based and use a 4: 2: 0 macroblock format for frames, with each macroblock being treated as four 8x8 luminance blocks (sometimes as one 16x16 macroblock). ) And two 8x8 chrominance blocks. For fields, the same or different macroblock configurations and formats may be used. The 8x8 block may be further subdivided at other stages, for example at the frequency transform and entropy encoding stages. Example video frame configurations are described in the following sections.

원하는 구현 및 압축 유형에 따라, 인코더 또는 디코더의 모듈은 부가, 생략, 다수의 모듈로 분할, 다른 모듈과 결합, 및/또는 유사한 모듈로 대체될 수 있다. 대체 실시예에서, 다른 모듈 및/또는 다른 구성의 모듈을 갖는 인코더 또는 디코더는 원하는 기술 중 하나 이상을 수행한다.Depending on the desired implementation and type of compression, the modules of the encoder or decoder may be added, omitted, divided into multiple modules, combined with other modules, and / or replaced with similar modules. In alternative embodiments, encoders or decoders having other modules and / or modules of other configurations perform one or more of the desired techniques.

A. 비디오 프레임 구성A. Video Frame Composition

어떤 구현에서, 인코더(2000) 및 디코더(2100)는 다음과 같이 구성된 비디오 프레임을 처리한다. 프레임은 비디오 신호의 공간 정보의 라인들을 포함한다. 순차 비디오의 경우, 이들 라인은 한 순간에서 시작하여 연속한 라인들을 통해 계속하여 프레임의 하부에 이르는 샘플들을 포함한다. 순차 비디오 프레임은 도 22에 도시한 매크로블록(2200) 등의 매크로블록으로 분할된다. 매크로블록(2200)은 4개의 8x8 루미넌스 블록(Y1 내지 Y4) 및 4개의 루미넌스 블록과 동일 장소에 있지만 종래의 4:2:0 매크로블록 포맷에 따라 수평 및 수직으로 1/2 해상도인 2개의 8x8 크로미넌스 블록을 포함한다. 8x8 블록은 다른 단계에서, 예를 들어 주파수 변환(예를 들어, 8x4, 4x8, 또는 4x4 DCT) 및 엔트로피 인코딩 단계에서 추가로 세분될 수 있다. 순차 I-프레임은 인트라-코딩된 순차 비디오 프레임을 말한다. 순차 P-프레임은 전방 예측을 사용하여 코딩된 순차 비디오 프레임을 말하며, 순차 B-프레임은 양방향 예측을 사용하여 코딩된 순차 비디오 프레임을 말한다. 순차 P-프레임 및 B-프레임은 인트라-코딩된 매크로블록(2200)은 물론 다른 유형의 예측 매크로블록을 포함할 수 있다.In some implementations, encoder 2000 and decoder 2100 process video frames configured as follows. The frame includes lines of spatial information of the video signal. In the case of sequential video, these lines contain samples starting at one moment and continuing through successive lines to the bottom of the frame. The sequential video frame is divided into macroblocks such as the macroblock 2200 shown in FIG. The macroblock 2200 is in the same place as the four 8x8 luminance blocks Y1 to Y4 and four luminance blocks, but two 8x8 horizontal and vertical half resolutions according to the conventional 4: 2: 0 macroblock format. It contains a chrominance block. The 8x8 block may be further subdivided in other steps, for example in the frequency conversion (eg 8x4, 4x8, or 4x4 DCT) and entropy encoding steps. Sequential I-frames refer to intra-coded sequential video frames. Sequential P-frames refer to sequential video frames coded using forward prediction, and sequential B-frames refer to sequential video frames coded using bidirectional prediction. Sequential P-frames and B-frames may include intra-coded macroblocks 2200 as well as other types of predictive macroblocks.

인터레이스형 비디오 프레임은 프레임의 2회 스캔으로 이루어진다 - 하나는 프레임의 짝수 라인(상부 필드)을 구성하고 다른 하나는 프레임의 홀수 라인(하부 필드)을 구성한다. 이 2개의 필드는 2개의 서로 다른 기간을 나타내거나 이들은 동일한 기간으로부터 온 것일 수 있다. 도 23a는 인터레이스형 비디오 프레임(2300)의 좌측 상부 부분에서의 상부 필드 및 하부 필드의 교대하는 라인을 포함하는 인터레이스형 비디오 프레임(2300)의 일부를 나타낸 것이다.An interlaced video frame consists of two scans of the frame-one constitutes an even line (upper field) of the frame and the other constitutes an odd line (lower field) of the frame. These two fields may represent two different time periods or they may come from the same time period. FIG. 23A illustrates a portion of an interlaced video frame 2300 that includes alternating lines of the upper field and lower field in the upper left portion of interlaced video frame 2300.

도 23b는 프레임(2330)으로서 인코딩/디코딩하기 위해 구성된 도 23a의 인터레이스형 비디오 프레임(2300)을 나타낸 것이다. 인터레이스형 비디오 프레임(2300)은 도 22에 도시한 바와 같이 4:2:0 포맷을 사용하는 매크로블록(2331, 2332) 등의 매크로블록들로 분할되어 있다. 루미넌스 평면에서, 각각의 매크로블록(2331, 2332)은 총 16 라인을 위해 하부 필드로부터의 8라인과 교대하는 상부 필드로부터의 8 라인을 포함하며, 각 라인은 16 픽셀 길이이다. (매크로블록(2331, 2332) 내에서의 루미넌스 블록 및 크로미넌스 블록의 실제 구성 및 배치는 도시되어 있지 않으며, 실제로 다른 인코딩 결정에 대해서 다를 수 있다.) 주어진 매크로블록 내에서, 상부 필드 정보 및 하부 필드 정보는 임의의 다양한 단계에서 공동으로 또는 개별적으로 코딩될 수 있다. 인터레이스형 I-프레임은 인터레이스형 비디오 프레임의 2개의 인트라-코딩된 필드이며, 여기서 매크로블록은 이 2개의 필드에 대한 정보를 포함한다. 인터레이스형 P-프레임은 전방 예측을 사용하여 코딩된 인터레이스형 비디오 프레임의 2개의 필드이고, 인터레이스형 B-프레임은 양방향 예측을 사용하여 코딩된 인터레이스형 비디오 프레임의 2개의 필드이며, 여기서 매 크로블록은 이 2개의 필드에 대한 정보를 포함한다. 인터레이스형 P-프레임 및 B-프레임은 인트라-코딩된 매크로블록은 물론 다른 유형의 예측 매크로블록을 포함할 수 있다.FIG. 23B illustrates the interlaced video frame 2300 of FIG. 23A configured for encoding / decoding as frame 2330. The interlaced video frame 2300 is divided into macroblocks such as macroblocks 2331 and 2332 using a 4: 2: 0 format as shown in FIG. In the luminance plane, each macroblock 2331 and 2332 includes 8 lines from the top field alternating with 8 lines from the bottom field for a total of 16 lines, each line being 16 pixels long. (The actual configuration and placement of the luminance block and chrominance block within macroblocks 2331 and 2332 are not shown and may actually differ for other encoding decisions.) Within a given macroblock, the upper field information and The bottom field information can be coded jointly or separately at any of a variety of steps. An interlaced I-frame is two intra-coded fields of an interlaced video frame, where the macroblock contains information about these two fields. Interlaced P-frames are two fields of an interlaced video frame coded using forward prediction, and interlaced B-frames are two fields of an interlaced video frame coded using bidirectional prediction, where macroblocks Contains information about these two fields. Interlaced P-frames and B-frames may include intra-coded macroblocks as well as other types of predictive macroblocks.

도 23c는 필드(2360)로서 인코딩/디코딩하기 위해 구성된 도 23a의 인터레이스형 비디오 프레임(2300)을 나타낸 것이다. 인터레이스형 비디오 프레임(2300)의 2개의 필드 각각은 매크로블록으로 분할된다. 상부 필드는 매크로블록(2361) 등의 매크로블록으로 분할되고, 하부 필드는 매크로블록(2362) 등의 매크로블록으로 분할된다. (다시 말하면, 매크로블록은 도 22에 도시한 바와 같이 4:2:0 포맷을 사용하며, 매크로블록 내에서의 루미넌스 블록 및 크로미넌스 블록의 구성 및 배치는 도시되어 있지 않다) 루미넌스 평면에서, 매크로블록(2361)은 상부 필드로부터의 16 라인을 포함하고, 매크로블록(2362)은 하부 필드로부터의 16 라인을 포함하며, 각 라인은 16 픽셀 길이이다. 인터레이스형 I-필드는 인터레이스형 비디오 프레임의 단일의 별도로 표현된 필드이다. 인터레이스형 P-필드는 전방 예측을 사용하여 코딩된 인터레이스형 비디오 프레임의 단일의 별도로 표현된 필드이고, 인터레이스형 B-필드는 양방향 예측을 사용하여 코딩된 인터레이스형 비디오 프레임의 단일의 별도로 표현된 필드이다. 인터레이스형 P-필드 및 B-필드는 인트라-코딩된 매크로블록은 물론 다른 유형의 예측 매크로블록을 포함할 수 있다.FIG. 23C illustrates the interlaced video frame 2300 of FIG. 23A configured for encoding / decoding as field 2360. Each of the two fields of interlaced video frame 2300 is divided into macroblocks. The upper field is divided into macroblocks, such as macroblock 2361, and the lower field is divided into macroblocks, such as macroblock 2362. (In other words, the macroblock uses the 4: 2: 0 format as shown in FIG. 22, and the configuration and arrangement of the luminance block and the chrominance block within the macroblock are not shown.) In the luminance plane, Macroblock 2361 includes 16 lines from the top field, macroblock 2362 includes 16 lines from the bottom field, and each line is 16 pixels long. An interlaced I-field is a single separately expressed field of interlaced video frames. An interlaced P-field is a single separately expressed field of interlaced video frames coded using forward prediction, and an interlaced B-field is a single separately expressed field of interlaced video frames coded using bidirectional prediction. to be. Interlaced P-fields and B-fields may include intra-coded macroblocks as well as other types of predictive macroblocks.

용어 픽처는 일반적으로 소스, 코딩된 또는 재구성된 이미지 데이터를 말한다. 순차 비디오의 경우, 픽처는 순차 비디오 프레임이다. 인터레이스형 비디오의 경우, 픽처는 문맥에 따라 인터레이스형 비디오 프레임, 프레임의 상부 필드, 또는 프레임의 하부 필드를 말한다.The term picture generally refers to source, coded or reconstructed image data. For sequential video, a picture is a sequential video frame. In the case of interlaced video, a picture refers to an interlaced video frame, an upper field of a frame, or a lower field of a frame, depending on the context.

다른 대안으로서, 인코더(2000) 및 디코더(2100)는 객체-기반이거나, 다른 매크로블록 또는 블록 포맷을 사용하거나, 또는 8x8 블록 및 16x16 매크로블록과 다른 크기 또는 구성의 픽셀 세트에 대한 연산을 수행한다.As another alternative, encoder 2000 and decoder 2100 are object-based, use different macroblocks or block formats, or perform operations on pixel sets of sizes or configurations different from 8x8 blocks and 16x16 macroblocks. .

B. 비디오 인코더B. Video Encoder

도 20은 일반화된 비디오 인코더 시스템(2000)의 블록도이다. 인코더 시스템(2000)은 현재 픽처(2005)(예를 들어, 순차 비디오 프레임, 인터레이스형 비디오 프레임, 또는 인터레이스형 비디오 프레임의 필드)를 포함하는 비디오 픽처 시퀀스를 수신하고, 압축된 비디오 정보(2095)를 출력으로서 생성한다. 비디오 인코더의 특정의 실시예는 일반적으로 일반화된 인코더(2000)의 변형 또는 보완된 버전을 사용한다.20 is a block diagram of a generalized video encoder system 2000. Encoder system 2000 receives a video picture sequence that includes a current picture 2005 (eg, a sequence of sequential video frames, interlaced video frames, or fields of interlaced video frames), and compressed video information 2095. Produces as output. Certain embodiments of the video encoder generally use a modified or supplemented version of the generalized encoder 2000.

인코더 시스템(2000)은 예측 픽처 및 키 픽처를 압축한다. 설명을 위해, 도 20은 인코더 시스템(2000)을 통한 키 픽처의 경로 및 전방 예측 픽처의 경로를 나타낸다. 인코더 시스템(2000)의 컴포넌트들 중 다수는 키 픽처 및 예측 픽처 둘다를 압축하기 위해 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은 압축되고 있는 정보의 유형에 따라 다를 수 있다.Encoder system 2000 compresses the predictive picture and the key picture. 20 illustrates a path of a key picture and a path of a forward predicted picture through the encoder system 2000. Many of the components of the encoder system 2000 are used to compress both key pictures and predictive pictures. The exact actions performed by these components may vary depending on the type of information being compressed.

예측 픽처(p-픽처, 양방향 예측에 대해서는 b-픽처, 또는 인터-코딩된 픽처라고도 함)는 하나 이상의 다른 픽처로부터의 예측(또는 차이)의 관점에서 표현된다. 예측 잔차는 예측된 것과 원래의 픽처 간의 차이를 말한다. 이와 반대로, 키 픽처(I-픽처 또는 인트라-코딩된 픽처라고도 함)는 다른 픽처를 참조하지 않고 압 축된다.A predictive picture (also called a p-picture, b-picture for bidirectional prediction, or inter-coded picture) is represented in terms of prediction (or difference) from one or more other pictures. The prediction residual refers to the difference between the predicted and the original picture. In contrast, a key picture (also called an I-picture or intra-coded picture) is compressed without reference to another picture.

현재 픽처(2005)가 전방 예측 픽처인 경우, 움직임 추정기(2010)는 픽처 스토어(2020)에 버퍼링된 재구성된 이전의 픽처(2025)인 참조 픽처에 대해 현재 픽처(2005)의 매크로블록 또는 다른 픽셀 세트의 움직임을 추정한다. 대체 실시예에서, 참조 픽처는 나중의 픽처이거나 또는 현재 픽처가 양방향 예측된다. 움직임 추정기(2010)는 픽셀별로, 1/2 픽셀별로, 1/4 픽셀별로 또는 다른 증분으로 움직임을 추정할 수 있으며, 픽처별로 또는 다른 방식으로 움직임 추정의 정밀도를 전환할 수 있다. 움직임 추정의 정밀도는 수평 및 수직에서 동일하거나 다를 수 있다. 움직임 추정기(2010)는 움직임 벡터 등의 움직임 정보(2015)를 부수적인 정보로서 출력한다. 움직임 보상기(2030)는 움직임-보상된 현재 픽처(2035)를 형성하기 위해 움직임 정보(2015)를 재구성된 이전의 픽처(2025)에 적용한다. 그렇지만, 예측은 좀처럼 완벽하지 않으며, 움직임 보상된 현재 픽처(2035)와 원래의 현재 픽처(2005) 간의 차이가 예측 잔차(2045)이다. 다른 대안으로서, 움직임 추정기 및 움직임 보상기는 다른 유형의 움직임 추정/보상을 적용한다.If the current picture 2005 is a forward predictive picture, the motion estimator 2010 may be a macroblock or other pixel of the current picture 2005 for the reference picture, which is a reconstructed previous picture 2025 buffered in the picture store 2020. Estimate the movement of the set. In an alternate embodiment, the reference picture is a later picture or the current picture is bi-predicted. The motion estimator 2010 may estimate motion by pixel, by 1/2 pixel, by 1/4 pixel, or in other increments, and may switch the precision of motion estimation by picture or in other ways. The precision of motion estimation may be the same or different in horizontal and vertical. The motion estimator 2010 outputs motion information 2015 such as a motion vector as additional information. The motion compensator 2030 applies the motion information 2015 to the reconstructed previous picture 2025 to form a motion-compensated current picture 2035. However, the prediction is rarely perfect, and the difference between the motion compensated current picture 2035 and the original current picture 2005 is the prediction residual 2045. As another alternative, the motion estimator and the motion compensator apply other types of motion estimation / compensation.

주파수 변환기(2060)는 공간 영역 비디오 정보를 주파수 영역(즉, 스펙트럼) 데이터로 변환한다. 블록-기반 비디오 픽처의 경우, 주파수 변환기(2060)는 DCT 또는 DCT의 변형을 픽셀 데이터 또는 예측 잔차 데이터의 블록에 적용하여 DCT 계수의 블록을 생성한다. 다른 대안으로서, 주파수 변환기(2060)는 푸리에 변환 등의 다른 종래의 주파수 변환을 적용하거나 웨이블렛(wavelet) 또는 서브대역(subband) 분석을 사용한다. 주파수 변환기(2060)는 8x8, 8x4, 4x8, 또는 다른 크기 주파수 변환(예를 들어, DCT)을 예측 픽처에 대한 예측 잔차에 적용한다.The frequency converter 2060 converts spatial domain video information into frequency domain (ie, spectral) data. For block-based video pictures, frequency converter 2060 applies a transformation of DCT or DCT to a block of pixel data or prediction residual data to produce a block of DCT coefficients. As another alternative, the frequency converter 2060 may apply other conventional frequency transforms, such as Fourier transforms or use wavelet or subband analysis. The frequency converter 2060 applies 8x8, 8x4, 4x8, or other magnitude frequency transform (eg, DCT) to the prediction residual for the predictive picture.

이어서, 양자화기(2070)는 스펙트럼 데이터 계수의 블록을 양자화한다. 양자화기는 균일한 스칼라 양자화를, 픽처별로 또는 다른 방식으로 변하는 스텝-크기를 갖는 스펙트럼 데이터에 적용한다. 다른 대안으로서, 양자화기는 다른 유형의 양자화, 예를 들어 비균일(non-uniform), 벡터(vector) 또는 비적응적(non-adaptive) 양자화를 스펙트럼 데이터 계수에 적용하거나 주파수 변환을 사용하지 않는 인코더 시스템에서 공간 영역 데이터를 직접 양자화한다. 적응적 양자화 이외에, 인코더(2000)는 레이트 제어를 위해 프레임 누락(frame dropping), 적응적 필터링, 또는 다른 기술을 사용할 수 있다.Subsequently, quantizer 2070 quantizes the block of spectral data coefficients. The quantizer applies uniform scalar quantization to spectral data having step-sizes that vary from picture to picture or in other ways. As another alternative, the quantizer is an encoder that does not apply other types of quantizations, such as non-uniform, vector or non-adaptive quantization to spectral data coefficients or uses frequency conversion. Quantize spatial domain data directly in the system. In addition to adaptive quantization, encoder 2000 may use frame dropping, adaptive filtering, or other techniques for rate control.

예측 픽처에서의 주어진 매크로블록이 어떤 유형의 정보를 갖지 않는 경우(예를 들어, 매크로블록에 대한 움직임 정보 및 잔차 정보를 갖지 않는 경우), 인코더(2000)는 매크로블록을 건너뜀 매크로블록(skipped macroblock)으로서 인코딩할 수 있다. 그렇다면, 인코더는 압축된 비디오 정보(2095)의 출력 비트스트림으로 건너뜀 매크로블록을 시그널링할 수 있다.If a given macroblock in a predictive picture does not have any type of information (eg, does not have motion information and residual information for the macroblock), the encoder 2000 skipped the macroblock. macroblock). If so, the encoder can signal the skipped macroblock to the output bitstream of the compressed video information 2095.

재구성된 현재 픽처가 차후의 움직임 추정/보상을 위해 필요한 경우, 역양자화기(2076)는 양자화된 스펙트럼 데이터 계수에 대해 역양자화를 수행한다. 이어서, 주파수 역변환기(2066)는 주파수 변환기(2060)의 동작의 역을 수행하여 재구성된 예측 잔차(예측 픽처의 경우) 또는 재구성된 샘플(인트라-코딩된 픽처의 경우)을 생성한다. 인코딩 중인 픽처(2005)가 인트라-코딩된 픽처인 경우, 재구성된 샘플은 재구성된 현재 픽처(도시 생략)를 형성한다. 인코딩 중인 픽처(2005)가 예측 픽처인 경우, 재구성된 예측 잔차가 재구성된 현재 픽처를 형성하기 위해 움직임 보상된 예측(2035)에 가산된다. 픽처 스토어(2020)는 그 다음 픽처를 예측하는 데 사용하기 위한 재구성된 현재 픽처를 버퍼링한다. 어떤 실시예에서, 인코더는 프레임의 블록들 간의 불연속을 적응적으로 평탄화(smooth)하기 위해 재구성된 프레임에 디블록킹 필터(deblocking filter)를 적용한다.If the reconstructed current picture is needed for subsequent motion estimation / compensation, inverse quantizer 2076 performs inverse quantization on the quantized spectral data coefficients. The frequency inverse transformer 2066 then performs the inverse of the operation of the frequency converter 2060 to generate a reconstructed prediction residual (in the case of a predictive picture) or a reconstructed sample (in the case of an intra-coded picture). If the picture being encoded 2005 is an intra-coded picture, the reconstructed sample forms the reconstructed current picture (not shown). If the picture being encoded 2005 is a predictive picture, the reconstructed prediction residual is added to the motion compensated prediction 2035 to form the reconstructed current picture. The picture store 2020 buffers the reconstructed current picture for use in predicting the next picture. In some embodiments, the encoder applies a deblocking filter to the reconstructed frame to adaptively smooth the discontinuities between the blocks of the frame.

엔트로피 코더(2080)는 양자화기(2070)의 출력은 물론 어떤 부수적인 정보(예를 들어, 움직임 정보(2015), 양자화 스텝 크기)를 압축한다. 일반적인 엔트로피 코딩 기술은 산술 코딩, 차분 코딩, 허프만 코딩, 런 랭스 코딩, LZ 코딩, 사전 코딩(dictionary coding) 및 이들의 조합을 포함한다. 엔트로피 코더(2080)는 일반적으로 다른 종류의 정보(예를 들어, DC 계수, AC 계수, 다른 종류의 부수적인 정보)에 대해 다른 코딩 기술을 사용하고, 특정의 코딩 기술 내에서의 다수의 코드 테이블 중에서 선택할 수 있다.Entropy coder 2080 compresses the output of quantizer 2070 as well as some additional information (eg, motion information 2015, quantization step size). Common entropy coding techniques include arithmetic coding, differential coding, Huffman coding, run length coding, LZ coding, dictionary coding, and combinations thereof. Entropy coder 2080 generally uses different coding techniques for different kinds of information (eg, DC coefficients, AC coefficients, other kinds of incidental information), and multiple code tables within a particular coding technique. You can choose from.

엔트로피 코더(2080)는 압축된 비디오 정보(2095)를 버퍼(2090)에 넣는다. 버퍼 레벨 표시자는 비트 레이트 적응적 모듈에 피드백된다. 압축된 비디오 정보(2095)는 일정한 또는 비교적 일정한 비트 레이트로 버퍼(2090)로부터 소진되고 그 비트 레이트로 차후의 스트리밍을 위해 저장된다. 따라서, 버퍼(2090)의 레벨은 주로 필터링되고 양자화된 비디오 정보의 엔트로피의 함수이며, 이는 엔트로피 코딩의 효율성에 영향을 미친다. 다른 대안으로서, 인코더 시스템(2000)는 압축 바로 후에 압축된 비디오 정보를 스트리밍하고, 버퍼(2090)의 레벨은 또한 정보가 전송을 위해 버퍼(2090)로부터 소진되는 레이트에 의존한다.Entropy coder 2080 puts compressed video information 2095 into buffer 2090. The buffer level indicator is fed back to the bit rate adaptive module. Compressed video information 2095 is exhausted from buffer 2090 at a constant or relatively constant bit rate and stored for later streaming at that bit rate. Thus, the level of buffer 2090 is primarily a function of the entropy of filtered and quantized video information, which affects the efficiency of entropy coding. As another alternative, encoder system 2000 streams the compressed video information immediately after compression, and the level of buffer 2090 also depends on the rate at which information is exhausted from buffer 2090 for transmission.

버퍼(2090) 이전 또는 이후에, 압축된 비디오 정보(2095)는 네트워크를 통한 전송을 위해 채널 코딩될 수 있다. 채널 코딩은 오차 검출 및 정정 데이터를 압축된 비디오 정보(2905)에 적용할 수 있다.Before or after the buffer 2090, the compressed video information 2095 may be channel coded for transmission over the network. Channel coding may apply error detection and correction data to the compressed video information 2905.

C. 비디오 디코더C. Video Decoder

도 21은 일반적인 비디오 디코더 시스템(2100)의 블록도이다. 디코더 시스템(2100)은 압축된 비디오 픽처 시퀀스에 대한 정보(2195)를 수신하고 재구성된 픽처(2105)(예를 들어, 순차 비디오 프레임, 인터레이스형 비디오 프레임, 또는 인터레이스형 비디오 프레임의 필드)를 포함하는 출력을 생성한다. 비디오 디코더의 특정의 실시예들은 일반적으로 일반화된 디코더(2100)의 변형 또는 보완된 버전을 사용한다.21 is a block diagram of a general video decoder system 2100. Decoder system 2100 receives information 2195 about a compressed video picture sequence and includes a reconstructed picture 2105 (eg, a sequential video frame, an interlaced video frame, or a field of interlaced video frames). Produces output Certain embodiments of the video decoder generally use a modified or supplemented version of the generalized decoder 2100.

디코더 시스템(2100)은 예측 픽처 및 키 픽처를 압축 해제한다. 설명을 위해, 도 21은 디코더 시스템(2100)을 통한 키 픽처의 경로 및 전방 예측 픽처의 경로를 나타낸다. 디코더 시스템(2100)의 컴포넌트들 중 다수는 키 픽처 및 예측 픽처 둘다를 압축 해제하는 데 사용된다. 이들 컴포넌트에 의해 수행되는 정확한 동작은 압축 해제 중인 정보의 유형에 따라 다를 수 있다.Decoder system 2100 decompresses the predictive picture and the key picture. 21 illustrates a path of a key picture and a path of a forward predicted picture through the decoder system 2100. Many of the components of the decoder system 2100 are used to decompress both the key picture and the predictive picture. The exact actions performed by these components may vary depending on the type of information being decompressed.

버퍼(2190)는 압축된 비디오 시퀀스에 대한 정보(2195)를 수신하고 수신된 정보를 엔트로피 디코더(2180)가 이용할 수 있게 해준다. 버퍼(2190)는 일반적으로 시간에 따라 꽤 일정한 레이트로 정보를 수신하고, 대역폭 또는 전송에서의 단기 변동을 평탄화하기 위해 지터 버퍼를 포함한다. 버퍼(2190)는 재생 버퍼 및 다른 버퍼도 역시 포함할 수 있다. 다른 대안으로서, 버퍼(2190)는 가변 레이트로 정보를 수신한다. 버퍼(2190) 이전 또는 이후에, 압축된 비디오 정보가 채널 디코딩되고 오차 검출 및 정정을 위해 처리될 수 있다.The buffer 2190 receives information 2195 about the compressed video sequence and makes the received information available to the entropy decoder 2180. Buffer 2190 generally receives information at a fairly constant rate over time, and includes a jitter buffer to smooth out short-term variations in bandwidth or transmission. Buffer 2190 may also include a playback buffer and other buffers. As another alternative, buffer 2190 receives information at a variable rate. Before or after buffer 2190, compressed video information may be channel decoded and processed for error detection and correction.

엔트로피 디코더(2180)는 엔트로피-코딩되고 양자화된 데이터는 물론 엔트로피-코딩된 부수적인 정보(예를 들어, 움직임 정보(2115), 양자화 스텝 크기)를 엔트로피 디코딩한다, 즉 일반적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 엔트로피 디코딩 기술은 산술 디코딩, 차분 디코딩, 허프만 디코딩, 런 랭스 디코딩, LZ 디코딩, 사전 디코딩 및 이들의 조합을 포함한다. 엔트로피 디코더(2180)는 다른 종류의 정보(예를 들어, DC 계수, AC 계수, 다른 종류의 부수적인 정보)에 대해 다른 디코딩 기술을 자주 사용하며, 특정의 디코딩 기술 내에서 다수의 코드 테이블 중에서 선택할 수 있다.Entropy decoder 2180 entropy decodes entropy-coded and quantized data as well as entropy-coded incidental information (e.g., motion information 2115, quantization step size), i.e., entropy generally performed at an encoder. Apply the inverse of the encoding. Entropy decoding techniques include arithmetic decoding, differential decoding, Huffman decoding, run length decoding, LZ decoding, pre decoding and combinations thereof. Entropy decoder 2180 frequently uses different decoding techniques for different kinds of information (e.g., DC coefficients, AC coefficients, and other kinds of incidental information), and selects among multiple code tables within a particular decoding technique. Can be.

재구성될 픽처(2105)가 전방 예측 픽처인 경우, 움직임 보상기(2130)는 재구성 중인 픽처(2105)의 예측(2135)을 형성하기 위해 움직임 정보(2115)를 참조 픽처(2125)에 적용한다. 예를 들어, 움직임 보상기(2130)는 참조 픽처(2125)에서 매크로블록을 찾기 위해 매크로블록 움직임 벡터를 사용한다. 픽처 버퍼(2120)는 참조 픽처로서 사용하기 위해 이전의 재구성된 픽처를 저장한다. 움직임 보상기(2130)는 픽셀로, 1/2 픽셀로, 1/4 픽셀로 또는 다른 증분으로 움직임을 보상할 수 있고, 또 픽처별로 또는 다른 방식으로 움직임 보상의 정밀도를 전환할 수 있다. 움직임 보상의 정밀도는 수평 및 수직에서 동일하거나 다를 수 있다. 다른 대안으로서, 움직임 보상기는 다른 유형의 움직임 보상을 적용한다. 움직임 보상기에 의한 예측은 좀처럼 완벽하지 않으며, 따라서 디코더(2100)는 또한 예측 잔차 를 재구성한다.If the picture 2105 to be reconstructed is a forward predictive picture, the motion compensator 2130 applies the motion information 2115 to the reference picture 2125 to form a prediction 2135 of the picture 2105 being reconstructed. For example, the motion compensator 2130 uses the macroblock motion vector to find the macroblock in the reference picture 2125. Picture buffer 2120 stores a previous reconstructed picture for use as a reference picture. The motion compensator 2130 may compensate for motion in pixels, 1/2 pixels, 1/4 pixels, or other increments, and may switch the precision of motion compensation per picture or in other ways. The precision of motion compensation may be the same or different in horizontal and vertical. As another alternative, the motion compensator applies other types of motion compensation. The prediction by the motion compensator is rarely perfect, so the decoder 2100 also reconstructs the prediction residual.

디코더가 차후의 움직임 보상을 위해 재구성된 픽처를 필요로 하는 경우, 픽처 스토어(2120)는 그 다음 픽처를 예측하는 데 사용하기 위해 재구성된 픽처를 버퍼링한다. 어떤 실시예에서, 인코더는 프레임의 블록들 간의 불연속을 적응적으로 평탄화하기 위해 재구성된 프레임에 디블로킹 필터를 적용한다.If the decoder needs a reconstructed picture for later motion compensation, the picture store 2120 buffers the reconstructed picture for use in predicting the next picture. In some embodiments, the encoder applies a deblocking filter to the reconstructed frame to adaptively smooth the discontinuities between the blocks of the frame.

역양자화기(2170)는 엔트로피-디코딩된 데이터를 역양자화한다. 일반적으로, 역양자화기는 픽처별로 또는 다른 방식으로 변하는 스텝-크기로 엔트로피-디코딩된 데이터에 균일한 스칼라 역양자화를 적용한다. 다른 대안으로서, 역양자화기는 데이터에 다른 유형의 역양자화, 예를 들어 불균일, 벡터 또는 비적응적 역양자화를 적용하거나, 또는 주파수 역변환을 사용하지 않는 디코더 시스템에서 공간 영역 데이터를 직접 역양자화한다.Inverse quantizer 2170 dequantizes the entropy-decoded data. In general, inverse quantizers apply uniform scalar inverse quantization to entropy-decoded data that varies from picture to picture or in other ways. As another alternative, the inverse quantizer applies other types of inverse quantization to the data, for example heterogeneous, vector or non-adaptive inverse quantization, or directly dequantizes the spatial domain data in a decoder system that does not use frequency inverse transform.

주파수 역변환기(2160)는 양자화된 주파수 영역 데이터를 공간 영역 비디오 정보로 변환한다. 블록-기반 비디오 픽처의 경우, 주파수 역변환기(2160)는 IDCT 또는 IDCT의 변형을 DCD 계수의 블록에 적용하여 각각 키 픽처 또는 예측 픽처에 대한 픽셀 데이터 또는 예측 잔차 데이터를 생성한다. 다른 대안으로서, 주파수 역변환기(2160)는 푸리에 역변환 등의 다른 종래의 주파수 역변환을 적용하거나 웨이블렛 또는 서브대역 합성을 사용한다. 주파수 역변환기(2160)는 8x8, 8x4, 4x8, 또는 다른 크기 주파수 역변환(예를 들어, IDCT)를 예측 픽처에 대한 예측 잔차에 적용한다.The frequency inverse transformer 2160 converts the quantized frequency domain data into spatial domain video information. For block-based video pictures, frequency inverse transformer 2160 applies IDCT or a transform of IDCT to a block of DCD coefficients to generate pixel data or prediction residual data for a key picture or a predictive picture, respectively. Alternatively, frequency inverse transformer 2160 may apply other conventional frequency inverse transforms, such as Fourier inverse transforms or use wavelet or subband synthesis. Frequency inverse transformer 2160 applies an 8x8, 8x4, 4x8, or other magnitude frequency inverse transform (eg, IDCT) to the prediction residual for the predictive picture.

IIIIII . . 인터레이스형Interlaced P-필드 및  P-field and 인터레이스형Interlaced P-프레임 P-frame

일반적인 인터레이스형 비디오 프레임은 서로 다른 때에 스캔된 2개의 필드(예를 들어, 상부 필드 및 하부 필드)로 이루어져 있다. 일반적으로, 인터레이스형 비디오 프레임의 정지한 영역(stationary region)은 필드를 함께 코딩("프레임 모드" 코딩)함으로써 인코딩하는 것이 보다 효율적이다. 반면에, 종종 인터레이스형 비디오 프레임의 움직이는 영역(moving region)은 개별적으로 필드를 코딩("필드 모드" 코딩)함으로써 코딩하는 것이 더 효율적인데, 왜냐하면 이 2개의 필드가 다른 움직임을 갖는 경향이 있기 때문이다. 전방 예측 인터레이스형 비디오 프레임은 2개의 개별적인 전방 예측 필드(인터레이스형 P-필드)로서 코딩될 수 있다. 예를 들어, 인터레이스형 비디오 프레임 전체에 걸쳐 많은 움직임이 있고 따라서 필드 간에 많은 차이가 있는 경우, 전방 예측 인터레이스형 비디오 프레임에 대해 필드들을 개별적으로 코딩하는 것이 효율적일 수 있다.A typical interlaced video frame consists of two fields (e.g., top field and bottom field) scanned at different times. In general, stationary regions of interlaced video frames are more efficient to encode by coding the fields together (“frame mode” coding). On the other hand, often a moving region of an interlaced video frame is more efficient to code by coding the fields separately (“field mode” coding), because these two fields tend to have different movements. to be. The forward prediction interlaced video frame may be coded as two separate forward prediction fields (interlaced P-fields). For example, if there is a lot of motion throughout an interlaced video frame and therefore there are many differences between the fields, it may be efficient to code the fields separately for the forward predicted interlaced video frame.

또는, 전방 예측 인터레이스형 비디오 프레임은 필드 코딩과 프레임 코딩의 혼합을 사용하여 인터레이스형 P-프레임으로서 코딩될 수 있다. 인터레이스형 P-프레임의 매크로블록의 경우, 이 매크로블록은 상부 및 하부 필드에 대한 픽셀 라인들을 포함하고, 이들 라인은 프레임-코딩 모드에서는 함께 또는 필드-코딩 모드에서는 개별적으로 코딩될 수 있다.Alternatively, the forward predictive interlaced video frame may be coded as an interlaced P-frame using a mixture of field coding and frame coding. In the case of a macroblock of an interlaced P-frame, this macroblock contains pixel lines for the upper and lower fields, which can be coded together in the frame-coding mode or separately in the field-coding mode.

인터레이스형 P-필드는 하나 이상의 이전에 디코딩된 필드를 참조한다. 예를 들어, 어떤 구현에서, 인터레이스형 P-필드는 하나 또는 2개의 이전에 디코딩된 필드를 참조하는 반면, 인터레이스형 B-필드는 최대 2개의 이전의 참조 필드 및 2 개의 장래의 참조 필드(즉, 최대 총 4개의 참조 필드)를 참조한다. (인터레이스형 P-필드에 대한 인코딩 및 디코딩 기술에 대해서는 이하에서 상세히 기술한다.) 또는, 특히 어떤 실시예에 따른 인터레이스형 P-필드 및 2-참조 인터레이스형 P-필드에 관한 더 많은 정보에 대해서는, 2004년 5월 27일자로 출원된 발명의 명칭이 "전방 예측 인터레이스형 비디오 프레임의 필드에 대한 움직임 벡터의 예측(Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames)"인 미국 특허 출원 제10/857,473호를 참조하기 바란다.An interlaced P-field refers to one or more previously decoded fields. For example, in some implementations, an interlaced P-field refers to one or two previously decoded fields, while an interlaced B-field refers to up to two previous reference fields and two future reference fields (ie , Up to a total of four reference fields). (Encoding and decoding techniques for interlaced P-fields are described in detail below.) Or, more specifically, for more information about interlaced P-fields and 2-referenced interlaced P-fields, according to some embodiments. , US Patent Application No. 10, entitled "Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames," filed May 27, 2004. See / 857,473.

IVIV . . 인터레이스형Interlaced P-필드에서의 참조 필드의 개수 Number of reference fields in the P-field

어떤 실시예에서, 단일의 현재의 인터레이스형 P-필드의 움직임 보상된 예측을 수행할 때 2개의 이전에 코딩된/디코딩된 필드가 참조 필드로서 사용될 수 있다. 일반적으로, 2개의 참조 필드를 사용할 수 있게 되면 그 결과 움직임 보상된 예측이 하나의 참조 필드로 제한되어 있는 경우보다 더 나은 압축 효율이 얻어진다. 그렇지만, 2개의 참조 필드가 이용가능한 경우 시그널링 오버헤드는 더 높아지는데, 그 이유는 2개의 필드 중 어느 것이 움직임 벡터를 갖는 각각의 매크로블록 또는 블록에 대한 참조를 제공하는지를 나타내기 위해 여분의 정보가 전송되기 때문이다.In some embodiments, two previously coded / decoded fields may be used as reference fields when performing motion compensated prediction of a single current interlaced P-field. In general, the availability of two reference fields results in better compression efficiency than when motion compensated prediction is limited to one reference field. However, the signaling overhead is higher when two reference fields are available, because extra information is needed to indicate which of the two fields provides a reference to each macroblock or block with a motion vector. Because it is sent.

어떤 상황에서, 움직임 벡터마다 더 많은 잠재적인 움직임 보상 예측자(2개의 참조 필드 대 하나의 참조 필드)를 갖는 것의 이점은 참조 필드 선택을 시그널링하는 데 필요한 오버헤드보다 중대하지 않다. 예를 들어, 최상의 참조 모두가 2 개의 가능한 참조 필드 중 하나로부터 오는 경우, 2개 대신에 단일의 참조 필드를 사용하기로 선택하는 것은 유리할 수 있다. 이것은 보통 2개의 참조 필드 중 하나만이 현재 필드와 동일한 장면으로부터 오도록 된 장면 변화로 인한 것이다. 또는, 시퀀스의 시작에서와 같이 하나의 참조 필드만이 이용가능할 수 있다. 이들 경우에, 현재 P-필드에 대한 필드 레벨에서 하나의 참조 필드만이 사용된다는 것과 그 하나의 참조 필드가 어떤 것인지를 시그널링하고 또 그 결정을 현재 P-필드 내의 매크로블록 및 블록에 적용시키는 것이 보다 효율적이다. 그러면, 참조 필드 선택 정보가 움직임 벡터를 갖는 모든 매크로블록 또는 블록과 함께 더 이상 전송될 필요가 없다.In some situations, the benefit of having more potential motion compensation predictors per motion vector (two reference fields versus one reference field) is no greater than the overhead required to signal reference field selection. For example, if all of the best references come from one of two possible reference fields, it may be advantageous to choose to use a single reference field instead of two. This is usually due to a scene change such that only one of the two reference fields is from the same scene as the current field. Or, only one reference field may be available, such as at the beginning of a sequence. In these cases, signaling that only one reference field is used at the field level for the current P-field and what that one reference field is, and applying the decision to macroblocks and blocks in the current P-field More efficient. The reference field selection information then no longer needs to be sent with every macroblock or block with a motion vector.

A. 서로 다른 방식에서의 참조 필드의 개수A. Number of reference fields in different ways

한 방식에서는 2개의 이전의 코딩된/디코딩된 필드가 현재 P-필드에 대한 참조 필드로서 사용될 수 있다. (매크로블록 또는 블록에 대한) 움직임 벡터가 사용하는 참조 필드는, 움직임 벡터에 대한 다른 정보와 같이, 움직임 벡터를 위해 시그널링된다. 예를 들어, 움직임 벡터의 경우, 시그널링된 정보는 (1) 참조 필드, 및 (2) 움직임 벡터와 관련 현재 블록 또는 매크로블록에 대한 블록 또는 매크로블록 예측자의 참조 필드에서의 위치를 가리킨다. 또는, 참조 필드 정보 및 움직임 벡터 정보는 섹션 XII에서의 결합 구현 중 하나에 기술된 바와 같이 시그널링된다.In one scheme, two previous coded / decoded fields may be used as reference fields for the current P-field. The reference field used by the motion vector (for the macroblock or block) is signaled for the motion vector, like other information about the motion vector. For example, in the case of a motion vector, the signaled information indicates (1) a reference field and (2) a position in the reference field of the block or macroblock predictor for the current block or macroblock associated with the motion vector. Or, the reference field information and the motion vector information are signaled as described in one of the joint implementations in section XII.

다른 방식에서, 하나의 이전에 코딩된/디코딩된 필드만이 현재 P-필드에 대한 참조 필드로서 사용된다. 움직임 벡터의 경우, 움직임 벡터가 참조하는 참조 필드를 가리킬 필요가 없다. 예를 들어, 움직임 벡터의 경우, 시그널링된 정보는 움직임 벡터와 관련 현재 블록 또는 매크로블록에 대한 예측자의 참조 필드에서의 위치만을 가리킨다. 또는, 움직임 벡터 정보는 섹션 XII에서의 결합 구현 중 하나에 기술되어 있는 바와 같이 시그널링된다. 1 참조 필드 방식에서의 움직임 벡터는 일반적으로 2 참조 필드 방식에서의 동일한 움직임 벡터보다 더 적은 비트로 코딩된다.In another way, only one previously coded / decoded field is used as a reference field for the current P-field. In the case of a motion vector, it is not necessary to point to a reference field to which the motion vector refers. For example, in the case of a motion vector, the signaled information indicates only the location in the reference field of the predictor for the current block or macroblock associated with the motion vector. Or, the motion vector information is signaled as described in one of the joint implementations in section XII. The motion vector in the one reference field scheme is generally coded with fewer bits than the same motion vector in the two reference field scheme.

어느 방식이든, 차후의 움직임 보상을 위해 참조 필드에 대한 버퍼 또는 픽처 스토어의 업데이트는 간단하다. 현재 P-필드에 대한 참조 필드 또는 필드들은 현재 P-필드 이전에 가장 최근의 및 두번째로 가장 최근의 I-필드 또는 P-필드 중 하나 또는 둘다이다. 후보 참조 필드의 위치를 알고 있기 때문에, 인코더 및 디코더는 자동적으로 또 버퍼 관리 신호 없이 그 다음 P-필드의 움직임 보상을 위해 참조 픽처 스토어를 업데이트할 수 있다.Either way, updating the buffer or picture store for the reference field is simple for future motion compensation. The reference field or fields for the current P-field are one or both of the most recent and second most recent I-field or P-field before the current P-field. Since the position of the candidate reference field is known, the encoder and decoder can automatically update the reference picture store for motion compensation of the next P-field, again without a buffer management signal.

다른 대안으로서, 인코더 및 디코더는 인터레이스형 P-필드에 대한 다수의 참조 필드에 대해 하나 이상의 부가의 방식을 사용한다.As another alternative, the encoder and decoder use one or more additional schemes for multiple reference fields for interlaced P-fields.

B. B. 시그널링Signaling  Yes

이 섹션에서 및 섹션 XII에서의 결합 구현에서 기술된 시그널링의 구체적인 예는 많은 참조 필드가 현재 P-필드에 대해 어떻게 사용되는지, 및 하나의 참조 필드가 사용되는 경우에는 어느 후보 참조 필드가 사용되는지를 시그널링한다. 예를 들어, P-필드 헤더 내의 1-비트 필드(NUMREF라고 함)는 P-필드가 하나의 또는 2개의 이전의 필드를 참조로서 사용하는지를 가리킨다. NUMREF = 0인 경우, 하나의 참조 필드만이 사용된다. NUMREF = 1인 경우, 2개의 참조 필드가 사용된다. NUMREF = 0인 경우, 또하나의 1-비트 필드(REFFIELD라고 함)가 존재하고 이는 2개의 필드 중 어느 것이 참조로서 사용되는지를 가리킨다. REFFIELD = 0인 경우, 시간상으로 더 가까운 필드가 참조 필드로서 사용된다. REFFIELD = 1인 경우, 2개의 후보 참조 필드 중 시간상으로 더 멀리 있는 필드가 현재 P-필드에 대한 참조 필드로서 사용된다. 다른 대안으로서, 인코더 및 디코더는 참조 필드 선택을 위해 다른 및/또는 부가의 신호를 사용한다.Specific examples of signaling described in this section and in the joint implementation in section XII include how many reference fields are currently used for P-fields, and which candidate reference fields are used when one reference field is used. Signaling. For example, a 1-bit field (called NUMREF) in the P-field header indicates whether the P-field uses one or two previous fields as references. If NUMREF = 0, only one reference field is used. If NUMREF = 1, two reference fields are used. If NUMREF = 0, there is another 1-bit field (referred to as REFFIELD), which indicates which of the two fields is used as a reference. If REFFIELD = 0, the field closer in time is used as the reference field. If REFFIELD = 1, the farther in time of the two candidate reference fields is used as the reference field for the current P-field. As another alternative, the encoder and decoder use other and / or additional signals for reference field selection.

C. 참조 필드의 위치C. Location of Reference Field

도 24a 내지 도 24f는 인터레이스형 P-필드에 대한 움직임 보상된 예측에서 사용하기 위해 이용가능한 참조 필드의 위치를 나타낸 것이다. P-필드는 하나의 또는 2개의 이전에 코딩된/디코딩된 필드를 참조로서 사용할 수 있다. 구체적으로는, 도 24a 내지 도 24f는 NUMREF = 0 및 NUMREF = 1에 대한 참조 필드의 예를 나타낸 것이다.24A-F illustrate the positions of reference fields available for use in motion compensated prediction for interlaced P-fields. The P-field may use one or two previously coded / decoded fields as reference. Specifically, FIGS. 24A to 24F show examples of reference fields for NUMREF = 0 and NUMREF = 1.

도 24a 및 도 24b는 2개의 참조 필드가 현재 P-필드에 대해 사용되는 예(NUMREF = 1)를 나타낸 것이다. 도 24a에서, 현재 필드는 시간상으로 이전에 인터레이스형 비디오 프레임에서의 상부 필드 및 하부 필드를 참조한다. 중간의 인터레이스형 B-필드는 참조 필드로서 사용되지 않는다. 도 24b에서, 현재 필드는 현재 필드를 포함하는 인터레이스형 비디오 프레임 바로 이전의 인터레이스형 비디오 프레임에서의 상부 필드 및 하부 필드를 참조한다.24A and 24B show an example in which two reference fields are used for the current P-field (NUMREF = 1). In FIG. 24A, the current field refers to the top field and bottom field in an interlaced video frame previously in time. The intermediate interlaced B-field is not used as a reference field. In FIG. 24B, the current field refers to the upper field and lower field in the interlaced video frame immediately preceding the interlaced video frame containing the current field.

도 24c 및 도 24d는 현재 P-필드에 대해 하나의 참조 필드가 사용되고(NUMREF = 0) 또 하나의 참조 필드가 시간상으로 가장 최근의 참조 필 드(REFFIELD = 0)인 예를 나타낸 것이다. 참조 필드의 극성은 현재 P-필드의 극성과 반대가며, 이는 예를 들어 현재 P-필드가 짝수 라인으로부터 온 경우 참조 필드는 홀수 라인으로부터 온 것임을 의미한다. 도 24c에서, 현재 필드는 시간상으로 이전의 인터레이스형 비디오 프레임에서의 하부 필드를 참조하고, 인터레이스형 비디오 프레임에서의 덜 최근의 상부 필드를 참조하지 않는다. 다시 말하면, 중간의 인터레이스형 B-필드는 허용되는 참조 필드가 아니다. 도 24d에서, 현재 필드는 덜 최근의 상부 필드보다는 오히려 현재 필드를 포함하는 인터레이스형 비디오 프레임 바로 이전의 인터레이스형 비디오 프레임에서의 하부 필드를 참조한다.24C and 24D show an example in which one reference field is used for the current P-field (NUMREF = 0) and another reference field is the most recent reference field in time (REFFIELD = 0). The polarity of the reference field is opposite to the polarity of the current P-field, which means, for example, if the current P-field is from an even line, the reference field is from an odd line. In FIG. 24C, the current field refers to a lower field in a previous interlaced video frame in time and does not refer to a less recent upper field in an interlaced video frame. In other words, the interlaced B-field in the middle is not an allowed reference field. In FIG. 24D, the current field refers to the lower field in the interlaced video frame immediately preceding the interlaced video frame that includes the current field rather than the less recent upper field.

도 24e 및 도 24f는 현재의 P-필드에 대해 하나의 참조 필드가 사용되고(NUMREF = 0) 또 이 하나의 참조 필드가 시간상으로 두번째로 가장 최근의 참조 필드(REFFIELD = 1)인 예를 나타낸 것이다. 참조 필드의 극성은 현재 필드의 극성과 동일하며, 이는 예를 들어 현재 필드가 짝수 라인으로부터 온 경우 참조 필드도 역시 짝수 라인으로부터 온 것임을 의미한다. 도 24e에서, 현재 필드는 시간상으로 이전의 인터레이스형 비디오 프레임에서의 상부 필드를 참조하고, 보다 최근의 하부 필드를 참조하지 않는다. 다시 말하면, 중간의 인터레이스형 B-필드는 허용되는 참조 필드가 아니다. 도 24f에서, 현재 필드는 보다 최근의 하부 필드보다는 오히려 상부 필드를 참조한다.24E and 24F show an example in which one reference field is used for the current P-field (NUMREF = 0) and this one reference field is the second most recent reference field in time (REFFIELD = 1). . The polarity of the reference field is the same as the polarity of the current field, which means that, for example, if the current field is from an even line, the reference field is also from an even line. In FIG. 24E, the current field refers to the upper field in a previous interlaced video frame in time, and not to the more recent lower field. In other words, the interlaced B-field in the middle is not an allowed reference field. In FIG. 24F, the current field refers to the upper field rather than the more recent lower field.

다른 대안으로서, 인코더 및 디코더는 인터레이스형 P-필드에 대한 움직임 보상된 예측을 위해 다른 및/또는 부가의 위치 또는 타이밍에 있는 참조 필드를 사용한다. 예를 들어, 현재 P-필드와 동일한 프레임 내의 참조 필드가 허용된다. 또는, 프레임의 상부 필드 또는 하부 필드가 먼저 코딩/디코딩될 수 있다.As another alternative, the encoder and decoder use a reference field at other and / or additional position or timing for motion compensated prediction for the interlaced P-field. For example, a reference field in the same frame as the current P-field is allowed. Alternatively, the upper field or lower field of the frame may be coded / decoded first.

D. 인코딩 기술D. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 다수의 참조 필드 방식 중 어느 것이 인터레이스형 P-필드를 코딩하는 데 사용되는지를 시그널링한다. 예를 들어, 인코더는 도 25a에 도시된 기술(2500)을 수행한다.An encoder such as encoder 2000 of FIG. 20 signals which of a number of reference field schemes is used to code the interlaced P-field. For example, the encoder performs the technique 2500 shown in FIG. 25A.

주어진 인터레이스형 P-필드의 경우, 인코더는 인터레이스형 P-필드에 대한 움직임 보상된 예측에서 사용되는 참조 필드의 개수를 시그널링한다(단계 2510). 예를 들어, 인코더는 하나의 또는 2개의 참조 필드가 사용되는지를 가리키기 위해 단일 비트를 사용한다. 다른 대안으로서, 인코더는 참조 필드의 개수를 위해 다른 시그널링/인코딩 메카니즘을 사용한다.For a given interlaced P-field, the encoder signals the number of reference fields used in motion compensated prediction for the interlaced P-field (step 2510). For example, the encoder uses a single bit to indicate whether one or two reference fields are used. As another alternative, the encoder uses another signaling / encoding mechanism for the number of reference fields.

인코더는 하나의 또는 2개의 참조 필드가 사용되는지를 결정한다(단계 2520). 하나의 참조 필드가 사용되는 경우, 인코더는 인터레이스형 P-필드에 대한 참조 필드 선택을 시그널링한다(단계 2530). 예를 들어, 인코더는 시간상으로 가장 최근의 또는 시간상으로 두번째로 가장 최근의 참조 필드(이전의 I-필드 또는 P-필드)가 사용되는지를 가리키기 위해 단일 비트를 사용한다. 다른 대안으로서, 인코더는 P-필드에 대한 참조 필드 선택을 위해 다른 시그널링/인코딩 메카니즘을 사용한다.The encoder determines whether one or two reference fields are used (step 2520). If one reference field is used, the encoder signals a reference field selection for the interlaced P-field (step 2530). For example, the encoder uses a single bit to indicate whether the most recent reference field (previous I-field or P-field) in time is used. As another alternative, the encoder uses other signaling / encoding mechanisms for selecting the reference field for the P-field.

2개의 참조 필드가 사용되는 경우, 인코더는 인터레이스형 P-필드의 블록, 매크로블록 또는 다른 부분의 움직임 벡터에 대한 참조 필드 선택을 시그널링한다(단계 2540). 예를 들어, 인코더는 움직임 벡터에 대한 차분 움직임 벡터 정보와 함께 움직임 벡터에 대한 참조 필드 선택을 공동으로 인코딩한다. 다른 대안으로서, 인코더는 움직임 벡터에 대한 참조 필드 선택을 위해 다른 시그널링/인코딩 메카니즘을 사용한다. 인코더는 P-필드에 대해 시그널링할 움직임 벡터가 더 이상 없을 때까지 그 다음의 움직임 벡터에 대한 시그널링을 반복한다(단계 2545, 2540). (간단함을 위해, 도 25a는 참조 필드 선택의 시그널링(단계 2540) 이후에 또는 근방에서 일어날 수 있는 매크로블록 및 블록 인코딩 및 대응하는 시그널링의 여러가지 단계를 나타내지 않았다. 그 대신에, 도 25a는 P-필드에서의 다수의 움직임 벡터에 대한 참조 필드 선택의 반복된 시그널링에 중점을 두었다.)If two reference fields are used, the encoder signals a reference field selection for a motion vector of a block, macroblock, or other portion of the interlaced P-field (step 2540). For example, the encoder jointly encodes the reference field selection for the motion vector along with the differential motion vector information for the motion vector. As another alternative, the encoder uses a different signaling / encoding mechanism for selecting the reference field for the motion vector. The encoder repeats signaling for the next motion vector until there are no more motion vectors to signal for the P-field (steps 2545 and 2540). (For simplicity, FIG. 25A does not show the various stages of macroblock and block encoding and corresponding signaling that may occur after or near the signaling of reference field selection (step 2540.) Instead, FIG. 25A shows P Focused on repeated signaling of reference field selection for multiple motion vectors in the field.)

다른 대안으로서, 인코더는 인터레이스형 P-필드를 코딩하기 위해 다수의 참조 필드 방식 중 어느 것이 사용되는지를 가리키기 위해 다른 기술을 수행한다. 예를 들어, 인코더는 참조 필드의 개수에 대해 더 많은 및/또는 서로 다른 옵션을 갖는다.As another alternative, the encoder performs another technique to indicate which of the multiple reference field schemes is used to code the interlaced P-field. For example, the encoder has more and / or different options for the number of reference fields.

간단함을 위해, 도 25a는 이 기술(2500)이 인코딩 및 디코딩의 다른 측면과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 25A does not represent various ways in which the technique 2500 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

E. 디코딩 기술E. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 다수의 방식 중 어느 것을 인터레이스형 P-필드를 디코딩하는 데 사용할지를 가리키는 신호를 수신 및 디코딩한다. 예를 들어, 디코더는 도 25b에 도시된 기술(2550)을 수행한다.A decoder, such as decoder 2100 of FIG. 21, receives and decodes a signal indicating which of a number of schemes to use to decode the interlaced P-field. For example, the decoder performs the technique 2550 shown in FIG. 25B.

주어진 인터레이스형 P-필드의 경우, 디코더는 인터레이스형 P-필드에 대한 움직임 보상된 예측을 위해 사용되는 참조 필드의 개수에 대한 신호를 수신 및 디코딩한다(단계 2560). 예를 들어, 디코더는 하나의 또는 2개의 참조 필드가 사용되는지를 가리키기 위해 단일 비트를 수신 및 디코딩한다. 다른 대안으로서, 디코더는 참조 필드의 개수에 대해 다른 디코딩 메카니즘을 사용한다.For a given interlaced P-field, the decoder receives and decodes a signal for the number of reference fields used for motion compensated prediction for the interlaced P-field (step 2560). For example, the decoder receives and decodes a single bit to indicate whether one or two reference fields are used. As another alternative, the decoder uses a different decoding mechanism for the number of reference fields.

디코더는 하나의 또는 2개의 참조 필드가 사용되는지를 결정한다(단계 2570). 하나의 참조 필드가 사용되는 경우, 디코더는 인터레이스형 P-필드에 대한 참조 필드 선택을 위한 신호를 수신 및 디코딩한다(단계 2580). 예를 들어, 디코더는 시간상으로 가장 최근의 또는 시간상으로 두번째로 가장 최근의 참조 필드(이전의 I-필드 또는 P-필드)가 사용되는지를 가리키기 위해 단일 비트를 수신 및 처리한다. 다른 대안으로서, 디코더는 P-필드에 대한 참조 필드 선택을 위해 다른 디코딩 메카니즘을 사용한다.The decoder determines whether one or two reference fields are used (step 2570). If one reference field is used, the decoder receives and decodes a signal for reference field selection for the interlaced P-field (step 2580). For example, the decoder receives and processes a single bit to indicate whether the most recent reference field (previous I-field or P-field) in time is used. As another alternative, the decoder uses another decoding mechanism for selecting the reference field for the P-field.

2개의 참조 필드가 사용되는 경우, 디코더는 인터레이스형 P-필드의 블록, 매크로블록 또는 다른 부분의 움직임 벡터에 대한 참조 필드 선택을 위한 신호를 수신 및 디코딩한다(단계 2590). 예를 들어, 디코더는 움직임 벡터에 대한 차분 움직임 벡터 정보와 함께 공동으로 코딩된 움직임 벡터에 대한 참조 필드 선택을 디코딩한다. 다른 대안으로서, 디코더는 움직임 벡터에 대한 참조 필드 선택을 위해 다른 디코딩 메카니즘을 사용한다. 디코더는 P-필드에 대해 시그널링된 움직임 벡터가 더 이상 없을 때까지 그 다음 움직임 벡터에 대한 수신 및 디코딩을 반복한다(단계 2595, 2590). (간단함을 위해, 도 25b는 참조 필드 선택의 수신 및 디코딩(단계 2590) 이후에 또는 근방에서 일어날 수 있는 매크로블록 및 블록 디코딩의 여러가지 단계를 나타내지 않았다. 그 대신에, 도 25b는 P-필드에서의 다수의 움직임 벡터에 대한 참조 필드 선택의 반복된 수신/디코딩에 중점을 두었다.)If two reference fields are used, the decoder receives and decodes a signal for reference field selection for a motion vector of a block, macroblock, or other portion of the interlaced P-field (step 2590). For example, the decoder decodes the reference field selection for the jointly coded motion vector along with the differential motion vector information for the motion vector. As another alternative, the decoder uses another decoding mechanism for selecting the reference field for the motion vector. The decoder repeats receiving and decoding for the next motion vector until there are no more motion vectors signaled for the P-field (steps 2595, 2590). (For simplicity, FIG. 25B does not show the various steps of macroblock and block decoding that may occur after or near the reception and decoding of reference field selection (step 2590.) Instead, FIG. 25B shows a P-field. We have focused on repeated reception / decoding of reference field selection for multiple motion vectors in.

다른 대안으로서, 디코더는 인터레이스형 P-필드를 디코딩하기 위해 다수의 참조 필드 방식 중 어느 것이 사용되는지를 가리키기 위해 다른 기술을 수행한다. 예를 들어, 디코더는 참조 필드의 개수에 대해 더 많은 및/또는 서로 다른 옵션을 갖는다.As another alternative, the decoder performs another technique to indicate which of the multiple reference field schemes is used to decode the interlaced P-field. For example, the decoder has more and / or different options for the number of reference fields.

간단함을 위해, 도 25b는 이 기술(2550)이 인코딩 및 디코딩의 다른 측면과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 25B does not show the various ways in which this technique 2550 can be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

V. V. 인터레이스형Interlaced P-필드에 대한 매크로블록  Macroblocks for P-Fields 모드mode 정보의  Information 시그널링Signaling

어떤 실시예에서, 인터레이스형 P-필드의 매크로블록에 대한 여러가지 매크로블록 모드 정보가 시그널링을 위해 공동으로 그룹화된다. 인터레이스형 P-필드의 매크로블록은 많은 서로 다른 모드로 인코딩될 수 있으며, 몇가지 서로 다른 신택스 요소 중 임의의 것이 존재하거나 존재하지 않는다. 상세하게는, 움직임 보상의 유형(1MV, 4MV, 또는 인트라), 코딩된 블록 패턴이 매크로블록에 대한 비트스트림에 존재하는지 여부, 및 (1MV 경우) 움직임 벡터 데이터가 매크로블록에 대한 비트스트림에 존재하는지 여부가 공동으로 코딩된다. 서로 다른 코드 테이블이 매크로블록 모드 정보에 대한 서로 다른 시나리오에 대해 사용될 수 있으며, 그 결과 정보의 보다 효율적인 전체 압축이 얻어진다.In some embodiments, various macroblock mode information for macroblocks of interlaced P-fields are jointly grouped for signaling. Macroblocks of interlaced P-fields may be encoded in many different modes, with or without any of several different syntax elements. Specifically, the type of motion compensation (1MV, 4MV, or intra), whether the coded block pattern is in the bitstream for the macroblock, and (if 1MV) the motion vector data is in the bitstream for the macroblock. Whether or not is jointly coded. Different code tables can be used for different scenarios for macroblock mode information, resulting in a more efficient overall compression of the information.

이 섹션에서 및 섹션 XII에서의 결합 구현에서 기술된 시그널링의 구체적인 예는 가변 길이 코딩된 MBMODE 신택스 요소를 갖는 매크로블록 모드 정보를 시그널링한다. MBMODE에 대한 테이블 선택은 고정 길이 코딩되는 필드 레벨 요소 MBMODETAB을 통해 시그널링된다. 다른 대안으로서, 인코더 및 디코더는 매크로블록 모드 정보를 시그널링하기 위해 다른 및/또는 부가의 신호를 사용한다.Specific examples of signaling described in this section and in the joint implementation in section XII signal macroblock mode information with variable length coded MBMODE syntax elements. Table selection for MBMODE is signaled via the field level element MBMODETAB, which is fixed length coded. As another alternative, the encoder and decoder use other and / or additional signals to signal macroblock mode information.

A. 서로 다른 유형의 A. Different Types 인터레이스형Interlaced P-필드에 대한 매크로블록  Macroblocks for P-Fields 모드mode

일반적으로, 매크로블록 모드는 매크로블록 유형(1MV, 4MV 또는 인트라), 매크로블록에 대한 코딩된 블록 패턴의 존재 여부, 및 매크로블록에 대한 움직임 벡터 데이터의 존재 여부를 가리킨다. 매크로블록 모드 신택스 요소에 의해 나타내어진 정보는 인터레이스형 P-필드가 1MV 필드(인트라 및/또는 1MV 매크로블록을 가짐)로서 또는 혼합-MV 필드(인트라, 1MV 및/또는 4MV 매크로블록을 가짐)로서 인코딩되어 있는지 여부에 의존한다.In general, macroblock mode indicates the macroblock type (1MV, 4MV or intra), the presence of a coded block pattern for the macroblock, and the presence of motion vector data for the macroblock. The information represented by the macroblock mode syntax element is either as an interlaced P-field with a 1MV field (with intra and / or 1MV macroblocks) or as a mixed-MV field (with intra, 1MV and / or 4MV macroblocks). Depends on whether or not it is encoded.

1MV 인터레이스형 P-필드에서, 매크로블록에 대한 매크로블록 모드 요소는 매크로블록 유형(인트라 또는 1MV), 매크로블록에 대한 코딩된 블록 패턴 요소의 존재 여부, 및 움직임 벡터 데이터의 존재 여부(매크로블록 유형이 1MV이지만 인트라는 아닌 경우)를 공동으로 나타낸다. 도 26의 테이블은 1MV 인터레이스형 P-필드에서의 MBMODE에 의해 시그널링되는 매크로블록 정보에 대한 완전한 이벤트 공간을 나타낸 것이다.In a 1MV interlaced P-field, the macroblock mode element for a macroblock may be the macroblock type (intra or 1MV), the presence of a coded block pattern element for the macroblock, and the presence of motion vector data (macroblock type). Is 1 MV but not intra). The table in FIG. 26 shows the complete event space for macroblock information signaled by MBMODE in the 1MV interlaced P-field.

혼합-MV 인터레이스형 P-필드에서, 매크로블록에 대한 매크로블록 모드 요소는 매크로블록 유형(인트라, 1MV 또는 4MV), 매크로블록에 대한 코딩된 블록 패턴 의 존재 여부, 및 움직임 벡터 데이터의 존재 여부(매크로블록 유형이 1MV이지만 인트라 또는 4MV가 아닌 경우)를 공동으로 나타낸다. 도 27의 테이블은 혼합-MV 인터레이스형 P-필드에서의 MBMODE에 의해 시그널링되는 매크로블록 정보에 대한 완전한 이벤트 공간을 나타낸 것이다.In a mixed-MV interlaced P-field, the macroblock mode element for a macroblock is determined by the macroblock type (intra, 1MV or 4MV), the presence of a coded block pattern for the macroblock, and the presence of motion vector data ( The macroblock type is 1MV but not intra or 4MV). The table in FIG. 27 shows the complete event space for macroblock information signaled by MBMODE in mixed-MV interlaced P-field.

매크로블록 모드가 움직임 벡터 데이터가 존재함을 가리키는 경우, 움직임 벡터 데이터는 매크로블록 계층에 존재하고, 움직임 벡터를 재구성하기 위해 움직임 벡터 예측자와 합성되는 움직임 벡터 차분을 시그널링한다. 매크로블록 모드 요소가 움직임 벡터가 존재하지 않음을 가리키는 경우, 움직임 벡터 차분이 0인 것으로 가정되고, 따라서 움직임 벡터는 움직임 벡터 예측자와 같다. 매크로블록 모드 요소는 따라서 움직임 벡터 예측자만으로 되는 움직임 보상(움직임 벡터 차분으로 수정되지 않음)이 사용되는 경우 효율적으로 시그널링한다.When the macroblock mode indicates that motion vector data exists, the motion vector data is present in the macroblock layer and signals the motion vector difference synthesized with the motion vector predictor to reconstruct the motion vector. If the macroblock mode element indicates that no motion vector exists, the motion vector difference is assumed to be zero, so the motion vector is equal to the motion vector predictor. The macroblock mode element thus signals efficiently when motion compensation (not modified with motion vector differences), which consists only of motion vector predictors, is used.

다수의 서로 다른 VLC 테이블 중 하나가 인터레이스형 P-필드에 대한 매크로블록 모드 요소를 시그널링하기 위해 사용된다. 예를 들어, 혼합-MV 인터레이스형 P-필드의 매크로블록의 MBMODE에 대한 8개의 서로 다른 코드 테이블이 도 47h에 도시되어 있으며, 1MV 인터레이스형 P-필드의 매크로블록의 MBMODE에 대한 8개의 서로 다른 코드 테이블이 도 47i에 도시되어 있다. 테이블 선택은 필드 계층에서 시그널링되는 MBMODETAB 요소에 의해 표시된다. 다른 대안으로서, 인코더 및 디코더는 매크로블록 모드 정보 및 테이블 선택을 시그널링하기 위해 다른 및/또는 부가의 코드를 사용한다.One of a number of different VLC tables is used to signal the macroblock mode element for the interlaced P-field. For example, eight different code tables for MBMODE of macroblocks of mixed-MV interlaced P-field are shown in FIG. 47H, and eight different codes for MBMODE of macroblocks of 1MV interlaced P-field. The code table is shown in FIG. 47I. Table selection is indicated by the MBMODETAB element signaled in the field hierarchy. As another alternative, the encoder and decoder use other and / or additional code to signal macroblock mode information and table selection.

B. 인코딩 기술B. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보를 인코딩한다. 예를 들어, 인코더는 도 28a에 도시한 기술(2800)을 수행한다.An encoder such as encoder 2000 of FIG. 20 encodes macroblock mode information for a macroblock of an interlaced P-field. For example, the encoder performs the technique 2800 shown in FIG. 28A.

주어진 P-필드의 경우, 인코더는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보를 인코딩하는 데 사용될 코드 테이블을 선택한다(단계 2810). 예를 들어, 인코더는 도 47h 또는 도 47i에 도시된 MBMODE에 대한 VLC 테이블 중 하나를 선택한다. 다른 대안으로서, 인코더는 다른 및/또는 부가의 테이블 중에서 선택한다.For a given P-field, the encoder selects a code table to be used to encode macroblock mode information for the macroblock of the interlaced P-field (step 2810). For example, the encoder selects one of the VLC tables for MBMODE shown in FIG. 47H or 47I. As another alternative, the encoder selects from other and / or additional tables.

인코더는 선택된 코드 테이블을 비트스트림으로 시그널링한다(단계 2820). 예를 들어, 인터레이스형 P-필드의 유형이 주어지면, 인코더는 선택된 코드 테이블을 가리키는 FLC를 시그널링한다. 다른 대안으로서, 인코더는 코드 테이블 선택을 위해 다른 시그널링 메카니즘을 사용한다, 예를 들어 코드 테이블 선택을 위해 VLC를 사용한다.The encoder signals the selected code table to the bitstream (step 2820). For example, given the type of interlaced P-field, the encoder signals the FLC pointing to the selected code table. As another alternative, the encoder uses another signaling mechanism for code table selection, for example using VLC for code table selection.

인코더는 다수의 이용가능한 매크로블록 모드 중에서 매크로블록에 대한 매크로블록 모드를 선택한다(단계 2830). 예를 들어, 인코더는 매크로블록 유형, 코딩된 블록 패턴이 존재하는지 여부, 및 움직임 벡터 데이터가 존재하는지 여부(매크로블록 유형에 대해 적용가능한 경우)를 가리키는 매크로블록 모드를 선택한다. MBMODE에 대한 옵션의 여러가지 조합이 도 26 및 도 27에 열거되어 있다. 다른 대안으로서, 인코더는 매크로블록 옵션의 다른 및/또는 부가의 조합에 대한 다른 및/또는 부가의 매크로블록 모드 중에서 선택한다.The encoder selects a macroblock mode for the macroblock from the plurality of available macroblock modes (step 2830). For example, the encoder selects a macroblock mode that indicates the macroblock type, whether a coded block pattern is present, and whether motion vector data is present (if applicable for the macroblock type). Various combinations of options for MBMODE are listed in FIGS. 26 and 27. As another alternative, the encoder selects between different and / or additional macroblock modes for other and / or additional combinations of macroblock options.

인코더는 선택된 코드 테이블을 사용하여 선택된 매크로블록 모드를 시그널링한다(단계 2840). 일반적으로, 인코더는 선택된 VLC 테이블을 사용하여 매크로블록 모드를 VLC로서 시그널링한다. 인코더는 P-필드에 대해 시그널링할 매크로블록 모드가 더 이상 없을 때까지 매크로블록 모드의 선택 및 시그널링을 반복한다(단계 2845, 2830, 2840). (간단함을 위해, 도 28a는 선택된 매크로블록의 시그널링(단계 2840) 이후에 또는 근방에서 일어날 수 있는 매크로블록 및 블록 인코딩 및 대응하는 시그널링의 여러가지 단계를 나타내지 않았다. 그 대신에, 도 28a는 P-필드에 대한 선택된 코드 테이블을 사용하여 P-필드에서의 매크로블록에 대한 매크로블록 모드의 반복된 시그널링에 중점을 두었다.)The encoder signals the selected macroblock mode using the selected code table (step 2840). In general, the encoder signals the macroblock mode as VLC using the selected VLC table. The encoder repeats the selection and signaling of the macroblock mode until there are no more macroblock modes to signal for the P-field (steps 2845, 2830, 2840). (For simplicity, FIG. 28A does not show the various stages of macroblock and block encoding and corresponding signaling that may occur after or near the signaling of the selected macroblock (step 2840.) Instead, FIG. 28A shows P The selected code table for the field was used to focus on repeated signaling of macroblock mode for macroblocks in P-fields.)

다른 대안으로서, 인코더는 인터레이스형 P-필드에 대한 매크로블록 모드 정보를 인코딩하기 위해 다른 기술을 수행한다. 예를 들어, 도 28a가 모드 선택 이전에 코드 테이블 선택을 도시하고 있지만, 많은 통상의 인코딩 시나리오에서, 인코더는 먼저 매크로블록에 대한 매크로블록 모드를 선택하고, 이어서 그 선택된 매 모드를 효율적으로 시그널링하기 위한 코드 테이블을 선택하며, 이어서 코드 테이블 선택 및 모드를 시그널링한다. 게다가, 도 28a가 코드 테이블 선택이 인터레이스형 P-필드마다 행해지는 것을 나타내고 있지만, 다른 대안으로서 코드 테이블은 더 빈번하게, 또는 덜 빈번하게, 또는 비주기적으로 선택되거나, 또는 인코더는 코드 테이블 선택을 완전히 건너뛴다(항상 동일한 코드 테이블을 사용함). 또는, 인코더는 컨텍스트 정보로부터 코드 테이블을 선택할 수 있다(이는 코드 테이블 선택의 시그널링을 불필요하게 만든다).As another alternative, the encoder performs other techniques to encode macroblock mode information for interlaced P-fields. For example, although FIG. 28A illustrates code table selection prior to mode selection, in many common encoding scenarios, the encoder first selects a macroblock mode for a macroblock, and then efficiently signals every selected mode. Selects a code table for which to signal the code table selection and mode. In addition, while FIG. 28A shows that code table selection is done for each interlaced P-field, as an alternative, the code table is selected more frequently, or less frequently, or aperiodically, or the encoder makes code table selection. Skip completely (always use the same code table). Or, the encoder can select a code table from the context information (which makes signaling of code table selection unnecessary).

간단함을 위해, 도 28a는 이 기술(2800)이 인코딩 및 디코딩의 다른 측면과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 28A does not represent various ways in which the technique 2800 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

C. 디코딩 기술C. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보를 수신 및 디코딩한다. 예를 들어, 디코더는 도 28b에 도시된 기술(2850)을 수행한다.A decoder such as decoder 2100 of FIG. 21 receives and decodes macroblock mode information for a macroblock of an interlaced P-field. For example, the decoder performs the technique 2850 shown in FIG. 28B.

주어진 인터레이스형 P-필드의 경우, 디코더는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보를 디코딩하는 데 사용될 코드 테이블에 대한 코드 테이블 선택을 수신 및 디코딩한다(단계 2860). 예를 들어, 인터레이스형 P-필드의 유형이 주어진 경우, 디코더는 선택된 코드 테이블을 가리키는 FLC를 수신 및 디코딩한다. 다른 대안으로서, 디코더는 코드 테이블 선택을 위해 다른 시그널링 메카니즘으로 동작한다, 예를 들어 코드 테이블 선택을 위해 VLC를 사용한다.For a given interlaced P-field, the decoder receives and decodes a code table selection for the code table to be used to decode macroblock mode information for the macroblocks of the interlaced P-field (step 2860). For example, given the type of interlaced P-field, the decoder receives and decodes the FLC pointing to the selected code table. As another alternative, the decoder operates with other signaling mechanisms for code table selection, for example using VLC for code table selection.

디코더는 디코딩된 코드 테이블 선택(및 잠재적으로 다른 정보)에 기초하여 코드 테이블을 선택한다(단계 2870). 예를 들어, 디코더는 도 47h 또는 도 47i에 도시된 MBMODE에 대해 VLC 테이블 중 하나를 선택한다. 다른 대안으로서, 디코더는 다른 및/또는 부가의 테이블 중에서 선택한다.The decoder selects a code table based on the decoded code table selection (and potentially other information) (step 2870). For example, the decoder selects one of the VLC tables for the MBMODE shown in FIG. 47H or 47I. As another alternative, the decoder selects from other and / or additional tables.

디코더는 매크로블록에 대한 매크로블록 모드 선택을 수신 및 디코딩한다(단계 2880). 예를 들어, 매크로블록 모드 선택은 매크로블록 유형, 코딩된 블록 패턴이 존재하는지 여부, 및 (매크로블록 유형에 대해 적용가능한 경우) 움직임 벡터 데이터가 존재하는지 여부를 가리킨다. MBMODE에 대한 이들 옵션들의 여러가지 조합이 도 26 및 도 27에 열거되어 있다. 다른 대안으로서, 매크로블록 모드는 매크로블록 옵션들의 다른 및/또는 부가의 조합에 대한 다른 및/또는 부가의 매크로블록 모드 중 하나이다. P-필드에 대해 수신 및 디코딩할 매크로블록 모드가 더 이상 없을 때까지, 디코더는 그 다음 매크로블록의 매크로블록 모드에 대한 수신 및 디코딩을 반복한다(단계 2885, 2880). (간단함을 위해, 도 28b는 매크로블록 모드 선택의 수신 및 디코딩(단계 2880) 이후에 또는 근방에서 일어날 수 있는 매크로블록 및 블록 디코딩의 여러가지 단계를 나타내지 않았다. 그 대신에, 도 28b는 P-필드에 대한 선택된 코드 테이블을 사용하여 P-필드에서의 매크로블록에 대한 매크로블록 모드 선택의 반복된 수신/디코딩에 중점을 두었다.)The decoder receives and decodes the macroblock mode selection for the macroblock (step 2880). For example, macroblock mode selection indicates whether a macroblock type, a coded block pattern is present, and whether motion vector data is present (if applicable for the macroblock type). Various combinations of these options for MBMODE are listed in FIGS. 26 and 27. As another alternative, the macroblock mode is one of the other and / or additional macroblock modes for other and / or additional combinations of macroblock options. The decoder then repeats receiving and decoding for the macroblock mode of the macroblock until there are no more macroblock modes to receive and decode for the P-field (steps 2885 and 2880). (For simplicity, FIG. 28B does not show the various stages of macroblock and block decoding that may occur after or near the reception and decoding of macroblock mode selection (step 2880.) Instead, FIG. The selected code table for the field was used to focus on repeated reception / decoding of macroblock mode selection for macroblocks in P-fields.)

다른 대안으로서, 디코더는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보를 디코딩하기 위해 다른 기술을 수행한다. 예를 들어, 도 28b가 코드 테이블 선택이 인터레이스형 P-필드마다 행해지는 것을 도시하고 있지만, 다른 대안으로서 코드 테이블은 더 빈번하게, 또는 덜 빈번하게, 또는 비주기적으로 선택되거나, 또는 디코더는 코드 테이블 선택을 완전히 건너뛴다(항상 동일한 코드 테이블을 사용함). 또는, 디코더는 컨텍스트 정보로부터 코드 테이블을 선택할 수 있다(이는 코드 테이블 선택의 수신 및 디코딩을 불필요하게 만든다).As another alternative, the decoder performs other techniques to decode macroblock mode information for macroblocks of interlaced P-fields. For example, while FIG. 28B shows that code table selection is done per interlaced P-field, as another alternative, the code table is selected more frequently, less frequently, or aperiodically, or the decoder is coded. Skip table selection completely (always use the same code table). Alternatively, the decoder can select the code table from the context information (which makes the reception and decoding of the code table selection unnecessary).

간단함을 위해, 도 28b는 이 기술(2850)이 인코딩 및 디코딩의 다른 측면과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 28B does not represent the various ways in which this technique 2850 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

VIVI . 2 참조 필드 . 2 reference field 인터레이스형Interlaced P-필드에서의 참조 필드 선택 Reference field selection in P-fields

어떤 실시예에서, 단일의 현재의 인터레이스형 P-필드에 대한 움직임 보상된 예측을 수행할 때, 2개의 이전에 코딩/디코딩된 필드가 참조 필드로서 사용된다. (예를 들어, 섹션 IV를 참조할 것) 시그널링된 정보는 2개의 필드 중 어느 것이 움직임 벡터를 갖는 각각의 매크로블록(또는 블록)에 대한 참조를 제공하는지를 가리킨다.In some embodiments, when performing motion compensated prediction for a single current interlaced P-field, two previously coded / decoded fields are used as reference fields. (See, eg, section IV.) The signaled information indicates which of the two fields provides a reference to each macroblock (or block) with a motion vector.

이 섹션에서, 현재 매크로블록 또는 블록을 코딩 또는 디코딩할 때 다수의 이전에 코딩/디코딩된 참조 필드 중 어느 것이 움직임 보상된 예측 정보를 제공하는 데 사용되는지를 효율적으로 시그널링하기 위한 여러가지 기술 및 도구가 기술되어 있다. 예를 들어, 인코더 및 디코더는 인터레이스형 P-필드에서의 이전에 코딩된 움직임 벡터에 기초하여 현재 매크로블록 또는 블록에 대한 우세 및 비우세 참조 필드를 암시적으로 도출한다(또는, 그에 대응하여, 인코더 및 디코더는 우세 및 비우세 움직임 벡터 예측자 극성을 도출한다). 이어서, 시그널링된 정보는 우세 또는 비우세 참조 필드가 현재 매크로블록 또는 블록의 움직임 보상을 위해 사용되는지를 가리킨다.In this section, various techniques and tools are provided for efficiently signaling which of a plurality of previously coded / decoded reference fields are used to provide motion compensated prediction information when coding or decoding a current macroblock or block. Described. For example, the encoder and decoder implicitly derive (or correspondingly) the dominant and non-dominant reference fields for the current macroblock or block based on previously coded motion vectors in the interlaced P-field. The encoder and decoder derive the dominant and non-dominant motion vector predictor polarity). The signaled information then indicates whether the dominant or non-dominant reference field is currently used for motion compensation of the macroblock or block.

A. 우세 및 비우세 참조 필드 및 A. Prevailing and non-dominant reference fields and 예측자Predictor

인터레이스형 필드는 움직임 보상을 사용하지 않고(I-필드), 전방 움직임 보상을 사용하여(P-필드) 또는 전방 및 후방 움직임 보상을 사용하여(B-필드) 코딩될 수 있다. 인터레이스형 P-필드는 이전에 코딩/디코딩된 I-필드 또는 P-필드인 2개 의 참조 필드를 참조할 수 있다. 도 24a 및 도 24b는 현재 P-필드에 대해 2개의 참조 필드가 사용되는 예를 나타낸 것이다. 이 2개의 참조 필드는 반대 극성을 갖는다. 한 참조 필드는 비디오 프레임의 홀수 라인을 나타내고, 다른 참조 필드는 비디오 프레임(이 프레임이 반드시 홀수 라인 참조 필드를 포함하는 동일 프레임일 필요는 없음)의 짝수 라인을 나타낸다. 현재 코딩 또는 디코딩 중에 있는 P-필드는 2개의 이전에 코딩/디코딩된 필드 중 하나 또는 둘다를 움직임 보상에서의 참조로서 사용할 수 있다. 따라서, P-필드의 매크로블록 또는 블록에 대한 움직임 벡터 데이터는 일반적으로 어떤 방식으로 (1) 어느 필드를 움직임 보상에서의 참조 필드로서 사용할지, 및 (2) 움직임 보상에서 사용할 샘플 값들의 그 참조 필드에서의 변위/위치를 가리킨다.Interlaced fields can be coded without using motion compensation (I-field), with forward motion compensation (P-field), or with forward and backward motion compensation (B-field). An interlaced P-field may refer to two reference fields that are previously coded / decoded I-fields or P-fields. 24A and 24B show an example in which two reference fields are used for the current P-field. These two reference fields have opposite polarities. One reference field represents an odd line of a video frame, and the other reference field represents an even line of a video frame (the frame need not necessarily be the same frame including an odd line reference field). The P-field currently being coded or decoded may use one or both of the two previously coded / decoded fields as a reference in motion compensation. Thus, motion vector data for a macroblock or block of P-fields generally refers to (1) which field to use as a reference field in motion compensation, and (2) its reference of sample values to use in motion compensation. Indicates displacement / position in the field.

참조 필드 선택 정보의 시그널링은 비효율적인 비트 수를 소비할 수 있다. 그렇지만, 주어진 움직임 벡터의 경우 그 움직임 벡터에 대해 어느 참조 필드가 사용될지를 예측하고 이어서 예측된 참조 필드가 움직임 벡터에 대한 참조 필드로서 실제로 사용되는지 여부를 시그널링함으로써, 비트 수는 감소될 수 있다.Signaling of the reference field selection information may consume an inefficient number of bits. However, by predicting which reference field will be used for that motion vector for a given motion vector and then signaling whether the predicted reference field is actually used as a reference field for the motion vector, the number of bits can be reduced.

예를 들어, 인터레이스형 P-필드에서 움직임 보상을 사용하는 각각의 매크로블록 또는 블록에 대해, 인코더 또는 디코더는 이웃하는 매크로블록 또는 블록으로부터 최대 3개의 이전에 코딩/디코딩된 움직임 벡터를 분석한다. 이들로부터, 인코더 또는 디코더는 우세 및 비우세 참조 필드를 도출한다. 본질적으로, 인코더 또는 디코더는 2개의 가능한 참조 필드 중 어느 것이 이웃하는 매크로블록 또는 블록의 대부분의 움직임 벡터에 의해 사용되는지를 결정한다. 이웃들의 더 많은 움 직임 벡터에 의해 참조되는 필드가 우세 참조 필드이고, 다른 참조 필드가 비우세 참조 필드이다. 이와 유사하게, 우세 참조 필드의 극성은 우세 움직임 벡터 예측자 극성이고, 비우세 참조 필드의 극성이 비우세 움직임 벡터 예측자 극성이다.For example, for each macroblock or block using motion compensation in an interlaced P-field, the encoder or decoder analyzes up to three previously coded / decoded motion vectors from neighboring macroblocks or blocks. From these, the encoder or decoder derives a dominant and non-dominant reference field. In essence, the encoder or decoder determines which of the two possible reference fields are used by most of the motion vectors of the neighboring macroblock or block. The field referenced by more motion vectors of neighbors is the dominant reference field, and the other reference field is the non-dominant reference field. Similarly, the polarity of the dominant reference field is the dominant motion vector predictor polarity, and the polarity of the non-dominant reference field is the dominant motion vector predictor polarity.

도 29의 의사 코드는 인코드 또는 디코더가 우세 및 비우세 참조 필드를 결정하는 한 기술을 나타낸 것이다. 의사 코드에서, 용어 "동일 필드" 및 "반대 필드"는 현재의 인터레이스형 P-필드에 대한 것이다. 예를 들어, 현재 P-필드가 짝수 필드인 경우, "동일 필드"는 짝수 라인 참조 필드이고, "반대 필드"는 홀수 라인 참조 필드이다. 도 5a 내지 도 10은 예측자 A, B 및 C가 취해지는 이웃하는 매크로블록 및 블록의 위치를 나타낸 것이다. 도 29의 의사 코드에서, 우세 필드는 대부분의 움직임 벡터 예측자 후보에 의해 참조되는 필드이다. 동수(tie)인 경우에, 반대 필드로부터 도출된 움직임 벡터가 우세 움직임 벡터 예측자로서 간주된다. 인트라-코딩된 매크로블록은 우세/비우세 예측자의 계산에서 고려되지 않는다. 모든 후보 예측자 매크로블록이 인트라-코딩된 경우, 우세 및 비우세 움직임 벡터 예측자는 0으로 설정되고, 우세 예측자는 반대 필드로부터 온 것으로 추정된다.The pseudo code of FIG. 29 illustrates one technique by which an encode or decoder determines the dominant and non-dominant reference fields. In the pseudo code, the terms "same field" and "opposite field" refer to the current interlaced P-field. For example, if the current P-field is an even field, the "same field" is an even line reference field and the "opposite field" is an odd line reference field. 5A-10 illustrate the locations of neighboring macroblocks and blocks for which predictors A, B, and C are taken. In the pseudo code of FIG. 29, the dominant field is the field referenced by most motion vector predictor candidates. In the case of a tie, the motion vector derived from the opposite field is considered as the dominant motion vector predictor. Intra-coded macroblocks are not considered in the calculation of dominant / non-dominant predictors. If all candidate predictor macroblocks are intra-coded, the dominant and non-dominant motion vector predictors are set to zero, and the dominant predictor is assumed to be from the opposite field.

다른 대안으로서, 인코더 및 디코더는 이웃하는 매크로블록 또는 블록으로부터 다른 및/또는 부가의 움직임 벡터를 분석하고 및/또는 우세 및 비우세 참조 필드를 결정하기 위해 다른 결정 논리를 적용한다. 또는, 인코더 및 디코더는 인터레이스형 P-필드에서의 주어진 움직임 벡터에 대해 어느 참조 필드가 선택될지를 예측하기 위해 다른 메카니즘을 사용한다. As another alternative, the encoder and decoder apply other decision logic to analyze other and / or additional motion vectors from neighboring macroblocks or blocks and / or to determine the dominant and non-dominant reference fields. Or, the encoder and decoder use different mechanisms to predict which reference field will be selected for a given motion vector in the interlaced P-field.

어떤 경우에, 우세 또는 비우세 필드가 사용되는지를 가리키는 1 비트의 정보는 차분 움직임 벡터 정보와 함께 공동으로 코딩된다. 따라서, 이 1 비트의 정보에 대한 비트/심볼은 진정한 심볼 엔트로피(true symbol entropy)와 보다 정확하게 일치할 수 있다. 예를 들어, 우세/비우세 선택자(dominant/non-dominant selector)가 도 30의 의사 코드에 나타낸 바와 같이, 움직임 벡터 차분의 수직 성분의 일부로서 시그널링된다. 여기에서, MVY는 움직임 벡터의 수직 성분이고, PMVY는 움직임 벡터 예측자의 수직 성분이다. 기본적으로, 수직 움직임 벡터 차분은 참조 필드 선택자 및 수직 오프셋 차분을 다음과 같이 공동으로 코딩한다.In any case, one bit of information indicating whether the dominant or non-dominant field is used is jointly coded together with the differential motion vector information. Thus, the bits / symbols for this one bit of information can more accurately match true symbol entropy. For example, a dominant / non-dominant selector is signaled as part of the vertical component of the motion vector difference, as shown in the pseudo code of FIG. Here, MVY is the vertical component of the motion vector, and PMVY is the vertical component of the motion vector predictor. Basically, the vertical motion vector difference jointly codes the reference field selector and the vertical offset difference as follows.

DMVY = (MVY - PMVY) * 2 + pDMVY = (MVY-PMVY) * 2 + p

여기서, 우세 참조 필드가 사용되는 경우 p = 0이고, 비우세 참조 필드가 사용되는 경우 p = 1이다. 수치 예로서, 현재 블록이 짝수 극성인 것으로 가정하면, 움직임 벡터에 대한 실제 참조 필드는 짝수 극성이고, 우세 예측자는 반대 필드(oppfield)이다(환언하면, 우세 참조 필드는 홀수 극성 참조 필드이다). 또한, 움직임 벡터의 수직 변위가 7 단위(MVY = 7)이고 움직임 벡터 예측자의 수직 성분이 4 단위(PMVY = 4)인 것으로 가정한다. 현재 참조 필드 및 우세 예측자가 반대 극성을 갖기 때문에, DMVY = (7 - 4) * 2 + 1 = 7이다. Here, p = 0 when the dominant reference field is used and p = 1 when the dominant reference field is used. As a numerical example, assuming that the current block is even polarity, the actual reference field for the motion vector is even polarity, and the dominant predictor is the oppfield (in other words, the dominant reference field is an odd polarity reference field). In addition, it is assumed that the vertical displacement of the motion vector is 7 units (MVY = 7) and the vertical component of the motion vector predictor is 4 units (PMVY = 4). DMVY = (7-4) * 2 + 1 = 7 because the current reference field and the dominant predictor have opposite polarities.

다른 대안으로서, 우세/비우세 선택자는 어떤 다른 방식으로 움직임 벡터 차분 정보와 공동으로 코딩된다. 또는, 우세/비우세 선택자는 다른 메카니즘으로 시그널링된다.As another alternative, the dominant / non-dominant selector is coded jointly with the motion vector difference information in some other way. Alternatively, the dominant / non-dominant selector is signaled to another mechanism.

B. 인코딩 기술B. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터의 인코딩 동안에 움직임 벡터 예측자 후보에 대한 우세 및 비우세 참조 필드 극성을 결정한다. 예를 들어, 인코더는 현재 매크로블록 또는 블록의 움직임 벡터에 대해 도 31a에 도시한 기술(3100)을 수행한다. 일반적으로, 인코더는 움직임 벡터 및 참조 필드를 획득하기 위해 2개의 참조 필드에서 어떤 형태의 움직임 추정을 수행한다. 움직임 벡터는 이어서 기술(3100)에 따라 코딩된다.An encoder such as encoder 2000 of FIG. 20 determines the dominant and non-dominant reference field polarity for the motion vector predictor candidate during encoding of the motion vector for the two reference field interlaced P-field. For example, the encoder performs the technique 3100 shown in FIG. 31A on the current macroblock or motion vector of the block. In general, the encoder performs some form of motion estimation on two reference fields to obtain a motion vector and a reference field. The motion vector is then coded according to the technique 3100.

인코더는 움직임 벡터와 동일한 참조 필드 극성의 움직임 벡터 예측자를 결정한다(단계 3110). 예를 들어, 인코더는 움직임 벡터와 관련 참조 필드에 대해 섹션 VII에 기술된 바와 같이 움직임 벡터 예측자를 결정한다. 다른 대안으로서, 인코더는 다른 메카니즘으로 움직임 벡터 예측자를 결정한다.The encoder determines a motion vector predictor of the same reference field polarity as the motion vector (step 3110). For example, the encoder determines the motion vector predictor as described in section VII for the motion vector and associated reference field. As another alternative, the encoder determines the motion vector predictor by another mechanism.

인코더는 움직임 벡터의 우세 및 비우세 참조 필드 극성을 결정한다(단계 3120). 예를 들어, 인코더는 도 29에 도시된 의사 코드를 따른다. 다른 대안으로서, 인코더는 우세 및 비우세 극성을 결정하기 위해 다른 기술을 사용한다.The encoder determines the dominant and non-dominant reference field polarity of the motion vector (step 3120). For example, the encoder follows the pseudo code shown in FIG. As another alternative, the encoder uses other techniques to determine the dominant and non-dominant polarities.

인코더는 움직임 벡터와 관련 움직임 벡터 예측자 및 참조 필드에 대해 우세 또는 비우세 극성이 사용되어야만 하는지를 가리키는 우세/비우세 극성 선택자를 비트스트림으로 시그널링한다(단계 3125). 예를 들어, 인코더는 공동 VLC(joint VLC)를 사용하여 우세/비우세 극성 선택자를 다른 정보와 공동으로 인코딩한다. 다른 대안으로서, 인코더는 다른 메카니즘을 사용하여, 예를 들어 선택자를 가리키는 비트의 산술 코딩을 사용하여 선택자를 시그널링한다. 움직임 벡터 예측자에 대한 참조 필드 극성의 예측이 선택자 정보의 엔트로피를 떨어뜨리며, 이는 선택자 정보의 보다 효율적인 인코딩을 가능하게 해준다.The encoder signals in the bitstream a dominant / non-dominant polarity selector that indicates whether dominant or non-dominant polarity should be used for the motion vector and associated motion vector predictor and reference field (step 3125). For example, the encoder uses joint VLC to jointly encode the dominant / non-dominant polarity selectors with other information. As another alternative, the encoder uses another mechanism to signal the selector using, for example, arithmetic coding of bits indicating the selector. Prediction of the reference field polarity for the motion vector predictor degrades the entropy of the selector information, which allows for more efficient encoding of the selector information.

인코더는 움직임 벡터 예측자 및 움직임 벡터로부터 움직임 벡터 차분을 계산하고(단계 3130), 움직임 벡터 차분 정보에 대한 정보를 시그널링한다(단계 3140).The encoder calculates a motion vector difference from the motion vector predictor and the motion vector (step 3130), and signals information about the motion vector difference information (step 3140).

다른 대안에서, 인코더는 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터의 인코딩 동안에 움직임 벡터 예측을 위한 우세 및 비우세 극성을 결정하기 위해 다른 기술을 수행한다. 게다가, 도 31a가 우세/비우세 선택자 및 움직임 벡터 차분 정보를 개별적으로 시그널링하는 것을 나타내고 있지만, 여러가지 실시예에서, 바로 이 정보는 공동으로 시그널링된다. (선택자 시그널링 오버헤드의 비용을 움직임 벡터 선택 프로세스에 한 요인으로 넣기 위해) 우세/비우세 극성을 결정한 이후에 움직임 벡터를 결정하는 것을 비롯하여, 여러가지 다른 순서 조정(reordering)이 가능하다.In another alternative, the encoder performs other techniques to determine the dominant and non-dominant polarity for motion vector prediction during encoding of the motion vector for the two reference field interlaced P-field. In addition, although FIG. 31A shows separately signaling the dominant / non-dominant selector and motion vector difference information, in various embodiments, this information is jointly signaled. Various other reordering is possible, including determining the motion vector after determining the dominant / non-dominant polarity (to put the cost of the selector signaling overhead into the motion vector selection process).

간단함을 위해, 도 31a는 이 기술(3100)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식들을 나타내지 않았다. 여러가지 결합 구현이 섹션 VII에 상세히 기술되어 있다.For simplicity, FIG. 31A does not represent various ways in which the technique 3100 may be integrated with other aspects of encoding and decoding. Various binding implementations are described in detail in section VII.

C. 디코딩 기술C. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터의 디코딩 동안에 움직임 벡터 예측자 후보에 대한 우세 및 비우세 참조 필드 극성을 결정한다. 예를 들어, 디코더는 도 31b에 도시한 기술(3150)을 수행한다.A decoder such as decoder 2100 of FIG. 21 determines the dominant and non-dominant reference field polarity for the motion vector predictor candidate during decoding of the motion vector for the two reference field interlaced P-field. For example, the decoder performs the technique 3150 shown in FIG. 31B.

디코더는 현재 매크로블록 또는 블록의 움직임 벡터의 우세 및 비우세 참조 필드 극성을 결정한다(3160). 예를 들어, 디코더는 도 29에 도시된 의사 코드를 따른다. 다른 대안으로서, 디코더는 우세 및 비우세 극성을 결정하기 위해 다른 기술을 사용한다.The decoder determines 3160 the dominant and non-dominant reference field polarity of the motion vector of the current macroblock or block. For example, the decoder follows the pseudo code shown in FIG. As another alternative, the decoder uses other techniques to determine the dominant and non-dominant polarities.

디코더는 움직임 벡터와 관련 움직임 벡터 예측자 및 참조 필드에 대해 우세 또는 비우세 극성이 사용되어야만 하는지를 가리키는 우세/비우세 극성 선택자를 비트스트림으로 수신 및 디코딩한다(단계 3165). 예를 들어, 디코더는 공동 VLC를 사용하여 다른 정보와 공동으로 코딩된 우세/비우세 극성 선택자를 수신 및 디코딩한다. 다른 대안으로서, 디코더는 다른 메카니즘을 사용하여 시그널링된 선택자를 수신 및 디코딩한다, 예를 들어 선택자를 가리키는 비트의 산술 디코딩을 수행한다.The decoder receives and decodes a dominant / non-dominant polarity selector in the bitstream indicating whether dominant or non-dominant polarity should be used for the motion vector and associated motion vector predictor and reference field (step 3165). For example, the decoder uses joint VLC to receive and decode predominant / non-dominant polarity selectors jointly coded with other information. As another alternative, the decoder uses other mechanisms to receive and decode the signaled selector, e.g. perform arithmetic decoding of bits indicating the selector.

디코더는 움직임 벡터와 함께 사용될 참조 필드에 대한 움직임 벡터 예측자를 결정한다(단계 3170). 예를 들어, 디코더는 시그널링된 극성에 대해 섹션 VII에 기술된 바와 같이 움직임 벡터 예측자를 결정한다. 다른 대안으로서, 디코더는 다른 메카니즘으로 움직임 벡터 예측자를 결정한다.The decoder determines a motion vector predictor for the reference field to be used with the motion vector (step 3170). For example, the decoder determines the motion vector predictor as described in section VII for the signaled polarity. As another alternative, the decoder determines the motion vector predictor by another mechanism.

디코더는 움직임 벡터 차분에 대한 정보를 수신 및 디코딩하고(단계 3180), 움직임 벡터 차분 및 움직임 벡터 예측자로부터 움직임 벡터를 재구성한다(단계 3190).The decoder receives and decodes information about the motion vector difference (step 3180) and reconstructs the motion vector from the motion vector difference and the motion vector predictor (step 3190).

다른 대안으로서, 디코더는 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터의 디코딩 동안에 움직임 벡터 예측을 위해 우세 및 비우세 극성을 결정하는 데 다른 기술을 수행한다. 예를 들어, 도 31b가 우세/비우세 선택자(dominant/non-dominant selector) 및 움직임 벡터 차분 정보의 개별적인 시그널링을 나타내고 있지만, 다른 대안으로서 이 정보는 공동으로 시그널링된다. 여러가지 다른 순서 조정(reordering)도 가능하다.As another alternative, the decoder performs another technique to determine the dominant and non-dominant polarity for motion vector prediction during the decoding of the motion vector for the two reference field interlaced P-field. For example, while FIG. 31B shows separate signaling of dominant / non-dominant selectors and motion vector differential information, this information is jointly signaled as another alternative. Many other reordering is possible.

간단함을 위해, 도 31b는 이 기술(3150)이 인코딩 및 디코딩의 다른 측면과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 VII에 상세히 기술되어 있다.For simplicity, FIG. 31B does not represent the various ways in which this technique 3150 may be integrated with other aspects of encoding and decoding. Various binding implementations are described in detail in section VII.

VIIVII . . 인터레이스형Interlaced P-필드에 대한  For P-field 하이브리드hybrid 움직임 벡터 예측 Motion vector prediction

어떤 실시예에서, 움직임 벡터는 움직임 벡터를 시그널링하는 것과 관련 비트 레이트를 감소시키기 위해 움직임 벡터 예측자에 대한 차분으로서 시그널링된다. 움직임 벡터 차분 시그널링의 성능은 부분적으로 움직임 벡터 예측의 품질에 의존하며, 이 품질은 현재의 매크로블록, 블록, 기타 등등 주변의 영역으로부터 다수의 후보 움직임 벡터 예측자가 고려될 때 향상되는 것이 보통이다. 그렇지만, 어떤 경우에는, 다수의 후보 예측자를 사용하는 것이 움직임 벡터 예측의 품질을 해친다. 이런 일은 예를 들어 움직임 벡터 예측자가 다양한(예를 들어, 움직임 벡터 예측자들 간의 변동이 많은) 일련의 후보 예측자의 메디안으로서 계산될 때 일어난다.In some embodiments, the motion vector is signaled as a difference to the motion vector predictor to reduce the bit rate associated with signaling the motion vector. The performance of motion vector differential signaling depends in part on the quality of motion vector prediction, which is usually improved when multiple candidate motion vector predictors are considered from the region around the current macroblock, block, etc. However, in some cases, using multiple candidate predictors impairs the quality of motion vector prediction. This happens, for example, when the motion vector predictor is calculated as the median of a series of candidate predictors of various (e.g., fluctuations between the motion vector predictors).

따라서, 어떤 실시예에서, 인코더 및 디코더는 인터레이스형 P-필드의 움직임 벡터에 대해 하이브리드 움직임 벡터 예측을 수행한다. 현재의 매크로블록 또 는 블록의 인과적 이웃(causal neighborhood)을 이루는 벡터들이 어떤 기준에 따라 다양한 경우, 하이브리드 움직임 벡터 예측 모드가 이용된다. 이 모드에서는, 후보 예측자 세트의 메디안을 움직임 벡터 예측자로서 사용하지 않고, 그 세트 중의 특정의 움직임 벡터(예를 들어, 상부 예측자, 좌측 예측자)가 선택자 비트(selector bit) 또는 코드워드(codeword)로서 시그널링된다. 이것은 인터레이스형 P-필드에서의 움직임 불연속에서 움직임 벡터 예측을 개선하는 데 도움이 된다. 2 참조 필드 인터레이스형 P-필드의 경우, 하이브리드 움직임 벡터 예측 조건을 검사할 때 우세 극성도 역시 고려된다.Thus, in some embodiments, the encoder and decoder perform hybrid motion vector prediction on the motion vectors of the interlaced P-field. If the vectors constituting the current macroblock or the causal neighborhood of the blocks vary according to some criteria, the hybrid motion vector prediction mode is used. In this mode, the median of the candidate predictor set is not used as a motion vector predictor, and a specific motion vector (eg, upper predictor, left predictor) in that set is used as a selector bit or codeword. Signaled as (codeword). This helps to improve motion vector prediction in motion discontinuities in interlaced P-fields. In the case of two reference field interlaced P-fields, the predominant polarity is also taken into account when examining the hybrid motion vector prediction conditions.

A. A. 인터레이스형Interlaced P-필드에 대한 움직임 벡터 예측 Motion vector prediction for P-field

하이브리드 움직임 벡터 예측은 인터레이스형 P-필드에 대한 통상의 움직임 벡터 예측의 특수한 경우이다. 앞서 설명한 바와 같이, 움직임 벡터는 움직임 벡터 차분(비트스트림으로 시그널링됨)을 움직임 벡터 예측자에 가산함으로써 재구성된다. 예측자는 최대 3개의 이웃 움직임 벡터로부터 계산된다. 도 5a 내지 도 10은 움직임 벡터 예측을 위해 예측자 A, B, 및 C가 취해지는 이웃 매크로블록 및 블록의 위치를 나타내고 있다. (이들 도면이 순차 P-프레임의 매크로블록 및 블록을 나타내고 있지만, 섹션 VI에 기술된 바와 같이 인터레이스형 P-필드의 매크로블록 및 블록에도 적용된다.)Hybrid motion vector prediction is a special case of conventional motion vector prediction for interlaced P-fields. As described above, the motion vector is reconstructed by adding the motion vector difference (signaled in the bitstream) to the motion vector predictor. The predictor is calculated from up to three neighboring motion vectors. 5A to 10 illustrate the positions of neighboring macroblocks and blocks for which predictors A, B, and C are taken for motion vector prediction. (These figures show macroblocks and blocks of sequential P-frames, but they also apply to macroblocks and blocks of interlaced P-fields, as described in section VI.)

인터레이스형 P-필드가 단지 하나의 이전 필드를 말하는 경우, P-필드의 각 움직임 벡터에 대해 단일의 움직임 벡터 예측자가 계산된다. 예를 들어, 도 51a 및 도 51b(다른 대안으로서, 도 60a 및 도 60b)의 의사 코드는 1 참조 필드 인터레 이스형 P-필드의 움직임 벡터에 대해 움직임 벡터 예측자가 어떻게 계산되는지를 보여주며, 이에 대해서는 섹션 VII에 상세히 기술되어 있다.If an interlaced P-field refers to only one previous field, a single motion vector predictor is calculated for each motion vector of the P-field. For example, the pseudo code of FIGS. 51A and 51B (alternatively, FIGS. 60A and 60B) shows how the motion vector predictor is calculated for the motion vector of the 1 reference field interlaced P-field, This is described in detail in section VII.

인터레이스형 P-필드에 대해 2개의 참조 필드가 사용되는 경우, P-필드의 각 움직임 벡터에 대해 2개의 움직임 벡터 예측자가 있을 수 있다. 양 움직임 벡터 예측자가 계산된 다음에 하나가 선택될 수 있거나, 먼저 예측자 선택을 결정함으로써 단지 하나의 움직임 벡터 예측자만이 계산될 수 있다. 하나의 잠재적인 움직임 벡터 예측자는 우세 참조 필드로부터 온 것이고, 또하나의 잠재적인 움직임 벡터 예측자는 비우세 차마로부터 온 것이며, 여기서 용어 '우세' 및 '비우세'는 예를 들어 섹션 VI에서 기술된 바와 같다. 우세및 비우세 참조 필드는 반대 극성을 가지며, 따라서 한쪽 움직임 벡터 예측자는 현재 P-필드와 동일한 극성의 참조 필드로부터 온 것이고, 다른쪽 움직임 벡터 예측자는 반대 극성을 갖는 참조 필드로부터 온 것이다. 예를 들어, 도 52a 내지 도 52n의 의사 코드 및 테이블은 2 참조 필드 P-필드의 움직임 벡터에 대한 움직임 벡터 예측자를 계산하는 프로세스를 나타낸 것이며, 이에 대해서는 섹션 VII에 상세히 기술되어 있다. 변수 samefieldpred_x 및 samefieldpred_y는 각각 동일한 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타내고, 변수 oppositefieldpred_x 및 oppositefieldpred_y는 각각 반대 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타낸다. 변수 dominantpredictor는 어느 필드가 우세 예측자를 포함하는지를 가리킨다. predictor_flag는 움직임 벡터에 대해 우세 또는 비우세 예측자가 사용되는지를 가리킨다. 다른 대안으로서, 도 61a 내지 도 61f의 의사 코드 가 사용된다.If two reference fields are used for the interlaced P-field, there may be two motion vector predictors for each motion vector of the P-field. One may be selected after both motion vector predictors are calculated, or only one motion vector predictor may be calculated by first determining the predictor selection. One potential motion vector predictor is from a dominant reference field and another potential motion vector predictor is from a nondominant chama, where the terms 'dominance' and 'nondominance' are described, for example, in section VI. As shown. The dominant and non-dominant reference fields have opposite polarities, so one motion vector predictor is from a reference field of the same polarity as the current P-field and the other motion vector predictor is from a reference field with the opposite polarity. For example, the pseudo codes and tables of FIGS. 52A-52N illustrate a process for calculating a motion vector predictor for a motion vector of a 2-reference field P-field, which is described in detail in section VII. The variables samefieldpred_x and samefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the same field, respectively, and the variables oppositefieldpred_x and the oppositefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the opposite fields, respectively. The variable dominantpredictor indicates which field contains the dominant predictor. predictor_flag indicates whether a dominant or non-dominant predictor is used for the motion vector. As another alternative, the pseudo code of FIGS. 61A-61F is used.

B. B. 인터레이스형Interlaced P-필드에 대한  For P-field 하이브리드hybrid 움직임 벡터 예측 Motion vector prediction

움직임 벡터에 대한 하이브리드 움직임 벡터 예측의 경우, 인코더 및 디코더는 움직임 벡터에 대한 하이브리드 움직임 벡터 예측 조건을 검사한다. 일반적으로, 이 조건은 움직임 벡터 예측자의 변동 정도와 관련이 있다. 평가된 예측자는 후보 움직임 벡터 예측자일 수 있고 및/또는 움직임 벡터 예측자는 통상의 움직임 벡터 예측을 사용하여 계산될 수 있다. 조건이 만족되면(예를 들어, 변동 정도가 높으면), 원래의 후보 움직임 벡터 예측자 중 하나가 일반적으로 통상의 움직임 벡터 예측자 대신에 사용된다. 인코더는 어느 하이브리드 움직임 벡터 예측자를 사용해야 하는지를 시그널링하고, 디코더는 그 신호를 수신하여 디코딩한다. 하이브리드 움직임 벡터 예측자는 예측자간 변동이 낮을 때(이것이 통상의 경우임)는 사용되지 않는다.In the case of hybrid motion vector prediction for a motion vector, the encoder and decoder examine the hybrid motion vector prediction condition for the motion vector. In general, this condition is related to the degree of variation of the motion vector predictor. The estimated predictor may be a candidate motion vector predictor and / or the motion vector predictor may be calculated using conventional motion vector prediction. If the condition is met (e.g., the degree of variation is high), one of the original candidate motion vector predictors is generally used in place of the conventional motion vector predictor. The encoder signals which hybrid motion vector predictor to use, and the decoder receives and decodes the signal. The hybrid motion vector predictor is not used when the inter-predictor variation is low (this is the usual case).

인코더 및 디코더는 움직임 벡터가 매크로블록, 블록, 기타 등등에 대한 것인지에 상관없이 인터레이스형 P-필드의 각각의 움직임 벡터에 대해 하이브리드 움직임 벡터 조건을 검사한다. 환언하면, 인코더 및 디코더는 각각의 움직임 벡터에 대해 조건이 트리거되는지 및 그에 따라 예측자 선택 신호가 예상되는지를 판정한다. 다른 대안으로서, 인코더 및 디코더는 인터레이스형 P-필드의 어떤 움직임 벡터에 대해서만 하이브리드 움직임 벡터 조건을 검사한다.The encoder and decoder check the hybrid motion vector condition for each motion vector of the interlaced P-field regardless of whether the motion vector is for a macroblock, block, or the like. In other words, the encoder and decoder determine if a condition is triggered for each motion vector and thus predictor selection signal is expected. As another alternative, the encoder and decoder check the hybrid motion vector condition only for certain motion vectors of the interlaced P-field.

인터레이스형 P-필드에 대한 하이브리드 움직임 벡터 예측의 이점은 이 예측이 양호한 움직임 벡터 예측자를 선택하기 위해 계산된 예측자들 및 우세 극성을 사용한다는 것이다. 광범위한 실험 결과로부터 보면, 이하에 기술하는 하이브리드 움직임 벡터 예측은 그것이 없는 움직임 벡터 예측보다 또한 하이브리드 움직임 벡터 예측의 이전의 구현보다 상당한 압축/품질 개선을 제공한다. 게다가, 하이브리드 벡터 예측 검사를 위한 부가의 계산은 그다지 고비용이지 않다.An advantage of hybrid motion vector prediction for interlaced P-fields is that this prediction uses calculated predictors and dominant polarity to select good motion vector predictors. From extensive experimental results, the hybrid motion vector prediction described below provides a significant compression / quality improvement over motion vector prediction without it and also over previous implementations of hybrid motion vector prediction. In addition, the additional calculations for hybrid vector prediction checks are not very expensive.

어떤 실시예들에서, 인코더 또는 디코더는 일련의 원래의 후보 움직임 벡터 예측자와 대조하여 통상의 움직임 벡터 예측자(이는 섹션 VII.A에 기술된 기술에 의해 결정됨)를 테스트한다. 통상의 움직임 벡터 예측자는 예측자 A, B 및/또는 C의 성분별 메디안이며, 인코더 또는 디코더는 예측자 A 및 예측자 C와 관련하여 이를 테스트한다. 이 테스트는 통상의 움직임 벡터 예측자와 후보들 간의 변동이 높은지를 검사한다. 높은 경우, 정확한 움직임 벡터는 메디안 연산으로부터 도출된 예측자보다 이들 후보 예측자(A, B 또는 C) 중 하나에 더 가까울 수 있다. 후보 예측자들이 멀리 떨어져 있는 경우, 이들의 성분별 메디안은 양호한 예측을 제공하지 않으며, 정확한 움직임 벡터가 A에 가까운지 B에 가까운지를 가리키는 부가의 신호를 전송하는 것이 보다 효율적이다. 예측자 A가 더 가까운 것인 경우, 그것이 현재 움직임 벡터에 대한 움직임 벡터 예측자로서 사용되고, 예측자 C가 더 가까운 것인 경우, 그것이 현재 움직임 벡터에 대한 움직임 벡터 예측자로서 사용된다.In some embodiments, the encoder or decoder tests a conventional motion vector predictor (which is determined by the technique described in section VII.A) against a series of original candidate motion vector predictors. A typical motion vector predictor is the component-specific median of predictors A, B, and / or C, and the encoder or decoder tests it with respect to predictor A and predictor C. This test checks whether the variation between normal motion vector predictors and candidates is high. If high, the exact motion vector may be closer to one of these candidate predictors (A, B or C) than the predictor derived from the median operation. If the candidate predictors are far apart, their component-specific median does not provide good prediction, and it is more efficient to send additional signals indicating whether the correct motion vector is close to A or close to B. If predictor A is closer, it is used as the motion vector predictor for the current motion vector, and if predictor C is closer, it is used as the motion vector predictor for the current motion vector.

도 32의 의사 코드는 디코딩 동안의 이러한 하이브리드 움직임 벡터 예측을 나타낸 것이다. 변수 predictor_pre_x 및 predictor_pre_y는 각각 통상의 하이브리드 움직임 벡터 예측을 사용하여 계산되는 수평 및 수직 움직임 벡터 예측자이다. 변수 predictor_post_x 및 predictor_post_y는 각각 하이브리드 움직임 벡터 예측 후의 수평 및 수직 움직임 벡터 예측자이다. 이 의사 코드에서, 통상의 움직임 벡터 예측자는 움직임 벡터 예측자 선택이 비트스트림에 명시적으로 코딩되어 있는지 알아보기 위해 예측자 A 및 C에 대비하여 테스트된다. 명시적으로 코딩되어 있는 경우, 움직임 벡터 예측자로서 예측자 A 또는 예측자 B를 사용할지를 가리키는 단일의 비트가 비트스트림에 존재한다. 그렇지 않은 경우, 통상의 움직임 벡터 예측자가 사용된다. 여러가지 다른 조건(예를 들어, A 또는 C가 인트라인 경우 통상의 움직임 벡터의 크기)도 역시 검사될 수 있다. A 또는 C가 인트라인 경우, A 또는 C에 대응하는 움직임이 각각 0인 것으로 간주된다.The pseudo code of FIG. 32 illustrates this hybrid motion vector prediction during decoding. The variables predictor_pre_x and predictor_pre_y are the horizontal and vertical motion vector predictors, respectively, calculated using conventional hybrid motion vector prediction. The variables predictor_post_x and predictor_post_y are the horizontal and vertical motion vector predictors after hybrid motion vector prediction, respectively. In this pseudo code, a typical motion vector predictor is tested against predictors A and C to see if the motion vector predictor selection is explicitly coded in the bitstream. When explicitly coded, there is a single bit in the bitstream indicating whether to use predictor A or predictor B as a motion vector predictor. Otherwise, a normal motion vector predictor is used. Various other conditions (eg, the magnitude of a typical motion vector when A or C are intra) can also be checked. If A or C is intra, the motion corresponding to A or C is considered to be zero, respectively.

2 참조 필드 P-필드의 움직임 벡터의 경우, 예측자 모두는 동일한 극성을 갖는다. 어떤 실시예들에서, 참조 필드 극성은 차분 움직임 벡터 디코딩 프로세스에서 획득한 우세/비우세 예측자 극성 및 선택자 신호에 의해 결정된다. 예를 들어, 반대 필드 예측자가 사용되는 경우, predictor_pre_x = oppositefieldpred_x, predictor_pre_x = oppositefieldpred_y, predictorA_x = oppositefieldpredA_x, predictorA_y = oppositefieldpredA_y, predictorC_x = oppositefieldpredC_x, 및 predictorC_y = oppositefieldpredC_y이다. 동일한 필드 예측자가 사용되는 경우, predictor_pre_x = samefieldpred_x, predictor_pre_x = samefieldpred_y, predictorA_x = samefieldpredA_x, predictorA_y = samefieldpredA_y, predictorC_x = samefieldpredC_x, 및 predictorC_y = samefieldpredC_y이다. oppositefieldpred 및 samefieldpred의 값은 예를 들어 도 52a 내지 도 52j, 또는 도 61a 내지 도 61f의 의사 코드에서처럼 계산된다. 도 53은 결합 구현(섹션 XII 참조)에서의 하이브리드 움직임 벡터 예측에 대한 대체 의사 코드를 나타낸 것이다.In the case of a motion vector of two reference field P-fields, all of the predictors have the same polarity. In some embodiments, the reference field polarity is determined by the dominant / non-dominant predictor polarity and selector signal obtained in the differential motion vector decoding process. For example, when the opposite field predictor is used, predictor_pre_x = oppositefieldpred_x, predictor_pre_x = oppositefieldpred_y, predictorA_x = oppositefieldpredA_x, predictorA_y = oppositefieldpredA_y, predictorC_x = oppositefieldpredC_x, and predictorC_y = oppositefieldpredC_y. When the same field predictor is used, predictor_pre_x = samefieldpred_x, predictor_pre_x = samefieldpred_y, predictorA_x = samefieldpredA_x, predictorA_y = samefieldpredA_y, predictorC_x = samefieldpredC_x, and predictorC_y = samefieldpredC_y. The values of oppositefieldpred and samefieldpred are calculated as in the pseudo code of FIGS. 52A-52J or 61A-61F, for example. 53 illustrates alternative pseudo code for hybrid motion vector prediction in a joint implementation (see section XII).

다른 대안으로서, 인코더 및 디코더는 다른 하이브리드 움직임 벡터 예측 조건, 예를 들어 다른 및/또는 부가의 예측자를 고려하는 조건, 움직임 벡터 불연속을 검출하기 위해 서로 다른 결정 논리를 사용하는 조건, 및/또는 (32가 아닌) 변동에 대한 다른 임계값을 사용하는 조건을 테스트한다.As another alternative, the encoder and the decoder may use different hybrid motion vector prediction conditions, e.g., conditions that consider other and / or additional predictors, conditions that use different decision logic to detect motion vector discontinuity, and / or ( Test conditions that use different thresholds for variation (not 32).

2개의 후보 예측자(예를 들어, A 및 C) 간에 선택하기 위한 간단한 신호는 움직임 벡터당 단일 비트이다. 다른 대안으로서, 인코더 및 디코더는 다른 시그널링 메카니즘을 사용한다, 예를 들어, 움직임 벡터 데이터 등의 다른 정보를 갖는 선택자 비트를 공동으로 시그널링한다.The simple signal to choose between two candidate predictors (e.g., A and C) is a single bit per motion vector. As another alternative, the encoder and decoder use different signaling mechanisms, for example jointly signaling selector bits with other information such as motion vector data.

C. 인코딩 기술C. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 인터레이스형 P-필드에 대한 움직임 벡터의 인코딩 동안에 하이브리드 움직임 벡터 예측을 수행한다. 예를 들어, 인코더는 현재 매크로블록 또는 블록의 움직임 벡터에 대해 도 33a에 도시된 기술(3300)을 수행한다.An encoder such as encoder 2000 of FIG. 20 performs hybrid motion vector prediction during encoding of motion vectors for interlaced P-fields. For example, the encoder performs the technique 3300 shown in FIG. 33A on the current macroblock or motion vector of the block.

인코더는 움직임 벡터에 대한 움직임 벡터 예측자를 결정한다(단계 3310). 예를 들어, 인코더는 움직임 벡터 예측자를 결정하기 위해 섹션 VII.A에 설명된 기술을 사용한다. 다른 대안으로서, 인코더는 다른 기술로 움직임 벡터 예측자를 결정한다.The encoder determines a motion vector predictor for the motion vector (step 3310). For example, the encoder uses the technique described in section VII.A to determine the motion vector predictor. As another alternative, the encoder uses other techniques to determine the motion vector predictor.

인코더는 이어서 움직임 벡터 예측자에 대한 하이브리드 움직임 벡터 예측 조건을 검사한다(단계 3320). 예를 들어, 인코더는 도 32에 도시된 디코더측 의사 코드와 아주 흡사한 기술을 사용한다. 다른 대안으로서, 인코더는 다른 하이브리드 움직임 벡터 예측 조건을 검사한다. (그 조건이 무엇이든지 간에, 대응하는 디코더는 인코더와 동일한 하이브리드 움직임 벡터 예측 조건을 검사하는데, 그 이유는 예측자 신호 정보의 존재 여부가 인코더 및 대응하는 디코더에 의해 묵시적으로 도출되기 때문이다.)The encoder then checks the hybrid motion vector prediction condition for the motion vector predictor (step 3320). For example, the encoder uses a technique very similar to the decoder side pseudo code shown in FIG. As another alternative, the encoder checks other hybrid motion vector prediction conditions. (Whatever the condition, the corresponding decoder checks the same hybrid motion vector prediction condition as the encoder, since the presence of predictor signal information is implicitly derived by the encoder and the corresponding decoder.)

하이브리드 움직임 벡터 조건이 트리거되지 않는 경우(결정 단계(3325)로부터의 '아니오' 경로), 인코더는 처음에 결정된 움직임 벡터 예측자를 사용한다.If the hybrid motion vector condition is not triggered ('no' path from decision step 3325), the encoder uses the initially determined motion vector predictor.

한편, 하이브리드 움직임 벡터 조건이 트리거되는 경우(결정 단계(3325)로부터의 '예' 경로), 인코더는 사용할 하이브리드 움직임 벡터 예측자를 선택한다(단계 3330). 예를 들어, 인코더는 이웃 움직임 벡터인 상부 후보 예측자와 좌측 후보 예측자 간에 선택한다. 다른 대안으로서, 인코더는 다른 및/또는 부가의 예측자들 중에서 선택한다.On the other hand, if the hybrid motion vector condition is triggered (the 'yes' path from decision step 3325), the encoder selects the hybrid motion vector predictor to use (step 3330). For example, the encoder selects between the top candidate predictor and the left candidate predictor, which are neighboring motion vectors. As another alternative, the encoder selects from other and / or additional predictors.

이어서, 인코더는 선택된 하이브리드 움직임 벡터 예측자를 시그널링한다(단계 3340). 예를 들어, 인코더는 움직임 벡터 예측자로서 상부 후보 예측자 또는 좌측 후보 예측자가 사용되는지를 가리키는 단일 비트를 전송한다. 다른 대안으로서, 인코더는 다른 시그널링 메카니즘을 사용한다.The encoder then signals the selected hybrid motion vector predictor (step 3340). For example, the encoder transmits a single bit indicating whether the top candidate predictor or the left candidate predictor is used as the motion vector predictor. As another alternative, the encoder uses other signaling mechanisms.

인코더는 (예를 들어, 매크로블록 유형에 따라) 인터레이스형 P-필드의 모든 움직임 벡터에 대해 또는 인터레이스형 P-필드의 어떤 움직임 벡터에 대해서만 기술(3300)을 수행한다. 간단함을 위해, 도 33a는 기술(3300)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.The encoder performs the description 3300 on all motion vectors of the interlaced P-field (eg, depending on the macroblock type) or only on certain motion vectors of the interlaced P-field. For simplicity, FIG. 33A does not represent various ways in which the technique 3300 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

D. 디코딩 기술D. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 인터레이스형 P-필드에 대한 움직임 벡터의 디코딩 동안에 하이브리드 움직임 벡터 예측을 수행한다. 예를 들어, 디코더는 현재 매크로블록 또는 블록의 움직임 벡터에 대해 도 33b에 도시된 기술(3350)을 수행한다.A decoder such as decoder 2100 of FIG. 21 performs hybrid motion vector prediction during decoding of motion vectors for interlaced P-fields. For example, the decoder performs the technique 3350 shown in FIG. 33B for the current macroblock or motion vector of the block.

디코더는 움직임 벡터에 대한 움직임 벡터 예측자를 결정한다(단계 3360). 예를 들어, 디코더는 움직임 벡터 예측자를 결정하기 위해 섹션 VII.A에 설명된 기술을 사용한다. 다른 대안으로서, 디코더는 다른 기술로 움직임 벡터 예측자를 결정한다.The decoder determines a motion vector predictor for the motion vector (step 3360). For example, the decoder uses the technique described in section VII.A to determine the motion vector predictor. As another alternative, the decoder uses other techniques to determine the motion vector predictor.

디코더는 이어서 움직임 벡터 예측자에 대한 하이브리드 움직임 벡터 예측 조건을 검사한다(단계 3370). 예를 들어, 디코더는 도 32에 도시된 의사 코드를 따른다. 다른 대안으로서, 디코더는 다른 하이브리드 움직임 벡터 예측 조건을 검사한다. (그 조건이 무엇이든지 간에, 디코더는 대응하는 인코더와 동일한 하이브리드 움직임 벡터 예측 조건을 검사한다.)The decoder then examines the hybrid motion vector prediction condition for the motion vector predictor (step 3370). For example, the decoder follows the pseudo code shown in FIG. As another alternative, the decoder checks for other hybrid motion vector prediction conditions. (Whatever the condition, the decoder checks the same hybrid motion vector prediction condition as the corresponding encoder.)

하이브리드 움직임 벡터 조건이 트리거되지 않는 경우(결정 단계(3375)로부터의 '아니오' 경로), 디코더는 처음에 결정된 움직임 벡터 예측자를 사용한다.If the hybrid motion vector condition is not triggered (the 'no' path from decision step 3375), the decoder uses the initially determined motion vector predictor.

한편, 하이브리드 움직임 벡터 조건이 트리거되는 경우(결정 단계(3375)로부터의 '예' 경로), 디코더는 선택된 하이브리드 움직임 벡터 예측자를 가리키는 신 호를 수신 및 디코딩한다(단계 3380). 예를 들어, 디코더는 상부 후보 예측자 또는 좌측 후보 예측자가 움직임 벡터 예측자로서 사용될지를 가리키는 단일 비트를 가져온다. 다른 대안으로서, 디코더는 다른 시그널링 메카니즘과 관련하여 동작한다.On the other hand, when the hybrid motion vector condition is triggered (Yes path from decision 3375), the decoder receives and decodes a signal indicating the selected hybrid motion vector predictor (step 3380). For example, the decoder gets a single bit indicating whether the top candidate predictor or the left candidate predictor will be used as the motion vector predictor. As another alternative, the decoder operates in conjunction with other signaling mechanisms.

이어서, 디코더는 사용할 하이브리드 움직임 벡터 예측자를 선택한다(단계 3390). 예를 들어, 디코더는 이웃 움직임 벡터인 상부 후보 예측자와 좌측 후보 예측자 간에 선택한다. 다른 대안으로서, 디코더는 다른 및/또는 부가의 예측자를 선택한다.The decoder then selects a hybrid motion vector predictor to use (step 3390). For example, the decoder selects between the top candidate predictor and the left candidate predictor, which are neighboring motion vectors. As another alternative, the decoder selects other and / or additional predictors.

디코더는 (예를 들어, 매크로블록 유형에 따라) 인터레이스형 P-필드의 모든 움직임 벡터에 대해 또는 인터레이스형 P-필드의 어떤 움직임 벡터에 대해서만 기술(3350)을 수행한다. 간단함을 위해, 도 33b는 기술(3350)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.The decoder performs the description 3350 on all motion vectors of the interlaced P-field (eg, depending on the macroblock type) or only for certain motion vectors of the interlaced P-field. For simplicity, FIG. 33B does not represent various ways in which the technique 3350 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

VIIIVIII . 움직임 벡터 블록 패턴. Movement vector block pattern

어떤 실시예들에서, 매크로블록은 다수의 움직임 벡터를 가질 수 있다. 예를 들어, 혼합-MV 인터레이스형 P-필드의 매크로블록은 하나의 움직임 벡터, 4개의 움직임 벡터(매크로블록의 루미넌스 블록마다 하나씩)를 가지거나 인트라 코딩(움직임 벡터 없음)될 수 있다. 이와 유사하게, 인터레이스형 P-프레임의 필드-코딩된 매크로블록은 2개의 움직임 벡터(필드당 하나씩) 또는 4개의 움직임 벡터(필드 당 2개씩)을 가질 수 있으며, 인터레이스형 P-프레임의 프레임-코딩된 매크로블록은 하나의 움직임 벡터 또는 4개의 움직임 벡터(루미넌스 블록당 하나씩)를 가질 수 있다.In some embodiments, a macroblock can have multiple motion vectors. For example, a macroblock of a mixed-MV interlaced P-field may have one motion vector, four motion vectors (one for each luminance block of the macroblock) or may be intra coded (no motion vector). Similarly, a field-coded macroblock of an interlaced P-frame may have two motion vectors (one per field) or four motion vectors (two per field) and the frame- of an interlaced P-frame. A coded macroblock may have one motion vector or four motion vectors (one per luminance block).

2MV 또는 4MV 매크로블록은 매크로블록이 시그널링할 관련 움직임 벡터 데이터(예를 들어, 차분)를 갖지 않는 경우 "건너뜀(skipped)"으로서 시그널링될 수 있다. 그렇다면, 움직임 벡터 예측자는 일반적으로 매크로블록의 움직임 벡터로서 사용된다. 또는, 매크로블록은 하나의 움직임 벡터에 대해 시그널링할 영이 아닌 움직임 벡터 데이터를 가질 수 있지만, ((0, 0) 움직임 벡터 차분을 갖는) 다른 움직임 벡터에 대해서는 그렇지 않을 수 있다. 모두가 아니라 적어도 하나의 움직임 벡터에 대해 (0, 0) 차분을 갖는 2MV 또는 4MV 매크로블록의 경우, 움직임 벡터 데이터를 시그널링하는 것은 비효율적인 비트 수를 소비할 수 있다.A 2MV or 4MV macroblock may be signaled as “skipped” if the macroblock does not have associated motion vector data (eg, differential) to signal. If so, the motion vector predictor is generally used as the motion vector of the macroblock. Or, the macroblock may have non-zero motion vector data to signal for one motion vector, but not for other motion vectors (with (0, 0) motion vector difference). For 2MV or 4MV macroblocks with (0, 0) difference for at least one motion vector but not all, signaling motion vector data can consume an inefficient number of bits.

따라서, 어떤 실시예들에서, 인코더 및 디코더는 다수의 움직임 벡터를 갖는 매크로블록에 대한 움직임 벡터 데이터의 존재 여부를 효율적으로 시그널링하는 시그널링 메카니즘을 사용한다. 매크로블록에 대한 움직임 벡터 코딩된 블록 패턴(또는 간략히 "움직임 벡터 블록 패턴"이라 함)은 움직임 벡터별로 어느 블록, 필드, 필드의 절반, 기타 등등이 비트스트림으로 시그널링된 움직임 벡터 데이터를 갖는지 및 어느 것이 그렇지 않은지를 가리킨다. 움직임 벡터 블록 패턴은 매크로블록에 대한 움직임 벡터 데이터의 패턴을 공동으로 시그널링하며, 이는 인코더 및 디코더가 블록들 간에 존재하는 공간적 상관 관계를 이용할 수 있게 해준다. 게다가, 움직임 벡터 블록 패턴으로 움직임 벡터 데이터의 존재 여부를 시그널링하는 것은 이 정보를 시그널링하는 간단한 방식을 제공한다, 즉 (CBPCY 요소 등에서와 같이) 존재 여부 또는 변환 계수 데이터에 관하여 시그널링하는 것과 분리되어 있다.Thus, in some embodiments, the encoder and decoder use a signaling mechanism that efficiently signals the presence or absence of motion vector data for macroblocks having multiple motion vectors. The motion vector coded block pattern (or simply referred to as the "motion vector block pattern") for a macroblock is the motion vector per block, which block, field, half of the field, etc. has motion vector data signaled in the bitstream and which Indicates whether it is not. The motion vector block pattern jointly signals the pattern of motion vector data for the macroblock, which allows the encoder and decoder to take advantage of the spatial correlation that exists between the blocks. In addition, signaling the presence or absence of motion vector data in a motion vector block pattern provides a simple way to signal this information, i.e., separate from signaling about presence or transform coefficient data (as in a CBPCY element, etc.). .

이 섹션에 및 섹션 XII에서의 결합 구현에 기술된 시그널링의 구체적인 예는 가변 길이 코딩된 2MVBP 및 4MVBP 신택스 요소를 갖는 움직임 벡터 블록 패턴을 시그널링한다. 2MVBP 및 4MVBP에 대한 테이블 선택은 각각 고정 길이 코딩된 2MVBPTAB 및 4MVBPTAB 요소를 통해 시그널링된다. 다른 대안으로서, 인코더 및 디코더는 움직임 벡터 블록 패턴을 시그널링하기 위해 다른 및/또는 부가의 신호를 사용한다.Specific examples of signaling described in this section and in the joint implementation in section XII signal a motion vector block pattern with variable length coded 2MVBP and 4MVBP syntax elements. Table selection for 2MVBP and 4MVBP is signaled via fixed length coded 2MVBPTAB and 4MVBPTAB elements, respectively. As another alternative, the encoder and decoder use other and / or additional signals to signal the motion vector block pattern.

A. 움직임 벡터 블록 패턴A. Motion Vector Block Pattern

움직임 벡터 블록 패턴은 다수의 움직임 벡터를 갖는 매크로블록에 대해 어느 움직임 벡터가 "코딩되고" 어느 것이 "코딩되지 않은지"를 가리킨다. 움직임 벡터에 대한 차분 움직임 벡터가 영이 아닌 경우(즉, 시그널링될 움직임 벡터가 그의 움직임 벡터 예측자와 다른 경우), 그 움직임 벡터는 코딩된다. 그렇지 않은 경우, 움직임 벡터는 코딩되지 않는다.The motion vector block pattern indicates which motion vectors are "coded" and which are "uncoded" for macroblocks having multiple motion vectors. If the differential motion vector for the motion vector is not zero (ie, the motion vector to be signaled is different from its motion vector predictor), the motion vector is coded. Otherwise, the motion vector is not coded.

매크로블록이 4개의 움직임 벡터를 갖는 경우, 움직임 벡터 블록 패턴은, 4개의 움직임 벡터 각각에 대해 하나씩, 4 비트를 갖는다. 움직임 벡터 블록 패턴에서의 비트의 순서는 인터레이스형 P-필드에서의 4MV 매크로블록 또는 인터레이스형 P-프레임에서의 4MV 프레임-코딩된 매크로블록에 대해 도 34에 도시된 블록 순서를 따른다. 인터레이스형 P-프레임에서의 4MV 필드-코딩된 매크로블록의 경우, 움직임 벡터 블록 패턴의 비트 순서는 좌측 상부 필드 움직임 벡터, 우측 상부 필드 움직임 벡터, 좌측 하부 필드 움직임 벡터 및 우측 하부 필드 움직임 벡터이다.If the macroblock has four motion vectors, the motion vector block pattern has four bits, one for each of the four motion vectors. The order of the bits in the motion vector block pattern follows the block order shown in FIG. 34 for 4MV macroblocks in interlaced P-fields or 4MV frame-coded macroblocks in interlaced P-frames. For 4MV field-coded macroblocks in interlaced P-frames, the bit order of the motion vector block pattern is a left upper field motion vector, a right upper field motion vector, a left lower field motion vector, and a right lower field motion vector.

매크로블록이 2개의 움직임 벡터를 갖는 경우, 움직임 벡터 블록 패턴은, 2개의 움직임 벡터 각각에 대해 하나씩, 2 비트를 갖는다. 인터레이스형 P-프레임의 2MV 필드-코딩된 매크로블록의 경우, 움직임 벡터 블록 패턴의 비트 순서는 간단히 상부 필드 움직임 벡터, 이어서 하부 필드 움직임 벡터이다.If the macroblock has two motion vectors, the motion vector block pattern has two bits, one for each of the two motion vectors. For 2MV field-coded macroblocks of interlaced P-frames, the bit order of the motion vector block pattern is simply the upper field motion vector, followed by the lower field motion vector.

다수의 서로 다른 VLC 테이블 중 하나가 움직임 벡터 블록 패턴 요소를 시그널링하는 데 사용될 수 있다. 예를 들어, 4MVBP에 대한 4개의 서로 다른 코드 테이블이 도 47j에 도시되어 있으며, 2MVBP에 대한 4개의 서로 다른 코드 테이블이 도 47k에 도시되어 있다. 테이블 선택은 픽처 레벨에서 시그널링되는 4MVBPTAB 또는 2MVBPTAB 요소에 의해 표시된다. 다른 대안으로서, 인코더 및 디코더는 움직임 벡터 블록 패턴 정보 및 테이블 선택을 시그널링하기 위해 다른 및/또는 부가의 코드를 사용한다.One of a number of different VLC tables may be used to signal the motion vector block pattern element. For example, four different code tables for 4MVBP are shown in FIG. 47J, and four different code tables for 2MVBP are shown in FIG. 47K. Table selection is indicated by 4MVBPTAB or 2MVBPTAB elements signaled at the picture level. As another alternative, the encoder and decoder use other and / or additional code to signal motion vector block pattern information and table selection.

2 참조 필드 인터레이스형 P-필드의 매크로블록에 대해 어느 움직임 벡터가 코딩되는지를 결정하기 위해 부가의 규칙이 적용된다. 섹션 VI에 기술된 바와 같이, "코딩되지 않은" 움직임 벡터는 우세 예측자를 갖는다. "코딩된" 움직임 벡터는 영이 아닌 움직임 벡터 차분을 가질 수 있지만 비우세 예측자를 시그널링한다. 또는, "코딩된" 움직임 벡터는 영이 아니니 차분 움직임 벡터를 가지며 우세 또는 비우세 예측자를 시그널링할 수 있다.An additional rule is applied to determine which motion vector is coded for the macroblock of the two reference field interlaced P-field. As described in section VI, the "uncoded" motion vector has a dominant predictor. A "coded" motion vector may have a non-zero motion vector difference but signal a non-dominant predictor. Or, a "coded" motion vector may be nonzero and have a differential motion vector and signal a dominant or non-dominant predictor.

다른 대안으로서, 인코더 및 디코더는 다른 및/또는 부가의 종류의 픽처에 대한, 다른 및/또는 부가의 종류의 매크로블록에 대한, 다른 및/또는 부가의 개수의 움직임 벡터에 대한, 및/또는 다른 비트 패턴을 갖는 움직임 벡터 블록 패턴을 사용한다.As another alternative, the encoder and decoder may be used for other and / or additional kinds of pictures, for other and / or additional kinds of macroblocks, for other and / or additional numbers of motion vectors, and / or other A motion vector block pattern with a bit pattern is used.

B. 인코딩 기술B. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 움직임 벡터 블록 패턴을 사용하여 매크로블록에 대한 움직임 벡터 데이터를 인코딩한다. 예를 들어, 인코더는 도 35a에 도시된 기술(3500)을 수행한다.An encoder, such as encoder 2000 of FIG. 20, encodes motion vector data for a macroblock using a motion vector block pattern. For example, the encoder performs the technique 3500 shown in FIG. 35A.

다수의 움직임 벡터를 갖는 주어진 매크로블록의 경우, 인코더는 매크로블록에 대한 움직임 벡터 블록 패턴을 결정한다(단계 3510). 예를 들어, 인코더는 인터레이스형 P-필드에서의 4MV 매크로블록에 대한 또는 인터레이스형 P-프레임에서의 4MV 필드-코딩된 또는 프레임-코딩된 매크로블록에 대한 4 움직임 벡터 블록 패턴을 결정한다. 또는, 인코더는 인터레이스형 P-프레임에서의 2MV 필드-코딩된 매크로블록에 대한 2 움직임 벡터 블록 패턴을 결정한다. 다른 대안으로서, 인코더는 다른 종류의 매크로블록 및/또는 다른 개수의 움직임 벡터에 대한 움직임 벡터 블록 패턴을 결정한다.For a given macroblock with multiple motion vectors, the encoder determines a motion vector block pattern for the macroblock (step 3510). For example, the encoder determines a four motion vector block pattern for a 4MV macroblock in an interlaced P-field or for a 4MV field-coded or frame-coded macroblock in an interlaced P-frame. Or, the encoder determines two motion vector block patterns for 2MV field-coded macroblocks in interlaced P-frames. As another alternative, the encoder determines the motion vector block pattern for different kinds of macroblocks and / or other numbers of motion vectors.

이어서, 인코더는 움직임 벡터 블록 패턴을 시그널링한다(단계 3520). 일반적으로, 인코더는 도 47j 및 도 47k에 도시된 것 등의 코드 테이블을 사용하여 움직임 벡터 블록 패턴에 대한 VLC를 시그널링한다. 다른 대안으로서, 인코더는 움직임 벡터 블록 패턴을 시그널링하기 위해 다른 메카니즘을 사용한다.The encoder then signals a motion vector block pattern (step 3520). In general, the encoder signals the VLC for the motion vector block pattern using a code table such as those shown in FIGS. 47J and 47K. As another alternative, the encoder uses another mechanism to signal the motion vector block pattern.

움직임 벡터 데이터가 시그널링되어야 하는 적어도 하나의 움직임 벡터가 있 는 경우(결정 단계(3525)로부터의 "예" 경로), 인코더는 움직임 벡터에 대한 움직임 벡터 데이터를 시그널링한다(단계 3530). 예를 들어, 인코더는 섹션 IX에 설명된 기술을 사용하여 움직임 벡터 데이터를 BLKMVDATA, TOPMVDATA 또는 BOTMVDATA 요소로서 인코딩한다. 다른 대안으로서, 인코더는 다른 시그널링 기술을 사용한다.If there is at least one motion vector to which the motion vector data should be signaled (“Yes” path from decision 3525), the encoder signals the motion vector data for the motion vector (step 3530). For example, the encoder uses the technique described in section IX to encode motion vector data as BLKMVDATA, TOPMVDATA or BOTMVDATA elements. As another alternative, the encoder uses other signaling techniques.

인코더는 움직임 벡터 데이터가 시그널링되어야 하는 움직임 벡터가 더 이상 없을 때까지(결정 단계(3525)로부터의 "아니오" 경로) 움직임 벡터 데이터의 인코딩을 반복한다(단계 3525, 3530).The encoder repeats the encoding of the motion vector data until there are no more motion vectors for which the motion vector data should be signaled (“No” path from decision step 3525) (steps 3525 and 3530).

인코더는 움직임 벡터 블록 패턴을 인코딩하기 위해 다수의 코드 테이블 중에서 선택할 수 있다(도 35a에 도시되지 않음). 예를 들어, 인코더는 인터레이스형 P-필드 또는 P-프레임에 대한 코드 테이블을 선택하고, 이어서 픽처에서의 매크로블록에 대한 움직임 벡터 블록 패턴을 인코딩하기 위하여 그 테이블을 사용한다. 다른 대안으로서, 인코더는 더 빈번하게, 덜 빈번하게, 또는 비주기적으로 코드 테이블을 선택하거나, 인코더는 코드 테이블 선택을 완전히 건너뛴다(항상 동일한 코드 테이블을 사용한다). 또는, 인코더는 컨텍스트 정보로부터 코드 테이블을 선택할 수 있다(이는 코드 테이블 선택을 시그널링하는 것을 불필요하게 만든다). 코드 테이블은 도 47j 및 도 47k에 도시된 테이블, 다른 테이블 및/또는 부가의 테이블일 수 있다. 인코더는 예를 들어 선택된 코드 테이블을 가리키는 FLC로, 선택된 코드 테이블을 가리키는 VLC로, 또는 다른 시그널링 메카니즘으로, 선택된 코드 테이블을 비트스트림으로 시그널링한다.The encoder can select from a number of code tables to encode the motion vector block pattern (not shown in FIG. 35A). For example, the encoder selects a code table for an interlaced P-field or P-frame and then uses that table to encode a motion vector block pattern for a macroblock in a picture. As another alternative, the encoder selects the code table more frequently, less frequently, or aperiodically, or the encoder completely skips the code table selection (always using the same code table). Or, the encoder can select a code table from the context information (which makes it unnecessary to signal code table selection). The code table may be the table shown in FIGS. 47J and 47K, other tables and / or additional tables. The encoder signals the selected code table in a bitstream, for example, with an FLC pointing to the selected code table, with a VLC pointing with the selected code table, or with another signaling mechanism.

다른 대안으로서, 인코더는 움직임 벡터 블록 패턴을 사용하여 매크로블록에 대한 움직임 벡터 데이터를 인코딩하기 위해 다른 기술을 수행한다. 간단함을 위해, 도 35a는 기술(3500)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식들을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.As another alternative, the encoder performs another technique to encode motion vector data for the macroblock using the motion vector block pattern. For simplicity, FIG. 35A does not represent various ways in which technique 3500 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

C. 디코딩 기술C. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 움직임 벡터 블록 패턴을 사용하여 인터레이스형 P-필드 또는 인터레이스형 P-프레임의 매크로블록에 대한 움직임 벡터 데이터를 수신 및 디코딩한다. 예를 들어, 디코더는 도 35b에 도시된 기술(3550)을 수행한다.A decoder such as decoder 2100 of FIG. 21 receives and decodes motion vector data for a macroblock of an interlaced P-field or an interlaced P-frame using a motion vector block pattern. For example, the decoder performs the technique 3550 shown in FIG. 35B.

다수의 움직임 벡터를 갖는 주어진 매크로블록의 경우, 디코더는 매크로블록에 대한 움직임 벡터 블록 패턴을 수신 및 디코딩한다(단계 3560). 예를 들어, 디코더는 이전의 섹션에서 기술된 4 움직임 벡터 블록 패턴, 2 움직임 벡터 블록 패턴, 또는 다른 움직임 벡터 블록 패턴을 수신 및 디코딩한다. 일반적으로, 디코더는 움직임 벡터 블록 패턴에 대한 VLC를 수신하고 도 47j 및 도 47k에 도시된 것 등의 코드 테이블을 사용하여 이를 디코딩한다. 다른 대안으로서, 디코더는 다른 시그널링 메카니즘과 관련하여 움직임 벡터 블록 패턴을 수신 및 디코딩한다.For a given macroblock with multiple motion vectors, the decoder receives and decodes the motion vector block pattern for the macroblock (step 3560). For example, the decoder receives and decodes the four motion vector block pattern, two motion vector block pattern, or other motion vector block pattern described in the previous section. In general, the decoder receives the VLC for the motion vector block pattern and decodes it using a code table such as those shown in FIGS. 47J and 47K. As another alternative, the decoder receives and decodes the motion vector block pattern with respect to other signaling mechanisms.

움직임 벡터 데이터가 시그널링되는 적어도 하나의 움직임 벡터가 있는 경우(결정 단계(3565)로부터의 "예" 경로), 디코더는 움직임 벡터에 대한 움직임 벡터 데이터를 수신 및 디코딩한다(단계 3570). 예를 들어, 디코더는 인코딩된 움직 임 벡터 데이터를 수신하고 이를 섹션 IX에 설명된 기술을 사용하여 BLKMVDATA, TOPMVDATA 또는 BOTMVDATA 요소로서 디코딩한다. 다른 대안으로서, 디코더는 다른 디코딩 기술을 사용한다.If there is at least one motion vector for which the motion vector data is signaled (“Yes” path from decision step 3565), the decoder receives and decodes the motion vector data for the motion vector (step 3570). For example, the decoder receives the encoded motion vector data and decodes it as a BLKMVDATA, TOPMVDATA or BOTMVDATA element using the technique described in section IX. As another alternative, the decoder uses other decoding techniques.

디코더는 움직임 벡터 데이터가 시그널링되는 움직임 벡터가 더 이상 없을 때까지(결정 단계(3565)로부터의 "아니오" 경로) 움직임 벡터 데이터의 수신 및 디코딩을 반복한다(단계 3565, 3570).The decoder repeats the reception and decoding of the motion vector data until there are no more motion vectors for which the motion vector data is signaled (“No” path from decision step 3565) (steps 3565 and 3570).

디코더는 움직임 벡터 블록 패턴을 디코딩하기 위해 다수의 코드 테이블 중에서 선택할 수 있다(도 35b에 도시되지 않음). 예를 들어, 테이블 선택 및 테이블 선택 시그널링 옵션은 이전이 섹션에서의 인코더에 대해 기술한 것과 아주 흡사하다.The decoder may select from a number of code tables to decode the motion vector block pattern (not shown in FIG. 35B). For example, the table selection and table selection signaling options are very similar to what was previously described for the encoder in this section.

다른 대안으로서, 디코더는 움직임 벡터 블록 패턴을 사용하여 매크로블록에 대한 움직임 벡터 데이터를 디코딩하기 위해 다른 기술을 수행한다. 간단함을 위해, 도 35b는 기술(3550)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식들을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.As another alternative, the decoder performs another technique to decode the motion vector data for the macroblock using the motion vector block pattern. For simplicity, FIG. 35B does not represent various ways in which the technique 3550 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

IXIX . . 인터레이스형Interlaced P-필드에서의 움직임 벡터  Motion vector in P-field 차분Difference

어떤 실시예에서, 2개의 이전에 코딩된/디코딩된 필드는 단일의 현재의 인터레이스형 P-필드에 대한 움직임-보상된 예측을 수행할 때 참조 필드로서 사용된다(예를 들어, 섹션 IV, VI 및 VII를 참조할 것). P-필드에서의 움직임 벡터에 대해 시그널링된 정보는 (1) 2개의 필드 중 어느 것이 움직임 벡터에 대한 참조를 제공하는지, 및 (2) 움직임 벡터 값을 가리킨다. 움직임 벡터 값은 일반적으로 움직임 벡터 예측자에 대한 차분으로서 시그널링된다. 2개의 가능한 참조 필드 간의 선택은 움직임 벡터에 대한 단일의 부가 비트로 시그널링될 수 있지만, 그 시그널링 방식은 많은 경우에 비효율적이다. 보통, 이 2개의 참조 필드는 주어진 움직임 벡터에 대해 똑같이 가능성이 있는 것은 아니며 움직임 벡터에 대한 선택은 다른(예를 들어, 이웃) 움직임 벡터에 대한 선택과 독립적이지 않다. 따라서, 실제로, 선택마다 단일 비트로 참조 필드 선택을 시그널링하는 것은 보통 비효율적이다.In some embodiments, the two previously coded / decoded fields are used as reference fields when performing motion-compensated prediction for a single current interlaced P-field (eg, section IV, VI). And VII). The information signaled for the motion vector in the P-field indicates (1) which of the two fields provide a reference to the motion vector, and (2) the motion vector value. The motion vector value is generally signaled as a difference for the motion vector predictor. The selection between two possible reference fields can be signaled with a single additional bit for the motion vector, but the signaling scheme is inefficient in many cases. Normally, these two reference fields are not equally likely for a given motion vector and the choice for the motion vector is not independent of the choice for the other (eg neighbor) motion vectors. Thus, in practice, signaling a reference field selection with a single bit per selection is usually inefficient.

따라서, 어떤 실시예에서, 인코더는 움직임 벡터 차분 정보 및 참조 필드 선택 정보를 공동으로 인코딩한다. 디코더는 공동으로 코딩된 정보의 대응하는 디코딩을 수행한다.Thus, in some embodiments, the encoder jointly encodes motion vector difference information and reference field selection information. The decoder performs the corresponding decoding of the jointly coded information.

A. 이론 및 실험 결과A. Theory and Experimental Results

2 참조 필드 인터레이스형 P-필드의 경우, 2개의 참조 필드는 P-필드에 대해 이하의 공간적 및 시간적 관계를 따른다. 시간적 순서에서 가장 가까운 참조 필드의 극성은 현재의 P-필드의 극성과 반대이다. 예를 들어, 현재의 P-필드가 짝수 필드인 경우(인터레이스형 프레임의 짝수 라인들로 이루어진 경우), 시간적 순서에서 가장 가까운 참조 필드는 홀수 필드이고, 다른 참조 필드(시간적 순서에서 더 멀리 있는 필드)가 짝수 필드이다.Two Reference Fields For an interlaced P-field, the two reference fields follow the spatial and temporal relationship below for the P-field. The polarity of the closest reference field in the temporal order is opposite to the polarity of the current P-field. For example, if the current P-field is an even field (consisting of even lines in an interlaced frame), the nearest reference field in the temporal order is the odd field, and the other reference field (the field farther in the temporal order). ) Is an even field.

인코더 및 디코더는 인과적 정보(causal information)를 사용하여 현재의 움직임 벡터에 대한 참조 필드 선택을 예측한다. 예를 들어, 이웃하는 이전에 코딩 된 움직임 벡터로부터의 참조 필드 선택 정보는 현재의 움직임 벡터에 대해 사용되는 참조 필드를 예측하는 데 사용된다. 이어서, 이진 값은 예측된 참조 필드가 사용되는지 여부를 가리킨다. 한쪽 값은 현재의 움직임 벡터에 대한 실제 참조 필드가 예측된 참조 필드임을 가리키고, 다른쪽 값은 현재의 움직임 벡터에 대한 실제 참조 필드가 다른쪽 참조 필드임을 가리킨다. 어떤 구현에서, 참조 필드 예측은 현재의 움직임 벡터에 대한 이전에 사용된 참조 필드 및 예상된 참조 필드의 극성으로(예를 들어, 우세 또는 비우세 극성으로서, 섹션 VI 참조) 표현된다. 대부분의 시나리오에서, 이러한 예측에 있어서, 이진 값 참조 필드 선택자의 확률 분포는 일치하며(consistent) 예측된 참조 필드쪽으로 치우쳐있다(skewed). 실험에서, 예측된 참조 필드는 대략 70%의 움직임 벡터에 대해 사용되며, 대략 30%의 움직임 벡터는 다른쪽 참조 필드를 사용한다.The encoder and decoder use causal information to predict the reference field selection for the current motion vector. For example, reference field selection information from neighboring previously coded motion vectors is used to predict the reference field used for the current motion vector. The binary value then indicates whether the predicted reference field is used. One value indicates that the actual reference field for the current motion vector is the predicted reference field, and the other value indicates that the actual reference field for the current motion vector is the other reference field. In some implementations, the reference field prediction is represented by the polarity of the previously used reference field and the expected reference field for the current motion vector (eg, as dominant or non-dominant polarity, see section VI). In most scenarios, in this prediction, the probability distribution of the binary value reference field selector is consistent and skewed towards the predicted reference field. In the experiment, the predicted reference field is used for approximately 70% of the motion vector and approximately 30% of the motion vector uses the other reference field.

이러한 확률 분포를 갖는 참조 필드 선택 정보를 시그널링하기 위해 단일 비트를 전송하는 것은 효율적이지 않다. 보다 효율적인 방법은 참조 필드 선택 정보를 차분 움직임 벡터 정보와 공동으로 코딩하는 것이다.It is not efficient to send a single bit to signal reference field selection information with such probability distribution. A more efficient way is to code the reference field selection information jointly with the differential motion vector information.

B. B. 시그널링Signaling 메카니즘의Mechanism  Yes

움직임 벡터 차분 정보와 참조 필드 선택 정보를 공동으로 인코딩 및 디코딩하는 시그널링 메카니즘의 여러가지 예가 제공된다. 다른 대안으로서, 인코더 및 디코더는 다른 메카니즘과 관련하여 정보를 공동으로 인코딩 및 디코딩한다.Various examples of signaling mechanisms for jointly encoding and decoding motion vector difference information and reference field selection information are provided. As another alternative, the encoder and decoder jointly encode and decode the information in relation to other mechanisms.

도 36의 의사 코드는 일반화된 시그널링 메카니즘에 따라 움직임 벡터 차분 정보와 참조 필드 선택 정보를 공동으로 코딩하는 것을 나타낸 것이다. 이 의사 코드에서, 변수 DMVX 및 DMVY는 각각 수평 및 수직 차분 움직임 벡터 성분이다. 변수 AX 및 AY는 차분 성분의 절대값이고, 변수 SX 및 SY는 차분 성분의 부호이다. 수평 움직임 벡터 범위는 -RX에서 RX+1까지이며, 수직 움직임 벡터 범위는 -RY에서 RY+1까지이다. RX 및 RY는 각각 MX 및 MY의 지수를 갖는 2의 멱수이다. 변수 ESCX 및 ESCY(각각 KX 및 KY의 지수를 갖는 2의 멱수임)는 임계값을 가리키며 이를 넘으면 이스케이프 코딩(escape coding)이 사용된다. 변수 R은 참조 필드 선택을 위한 이진 값이다.The pseudo code of FIG. 36 illustrates jointly coding the motion vector difference information and the reference field selection information according to a generalized signaling mechanism. In this pseudo code, the variables DMVX and DMVY are horizontal and vertical differential motion vector components, respectively. Variables AX and AY are absolute values of the difference components, and variables SX and SY are the signs of the difference components. The horizontal motion vector range is from -RX to RX + 1, and the vertical motion vector range is from -RY to RY + 1. RX and RY are powers of two with exponents of MX and MY, respectively. The variables ESCX and ESCY (which are powers of two with exponents of KX and KY, respectively) indicate a threshold and beyond that, escape coding is used. The variable R is a binary value for reference field selection.

이스케이프 조건이 트리거되면(AX > ESCX 또는 AY > ESCY이면), 인코더는 이스케이프 모드 신호와 R을 공동으로 나타내는 VLC를 전송한다. 이어서, 인코더는 길이 MX+1 및 MY+1의 고정 길이 코드로서 각각 DMVX 및 DMVY를 전송한다. 따라서, VLC 테이블에서의 2개의 요소는 (1) DMVX 및 DMVY가 모두하여 (MX+MY+2) 비트를 사용하여 코딩되어 있음과, (2) 관련 R 값을 시그널링하는 데 사용된다. 환언하면, 2개의 요소는 R=0 및 R=1에 대응하는 이스케이프 코드이다.When an escape condition is triggered (if AX> ESCX or AY> ESCY), the encoder transmits an escape mode signal and a VLC that jointly represents R. The encoder then transmits DMVX and DMVY as fixed length codes of length MX + 1 and MY + 1, respectively. Thus, two elements in the VLC table are used to signal (1) both DMVX and DMVY are coded using the (MX + MY + 2) bits, and (2) the associated R values. In other words, the two elements are escape codes corresponding to R = 0 and R = 1.

다른 경우에, 변수 NX 및 NY는 각각 AX 및 AY의 서로 다른 값을 시그널링하는 데 몇 비트가 사용되는지를 가리킨다. AX는 구간(2NX <= AX < 2NX +1)에 있으며, 여기서 NX = 0, 1, 2, ..., KX-1 이고 NX = -1일 때 AX = 0 이다. AY는 구간(2NY <= AY < 2NY +1)에 있으며, 여기서 NY = 0, 1, 2, ..., KY-1 이고 NY = -1일 때 AY = 0 이다. In other cases, the variables NX and NY indicate how many bits are used to signal different values of AX and AY, respectively. AX is in the interval (2 NX <= AX <2 NX +1 ), where NX = 0, 1, 2, ..., KX-1 and AX = 0 when NX = -1. AY is in the interval 2 NY <= AY <2 NY +1 , where NY = 0, 1, 2, ..., KY-1 and AY = 0 when NY = -1.

크기 정보 NX 및 NY 및 필드 참조 정보 R을 코딩하는 데 사용되는 VLC 테이 블은 (KX+1) * (KY+1)*2 + 1개 요소의 테이블이며, 여기서 각각의 요소는 (코드 워드, 코드 크기) 쌍이다. 테이블 내의 요소 중에서, 2개를 제외한 모두는 NX, NY 및 R의 값을 공동으로 시그널링하는 데 사용된다. 나머지 2개의 요소는 이스케이프 코드이다.The VLC table used to code the size information NX and NY and the field reference information R is a table of (KX + 1) * (KY + 1) * 2 + 1 elements, where each element is a codeword, Code size) pairs. Of the elements in the table, all but two are used to jointly signal the values of NX, NY and R. The other two elements are escape codes.

NX 및 NY로 시그널링된 경우, 인코더는 NX, NY 및 R 값의 조합을 가리키는 VLC를 전송한다. 이어서, 인코더는 AX를 NX 비트로서 전송하고, SX를 1 비트로서 전송하며, AY를 NY 비트로서 전송하고, SY를 1 비트로서 전송한다. NX가 0 또는 -1인 경우, AX는 전송될 필요가 없으며, NY 및 AY에 대해서도 마찬가지인데, 그 이유는 AX 또는 AY의 값이 이 경우에 NX 또는 NY로부터 직접 도출될 수 있기 때문이다.If signaled with NX and NY, the encoder sends a VLC indicating the combination of NX, NY and R values. The encoder then sends AX as NX bits, sends SX as 1 bit, sends AY as NY bits, and sends SY as 1 bit. If NX is 0 or -1, AX does not need to be transmitted, and so is for NY and AY, since the value of AX or AY can be derived directly from NX or NY in this case.

AX = 0, AY = 0 및 R = 0인 경우는 매크로블록 건너뜀(skip macroblock) 메카니즘 또는 움직임 벡터 블록 패턴(섹션 VIII 참조) 등의 다른 메카니즘에 의해 시그널링된다. [0,0,0] 요소는 도 36의 의사 코드에 대한 VLC 테이블에 존재하지도 의사 코드에 언급되지도 않는다.The case where AX = 0, AY = 0 and R = 0 is signaled by other mechanisms, such as a skip macroblock mechanism or a motion vector block pattern (see section VIII). The [0,0,0] element is neither present in the VLC table for the pseudo code of FIG. 36 nor mentioned in the pseudo code.

대응하는 디코더는 도 36에 도시한 인코딩과 아주 흡사한 공동 디코딩을 수행한다. 예를 들어, 디코더는 비트를 전송하지 않고 비트를 수신하며, 가변 길이 인코딩 대신에 가변 길이 디코딩을 수행하며, 기타 마찬가지이다.The corresponding decoder performs joint decoding much like the encoding shown in FIG. For example, the decoder receives the bits without transmitting the bits, performs variable length decoding instead of variable length encoding, and so on.

도 50의 의사 코드는 한 결합 구현에서 시그널링 메카니즘에 따라 공동으로 코딩되어 있는 움직임 벡터 차분 정보 및 참조 필드 선택 정보의 디코딩을 나타낸 것이다. 도 59의 의사 코드는 다른 결합 구현에서 시그널링 메카니즘에 따라 공동 으로 코딩되어 있는 움직임 벡터 차분 정보 및 참조 필드 선택 정보의 디코딩을 나타낸 것이다. 도 50 및 도 59의 의사 코드는 섹션 VII에 상세히 설명되어 있다. 상세하게는, 이 의사 코드는 수직 차분값으로 또는 수직 및 수평 차분값의 크기로 예측 선택자를 공동으로 코딩 및 디코딩하는 것을 나타낸 것이다.The pseudo code of FIG. 50 illustrates the decoding of motion vector difference information and reference field selection information that are jointly coded according to a signaling mechanism in one combined implementation. The pseudo code of FIG. 59 illustrates decoding of motion vector difference information and reference field selection information that are jointly coded according to a signaling mechanism in another combined implementation. The pseudo code of FIGS. 50 and 59 is described in detail in section VII. Specifically, this pseudo code illustrates jointly coding and decoding the prediction selector with vertical difference values or with magnitude of vertical and horizontal difference values.

대응하는 인코더는 도 50 또는 도 59에 도시한 디코딩과 아주 흡사한 공동 인코딩을 수행한다. 예를 들어, 인코더는 비트를 수신하는 대신에 비트를 전송하고, 가변 길이 디코딩 대신에 가변 길이 인코딩을 수행하며, 기타 마찬가지이다.The corresponding encoder performs joint encoding much like the decoding shown in FIG. 50 or 59. For example, the encoder transmits bits instead of receiving bits, performs variable length encoding instead of variable length decoding, and so on.

C. 인코딩 기술C. Encoding Technology

도 20의 인코더(2000) 등의 인코더는 참조 필드 예측 선택자 정보 및 차분 움직임 벡터 정보를 공동으로 코딩한다. 예를 들어, 인코더는 정보를 공동으로 인코딩하기 위해 도 37a에 도시된 기술(3700)을 수행한다. 일반적으로, 인코더는 움직임 벡터 및 참조 필드를 획득하기 위해 2개의 참조 필드에서 어떤 형태의 움직임 추정을 수행한다. 이어서, 기술(3700)에 따라 움직임 벡터가 코딩되며, 이 시점에서 선택자 정보를 예를 들어 수직 움직임 벡터 차분과 공동으로 코딩함으로써 2개의 가능한 참조 필드 중 하나가 움직임 벡터와 연관된다.An encoder such as encoder 2000 of FIG. 20 jointly codes reference field prediction selector information and differential motion vector information. For example, the encoder performs the technique 3700 shown in FIG. 37A to jointly encode the information. In general, the encoder performs some form of motion estimation on two reference fields to obtain a motion vector and a reference field. A motion vector is then coded according to the description 3700, at which point one of the two possible reference fields is associated with the motion vector by jointly coding the selector information with, for example, a vertical motion vector difference.

인코더는 움직임 벡터에 대한 움직임 벡터 예측자를 결정한다(단계 3710). 예를 들어, 인코더는 섹션 XII에 기술된 바와 같이 움직임 벡터 예측자를 결정한다. 다른 대안으로서, 인코더는 다른 메카니즘으로 움직임 벡터 예측자를 결정한다.The encoder determines a motion vector predictor for the motion vector (step 3710). For example, the encoder determines the motion vector predictor as described in section XII. As another alternative, the encoder determines the motion vector predictor by another mechanism.

인코더는 움직임 벡터 예측자에 대한 움직임 벡터의 움직임 벡터 차분을 결 정한다(단계 3720). 일반적으로, 이 차분은 움직임 벡터와 움직임 벡터 예측자 간의 성분별 차이를 말한다.The encoder determines the motion vector difference of the motion vector for the motion vector predictor (step 3720). In general, this difference refers to the component-specific difference between the motion vector and the motion vector predictor.

인코더는 또한 참조 필드 예측 선택자 정보를 결정한다(단계 3730). 예를 들어, 인코더는 움직임 벡터에 대한 우세 및 비우세 극성(따라서, 움직임 벡터 예측자에 대한 우세 참조 필드, 우세 극성, 기타 등등, 섹션 VI를 참조)을 결정하며, 이 경우, 선택자는 우세 극성이 사용되는지 여부를 가리킨다. 다른 대안으로서, 인코더는 참조 필드 예측 선택자 정보를 결정하기 위해 다른 기술을 사용한다. 예를 들어, 인코더는 다른 유형의 참조 필드 예측을 사용한다.The encoder also determines reference field prediction selector information (step 3730). For example, the encoder determines the dominant and non-dominant polarity for the motion vector (thus see section VI for the dominant reference field, dominant polarity, etc., for the motion vector predictor), in which case the selector is the dominant polarity. Indicates whether this is used. As another alternative, the encoder uses another technique to determine the reference field prediction selector information. For example, the encoder uses other types of reference field prediction.

이어서, 인코더는 움직임 벡터에 대한 움직임 벡터 차분 정보 및 참조 필드 예측 선택자 정보를 공동으로 코딩한다(단계 3740). 예를 들어, 인코더는 이전 섹션에서 설명한 메카니즘들 중 하나를 사용하여 정보를 인코딩한다. 다른 대안으로서, 인코더는 다른 메카니즘을 사용한다.The encoder then jointly codes motion vector difference information and reference field prediction selector information for the motion vector (step 3740). For example, the encoder encodes information using one of the mechanisms described in the previous section. As another alternative, the encoder uses a different mechanism.

간단함을 위해, 도 37a는 기술(3700)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 37A does not represent various ways in which the technology 3700 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

D. 디코딩 기술D. Decoding Technology

도 21의 디코더(2100) 등의 디코더는 공동으로 코딩된 참조 필드 예측 선택자 정보 및 차분 움직임 벡터 정보를 디코딩한다. 예를 들어, 디코더는 이러한 공동으로 코딩된 정보를 디코딩하기 위해 도 37b에 도시된 기술(3760)을 수행한다. A decoder such as decoder 2100 of FIG. 21 decodes jointly coded reference field prediction selector information and differential motion vector information. For example, the decoder performs the technique 3760 shown in FIG. 37B to decode this jointly coded information.

디코더는 움직임 벡터에 대한 공동으로 코딩된 움직임 벡터 차분 정보 및 참 조 필드 예측 선택자 정보를 디코딩한다(단계 3760). 예를 들어, 디코더는 섹션 IX.B에 기술된 메카니즘 중 하나를 사용하여 시그널링된 정보를 디코딩한다. 다른 대안으로서, 디코더는 다른 메카니즘을 사용하여 시그널링된 정보를 디코딩한다.The decoder decodes the jointly coded motion vector difference information and reference field prediction selector information for the motion vector (step 3760). For example, the decoder decodes the signaled information using one of the mechanisms described in section IX.B. As another alternative, the decoder decodes the signaled information using another mechanism.

이어서, 디코더는 움직임 벡터에 대한 움직임 벡터 예측자를 결정한다(단계 3770). 예를 들어, 디코더는 움직임 벡터에 대한 우세 및 비우세 극성(섹션 VI 참조)을 결정하고, 선택자 정보를 적용하며, 섹션 VII에 기술된 바와 같이 선택된 극성에 대한 움직임 벡터 예측자를 결정한다. 다른 대안으로서, 디코더는 움직임 벡터 예측자를 결정하기 위해 다른 메카니즘을 사용한다. 예를 들어, 디코더는 다른 유형의 참조 필드 예측을 사용한다.The decoder then determines a motion vector predictor for the motion vector (step 3770). For example, the decoder determines the dominant and non-dominant polarity (see section VI) for the motion vector, applies selector information, and determines the motion vector predictor for the selected polarity as described in section VII. As another alternative, the decoder uses another mechanism to determine the motion vector predictor. For example, the decoder uses another type of reference field prediction.

마지막으로, 디코더는 움직임 벡터 차분을 움직임 벡터 예측자와 합성함으로써 움직임 벡터를 재구성한다(3780).Finally, the decoder reconstructs the motion vector by combining the motion vector difference with the motion vector predictor (3780).

간단함을 위해, 도 37b는 기술(3750)이 디코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 37B does not represent various ways in which the technique 3750 may be integrated with decoding and other aspects of decoding. Various combined implementations are described in detail in section XII.

X. X. 인터레이스형Interlaced P-필드에서의  In P-field 크로마Chroma 움직임 벡터의 도출 Derivation of the Motion Vector

어떤 실시예들에서, 인코더 및 디코더는 인터레이스형 P-필드의 매크로블록에 대해 시그널링된 루마 움직임 벡터로부터 크로마 움직임 벡터를 도출한다. 크로마 움직임 벡터는 비트스트림으로 명시적으로 시그널링되지 않는다. 오히려, 크로마 움직임 벡터는 매크로블록에 대한 루마 움직임 벡터로부터 결정된다. 인코더 및 디코더는 순차 P-프레임 또는 인터레이스형 P-프레임에 적합하게 되어 있는 크로마 움직임 벡터 도출을 사용할 수 있지만, 이것은 일반적으로 인터레이스형 P-필드에 대해 부적합한 성능을 제공한다. 따라서, 인코더 및 디코더는 인터레이스형 P-필드의 참조 필드 구성에 적합하게 되어 있는 크로마 움직임 벡터 도출을 사용한다.In some embodiments, the encoder and decoder derive the chroma motion vector from the luma motion vector signaled for the macroblock of the interlaced P-field. Chroma motion vectors are not explicitly signaled in the bitstream. Rather, the chroma motion vector is determined from the luma motion vector for the macroblock. Encoders and decoders can use chroma motion vector derivation, which is adapted for sequential P-frames or interlaced P-frames, but this generally provides inadequate performance for interlaced P-fields. Thus, the encoder and decoder use chroma motion vector derivation, which is adapted to the reference field configuration of interlaced P-fields.

크로마 움직임 벡터 도출은 2 단계, 즉 (1) 선택 단계, 및 (2) 서브-샘플링 및 크로마 반올림(chroma rounding) 단계를 갖는다. 이들 단계 중에서, 선택 단계가 특히 인터레이스형 P-필드에서의 크로마 움직임 벡터 도출에 적합하게 되어 있다. 선택 단계의 출력은 매크로블록에 대한 루마 움직임 벡터의 개수(및 아마도 극성)에 의존하는 초기 크로마 움직임 벡터이다. 매크로블록에 대해 루마 움직임이 사용되지 않는 경우(인트라 매크로블록인 경우), 크로마 움직임 벡터가 도출되지 않는다. 매크로블록에 대해 단일의 루마 움직임 벡터가 사용되는 경우(1MV 매크로블록인 경우), 두번째 및 세번째 단계에서 사용하기 위해 단일의 루마 움직임 벡터가 선택된다. 매크로블록에 대해 4개의 루마 움직임 벡터가 사용되는 경우(4MV 매크로블록인 경우), 초기 크로마 움직임 벡터는 4개의 루마 움직임 벡터 중에서 보다 통상적인 극성을 선호하는 논리를 사용하여 선택된다.Chroma motion vector derivation has two stages: (1) selection, and (2) sub-sampling and chroma rounding. Among these steps, the selection step is particularly suitable for chroma motion vector derivation in an interlaced P-field. The output of the selection phase is an initial chroma motion vector that depends on the number (and possibly polarity) of the luma motion vectors for the macroblock. If no luma motion is used for the macroblock (intra macroblock), no chroma motion vector is derived. If a single luma motion vector is used for the macroblock (1MV macroblock), a single luma motion vector is selected for use in the second and third steps. If four luma motion vectors are used for the macroblock (4MV macroblock), the initial chroma motion vector is selected using logic that prefers the more common polarity of the four luma motion vectors.

A. A. 크로마Chroma 서브-샘플링 및 움직임 벡터 표현 Sub-Sampling and Motion Vector Representation

인터레이스형 P-필드의 매크로블록에 대한 크로마 움직임 벡터 도출은 매크로블록에 대해 사용되는 크로마 서브-샘플링의 유형에 또한 움직임 벡터 표현에 의존한다.Chroma motion vector derivation for a macroblock of an interlaced P-field also depends on the type of chroma sub-sampling used for the macroblock and also on the motion vector representation.

어떤 통상의 크로바 서브-샘플링 포맷은 4:2:0 및 4:1:1이다. 도 38은 YUV 4:2:0 매크로블록에 대한 샘플링 그리드를 나타낸 것이며, 이에 따라 크로마 샘플은 정규의 4:1 패턴에서의 루마 샘플에 대해 서브-샘플링된다. 도 38은 4개의 8x8 루마 블록, 하나의 8x8 크로마 "U" 블록, 및 하나의 8x8 크로마 "V" 블록(도 22에 나타낸 것 등)을 갖는 16x16 매크로블록에 대한 루마 샘플과 크로마 샘플 간의 공간적 관계를 나타낸 것이다. 일반적으로, 크로마 그리드의 해상도는 x 및 y 방향 둘다에서 루마 그리드의 해상도의 1/2이며, 이는 크로마 움직임 벡터 도출에서의 다운샘플링을 위한 기초이다. 루마 그리드에 대한 움직임 벡터 거리를 크로마 그리드 상에서의 대응하는 거리로 스케일링하기 위해, 움직임 벡터 값이 2로 나누어진다. 본 명세서에 기술된 선택 단계 기술은 YUV 4:2:0 매크로블록에 또는 다른 크로마 서브-샘플링 포맷을 갖는 매크로블록에 적용될 수 있다.Some conventional Clova sub-sampling formats are 4: 2: 0 and 4: 1: 1. 38 shows a sampling grid for a YUV 4: 2: 0 macroblock, whereby chroma samples are sub-sampled for luma samples in a normal 4: 1 pattern. 38 shows the spatial relationship between luma and chroma samples for a 16x16 macroblock with four 8x8 luma blocks, one 8x8 chroma "U" block, and one 8x8 chroma "V" block (as shown in FIG. 22). It is shown. In general, the resolution of the chroma grid is 1/2 of the resolution of the luma grid in both the x and y directions, which is the basis for downsampling in chroma motion vector derivation. In order to scale the motion vector distance for the luma grid to the corresponding distance on the chroma grid, the motion vector value is divided by two. The selection step technique described herein may be applied to YUV 4: 2: 0 macroblocks or to macroblocks having other chroma sub-sampling formats.

인터레이스형 P-필드에 대한 루마 및 크로마 움직임 벡터의 표현은 부분적으로 움직임 벡터 및 움직임 보상의 정밀도에 의존한다. 일반적인 움직임 벡터 정밀도는 1/2 픽셀 및 1/4 픽셀이며, 이는 각각 움직임 보상에서 1/2 픽셀 및 1/4 픽셀 보간을 처리한다.The representation of luma and chroma motion vectors for interlaced P-fields depends in part on the precision of the motion vectors and motion compensation. Typical motion vector precision is 1/2 pixel and 1/4 pixel, which handles half pixel and quarter pixel interpolation in motion compensation respectively.

어떤 실시예에서, 인터레이스형 P-필드에 대한 움직임 벡터는 상부 또는 하부, 또는 동일 또는 반대 극성의 참조 필드를 참조할 수 있다. 움직임 벡터 값에 의해 지정되는 수직 변위는 현재의 P-필드 및 참조 필드의 극성에 의존한다. 움직임 벡터 단위는 일반적으로 필드 픽처 단위로 표현된다. 예를 들어, 움직임 벡터의 수직 성분이 +6(단위: 1/4 픽셀)인 경우, 이것은 일반적으로 1½ 필드 픽처 라 인의 수직 변위를 가리킨다(필요한 경우, 현재의 P-필드 및 참조 필드의 서로 다른 극성에 대한 조정 이전).In some embodiments, the motion vector for an interlaced P-field may refer to a reference field of upper or lower, or of the same or opposite polarity. The vertical displacement specified by the motion vector value depends on the polarity of the current P-field and the reference field. The motion vector unit is generally expressed in field picture units. For example, if the vertical component of the motion vector is +6 (in 1/4 pixels), this generally indicates the vertical displacement of the 1½ field picture line (if necessary, different from the current P-field and the reference field). Before adjustment for polarity).

여러가지 수직 움직임 벡터 성분 값 및 필드 극성의 조합의 경우, 도 39는 제1 규약에 따른 현재 및 참조 필드에서의 대응하는 공간적 위치를 나타낸 것이다. 필드 극성의 각 조합은 한쌍의 열을 갖는다, 즉 하나(좌측 열)는 현재 필드 내의 라인들(N=0, 1, 2, 등으로 번호가 매겨진 라인)에 대한 픽셀을 위한 것이고 다른 하나(우측 열)는 참조 필드 내의 라인들(역시, N=0, 1, 2, 등으로 번호가 매겨진 라인)에 대한 픽셀을 위한 것이다. 원은 정수 픽셀 위치에서의 샘플을 나타내고, X는 서브-픽셀 위치에서의 보간된 샘플을 나타낸다. 이 규약에서, 0의 수직 움직임 벡터 성분값은 참조 필드에서의 정수 픽셀 위치(즉, 실제 라인 상의 샘플)를 참조한다. 현재 필드 및 참조 필드가 동일한 극성을 갖는 경우, 현재 필드의 라인 N으로부터의 수직 성분값은 프레임에서 동일한 실제 오프셋에 있는 참조 필드에서의 라인 N을 참조한다. 현재 필드 및 참조 필드가 반대 극성을 갖는 경우, 현재 필드 내의 라인 N으로부터의 0의 수직 성분값은 여전히 참조 프레임 내의 라인 N을 참조하지만, 참조된 위치는 홀수 및 짝수 라인의 인터레이싱으로 인해 프레임에서 ½-픽셀 실제 오프셋에 있다.For the combination of various vertical motion vector component values and field polarities, FIG. 39 shows the corresponding spatial positions in the current and reference fields according to the first protocol. Each combination of field polarities has a pair of columns, ie one (left column) is for the pixel for the lines in the current field (lines numbered N = 0, 1, 2, etc.) and the other (right Column) is for the pixel for the lines in the reference field (also, lines numbered N = 0, 1, 2, etc.). Circles represent samples at integer pixel positions and X represents interpolated samples at sub-pixel positions. In this convention, a vertical motion vector component value of zero refers to an integer pixel position in the reference field (ie, a sample on the actual line). If the current field and the reference field have the same polarity, the vertical component value from line N of the current field refers to line N in the reference field at the same actual offset in the frame. If the current field and the reference field have opposite polarities, the vertical component value of zero from line N in the current field still refers to line N in the reference frame, but the referenced position is in the frame due to the interlacing of odd and even lines. It is at a ½-pixel actual offset.

도 48은 제2 규약에 따른 현재 및 참조 필드에서의 대응하는 공간적 위치를 나타낸다. 이 규약에서, 0의 수직 움직임 벡터 성분값은 인터레이스형 프레임에서의 동일한 실제 오프셋에 있는 샘플을 참조한다. 참조된 샘플은 동일 극성 참조 필드에서의 정수 픽셀 위치에 또는 반대 참조 필드에서의 ½-픽셀 위치에 있다.48 shows a corresponding spatial position in the current and reference field according to the second protocol. In this protocol, a vertical motion vector component value of zero refers to a sample at the same actual offset in an interlaced frame. The referenced sample is at an integer pixel position in the same polarity reference field or at a ½-pixel position in the opposite reference field.

다른 대안으로서, 인터레이스형 P-필드에 대한 움직임 벡터는 다른 표현을 사용하고 및/또는 극성에 대한 수직 변위를 처리하기 위한 다른 규약을 따른다.As another alternative, the motion vectors for the interlaced P-fields use different representations and / or follow different conventions for handling vertical displacements with respect to polarity.

B. 선택 단계 예B. Example Selection Steps

어떤 실시예에서, 크로마 움직임 벡터 도출의 선택 단계는 하나 또는 2개의 참조 필드를 갖는 인터레이스형 P-필드에 대한 움직임 보상에서 사용되는 참조 필드 패턴에 적합하게 되어 있다. 예를 들어, 매크로블록에 대한 선택 단계의 결과는 매크로블록에 대한 루마 움직임 벡터의 개수 및 극성에 의존한다.In some embodiments, the selecting step of chroma motion vector derivation is adapted to the reference field pattern used in motion compensation for interlaced P-fields with one or two reference fields. For example, the result of the selection step for the macroblock depends on the number and polarity of the luma motion vectors for the macroblock.

가장 간단한 경우는 전체 매크로블록이 인트라 코딩되어 있을 때이다. 이 경우에, 크로마 움직임 벡터가 없으며, 크로마 움직임 벡터 도출의 두번째 및 세번째 단계가 생략된다. 매크로블록의 크로마 블록은 인트라코딩/디코딩되며, 움직임 보상되어 있지 않다.The simplest case is when the entire macroblock is intra coded. In this case, there is no chroma motion vector, and the second and third steps of chroma motion vector derivation are omitted. Chroma blocks of macroblocks are intracoded / decoded and not motion compensated.

그 다음으로 가장 간단한 경우는 매크로블록이 4개의 루마 블록 모두에 대해 단일의 루마 움직임 벡터를 가질 때이다. 현재의 P-필드가 하나의 참조 필드 또는 2개의 참조 필드를 갖는지에 상관없이, 그 자체로서 선택 동작이 없는데, 그 이유는 단일의 루마 움직임 벡터가 단순히 반올림 및 서브-샘플링으로 넘겨지기 때문이다.The next simplest case is when a macroblock has a single luma motion vector for all four luma blocks. Regardless of whether the current P-field has one reference field or two reference fields, there is no selection operation on its own because a single luma motion vector is simply passed on rounding and sub-sampling.

매크로블록이 최대 4개의 루마 움직임 벡터를 갖는 경우, 선택 단계가 더 복잡하다. 일반적으로, 선택 단계는 매크로블록의 루마 움직임 벡터 중에서 우세 극성을 선호한다. P-필드가 단지 하나의 참조 필드를 갖는 경우, 극성은 매크로블록에 대한 모든 루마 움직임 벡터에 대해 동일하다. 그렇지만, P-필드가 2개의 참조 필드를 갖는 경우, 매크로블록의 서로 다른 루마 움직임 벡터는 서로 다른 참조 필드를 가리킬 수 있다. 예를 들어, 현재 P-필드의 극성이 홀수인 경우, 매크로블록은 2개의 반대 극성 루마 움직임 벡터(짝수 극성 참조 필드를 참조함) 및 2개의 동일 극성 루마 움직임 벡터(홀수 극성 참조 필드를 참조함)를 가질 수 있다. 인코더 또는 디코더는 매크로블록의 루마 움직임 벡터에 대한 우세 극성을 결정하고 우세 극성의 루마 움직임 벡터로부터 초기의 크로마 움직임 벡터를 결정한다.If the macroblock has up to four luma motion vectors, the selection step is more complicated. In general, the selection step favors dominant polarity among the luma motion vectors of the macroblock. If the P-field has only one reference field, the polarity is the same for all luma motion vectors for the macroblock. However, if the P-field has two reference fields, different luma motion vectors of the macroblock may point to different reference fields. For example, if the polarity of the current P-field is odd, the macroblock refers to two opposite polar luma motion vectors (see even polar reference field) and two equal polar luma motion vectors (odd polar reference field). ) The encoder or decoder determines the dominant polarity for the luma motion vector of the macroblock and determines the initial chroma motion vector from the luma motion vector of the dominant polarity.

어떤 구현에서, 4MV 매크로블록은 0 내지 4개의 움직임 벡터를 갖는다. 이러한 4MV 매크로블록의 루마 블록은 인트라 코딩되어 있거나, 관련된 동일 극성 루마 움직임 벡터를 갖거나, 또는 관련 동일 극성 루마 움직임 벡터를 갖는다. 다른 구현에서, 4MV 매크로블록은 이들 중 어느 것이 시그널링되지 않더라도(예를 들어, 왜냐하면 이들이 (0,0) 차분을 갖기 때문임) 항상 4개의 루마 움직임 벡터를 갖는다. 이러한 4MV 매크로블록의 루마 블록은 반대 극성 움직임 벡터 또는 동일 극성 움직임 벡터를 갖는다. 선택 단계 논리는 이들 다른 구현의 경우 약간 다르다.In some implementations, a 4MV macroblock has 0-4 motion vectors. The luma block of this 4MV macroblock is intra coded, has an associated equal polar luma motion vector, or has an associated equal polar luma motion vector. In another implementation, a 4MV macroblock always has four luma motion vectors even if none of them are signaled (eg because they have a (0,0) difference). The luma block of this 4MV macroblock has the opposite polarity motion vector or the same polarity motion vector. The selection step logic is slightly different for these other implementations.

1. 0 내지 4개의 1. 0 to 4 루마Luma 움직임 벡터를 갖는 4 4 with motion vectors MVMV 매크로블록 Macroblock

도 40의 의사 코드는 0 내지 4개의 루마 움직임 벡터를 갖는 4MV 매크로블록에 대해 적용되는 선택 단계 논리의 한 예를 나타낸 것이다. 루마 움직임 벡터 중에서, 동일 극성 참조 필드를 참조하는 루마 움직임 벡터의 개수가 반대 극성 참조 필드를 참조하는 개수보다 많은 경우, 인코더/디코더는 동일 극성 참조 필드를 참조하는 루마 움직임 벡터로부터 초기의 크로마 움직임 벡터를 도출한다. 그렇지 않은 경우, 인코더/디코더는 반대 극성 참조 필드를 참조하는 루마 움직임 벡터로 부터 초기 크로마 움직임 벡터를 도출한다.The pseudo code of FIG. 40 shows an example of selection step logic applied for a 4MV macroblock with 0-4 luma motion vectors. Among the luma motion vectors, if the number of luma motion vectors referring to the same polarity reference field is greater than the number referring to the opposite polarity reference field, the encoder / decoder is the initial chroma motion vector from the luma motion vector referring to the same polarity reference field. To derive Otherwise, the encoder / decoder derives the initial chroma motion vector from the luma motion vector referring to the opposite polarity reference field.

4개의 루마 움직임 벡터가 우세 극성을 갖는 경우(예를 들어, 모두 홀수 참 또는 모두 짝수 참조 필드인 경우), 인코더/디코더는 4개의 루마 움직임 벡터의 메디안을 계산한다. 단지 3개의 루마 움직임 벡터가 우세 극성을 갖는 경우(예를 들어, 하나의 루마 블록이 인트라이거나 비우세 극성 움직임 벡터를 갖기 때문임), 인코더/디코더는 3개의 루마 움직임 벡터의 메디안을 계산한다. 2개의 루마 움직임 벡터가 우세 극성을 갖는 경우, 인코더/디코더는 2개의 루마 움직임 벡터의 평균을 계산한다. (동일 극성 개수와 반대 극성 개수가 같은 경우, (현재 P-필드와) 동일한 극성이 선호된다.) 마지막으로, 우세 극성의 루마 움직임 벡터가 단지 하나 있는 경우(예를 들어, 3개의 루마 블록이 인트라이기 때문임), 하나의 루마 움직임 벡터가 선택 단계의 출력으로서 취해진다. 모든 루마 블록이 인트라인 경우, 매크로블록은 인트라이고, 도 40의 의사 코드가 적용되지 않는다.If the four luma motion vectors have a dominant polarity (eg, all are odd true or all even reference fields), the encoder / decoder calculates the median of the four luma motion vectors. If only three luma motion vectors have a dominant polarity (eg, because one luma block is intra or has a non-dominant polar motion vector), the encoder / decoder calculates the median of the three luma motion vectors. If the two luma motion vectors have a dominant polarity, the encoder / decoder calculates the average of the two luma motion vectors. (If the same polarity count is the same as the opposite polarity count, then the same polarity is preferred (as in the current P-field).) Finally, if there is only one luma motion vector of the dominant polarity (e.g. three luma blocks One luma motion vector is taken as the output of the selection step. If all luma blocks are intra, the macroblock is intra and the pseudo code of FIG. 40 does not apply.

2. 4개의 2. 4 루마Luma 움직임 벡터를 갖는 4 4 with motion vectors MVMV 매크로블록 Macroblock

도 55a 및 도 55b의 의사 코드는 항상 4개의 루마 움직임 벡터를 갖는(예를 들어, 인트라 코딩된 루마 블록이 허용되지 않기 때문임) 4MV 매크로블록에 대해 적용되는 선택 단계 논리의 다른 예를 나타낸 것이다. 도 55a는 1 참조 필드 인터레이스형 P-필드에서의 이러한 4MV 매크로블록에 대한 크로마 움직임 벡터 도출에 관한 것이고, 도 55b는 2 참조 필드 인터레이스형 P-필드에서의 이러한 4MV 매크로블록에 대한 크로마 움직임 벡터 도출에 관한 것이다.55A and 55B show another example of selection step logic applied for a 4MV macroblock that always has four luma motion vectors (eg, because intra coded luma blocks are not allowed). . 55A relates to chroma motion vector derivation for this 4MV macroblock in a 1 reference field interlaced P-field, and FIG. 55B illustrates chroma motion vector derivation for such 4MV macroblock in a 2 reference field interlaced P-field. It is about.

도 55b를 참조하면, 인코더/디코더는 4MV 매크로블록의 4개의 루마 움직임 벡터 중에서 어느 극성이 우세한지(예를 들어, 홀수인지 짝수인지)를 판정한다. 4개의 루마 움직임 벡터 모두가 동일한 필드로부터 온 것인 경우(예를 들어, 모두 홀수 또는 모두 짝수인 경우), 4개의 루마 움직임 벡터의 메디안이 결정된다. 4개 중에 3개가 동일 필드로부터 온 것인 경우, 3개의 루마 움직임 벡터의 메디안이 결정된다. 마지막으로, 각각의 극성에 대해 2개의 루마 움직임 벡터가 있는 경우, 현재의 P-필드와 동일한 극성을 갖는 2개의 루마 움직임 벡터가 선호되고, 이들의 평균이 결정된다. (4MV 매크로블록이 항상 4개의 루마 움직임 벡터를 갖는다면, 루마 움직임 벡터가 단지 하나인 경우와 우세 극성을 갖는 루마 움직임 벡터가 없는 경우는 가능하지 않다.)Referring to FIG. 55B, the encoder / decoder determines which polarity of the four luma motion vectors of the 4MV macroblock is dominant (eg, odd or even). If all four luma motion vectors are from the same field (eg all odd or all even), the median of the four luma motion vectors is determined. If three of the four are from the same field, the median of the three luma motion vectors is determined. Finally, if there are two luma motion vectors for each polarity, two luma motion vectors with the same polarity as the current P-field are preferred, and their average is determined. (If a 4MV macroblock always has four luma motion vectors, it is not possible if there is only one luma motion vector and no luma motion vectors with dominant polarity.)

다른 대안으로서, 인코더 또는 디코더는 인터레이스형 P-필드의 매크로블록의 다수의 루마 움직임 벡터로부터 크로마 움직임 벡터를 도출할 때 서로 다른 선택 논리를 사용한다. 또는, 인코더 또는 디코더는 다른 유형의 매크로블록(예를 들어, 서로 다른 개수의 루마 움직임 벡터를 갖거나 및/또는 인터레이스형 P-필드와 다른 유형의 픽서에서의 매크로블록)에 대한 크로마 움직임 벡터 도출에서 루마 움직임 벡터 극성을 고려한다.As another alternative, the encoder or decoder uses different selection logic when deriving chroma motion vectors from multiple luma motion vectors of macroblocks of interlaced P-fields. Alternatively, the encoder or decoder may derive chroma motion vectors for different types of macroblocks (e.g., having different numbers of luma motion vectors and / or macroblocks in interlaced P-fields and other types of fixers). Consider the luma motion vector polarity in.

C. 서브-샘플링/반올림 단계C. Sub-Sampling / Rounding Steps

크로마 움직임 벡터 도출의 두번째 단계의 경우, 인코더 또는 디코더는 일반적으로 초기 크로마 움직임 벡터로부터 어떤 픽셀 위치를 제거하기 위해(예를 들어, 다운샘플링 후의 이러한 크로마 움직임 벡터가 ¼-픽셀 변위를 가리키지 않도록 ¾-픽셀 위치 반올림하기 위해) 반올림 논리를 적용한다. 반올림의 사용은 예 측 품질 대 보간의 복잡성을 절충하기 위해 조정될 수 있다. 예를 들어, 보다 공격적인 반올림의 경우, 인코더 또는 디코더는 결과 크로마 움직임 벡터에서의 모든 ¼-픽셀 크로마 변위를 제거하고, 따라서 정수-픽셀 및 ½-픽셀 변위만이 허용되며, 이는 크로마 블록에 대한 움직임 보상에서의 보간을 간단하게 해준다.For the second stage of chroma motion vector derivation, an encoder or decoder is typically used to remove some pixel position from the initial chroma motion vector (e.g., such that the chroma motion vector after downsampling does not indicate a quarter-pixel displacement). Apply rounding logic (to round pixel positions). The use of rounding can be adjusted to compromise the complexity of prediction quality versus interpolation. For example, for more aggressive rounding, the encoder or decoder removes all ¼-pixel chroma displacements in the resulting chroma motion vector, so only integer-pixel and ½-pixel displacements are allowed, which is motion for chroma blocks. Simplify interpolation in compensation.

두번째 단계에서, 인코더 및 디코더는 또한 크로마 해상도에 대한 적절한 스케일에서 크로마 움직임 벡터를 획득하기 위해 초기 크로마 움직임 벡터를 다운샘플링한다. 예를 들어, 크로마 해상도가 수평 및 수직 양쪽에서 루마 해상도의 1/2인 경우, 수평 및 수직 움직임 벡터 성분은 2만큼 다운샘플링된다.In the second step, the encoder and decoder also downsample the initial chroma motion vector to obtain the chroma motion vector at an appropriate scale for chroma resolution. For example, if the chroma resolution is 1/2 of the luma resolution in both horizontal and vertical, the horizontal and vertical motion vector components are downsampled by two.

다른 대안으로서, 인코더 또는 디코더는 크로마 움직임 벡터의 반올림, 서브-샘플링, 풀백(pullback), 또는 다른 조정을 위해 다른 및/또는 부가의 메카니즘을 적용한다.As another alternative, the encoder or decoder applies other and / or additional mechanisms for rounding, sub-sampling, pullback, or other adjustment of the chroma motion vector.

D. 도출 기술D. Derivation Technology

도 20의 인코더(2000) 등의 인코더는 인터레이스형 P-필드의 매크로블록에 대한 크로마 움직임 벡터를 도출한다. 또는, 도 21의 디코더(2100) 등의 디코더는 인터레이스형 P-필드의 매크로블록에 대한 크로마 움직임 벡터를 도출한다. 예를 들어, 인코더/디코더는 크로마 움직임 벡터를 도출하기 위해 도 41에 도시된 기술(4100)을 수행한다.An encoder such as encoder 2000 of FIG. 20 derives a chroma motion vector for the macroblock of the interlaced P-field. Alternatively, a decoder such as decoder 2100 of FIG. 21 derives a chroma motion vector for the macroblock of the interlaced P-field. For example, the encoder / decoder performs the technique 4100 shown in FIG. 41 to derive the chroma motion vector.

인코더/디코더는 현재 매크로블록이 인트라 매크로블록인지 여부를 판정한다(단계 4110). 인트라 매크로블록인 경우, 인코더/디코더는 크로마 움직임 벡터 도출을 건너뛰고, 움직임 보상 대신에, 매크로블록에 대해 인트라 코딩/디코딩이 사용된다.The encoder / decoder determines whether the current macroblock is an intra macroblock (step 4110). In the case of an intra macroblock, the encoder / decoder skips chroma motion vector derivation, and instead of motion compensation, intra coding / decoding is used for the macroblock.

매크로블록이 인트라 매크로블록이 아닌 경우, 인코더/디코더는 매크로블록이 1MV 매크로블록인지 여부를 판정한다(단계 4120). 1MV 매크로블록인 경우, 인코더/디코더는 기술(4100)의 나중의 조정 단계(들)(4150)로 전달되는 초기 크로마 움직임 벡터로서 매크로블록에 대한 단일의 루마 움직임 벡터를 사용한다.If the macroblock is not an intra macroblock, the encoder / decoder determines whether the macroblock is a 1MV macroblock (step 4120). In the case of a 1MV macroblock, the encoder / decoder uses a single luma motion vector for the macroblock as the initial chroma motion vector passed to later adjustment step (s) 4150 of the technique 4100.

매크로블록이 1MV 매크로블록이 아닌 경우, 인코더/디코더는 매크로블록의 루마 움직임 벡터 중에서 지배적인 극성을 결정한다(단계 4130). 예를 들어, 인코더/디코더는 도 40 또는 도 55a 및 도 55b에 기술된 바와 같이 매크로블록의 하나 이상의 루마 움직임 벡터 중에서 우세 극성을 결정한다. 다른 대안으로서, 인코더/디코더는 지배적인 극성을 결정하기 위해 다른 및/또는 부가의 결정 논리를 적용한다. 매크로블록을 포함하는 P-필드가 단지 하나의 참조 필드만을 갖는 경우, 루마 움직임 벡터 중의 우세 극성은 단순히 그 하나의 참조 필드의 극성이다.If the macroblock is not a 1MV macroblock, the encoder / decoder determines the dominant polarity among the luma motion vectors of the macroblock (step 4130). For example, the encoder / decoder determines the dominant polarity among one or more luma motion vectors of the macroblock as described in FIG. 40 or 55A and 55B. As another alternative, the encoder / decoder applies other and / or additional decision logic to determine the dominant polarity. If a P-field containing a macroblock has only one reference field, the dominant polarity in the luma motion vector is simply the polarity of that one reference field.

인코더/디코더는 이어서 우세 극성을 갖는 매크로블록의 그 루마 움직임 벡터들로부터 초기 크로마 움직임 벡터를 결정한다(단계 4140). 예를 들어, 인코더/디코더는 도 40 또는 도 55a 및 도 55b에 도시된 바와 같이 초기 크로마 움직임 벡터를 결정한다. 다른 대안으로서, 인코더/디코더는 다른 및/또는 부가의 논리를 사용하여 우세 극성 움직임 벡터의 메디안, 평균 또는 다른 조합으로서 초기 크로마 움직임 벡터를 결정한다.The encoder / decoder then determines an initial chroma motion vector from the luma motion vectors of the macroblock with the dominant polarity (step 4140). For example, the encoder / decoder determines the initial chroma motion vector as shown in FIG. 40 or 55A and 55B. As another alternative, the encoder / decoder uses other and / or additional logic to determine the initial chroma motion vector as a median, mean or other combination of dominant polar motion vectors.

마지막으로, 인코더/디코더는 이전 단계들 중 하나에 의해 생성된 초기 크로마 움직임 벡터를 조정한다(단계 4150). 예를 들어, 인코더/디코더는 상기한 바와 같이 반올림 및 서브-샘플링을 수행한다. 다른 대안으로서, 인코더/디코더는 다른 및/또는 부가의 조정을 수행한다.Finally, the encoder / decoder adjusts the initial chroma motion vector generated by one of the previous steps (step 4150). For example, the encoder / decoder performs rounding and sub-sampling as described above. As another alternative, the encoder / decoder performs other and / or additional adjustments.

다른 대안으로서, 인코더/디코더는 서로 다른 순서로 여러가지 매크로블록 유형 및 극성 조건을 검사한다. 또는, 인코더/디코더는 인터레이스형 P-필드 또는 다른 유형의 픽처에서의 다른 및/또는 부가의 유형의 매크로블록에 대한 크로마 움직임 벡터를 도출한다.As another alternative, the encoder / decoder checks the various macroblock types and polarity conditions in different orders. Or, the encoder / decoder derives chroma motion vectors for other and / or additional types of macroblocks in interlaced P-fields or other types of pictures.

간단함을 위해, 도 41은 기술(4100)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식들을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 41 does not represent various ways in which the technique 4100 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

XIXI . . 인터레이스형Interlaced P-필드에 대한 세기 보상 Century compensation for P-fields

비디오 콘텐츠의 생성 및 편집에서 페이딩(fading), 모핑(morphing) 및 블렌딩(blending)이 널리 사용된다. 이들 기술은 콘텐츠 전환에 걸쳐 비디오의 시각적 진전을 매끄럽게 한다. 게다가, 어떤 비디오 시퀀스는 조명의 변화로 인해 자연스럽게 페이딩하는 것을 포함한다. 페이딩, 모핑, 블렌딩, 기타 등등에 의해 영향을 받는 예측된 픽처의 경우, 참조 픽처에 비해 루미넌스의 전반적인 변화는 종래의 움직임 추정 및 보상의 효율성을 떨어뜨린다. 그 결과, 움직임 보상된 예측이 더 나빠지고, 예측된 픽처는 그를 표현하는 데 더 많은 비트를 필요로 한다. 이 문제점은 하나의 참조 필드 또는 다수의 참조 필드를 갖는 인터레이스형 P-필드의 경우 더욱 복잡하다.Fading, morphing, and blending are widely used in the creation and editing of video content. These techniques smooth the visual progress of video across content transitions. In addition, some video sequences involve fading naturally due to changes in illumination. For predicted pictures affected by fading, morphing, blending, etc., the overall change in luminance compared to the reference picture reduces the effectiveness of conventional motion estimation and compensation. As a result, the motion compensated prediction is worse, and the predicted picture requires more bits to represent it. This problem is more complicated for interlaced P-fields with one reference field or multiple reference fields.

어떤 실시예에서, 인코더 및 디코더는 인터레이스형 P-필드에 대한 참조 필드에 대해 페이딩 보상(세기 보상(intensity compensation)이라고도 함)을 수행한다. 인코더는 대응하는 페이딩 추정을 수행한다. 페이딩 추정 및 보상, 및 페이딩 보상 파라미터에 대한 시그널링 메카니즘은 인터레이스형 P-필드의 참조 필드 구성에 적합하게 되어 있다. 예를 들어, 하나의 참조 필드 또는 2개의 참조 필드를 갖는 인터레이스형 P-필드의 경우, 페이딩 보상을 수행할지 여부의 판정은 각각의 참조 필드에 대해 개별적으로 행해진다. 페이딩 보상을 사용하는 각각의 참조 필드는 그 자신의 페이딩 보상 파라미터를 가질 수 있다. 페이딩 보상 판정 및 파라미터에 대한 시그널링 메카니즘은 이 정보를 효율적으로 표현한다. 그 결과, 인터레이스형 비디오의 품질은 개선되고 및/또는 비트 레이트가 감소된다.In some embodiments, the encoder and decoder perform fading compensation (also called intensity compensation) on the reference field for the interlaced P-field. The encoder performs a corresponding fading estimate. Fading estimation and compensation, and signaling mechanisms for fading compensation parameters are adapted to the reference field configuration of interlaced P-fields. For example, in the case of an interlaced P-field with one reference field or two reference fields, the determination of whether to perform fading compensation is made separately for each reference field. Each reference field that uses fading compensation may have its own fading compensation parameter. The fading compensation decision and the signaling mechanism for the parameter efficiently represent this information. As a result, the quality of interlaced video is improved and / or the bit rate is reduced.

A. 참조 필드에 대한 A. for reference fields 페이딩fading 추정 및 보상 Estimation and Reward

페이딩 보상은 페이딩, 블렌딩, 모핑, 기타 등등을 보상하기 위해 하나 이상의 참조 필드를 변경하는 단계를 포함한다. 일반적으로, 페이딩 보상은 픽셀 값 세기에 영향을 주는 페이딩(즉, 블랙으로 페이딩(fade-to-black) 또는 블랙으로부터 페이딩(fade-from-black)), 블렌딩, 모핑, 또는 다른 자연스러운 또는 합성 조명 효과를 위한 임의의 보상을 포함한다. 예를 들어, 전체적인 루미넌스 변화는 장면의 밝기 및/또는 콘트라스트의 변화로서 표현될 수 있다. 일반적으로, 변화는 선형적이지만, 이는 동일한 프레임워크 내에 임의의 매끄러운, 비선형 매핑을 포함하는 것으로도 정의될 수 있다. 이어서, 현재의 P-필드는 조정된 하나 이상의 참조 필드로부터의 움직임 추정 및/또는 보상에 의해 예측된다.Fading compensation includes modifying one or more reference fields to compensate for fading, blending, morphing, and the like. In general, fading compensation includes fading (i.e. fading to or fading from black), blending, morphing, or other natural or composite lighting that affects pixel value intensity. It includes any reward for the effect. For example, the overall luminance change can be expressed as a change in brightness and / or contrast of the scene. In general, the change is linear, but it can also be defined as including any smooth, non-linear mapping within the same framework. The current P-field is then predicted by motion estimation and / or compensation from the adjusted one or more reference fields.

YUV 컬러 공간에서의 참조 필드의 경우, 조정은 루미넌스 및 크로미넌스 채널에서의 샘플을 조정함으로써 행해진다. 이 조정은 루미넌스 값의 스케일링 및 천이(shifting) 및 크로미넌스 값의 스케일링 및 천이를 포함할 수 있다. 다른 대안으로서, 컬러 공간이 다르고(예를 들어, YIQ 또는 RGB) 및/또는 보상이 다른 조정 기술을 사용한다.For the reference field in the YUV color space, the adjustment is made by adjusting the samples in the luminance and chrominance channels. This adjustment may include scaling and shifting of the luminance value and scaling and shifting of the chrominance value. As another alternative, color spaces are different (eg YIQ or RGB) and / or compensation uses different adjustment techniques.

인코더/디코더는 필드별로 페이딩 추정/보상을 수행한다. 다른 대안으로서, 인코더/디코더는 어떤 다른 방식으로 페이딩 추정/보상을 수행한다. 따라서, 페이딩 보상 조정은 필드 또는 필드의 일부(예를 들어, 개개의 블록 또는 매크로블록, 또는 일군의 매크로블록)일 수 있는 정의된 영역에 영향을 미치며, 페이딩 보상 파라미터는 정의된 영역에 대한 것이다. 또는, 페이딩 보상 파라미터는 필드 전체에 대한 것이지만, 선택적으로 또 필요에 따라 필드 내의 영역들에 적용된다.The encoder / decoder performs fading estimation / compensation for each field. As another alternative, the encoder / decoder performs fading estimation / compensation in some other way. Thus, fading compensation adjustments affect defined areas that may be fields or portions of a field (eg, individual blocks or macroblocks, or a group of macroblocks), and the fading compensation parameters are for the defined areas. . Alternatively, the fading compensation parameter is for the entire field, but optionally and also applies to areas within the field as needed.

B. B. 인터레이스형Interlaced P-필드에 대한 참조 필드 구성 Configure Reference Fields for P-Fields

어떤 실시예에서, 인터레이스형 P-필드는 움직임 보상을 위한 하나 또는 2개의 참조 필드를 갖는다(예를 들어, 섹션 IV를 참조할 것). 도 24a 내지 도 24f는 인터레이스형 P-필드에 대한 움직임 보상된 예측에 사용할 수 있는 참조 필드의 위치를 나타낸 것이다. 인코더 및 디코더는 P-필드에 대한 움직임 보상된 예측을 위해 다른 및/또는 부가의 위치 또는 타이밍에서 참조 필드를 사용할 수 있다. 예를 들어, 현재 P-필드와 동일한 프레임 내의 참조 필드는 허용된다. 또는, 프레임의 상부 필드 또는 하부 필드가 먼저 코딩/디코딩될 수 있다.In some embodiments, the interlaced P-field has one or two reference fields for motion compensation (see, eg, section IV). 24A-24F illustrate the positions of reference fields that can be used for motion compensated prediction for interlaced P-fields. The encoder and decoder may use the reference field at other and / or additional position or timing for motion compensated prediction for the P-field. For example, a reference field in the same frame as the current P-field is allowed. Alternatively, the upper field or lower field of the frame may be coded / decoded first.

움직임 보상을 위해 하나 또는 2개의 참조 필드를 갖는 인터레이스형 P-필드 의 경우, P-필드는 단지 하나의 참조 필드를 갖는다. 또는, P-필드는 2개의 참조 필드를 가질 수 있고 서로 다른 움직임 벡터에 대해 또는 어떤 다른 방식으로 2개의 참조 필드 간에 전환할 수 있다.For an interlaced P-field with one or two reference fields for motion compensation, the P-field has only one reference field. Alternatively, the P-field may have two reference fields and switch between the two reference fields for different motion vectors or in some other way.

다른 대안으로서, P-필드는 더 많은 참조 필드를 가지며 및/또는 서로 다른 위치에 있는 참조 필드를 갖는다.As another alternative, the P-field has more reference fields and / or has reference fields at different locations.

C. 인코더 및 디코더C. Encoder and Decoder

도 42는 하나 또는 2개의 참조 필드를 갖는 인터레이스형 P-필드에 대한 세기 추정 및 보상을 수행하기 위한 예시적인 인코더 프레임워크(4200)를 나타낸 것이다. 이 프레임워크(4200)에서, 인코더는 페이딩 추정에 의해 획득된 파라미터를 사용하여 참조 필드를 조건부로 재매핑한다. 인코더가 필드에 걸쳐 양호한 정도의 확신 및 일관성으로 페이딩을 검출하는 경우, 인코더는 재매핑 또는 페이딩 보상을 수행한다. 그렇지 않은 경우, 페이딩 보상은 항등 연산(identity operation)이다(즉, 출력 = 입력).42 illustrates an example encoder framework 4200 for performing intensity estimation and compensation on interlaced P-fields with one or two reference fields. In this framework 4200, the encoder conditionally remaps the reference field using the parameters obtained by fading estimation. If the encoder detects fading with a good degree of confidence and consistency across the field, the encoder performs remapping or fading compensation. Otherwise, the fading compensation is an identity operation (ie output = input).

도 42를 참조하면, 인코더는 필드들(4220, 4210) 간에 페이딩이 일어나는지를 판정하기 위해 페이딩 검출 모듈(4230)을 사용하여 현재 P-필드(4210)를 제1 참조 필드(4220)와 비교한다. 인코더는 페이딩이 그 필드들(4225, 4210) 간에 일어나는지를 판정하기 위해 페이딩 검출 모듈(4230)을 사용하여 현재 P-필드(4210)와 제2 참조 필드(4225)를 개별적으로 비교한다. 인코더는 페이딩 검출의 결과에 기초하여 "페이딩 온" 또는 "페이딩 오프" 신호 또는 신호들(4240)을 생성한다. 신호(들)는 페이딩 보상이 사용될지 여부, 및 사용되는 경우 양쪽 참조 필드(4220, 4225) 중 제1 필드에 대해서만, 제2 필드에 대해서만 또는 그 둘다에 대해 사용되는지를 가리킨다.Referring to FIG. 42, the encoder uses the fading detection module 4230 to compare the current P-field 4210 with the first reference field 4220 to determine if fading occurs between the fields 4220 and 4210. . The encoder separately compares the current P-field 4210 and the second reference field 4225 using the fading detection module 4230 to determine if fading occurs between the fields 4225 and 4210. The encoder generates a “fading on” or “fading off” signal or signals 4240 based on the result of the fading detection. The signal (s) indicate whether fading compensation is to be used, and if used, for the first of both reference fields 4220, 4225 only, for the second field or both.

페이딩 보상이 제1 참조 필드(4220)에 대해 온(on)인 경우, 페이딩 추정 모듈(4250)은 제1 참조 필드(4220)에 대한 페이딩 파라미터(4260)를 추정한다. (페이딩 추정 상세는 이하에 기술되어 있다.) 이와 유사하게, 제2 참조 필드(4225)에 대해 페이딩 보상이 온(on)인 경우, 페이딩 추정 모듈(4250)은 제2 참조 필드에 대한 페이딩 파라미터(4260)를 개별적으로 추정한다.If fading compensation is on for first reference field 4220, fading estimation module 4250 estimates fading parameter 4260 for first reference field 4220. (Fade estimation details are described below.) Similarly, if fading compensation is on for the second reference field 4225, the fading estimation module 4250 determines the fading parameter for the second reference field. Estimate 4260 separately.

페이딩 보상 모듈(4270, 4275)은 페이딩 파라미터(4260)를 사용하여 참조 필드(4220) 중 하나 또는 그 둘다를 재매핑한다. 도 42가 2개의 페이딩 보상 모듈(4270, 4275)(참조 필드당 하나씩)을 도시하고 있지만, 다른 대안으로서, 인코더 프레임워크(4200)는 어느 한 참조 필드(4220, 4225)에 대해 동작하는 단일의 페이딩 보상 모듈을 포함한다.Fading compensation module 4270, 4275 remaps one or both of reference field 4220 using fading parameter 4260. Although FIG. 42 illustrates two fading compensation modules 4270 and 4275 (one per reference field), as an alternative, the encoder framework 4200 may operate on a single reference field 4220 and 4225. A fading compensation module.

다른 인코더 모듈(4280)(예를 들어, 움직임 추정 및 보상, 주파수 변환기 및 양자화 모듈)은 현재 P-필드(4210)를 압축한다. 인코더는 인코딩된 P-필드(4210)를 정의하는 움직임 벡터, 잔차 및 다른 정보(4290)를 출력한다. 병진 움직임 벡터를 갖는 움직임 추정/보상은 별도로 하고, 프레임워크(4200)는 아주 다양한 움직임 보상-기반 비디오 코덱에 걸쳐 적용가능하다.Another encoder module 4280 (eg, motion estimation and compensation, frequency converter, and quantization module) compresses the current P-field 4210. The encoder outputs motion vectors, residuals, and other information 4290 that defines the encoded P-field 4210. Apart from motion estimation / compensation with translational motion vectors, the framework 4200 is applicable across a wide variety of motion compensation-based video codecs.

도 43은 세기 보상을 수행하는 예시적인 디코더 프레임워크(4300)를 나타낸 것이다. 디코더는 디코딩된 P-필드(4310)를 생성한다. 인코딩된 페이딩-보상된 P-필드를 디코딩하기 위해, 디코더는 페이딩 보상 모듈(4370, 4375)을 사용하여 하 나 또는 2개의 이전에 디코딩된 참조 필드(4320, 4325)에 대해 페이딩 보상을 수행한다. 다른 대안으로서, 디코더 프레임워크(4300)는 어느 한 참조 필드(4320, 4325)에 대해 동작하는 단일의 페이딩 보상 모듈을 포함한다.43 illustrates an example decoder framework 4300 for performing intensity compensation. The decoder generates a decoded P-field 4310. To decode the encoded fading-compensated P-field, the decoder uses fading compensation module 4370 and 4375 to perform fading compensation on one or two previously decoded reference fields 4320 and 4325. . As another alternative, the decoder framework 4300 includes a single fading compensation module that operates on either reference field 4320, 4325.

페이딩 온/오프 신호(들)(4340)가 제1 참조 필드(4320) 및 P-필드(4310)에 대해 페이딩 보상이 사용되었음을 가리키는 경우, 디코더는 제1 참조 필드(4320)에 대한 페이딩 보상을 수행한다. 이와 유사하게, 페이딩 온/오프 신호(들)(4340)가 제2 참조 필드(4325) 및 P-필드(4310)에 대해 페이딩 보상이 사용되었음을 가리키는 경우, 디코더는 제2 참조 필드(4325)에 대해 페이딩 보상을 수행한다. 디코더는 (인코더에서와 마찬가지로) 제1 및 제2 참조 필드(4320, 4325)에 대한 페이딩 추정 동안에 획득된 개별적인 페이딩 파라미터 세트(4360)를 사용하여 페이딩 보상을 수행한다. 페이딩 보상이 오프인 경우, 페이딩 보상은 항등 연산이다(즉, 출력 = 입력).If the fading on / off signal (s) 4340 indicates that fading compensation has been used for the first reference field 4320 and the P-field 4310, the decoder may perform fading compensation for the first reference field 4320. To perform. Similarly, if the fading on / off signal (s) 4340 indicates that fading compensation has been used for the second reference field 4325 and the P-field 4310, then the decoder may apply to the second reference field 4325. Perform fading compensation for The decoder performs fading compensation using a separate set of fading parameters 4360 obtained during fading estimation for the first and second reference fields 4320 and 4325 (as in the encoder). If fading compensation is off, fading compensation is an equality operation (ie output = input).

다른 디코더 모듈(4360)(예를 들어, 움직임 보상, 주파수 역변환기, 및 역양자화 모듈)은 인코더에 의해 제공된 움직임 벡터, 잔차 및 다른 정보(4390)를 사용하여 인코딩된 P-필드(4310)를 압축 해제한다.Other decoder modules 4360 (eg, motion compensation, frequency inverse transformer, and inverse quantization module) may use the motion vector, residual, and other information 4390 provided by the encoder to encode the P-field 4310. Decompress

D. D. 파라미터화Parameterization 및 보상 And reward

파라미터는 P-필드와 제1 참조 필드 사이 및/또는 P-필드와 제2 참조 필드 사이에서의 페이딩, 블렌딩, 모핑 또는 다른 변화를 나타낸다. 이어서, 파라미터는 페이딩 보상에서 적용된다.The parameter indicates fading, blending, morphing or other change between the P-field and the first reference field and / or between the P-field and the second reference field. The parameter is then applied in fading compensation.

비디오 편집에서, 합성 페이딩(synthetic fading)은 때로는 간단한 픽셀별 선형 변환을 루미넌스 및 크로미넌스 채널에 적용함으로써 실현된다. 이와 마찬가지로, 교차-페이딩(cross-fading)은 때로는 2개의 비디오 시퀀스의 선형 합산으로서 실현되며, 이 합성(composition)은 시간에 따라 변한다. 따라서, 어떤 실시예에서, 페이딩 또는 다른 세기 보상 조정은 픽셀별 선형 변환으로서 파라미터화되고, 교차-페이딩은 선형 합산으로서 파라미터화된다.In video editing, synthetic fading is sometimes realized by applying simple pixel-by-pixel linear transformations to luminance and chrominance channels. Similarly, cross-fading is sometimes realized as a linear summation of two video sequences, and this composition changes over time. Thus, in some embodiments, fading or other intensity compensation adjustment is parameterized as a pixel-by-pixel linear transformation and cross-fading is parameterized as a linear summation.

I(n)이 P-필드 n이고 I(n-1)이 하나의 참조 필드인 것으로 가정한다. 움직임이 적은 경우, 간단한 페이딩이 이하의 식에서의 1차 관계에 의해 모델링된다. 이 식에서의 관계는 비디오 시퀀스에서의 가능한 움직임으로 인해 근사치이다.Assume that I (n) is a P-field n and I (n-1) is one reference field. If there is little motion, simple fading is modeled by the linear relationship in the equation below. The relationship in this equation is approximation due to the possible movement in the video sequence.

Figure 112009053892549-pat00007
Figure 112009053892549-pat00007

여기서, 페이딩 파라미터 B1 및 C1은 각각 참조 필드에 대한 밝기 및 콘트라스트 변화에 대응한다. (파라미터 B2 및 C2는 각각 나머지 참조 필드에 대한 밝기 및 콘트라스트 변화에 대응한다.) 비선형 페이딩이 일어나는 경우, 1차 성분이 일반적으로 대부분의 변화를 차지한다.Here, fading parameters B1 and C1 correspond to brightness and contrast changes with respect to the reference field, respectively. (Parameters B2 and C2 respectively correspond to brightness and contrast changes for the remaining reference fields.) When nonlinear fading occurs, the primary component generally accounts for most of the change.

이미지 시퀀스 U(n)로부터 이미지 시퀀스 V(n)로의 교차-페이딩은 이하의 식에서의 관계로 모델링될 수 있다. 다시 말하면, 식에서의 관계는 시퀀스에서의 가능한 움직임으로 인해 근사치이다.Cross-fading from image sequence U (n) to image sequence V (n) can be modeled with the relationship in the following equation. In other words, the relationship in the equation is approximation due to the possible movement in the sequence.

Figure 112009053892549-pat00008
Figure 112009053892549-pat00008

여기서,

Figure 112009053892549-pat00009
는 교차-페이딩의 시작을 나타내고,
Figure 112009053892549-pat00010
는 교차-페이딩의 끝을 나타낸다. 몇개의 필드에 걸친 교차-페이딩의 경우,
Figure 112009053892549-pat00011
가 작다. 교차-페이딩의 시작 시에, n번째 필드는 n-1번째 필드의 감쇄된(콘트라스트 < 1) 버전에 가깝다. 끝 무렵에, n번째 필드가 n-1번째 필드의 증폭된(콘트라스트 > 1) 버전이다.here,
Figure 112009053892549-pat00009
Indicates the start of cross-fading,
Figure 112009053892549-pat00010
Indicates the end of cross-fading. For cross-fading over several fields,
Figure 112009053892549-pat00011
Is small. At the beginning of cross-fading, the nth field is close to the attenuated (contrast <1) version of the n-1th field. At the end, the nth field is an amplified (contrast> 1) version of the n-1th field.

인코더는 참조 필드를 재매핑함으로써 세기 보상을 수행한다. 인코더는 픽셀별로 또는 다른 방식으로 참조 필드를 재매핑한다. 원래의 재매핑되지 않은 참조 필드는 기본적으로 폐기된다(그렇지만, 어떤 구현에서는, 재매핑되지 않은 참조 필드가 움직임 보상을 위해 여전히 사용될 수 있다).The encoder performs strength compensation by remapping the reference field. The encoder remaps the reference field pixel by pixel or in other ways. The original unmapped reference field is discarded by default (though in some implementations, the non-remapped reference field can still be used for motion compensation).

이하의 선형 규칙은 참조 필드 R의 루미넌스 값을 2개의 파라미터 B1 및 C1과 관련하여 재매핑된 참조 필드

Figure 112009053892549-pat00012
로 재매핑한다.The following linear rule sets the luminance value of the reference field R to a reference field remapped with respect to two parameters B1 and C1.
Figure 112009053892549-pat00012
Remap to.

Figure 112009053892549-pat00013
Figure 112009053892549-pat00013

참조 필드의 루미넌스 값은 콘트라스트 값만큼 스케일링(또는 "가중")되고 밝기 값만큼 천이된다(즉, 오프셋을 부가한다). 크로미넌스의 경우, 재매핑은 이하의 규칙을 따른다.The luminance value of the reference field is scaled (or "weighted") by the contrast value and shifted by the brightness value (ie, adds an offset). In the case of chrominance, remapping follows the following rules.

Figure 112009053892549-pat00014
Figure 112009053892549-pat00014

여기서,

Figure 112009053892549-pat00015
는 크로미넌스 값의 평균이다. 일 실시예에서, 128이 크로미넌스 값의 부호를 갖지 않는(unsigned) 8비트 표현에 대한 평균인 것으로 가정한다. 크로미넌스 재매핑에 대한 이 규칙은 밝기 성분을 사용하지 않는다. 어떤 실시예에 서, 2-파라미터 선형 재매핑은 고차항으로 확장된다. 예를 들어,
Figure 112009053892549-pat00016
의 루미넌스 값을
Figure 112009053892549-pat00017
로 재매핑하는 2차식은 다음과 같다.here,
Figure 112009053892549-pat00015
Is the average of the chrominance values. In one embodiment, assume 128 is the average for an unsigned 8-bit representation of chrominance values. This rule for chrominance remapping does not use the brightness component. In some embodiments, two-parameter linear remapping extends to higher order terms. E.g,
Figure 112009053892549-pat00016
The luminance value of
Figure 112009053892549-pat00017
The quadratic equation remapping to

Figure 112009053892549-pat00018
Figure 112009053892549-pat00018

다른 실시예는 다른 재매핑 규칙을 사용한다. 이러한 재매핑 규칙의 한 카테고리에서, 비선형 페이딩의 경우, 선형 매핑이 비선형 매핑으로 대체된다.Other embodiments use different remapping rules. In one category of this remapping rule, for nonlinear fading, linear mapping is replaced with nonlinear mapping.

페이딩 보상은 움직임 보상 이전의 참조 필드에 적용될 수 있다. 또는, 이는 움직임 보상 동안에 필요에 따라 참조 필드에, 예를 들어, 움직임 벡터에 의해 실제로 참조되는 참조 필드의 영역에만 적용될 수 있다.Fading compensation may be applied to the reference field before motion compensation. Alternatively, this may be applied to the reference field as needed during motion compensation, eg only to the region of the reference field actually referenced by the motion vector.

E. 파라미터의 추정E. Estimation of Parameters

추정은 인코딩 프로세스 동안 보상 파라미터를 계산하는 프로세스이다. 도42의 프레임워크(4200)에 도시된 것 등의 인코더는 인코딩 프로세스 동안 밝기(B1, B2) 및 콘트라스트(C1, C2) 파라미터를 계산한다. 다른 대안으로서, 이러한 인코더는 다른 보상 파라미터를 계산한다.Estimation is the process of calculating the compensation parameters during the encoding process. An encoder such as that shown in framework 4200 of FIG. 42 calculates the brightness B1, B2 and contrast C1, C2 parameters during the encoding process. As another alternative, such an encoder calculates other compensation parameters.

추정 속도를 높이기 위해, 인코더는 각각의 참조 필드에 대한 파라미터를 독립적으로 고려하고 추정한다. 또한, 인코더는 루미넌스 채널만을 분석한다. 다른 대안으로서, 더 많은 계산 자원이 이용가능한 경우 인코더는 분석에 크로미넌스를 포함시킨다. 예를 들어, 인코더는 C1(또는 C2)가 보다 강건하게 되도록 단지 루미넌스 재매핑 방정식만이 아니라 제1 참조 필드에 대한 루미넌스 및 크로미넌스 재매핑 방정식에서의 C1(또는 C2)에 대한 해를 구한다.To speed up the estimation, the encoder independently considers and estimates the parameters for each reference field. In addition, the encoder only analyzes the luminance channel. As another alternative, the encoder includes chrominance in the analysis when more computational resources are available. For example, the encoder solves C1 (or C2) in the luminance and chrominance remapping equations for the first reference field, not just the luminance remapping equation, to make C1 (or C2) more robust. .

페이딩 추정 프로세스 동안 장면에서의 움직임이 무시된다. 이것은 이하의 관찰, 즉 (a) 페이딩 및 교차-페이딩이 일반적으로 정지 장면 또는 움직임이 적은 장면에서 일어남, 및 (b) 움직임이 많은 장면에서의 세기 보상의 효용성이 아주 낮음에 기초한다. 다른 대안으로서, 인코더는 페이딩 보상 파라미터 및 움직임 정보에 대한 해를 공동으로 구한다. 이어서, 움직임 정보는 이 기술의 나중의 단계에서 또는 어떤 다른 때에 페이딩 보상 파라미터의 정확도를 개선하는 데 사용된다. 움직임 정보를 사용하는 한가지 방식은 움직임이 검출된 참조 필드의 그 부분을 페이딩 추정 계산으로부터 생략하는 것이다.Movement in the scene is ignored during the fading estimation process. This is based on the following observations: (a) fading and cross-fading generally occur in still or low motion scenes, and (b) the effectiveness of intensity compensation in high motion scenes is very low. As another alternative, the encoder jointly finds solutions to fading compensation parameters and motion information. The motion information is then used to improve the accuracy of the fading compensation parameter at later stages of this technique or at some other time. One way to use motion information is to omit that portion of the reference field from which motion was detected from the fading estimate calculation.

Figure 112009053892549-pat00019
또는
Figure 112009053892549-pat00020
의 절대 오차 합산은 페이딩의 존재 및 파라미터를 결정하기 위한 메트릭으로서 역할한다. 다른 대안으로서, 인코더는 동일한 오차 항에 걸친 제곱 오차 또는 평균 제곱 오차의 합 등의 다른 또는 부가의 메트릭을 사용하거나 인코더는 다른 오차 항을 사용한다.
Figure 112009053892549-pat00019
or
Figure 112009053892549-pat00020
The absolute error summation of 역할 serves as a metric for determining the presence and parameter of fading. As another alternative, the encoder uses other or additional metrics, such as the sum of squared errors or the mean squared error over the same error term, or the encoder uses different error terms.

인코더는 이하에 기술하는 것 등의 종료 조건의 만족 시에 추정을 종료할 수 있다. 다른 종료 조건의 경우, 인코더는 추정의 시작 시에 또는 그의 중간 단계에서 콘트라스트 파라미터 C1(또는 C2)가 1.0에 가까운지(한 구현에서, .99 < C < 1.02 인지) 여부를 검사하고, 그렇다면 이 기술을 종료한다.The encoder can end the estimation upon satisfying the termination condition such as described below. For other termination conditions, the encoder checks whether the contrast parameter C1 (or C2) is close to 1.0 (in one implementation, .99 <C <1.02) at the start of the estimation or at an intermediate stage thereof, and if Terminate the skill.

인코더는 현재 필드 및 선택된 참조 필드(첫번째 또는 두번째)를 다운샘플링하는 것으로 추정을 시작한다. 한 구현에서, 인코더는 수평 및 수직으로 4배 만큼 다운샘플링한다. 다른 대안으로서, 인코더는 다른 배수만큼 다운샘플링하거나 전 혀 다운샘플링하지 않는다.The encoder begins to estimate by downsampling the current field and the selected reference field (first or second). In one implementation, the encoder downsamples four times horizontally and vertically. As another alternative, the encoder does not downsample or downsample at all by another multiple.

이어서, 인코더는 현재 필드 및 참조 필드의 저해상도 버전

Figure 112009053892549-pat00021
Figure 112009053892549-pat00022
에 걸쳐 절대 오차 합산
Figure 112009053892549-pat00023
을 계산한다. 절대 오차 합산은 다운샘플링된 현재 필드 및 다운샘플링된 참조 필드 간의 값의 차이를 측정한다. 절대 오차 합산이 어떤 임계값(예를 들어, 미리 정해진 차이 척도)보다 작은 경우, 인코더는 페이딩이 일어나지 않았거나 페이딩 보상이 사용되지 않은 것으로 결론짓는다.The encoder then performs a low resolution version of the current field and the reference field.
Figure 112009053892549-pat00021
And
Figure 112009053892549-pat00022
Sum the absolute error over
Figure 112009053892549-pat00023
. Absolute error summation measures the difference in values between the downsampled current field and the downsampled reference field. If the absolute error sum is less than a certain threshold (eg, a predetermined difference measure), the encoder concludes that no fading has occurred or no fading compensation is used.

그렇지 않은 경우, 인코더는 밝기 B1(또는 B2) 및 콘트라스트 C1(또는 C2) 파라미터를 추정한다. 첫번째 커트 추정치는 서로 다른 파라미터 값에 대해

Figure 112009053892549-pat00024
의 항으로
Figure 112009053892549-pat00025
을 모델링함으로써 획득된다. 예를 들어, 밝기 및 콘트라스트 파라미터는 다운샘플링된 필드 전체에 걸친 선형 회귀(linear regression)를 통해 획득된다. 또는, 인코더는 보다 강건한 분석을 위해 총 최소 제곱(total least square), 최소 제곱 메디안(least median of square), 기타 등등의 다른 형태의 통계적 분석을 사용한다. 예를 들어, 인코더는 오차항
Figure 112009053892549-pat00026
의 MSE 또는 SSE를 최소화한다. 어떤 환경에서, MSE 또는 SSE는 강건하지 않으며, 따라서 인코더는 또한 오차항에 대한 절대 오차 합산을 테스트한다. 인코더는 특정의 점에 대한 높은 오차값(이는 페이딩 보다는 움직임으로 인할 것일 수 있음)을 버린다.Otherwise, the encoder estimates the brightness B1 (or B2) and contrast C1 (or C2) parameters. The first cut estimate is for different parameter values
Figure 112009053892549-pat00024
In terms of
Figure 112009053892549-pat00025
Is obtained by modeling. For example, brightness and contrast parameters are obtained through linear regression across the downsampled field. Or, the encoder uses other forms of statistical analysis, such as total least square, least median of square, and the like, for more robust analysis. For example, the encoder
Figure 112009053892549-pat00026
Minimize MSE or SSE. In some circumstances, MSE or SSE is not robust, so the encoder also tests the absolute error summation for the error term. The encoder discards high error values for certain points (which may be due to movement rather than fading).

첫번째 커트 파라미터는 이들 파라미터가 허용가능 범위 내에 있도록 보장하기 위해 또 적합성 테스트를 위해 양자화 및 역양자화된다. 어떤 실시예에서, 일반적인 8-비트 깊이 이미지의 경우, 파라미터는 각각 6 비트로 양자화된다. B1(또 는 B2)은 부호를 갖는(signed) 6-비트 정수로서 표현되는 -32 내지 31의 정수값을 취한다. C1(또는 C2)는 C1(또는 C2)에 대해 양자화된 값 0 내지 63에 대응하여, 0.015625(1/64)의 균일한 스텝으로 0.5에서 1.484375까지 변한다. 양자화는 B1(또는 B2) 및 C1(또는 C2)를 가장 가까운 유효 역양자화된 값으로 반올림하고 또 적절한 빈 인덱스(bin index)를 선택하는 것으로 수행된다.The first cut parameters are quantized and dequantized to ensure that these parameters are within acceptable ranges and for conformance testing. In some embodiments, for a typical 8-bit depth image, the parameters are quantized to 6 bits each. B1 (or B2) takes an integer value from -32 to 31 represented as a signed 6-bit integer. C1 (or C2) varies from 0.5 to 1.484375 in a uniform step of 0.015625 (1/64), corresponding to the quantized values 0 through 63 for C1 (or C2). Quantization is performed by rounding B1 (or B2) and C1 (or C2) to the nearest valid dequantized value and selecting the appropriate bin index.

인코더는 원래의 유한(bounded) 절대 오차 합산

Figure 112009053892549-pat00027
및 재매핑된 유한 절대 오차 합산
Figure 112009053892549-pat00028
을 계산한다. 어떤 실시예에서, 인코더는 적합성(goodness-of-fit) 분석을 사용하여 이 합산을 계산한다. 원래의 해상도에서의 랜덤한 또는 의사 랜덤한 일련의 픽셀에 대해, 인코더는 재매핑된 유한 절대 오차 합산
Figure 112009053892549-pat00029
을 계산하며, 여기서 인코딩되고 있는 필드의 양자화 파라미터의 배수 등의 어떤 한계(bound) M에 대해
Figure 112009053892549-pat00030
이다. 한계 M은 양자화 파라미터가 거칠 때 더 높고, 양자화 파라미터가 미세할 때 더 낮다. 인코더는 또한 원래의 유한 절대 오차 합산
Figure 112009053892549-pat00031
을 누적한다. 계산 자원이 이용가능한 경우, 인코더는 필드 전체에 걸쳐 유한 오차 합산을 계산할 수 있다.The encoder sums the original bounded absolute error
Figure 112009053892549-pat00027
And remapped finite absolute error summation
Figure 112009053892549-pat00028
. In some embodiments, the encoder calculates this summation using a goodness-of-fit analysis. For a random or pseudo-random series of pixels at the original resolution, the encoder sums the remapped finite absolute error
Figure 112009053892549-pat00029
For any bound M, such as a multiple of the quantization parameter of the field being encoded.
Figure 112009053892549-pat00030
to be. The limit M is higher when the quantization parameter is coarse and lower when the quantization parameter is fine. The encoder also adds the original finite absolute error
Figure 112009053892549-pat00031
Accumulate. If computational resources are available, the encoder can calculate finite error summation throughout the field.

원래의 및 재매핑된 유한 절대 오차 합산의 상대 값에 기초하여, 인코더는 페이딩 보상을 사용할지 여부를 판정한다. 예를 들어, 어떤 실시예에서, 인코더는 재매핑된 유한 절대 오차 합산이 원래의 유한 절대 오차 합산의 어떤 임계값 퍼센트

Figure 112009053892549-pat00032
보다 작거나 같지 않는 한 페이딩 보상을 수행하지 않는다. 한 구현에서,
Figure 112009053892549-pat00033
= .95이다.Based on the relative values of the original and remapped finite absolute error summation, the encoder determines whether to use fading compensation. For example, in some embodiments, the encoder is such that the remapped finite absolute error sum is some threshold percentage of the original finite absolute error sum.
Figure 112009053892549-pat00032
Do not perform fading compensation unless it is less than or equal to. In one implementation,
Figure 112009053892549-pat00033
= .95.

페이딩 보상이 사용되는 경우, 인코더는 이 때 I(n)과 R 간의 선형 회귀에 기초하지만 완전 해상도로 페이딩 파라미터를 재계산한다. 계산 시간을 절감하기 위해, 인코더는 필드의 랜덤한 또는 의사 랜덤한 샘플링에 걸쳐 반복된 선형 회귀를 수행할 수 있다. 다시 말하면, 인코더는 다른 대안으로서 보다 강건한 분석을 위해 다른 형태의 통계적 분석(예를 들어, 총 최소 제곱, 최소 제곱 메디안, 기타 등등)을 사용할 수 있다.If fading compensation is used, the encoder then recalculates the fading parameters at full resolution based on a linear regression between I (n) and R. To save computation time, the encoder can perform repeated linear regression over random or pseudo-random sampling of the field. In other words, the encoder may use other forms of statistical analysis (eg, total least squares, least square median, etc.) for more robust analysis as another alternative.

어떤 구현에서, 인코더는 C1(또는 C2)의 재구성된 값이 -1인 특별한 경우를 허용한다. 이 특별한 경우는 C1(또는 C2)에 대한 신택스 요소가 0인 것에 의해 시그널링된다. 이 "반전(invert)" 모드에서, 참조 필드는 B1(또는 B2)만큼 천이되기 전에 반전되고, B1(또는 B2)의 범위는 2의 균일한 스텝으로 193에서 319까지이다. 다른 대안으로서, 페이딩 보상 파라미터의 일부 또는 그 전부는 다른 표현을 사용하거나 다른 및/또는 부가의 파라미터가 사용된다.In some implementations, the encoder allows a special case where the reconstructed value of C1 (or C2) is -1. This special case is signaled by the syntax element for C1 (or C2) being zero. In this "invert" mode, the reference field is inverted before transitioning by B1 (or B2), and the range of B1 (or B2) is 193 to 319 in two uniform steps. As another alternative, some or all of the fading compensation parameters may use different representations or other and / or additional parameters.

F. F. 시그널링Signaling

상위 레벨에서, 시그널링된 페이딩 보상 정보는 (1) 보상 온/오프 정보 및 (2) 보상 파라미터를 포함한다. 온/오프 정보는 차례로 (a) 페이딩 보상이 전체적으로(예를 들어, 전체 시퀀스에 대해) 허용되는지 여부 또는 허용되지 않는지 여부 (b) 페이딩 보상이 허용되는 경우, 페이딩 보상이 특정의 P-필드에 대해 사용되는지 여부, 및 (c) 페이딩 보상이 특정의 P-필드에 대해 사용되는 경우, 참조 필드가 페이딩 보상에 의해 조정되어야만 하는지 여부를 포함할 수 있다. 페이딩 보상이 참조 필드에 대해 사용될 때, 적용되는 페이딩 보상 파라미터는 다음과 같다.At a higher level, the signaled fading compensation information includes (1) compensation on / off information and (2) compensation parameters. The on / off information is in turn determined by (a) whether fading compensation is allowed globally (e.g. for the entire sequence) or not (b) if fading compensation is allowed, the fading compensation is assigned to a specific P-field. Whether or not the reference field should be adjusted by fading compensation if fading compensation is used for a particular P-field. When fading compensation is used for the reference field, the fading compensation parameter applied is as follows.

1. 전체 온/1. Full on / off 오프off 시그널링Signaling

시퀀스 레벨에서, 1 비트는 페이딩 보상이 그 시퀀스에 대해 인에이블되어 있는지 여부를 가리킨다. 페이딩 보상이 허용되어 있는 경우, 나중의 요소들은 언제 어떻게 그것이 수행되는지를 가리킨다. 다른 대안으로서, 페이딩 보상이 어떤 다른 신택스 레벨에서 인에이블/디스에이블된다. 또는, 페이딩 보상이 항상 허용되고, 전체 온/오프 시그널링이 생략된다.At the sequence level, one bit indicates whether fading compensation is enabled for that sequence. If fading compensation is allowed, later factors indicate when and how it is performed. As another alternative, fading compensation is enabled / disabled at some other syntax level. Or, fading compensation is always allowed, and overall on / off signaling is omitted.

2. P-필드 온/2. P-field on / off 오프off 시그널링Signaling

페이딩 보상이 허용되는 경우, 하나 이상의 부가의 신호는 페이딩 보상을 언제 사용해야 하는지를 가리킨다. 일반적인 인터레이스형 비디오 시퀀스에서의 필드 중에, 세기 보상이 행해지는 일은 좀처럼 없다. 필드당 1 비트(예를 들어, 필드 레벨에서 시그널링되는 1 비트)를 부가함으로써 P-필드에 대한 페이딩 보상의 사용을 시그널링하는 것이 가능하다. 그렇지만, 페이딩 보상의 사용을 다른 정보와 공동으로 시그널링하는 것이 보다 경제적이다.If fading compensation is allowed, one or more additional signals indicate when to use fading compensation. Among the fields in a typical interlaced video sequence, intensity compensation is rarely performed. It is possible to signal the use of fading compensation for the P-field by adding 1 bit per field (eg 1 bit signaled at the field level). However, it is more economical to jointly signal the use of fading compensation with other information.

한 옵션은 P-필드에 대한 페이딩 보상의 사용을 움직임 벡터 모드(예를 들어, 움직임 벡터의 개수 및 구성, 서브-픽셀 보간 방식, 기타 등등)와 공동으로 시그널링하는 것이다. 예를 들어, VLC는 최소 빈도 움직임 벡터 모드와 P-필드에 대한 페이딩 보상의 활성을 공동으로 알려준다. 부가의 상세에 대해서는, 발명의 명칭이 "페이딩 추정/보상(Fading Estimation/Compensation)"인 미국 공개 특허 출원 제2003-0206593-A1호를 참조하기 바란다. 또는, 이하의 몇가지 결합 구현에 기술 된 바와 같이, P-필드에 대한 페이딩 보상의 사용/비사용이 움직임 벡터 모드 정보와 함께 시그널링된다. 섹션 XII의 MVMODE 및 MVMODE2 요소를 참조하기 바란다. 다른 대안으로서, P-필드 페이딩 보상 온/오프 정보를 시그널링하기 위한 다른 메카니즘이 사용된다.One option is to jointly signal the use of fading compensation for the P-field with the motion vector mode (eg, number and configuration of motion vectors, sub-pixel interpolation schemes, etc.). For example, VLC jointly informs the minimum frequency motion vector mode and the activity of fading compensation for the P-field. For further details, see US Patent Application Publication No. 2003-0206593-A1 entitled "Fading Estimation / Compensation". Or, use / disuse of fading compensation for the P-field is signaled along with the motion vector mode information, as described in some combination implementations below. See the MVMODE and MVMODE2 elements in section XII. As another alternative, another mechanism for signaling P-field fading compensation on / off information is used.

3. 참조 필드 온/3. Reference Fields On / Off 오프off 시그널링Signaling

P-필드에 대해 페이딩 보상이 사용되는 경우, 어느 참조 필드가 페이딩 보상을 받는지에 대한 몇가지 옵션이 있을 수 있다. P-필드가 페이딩 보상을 사용하고 또 2개의 참조 필드를 갖는 경우, 3가지 경우가 있다. 페이딩 보상은 (1) 양쪽 참조 필드 둘다에 대해, (2) 제1 참조 필드(예를 들어, 시간상 두번째로 가장 최근의 참조 필드)에 대해서만, 및 (3) 제2 참조 필드(예를 들어, 시간상 가장 최근의 참조 필드)에 대해서만 수행된다. 페이딩 보상 참조 필드 패턴 정보는 P-필드마다 FLC로서 또는 VLC로서 시그널링될 수 있다. 도 44의 테이블은 P-필드 헤더로 시그널링되는 요소 INTCOMPFIELD의 패턴 정보에 대한 하나의 VLC 세트를 나타낸 것이다. 다른 대안으로서, 도 47g에 도시된 테이블 또는 다른 테이블은 필드 레벨 또는 다른 신택스 레벨에서 사용된다.If fading compensation is used for the P-field, there may be several options for which reference field receives fading compensation. If the P-field uses fading compensation and has two reference fields, there are three cases. Fading compensation includes (1) for both reference fields, (2) only for a first reference field (e.g., the second most recent reference field in time), and (3) a second reference field (e.g., Only for the most recent reference field in time). Fading compensation reference field pattern information may be signaled as FLC or VLC per P-field. The table of FIG. 44 shows one VLC set for pattern information of an element INTCOMPFIELD signaled with a P-field header. As another alternative, the table or other table shown in FIG. 47G is used at the field level or other syntax level.

어떤 구현에서, 페이딩 보상에 대한 참조 필드 패턴은 모든 P-필드에 대해 시그널링된다. 다른 대안으로서, 페이딩 보상을 사용하는 하나의 참조 필드 P-필드의 경우, 참조 필드 패턴의 시그널링이 생략되는데, 왜냐하면 페이딩 보상이 단일의 참조 필드에 자동적으로 적용되기 때문이다.In some implementations, the reference field pattern for fading compensation is signaled for all P-fields. As another alternative, for one reference field P-field using fading compensation, signaling of the reference field pattern is omitted because the fading compensation is automatically applied to a single reference field.

4. 4. 페이딩fading 보상 파라미터  Compensation parameters 시그널링Signaling

페이딩 보상이 참조 필드에 대해 사용되는 경우, 참조 필드에 대한 페이딩 보상 파라미터가 시그널링된다. 예를 들어, 제1 페이딩 보상 파라미터 세트는 P-필드에 대한 헤더에 존재한다. 페이딩 보상이 하나의 참조 필드에 대해서만 사용되는 경우, 제1 파라미터 세트는 그 하나의 참조 필드에 대한 것이다. 페이딩 보상이 P-필드의 2개의 참조 필드에 대해 사용되는 경우, 제1 파라미터 세트는 하나의 참조 필드에 대한 것이고, 제2 페이딩 보상 파라미터 세트는 나머지 참조 필드의 페이딩 보상을 위한 헤더에 존재한다.If fading compensation is used for the reference field, the fading compensation parameter for the reference field is signaled. For example, the first fading compensation parameter set is in the header for the P-field. If fading compensation is used for only one reference field, the first parameter set is for that one reference field. If fading compensation is used for two reference fields of the P-field, the first parameter set is for one reference field and the second fading compensation parameter set is in the header for fading compensation of the remaining reference fields.

각각의 페이딩 보상 파라미터 세트는 예를 들어 콘트라스트 파라미터 및 밝기 파라미터를 포함하낟. 한 결합 구현에서, 제1 파라미터 세트는 LUMSCALE1 및 LUMSHIFT1 요소를 포함하며, 이들은 P-필드에 대해 세기 보상이 시그널링될 때 P-필드 헤더에 존재한다. INTCOMPFIELD가 양쪽 참조 필드 둘다 또는 두번째로 가장 최근의 참조 필드만이 페이딩 보상을 사용함을 가리키는 경우, LUMSCALE1 및 LUMSHIFT1은 두번째로 가장 최근의 참조 필드에 적용된다. 그렇지 않은 경우(INTCOMPFIELD가 가장 최근의 참조 필드만이 페이딩 보상을 사용함을 가리키는 경우), LUMSCALE1 및 LUMSHIFT1은 가장 최근의 참조 필드에 적용된다. P-필드에 대해 세기 보상이 시그널링되고 또 INTCOMPFIELD가 양쪽 참조 필드 둘다가 페이딩 보상을 사용함을 가리킬 때, LUMSCALE2 및 LUMSHIFT2 요소를 포함하는 제2 파라미터 세트는 P-필드 헤더에 존재한다. LUMSCALE2 및 LUMSHIFT2는 보다 최근의 참조 필드에 적용된다.Each fading compensation parameter set includes, for example, a contrast parameter and a brightness parameter. In one combined implementation, the first parameter set includes LUMSCALE1 and LUMSHIFT1 elements, which are present in the P-field header when strength compensation is signaled for the P-field. If INTCOMPFIELD indicates that both reference fields or only the second most recent reference field uses fading compensation, LUMSCALE1 and LUMSHIFT1 are applied to the second most recent reference field. Otherwise (when INTCOMPFIELD indicates that only the most recent reference field uses fading compensation), LUMSCALE1 and LUMSHIFT1 apply to the most recent reference field. When the intensity compensation is signaled for the P-field and INTCOMPFIELD indicates that both reference fields use fading compensation, a second parameter set containing the LUMSCALE2 and LUMSHIFT2 elements is present in the P-field header. LUMSCALE2 and LUMSHIFT2 apply to more recent reference fields.

LUMSHIFT1, LUMSCALE1, LUMSHIFT2, 및 LUMSCALE2는 파라미터 B1, Cl, B2, 및 C2에 대응한다. LUMSCALE1, LUMSCALE2, LUMSHIFT1, 및 LUMSHIFT2은 각각 6-비트 FLC를 사용하여 시그널링된다. 다른 대안으로서, 파라미터는 VLC를 사용하여 시그널링된다. 도 56은 LUMSHIFT1 및 LUMSCALE1에 기초하여 제1 참조 필드에 대해 페이딩 보상을 수행하기 위한 의사 코드를 나타낸 것이다. 유사한 프로세스가 LUMSHIFT2 및 LUMSCALE2에 기초하여 제2 참조 필드에 대해 페이딩 보상을 위해 수행된다.LUMSHIFT1, LUMSCALE1, LUMSHIFT2, and LUMSCALE2 correspond to parameters B1, Cl, B2, and C2. LUMSCALE1, LUMSCALE2, LUMSHIFT1, and LUMSHIFT2 are each signaled using 6-bit FLC. As another alternative, the parameter is signaled using VLC. FIG. 56 illustrates pseudo code for performing fading compensation on a first reference field based on LUMSHIFT1 and LUMSCALE1. A similar process is performed for fading compensation on the second reference field based on LUMSHIFT2 and LUMSCALE2.

다른 대안으로서, 페이딩 보상 파라미터는 다른 표현을 가지며 및/또는 다른 시그널링 메카니즘으로 시그널링된다.As another alternative, the fading compensation parameter has a different representation and / or is signaled with a different signaling mechanism.

G. 추정 및 G. Estimation and 시그널링Signaling 기술 Technology

도 20의 인코더(2000) 등의 인코더 또는 도 42의 프레임워크(4200)에서의 인코더는 2개의 참조 필드를 갖는 인터레이스형 P-필드에 대한 페이딩 추정 및 대응하는 시그널링을 수행한다. 예를 들어, 인코더는 도 45a에 도시한 기술(4500)을 수행한다.An encoder such as encoder 2000 of FIG. 20 or an encoder in framework 4200 of FIG. 42 performs fading estimation and corresponding signaling for an interlaced P-field having two reference fields. For example, the encoder performs the technique 4500 shown in FIG. 45A.

인코더는 P-필드에 대한 2개의 참조 필드 중 첫번째 것에 대해 페이딩 검출(4510)을 수행한다. 페이딩이 검출되는 경우(판정 단계(4512)로부터의 "예" 경로), 인코더는 제1 참조 필드에 대한 P-필드의 페이딩 추정(4524)을 수행하며, 이는 제1 참조 필드에 대한 페이딩 보상 파라미터를 생성한다. 인코더는 또한 P-필드에 대한 2개의 참조 필드 중 두번째 것에 대해 페이딩 검출(4520)을 수행한다. 페이딩이 검출되는 경우(판정 단계(4522)로부터의 "예" 경로), 인코더는 제2 참조 필드에 대한 P-필드의 페이딩 추정(4524)을 수행하며, 이는 제2 참조 필드에 대한 페이딩 보상 파라미터를 생성한다. 예를 들어, 인코더는 "페이딩 파라미터의 추정"이라는 제목의 섹션에 기술된 바와 같이 페이딩 검출 및 추정을 수행한다. 다른 대안으로서, 인코더는 페이딩을 검출 및/또는 페이딩 보상 파라미터를 획득하기 위해 다른 기술을 사용한다. 현재 P-필드가 단지 하나의 참조 필드만을 갖는 경우, 제2 참조 필드에 대한 동작은 생략될 수 있다.The encoder performs fading detection 4510 on the first of two reference fields for the P-field. If fading is detected (“Yes” path from decision step 4512), the encoder performs fading estimation 4524 of the P-field for the first reference field, which is a fading compensation parameter for the first reference field. Create The encoder also performs fading detection 4520 for the second of the two reference fields for the P-field. If fading is detected (“Yes” path from decision step 4522), the encoder performs fading estimation 4524 of the P-field for the second reference field, which is a fading compensation parameter for the second reference field. Create For example, the encoder performs fading detection and estimation as described in the section entitled "Estimate of Fading Parameters." As another alternative, the encoder uses other techniques to detect fading and / or obtain fading compensation parameters. If the current P-field has only one reference field, the operation for the second reference field can be omitted.

인코더는 P-필드에 대해 페이딩 보상이 온인지 오프인지를 시그널링한다(단계 4530). 예를 들어, 인코더는 이 정보를 P-필드에 대한 움직임 벡터 모드 정보와 공동으로 코딩한다. 다른 대안으로서, 인코더는 P-필드에 대해 페이딩 보상이 온인지 오프인지를 알려주기 위해 다른 및/또는 부가의 신호를 사용한다. 현재의 P-필드에 대해 페이딩 보상이 온이 아닌 경우(판정 단계(4532)로부터의 "아니오" 경로), 기술(4500)이 종료된다.The encoder signals whether fading compensation is on or off for the P-field (step 4530). For example, the encoder jointly codes this information with motion vector mode information for the P-field. As another alternative, the encoder uses other and / or additional signals to indicate whether fading compensation is on or off for the P-field. If fading compensation is not on for the current P-field (“No” path from decision step 4532), the description 4500 ends.

그렇지 않은 경우(판정 단계(4532)로부터의 "예" 경로), 인코더는 페이딩 보상에 대한 참조 필드 패턴을 시그널링한다(단계 4540). 예를 들어, 인코더는 페이딩 보상이 양쪽 참조 필드 둘다에 대해, 제1 참조 필드에 대해서만, 또는 제2 참조 필드에 대해서만 사용되는지를 가리키는 VLC를 시그널링한다. 다른 대안으로서, 인코더는 참조 필드 패턴을 알려주기 위해 다른 시그널링 메카니즘(예를 들어, FLC)를 사용한다. 이 경로에서, 인코더는 또한 페이딩 추정에서 계산된 제1 및/또는 제2 페이딩 보상 파라미터 세트를 시그널링한다(단계 4542). 예를 들어, 인코더는 섹션 XI.F에 기술된 바와 같은 시그널링을 사용한다. 다른 대안으로서, 인코더는 다른 시그널링을 사용한다.If not (“Yes” path from decision step 4532), the encoder signals a reference field pattern for fading compensation (step 4540). For example, the encoder signals a VLC indicating whether fading compensation is used for both reference fields, only for the first reference field or only for the second reference field. As another alternative, the encoder uses another signaling mechanism (eg, FLC) to inform the reference field pattern. In this path, the encoder also signals the first and / or second fading compensation parameter set calculated in the fading estimate (step 4542). For example, the encoder uses signaling as described in section XI.F. As another alternative, the encoder uses other signaling.

인코더가 일반적으로 페이딩 보상, 움직임 추정 및 움직임 보상도 수행하지만, 간단함을 위해, 도 45a는 이들 동작을 나타내지 않았다. 게다가, 움직임 추정 이전에 또는 그와 동시에 페이딩 추정이 수행될 수 있다. 도 45a는 이 기술(4500)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식을 나타내지 않았다. 여러가지 결합 구현이 섹션 XII에 상세히 기술되어 있다.Although the encoder generally performs fading compensation, motion estimation and motion compensation as well, for simplicity, FIG. 45A does not show these operations. In addition, fading estimation may be performed prior to or concurrent with motion estimation. 45A does not represent the various ways in which this technique 4500 may be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

H. 디코딩 및 보상 기술H. Decoding and Compensation Technology

도 21의 디코더(2100) 등의 디코더 또는 도 43의 프레임워크(4300)에서의 디코더는 2개의 참조 필드를 갖는 인터레이스형 P-필드에 대한 디코딩 및 페이딩 보상을 수행한다. 예를 들어, 디코더는 도 45b에 도시된 기술(4550)을 수행한다.A decoder such as decoder 2100 of FIG. 21 or a decoder in framework 4300 of FIG. 43 performs decoding and fading compensation on an interlaced P-field having two reference fields. For example, the decoder performs the technique 4550 shown in FIG. 45B.

디코더는 P-필드에 대해 페이딩 보상이 온인지 오프인지를 알려주는 하나 이상의 신호를 수신 및 디코딩한다(단계 4560). 예를 들어, 이 정보는 P-필드에 대한 움직임 벡터 모드 정보와 공동으로 코딩된다. 다른 대안으로서, 디코더는 P-필드에 대해 페이딩 보상이 온인지 오프인지를 알려주기 위해 다른 및/또는 부가의 신호를 수신 및 디코딩한다. P-필드에 대해 페이딩 보상이 온이 아닌 경우(판정 단계(4562)로부터의 "아니오" 경로), 이 기술(4550)은 종료한다.The decoder receives and decodes one or more signals that indicate whether fading compensation is on or off for the P-field (step 4560). For example, this information is coded jointly with motion vector mode information for the P-field. As another alternative, the decoder receives and decodes other and / or additional signals to indicate whether fading compensation is on or off for the P-field. If fading compensation is not on for the P-field (the "no" path from decision step 4652), this technique 4550 ends.

그렇지 않은 경우(판정 단계(4562)로부터의 "예" 경로), 디코더는 페이딩 보상을 위해 참조 필드 패턴을 수신 및 디코딩한다(단계 4570). 예를 들어, 디코더는 페이딩 보상이 양쪽 참조 필드 둘다에 대해, 제1 참조 필드에 대해서만, 또는 제2 참조 필드에 대해서만 사용되는지를 가리키는 VLC를 수신 및 디코딩한다. 다른 대안으로서, 디코더는 참조 필드 패턴을 결정하기 위해 다른 시그널링 메카니 즘(예를 들어, FLC)와 관련하여 동작한다.If not (“Yes” path from decision step 4462), the decoder receives and decodes the reference field pattern for fading compensation (step 4570). For example, the decoder receives and decodes VLC indicating whether fading compensation is used for both reference fields, only for the first reference field, or only for the second reference field. As another alternative, the decoder operates in conjunction with another signaling mechanism (eg, FLC) to determine the reference field pattern.

이 경로에서, 디코더는 또한 제1 페이딩 보상 파라미터 세트를 수신 및 디코딩한다(단계 4572). 예를 들어, 디코더는 섹션 XI.F에 기술한 바와 같은 시그널링으로 동작한다. 다른 대안으로서, 디코더는 다른 시그널링으로 동작한다.In this path, the decoder also receives and decodes the first set of fading compensation parameters (step 4572). For example, the decoder operates with signaling as described in section XI.F. As another alternative, the decoder operates with other signaling.

페이딩 보상이 2개의 참조 필드 중 하나에 대해서만 수행되는 경우(판정 단계(4575)로부터의 "아니오" 경로), 제1 파라미터 세트는 참조 필드 패턴에 의해 표시된 바와 같이 제1 또는 제2 참조 필드에 대한 것이다. 디코더는 제1 페이딩 보상 파라미터 세트로 상기 표시된 참조 필드에 대해 페이딩 보상을 수행하고(단계 4592), 이 기술(4500)은 종료한다.If fading compensation is performed on only one of the two reference fields (the "no" path from decision step 4475), the first parameter set is applied to the first or second reference field as indicated by the reference field pattern. will be. The decoder performs fading compensation on the indicated reference field with the first set of fading compensation parameters (step 4592) and the description 4500 ends.

그렇지 않은 경우, 2개의 참조 필드 둘다에 대해 페이딩 보상이 수행되고(판정 단계(4575)로부터의 "예" 경로), 디코더는 제1 페이딩 보상 파라미터 세트를 수신 및 디코딩한다(단계 4580). 예를 들어, 디코더는 섹션 XI.F에 기술된 바와 같은 시그널링으로 동작한다. 다른 대안으로서, 디코더는 다른 시그널링으로 동작한다. 이 경우, 제1 파라미터 세트는 2개의 참조 필드 중 하나에 대한 것이고, 제2 파라미터 세트는 나머지 참조 필드에 대한 것이다. 디코더는 제1 파라미터 세트로 한쪽 참조 필드에 대한 페이딩 보상을 수행하고(단계 4592), 제2 파라미터 세트로 다른쪽 참조 필드에 대한 페이딩 보상을 수행한다(단계 4582).Otherwise, fading compensation is performed on both reference fields (“YES” path from decision step 4475), and the decoder receives and decodes the first set of fading compensation parameters (step 4580). For example, the decoder operates with signaling as described in section XI.F. As another alternative, the decoder operates with other signaling. In this case, the first parameter set is for one of two reference fields and the second parameter set is for the remaining reference fields. The decoder performs fading compensation on one reference field with the first parameter set (step 4592) and fading compensation on the other reference field with the second parameter set (step 4582).

간단함을 위해, 도 45b는 이 기술(4550)이 인코딩 및 디코딩의 다른 측면들과 통합될 수 있는 여러가지 방식들을 나타내지 않았다. 여러가지 결합 구현은 섹션 XII에 상세히 기술되어 있다.For simplicity, FIG. 45B does not represent various ways in which this technique 4550 can be integrated with other aspects of encoding and decoding. Various combined implementations are described in detail in section XII.

XIIXII . 결합 구현. Combined implementation

이제부터, 인터레이스형 P-필드를 중심으로 하여, 비트스트림 신택스, 시맨틱스 및 디코더에 대한 상세한 결합 구현에 대해 기술한다. 이하의 설명은 제1 결합 구현 및 대안적인 제2 결합 구현을 포함한다. 게다가, 2004년 5월 27일자로 출원된 미국 특허 출원 제10/857,473호는 제3 결합 구현의 측면들에 대해 개시하고 있다.We now describe a detailed combined implementation for bitstream syntax, semantics, and decoders, centered on interlaced P-fields. The following description includes a first combined implementation and an alternative second combined implementation. In addition, US patent application Ser. No. 10 / 857,473, filed May 27, 2004, discloses aspects of a third combined implementation.

인터레이스형 P-필드를 중심으로 하고 있지만, 이 섹션의 여러 곳에서, 다른 픽처 유형(예를 들어, 인터레이스형 P-프레임 및 B-프레임, 인터레이스형 I, BI, PI 및 B-필드)에 대한 신택스 요소, 시맨틱스 및 디코딩의 적용가능성에 대해서도 언급한다.While it is centered on interlaced P-fields, in many places in this section, it is possible to use different picture types (for example, interlaced P-frames and B-frames, interlaced I, BI, PI, and B-fields). Reference is also made to the applicability of syntax elements, semantics and decoding.

A. 제1 결합 구현에서의 A. In the first combined implementation 시퀀스sequence  And 시맨틱스Semantics

제1 결합 구현에서, 압축된 비디오 시퀀스는 계층 구조, 즉 픽처 계층, 매크로블록 계층 및 블록 계층으로 구조화된 데이터로 이루어져 있다. 시퀀스 계층은 시퀀스에 선행하고, 진입점 계층(entry point layer)은 시퀀스에 산재되어 있을 수 있다. 도 46a 내지 도 46e는 여러가지 계층을 구성하는 비트스트림 요소를 나타낸 것이다.In a first combined implementation, the compressed video sequence consists of data structured in a hierarchical structure, that is, a picture layer, a macroblock layer and a block layer. The sequence layer may precede the sequence and the entry point layer may be interspersed in the sequence. 46A to 46E illustrate bitstream elements constituting various layers.

1. One. 시퀀스sequence 계층  hierarchy 신택스Syntax  And 시맨틱스Semantics

시퀀스-레벨 헤더는 압축된 픽처 시퀀스를 디코딩하는 데 사용되는 시퀀스-레벨 파라미터를 포함한다. 어떤 프로필에서, 시퀀스-관련 메타데이터는 전송 계 층 또는 다른 수단에 의해 디코더로 전달된다. 그렇지만, 인터레이스형 P-필드를 갖는 프로필(고급 프로필)의 경우, 이 헤더 신택스는 비디오 데이터 비트스트림의 일부이다.The sequence-level header includes a sequence-level parameter used to decode the compressed picture sequence. In some profiles, sequence-related metadata is delivered to the decoder by the transport layer or other means. However, for profiles (advanced profiles) with interlaced P-fields, this header syntax is part of the video data bitstream.

도 46a는 고급 프로필에 대한 시퀀스 헤더를 이루는 신택스 요소를 나타낸 것이다. PROFILE(4601) 및 LEVEL(4602) 요소는 각각 시퀀스 및 인코딩 레벨을 프로필에 인코딩하는 데 사용되는 프로필을 규정한다. 인터레이스형 P-필드의 경우에 특히 관심을 끄는 것은, INTERLACE(4603) 요소가 소스 콘텐츠가 순차(INTERLACE=0)인지 인터레이스(INTERLACE=1)인지를 시그널링하는 1-비트 신택스 요소라는 것이다. INTERLACE = 1일 때, 개개의 프레임은 여전히 순차 또는 인터레이스 신택스를 사용하여 코딩될 수 있다.46A illustrates syntax elements that constitute a sequence header for an advanced profile. The PROFILE 4601 and LEVEL 4602 elements define the profile used to encode the sequence and encoding level into the profile, respectively. Of particular interest in the case of interlaced P-fields is that the INTERLACE 4603 element is a 1-bit syntax element that signals whether the source content is sequential (INTERLACE = 0) or interlaced (INTERLACE = 1). When INTERLACE = 1, individual frames can still be coded using sequential or interlaced syntax.

2. 진입점 계층 2. Entry point hierarchy 신택스Syntax  And 시맨틱스Semantics

진입점 헤더는 고급 프로필에 존재한다. 진입점은 2가지 목적을 갖는다. 첫째, 진입점은 비트스트림 내의 랜덤 액세스 포인트를 시그널링하는 데 사용된다. 둘째, 진입점은 코딩 제어 파라미터의 변화를 시그널링하는 데 사용된다.Entry point headers exist in the advanced profile. The entry point has two purposes. First, the entry point is used to signal a random access point in the bitstream. Second, the entry point is used to signal a change in the coding control parameter.

도 46b는 진입점 계층을 구성하는 신택스 요소를 나타낸 것이다. 인터레이스형 P-필드의 경우 특히 관심을 끄는 것은, 참조 프레임 거리 플래그 REFDISTFLAG(4611) 요소가 1-비트 신택스 요소라는 것이다. REFDISTFLAG = 1 은REFDIST(4624) 요소가 I/I, I/P, P/I 또는 P/P 필드 픽처 헤더에 존재함을 가리킨다. REFDISTFLAG = 0은 REFDIST(4624) 요소가 I/I, I/P, P/I 또는 P/P 필드 픽처 헤더에 존재하지 않음을 가리킨다.46B illustrates syntax elements constituting an entry point hierarchy. Of particular interest for interlaced P-fields is that the reference frame distance flag REFDISTFLAG 4611 element is a 1-bit syntax element. REFDISTFLAG = 1 indicates that a REFDIST 4624 element is present in the I / I, I / P, P / I or P / P field picture header. REFDISTFLAG = 0 indicates that a REFDIST 4624 element is not present in the I / I, I / P, P / I or P / P field picture header.

확장된 움직임 벡터 플래그 EXTENDED_MV(4612) 요소는 확장된 움직임 벡터 기능이 온되어 있는지(EXTENDED_MV = 1) 오프되어 있는지(EXTENDED_MV = 0)를 가리키는 1-비트 요소이다. 확장된 차분 움직임 벡터 범위 플래그 EXTENDED_DMV(4613) 요소는 EXTENDED_MV = 1인 경우에 존재하는 1-비트 신택스 요소이다. EXTENDED_DMV = l인 경우, 확장된 차분 움직임 벡터 범위에서의 움직임 벡터 차분은 진입점 세그먼트 내의 픽처 계층에서 시그널링된다. EXTENDED_DMV = 0인 경우, 확장된 차분 움직임 벡터 범위에서의 움직임 벡터 차분은 시그널링되지 않는다. 확장된 차분 움직임 벡터 범위는 인터레이스형 P-필드 및 P-프레임 및 인터레이스형 B-필드 및 B-프레임을 비롯한 인터레이스형 P-픽처 및 B-픽처에 대한 옵션이다.The extended motion vector flag EXTENDED_MV 4612 element is a 1-bit element indicating whether the extended motion vector function is on (EXTENDED_MV = 1) or off (EXTENDED_MV = 0). The extended differential motion vector range flag EXTENDED_DMV 4613 element is a 1-bit syntax element that exists when EXTENDED_MV = 1. If EXTENDED_DMV = l, motion vector differences in the extended differential motion vector range are signaled in the picture layer within the entry point segment. If EXTENDED_DMV = 0, motion vector differences in the extended differential motion vector range are not signaled. Extended differential motion vector range is an option for interlaced P-pictures and B-pictures, including interlaced P-fields and P-frames and interlaced B-fields and B-frames.

3. 3. 픽처Picture 계층  hierarchy 신택스Syntax  And 시맨틱스Semantics

픽처에 대한 데이터는 픽처 헤더 및 그 다음에 오는 매크로블록 계층에 대한 데이터로 이루어져 있다. 도 46c는 인터레이스형 필드 픽처에 대한 프레임 헤더를 구성하는 비트스트림 요소를 나타낸 것이다. 이하의 설명에서는, 인터레이스형 P-필드와 함께 사용되는 요소들에 중점을 두지만, 도 46c에 도시된 헤더는 인터레이스형 I-, P-, B- 및 BI-필드의 여러가지 조합에 적용가능하다.Data for a picture consists of data for the picture header and the following macroblock layer. 46C shows a bitstream element constituting a frame header for an interlaced field picture. In the following description, the emphasis is on elements used with interlaced P-fields, but the header shown in FIG. 46C is applicable to various combinations of interlaced I-, P-, B- and BI-fields. .

프레임 코딩 모드 FCM(4621) 요소는 고급 프로필에만 또 시퀀스 계층 INTERLACE(4603)이 값 1을 갖는 경우에만 존재한다. FCM(4621)은 픽처가 순차, 인터레이스-필드 또는 인터레이스-프레임인지를 가리킨다. 도 47a의 테이블은 FCM으로 픽처 코딩 유형을 가리키는 데 사용되는 VLC를 포함한다.The frame coding mode FCM 4651 element is present only in the advanced profile and only when the sequence layer INTERLACE 4603 has a value of 1. FCM 4651 indicates whether the picture is a sequential, interlaced-field or interlaced frame. The table of FIG. 47A includes the VLC used to indicate the picture coding type to the FCM.

필드 픽처 유형 FPTYPE(4622) 요소는 인터레이스형 필드 픽처에 대한 픽처 헤더에 존재하는 3-비트 신택스 요소이다. FPTYPE은 도 47b의 테이블에 따라 디코딩된다. 테이블이 나타내는 바와 같이, 인터레이스형 프레임은 2개의 인터레이스형 I-필드, 하나의 인터레이스형 I-필드 및 하나의 인터레이스형 P-필드, 2개의 인터레이스형 P-필드, 2개의 인터레이스형 B-필드, 하나의 인터레이스형 B-필드 및 하나의 인터레이스형 BI-필드 또는 2개의 인터레이스형 BI-필드를 포함할 수 있다.The field picture type FPTYPE 4462 element is a 3-bit syntax element present in the picture header for an interlaced field picture. The FPTYPE is decoded according to the table of Fig. 47B. As the table shows, an interlaced frame includes two interlaced I-fields, one interlaced I-field and one interlaced P-field, two interlaced P-fields, two interlaced B-fields, It may include one interlaced B-field and one interlaced BI-field or two interlaced BI-fields.

상부 필드 첫번째 TFF(4623) 요소는 시퀀스 헤더 요소 PULLDOWN = 1이고 시퀀스 헤더 요소 INTERLACE = 1 인 경우에 고급 프로필 픽처 헤더에 존재하는 1-비트 요소이다. TFF = 1은 상부 필드가 첫번째 디코딩된 필드임을 암시한다. TFF = 0인 경우, 하부 필드는 첫번째 디코딩된 필드이다.The upper field first TFF 4603 element is a 1-bit element present in the advanced profile picture header when the sequence header element PULLDOWN = 1 and the sequence header element INTERLACE = 1. TFF = 1 implies that the upper field is the first decoded field. If TFF = 0, the lower field is the first decoded field.

P 참조 거리 REFDIST(4624) 요소는 진입 레벨 플래그 REFDIST_FLAG = 1인 경우에 및 픽처 유형이 B/B, B/BI, BI/B, BI/BI가 아닌 경우에 인터레이스형 필드 픽처 헤더에 존재하는 가변 크기 신택스 요소이다. REFDIST_FLAG = 0인 경우, REFDIST(4624)는 0의 디폴트 값으로 설정된다. REFDIST(4624)는 현재 프레임과 참조 프레임 간의 프레임의 개수를 가리킨다. 도 47c의 테이블은 REFDIST(4624) 값에 대해 사용되는 VLC를 포함한다. 테이블에서의 마지막 행은 2보다 큰 참조 프레임 거리를 나타내는 데 사용되는 코드워드를 나타낸다. 이들은 (이진) 11 및 그 뒤의 N-3개(단, N은 참조 프레임 거리임)의 1로 코딩되어 있다. 코드워드에서의 마지막 비트는 0이다. REFDIST(4624)의 값은 16보다 작거나 같다. 예를 들어,The P reference distance REFDIST 4624 element is a variable present in the interlaced field picture header when the entry level flag REFDIST_FLAG = 1 and when the picture type is not B / B, B / BI, BI / B, BI / BI. Size syntax element. If REFDIST_FLAG = 0, REFDIST 4624 is set to a default value of zero. REFDIST 4624 indicates the number of frames between the current frame and the reference frame. The table of FIG. 47C includes the VLC used for the REFDIST 4624 value. The last row in the table represents a codeword used to indicate a reference frame distance greater than two. They are coded as 1 (binary) 11 and N-3 (where N is the reference frame distance). The last bit in the codeword is zero. The value of REFDIST 4624 is less than or equal to 16. E.g,

N = 3, VLC 코드워드 = 110, VLC 크기 = 3, N = 3, VLC codeword = 110, VLC size = 3,

N = 4, VLC 코드워드 = 1110, VLC 크기 = 4, 및N = 4, VLC codeword = 1110, VLC size = 4, and

N = 5, VLC 코드워드 = 11110, VLC 크기 = 5. N = 5, VLC codeword = 11110, VLC size = 5.

필드 픽처 계층 FIELDPICLAYER(4625) 요소는 인터레이스형 프레임의 개별적인 인터레이스형 필드 중 하나에 대한 데이터이다. 인터레이스형 프레임이 P/P 프레임인 경우(FPTYPE=011), 비트스트림은 2개의 인터레이스형 P-필드에 대한 2개의 FIELDPICLAYER(4625) 요소를 포함한다. 도 46d는 인터레이스형 P-필드 픽처에 대한 필드 픽처 헤더를 구성하는 비트스트림 요소를 나타낸 것이다.The field picture layer FIELDPICLAYER 4625 element is data for one of the individual interlaced fields of the interlaced frame. If the interlaced frame is a P / P frame (FPTYPE = 011), the bitstream includes two FIELDPICLAYER 4625 elements for two interlaced P-fields. 46D illustrates bitstream elements constituting a field picture header for an interlaced P-field picture.

참조 픽처 NUMREF(4631) 요소의 개수는 인터레이스형 P-필드 헤더에 존재하는 1-비트 신택스 요소이다. 이는 인터레이스형 P-필드가 1개(NUMREF = 0) 또는 2개(NUMREF = 1)의 참조 필드를 갖는지를 가리킨다. 참조 필드 픽처 표시자 REFFIELD(4632)는 NUMREF = 0인 경우에 인터레이스형 P-필드에 존재하는 1-비트 신택스 요소이다. 이는 2개의 가능한 참조 픽처 중 어느 것을 인터레이스형 P-필드가 사용하는지를 가리킨다.The number of reference picture NUMREF (4631) elements is a 1-bit syntax element present in the interlaced P-field header. This indicates whether the interlaced P-field has one (NUMREF = 0) or two (NUMREF = 1) reference fields. Reference field picture indicator REFFIELD 4452 is a 1-bit syntax element present in an interlaced P-field when NUMREF = 0. This indicates which of the two possible reference pictures the interlaced P-field uses.

확장된 MV 범위 플래그 MVRANGE(4633)는 일반적으로 움직임 벡터에 대한 확장된 범위(즉, 움직임 벡터에 대한 더 긴 가능한 수평 및/또는 수직 변위)를 가리키는 가변-크기 신택스 요소이다. 확장된 차분 MV 범위 플래그 DMVRANGE(4634)는 EXTENDED_DMV = 1인 경우에 존재하는 가변-크기 신택스 요소이다. 도 47d의 테이블은 DMVRANGE(4634) 요소에 대해 사용된다. MVRANGE(4633) 및 DMVRANGE(4634) 둘다는 움직임 벡터 차분을 디코딩하는 데 사용되고 확장된 차분 움직임 벡터 범위는 인터레이스형 P-필드, 인터레이스형 P-프레임, 인터레이스형 B-필드 및 인터레이스형 B-프레임에 대한 옵션이다.Extended MV range flag MVRANGE 4463 is a variable-size syntax element that generally indicates an extended range for the motion vector (ie, a longer possible horizontal and / or vertical displacement for the motion vector). Extended differential MV range flag DMVRANGE 4464 is a variable-size syntax element that exists when EXTENDED_DMV = 1. The table of FIG. 47D is used for the DMVRANGE 4464 element. Both MVRANGE 4463 and DMVRANGE 4464 are used to decode motion vector differences and extended differential motion vector ranges are applied to interlaced P-fields, interlaced P-frames, interlaced B-fields, and interlaced B-frames. Is an option.

움직임 벡터 모드 MVMODE(4635) 요소는 4개의 움직임 벡터 코딩 모드 중 하나 또는 하나의 세기 보상 모드를 시그널링하는 가변-크기 신택스 요소이다. 움직임 벡터 코딩 모드는 움직임 보상을 위한 서로 다른 서브-픽셀 보간 규칙을 갖는 3개의 "1MV" 모드를 포함한다. 1MV는 픽처 내의 각각의 매크로블록이 기껏해야 하나의 움직임 벡터를 갖는다는 것을 뜻한다. "혼합-MV" 모드에서, 픽처 내의 각각의 매크로블록은 하나 또는 4개의 움직임 벡터를 가질 수 있거나 건너뜀(skipped)일 수 있다. PQUANT(픽처에 대한 양자화 계수)의 값에 따라, 도 47e에 도시된 테이블 중 어느 하나가 MVMODE(4635) 요소에 대해 사용된다.The motion vector mode MVMODE 4635 element is a variable-size syntax element that signals one or one intensity compensation mode of four motion vector coding modes. The motion vector coding mode includes three "1MV" modes with different sub-pixel interpolation rules for motion compensation. 1 MV means that each macroblock in a picture has at most one motion vector. In the "mixed-MV" mode, each macroblock in a picture may have one or four motion vectors or may be skipped. Depending on the value of PQUANT (quantization coefficient for the picture), any of the tables shown in FIG. 47E is used for the MVMODE 4635 element.

움직임 벡터 모드 2 MVMODE2(4636) 요소는 MVMODE(4635)가 세기 보상을 시그널링하는 경우 인터레이스형 P-필드 헤더에 존재하는 가변-크기 신택스 요소이다. PQUANT의 값에 따라, 도 47f에 도시된 테이블 중 어느 하나가 MVMODE(4635) 요소에 대해 사용된다.The motion vector mode 2 MVMODE2 4636 element is a variable-size syntax element present in the interlaced P-field header when the MVMODE 4635 signals intensity compensation. Depending on the value of PQUANT, any one of the tables shown in FIG. 47F is used for the MVMODE 4635 element.

세기 보상 필드 INTCOMPFIELD(4637)는 인터레이스형 P-필드 픽처 헤더에 존재하는 가변-크기 신택스 요소이다. 도 47g의 테이블에 나타낸 바와 같이, INTCOMPFIELD(4637)은 어느 참조 필드(들)가 세기 보상을 받는지를 가리키기 위해 사용된다. INTCOMPFIELD(4637)는 NUMREF = 0인 경우에도 존재한다. The intensity compensation field INTCOMPFIELD 4637 is a variable-size syntax element present in the interlaced P-field picture header. As shown in the table of FIG. 47G, INTCOMPFIELD 4637 is used to indicate which reference field (s) are intensity compensated. INTCOMPFIELD 4637 is present even when NUMREF = 0.

필드 픽처 루마 스케일 1 LUMSCALE1(4638), 필드 픽처 루마 천이 1 LUMSHIFT1(4639), 필드 픽처 루마 스케일 2 LUMSCALE2(4640), 및 필드 픽처 루마 천이 2 LUMSHIFT2(4641) 요소는 각각 세기 보상에서 사용되는 6-비트 값이다. LUMSCALE1(4638) 및 LUMSHIFT1(4639) 요소는 MVMODE(4635)가 세기 보상을 시그널링 하는 경우에 존재한다. INTCOMPFIELD(4637) 요소가 '1' 또는 '00'인 경우, LUMSCALE1(4638) 및 LUMSHIFT1(4639)은 상부 필드에 적용된다. 그렇지 않은 경우, LUMSCALE1(4638) 및 LUMSHIFT1(4639)는 하부 필드에 적용된다. LUMSCALE2(4640) 및 LUMSHIFT2(4641) 요소는 MVMODE(4635)이 세기 보상을 시그널링하고 또 INTCOMPFIELD(4637) 요소가 '1'인 경우에 존재한다. LUMSCALE2(4640) 및 LUMSHIFT2(4641)은 하부 필드에 적용된다.The field picture luma scale 1 LUMSCALE1 (4638), field picture luma transition 1 LUMSHIFT1 (4639), field picture luma scale 2 LUMSCALE2 (4640), and field picture luma transition 2 LUMSHIFT2 (4641) elements are each used for intensity compensation. Bit value. The LUMSCALE1 4638 and LUMSHIFT1 4739 elements are present when the MVMODE 4635 signals intensity compensation. If the INTCOMPFIELD 4637 element is '1' or '00', LUMSCALE1 4638 and LUMSHIFT1 4639 apply to the upper field. Otherwise, LUMSCALE1 4638 and LUMSHIFT1 4639 apply to the lower field. The LUMSCALE2 4640 and LUMSHIFT2 4641 elements are present when the MVMODE 4635 signals intensity compensation and the INTCOMPFIELD 4637 element is '1'. LUMSCALE2 4640 and LUMSHIFT2 4641 apply to the lower field.

매크로블록 모드 테이블 MBMODETAB(4642) 요소는 인터레이스형 P-필드 헤더에 대한 3-비트값을 갖는 고정 길이 필드이다. MBMODETAB(4642)은 8개의 코드 테이블(3-비트 값으로 지정된 테이블 0 내지 7) 중 어느 것이 매크로블록 계층에서의 매크로블록 모드 MBMODE(4661) 신택스 요소를 인코딩/디코딩하는 데 사용되는지를 가리킨다. 8개 코드 테이블의 세트가 2개 있으며, 사용되는 세트는 MVMODE(4653)에 의해 표시된 바와 같이 픽처에서 4MV 매크로블록이 가능한지 여부에 의존한다. 도 47h는 혼합-MV 모드에서 인터레이스형 P-필드에서 MBMODE(4661)에 대해 이용가능한 8개의 테이블을 나타낸 것이다. 도 47i는 1MV 모드에서 인터레이스형 P-필드에서 MBMODE(4661)에 대해 이용가능한 8개의 테이블을 나타낸 것이다.The macroblock mode table MBMODETAB 4464 element is a fixed length field with a 3-bit value for the interlaced P-field header. MBMODETAB 4464 indicates which of the eight code tables (tables 0 through 7 specified as 3-bit values) is used to encode / decode the macroblock mode MBMODE 4471 syntax element in the macroblock layer. There are two sets of eight code tables, and the set used depends on whether 4MV macroblocks are possible in the picture as indicated by MVMODE 4465. 47H shows eight tables available for MBMODE 461 in an interlaced P-field in mixed-MV mode. 47I shows eight tables available for MBMODE 461 in an interlaced P-field in 1MV mode.

움직임 벡터 테이블 MVTAB(4643) 요소는 고정 길이 필드이다. NUMREF = 0인 인터레이스형 P-필드의 경우, MVTAB(4643)는 4개의 코드 테이블(2-비트 값으로 지정되는 테이블 0 내지 3) 중 어느 것이 움직임 벡터 데이터를 디코딩하는 데 사용되는지를 가리키는 2-비트 신택스 요소이다. NUMREF = 1인 인터레이스형 P-필드의 경우, MVTAB(4643)는 8개의 코드 테이블(3-비트 값으로 지정된 테이블 0 내지 7) 중 어느 것이 움직임 벡터 데이터를 인코딩/디코딩하는 데 사용되는지를 가리키는 3-비트 신택스 요소이다. The motion vector table MVTAB 4641 element is a fixed length field. For an interlaced P-field with NUMREF = 0, MVTAB 4641 has a 2-point indicating which of the four code tables (tables 0 to 3, specified as 2-bit values) are used to decode the motion vector data. Bit syntax element. For interlaced P-fields with NUMREF = 1, MVTAB 4641 indicates that which of the eight code tables (tables 0 through 7 specified as 3-bit values) is used to encode / decode the motion vector data. -Bit syntax element.

인터레이스형 P-필드 헤더에서, 4MV 블록 패턴 테이블 4MVBPTAB(4644) 요소는 MVMODE(4635) (또는 MVMODE(4635)가 세기 보상으로 설정되어 있는 경우, MVMODE2(4636))가 픽처가 혼합-MV 유형임을 가리키는 경우에 존재하는 2-비트 값이다. 4MVBPTAB(4644) 신택스 요소는 4개의 테이블(2-비트 값으로 지정된 테이블 0 내지 3) 중 어느 것이 4MV 매크로블록에서의 4MV 블록 패턴 4MVBP(4664) 신택스 요소에 대해 사용되는지를 시그널링한다. 도 47j는 4MVBP(4664)에 대해 이용가능한 4개의 테이블을 나타낸 것이다.In the interlaced P-field header, the 4MV block pattern table 4MVBPTAB 4644 element is MVMODE 4635 (or MVMODE2 4636, if MVMODE 4635 is set to strength compensation), indicating that the picture is of mixed-MV type. It is a 2-bit value that exists if indicated. The 4MVBPTAB 4644 syntax element signals which of the four tables (tables 0 to 3 specified as 2-bit values) is used for the 4MV block pattern 4MVBP 4466 syntax element in the 4MV macroblock. 47J shows four tables available for 4MVBP 4466.

인터레이스형 P-프레임 헤더(도시 생략)는 도 46c에 도시된 필드-코딩된 인터레이스형 프레임 헤더 및 도 46d에 도시된 인터레이스형 P-필드와 동일한 요소를 많이 가지고 있다. 이들은 FCM(4621), MVRANGE(4633), DMVRANGE(4634), MBMODETAB(4642), 및 MVTAB(4643)을 포함하지만, 인터레이스형 P-프레임에 대한 정확한 신택스 및 시맨틱스는 인터레이스형 P-필드와 다를 수 있다. 인터레이스형 P-프레임 헤더는 또한 1MV와 4MV 모드 간을 전환하는 픽처 유형 및 세기 보상 시그널링에 대한 다른 요소를 포함한다.The interlaced P-frame header (not shown) has many of the same elements as the field-coded interlaced frame header shown in FIG. 46C and the interlaced P-field shown in FIG. 46D. These include FCM 4651, MVRANGE 4463, DMVRANGE 4464, MBMODETAB 4462, and MVTAB 4641, but the exact syntax and semantics for interlaced P-frames may differ from interlaced P-fields. have. The interlaced P-frame header also includes other elements for picture type and intensity compensation signaling to switch between 1MV and 4MV modes.

인터레이스형 P-프레임이 매크로블록당 2개의 움직임 벡터를 갖는 필드-코딩된 매크로블록을 포함할 수 있기 때문에, 인터레이스형 P-프레임 헤더는 2 움직임 벡터 블록 패턴 테이블 2MVBPTAB 요소를 포함한다. 2MVBPTAB은 인터레이스형 P-프레임에 존재하는 2-비트 값이다. 이 신택스 요소는 4개의 테이블(2-비트 값으로 지정된 테이블 0 내지 3) 중 어느 것이 2MV 필드-코딩된 매크로블록에서의 2MV 블록 패턴(2MVBP)를 디코딩하는 데 사용되는지를 시그널링한다. 도 47k는 2MVBP에 대해 이용가능한 4개의 테이블을 나타낸 것이다.Since interlaced P-frames may include field-coded macroblocks with two motion vectors per macroblock, the interlaced P-frame header includes two motion vector block pattern table 2MVBPTAB elements. 2MVBPTAB is a 2-bit value present in an interlaced P-frame. This syntax element signals which of the four tables (tables 0 to 3 specified as 2-bit values) is used to decode the 2MV block pattern (2MVBP) in the 2MV field-coded macroblock. 47K shows four tables available for 2MVBP.

인터레이스형 B-필드 및 인터레이스형 B-프레임은 인터레이스형 P-필드 및 인터레이스형 P-프레임의 동일 요소를 많이 가지고 있다. 상세하게는, 인터레이스형 B-필드는 4MVBPTAB(4644) 신택스 요소를 포함할 수 있다. 인터레이스형 B-프레임은 2MVBPTAB 및 4MVBPTAB(4644) 신택스 요소 둘다를 포함하지만, 요소들의 시맨틱스는 서로 다를 수 있다.Interlaced B-fields and interlaced B-frames have many of the same elements of interlaced P-fields and interlaced P-frames. In particular, the interlaced B-field may include a 4MVBPTAB 4644 syntax element. Interlaced B-frames include both 2MVBPTAB and 4MVBPTAB 4644 syntax elements, but the semantics of the elements may be different.

4. 매크로블록 계층 4. Macroblock Layer 신택스Syntax  And 시맨틱스Semantics

매크로블록에 대한 데이터는 매크로블록 헤더 및 뒤따라 있는 블록 계층으로 이루어져 있다. 도 46e는 인터레이스형 P-필드에 대한 매크로블록 계층 구조를 나타낸 것이다.The data for a macroblock consists of a macroblock header and the following block hierarchy. 46e shows a macroblock hierarchy for an interlaced P-field.

매크로블록 모드 MBMODE(4661) 요소는 가변-크기 요소이다. 이는 매크로블록(1MV, 4MV 또는 인트라)에 대한 움직임 벡터의 개수, 매크로블록에 대해 코딩된 블록 패턴 CBPCY(4662) 요소가 존재하는지 여부, 및 (어떤 경우에) 매크로블록에 대해 움직임 벡터 차분 데이터가 존재하는지 여부 등의 정보를 공동으로 가리킨다. 도 47h 및 도 47i는 인터레이스형 P-필드에 대한 MBMODE(4661)에 대해 이용가능한 테이블을 나타낸 것이다.The macroblock mode MBMODE 4661 element is a variable-size element. This indicates the number of motion vectors for the macroblock (1MV, 4MV or intra), whether there is a block pattern CBPCY 4466 element coded for the macroblock, and (in some cases) the motion vector difference data for the macroblock. Point out information such as whether it exists or not. 47H and 47I show tables available for MBMODE 461 for interlaced P-fields.

움직임 벡터 데이터 MVDATA(4663) 요소는 움직임 벡터에 대한 움직임 벡터 정보(예를 들어, 수평 및 수직 차분)를 인코딩하는 가변-크기 요소이다. 2개의 참 조 필드를 갖는 인터레이스형 P-필드의 경우, MVDATA(4663)은 또한 움직임 벡터에 대한 다수의 가능한 움직임 벡터 예측자 간에 선택하기 위한 정보를 인코딩한다.The motion vector data MVDATA 4703 element is a variable-size element that encodes motion vector information (eg, horizontal and vertical differentials) for the motion vector. For interlaced P-fields with two reference fields, MVDATA 4703 also encodes information for selecting between a number of possible motion vector predictors for the motion vector.

4 움직임 벡터 블록 패턴 4MVBP(4664) 요소는 인터레이스형 P-필드, B-필드, P-프레임 및 B-프레임에 대한 매크로블록에 존재할 수 있는 가변-크기 신택스 요소이다. 인터레이스형 P-필드, B-필드, 및 P-프레임에 대한 매크로블록에서, 4MVBP(4664) 요소는 MBMODE(4661)가 매크로블록이 4개의 움직임 벡터를 가짐을 가리키는 경우에 존재한다. 이 경우에, 4MVBP(4664)는 4개의 루마 블록 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하고 있는지를 가리킨다. The four motion vector block pattern 4MVBP 4466 element is a variable-size syntax element that can exist in macroblocks for interlaced P-fields, B-fields, P-frames, and B-frames. In the macroblocks for interlaced P-fields, B-fields, and P-frames, the 4MVBP 4466 element is present when MBMODE 4661 indicates that the macroblock has four motion vectors. In this case, 4MVBP 4466 indicates which of the four luma blocks contains non-zero motion vector differences.

인터레이스형 B-프레임에 대한 매크로블록에서, 4MVBP(4664)는 MBMODE(4661)가 매크로블록이 2개의 필드 움직임 벡터를 포함함을 가리키는 경우에 및 매크로블록이 보간된 매크로블록인 경우에 존재한다. 이 경우에, 4MVBP(4664)는 4개의 움직임 벡터(상부 및 하부 필드 전방 움직임 벡터, 및 상부 및 하부 필드 후방 움직임 벡터) 중 어느 것이 존재하는지를 가리킨다.In the macroblock for an interlaced B-frame, 4MVBP 4466 is present when MBMODE 461 indicates that the macroblock contains two field motion vectors and when the macroblock is an interpolated macroblock. In this case, 4MVBP 4466 indicates which of the four motion vectors (upper and lower field forward motion vectors, and upper and lower field backward motion vectors) are present.

2 움직임 벡터 블록 패턴 2MVBP 요소(도시 생략)은 인터레이스형 P-프레임 및 B-프레임에서의 매크로블록에 존재하는 가변-크기 신택스 요소이다. 인터레이스형 P-프레임 매크로블록에서, 2MVBP는 MBMODE(4661)가 매크로블록이 2개의 필드 움직임 벡터를 가짐을 가리키는 경우에 존재한다. 이 경우에, 2MVBP는 2개의 필드(상부 및 하부) 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하는지를 가리킨다. 인터레이스형 B-프레임 매크로블록에서, 2MVBP는 MBMODE(4661)가 매크로블록이 1개의 움직임 벡터를 포함하고 또 매크로블록이 보간된 매크로블록임을 가리 키는 경우에 존재한다. 이 경우, 2MVBP는 2개의 움직임 벡터(전방 및 후방 움직임 벡터) 중 어느 것이 존재하는지를 가리킨다.The two motion vector block pattern 2MVBP element (not shown) is a variable-size syntax element present in macroblocks in interlaced P-frames and B-frames. In an interlaced P-frame macroblock, 2MVBP is present when MBMODE 461 indicates that the macroblock has two field motion vectors. In this case, 2MVBP indicates which of the two fields (top and bottom) contains a non-zero motion vector difference. In an interlaced B-frame macroblock, 2MVBP is present when MBMODE 461 indicates that the macroblock contains one motion vector and that the macroblock is an interpolated macroblock. In this case, 2MVBP indicates which of the two motion vectors (front and back motion vectors) is present.

블록-레벨 움직임 벡터 데이터 BLKMVDATA(4665) 요소는 어떤 상황에서 존재하는 가변-크기 요소이다. 이는 매크로블록의 블록에 대한 움직임 정보를 포함한다.The block-level motion vector data BLKMVDATA 4665 element is a variable-size element that exists in some situations. This includes motion information for blocks of macroblocks.

하이브리드 움직임 벡터 예측 HYBRIDPRED(4666) 요소는 인터레이스형 P-필드에서의 매크로블록에 존재할 수 있는 움직임 벡터당 1-비트 신택스 요소이다. 하이브리드 움직임 벡터 예측이 사용되는 경우, HYBRIDPRED(4666)는 2개의 움직임 벡터 예측자 중 어느 것을 사용해야 하는지를 가리킨다.Hybrid Motion Vector Prediction HYBRIDPRED 4666 is a 1-bit syntax element per motion vector that may exist in a macroblock in an interlaced P-field. If hybrid motion vector prediction is used, HYBRIDPRED 4666 indicates which of the two motion vector predictors should be used.

5. 블록 계층 5. Block Layer 신택스Syntax  And 시맨틱스Semantics

인터레이스형 픽처에 대한 블록 계층은 순차 픽처에 대한 블록 계층의 신택스 및 시맨틱스를 따른다. 일반적으로, 블록 및 서브-블록의 DC 및 AC 계수에 대한 정보는 블록 계층에서 시그널링된다.The block layer for interlaced pictures follows the syntax and semantics of the block layer for sequential pictures. In general, information about the DC and AC coefficients of blocks and sub-blocks is signaled at the block layer.

B. 제1 결합 구현에서의 디코딩B. Decoding in the First Combined Implementation

비디오 시퀀스가 인터레이스형 비디오 프레임으로 이루어져 있거나 인터레이스형 프레임 및 순차 프레임의 혼합을 포함하는 경우, FCM(4612) 요소는 주어진 픽처가 순차 프레임, 인터레이스형 필드 또는 인터레이스형 프레임으로서 코딩되는지를 가리킨다. 인터레이스형 필드로서 코딩된 프레임의 경우, FPTYPE(4622)은 프레임이 2개의 인터레이스형 I-필드, 하나의 인터레이스형 I-필드 및 하나의 인터레이스형 P-필드, 2개의 인터레이스형 P-필드, 2개의 인터레이스형 B-필드, 하나의 인 B-필드 및 하나의 인터레이스형 BI-필드 또는 2개의 인터레이스형 BI-필드를 포함하는지를 가리킨다. 인터레이스형 필드의 디코딩은 다음과 같다. 이하의 섹션은 인터레이스형 P-필드에 대한 디코딩 프로세스에 중점을 두고 있다.If the video sequence consists of interlaced video frames or includes a mixture of interlaced frames and sequential frames, the FCM 4612 element indicates whether a given picture is coded as a sequential frame, interlaced field, or interlaced frame. For a frame coded as an interlaced field, FPTYPE 4462 indicates that the frame has two interlaced I-fields, one interlaced I-field and one interlaced P-field, two interlaced P-fields, and two. Whether it includes two interlaced B-fields, one in-B-field and one interlaced BI-field or two interlaced BI-fields. The decoding of the interlaced field is as follows. The following section focuses on the decoding process for interlaced P-fields.

1. One. 인터레이스형Interlaced P-필드 디코딩에 대한 참조 Reference to P-field Decoding

인터레이스형 P-필드는 움직임 보상에서 하나 또는 2개의 이전에 디코딩된 필드를 참조할 수 있다. NUMREF(4631) 요소는 현재의 P-필드가 하나 또는 2개의 이전 참조 필드를 참조할 수 있는지를 가리킨다. NUMREF = 0인 경우, 현재의 P-필드는 하나의 필드만을 참조할 수 있다. 이 경우에, REFFIELD(4632) 요소는 비트스트림으로 따라온다. REFFIELD(4632)는 어느 이전에 디코딩된 필드가 참조로서 사용되는지를 가리킨다. REFFIELD = 0인 경우, (디스플레이 순서에서) 시간상 가장 가까운 I-필드 또는 P-필드가 참조로서 사용된다. REFFIELD = 1인 경우, 시간상 두번째로 가장 최근의 I-필드 또는 P-필드가 참조로서 사용된다. NUMREF = 1인 경우, 현재의 P-필드는 2개의 (디스플레이 순서에서) 시간상 가장 가까운 I-필드 또는 P-필드를 참조로서 사용한다. 도 24a 내지 도 24f에 도시되어 있는 NUMREF = 0 및 NUMREF = 1에 대한 참조 필드 픽처의 예는 전술한 바와 같이 제1 결합 구현에 적용된다.An interlaced P-field may refer to one or two previously decoded fields in motion compensation. The NUMREF 4463 element indicates whether the current P-field can reference one or two previous reference fields. If NUMREF = 0, the current P-field may refer to only one field. In this case, the REFFIELD (4632) element follows into the bitstream. REFFIELD 4452 indicates which previously decoded field is used as a reference. If REFFIELD = 0, the nearest I-field or P-field in time (in display order) is used as a reference. If REFFIELD = 1, the second most recent I-field or P-field in time is used as a reference. If NUMREF = 1, the current P-field uses the two closest I-fields or P-fields in time (in display order) as references. Examples of reference field pictures for NUMREF = 0 and NUMREF = 1 shown in FIGS. 24A-F apply to the first combined implementation as described above.

2. 2. 픽처Picture 유형 type

인터레이스형 P-필드는 2가지 유형, 즉 1MV 또는 혼합-MV 중 하나일 수 있다. 1MV P-필드에서, 각각의 매크로블록은 1MV 매크로블록이다. 혼합-MV P-필드에서, 각각의 매크로블록은 1MV 또는 4MV 매크로블록으로서 인코딩될 수 있다. 1MV 또는 혼합-MV 모드는 MVMODE(4635) 및 MVMODE2(4636) 요소에 의해 인터레이스형 P-필드에 대해 시그널링된다.Interlaced P-fields can be of two types: 1MV or mixed-MV. In a 1MV P-field, each macroblock is a 1MV macroblock. In a mixed-MV P-field, each macroblock can be encoded as a 1MV or 4MV macroblock. The 1 MV or mixed-MV mode is signaled for the interlaced P-field by the MVMODE 4635 and MVMODE 2 4636 elements.

3. 매크로블록 3. Macro Block 모드mode

인터레이스형 P-필드에서의 매크로블록은 3가지 가능한 유형, 즉 1MV, 4MV 및 인트라 중 하나일 수 있다. MBMODE(4661) 요소는 매크로블록 유형(1MV, 4MV, 인트라) 및 CBP 및 MV 데이터의 존재도 가리킨다. MVMODE(4635)/MVMODE2(4636) 신택스 요소가 인터레이스형 P-필드가 혼합-MV인지 모두 1MV인지에 따라, MBMODE(4661)는 다음과 같이 정보를 시그널링한다.Macroblocks in interlaced P-fields can be one of three possible types: 1MV, 4MV and intra. The MBMODE 4471 element also indicates the macroblock type (1MV, 4MV, intra) and the presence of CBP and MV data. Depending on whether the MVMODE 4635 / MVMODE2 4636 syntax element is interlaced P-field is mixed-MV or both 1MV, MBMODE 461 signals information as follows.

도 26의 테이블은 MBMODE(4661)이 모두 1MV P-필드에서의 매크로블록에 관한 정보를 어떻게 시그널링하는지를 보여준다. 도 47i에 도시된 바와 같이, 8개의 테이블 중 하나가 1MV P-필드에 대한 MBMODE(4661)를 인코딩/디코딩하는 데 사용된다. 도 27의 테이블은 MBMODE(4661)가 혼합-MV P-필드에서의 매크로블록에 관한 정보를 어떻게 시그널링하는지를 보여준다. 도 47h에 도시된 바와 같이, 8개의 테이블 중 하나가 혼합-MV P-필드에 대한 MBMODE(4661)를 인코딩/디코딩하는 데 사용된다The table in FIG. 26 shows how MBMODE 461 all signals information about macroblocks in the 1MV P-field. As shown in FIG. 47I, one of the eight tables is used to encode / decode MBMODE 461 for the 1MV P-field. The table in FIG. 27 shows how MBMODE 461 signals information about macroblocks in the mixed-MV P-field. As shown in FIG. 47H, one of eight tables is used to encode / decode MBMODE 4471 for the Mixed-MV P-field.

따라서, 1MV 매크로블록은 1-MV 및 혼합-MV 인터레이스형 P-필드에서 일어날 수 있다. 1MV 매크로블록은 단일의 움직임 벡터가 매크로블록 내의 6개의 블록 모두에 대한 현재 픽처와 참조 픽처 간의 변위를 나타내는 경우의 매크로블록이다. 1MV 매크로블록의 경우, MBMODE(4661) 요소는 3가지, 즉 (1) 매크로블록 유형이 1MV라는 것, (2) 매크로블록에 대해 CBPCY(4662) 요소가 존재하는지 여부, 및 (3) 매크로블록에 대해 MVDATA(4663) 요소가 존재하는지 여부를 가리킨다.Thus, a 1MV macroblock may occur in 1-MV and mixed-MV interlaced P-fields. A 1MV macroblock is a macroblock when a single motion vector represents a displacement between the current picture and the reference picture for all six blocks in the macroblock. For a 1MV macroblock, the MBMODE (4661) element has three elements: (1) the macroblock type is 1MV, (2) whether a CBPCY (4662) element exists for the macroblock, and (3) the macroblock. Indicates whether an MVDATA (4663) element exists for.

MBMODE(4661) 요소가 CBPCY(4662) 요소가 존재함을 가리키는 경우, CBPCY(4662) 요소가 대응하는 위치에서 매크로블록 계층에 존재한다. CBPCY(4662)는 6개의 블록 중 어느 것이 블록 계층에 코딩되어 있는지를 가리킨다. MBMODE(4661) 요소가 CBPCY(4662)가 존재하지 않음을 가리키는 경우, CBPCY(4662)는 0인 것으로 가정되고 매크로블록 내의 6개의 블록의 어느 것에 대해서도 블록 데이터가 존재하지 않는다.If the MBMODE 4661 element indicates that a CBPCY 4702 element exists, then the CBPCY 4466 element is present in the macroblock hierarchy at the corresponding location. CBPCY 4462 indicates which of the six blocks is coded in the block layer. If the MBMODE 461 element indicates that CBPCY 4462 does not exist, then CBPCY 4462 is assumed to be zero and there is no block data for any of the six blocks in the macroblock.

MBMODE(4661) 요소가 MVDATA(4663) 요소가 존재함을 가리키는 경우, MVDATA(4663) 요소가 대응하는 위치에서 매크로블록 계층에 존재한다. MVDATA(4663) 요소는 움직임 벡터를 재구성하기 위해 움직임 벡터 예측자와 합성되는 움직임 벡터 차분을 인코딩한다. MBMODE(4661) 요소가 MVDATA(4663) 요소가 존재하지 않음을 가리키는 경우, 움직임 벡터 차분은 0인 것으로 가정되고, 따라서 움직임 벡터는 움직임 벡터 예측자와 같다.If the MBMODE 4661 element indicates that an MVDATA 4663 element is present, then the MVDATA 4466 element is present in the macroblock hierarchy at the corresponding location. The MVDATA 4703 element encodes a motion vector difference synthesized with a motion vector predictor to reconstruct the motion vector. When the MBMODE 4661 element indicates that the MVDATA 4703 element does not exist, the motion vector difference is assumed to be zero, so the motion vector is equal to the motion vector predictor.

4MV 매크로블록은 혼합-MV P-필드에 존재한다. 4MV 매크로블록은 매크로블록에서의 4개의 루마 블록 각각이 그 블록에 대한 현재 픽처와 참조 픽처 간의 변위를 가리키는 관련 움직임 벡터를 가질 수 있는 경우의 매크로블록이다. 크로마 블록에 대한 변위는 4개의 루마 움직임 벡터로부터 도출된다. 현재 블록과 참조 블록 간의 차이는 블록 계층에 인코딩되어 있다. 4MV 매크로블록의 경우, MBMODE(4661) 요소는 2가지, 즉 (1) 매크로블록 유형이 4MV이라는 것, 및 (2) CBPCY(4662) 요소가 존재한다는 것을 가리킨다.The 4MV macroblock is in the mixed-MV P-field. A 4MV macroblock is a macroblock when each of the four luma blocks in the macroblock can have an associated motion vector indicating the displacement between the current picture and the reference picture for that block. The displacement for the chroma block is derived from four luma motion vectors. The difference between the current block and the reference block is encoded in the block layer. For a 4MV macroblock, the MBMODE 4466 element indicates two things: (1) the macroblock type is 4MV, and (2) the CBPCY 4662 element is present.

인트라 매크로블록은 1MV 또는 혼합-MV P-필드에서 일어날 수 있다. 인트라 매크로블록은 6개의 블록 모두가 어떤 이전의 픽처 데이터도 참조하지 않고 코딩되어 있는 경우의 매크로블록이다. 인트라 매크로블록의 경우, MBMODE(4661) 요소는 2가지, 즉 (1) 매크로블록 유형이 인트라라는 것, 및 (2) CBPCY(4662) 요소가 존재한다는 것을 가리킨다. 인트라 매크로블록의 경우, CBPCY(4662) 요소가 존재하는 경우, 이 요소는 6개의 블록 중 어느 것이 블록 계층에 코딩되어 있는 AC 계수 데이터를 갖는지를 가리킨다. DC 계수는 모든 경우에 여전히 각각의 블록에 대해 존재한다.Intra macroblocks can occur in 1MV or mixed-MV P-fields. An intra macroblock is a macroblock when all six blocks are coded without reference to any previous picture data. For intra macroblocks, the MBMODE 4661 element indicates two things: (1) the macroblock type is intra, and (2) the CBPCY 4662 element is present. In the case of an intra macroblock, if a CBPCY 4702 element is present, this element indicates which of the six blocks has AC coefficient data coded in the block layer. The DC coefficient is still present for each block in all cases.

4. 움직임 벡터 블록 패턴4. Movement Vector Block Pattern

4MVBP(4664) 요소는 4개의 루마 블록 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하는지를 가리킨다. 4MVBP(4664)는 이진 값으로 표현될 때 대응하는 루마 블록에 대한 움직임 벡터가 존재하는지 여부를 가리키는 비트 신택스 요소를 표현하는 0 내지 15의 값으로 디코딩된다. 도 34의 테이블은 루마 블록의 4MVBP(4664)에 대한 연관을 보여준다. 도 47j에 도시한 바와 같이, 4개의 테이블 중 하나가 4MVBP(4664)를 인코딩/디코딩하는 데 사용된다.The 4MVBP 4466 element indicates which of the four luma blocks contains non-zero motion vector differences. 4MVBP 4466 is decoded to a value of 0 to 15 representing a bit syntax element indicating whether a motion vector for the corresponding luma block is present when represented as a binary value. The table in FIG. 34 shows the association for 4MVBP 4466 of the luma block. As shown in FIG. 47J, one of the four tables is used to encode / decode 4MVBP 4466.

4MVBP(4664)에서의 4개의 비트 위치 각각에 대해, 0의 값은 대응하는 위치에서 블록에 대해 움직임 벡터 차분(BLKMVDATA에 있음)이 존재하지 않음을 가리키며, 움직임 벡터 차분은 0인 것으로 가정된다. 1의 값은 대응하는 위치에서 블록에 대해 움직임 벡터 차분(BLKMVDATA에 있음)이 존재함을 가리킨다. 예를 들어, 4MVBP(4664)가 1100의 이진값으로 디코딩되는 경우, 비트스트림은 블록 0 및 1에 대한 BLKMVDATA(4665)를 포함하고, 블록 2 및 3에 대해서는 BLKMVDATA(4665)가 존재하지 않는다. 4MVBP(4664)는 이와 유사하게 인터레이스형 B-필드 및 인터레이스형 P-프레임에서의 4MV 매크로블록에 대한 움직임 벡터 차분 정보의 존재 여부를 가리키는 데 사용된다.For each of the four bit positions in 4MVBP 4466, a value of zero indicates that there is no motion vector difference (in BLKMVDATA) for the block at the corresponding position, and the motion vector difference is assumed to be zero. A value of 1 indicates that there is a motion vector difference (in BLKMVDATA) for the block at the corresponding position. For example, if 4MVBP 4466 is decoded to a binary value of 1100, the bitstream includes BLKMVDATA 4665 for blocks 0 and 1, and there is no BLKMVDATA 4665 for blocks 2 and 3. 4MVBP 4466 is similarly used to indicate the presence or absence of motion vector difference information for 4MV macroblocks in interlaced B-fields and interlaced P-frames.

인터레이스형 P-프레임 또는 인터레이스형 B-프레임에서의 필드-코딩된 매크로블록은 2개의 움직임 벡터를 포함할 수 있다. 2 필드 MV 매크로블록의 경우, 2MVBP 요소는 2개의 필드 중 어느 것이 영이 아닌 차분 움직임 벡터를 갖는지를 가리킨다. 도 47k에 도시한 바와 같이, 4개의 테이블 중 하나는 2MVBP를 인코딩/디코딩하는 데 사용된다.A field-coded macroblock in an interlaced P-frame or an interlaced B-frame may comprise two motion vectors. For a two field MV macroblock, the 2MVBP element indicates which of the two fields has a non-zero differential motion vector. As shown in Fig. 47K, one of the four tables is used to encode / decode 2MVBP.

5. 필드 5. Field 픽처Picture 좌표계 Coordinate system

이하의 섹션들에서, 움직임 벡터 단위는 필드 픽처 단위로 표현된다. 예를 들어, 움직임 벡터의 수직 성분이 변위가 +6(¼-픽셀 단위임)임을 가리키는 경우, 이것은 1½ 필드 픽처 라인의 변위를 가리킨다.In the following sections, the motion vector unit is expressed in field picture units. For example, if the vertical component of the motion vector indicates that the displacement is +6 (in quarter-pixel units), then this indicates the displacement of the 1½ field picture line.

도 48은 움직임 벡터의 수직 성분과 현재 및 참조 필드 극성의 조합(반대 및 동일) 둘다에 대한 공간적 위치 간의 관계를 나타낸 것이다. 도 48은 현재 필드 및 참조 필드에서의 하나의 수직 픽셀 열을 나타낸 것이다. 원은 정수 픽셀 위치를 나타내고, x는 ¼-픽셀 위치를 나타낸다. 0의 값은 현재 필드 위치와 참조 필드 위치 간의 수직 변위가 없음을 가리킨다. 현재 필드와 참조 필드가 반대 극성인 경우, 0 수직 벡터는 참조 필드에서의 필드 라인들 중간의 위치(½-픽셀 천이)를 가리킨다. 현재 필드 및 참조 필드가 동일한 극성인 경우, 0 수직 벡터는 참조 필드에서의 대응하는 필드 라인을 가리킨다.FIG. 48 illustrates the relationship between the vertical component of the motion vector and the spatial position for both the combination (opposite and equal) of the current and reference field polarities. 48 shows one vertical pixel column in the current field and the reference field. Circles represent integer pixel positions and x represents quarter-pixel positions. A value of zero indicates no vertical displacement between the current field position and the reference field position. If the current field and the reference field are of opposite polarity, the 0 vertical vector indicates the position (½-pixel transition) in the middle of the field lines in the reference field. If the current field and the reference field are of the same polarity, the zero vertical vector points to the corresponding field line in the reference field.

6. 움직임 벡터 차분의 디코딩6. Decoding Motion Vector Difference

MVDATA(4663) 및 BLKMVDATA(4665) 요소는 매크로블록 또는 매크로블록 내의 블록에 대해 움직임 정보를 인코딩한다. 1MV 매크로블록은 단일의 MVDATA(4663) 요소를 가지며 4MV 매크로블록은 0 내지 4개의 BLKMVDATA(4665)를 가질 수 있다. MVDATA(4663) 또는 BLKMVDATA(4665)로부터 움직임 벡터 차분을 계산하는 프로세스는 1-참조(NUMREF = 0) 경우와 2-참조(NUMREF = 1) 경우에 대해 다르다..The MVDATA 4703 and BLKMVDATA 4665 elements encode motion information for the macroblock or blocks within the macroblock. The 1MV macroblock may have a single MVDATA 4466 element and the 4MV macroblock may have 0-4 BLKMVDATA 4665. The process of calculating the motion vector difference from MVDATA 4703 or BLKMVDATA 4665 is different for the one-reference (NUMREF = 0) case and the two-reference (NUMREF = 1) case.

단지 하나의 참조 필드를 갖는 필드 픽처에서, 각각의 MVDATA(4663) 또는 BLKMVDATA(4665) 신택스 요소는 2가지, 즉 (1) 수평 움직임 벡터 차분 성분 및 (2) 수직 움직임 벡터 차분 성분을 공동으로 인코딩한다. MVDATA(4663) 또는 BLKMVDATA(4665) 요소는 VLC 및 그에 뒤따르는 FLC이다. VLC의 값은 FLC의 크기를 결정한다. MVTAB(4643) 신택스 요소는 VLC를 디코딩하는 데 사용되는 테이블을 지정한다.In a field picture with only one reference field, each MVDATA 4703 or BLKMVDATA 4665 syntax element jointly encodes two, (1) horizontal motion vector difference component and (2) vertical motion vector difference component. do. The MVDATA 4703 or BLKMVDATA 4665 element is a VLC followed by a FLC. The value of VLC determines the size of the FLC. The MVTAB 4641 syntax element specifies the table used to decode the VLC.

도 49a는 하나의 참조 필드를 갖는 필드 픽처에서의 블록 또는 매크로블록에 대한 움직임 벡터 차분 디코딩을 설명하는 의사 코드를 나타낸 것이다. 이 의사 코드에서, 값 dmv_x 및 dmv_y가 계산되며, 여기서 dmv_x는 차분 수평 움직임 벡터 성분이고, dmv_y는 차분 수직 움직임 벡터 성분이다. 변수 k_x 및 k_y는 도 49b에 도시된 테이블에 따라 MVRANGE(4633)에 의해 정의되는 움직임 벡터 범위에 의존하는 고정 길이 값이다.49A illustrates pseudo code describing motion vector differential decoding for a block or macroblock in a field picture having one reference field. In this pseudo code, the values dmv_x and dmv_y are calculated, where dmv_x is the differential horizontal motion vector component and dmv_y is the differential vertical motion vector component. The variables k_x and k_y are fixed length values that depend on the motion vector range defined by MVRANGE 4463 according to the table shown in FIG. 49B.

변수 extend_x는 확장된 범위 수평 움직임 벡터 차분에 대한 것이고, 변수 extend_y는 확장된 범위 수직 움직임 벡터 차분에 대한 것이다. 변수 extend_x 및 extend_y는 DMVRANGE(4634) 신택스 요소로부터 도출된다. DMVRANGE(4634)가 수평 성분에 대한 확장된 범위가 사용됨을 가리키는 경우, extend_x = 1 이다. 그렇지 않은 경우, extend_x = 0 이다. 이와 유사하게, DMVRANGE(4634)가 수직 성분에 대한 확장된 범위가 사용됨을 가리키는 경우, extend_y = 1 이다. 그렇지 않은 경우, extend_y = 0 이다. offset_table은 다음과 같이 정의된 어레이이다.The variable extend_x is for extended range horizontal motion vector difference and the variable extend_y is for extended range vertical motion vector difference. The variables extend_x and extend_y are derived from the DMVRANGE 4646 syntax element. If DMVRANGE 4464 indicates that an extended range for the horizontal component is used, extend_x = 1. Otherwise, extend_x = 0. Similarly, if DMVRANGE 4464 indicates that an extended range for the vertical component is used, extend_y = 1. Otherwise, extend_y = 0. offset_table is an array defined as follows.

offset_tablel[9] = {0, 1, 2, 4, 8, 16, 32, 64, 128,} 및offset_tablel [9] = {0, 1, 2, 4, 8, 16, 32, 64, 128,} and

offset_table2[9] = {0, 1, 3, 7, 15, 31, 63, 127, 255}, offset_table2 [9] = {0, 1, 3, 7, 15, 31, 63, 127, 255},

여기서, offset_table2 []는 그 성분에 대한 차분 범위가 확장되어 있을 때 수평 또는 수직 성분에 대해 사용된다. 도 49a 및 도 49b가 인터레이스형 P-필드에 대한 확장된 차분 움직임 벡터 디코딩을 보여주고 있지만, 제1 결합 구현에서 확장된 차분 움직임 벡터 디코딩은 또한 인터레이스형 B-필드, 인터레이스형 P-프레임, 및 인터레이스형 B-프레임에 대해서도 사용된다. Here, offset_table2 [] is used for horizontal or vertical components when the difference range for that component is extended. While FIGS. 49A and 49B show extended differential motion vector decoding for interlaced P-fields, extended differential motion vector decoding in a first combined implementation also provides for interlaced B-fields, interlaced P-frames, and It is also used for interlaced B-frames.

2개의 참조 필드를 갖는 필드 픽처에서, 각각의 MVDATA(4663) 또는 BLKMVDATA(4665) 신택스 요소는 3가지, 즉 (1) 수평 움직임 벡터 차분 성분, (2) 수직 움직임 벡터 차분 성분, 및 (3) 우세 또는 비우세 예측자가 사용되는지, 즉 2개의 필드 중 어느 것이 움직임 벡터에 의해 참조되는지를 공동으로 인코딩한다. 1 참조 필드 경우에서와 같이, MVDATA(4663) 또는 BLKMVDATA(4665) 요소는 VLC 및 그 뒤에 오는 FLC이고, VLC의 값이 FLC의 크기를 결정하며, MVTAB(4643) 신택스 요소는 VLC를 디코딩하는 데 사용되는 테이블을 지정한다.In a field picture with two reference fields, each MVDATA 4663 or BLKMVDATA 4665 syntax element has three elements: (1) horizontal motion vector difference component, (2) vertical motion vector difference component, and (3) Jointly encode whether a dominant or non-dominant predictor is used, ie which of the two fields is referenced by the motion vector. As in the case of the 1 reference field, the MVDATA (4663) or BLKMVDATA (4665) element is the VLC and the following FLC, the value of the VLC determines the size of the FLC, and the MVTAB 4464 syntax element is used to decode the VLC. Specifies the table to be used.

도 50은 2개의 참조 필드를 갖는 필드 픽처에서의 블록 또는 매크로블록의 움직임 벡터에 대한 움직임 벡터 차분 및 우세/비우세 예측자 디코딩을 설명하는 의사 코드를 나타낸 것이다. 이 의사 코드에서, 값 predictor_flag는 우세 또는 비우세 움직임 벡터 예측자가 사용되는지를 가리키는 이진 플래그이다. predictor_flag = 0 인 경우, 우세 예측자가 사용되고, predictor_flag = 1 인 경우, 비우세 예측자가 사용된다. 여러가지 다른 변수(dmv_x, dmv_y, k_x, k_y, extend_x, extend_y, offset_tablel[], 및 offset_table2[]를 포함함)는 1 참조 필드 경우에 대해 기술한 바와 같다. 테이블 size_table은 다음과 같이 정의된 어레이이다.FIG. 50 illustrates pseudo code describing motion vector difference and dominant / non-dominant predictor decoding for a motion vector of a block or macroblock in a field picture having two reference fields. In this pseudo code, the value predictor_flag is a binary flag indicating whether a dominant or non-dominant motion vector predictor is used. If predictor_flag = 0, the dominant predictor is used. If predictor_flag = 1, the non-dominant predictor is used. Various other variables (including dmv_x, dmv_y, k_x, k_y, extend_x, extend_y, offset_tablel [], and offset_table2 []) are as described for the one reference field case. The table size_table is an array defined as follows.

size_table[l6] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}. size_table [l6] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}.

7. 움직임 벡터 7. Motion vector 예측자Predictor

움직임 벡터는 이전의 섹션에서 계산된 움직임 벡터 차분을 움직임 벡터 예측자에 가산함으로써 계산된다. 예측자는 최대 3개의 이웃 움직임 벡터로부터 계산된다. 움직임 벡터 모드가 1/2-픽셀일지라도, 움직임 벡터 예측자에 대한 계산은 ¼ 픽셀 단위로 행해진다.The motion vector is calculated by adding the motion vector difference calculated in the previous section to the motion vector predictor. The predictor is calculated from up to three neighboring motion vectors. Even if the motion vector mode is 1 / 2-pixel, the calculation for the motion vector predictor is done in quarter pixels.

1MV 인터레이스형 P-필드에서, 현재 매크로블록에 대한 예측자를 계산하는 데 최대 3개의 이웃 움직임 벡터가 사용된다. 고려되는 움직임 벡터를 갖는 이웃 매크로블록의 위치는 도 5a 및 도 5b에 도시되고 1MV 순차 P-프레임에 대해 설명된 바와 같다.In a 1MV interlaced P-field, up to three neighboring motion vectors are used to calculate the predictor for the current macroblock. The location of the neighboring macroblock with the motion vector under consideration is as shown in FIGS. 5A and 5B and described for the 1MV sequential P-frame.

혼합-MV 인터레이스형 P-필드에서, 현재 블록 또는 매크로블록에 대한 예측 자를 계산하는 데 최대 3개의 이웃 움직임 벡터가 사용된다. 고려되는 움직임 벡터를 갖는 이웃 블록 및/또는 매크로블록의 위치는 도 6a 내지 도 10에 도시되고 혼합-MV 순차 P-프레임에 대해 설명된 바와 같다.In a mixed-MV interlaced P-field, up to three neighboring motion vectors are used to calculate the predictor for the current block or macroblock. The location of the neighboring block and / or macroblock with the motion vector under consideration is as shown in FIGS. 6A-10 and described for the mixed-MV sequential P-frame.

픽처 헤더 내의 NUMREF(4631) 신택스 요소가 0인 경우, 현재의 인터레이스형 P-필드는 단지 하나의 이전에 코딩된 필드만을 참조할 수 있다. NUMREF = 1인 경우, 현재의 인터레이스형 P-필드는 2개의 가장 최근의 참조 필드 픽처를 참조할 수 있다. 전자의 경우에, 각각의 움직임 벡터에 대해 단일의 예측자가 계산된다. 후자의 경우에, 2개의 움직임 벡터 예측자가 계산된다. 도 51a 및 도 51b의 의사 코드는 움직임 벡터 예측자가 1 참조 필드 경우에 대해 어떻게 계산되는지를 나타낸 것이다. 의사 코드에서의 변수 fieldpred_x 및 fieldpred_y는 움직임 벡터 예측자의 수평 및 수직 성분을 나타낸다.If the NUMREF 4471 syntax element in the picture header is zero, the current interlaced P-field may only refer to one previously coded field. If NUMREF = 1, the current interlaced P-field may refer to the two most recent reference field pictures. In the former case, a single predictor is calculated for each motion vector. In the latter case, two motion vector predictors are calculated. 51A and 51B show how the motion vector predictor is calculated for the 1 reference field case. The variables fieldpred_x and fieldpred_y in the pseudo code represent the horizontal and vertical components of the motion vector predictor.

2 참조 필드 인터레이스형 P-필드에서(NUMREF = 1), 현재 필드는 2개의 가장 최근의 참조 필드를 참조할 수 있다. 이 경우, 2개의 움직임 벡터 예측자가 각각의 인터-코딩된 매크로블록에 대해 계산된다. 하나의 예측자는 동일한 극성의 참조 필드로부터 온 것이고, 다른 하나는 반대 극성을 갖는 참조 필드로부터 온 것이다. 동일 극성 필드 및 반대 극성 필드 중에서, 하나가 우세 필드이고 다른 하나가 비우세 필드이다. 우세 필드는 움직임 벡터 예측자 후보 대부분을 포함하는 필드이다. 동수인 경우, 반대 필드로부터 도출된 움직임 벡터가 우세 예측자인 것으로 간주된다. 인트라-코딩된 매크로블록은 우세/비우세 예측자의 계산에서 고려되지 않는다. 모든 후보 예측자 매크로블록이 인트라-코딩되어 있는 경우, 우세 및 비우세 움직임 벡터 예측자는 0으로 설정되고, 우세 예측자는 반대 필드로부터 온 것으로 본다.2 Reference Fields In an interlaced P-field (NUMREF = 1), the current field may refer to the two most recent reference fields. In this case, two motion vector predictors are calculated for each inter-coded macroblock. One predictor is from a reference field of the same polarity and the other is from a reference field with the opposite polarity. Of the same and opposite polarity fields, one is the dominant field and the other is the non-dominant field. The dominant field is a field containing most of the motion vector predictor candidates. In case of an even number, the motion vector derived from the opposite field is considered to be the dominant predictor. Intra-coded macroblocks are not considered in the calculation of dominant / non-dominant predictors. If all candidate predictor macroblocks are intra-coded, the dominant and non-dominant motion vector predictors are set to zero and the dominant predictor is considered to come from the opposite field.

도 52a 내지 도 52f의 의사 코드는 3개의 움직임 벡터 예측자 후보가 주어진 경우, 2 참조 필드 경우에 대한 움직임 벡터 예측자가 어떻게 계산되는지를 설명한다. 변수 samefieldpred_x 및 samefieldpred_y는 동일한 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타내고, 변수 oppositefieldpred_x 및 oppositefieldpred_y는 반대 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타낸다. 변수 samecount 및 oppositecount는 0으로 초기화된다. 변수 dominantpredictor는 어느 필드가 우세 예측자를 포함하는지를 가리킨다. 값 predictor_flag(움직임 벡터 차분으로부터 디코딩됨)는 우세 또는 비우세 예측자가 사용되는지를 가리킨다.The pseudo codes of FIGS. 52A-52F explain how the motion vector predictor for the 2 reference field case is calculated when three motion vector predictor candidates are given. The variables samefieldpred_x and samefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the same field, and the variables oppositefieldpred_x and oppositefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the opposite field. The variables samecount and oppositecount are initialized to zero. The variable dominantpredictor indicates which field contains the dominant predictor. The value predictor_flag (decoded from the motion vector difference) indicates whether a dominant or non-dominant predictor is used.

도 52g 및 도 52h의 의사 코드는 도 52a 내지 도 52f의 의사 코드에서 언급되는 스케일링 동작을 나타낸 것이며, 이 스케일링 동작은 또하나의 필드의 예측자로부터 한 필드의 예측자를 도출하는 데 사용된다. SCALEOPP, SCALESAME1, SCALESAME2, SCALEZONE1_X, SCALEZONE1_Y, ZONElOFFSET_X 및 ZONElOFFSET_Y의 값은 현재 필드가 첫번째 필드인 경우에 대해서는 도 52i의 테이블에 나타내어져 있고, 현재 필드가 두번째 필드인 경우에 대해서는 도 52j의 테이블에 나타내어져 있다. 참조 프레임 거리는 픽처 헤더 내의 REFDIST(4624) 필드에 인코딩되어 있다. 참조 프레임 거리는 REFDIST + 1 이다. The pseudo code of FIGS. 52G and 52H illustrates the scaling operation referred to in the pseudo code of FIGS. 52A-52F, which scaling operation is used to derive the predictor of one field from the predictor of another field. The values of SCALEOPP, SCALESAME1, SCALESAME2, SCALEZONE1_X, SCALEZONE1_Y, ZONElOFFSET_X and ZONElOFFSET_Y are shown in the table of FIG. 52I for the case where the current field is the first field, and shown in the table of FIG. 52J for the case where the current field is the second field. have. The reference frame distance is encoded in the REFDIST 4624 field in the picture header. The reference frame distance is REFDIST + 1.

도 52k 내지 도 52n은 도 52h 내지 도 52j에 도시된 것의 대안인 스케일링 동작에 대한 의사 코드 및 테이블이다. 도 52h 내지 도 52j의 스케일링 코드 및 테이블 대신에(그렇지만, 도 52a 내지 도 52g의 의사 코드를 여전히 사용함), 도 52k 내지 도 52n의 스케일링 의사 코드 및 테이블이 사용된다. 참조 프레임 거리는 필드 계층 헤더의 요소로부터 획득된다. N의 값은 도 52n의 테이블에 나타낸 바와 같이, 움직임 벡터 범위에 의존한다.52K-52N are pseudo codes and tables for scaling operations alternative to those shown in FIGS. 52H-52J. Instead of the scaling codes and tables of FIGS. 52H-52J (but still use the pseudo codes of FIGS. 52A-52G), the scaling pseudo codes and tables of FIGS. 52K-52N are used. The reference frame distance is obtained from the element of the field layer header. The value of N depends on the motion vector range, as shown in the table of FIG. 52N.

8. 8. 하이브리드hybrid 움직임 벡터 예측 Motion vector prediction

이전의 섹션에서 계산되니 움직임 예측자는 예측자가 비트스트림에 명시적으로 코딩되어 있는지를 판정하기 위해 A(상부) 및 C(좌측) 예측자에 대해 테스트된다. 그렇다면, 예측자 A 또는 예측자 C를 움직임 벡터 예측자로서 사용해야 하는지를 가리키는 비트가 존재한다. 도 53의 의사 코드는 하이브리드 움직임 벡터 예측 디코딩을 나타낸 것이다. 이 의사 코드에서, 변수 predictor_pre_x 및 predictor_pre_y는 각각 이전의 섹션에서 계산된 수평 및 수직 움직임 벡터 예측자이다. 변수 predictor_post_x 및 predictor_post_y는 각각 하이브리드 움직임 벡터 예측을 위한 검사를 한 후의 수평 및 수직 움직임 벡터 예측자이다. 변수 predictor_pre, predictor_post, predictorA, predictorB, 및 predictorC는 모두 predictor_flag의 값이 가리키는 극성의 필드를 나타낸다. 예를 들어, predictor_flag가 반대 필드 예측자가 사용됨을 가리키는 경우, Computed in the previous section, the motion predictor is tested against the A (top) and C (left) predictors to determine if the predictor is explicitly coded in the bitstream. If so, there is a bit indicating whether predictor A or predictor C should be used as the motion vector predictor. The pseudo code of FIG. 53 illustrates hybrid motion vector prediction decoding. In this pseudo code, the variables predictor_pre_x and predictor_pre_y are the horizontal and vertical motion vector predictors respectively calculated in the previous section. The variables predictor_post_x and predictor_post_y are the horizontal and vertical motion vector predictors after the test for hybrid motion vector prediction, respectively. The variables predictor_pre, predictor_post, predictorA, predictorB, and predictorC all represent polar fields that the value of predictor_flag points to. For example, if predictor_flag indicates that the opposite field predictor is used,

predictor_pre_x = oppositefieldpred_xpredictor_pre_x = oppositefieldpred_x

predictor_pre_x = oppositefieldpred_y predictor_pre_x = oppositefieldpred_y

predictorA_x = oppositefieldpredA_x predictorA_x = oppositefieldpredA_x

predictorA_y = oppositefieldpredA_y predictorA_y = oppositefieldpredA_y

predictorB_x = oppositefieldpredB_xpredictorB_x = oppositefieldpredB_x

predictorB_y = oppositefieldpredB_y predictorB_y = oppositefieldpredB_y

predictorC_x = oppositefieldpredC_x predictorC_x = oppositefieldpredC_x

predictorC_y = oppositefieldpredC_ypredictorC_y = oppositefieldpredC_y

이와 마찬가지로, predictor_flag가 동일한 필드 예측자가 사용됨을 가리키는 경우, Similarly, if predictor_flag indicates that the same field predictor is used,

predictor_pre_x = samefieldpred_xpredictor_pre_x = samefieldpred_x

predictor_pre_x = samefieldpred_y predictor_pre_x = samefieldpred_y

predictorA_x = samefieldpredA_x predictorA_x = samefieldpredA_x

predictorA_y = samefieldpredA_y predictorA_y = samefieldpredA_y

predictorB_x = samefieldpredB_x predictorB_x = samefieldpredB_x

predictorB_y= samefieldpredB_y predictorB_y = samefieldpredB_y

predictorC_x = samefieldpredC_xpredictorC_x = samefieldpredC_x

predictorC_y = samefieldpredC_ypredictorC_y = samefieldpredC_y

여기서 oppositefieldpred 및 samefieldpred의 값은 이전의 섹션에서 기술된 바와 같이 계산된다.Where the values of oppositefieldpred and samefieldpred are calculated as described in the previous section.

9. 9. 루마Luma 움직임 벡터의 재구성 Reconstruction of motion vector

1MV 및 4MV 매크로블록 둘다에 있어서, 루마 움직임 벡터는 다음과 같이 차분을 예측자에 가산함으로써 재구성되며, 여기서 변수 range_x 및 range_y는 MVRANGE(4633)에 의존하고 도 49b에 도시된 테이블에 지정되어 있다. NUMREF = 0의 경우(1 참조 필드 인터레이스형 P-필드), For both 1MV and 4MV macroblocks, the luma motion vector is reconstructed by adding the difference to the predictor as follows, where the variables range_x and range_y depend on MVRANGE 473 and are specified in the table shown in FIG. 49B. For NUMREF = 0 (1 reference field interlaced P-field),

mv_x = (dmv_x + predictor_x) smod range_x 이고mv_x = (dmv_x + predictor_x) smod range_x

mv_y = (dmv_y + predictor_y) smod (range_y)mv_y = (dmv_y + predictor_y) smod (range_y)

이다.to be.

NUMREF = 1인 경우(2 참조 필드 인터레이스형 P-필드),If NUMREF = 1 (2 reference field interlaced P-field),

mv_x = (dmv_x + predictor_x) smod range_x이고, mv_x = (dmv_x + predictor_x) smod range_x,

mv_y = (dmv_y + predictor_y) smod (range_y/2)mv_y = (dmv_y + predictor_y) smod (range_y / 2)

이다. to be.

인터레이스형 P-필드가 2개의 참조 픽처를 사용하는 경우(NUMREF = 1), predictor_flag(움직임 벡터 차분의 디코딩 시에 도출됨)는 도 54에 도시한 바와 같이 어느 필드가 참조로서 사용되는지를 판정하기 위해 dominantpredictor(움직임 벡터 예측 시에 도출됨)의 값과 합성된다.If an interlaced P-field uses two reference pictures (NUMREF = 1), predictor_flag (derived when decoding the motion vector difference) is used to determine which field is used as a reference, as shown in FIG. Is combined with the value of the dominantpredictor (derived from the motion vector prediction).

1MV 매크로블록에서, 매크로블록의 루마 성분을 구성하는 4개의 블록에 대해 단일의 움직임 벡터가 있다. MBMODE(4661) 신택스 요소가 매크로블록 계층에 MV 데이터가 없음을 가리키는 경우, dmvx = 0 이고 dmvy = 0 (mvx = predictor-x 이고 mv_y = predictor_y임)이다. In a 1MV macroblock, there is a single motion vector for the four blocks that make up the luma component of the macroblock. If the MBMODE (4661) syntax element indicates that there is no MV data in the macroblock layer, then dmvx = 0 and dmvy = 0 (mvx = predictor-x and mv_y = predictor_y).

4MV 매크로블록에서, 매크로블록 내의 인터-코딩된 루마 블록 각각은 그 자신의 움직임 벡터를 갖는다. 따라서, 각각의 4MV 매크로블록 내에 4개의 루마 움직임 벡터가 있다. 4MVBP(4664) 신택스 요소가 블록에 대해 움직임 벡터 정보가 없 음을 가리키는 경우, dmv_x = 0 이고 그 블록에 대한 dmv_y(mv_x = predictor_x 이고 mv_y = predictor_y임). In a 4MV macroblock, each inter-coded luma block in the macroblock has its own motion vector. Thus, there are four luma motion vectors in each 4MV macroblock. 4MVBP (4664) If the syntax element indicates that there is no motion vector information for a block, then dmv_x = 0 and dmv_y for that block (mv_x = predictor_x and mv_y = predictor_y).

10. 10. 크로마Chroma 움직임 벡터의 도출 Derivation of the Motion Vector

크로마 움직임 벡터는 루마 움직임 벡터로부터 도출된다. 크로마 움직임 벡터는 2 단계로 재구성된다. 첫번째 단계로서, 루마 움직임 벡터를 적절히 합성 및 스케일링함으로써 공칭 크로마 움직임 벡터가 획득된다. 스케일링은 1/2-픽셀 오프셋이 1/4-픽셀 오프셋보다 선호되도록 수행된다. 두번째 단계에서, 크로마 움직임 벡터의 추가의 반올림이 필요한지를 판정하기 위해 1-비트 FASTUVMC 신택스 요소가 사용된다. FASTUVMC = 0 인 경우, 두번째 단계에서 반올림이 수행되지 않는다. FASTUVMC = 1 인 경우, 1/4-픽셀 오프셋에 있는 크로마 움직임 벡터는 가장 가까운 1/2 및 완전-픽셀(full-pel) 위치로 반올림된다. 모든 크로마 보간을 위해 바이리이너 필터링(bilinear filtering)만이 사용된다. 변수 cmv_x 및 cmv_y는 각각 크로마 움직임 벡터 성분을 나타내고, lmv_x 및 lmv_y는 각각 루마 움직임 벡터 성분을 나타낸다.The chroma motion vector is derived from the luma motion vector. The chroma motion vector is reconstructed in two steps. As a first step, a nominal chroma motion vector is obtained by properly synthesizing and scaling the luma motion vector. Scaling is performed such that a 1 / 2-pixel offset is preferred over a 1 / 4-pixel offset. In a second step, a 1-bit FASTUVMC syntax element is used to determine if additional rounding of chroma motion vectors is needed. If FASTUVMC = 0, no rounding is performed in the second step. When FASTUVMC = 1, the chroma motion vector at the quarter-pixel offset is rounded to the nearest half and full-pel position. Only bilinear filtering is used for all chroma interpolation. The variables cmv_x and cmv_y represent chroma motion vector components, respectively, and lmv_x and lmv_y represent luma motion vector components, respectively.

1MV 매크로블록에서, 크로마 움직임 벡터는 다음과 같이 루마 움직임 벡터로부터 도출된다.In a 1MV macroblock, the chroma motion vector is derived from the luma motion vector as follows.

cmv_x = (lmv_x + round [lmv_x & 3]) ≫ 1 및cmv_x = (lmv_x + round [lmv_x & 3]) '' 1 and

cmv_y = (lmv_y + round [lmv_y & 3]) ≫ 1이고, cmv_y = (lmv_y + round [lmv_y & 3]) '' 1,

여기서 round[0] = 0, round[1] = 0, round[2] = 0, round[3] = 1 이다. Where round [0] = 0, round [1] = 0, round [2] = 0, round [3] = 1

도 55a 및 도 55b의 의사 코드는 크로마 움직임 벡터가 4MV 매크로블록 내의 4개의 루마 블록에서의 움직임 정보로부터 어떻게 도출되는지의 첫번째 단계를 나타낸 것이다. 이 의사 코드에서, ix 및 iy는 임시 변수이다. 도 55a는 1 참조 필드 인터레이스형 P-필드에 대한 크로마 움직임 벡터 도출에 대한 의사 코드이고, 도 55b는 2 참조 필드 인터레이스형 P-필드에 대한 크로마 움직임 벡터 도출에 대한 의사 코드이다.55A and 55B show the first step of how the chroma motion vector is derived from the motion information in four luma blocks in the 4MV macroblock. In this pseudo code, ix and iy are temporary variables. 55A is a pseudo code for chroma motion vector derivation for a 1 reference field interlaced P-field, and FIG. 55B is a pseudo code for chroma motion vector derivation for a 2 reference field interlaced P-field.

11. 세기 보상11. Century Reward

MVMODE(4635)가 인터레이스형 P-필드에 대해 세기 보상이 사용되었음을 가리키는 경우, 참조 필드 중 하나 또는 둘다에서의 픽셀은 이들을 현재 P-필드에 대한 예측자로서 사용하기 전에 재매핑된다. 세기 보상이 사용되는 경우, LUMSCALE1(4638) 및 LUMSHIFT1(4639) 신택스 요소는 제1 참조 필드에 대한 비트스트림에 존재하고, LUMSCALE2(4640) 및 LUMSHIFT2(4641) 요소는 제2 참조 필드에 대해서도 존재할 수 있다. 도 56의 의사 코드는 LUMSCALE1(4638) 및 LUMSHIFT1(4639) 값이 제1 참조 필드에 대한 참조 필드 픽셀을 재매핑하는 데 사용되는 룩업 테이블을 작성하는 데 어떻게 사용되는지를 나타낸다. (이 의사 코드는 마찬가지로 제2 참조 필드에 대한 LUMSCALE2(4640) 및 LUMSHIFT2(4641)에 대해 적용가능하다.) If MVMODE 4635 indicates that intensity compensation was used for an interlaced P-field, pixels in one or both of the reference fields are remapped before using them as predictors for the current P-field. If intensity compensation is used, the LUMSCALE1 4638 and LUMSHIFT1 4637 syntax elements are present in the bitstream for the first reference field, and the LUMSCALE2 4640 and LUMSHIFT2 4464 elements may also exist for the second reference field. have. The pseudo code of FIG. 56 shows how the LUMSCALE1 4638 and LUMSHIFT1 4639 values are used to create a lookup table used to remap reference field pixels for the first reference field. (This pseudo code is likewise applicable for LUMSCALE2 4640 and LUMSHIFT2 4641 for the second reference field.)

다음과 같이, 참조 필드의 Y 성분은 LUTY[] 테이블을 사용하여 재매핑되고, Cb/Cr 성분은 LUTUV[] 테이블을 사용하여 재매핑된다.As follows, the Y component of the reference field is remapped using the LUTY [] table, and the C b / C r component is remapped using the LUTUV [] table.

Figure 112009053892549-pat00034
Figure 112009053892549-pat00034
And

Figure 112009053892549-pat00035
Figure 112009053892549-pat00035

여기서,

Figure 112009053892549-pat00036
는 참조 필드에서의 원래의 루마 픽셀 값이고,
Figure 112009053892549-pat00037
는 참조 필드에서의 재매핑된 루마 픽셀 값이며,
Figure 112009053892549-pat00038
는 참조 필드에서의 원래의 Cb 또는 Cr 픽셀값이고,
Figure 112009053892549-pat00039
는 참조 필드에서의 재매핑된 Cb 또는 Cr 픽셀값이다.here,
Figure 112009053892549-pat00036
Is the original luma pixel value in the reference field,
Figure 112009053892549-pat00037
Is the remapped luma pixel value in the reference field,
Figure 112009053892549-pat00038
Is the original C b or C r pixel value in the reference field,
Figure 112009053892549-pat00039
Is the remapped C b or C r pixel value in the reference field.

12. 나머지 디코딩12. Rest decoding

디코더는 매크로블록에 대한 CBPCY(4662) 요소가 존재하는 경우 이 요소를 디코딩하며, 여기서 CBPCY(4662) 요소는 계수 데이터의 존재 여부를 가리킨다. 블록 계층에서, 디코더는 인터-코딩된 블록 및 인트라-코딩된 블록에 대한 계수 데이터를 디코딩한다(4MV 매크로블록은 제외). 인터-코딩된 블록을 재구성하기 위해, 디코더는 (1) 변환 유형(8x8, 8x4, 4x8, 또는 4x4)을 선택하고, (2) 서브-블록 패턴(들)을 디코딩하며, (3) 계수를 디코딩하고, (4) 역변환을 수행하며, (5) 역양자화를 수행하고, (6) 블록에 대한 예측을 획득하며, (7) 예측과 오차 블록을 가산한다.The decoder decodes this element if there is a CBPCY 4466 element for the macroblock, where the CBPCY 4466 element indicates the presence of coefficient data. In the block layer, the decoder decodes the coefficient data for the inter-coded block and the intra-coded block (except for the 4MV macroblock). To reconstruct an inter-coded block, the decoder selects (1) the transform type (8x8, 8x4, 4x8, or 4x4), (2) decodes the sub-block pattern (s), and (3) Decode, (4) perform inverse transform, (5) perform inverse quantization, (6) obtain predictions for blocks, and (7) add predictions and error blocks.

C. 제2 결합 구현에서의 C. In the Second Combined Implementation 시퀀스sequence  And 시맨틱스Semantics

제2 결합 구현에서, 압축된 비디오 시퀀스는 계층적 층들로 구조화된 데이터로 이루어져 있다. 상부로부터 하부로, 이 층들은 픽처 계층, 매크로블록 계층 및 블록 계층이다. 시퀀스 계층이 시퀀스에 선행한다. 도 57a 내지 도 57c는 여러가 지 계층을 구성하는 비트스트림 요소를 나타낸 것이다.In a second combined implementation, the compressed video sequence consists of data structured in hierarchical layers. From top to bottom, these layers are the picture layer, macroblock layer and block layer. The sequence layer precedes the sequence. 57A to 57C illustrate bitstream elements constituting various layers.

1. One. 시퀀스sequence 계층  hierarchy 신택스Syntax  And 시맨틱스Semantics

시퀀스-레벨 헤더는 압축된 픽처 시퀀스를 디코딩하는 데 사용되는 시퀀스-레벨 파라미터를 포함한다. 이 헤더는 외부로 전달되는 디코더 구성 정보로서 또는 비디오 데이터 스트림의 일부로서 디코더가 이용할 수 있게 되어 있다. 도 57a는 시퀀스 계층을 구성하는 요소들을 보여주는 시퀀스 계층 비트스트림에 대한 신택스 다이어그램이다. 클립 프로필 PROFILE(5701) 요소는 클립을 생성하는 데 사용되는 인코딩 프로필을 규정한다. PROFILE이 "고급" 프로필인 경우, 클립 레벨 LEVEL(5702) 요소는 클립에 대한 인코딩 레벨을 지정한다. 다른 대안으로서(예를 들어, 다른 프로필의 경우), 클립 레벨은 외부 수단에 의해 디코더로 전달된다.The sequence-level header includes a sequence-level parameter used to decode the compressed picture sequence. This header is made available to the decoder as decoder configuration information to be delivered externally or as part of a video data stream. 57A is a syntax diagram for a sequence layer bitstream showing elements constituting the sequence layer. Clip Profile The PROFILE 5701 element defines the encoding profile used to create the clip. If PROFILE is an "advanced" profile, the clip level LEVEL 5702 element specifies the encoding level for the clip. As another alternative (eg for other profiles), the clip level is delivered to the decoder by external means.

INTERLACE(5703) 요소는 PROFILE이 고급 프로필인 경우에 존재하는 1-비트 필드이다. INTERLACE(5703)는 비디오가 순차 또는 인터레이스 모드로 코딩되어 있는지를 지정한다. INTERLACE = 0 인 경우, 비디오 프레임은 순차 모드로 코딩되어 있다. INTERLACE = 1 인 경우, 비디오 프레임은 인터레이스 모드로 코딩되어 있다. PROFILE(5701)이 고급 프로필이 아닌 경우, 비디오는 순차 모드로 코딩되어 있다.The INTERLACE 5703 element is a 1-bit field that exists when PROFILE is an advanced profile. INTERLACE 5703 specifies whether the video is coded in sequential or interlaced mode. If INTERLACE = 0, the video frame is coded in sequential mode. If INTERLACE = 1, the video frame is coded in interlace mode. If PROFILE 5701 is not an advanced profile, the video is coded in sequential mode.

확장된 움직임 벡터 EXTENDED_MV(5704) 요소는 확장된 움직임 벡터 기능이 온인지 오프인지를 가리키는 1-비트 필드이다. EXTENDED_MV = l 인 경우, 움직임 벡터는 확장된 범위를 갖는다. EXTENDED_MV = 0 인 경우, 움직임 벡터는 확장된 범위를 갖지 않는다.The extended motion vector EXTENDED_MV 5704 element is a 1-bit field indicating whether the extended motion vector function is on or off. If EXTENDED_MV = l, the motion vector has an extended range. If EXTENDED_MV = 0, the motion vector does not have an extended range.

2. 2. 픽처Picture 계층  hierarchy 신택스Syntax  And 시맨틱스Semantics

픽처에 대한 데이터는 픽처 헤더 및 그 뒤에 오는 매크로블록 계층에 대한 데이터로 이루어져 있다. 도 57b는 인터레이스형 P-필드에 대한 픽처 계층을 구성하는 요소를 보여주는 픽처 계층 비트스트림에 대한 신택스 다이어그램이다. Data for a picture consists of data for the picture header and the macroblock layer following it. 57B is a syntax diagram for a picture layer bitstream showing elements constituting a picture layer for an interlaced P-field.

픽처 유형 PTYPE(5722) 요소는 1-비트 필드 또는 가변-크기 필드이다. B-픽처가 없는 경우, 단지 I-픽처 및 P-픽처만이 시퀀스에 존재하고, PTYPE은 단일 비트로 인코딩된다. PTYPE = 0 인 경우, 픽처 유형은 I이다. PTYPE = 1 인 경우, 픽처 유형은 P이다. B-픽처의 개수가 0보다 큰 경우, PTYPE(5722)은 프레임의 픽처 유형을 가리키는 가변 크기 필드이다. PTYPE = 1인 경우, 픽처 유형은 P이다. PTYPE = 01(이진값)인 경우, 픽처 유형은 I이다. PTYPE = 00(이진값) 인 경우, 픽처 유형은 B이다.The picture type PTYPE 5722 element is a 1-bit field or variable-size field. In the absence of a B-picture, only I-pictures and P-pictures are present in the sequence, and the PTYPE is encoded with a single bit. If PTYPE = 0, the picture type is I. If PTYPE = 1, the picture type is P. If the number of B-pictures is greater than zero, PTYPE 5722 is a variable size field indicating the picture type of the frame. If PTYPE = 1, the picture type is P. If PTYPE = 01 (binary value), the picture type is I. If PTYPE = 00 (binary value), the picture type is B.

참조 픽처의 개수 NUMREF(5731) 요소는 인터레이스형 P-필드 헤더에 존재하는 1-비트 신택스 요소이다. 이 요소는 인터레이스형 P-필드가 1개(NUMREF=0) 또는 2개(NUMREF=1)의 참조 픽처를 갖는지를 가리킨다. 참조 필드 픽처 표시자 REFFIELD(5732)는 NUMREF = 0인 경우에 인터레이스형 P-필드에 존재하는 1-비트 신택스 요소이다. 이 표시자는 2개의 가능한 참조 픽처 중 어느 것을 인터레이스형 P-필드가 사용하는지를 가리킨다.The number of reference pictures NUMREF 5731 is a 1-bit syntax element present in the interlaced P-field header. This element indicates whether the interlaced P-field has one (NUMREF = 0) or two (NUMREF = 1) reference pictures. Reference field picture indicator REFFIELD 5732 is a 1-bit syntax element present in an interlaced P-field when NUMREF = 0. This indicator indicates which of the two possible reference pictures the interlaced P-field uses.

확장된 MV 범위 플래그 MVRANGE(5733)는 특정의 프로필("메인" 프로필)을 사용하여 코딩된 시퀀스의 P-픽처에 존재하는 가변-크기 신택스 요소로서, 그에 대해 BROADCAST 요소는 1로 설정되어 있다. 일반적으로, MVRANGE(5733)는 움직임 벡터 에 대한 확장된 범위(즉, 움직임 벡터에 대한 더 긴 가능한 수평 및/또는 수직 변위)를 가리킨다. MVRANGE(5733)는 움직임 벡터 차분을 디코딩하는 데 사용된다.Extended MV range flag MVRANGE 5735 is a variable-size syntax element present in a P-picture of a sequence coded using a particular profile (“main” profile), with the BROADCAST element set to one. In general, MVRANGE 5739 points to an extended range for the motion vector (ie, the longer possible horizontal and / or vertical displacement for the motion vector). MVRANGE 5733 is used to decode the motion vector difference.

움직임 벡터 모드 MVMODE(5735) 요소는 4개의 움직임 벡터 코딩 모드 중 하나 또는 하나의 세기 보상 모드를 시그널링하는 가변-크기 신택스 요소이다. 움직임 벡터 코딩 모드는 움직임 보상을 위한 서로 다른 서브-픽셀 보간 규칙을 갖는 3개의 "1MV" 모드를 포함한다. 1MV는 픽처 내의 각각의 매크로블록이 기껏해야 하나의 움직임 벡터를 가짐을 뜻한다. "혼합-MV" 모드에서, 픽처 내의 각각의 매크로블록은 하나 또는 4개의 움직임 벡터를 가질 수 있거나 건너뜀일 수 있다. PQUANT(픽처에 대한 양자화 계수)의 값에 따라, 도 47e에 도시된 테이블 중 어느 하나가 MVMODE(5735) 요소에 대해 사용된다.The motion vector mode MVMODE 5735 element is a variable-size syntax element that signals one of one of the four motion vector coding modes or one intensity compensation mode. The motion vector coding mode includes three "1MV" modes with different sub-pixel interpolation rules for motion compensation. 1 MV means that each macroblock in a picture has at most one motion vector. In the "mixed-MV" mode, each macroblock in a picture may have one or four motion vectors or may be skipped. Depending on the value of PQUANT (quantization coefficient for the picture), any one of the tables shown in FIG. 47E is used for the MVMODE 5735 element.

움직임 벡터 모드 2 MVMODE2(5736) 요소는 MVMODE(5735)가 세기 보상을 시그널링하는 경우에 인터레이스형 P-필드 헤더에 존재하는 가변-길이 신택스 요소이다. 이전의 테이블(세기 보상에 대한 코드가 없음)은 MVMODE2(5736)에 대해 사용될 수 있다.The motion vector mode 2 MVMODE2 5736 element is a variable-length syntax element present in the interlaced P-field header when the MVMODE 5735 signals intensity compensation. The previous table (no code for intensity compensation) can be used for MVMODE2 5736.

루미넌스 스케일 LUMSCALE(5738) 및 루미넌스 천이 LUMSHIFT(5739) 요소는 각각 세기 보상에서 사용되는 6-비트 값이다. LUMSCALE(5738) 및 LUMSHIFT(5739)는 MVMODE(5735)가 세기 보상을 시그널링하는 경우에 인터레이스형 P-필드 헤더에 존재한다.The luminance scale LUMSCALE 5738 and luminance transition LUMSHIFT 5739 elements are each 6-bit values used in intensity compensation. LUMSCALE 5738 and LUMSHIFT 5739 are present in the interlaced P-field header when MVMODE 5735 signals intensity compensation.

매크로블록 모드 테이블 MBMODETAB(5742) 요소는 인터레이스형 P-필드 헤더에 대한 2-비트 필드이다. MBMODETAB(5742)는 매크로블록 계층에서 매크로블록 모 드 MBMODE(5761) 신택스 요소를 인코딩/디코딩하는 데 4개의 코드 테이블(2-비트 값으로 지정되는 테이블 0 내지 3) 중 어느 것이 사용되는지를 가리킨다.The macroblock mode table MBMODETAB 5574 element is a 2-bit field for the interlaced P-field header. MBMODETAB 5574 indicates which of the four code tables (tables 0 to 3 specified as 2-bit values) is used to encode / decode the macroblock mode MBMODE 5576 syntax element in the macroblock layer.

움직임 벡터 테이블 MVTAB(5743) 요소는 인터레이스형 P-필드에 대한 2-비트 필드이다. MVTAB(5743)는 움직임 벡터 데이터를 인코딩/디코딩하는 데 4개의 코드 테이블(2-비트 값으로 지정되는 테이블 0 내지 3) 중 어느 것이 사용되는지를 가리킨다. The motion vector table MVTAB 5743 element is a 2-bit field for an interlaced P-field. MVTAB 5743 indicates which of the four code tables (tables 0 to 3 specified as 2-bit values) are used to encode / decode the motion vector data.

4MV 블록 패턴 테이블 4MVBPTAB(5744) 요소는 MVMODE(5735)]또는 MVMODE(5735)가 세기 보상으로 설정되어 있는 경우, MVMODE2(5736)]가 픽처가 혼합-MV 유형임을 가리키는 경우 인터레이스형 P-필드에 존재하는 2-비트 값이다. 4MVBPTAB(5744)은 4MV 매크로블록에서의 4MV 블록 패턴 4MVBP(5764) 필드를 인코딩/디코딩하는 데 4개의 코드 테이블(2-비트 값으로 지정된 테이블 0 내지 3) 중 어느 것이 사용되는지를 시그널링한다. 4MV Block Pattern Table The 4MVBPTAB (5744) element contains an interlaced P-field if MVMODE (5735)] or MVMODE (5735) is set to strength compensation, and MVMODE2 (5736)] indicates that the picture is a mixed-MV type. It is a 2-bit value that exists. 4MVBPTAB 5744 signals which of the four code tables (tables 0 to 3 specified as 2-bit values) are used to encode / decode the 4MV block pattern 4MVBP 5764 field in the 4MV macroblock.

인터레이스형 P-프레임 헤더(도시 생략)는 도 57b에 도시된 인터레이스형 P-필드 헤더와 동일한 요소를 다수 갖는다. 이들은 PTYPE(5722), MBMODETAB(5742), MVTAB(5743) 및 4MVBPTAB(5744)을 포함하지만, 인터레이스형 P-프레임에 대한 정확한 신택스 및 시맨틱스는 인터레이스형 P-필드와 다를 수 있다. 예를 들어, 4MVBPTAB은 다시 말하지만 4MV 매크로블록에서의 4MV 블록 패턴 4MVBP 요소를 인코딩/디코딩하는 데 4개의 코드 테이블(2-비트 값으로 지정된 테이블 0 내지 3) 중 어느 것이 사용되는지를 가리키는 2-비트 필드이다. 인터레이스형 P-프레임 헤더는 또한 1MV와 4MV 모드 간의 전환을 위한 또 세기 보상 시그널링을 위한 다른 요 소들을 포함한다.The interlaced P-frame header (not shown) has many of the same elements as the interlaced P-field header shown in FIG. 57B. These include PTYPE 5722, MBMODETAB 5574, MVTAB 5843, and 4MVBPTAB 5744, but the exact syntax and semantics for interlaced P-frames may differ from interlaced P-fields. For example, 4MVBPTAB, again, is a 2-bit indicating which of the four code tables (tables 0 to 3 specified as 2-bit values) are used to encode / decode 4MV block pattern 4MVBP elements in 4MV macroblocks. Field. The interlaced P-frame header also includes other elements for switching between 1MV and 4MV modes and for intensity compensation signaling.

인터레이스형 P-프레임이 매크로블록당 2개의 움직임 벡터를 갖는 필드-코딩된 매크로블록을 포함할 수 있기 때문에, 인터레이스형 P-프레임 헤더는 2 움직임 벡터 블록 패턴 테이블 2MVBPTAB 요소를 포함한다. 2MVBPTAB은 인터레이스형 P-프레임에 존재하는 2-비트 필드이다. 이 신택스 요소는 2MV 필드-코딩된 매크로블록에서의 2MV 블록 패턴(2MVBP) 요소를 인코딩/디코딩하는 데 4개의 테이블(2-비트 값으로 지정되는 테이블 0 내지 3) 중 어느 것이 사용되는지를 시그널링한다. 도 47k는 2MVBP에 이용가능한 4개의 테이블을 나타낸 것이다. Since interlaced P-frames may include field-coded macroblocks with two motion vectors per macroblock, the interlaced P-frame header includes two motion vector block pattern table 2MVBPTAB elements. 2MVBPTAB is a 2-bit field present in an interlaced P-frame. This syntax element signals which of the four tables (tables 0 to 3 specified as 2-bit values) are used to encode / decode a 2MV Block Pattern (2MVBP) element in a 2MV field-coded macroblock. . 47K shows four tables available for 2MVBP.

인터레이스형 B-필드 및 인터레이스형 B-프레임은 인터레이스형 P-필드 및 인터레이스형 P-프레임의 동일 요소를 다수 갖는다. 상세하게는, 인터레이스형 B-프레임은 2MVBPTAB 및 4MVBPTAB(5721) 신택스 요소 둘다를 포함하지만, 이 요소들의 시맨틱스는 인터레이스형 P-필드 및 P-프레임과 다를 수 있다.Interlaced B-fields and interlaced B-frames have many of the same elements of interlaced P-fields and interlaced P-frames. Specifically, interlaced B-frames include both 2MVBPTAB and 4MVBPTAB 5721 syntax elements, but the semantics of these elements may differ from interlaced P-fields and P-frames.

3. 매크로블록 계층 3. Macroblock Layer 신택스Syntax  And 시맨틱스Semantics

매크로블록에 대한 데이터는 매크로블록 헤더와 그에 뒤따르는 블록 계층으로 이루어져 있다. 도 57c는 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 계층을 구성하는 요소를 나타낸 매크로블록 계층 비트스트림에 대한 신택스 다이어그램이다.The data for a macroblock consists of a macroblock header followed by a block hierarchy. FIG. 57C is a syntax diagram for a macroblock layer bitstream showing elements constituting a macroblock layer for a macroblock of an interlaced P-field.

매크로블록 모드 MBMODE(5761) 요소는 가변-크기 요소이다. 이 요소는 매크로블록에 대한 움직임 벡터의 개수(1MV, 4MV 또는 인트라), 매크로블록에 대해 코딩된 블록 패턴 CBPCY(5762) 요소가 존재하는지 여부, 및 (어떤 경우에) 매크로블 록에 대해 움직임 벡터 차분 데이터가 존재하는지 여부 등의 정보를 공동으로 가리킨다.The macroblock mode MBMODE 5576 element is a variable-size element. This element is the number of motion vectors for the macroblock (1MV, 4MV or intra), whether there is a block pattern CBPCY 5576 element coded for the macroblock, and (in some cases) the motion vector for the macroblock. Information such as whether there is difference data is indicated jointly.

움직임 벡터 데이터 MVDATA(5763) 요소는 매크로블록의 움직임 벡터에 대한 움직임 벡터 정보(예를 들어, 수평 및 수직 차분)를 인코딩하는 가변-길이 요소이다. 2개의 참조 필드를 갖는 인터레이스형 P-필드의 경우, MVDATA(5763)은 또한 움직임 벡터에 대한 우세 움직임 벡터 예측자와 비우세 움직임 벡터 예측자 간에 선택하기 위한 정보도 인코딩한다.The motion vector data MVDATA 5763 element is a variable-length element that encodes motion vector information (eg, horizontal and vertical differences) for the motion vector of the macroblock. For an interlaced P-field with two reference fields, the MVDATA 5763 also encodes information for selecting between the dominant motion vector predictor and the non-dominant motion vector predictor for the motion vector.

4 움직임 벡터 블록 패턴 4MVBP(5764) 요소는 MBMODE(5761)가 매크로블록이 4개의 움직임 벡터를 가짐을 가리키는 경우에 존재한다. 4MVBP(5764) 요소는 4개의 루미넌스 블록 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하는지를 가리킨다. 4MVBP(5764) 요소를 0 내지 14의 값으로 디코딩하기 위해 코드 테이블이 사용된다. 이 디코딩된 값은 이진값으로 표현될 때 도 34에 도시된 바와 같이 대응하는 루미넌스 블록에 대한 움직임 벡터가 존재하는지 여부를 가리키는 비트 필드를 나타낸다.The four motion vector block pattern 4MVBP 5764 element is present when MBMODE 5861 indicates that the macroblock has four motion vectors. The 4MVBP 5764 element indicates which of the four luminance blocks contains a non-zero motion vector difference. A code table is used to decode the 4MVBP 5764 element to a value between 0 and 14. This decoded value represents a bit field indicating whether a motion vector for the corresponding luminance block exists as shown in FIG. 34 when represented as a binary value.

2 움직임 벡터 블록 패턴 2MVBP 요소(도시 생략)는 인터레이스형 P-프레임에서의 매크로블록에 존재하는 가변-크기 신택스 요소이다. 인터레이스형 P-프레임 매크로블록에서, 2MVBP는 MBMODE(5761)가 매크로블록이 2개의 필드 움직임 벡터를 가짐을 가리키는 경우에 존재한다. 이 경우에, 2MVBP는 2개의 필드(상부 및 하부) 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하는지를 가리킨다.The two motion vector block pattern 2MVBP element (not shown) is a variable-size syntax element present in a macroblock in an interlaced P-frame. In an interlaced P-frame macroblock, 2MVBP is present when MBMODE 5861 indicates that the macroblock has two field motion vectors. In this case, 2MVBP indicates which of the two fields (top and bottom) contains a non-zero motion vector difference.

블록-레벨 움직임 벡터 데이터 BLKMVDATA(5765) 요소는 어떤 상황에서 존재 하는 가변-크기 요소이다. 이 요소는 매크로블록의 블록에 대한 움직임 정보를 포함한다.The block-level motion vector data BLKMVDATA 5765 element is a variable-size element that exists in some situations. This element contains motion information for a block of macroblocks.

하이브리드 움직임 벡터 예측 HYPRIDPRED(5766) 요소는 인터레이스형 P-필드에서의 매크로블록에 존재할 수 있는 움직임 벡터당 1-비트 신택스 요소이다. 하이브리드 움직임 벡터 예측이 사용되는 경우, HYBRIDPRED(5766)는 2개의 움직임 벡터 예측자 중 어느 것을 사용해야 하는지를 가리킨다.Hybrid Motion Vector Prediction HYPRIDPRED (5766) element is a 1-bit syntax element per motion vector that may exist in a macroblock in an interlaced P-field. If hybrid motion vector prediction is used, HYBRIDPRED 5766 indicates which of the two motion vector predictors to use.

4. 블록 계층 4. Block Layer 신택스Syntax  And 시맨틱스Semantics

인터레이스형 픽처에 대한 블록 계층은 순차 픽처에 대한 블록 계층의 신택스 및 시맨틱스를 따른다. 일반적으로, 블록 및 서브-블록의 DC 및 AC 계수에 대한 정보는 블록 계층에서 시그널링된다.The block layer for interlaced pictures follows the syntax and semantics of the block layer for sequential pictures. In general, information about the DC and AC coefficients of blocks and sub-blocks is signaled at the block layer.

D. 제2 결합 구현에서의 디코딩D. Decoding in the Second Combined Implementation

이하의 섹션들은 인터레이스형 P-필드에 대한 디코딩 프로세스에 중점을 두고 있다.The following sections focus on the decoding process for interlaced P-fields.

1. One. 인터레이스형Interlaced P-필드 디코딩에 대한 참조 Reference to P-field Decoding

인터레이스형 P-필드는 움직임 보상에서 하나 또는 2개의 이전에 디코딩된 필드를 참조할 수 있다. 픽처 계층에서의 NUMREF(5731) 필드는 현재 필드가 하나 또는 2개의 이전의 참조 필드 픽처를 참조할 수 있는지를 가리킨다. NUMREF = 0인 경우, 현재의 인터레이스형 P-필드는 하나의 필드만을 참조할 수 있다. 이 경우에, 픽처 계층 비트스트림에서 REFFIELD(5732) 요소가 뒤따라오고 이는 어느 필드가 참조로서 사용되는지를 가리킨다. REFFIELD = 0인 경우, (디스플레이 순서에 서) 시간상 가장 가까운 I 또는 P-필드가 참조로서 사용된다. REFFIELD = 1인 경우, 시간상 두번째로 가장 최근의 I 또는 P-필드 픽처가 참조로서 사용된다. NUMREF = 1인 경우, 현재의 인터레이스형 P-필드 픽처는 (디스플레이 순서에서) 2개의 시간상 가장 가까운 I 또는 P 필드 픽처를 참조로서 사용한다. 도 24a 내지 도 24f에 도시된 NUMREF = 0 및 NUMREF = 1에 대한 참조 필드의 예는 전술한 바와 같이 제2 결합 구현에 적용된다.An interlaced P-field may refer to one or two previously decoded fields in motion compensation. The NUMREF 5731 field in the picture layer indicates whether the current field can reference one or two previous reference field pictures. If NUMREF = 0, the current interlaced P-field may refer to only one field. In this case, a REFFIELD 5732 element is followed in the picture layer bitstream, indicating which field is used as a reference. If REFFIELD = 0, the nearest I or P-field in time (in display order) is used as reference. If REFFIELD = 1, the second most recent I or P-field picture in time is used as a reference. If NUMREF = 1, the current interlaced P-field picture uses the two temporally closest I or P field pictures (in display order) as reference. Examples of reference fields for NUMREF = 0 and NUMREF = 1 shown in FIGS. 24A-F apply to the second combined implementation as described above.

2. 2. 픽처Picture 유형 및  Types and 픽처Picture 계층 테이블 선택 Hierarchical Table Selection

인터레이스형 P-필드는 2가지 유형, 즉 1MV 또는 혼합-MV 중 하나일 수 있다. 1MV P-필드에서, 1MV 매크로블록의 경우, 매크로블록에서의 6개 블록 모두에 대한 예측된 블록의 변위를 표시하는 데 단일의 움직임 벡터가 사용된다. 혼합-MV P-필드에서, 매크로블록은 1MV 또는 4MV 매크로블록으로서 인코딩될 수 있다. 4MV 매크로블록의 경우, 4개의 루미넌스 블록 각각은 그와 관련 움직임 벡터를 가질 수 있다. 1MV 모드 또는 혼합-MV 모드는 MVMODE(5735) 및 MVMODE2(5736) 픽처 계층 필드에 의해 시그널링된다.Interlaced P-fields can be of two types: 1MV or mixed-MV. In the 1MV P-field, for a 1MV macroblock, a single motion vector is used to indicate the predicted block displacement for all six blocks in the macroblock. In a mixed-MV P-field, macroblocks may be encoded as 1MV or 4MV macroblocks. In the case of a 4MV macroblock, each of the four luminance blocks may have an associated motion vector. The 1MV mode or mixed-MV mode is signaled by the MVMODE 5735 and MVMODE2 5736 picture layer fields.

인터레이스형 P-필드의 경우, 픽처 계층은 필드에 대한 움직임 보상 모드 및 세기 보상을 제어하는 신택스 요소를 포함한다. MVMODE(5735)는 1) 필드에 대한 4개의 움직임 벡터 모드 중 하나, 또는 2) 세기 보상이 필드에서 사용되는지 중 어느 하나를 시그널링한다. 세기 보상이 시그널링되는 경우, 픽처 계층에서 MVMODE2(5736), LUMSCALE(5738) 및 LUMSHIFT(5739) 필드가 뒤따라온다. 도 47e의 2개의 테이블 중 하나가 PQUANT가 12보다 큰지 여부에 따라 MVMODE(5735) 및 MVMODE2(5736) 필드를 디코딩하는 데 사용된다. In the case of an interlaced P-field, the picture layer includes a syntax element that controls the motion compensation mode and intensity compensation for the field. MVMODE 5735 signals either 1) one of four motion vector modes for the field, or 2) whether intensity compensation is used in the field. If intensity compensation is signaled, the MVMODE2 5736, LUMSCALE 5738, and LUMSHIFT 5739 fields are followed in the picture layer. One of the two tables in FIG. 47E is used to decode the MVMODE 5735 and MVMODE2 5736 fields depending on whether PQUANT is greater than 12. FIG.

움직임 벡터 모드가 혼합-MV 모드인 경우, MBMODETAB(5742)는 필드에서의 각 매크로블록에 대한 모드를 시그널링하기 위해 4개의 혼합-MV MBMODE 테이블 중 어느 것이 사용되는지를 시그널링한다. 움직임 벡터 모드가 혼합-MV(이 경우 모든 인터-코딩된 매크로블록은 1개의 움직임 벡터를 사용함)이 아닌 경우, MBMODETAB(5742)은 필드에서의 각각의 매크로블록의 모드를 시그널링하기 위해 4개의 1MV MBMODE 테이블 중 어느 것이 사용되는지를 시그널링한다. If the motion vector mode is mixed-MV mode, MBMODETAB 5574 signals which of the four mixed-MV MBMODE tables is used to signal the mode for each macroblock in the field. If the motion vector mode is not mixed-MV (in which case all inter-coded macroblocks use one motion vector), MBMODETAB 5574 can display four 1MVs to signal the mode of each macroblock in the field. Signals which of the MBMODE tables is used.

MVTAB(5743)는 인터레이스형 P-필드에서의 매크로블록에 대한 움직임 벡터 차분을 디코딩하는 데 사용되는 코드 테이블을 가리킨다. 4MVBPTAB(5744)는 인터레이스형 P-필드에서의 4MV 매크로블록에 대한 4MVBP(5764)를 디코딩하는 데 사용되는 코드 테이블을 가리킨다.MVTAB 5743 points to a code table used to decode motion vector differences for macroblocks in interlaced P-fields. 4MVBPTAB 5744 points to a code table used to decode 4MVBP 5764 for 4MV macroblocks in an interlaced P-field.

3. 매크로블록 3. Macro Block 모드mode 및 움직임 벡터 블록 패턴 And movement vector block pattern

인터레이스형 P-필드에서의 매크로블록은 3개의 가능한 유형, 즉 1MV, 4MV 및 인트라 중 하나 일 수 있다. 매크로블록 유형은 매크로블록 계층에서의 MBMODE(5761)에 의해 시그널링된다.Macroblocks in interlaced P-fields can be one of three possible types, 1MV, 4MV and intra. The macroblock type is signaled by MBMODE 5576 in the macroblock layer.

1MV 매크로블록은 1MV 및 혼합-MV P-필드에 있을 수 있다. 1MV 매크로블록은 단일의 움직임 벡터가 매크로블록 내의 6개의 블록 모두에 대한 현재 픽처와 참조 픽처 간의 변위를 나타내는 경우의 매크로블록이다. 현재 블록과 참조 블록 간의 차이는 블록 계층에 인코딩된다. 1MV 매크로블록의 경우, MBMODE(5761)는 3가지, 즉 (1) 매크로블록 유형이 1MV이라는 것, (2) CBPCY(5762)가 존재하는지 여부, 및 (3) MVDATA(5763)가 존재하는지 여부를 가리킨다.The 1MV macroblock may be in the 1MV and Mixed-MV P-field. A 1MV macroblock is a macroblock when a single motion vector represents a displacement between the current picture and the reference picture for all six blocks in the macroblock. The difference between the current block and the reference block is encoded in the block layer. For 1MV macroblocks, MBMODE 5761 has three types: (1) macroblock type is 1MV, (2) whether CBPCY (5762) exists, and (3) whether MVDATA (5763) exists. Point to.

MBMODE(5761)가 CBPCY(5762)이 존재함을 가리키는 경우, CBPCY(5762)는 매크로블록 계층에 존재하고 이는 6개의 블록 중 어느 것이 블록 계층에 코딩되는지를 가리킨다. MBMODE(5761)가 CBPCY(5762)이 존재하지 않음을 가리키는 경우, CBPCY(5762)는 0인 것으로 가정되고, 매크로블록에서의 6개의 블록 중 어느 것에 대해서도 블록 데이터가 존재하지 않는다.If MBMODE 5601 indicates that CBPCY 5702 is present, CBPCY 5702 is present in the macroblock layer, which indicates which of the six blocks is coded in the block layer. If MBMODE 5601 indicates that CBPCY 5702 does not exist, CBPCY 5702 is assumed to be zero, and no block data exists for any of the six blocks in the macroblock.

MBMODE(5761)가 MVDATA(5763)이 존재함을 가리키는 경우, MVDATA(5763)는 매크로블록 계층에 존재하고 움직임 벡터를 재구성하기 위해 움직임 벡터 예측자와 합성되는 움직임 벡터 차분을 인코딩한다. MBMODE(5761)가 MVDATA(5763)가 존재하지 않음을 가리키는 경우, 움직임 벡터 차분은 0인 것으로 가정되고 따라서 움직임 벡터는 움직임 벡터 예측자와 같다.If MBMODE 5711 indicates that MVDATA 5763 is present, MVDATA 5763 encodes a motion vector difference present in the macroblock layer and synthesized with the motion vector predictor to reconstruct the motion vector. If MBMODE 5711 indicates that MVDATA 5763 does not exist, then the motion vector difference is assumed to be zero and thus the motion vector is equal to the motion vector predictor.

4MV 매크로블록은 혼합-MV P-필드에만 있다. 4MV 매크로블록은 매크로블록에서의 4개의 루미넌스 블록 각각이 그 블록에 대한 현재 픽처 및 참조 픽처 간의 변위를 가리키는 관련 움직임 벡터를 가질 수 있는 경우의 매크로블록이다. 크로마 블록에 대한 변위는 4개의 루미넌스 움직임 벡터로부터 도출된다. 현재 블록과 참조 블록 간의 차이는 블록 계층에 인코딩된다. 4MV 매크로블록의 경우, MBMODE(5761)는 3가지, 즉 (1) 매크로블록 유형이 4MV이라는 것, (2) CBPCY(5762)가 존재하는지 여부, 및 (3) 4MVBP(5764)이 존재하는지 여부를 가리킨다.4MV macroblocks are only in the mixed-MV P-field. A 4MV macroblock is a macroblock when each of the four luminance blocks in the macroblock can have an associated motion vector that indicates the displacement between the current picture and the reference picture for that block. The displacement for the chroma block is derived from four luminance motion vectors. The difference between the current block and the reference block is encoded in the block layer. For 4MV macroblocks, MBMODE 5761 has three types: (1) macroblock type is 4MV, (2) whether CBPCY (5762) exists, and (3) whether 4MVBP (5764) exists. Point to.

MBMODE(5761)이 4MVBP(5764)가 존재함을 가리키는 경우, 4MVBP(5764)는 매크로블록 계층에 존재하고 또 4개의 루미넌스 블록 중 어느 것이 영이 아닌 움직임 벡터 차분을 포함하는지를 가리킨다. 4MVBP(5764)는 1 내지 14의 값으로 디코딩되고, 도 27에 나타낸 바와 같이 이 값은 이진값으로 표현될 때 대응하는 루미넌스 블록에 대한 움직임 벡터 데이터가 존재하는지 여부를 가리키는 비트 필드를 나타낸다. 4MVBP(5764)에서의 4개의 비트 위치 각각에 대해, 0의 값은 그 블록에 대해 움직임 벡터 차분(BLKMVDATA (5765))이 존재하지 않음을 가리키고, 움직임 벡터 차분은 0인 것으로 가정된다. 1의 값은 그 블록에 대한 움직임 벡터 차분(BLKMVDATA(5765))이 존재함을 가리킨다. MBMODE(5761)이 4MVBP(5764)가 존재하지 않음을 가리키는 경우, 4개의 루미넌스 블록 모두에 대해 움직임 벡터 차분 데이터(BLKMVDATA(5765))가 존재하는 것으로 가정한다.If MBMODE 5701 indicates that 4MVBP 5764 is present, 4MVBP 5764 is present in the macroblock layer and indicates which of the four luminance blocks contains non-zero motion vector differences. 4MVBP 5764 is decoded to a value of 1 to 14, and as shown in FIG. 27, this value represents a bit field indicating whether motion vector data for the corresponding luminance block, when represented as a binary value, exists. For each of the four bit positions in 4MVBP 5764, a value of zero indicates that there is no motion vector difference (BLKMVDATA 5765) for that block, and the motion vector difference is assumed to be zero. A value of 1 indicates that there is a motion vector difference (BLKMVDATA 5765) for that block. When MBMODE 5711 indicates that 4MVBP 5764 does not exist, it is assumed that motion vector difference data BLKMVDATA 5655 exists for all four luminance blocks.

인터레이스형 P-프레임 내의 필드-코딩된 매크로블록은 2개의 움직임 벡터를 포함할 수 있다. 2 필드 MV 매크로블록의 경우, 2MVBP 요소는 2개의 필드 중 어느 것이 영이 아닌 차분 움직임 벡터를 갖는지를 가리킨다.A field-coded macroblock in an interlaced P-frame may include two motion vectors. For a two field MV macroblock, the 2MVBP element indicates which of the two fields has a non-zero differential motion vector.

인트라 매크로블록은 1MV 또는 혼합-MV 필드에서 일어날 수 있다. 인트라 매크로블록은 6개의 블록 모두가 어떤 이전의 픽처 데이터도 참조함이 없이 코딩되는 경우의 매크로블록이다. 현재 블록 픽셀과 128의 일정값 간의 차이는 블록 계층에 인코딩된다. 인트라 매크로블록의 경우, MBMODE(5761)는 2가지, 즉 (1) 매크로블록 유형이 인트라라는 것, 및 (2) CBPCY(5762)가 존재하는지 여부를 가리킨다. 인트라 매크로블록의 경우, CBPCY(5762)가 존재할 때 이는 6개의 블록 중 어느 것이 블록 계층에 코딩된 AC 계수 데이터를 갖는지를 가리킨다.Intra macroblocks may occur in the 1 MV or mixed-MV field. An intra macroblock is a macroblock when all six blocks are coded without reference to any previous picture data. The difference between the current block pixel and a constant value of 128 is encoded in the block layer. For intra macroblocks, MBMODE 5701 indicates two things: (1) that the macroblock type is intra, and (2) whether CBPCY 5576 exists. For intra macroblocks, when CBPCY 5702 is present it indicates which of the six blocks has AC coefficient data coded in the block layer.

4. 움직임 벡터 차분의 디코딩4. Decoding Motion Vector Difference

MVDATA(5763) 및 BLKMVDATA(5765) 필드는 매크로블록 또는 매크로블록 내의 블록에 대한 움직임 정보를 인코딩한다. 1MV 매크로블록은 단일의 MVDATA(5763) 필드를 가지며, 4MV 매크로블록은 0 내지 4개의 BLKMVDATA(5765)를 가질 수 있다. 움직임 벡터 차분을 계산하는 일은 1-참조(NUMREF = 0) 경우와 2-참조(NUMREF = 1) 경우에 대해 서로 다르게 수행된다.MVDATA (5763) and BLKMVDATA (5765) fields encode the motion information for the macroblock or blocks within the macroblock. A 1MV macroblock may have a single MVDATA 5763 field, and a 4MV macroblock may have 0 to 4 BLKMVDATA 5765. Computing motion vector differences is performed differently for the 1-reference (NUMREF = 0) and the 2-reference (NUMREF = 1) cases.

단지 하나의 참조 필드를 갖는 필드 픽처에서, 매크로블록 계층에서의 각각의 MVDATA(5763) 또는 BLKMVDATA(5765) 필드는 2가지, 즉 (1) 수평 움직임 벡터 차분 성분, 및 (2) 수직 움직임 벡터 차분 성분을 공동으로 인코딩한다. MVDATA(5763) 또는 BLKMVDATA(5765) 필드는 허프만 VLC와 이에 뒤따르는 FLC이다. VLC의 값은 FLC의 크기를 결정한다. 픽처 계층에서의 MVTAB(5743) 필드는 VLC를 디코딩하는 데 사용되는 테이블을 지정한다.In a field picture with only one reference field, each MVDATA 5763 or BLKMVDATA 5765 field in the macroblock layer is divided into two, (1) horizontal motion vector difference component, and (2) vertical motion vector difference. Encode the components jointly. The MVDATA (5763) or BLKMVDATA (5765) field is a Huffman VLC followed by the FLC. The value of VLC determines the size of the FLC. The MVTAB 5743 field in the picture layer specifies the table used to decode the VLC.

도 58a는 하나의 참조 필드를 갖는 필드 픽처에서의 블록 또는 매크로블록의 움직임 벡터에 대한 움직임 벡터 차분 디코딩을 나타낸 의사 코드이다. 이 의사 코드에서, 값 dmv_x 및 dmv_y이 계산된다. 값 dmv_x는 차분 수평 움직임 벡터 성분이고, 값 dmv_y은 차분 수직 움직임 벡터 성분이다. 변수 k_x 및 k_y은 긴 움직임 벡터에 대한 고정 길이 값이며, 도 58b의 테이블에 나타낸 바와 같이 MVRANGE(5733)에 의해 정의되는 움직임 벡터 범위에 의존한다. 값 halfpel_flag는 픽처에 대한 움직임 보상을 위해 ½-픽셀 또는 ¼-픽셀 정밀도가 사용되는지 여부를 가리키는 이진값이다. halfpel_flag의 값은 움직임 벡터 모드에 의해 결정된다. 모드가 1MV 또는 혼합-MV인 경우, halfpel_flag = 0 이고 ¼-픽셀 정밀도가 움직임 보상을 위해 사용된다. 모드가 1MV ½-픽셀 또는 1MV ½-픽셀 바이리니어인 경우, halfpel_flag = 1 이고 ½-픽셀 정밀도가 사용된다. offset_table은 다음과 같이 정의되는 어레이이다.58A is a pseudo code illustrating motion vector differential decoding of a motion vector of a block or a macroblock in a field picture having one reference field. In this pseudo code, the values dmv_x and dmv_y are calculated. The value dmv_x is a differential horizontal motion vector component and the value dmv_y is a differential vertical motion vector component. The variables k_x and k_y are fixed length values for the long motion vector and depend on the motion vector range defined by MVRANGE 5735 as shown in the table of FIG. 58B. The value halfpel_flag is a binary value indicating whether ½-pixel or ¼-pixel precision is used for motion compensation for the picture. The value of halfpel_flag is determined by the motion vector mode. If the mode is 1 MV or mixed-MV, halfpel_flag = 0 and ¼-pixel precision is used for motion compensation. If the mode is 1MV ½-pixel or 1MV ½-pixel bilinear, halfpel_flag = 1 and ½-pixel precision is used. offset_table is an array defined as follows.

offset_table [9] = {0,1, 2, 4, 8, 16, 32, 64, 128}. offset_table [9] = {0, 1, 2, 4, 8, 16, 32, 64, 128}.

2개의 참조 필드를 갖는 필드 픽처에서, 매크로블록 계층에서의 각각의 MVDATA(5763) 또는 BLKMVDATA(5765) 필드는 3가지, 즉 (1) 수평 움직임 벡터 차분 성분, (2) 수직 움직임 벡터 차분 성분, 및 (3) 우세 또는 비우세 움직임 벡터 예측자가 사용되는지를 공동으로 인코딩한다. MVDATA(5763) 또는 BLKMVDATA(5765) 필드는 허프만 VLC와 이에 뒤따르는 FLC이고, VLC의 값은 FLC의 크기를 결정한다. MVTAB(5743) 필드는 VLC를 디코딩하는 데 사용되는 테이블을 지정한다.In a field picture having two reference fields, each MVDATA 5763 or BLKMVDATA 5765 field in the macroblock layer has three fields: (1) horizontal motion vector difference component, (2) vertical motion vector difference component, And (3) jointly encode whether a dominant or non-dominant motion vector predictor is used. The MVDATA (5763) or BLKMVDATA (5765) field is Huffman VLC followed by FLC, and the value of VLC determines the size of the FLC. The MVTAB 5743 field specifies the table used to decode the VLC.

도 59는 2개의 참조 필드를 갖는 필드 픽처에서의 블록 또는 매크로블록의 움직임 벡터에 대한 움직임 벡터 차분 및 우세/비우세 예측자 디코딩을 설명하는 의사 코드를 나타낸 것이다. 이 의사 코드에서, 값 predictor_flag는 우세 또는 비우세 움직임 벡터 예측자가 사용되는지(0 = 우세 예측자 사용됨, 1 = 비우세 예측자 사용됨)를 가리키는 이진 플래그이다. 여러가지 다른 변수(dmv_x, dmv_y, k_x, k_y, halfpel_flag, 및 offset_table[]을 포함함)는 1 참조 필드 경우에 대해 설명한 바와 같다. 테이블 size_table은 다음과 같이 정의된 어레이이다.59 shows pseudo codes describing motion vector difference and dominant / non-dominant predictor decoding for a motion vector of a block or macroblock in a field picture having two reference fields. In this pseudo code, the value predictor_flag is a binary flag indicating whether the dominant or non-dominant motion vector predictor is used (0 = dominant predictor used, 1 = non dominant predictor used). Various other variables (including dmv_x, dmv_y, k_x, k_y, halfpel_flag, and offset_table []) are as described for the one reference field case. The table size_table is an array defined as follows.

size_table[14] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6}. size_table [14] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6}.

5. 움직임 벡터 5. Motion vector 예측자Predictor

움직임 벡터는 이전 섹션에서 계산된 움직임 벡터 차분을 움직임 벡터 예측 자에 가산함으로써 계산된다. 예측자는 최대 3개의 이웃 움직임 벡터로부터 계산된다.The motion vector is calculated by adding the motion vector difference calculated in the previous section to the motion vector predictor. The predictor is calculated from up to three neighboring motion vectors.

1MV 인터레이스형 P-필드에서, 최대 3개의 움직임 벡터는 현재 매크로블록에 대한 예측자를 계산하는 데 사용된다. 이웃 예측자 A, B, 및 C의 위치는 도 5a 및 도 5b에 도시되어 있다. 순차 P-프레임에 대해 기술한 바와 같이, 현재 매크로블록이 그 행에서의 마지막 매크로블록인 경우를 제외하고는 이웃 예측자는 좌측, 상부 및 우측-상부 매크로블록으로부터 취해진다. 이 경우, 예측자 B는 우측 상부 대신에 좌측-상부 매크로블록으로부터 취해진다. 프레임이 한 매크로블록 폭인 특별한 경우에, 예측자는 항상 예측자 A(상부 예측자)이다.In a 1MV interlaced P-field, up to three motion vectors are used to calculate the predictors for the current macroblock. The locations of neighbor predictors A, B, and C are shown in FIGS. 5A and 5B. As described for the sequential P-frames, the neighbor predictors are taken from the left, top and right-top macroblocks except when the current macroblock is the last macroblock in the row. In this case, predictor B is taken from the left-top macroblock instead of the top right. In the special case where a frame is one macroblock wide, the predictor is always predictor A (upper predictor).

혼합-MV 인터레이스형 P-필드에서, 현재 블록 또는 매크로블록에 대한 예측자를 계산하는 데 최대 3개의 움직임 벡터가 사용된다. 도 6a 내지 도 10은 순차 P-프레임에 대해 기술한 바와 같이, 혼합-MV P-필드에서의 1MV 및 4MV 매크로블록에 대한 3개의 후보 움직임 벡터를 나타낸 것이다. 프레임이 한 매크로블록 폭인 특별한 경우에, 예측자는 항상 예측자 A(상부 예측자)이다.In a mixed-MV interlaced P-field, up to three motion vectors are used to calculate the predictor for the current block or macroblock. 6A-10 illustrate three candidate motion vectors for 1MV and 4MV macroblocks in a mixed-MV P-field, as described for sequential P-frames. In the special case where a frame is one macroblock wide, the predictor is always predictor A (upper predictor).

픽처 헤더에서의 NUMREF(5731) 필드가 0인 경우, 현재의 인터레이스형 P-필드는 단지 하나의 이전에 코딩된 픽처만을 참조할 수 있다. NUMREF = 1인 경우, 현재의 인터레이스형 P-필드는 2개의 가장 최근의 참조 필드 픽처를 참조할 수 있다. 전자의 경우에, 각각의 움직임 벡터에 대해 단일의 예측자가 계산된다. 후자의 경우에, 2개의 움직임 벡터 예측자가 계산된다. 도 60a 및 도 60b의 의사 코드는 1 참조 필드 경우에 대해 움직임 벡터 예측자가 어떻게 계산되는지를 나타낸 것 이다. 변수 fieldpred_x 및 fieldpred_y는 움직임 벡터 예측자의 수평 및 수직 성분을 나타낸다.If the NUMREF 5731 field in the picture header is zero, the current interlaced P-field may only refer to one previously coded picture. If NUMREF = 1, the current interlaced P-field may refer to the two most recent reference field pictures. In the former case, a single predictor is calculated for each motion vector. In the latter case, two motion vector predictors are calculated. 60A and 60B show how the motion vector predictor is calculated for the 1 reference field case. The variables fieldpred_x and fieldpred_y represent the horizontal and vertical components of the motion vector predictor.

2 참조 필드 인터레이스형 P-필드(NUMREF = 1)에서, 현재 필드는 2개의 가장 최근의 참조 필드를 참조할 수 있다. 이 경우, 각각의 인터-코딩된 매크로블록에 대해 2개의 움직임 벡터 예측자가 계산된다. 한 예측자는 동일 극성의 참조 필드로부터 온 것이고, 다른 하나는 반대 극성을 갖는 참조 필드로부터 온 것이다.2 Reference Fields In an interlaced P-field (NUMREF = 1), the current field may refer to the two most recent reference fields. In this case, two motion vector predictors are calculated for each inter-coded macroblock. One predictor is from a reference field of the same polarity and the other is from a reference field of the opposite polarity.

도 61a 내지 도 61f의 의사 코드는 3개의 움직임 벡터 예측자 후보가 주어진 경우, 2 참조 필드 경우에 대해 움직임 벡터 예측자가 어떻게 계산되는지를 설명한다. 변수 samefieldpred_x 및 samefieldpred_y는 동일 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타내고, 변수 oppositefieldpred_x 및 oppositefieldpred_y는 반대 필드로부터의 움직임 벡터 예측자의 수평 및 수직 성분을 나타낸다. 변수 dominantpredictor는 어느 필드가 우세 예측자를 포함하는지를 가리킨다. 값 predictor_flag(움직임 벡터 차분으로부터 디코딩됨)는 우세 또는 비우세 예측자가 사용되는지를 가리킨다.61A to 61F describe how the motion vector predictor is calculated for the 2 reference field case when three motion vector predictor candidates are given. The variables samefieldpred_x and samefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the same field, and the variables oppositefieldpred_x and oppositefieldpred_y represent the horizontal and vertical components of the motion vector predictor from the opposite field. The variable dominantpredictor indicates which field contains the dominant predictor. The value predictor_flag (decoded from the motion vector difference) indicates whether a dominant or non-dominant predictor is used.

6. 6. 하이브리드hybrid 움직임 벡터 예측 Motion vector prediction

인터레이스형 P-필드가 1MV 또는 혼합-MV인 경우, 이전 섹션에서 계산된 움직임 벡터 예측자는 예측자가 비트스트림에 명시적으로 코딩되어 있는지를 결정하기 위해 A(상부) 및 C(좌측) 예측자에 대해 테스트된다. 그렇다면, 움직임 벡터 예측자로서 예측자 A 또는 예측자 C를 사용할지를 가리키는 비트가 존재한다. 도 14a 및 도 14b의 의사 코드는 다음과 같이 변수를 사용하여 하이브리드 움직임 벡 터 예측 디코딩하는 것을 나타낸 것이다. 변수 predictor_pre_x 및 predictor_pre_y 및 후보 예측자 A, B, 및 C는 이전의 섹션에서 계산된 것과 같다(즉, 이들은 예측자 플래그로 표시된 바와 같이 반대 필드 예측자이거나 동일한 필드 예측자이다). 변수 predictor_post_x 및 predictor_post_y는 각각 하이브리드 움직임 벡터 예측에 대해 검사한 후의 수평 및 수직 움직임 벡터 예측자이다.If the interlaced P-field is 1MV or mixed-MV, the motion vector predictor computed in the previous section is passed to the A (top) and C (left) predictors to determine if the predictor is explicitly coded in the bitstream. Is tested against. If so, there is a bit indicating whether to use predictor A or predictor C as a motion vector predictor. The pseudo codes of FIGS. 14A and 14B illustrate hybrid motion vector prediction decoding using a variable as follows. The variables predictor_pre_x and predictor_pre_y and the candidate predictors A, B, and C are as calculated in the previous section (ie they are opposite field predictors or the same field predictors, as indicated by the predictor flags). The variables predictor_post_x and predictor_post_y are the horizontal and vertical motion vector predictors after checking for hybrid motion vector prediction, respectively.

7. 움직임 벡터의 재구성7. Reconstruction of Motion Vectors

1MV 및 4MV 매크로블록 둘다의 경우, 루미넌스 움직임 벡터는 다음과 같이 차분을 예측자에 가산함으로써 재구성된다.For both 1MV and 4MV macroblocks, the luminance motion vector is reconstructed by adding the difference to the predictor as follows.

mv_x = (dmv_x + predictor_x) smod range_x, 및mv_x = (dmv_x + predictor_x) smod range_x, and

mv_y = (dmv_y + predictor_y) smod range_y, mv_y = (dmv_y + predictor_y) smod range_y,

여기서, 변수 range_x 및 range_y는 MVRANGE(5733)에 의존하고 도 58b에 도시된 테이블에 지정되어 있으며, 연산 "smod"는 다음과 같이 정의되는 부호를 갖는 모듈러스(signed modulus)이다.Here, the variables range_x and range_y depend on MVRANGE 5731 and are specified in the table shown in FIG. 58B, and the operation "smod" is a signed modulus with a sign defined as follows.

A smod b = ( (A + b) % 2 b) - b, A smod b = ((A + b)% 2 b)-b,

이는 재구성된 벡터가 유효하도록 보장해준다. (A smod b)는 -b 내지 b-1 내에 속한다. This ensures that the reconstructed vector is valid. (A smod b) is within -b to b-1.

1MV 매크로블록에서, 매크로블록의 루미넌스 성분을 구성하는 4개의 블록에 대한 단일의 움직임 벡터이다. dmv_x가 매크로블록이 인트라-코딩되어 있음을 가리키는 경우, 어떤 움직임 벡터도 매크로블록과 연관되어 있지 않다. 매크로블록이 건너뜀인 경우, dmv_x = 0이고 dmv_y = 0이며, 따라서 mv_x = predictor_x이고 mv_y = predictor_y이다. In a 1MV macroblock, it is a single motion vector for the four blocks that make up the luminance component of the macroblock. If dmv_x indicates that the macroblock is intra-coded, no motion vector is associated with the macroblock. If the macroblock is skipped, then dmv_x = 0 and dmv_y = 0, so mv_x = predictor_x and mv_y = predictor_y.

4MV 매크로블록에서, 매크로블록 내의 인트라-코딩된 루미넌스 블록 각각은 그 자신의 움직임 벡터를 갖는다. 따라서, 각각의 4MV 매크로블록에 대해 0 내지 4개의 루미넌스 움직임 벡터가 있다. 4MV 매크로블록 내의 비코딩된 블록은 2가지 방식, 즉 (1) 매크로블록이 건너뜀이고 매크로블록이 4MV인 경우(매크로블록 내의 모든 블록은 이 경우 건너뜀임), 및 (2) 매크로블록에 대한 CBPCY(5762)가 블록이 비코딩되어 있음을 가리키는 경우 중 하나로 일어난다. 블록이 코딩되어 있지 않은 경우, dmv_x = 0 이고 dmv_y = 0 이며, 따라서 mv_x = predictor_x 이고 mv_y = predictor_y이다.In a 4MV macroblock, each intra-coded luminance block in the macroblock has its own motion vector. Thus, there are zero to four luminance motion vectors for each 4MV macroblock. Uncoded blocks within a 4MV macroblock are in two ways: (1) the macroblock is skipped and the macroblock is 4MV (all blocks within the macroblock are skipped in this case), and (2) for the macroblock. One of the cases where CBPCY 5702 indicates that a block is uncoded. If the block is not coded, then dmv_x = 0 and dmv_y = 0, so mv_x = predictor_x and mv_y = predictor_y.

8. 8. 크로마Chroma 움직임 벡터의 도출 Derivation of the Motion Vector

크로마 움직임 벡터는 루미넌스 움직임 벡터로부터 도출된다. 또한, 4MV 매크로블록의 경우, 크로마 블록을 인터 또는 인트라로서 코딩할지의 결정은 루미넌스 블록의 상태에 기초하여 행해진다. 크로마 움직임 벡터는 2 단계로 재구성된다. 첫번째 단계에서, 루미넌스 움직임 벡터를 적절히 합성 및 스케일링함으로써 공칭 크로마 움직임 벡터가 획득된다. 스케일링은 ½-픽셀 오프셋이 ¼-픽셀 오프셋보다 선호되도록 수행된다. 두번째 단계에서, 시퀀스 레벨 1-비트 필드 FASTUVMC 필드가 크로마 움직임 벡터의 추가의 반올림이 필요한지를 결정하는 데 사용된다. FASTUVMC = 0인 경우, 두번째 단계에서 반올림이 수행되지 않는다. FASTUVMC = 1인 경우, ¼-픽셀 오프셋에 있는 크로마 움직임 벡터는 가장 가까운 완전-픽셀 위치로 반올림된다. 게다가, FASTUVMC = 1인 경우, 바이리니어 필터링 만이 모든 크로마 보간에 대해 사용된다.The chroma motion vector is derived from the luminance motion vector. In addition, in the case of the 4MV macroblock, the determination of whether to code the chroma block as inter or intra is made based on the state of the luminance block. The chroma motion vector is reconstructed in two steps. In a first step, a nominal chroma motion vector is obtained by properly synthesizing and scaling the luminance motion vector. Scaling is performed so that the ½-pixel offset is preferred over the ¼-pixel offset. In the second step, a sequence level 1-bit field FASTUVMC field is used to determine if further rounding of the chroma motion vector is needed. If FASTUVMC = 0, rounding is not performed in the second step. If FASTUVMC = 1, the chroma motion vector at the quarter-pixel offset is rounded up to the nearest full-pixel position. In addition, when FASTUVMC = 1, only bilinear filtering is used for all chroma interpolation.

1MV 매크로블록에서, 크로마 움직임 벡터는 다음과 같이 루미넌스 움직임 벡터로부터 도출된다.In a 1MV macroblock, the chroma motion vector is derived from the luminance motion vector as follows.

//s_RndTbl[0] = 0, s_RndTbl[l] = 0, s_RndTbl[2] = 0, s_RndTbl[3] = 1// s_RndTbl [0] = 0, s_RndTbl [l] = 0, s_RndTbl [2] = 0, s_RndTbl [3] = 1

cmv_x = (lmv_x + s_RndTbl[lmv_x &3])>> 1 cmv_x = (lmv_x + s_RndTbl [lmv_x & 3]) >> 1

cmv_y = (lmv_y + s_RndTbl[lmv_y &3])>> 1 cmv_y = (lmv_y + s_RndTbl [lmv_y & 3]) >> 1

도 16b의 의사 코드는 다음과 같이 변수를 사용하여 4MV 매크로블록에서의 4개의 루미넌스 블록에 대한 움직임 정보로부터 크로마 움직임 벡터가 어떻게 도출되는지의 첫번째 단계를 나타낸 것이다. 4MV 매크로블록에 대한 4개의 루미넌스 움직임 벡터 중에의 우세 극성이 결정되고, 우세 극성을 갖는 루미넌스 움직임 벡터로부터 크로마 움직임 벡터가 결정된다(그렇지만, 다른쪽 극성의 루미넌스 움직임 벡터로부터 결정되지 않는다).The pseudo code of FIG. 16B shows the first step of how the chroma motion vector is derived from the motion information for the four luminance blocks in the 4MV macroblock using variables as follows. The dominant polarity among the four luminance motion vectors for the 4MV macroblock is determined, and the chroma motion vector is determined from the luminance motion vector having the dominant polarity (but not determined from the luminance motion vector of the other polarity).

9. 세기 보상9. Century Reward

참조 필드에 대해 세기 보상이 사용되는 경우, 참조 필드 내의 픽셀은 이들을 예측자로서 사용하기 전에 재매핑된다. 세기 보상이 사용될 때, LUMSCALE(5738) 및 LUMSHIFT(5739)는 픽처 비트스트림에 존재한다. 도 18 또는 도 56의 의사 코드는 LUMSCALE(5738) 및 LUMSHIFT(5739)이 참조 필드 픽셀을 재매핑하기 위해 어떻게 사용되는지를 나타낸 것이다. 다음과 같이, 참조의 Y 성분은 LUTY[] 테이블을 사용하여 재매핑되고, U 및 V 성분은 LUTUV[] 테이블을 사용하여 재매핑된다.If intensity compensation is used for the reference field, the pixels in the reference field are remapped before using them as predictors. When intensity compensation is used, LUMSCALE 5738 and LUMSHIFT 5739 are in the picture bitstream. 18 or 56 shows how LUMSCALE 5738 and LUMSHIFT 5739 are used to remap reference field pixels. As follows, the Y component of the reference is remapped using the LUTY [] table, and the U and V components are remapped using the LUTUV [] table.

Figure 112009053892549-pat00040
Figure 112009053892549-pat00040
And

Figure 112009053892549-pat00041
Figure 112009053892549-pat00041

여기서,

Figure 112009053892549-pat00042
는 참조 필드에서의 원래의 루미넌스 픽셀 값이고,
Figure 112009053892549-pat00043
는 참조 필드에서의 재매핑된 루미넌스 픽셀값이며,
Figure 112009053892549-pat00044
는 참조 필드에서의 원래의 U 또는 V 픽셀값이고,
Figure 112009053892549-pat00045
는 참조 필드에서의 재매핑된 U 또는 V 픽셀값이다.here,
Figure 112009053892549-pat00042
Is the original luminance pixel value in the reference field,
Figure 112009053892549-pat00043
Is the remapped luminance pixel value in the reference field,
Figure 112009053892549-pat00044
Is the original U or V pixel value in the reference field,
Figure 112009053892549-pat00045
Is the remapped U or V pixel value in the reference field.

10. 나머지 디코딩10. Decode rest

디코더는 매크로블록에 대한 CBPCY(5762) 요소가 존재하는 경우 이를 디코딩하며, 여기서 CBPCY(5762) 요소는 계수 데이터의 존재 여부를 가리킨다. 블록 계층에서, 디코더는 인터-코딩된 블록 및 인트라-코딩된 블록에 대한 계수 데이터를 디코딩한다. 인터-코딩된 블록을 재구성하기 위해, 디코더는 (1) 변환 유형(8x8, 8x4, 4x8 또는 4x4)을 선택하고, (2) 서브-블록 패턴을 디코딩하며, (3) 계수를 디코딩하고, (4) 역변환을 수행하며, (5) 역양자화를 수행하고, (6) 블록에 대한 예측을 획득하고, (7) 예측과 오차 블록을 가산한다.The decoder decodes the CBPCY 5762 element, if present, for the macroblock, where the CBPCY 5762 element indicates the presence of coefficient data. At the block layer, the decoder decodes coefficient data for inter-coded blocks and intra-coded blocks. To reconstruct an inter-coded block, the decoder selects (1) the transform type (8x8, 8x4, 4x8 or 4x4), (2) decodes the sub-block pattern, (3) decodes the coefficients, ( 4) perform inverse transform, (5) perform inverse quantization, (6) obtain predictions for blocks, and (7) add predictions and error blocks.

여러가지 실시예를 참조하여 본 발명의 원리들을 기술하고 예시하였지만, 이러한 원리를 벗어나지 않고 구성 및 상세에 있어서 이들 여러가지 실시예들이 수정될 수 있음을 잘 알 것이다. 달리 언급하지 않는 한, 본 명세서에 기술된 프로그램, 프로세스 또는 방법이 임의의 특정의 유형의 컴퓨팅 환경에 관련되거나 그로 한정되는 것이 아님을 잘 알 것이다. 여러가지 유형의 범용 또는 특수 컴퓨팅 환 경이 본 명세서에 개시된 개시 내용과 함께 사용될 수 있거나 그에 따른 동작을 수행할 수 있다. 소프트웨어로 도시된 실시예들의 구성요소는 하드웨어로 구현될 수 있고, 그 역도 마찬가지이다.While the principles of the invention have been described and illustrated with reference to various embodiments, it will be appreciated that these various embodiments may be modified in construction and detail without departing from these principles. Unless stated otherwise, it is to be understood that the programs, processes, or methods described herein are not related to or limited to any particular type of computing environment. Various types of general purpose or specialty computing environments may be used with or otherwise perform operations with the disclosures disclosed herein. The components of the embodiments shown in software may be implemented in hardware and vice versa.

본 발명의 원리들이 적용될 수 있는 많은 가능한 실시예들을 고려하여, 첨부된 청구항 및 그의 등가물의 범위 및 정신 내에 속할 수 있는 모든 이러한 실시예를 본 발명으로서 청구한다.In view of the many possible embodiments to which the principles of the invention may be applied, all such embodiments which fall within the scope and spirit of the appended claims and their equivalents are claimed as the invention.

도 1은 종래 기술에 따른 비디오 인코더에서의 움직임 추정을 나타낸 도면이다.1 is a diagram illustrating motion estimation in a video encoder according to the prior art.

도 2는 종래 기술에 따른 비디오 인코더에서의 예측 잔차의 8x8 블록에 대한 블록-기반 압축을 나타낸 도면이다.2 is a block-based compression of 8x8 block of prediction residual in a video encoder according to the prior art.

도 3은 종래 기술에 따른 비디오 디코더에서의 예측 잔차의 8x8 블록에 대한 블록-기반 압축 해제를 나타낸 도면이다.3 illustrates block-based decompression for 8x8 blocks of prediction residuals in a video decoder according to the prior art.

도 4는 종래 기술에 따른 인터레이스형 프레임을 나타낸 도면이다.4 illustrates an interlaced frame according to the prior art.

도 5a 및 도 5b는 종래 기술에 따른 순차 P-프레임에서의 1MV 매크로블록에대한 후보 움직임 벡터 예측자에 대한 매크로블록의 위치를 나타낸 도면이다.5A and 5B are diagrams illustrating positions of macroblocks for candidate motion vector predictors for 1MV macroblocks in sequential P-frames according to the prior art.

도 6a 및 도 6b는 종래 기술에 따른 혼합 1MV/4MV 순차 P-프레임에서의 1MV 매크로블록에 대한 후보 움직임 벡터 예측자에 대한 블록의 위치를 나타낸 도면이다.6A and 6B are diagrams showing positions of blocks for candidate motion vector predictors for 1MV macroblocks in a mixed 1MV / 4MV sequential P-frame according to the prior art.

도 7a, 도 7b, 도 8a, 도 8b, 도 9 및 도 10은 종래 기술에 따른 혼합 1MV/4MV 순차 P-프레임에서의 4MV 매크로블록에서의 여러가지 위치에서의 블록에 대한 후보 움직임 벡터 예측자에 대한 블록의 위치를 나타낸 도면이다.7A, 7B, 8A, 8B, 9 and 10 show candidate motion vector predictors for blocks at various positions in a 4MV macroblock in a mixed 1MV / 4MV sequential P-frame according to the prior art. It is a figure which shows the position of the block with respect to.

도 11은 종래 기술에 따른 인터레이스형 P-프레임에서 현재의 프레임-코딩된 매크로블록에 대한 후보 움직임 벡터 예측자를 나타낸 도면이다.11 illustrates a candidate motion vector predictor for the current frame-coded macroblock in an interlaced P-frame according to the prior art.

도 12a 및 도 12b는 종래 기술에 따른 인터레이스형 P-프레임에서의 현재의 필드-코딩된 매크로블록에 대한 후보 움직임 벡터 예측자를 나타낸 도면이다.12A and 12B are diagrams illustrating candidate motion vector predictors for a current field-coded macroblock in an interlaced P-frame according to the prior art.

도 13a 내지 도 13c는 종래 기술에 따른 움직임 벡터 예측자를 계산하기 위한 의사 코드이다.13A to 13C are pseudo codes for calculating a motion vector predictor according to the prior art.

도 14a 및 도 14b는 종래 기술에 따른 순차 P-프레임에 대한 하이브리드 움직임 벡터 예측을 나타낸 의사 코드이다.14A and 14B are pseudo codes illustrating hybrid motion vector prediction for sequential P-frames according to the prior art.

도 15a 내지 도 15c는 종래 기술에 따른 움직임 벡터 차분 정보의 디코딩을 나타낸 의사 코드 및 테이블이다.15A to 15C are pseudo codes and tables illustrating decoding of motion vector difference information according to the prior art.

도 16a 내지 도 16c 및 도 13c는 종래 기술에 따른 순차 P-프레임에 대한 크로마 움직임 벡터의 도출을 나타낸 의사 코드이다.16A-16C and 13C are pseudo codes illustrating derivation of chroma motion vectors for sequential P-frames according to the prior art.

도 17은 종래 기술에 따른 인터레이스형 P-프레임에 대한 크로마 움직임 벡터의 도출을 나타낸 의사 코드이다.17 is a pseudo code illustrating derivation of a chroma motion vector for an interlaced P-frame according to the prior art.

도 18은 종래 기술에 따른 순차 P-프레임에 대한 세기 압축을 나타낸 의사 코드이다.18 is a pseudo code illustrating intensity compression for sequential P-frames according to the prior art.

도 19는 몇개의 기술된 실시예들이 구현될 수 있는 적절한 컴퓨팅 환경의 블록도이다.19 is a block diagram of a suitable computing environment in which several described embodiments may be implemented.

도 20은 몇개의 기술된 실시예들이 구현될 수 있는 일반화된 비디오 인코더 시스템의 블록도이다.20 is a block diagram of a generalized video encoder system in which several described embodiments may be implemented.

도 21은 몇개의 기술된 실시예들이 구현될 수 있는 일반화된 비디오 디코더 시스템의 블록도이다.21 is a block diagram of a generalized video decoder system in which several described embodiments may be implemented.

도 22는 몇개의 기술된 실시예들에서 사용되는 매크로블록 포맷을 나타낸 도면이다.FIG. 22 is a diagram illustrating a macroblock format used in some described embodiments.

도 23a는 상부 필드 및 하부 필드의 교대하는 라인을 나타낸 인터레이스형 비디오 프레임의 일부를 나타낸 도면이다.FIG. 23A is a diagram illustrating a portion of an interlaced video frame showing alternating lines of the upper field and the lower field. FIG.

도 23b는 프레임으로서 인코딩/디코딩하기 위해 구성된 인터레이스형 비디오 프레임을 나타낸 도면이다.FIG. 23B illustrates an interlaced video frame configured for encoding / decoding as a frame. FIG.

도 23c는 필드로서 인코딩/디코딩하기 위해 구성된 인터레이스형 비디오 프레임을 나타낸 도면이다.23C illustrates an interlaced video frame configured for encoding / decoding as a field.

도 24a 내지 도 24f는 인터레이스형 P-필드에 대한 참조 필드의 예를 나타낸 챠트이다.24A to 24F are charts showing examples of reference fields for interlaced P-fields.

도 25a 및 도 25b는 각각 참조 필드 및 선택 정보의 인코딩 및 디코딩에 대한 기술을 나타낸 플로우차트이다.25A and 25B are flowcharts illustrating a technique for encoding and decoding reference fields and selection information, respectively.

도 26 및 도 27은 MBMODE 값을 나타낸 테이블이다.26 and 27 are tables showing MBMODE values.

도 28a 및 도 28b는 각각 인터레이스형 P-필드의 매크로블록에 대한 매크로블록 모드 정보의 인코딩 및 디코딩을 위한 기술을 나타낸 플로우차트이다.28A and 28B are flowcharts illustrating a technique for encoding and decoding macroblock mode information for macroblocks of interlaced P-fields, respectively.

도 29는 우세 및 비우세 참조 필드를 결정하는 의사 코드이다.29 is pseudo code for determining a dominant and non-dominant reference field.

도 30은 우세 또는 비우세 참조 필드가 움직임 벡터에 대해 사용되는지를 시그널링하는 의사 코드이다.30 is a pseudo code signaling whether a dominant or non-dominant reference field is used for a motion vector.

도 31a 및 도 31b는 각각 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터의 인코딩 및 디코딩에서의 움직임 벡터 예측에 대한 우세 및 비우세 극성을 결정하는 기술을 나타낸 플로우차트이다.31A and 31B are flowcharts illustrating a technique for determining dominant and non-dominant polarity for motion vector prediction in encoding and decoding motion vectors for two reference field interlaced P-fields, respectively.

도 32는 디코딩 동안의 하이브리드 움직임 벡터 예측에 대한 의사 코드이다.32 is a pseudo code for hybrid motion vector prediction during decoding.

도 33a 및 도 33b는 각각 인코딩 및 디코딩 동안의 하이브리드 움직임 벡터 예측에 대한 기술을 나타낸 플로우차트이다.33A and 33B are flowcharts illustrating a technique for hybrid motion vector prediction during encoding and decoding, respectively.

도 34는 루마 블록과 4MVBP 요소 간의 연관을 나타낸 도면이다.34 shows an association between luma blocks and 4MVBP elements.

도 35a 및 도 35b는 각각 움직임 벡터 블록 패턴을 사용하여 인코딩 및 디코딩을 위한 기술을 나타낸 플로우차트이다.35A and 35B are flowcharts illustrating a technique for encoding and decoding using a motion vector block pattern, respectively.

도 36은 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 정보 및 우세/비우세 예측자 선택을 인코딩하는 의사 코드이다.36 is a pseudo code encoding motion vector difference information and dominant / non-dominant predictor selection for a two-reference field interlaced P-field.

도 37a 및 도 37b는 각각 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 정보 및 우세/비우세 예측자 선택을 인코딩 및 디코딩하기 위한 기술을 나타낸 플로우차트이다.37A and 37B are flowcharts illustrating a technique for encoding and decoding motion vector difference information and dominant / non-dominant predictor selection for two reference field interlaced P-fields, respectively.

도 38은 4:2:0 매크로블록에 대한 크로마 서브-샘플링 패턴을 나타낸 도면이다.FIG. 38 illustrates chroma sub-sampling patterns for 4: 2: 0 macroblocks.

도 39는 수직 움직임 벡터 성분에 대한 현재 필드 및 참조 필드 간의 관계를 나타낸 도면이다.39 shows a relationship between a current field and a reference field for the vertical motion vector component.

도 40은 인터레이스형 P-필드의 움직임-보상된 매크로블록에 대한 크로마 움직임 벡터에 기여하는 루미넌스 움직임 벡터를 선택하는 의사 코드이다.40 is a pseudo code for selecting a luminance motion vector that contributes to a chroma motion vector for a motion-compensated macroblock of an interlaced P-field.

도 41은 인터레이스형 P-필드의 매크로블록에 대한 루마 움직임 벡터로부터 크로마 움직임 벡터를 도출하는 기술을 나타낸 플로우차트이다.FIG. 41 is a flowchart illustrating a technique for deriving a chroma motion vector from a luma motion vector for a macroblock of an interlaced P-field.

도 42 및 도 43은 각각 인터레이스형 P-필드에 대해 세기 보상이 수행되는 인코더 프레임워크 및 디코더 프레임워크를 나타낸 도면이다.42 and 43 are diagrams illustrating an encoder framework and a decoder framework in which intensity compensation is performed on an interlaced P-field, respectively.

도 44는 인터레이스형 P-필드에 대한 세기 보상 참조 필드 패턴을 시그널링하는 신택스 요소를 나타낸 테이블이다.FIG. 44 is a table illustrating syntax elements signaling a strength compensation reference field pattern for an interlaced P-field.

도 45a 및 도 45b는 각각 인터레이스형 P-필드에 대한 인코딩에서의 페이딩 추정 및 디코딩에서의 페이딩 보상을 수행하는 기술을 나타낸 플로우차트이다.45A and 45B are flowcharts illustrating techniques for performing fading estimation in encoding and decoding in encoding for interlaced P-fields, respectively.

도 46a 내지 도 46e는 제1 결합 구현에 따른 비트스트림의 계층들에 대한 신택스 다이어그램이다.46A-46E are syntax diagrams for the layers of the bitstream according to the first combined implementation.

도 47a 내지 도 47k는 제1 결합 구현에서의 코드에 대한 테이블이다.47A-47K are tables for code in the first combined implementation.

도 48은 제1 결합 구현에서의 수직 움직임 벡터 성분에 대한 현재 필드와 참조 필드 간의 관계를 나타낸 도면이다.48 illustrates a relationship between a current field and a reference field for the vertical motion vector component in the first combined implementation.

도 49a 및 도 49b는 각각 제1 결합 구현에서의 1 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 디코딩에 대한 의사 코드 및 테이블이다.49A and 49B are pseudo codes and tables for motion vector differential decoding for one reference field interlaced P-field, respectively, in a first combined implementation.

도 50은 제1 결합 구현에서의 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 정보 및 우세/비우세 예측자 선택을 디코딩하는 의사 코드이다.50 is pseudo code for decoding motion vector difference information and dominant / non-dominant predictor selection for a two-reference field interlaced P-field in a first combined implementation.

도 51a 및 도 51b는 제1 결합 구현에서의 1 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 예측에 대한 의사 코드이다.51A and 51B are pseudo codes for motion vector prediction for a 1 reference field interlaced P-field in the first combined implementation.

도 52a 내지 도 52j는 제1 결합 구현에서의 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 예측에 대한 의사 코드 및 테이블이다.52A-52J are pseudo codes and tables for motion vector prediction for two reference field interlaced P-fields in a first combined implementation.

도 52k 내지 도 52n은 도 52h 내지 도 52j에 도시된 것의 대안인 스케일링 동작에 대한 의사 코드 및 테이블이다.52K-52N are pseudo codes and tables for scaling operations alternative to those shown in FIGS. 52H-52J.

도 53은 제1 결합 구현에서의 인터레이스형 P-필드에 대한 하이브리드 움직 임 벡터 예측에 대한 의사 코드이다.53 is a pseudo code for hybrid motion vector prediction for an interlaced P-field in the first combined implementation.

도 54는 제1 결합 구현에서의 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 재구성에 대한 의사 코드이다.54 is a pseudo code for motion vector reconstruction for two reference field interlaced P-field in the first combined implementation.

도 55a 및 도 55b는 제1 결합 구현에서의 인터레이스형 P-필드에 대한 크로마 움직임 벡터 도출에 대한 의사 코드이다.55A and 55B are pseudo codes for chroma motion vector derivation for an interlaced P-field in a first combined implementation.

도 56은 제1 결합 구현에서의 인터레이스형 P-필드에 대한 세기 보상에 대한 의사 코드이다.56 is pseudo code for intensity compensation for interlaced P-fields in a first combined implementation.

도 57a 내지 도 57c는 제2 결합 구현에 따른 비트스트림의 계층들에 대한 신택스 다이어그램이다.57A-57C are syntax diagrams for the layers of the bitstream according to the second combined implementation.

도 58a 및 도 58b는 각각 제2 결합 구현에서의 1 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 디코딩에 대한 의사 코드 및 테이블이다.58A and 58B are pseudo codes and tables for motion vector differential decoding for one reference field interlaced P-field, respectively, in a second combined implementation.

도 59는 제2 결합 구현에서의 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 차분 정보 및 우세/비우세 예측자 선택을 디코딩하는 의사 코드이다.59 is pseudo code for decoding motion vector difference information and dominant / non-dominant predictor selection for a two-reference field interlaced P-field in a second combined implementation.

도 60a 및 도 60b는 제2 결합 구현에서의 1 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 예측에 대한 의사 코드이다.60A and 60B are pseudo codes for motion vector prediction for a 1 reference field interlaced P-field in a second combined implementation.

도 61a 내지 도 61f는 제2 결합 구현에서의 2 참조 필드 인터레이스형 P-필드에 대한 움직임 벡터 예측에 대한 의사 코드이다.61A-61F are pseudo codes for motion vector prediction for two reference field interlaced P-fields in a second combined implementation.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

1900: 컴퓨팅 환경1900: computing environment

1910: 처리 장치1910 processing unit

1920: 메모리1920: memory

1940: 저장소1940: store

1950: 입력 장치(들)1950: input device (s)

1960: 출력 장치(들)1960: output device (s)

1970: 통신 연결(들)1970: communication connection (s)

Claims (15)

비디오 디코더를 구현하는 컴퓨팅 장치에서의 방법으로서,A method in a computing device implementing a video decoder, 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 인터레이스형 전방-예측 필드(interlaced forward-predicted field)가 움직임 보상(motion compensation)을 위해 하나의 참조 필드를 갖는지 또는 2개의 가능한 참조 필드(two possible reference fields)를 갖는지 나타내는 제1 필드 레벨 신호(first field level signal)를 처리하는 단계;Using the computing device implementing the video decoder, an interlaced forward-predicted field has one reference field or two possible reference fields for motion compensation. processing a first field level signal indicating whether there is a reference field; 상기 제1 필드 레벨 신호가 상기 인터레이스형 전방-예측 필드가 하나의 참조 필드를 갖는다고 나타내는 경우, 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 2개의 가능한 참조 필드 중에서 상기 하나의 참조 필드를 식별하는 제2 필드 레벨 신호를 처리하는 단계 - 상기 식별된 참조 필드는 상기 인터레이스형 전방-예측 필드에 대한 모든 상기 움직임 보상에 대해 사용됨 -; 및If the first field level signal indicates that the interlaced forward-prediction field has one reference field, using the computing device implementing the video decoder, the one of the two possible reference fields Processing a second field level signal that identifies an identifier, wherein the identified reference field is used for all the motion compensation for the interlaced forward-prediction field; And 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 인터레이스형 전방-예측 필드에 대한 상기 움직임 보상을 수행하는 단계Performing the motion compensation on the interlaced forward-prediction field using the computing device implementing the video decoder. 를 포함하는 방법.How to include. 제1항에 있어서,The method of claim 1, 상기 제1 필드 레벨 신호는 단일 비트인, 방법.And the first field level signal is a single bit. 제1항에 있어서,The method of claim 1, 상기 제2 필드 레벨 신호는 단일 비트인, 방법.And the second field level signal is a single bit. 제1항에 있어서, The method of claim 1, 상기 제1 필드 레벨 신호가 상기 인터레이스형 전방-예측 필드가 2개의 가능한 참조 필드를 갖는다고 나타내는 경우, 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 인터레이스형 전방-예측 필드의 블록들 및 매크로블록들 중 적어도 한쪽에 대한 복수의 움직임 벡터 각각에 대해, 상기 2개의 가능한 참조 필드들 중에서 선택하기 위한 제3 신호를 처리하는 단계를 더 포함하고, 상기 선택된 참조 필드는 상기 움직임 벡터를 사용한 상기 움직임 보상을 위해 사용되는, 방법.If the first field level signal indicates that the interlaced forward-prediction field has two possible reference fields, using the computing device implementing the video decoder, blocks of the interlaced forward-prediction field and For each of a plurality of motion vectors for at least one of the macroblocks, processing a third signal to select from the two possible reference fields, wherein the selected reference field is configured to use the motion vector. Used for motion compensation. 제4항에 있어서,The method of claim 4, wherein 상기 제3 신호는 매크로블록 레벨에 있는, 방법.The third signal is at a macroblock level. 제1항에 있어서,The method of claim 1, 상기 2개의 가능한 참조 필드는, (1) 시간상 가장 최근인 이전의 인터레이스형 인트라(interlaced intra) 또는 전방-예측 필드, 및 (2) 시간상 두 번째로 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드로 제약되는(constrained), 방법.The two possible reference fields are (1) the oldest interlaced intra or forward-prediction field that is most recent in time, and (2) the second most recent previous interlaced intra or forward-prediction in time. Method constrained by field. 제1항에 있어서,The method of claim 1, 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 1개의 참조 필드를 가진다고 나타내는 경우, 상기 비디오 디코더는 필드 레벨 참조 필드 선택(field-level reference field selection)을 사용하고, 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 2개의 가능한 참조 필드를 가진다고 나타내는 경우, 상기 비디오 디코더는 움직임 벡터 별 참조 필드 선택(per motion vector reference field selection)을 사용하는, 방법.If the first signal indicates that the interlaced forward-prediction field has one reference field, the video decoder uses field-level reference field selection, and the first signal is interlaced. If the type forward-prediction field indicates that there are two possible reference fields, the video decoder uses per motion vector reference field selection. 비디오 디코더를 구현하는 컴퓨팅 장치에서의 방법으로서,A method in a computing device implementing a video decoder, 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 인터레이스형 전방-예측 필드가 움직임 보상을 위해 하나의 참조 필드를 가지는지 또는 2개의 가능한 참조 필드를 가지는지 나타내는 제1 신호를 처리하는 단계;Using the computing device implementing the video decoder, processing a first signal indicating whether the interlaced forward-prediction field has one reference field or two possible reference fields for motion compensation; 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 제1 신호에 적어도 부분적으로 기초하여, 필드 별 참조 필드 선택(per field reference field selection)과 움직임 벡터 별 참조 필드 선택 사이에서 전환하는(switching) 단계 - 상기 전환은, Using the computing device implementing the video decoder, switching between per field reference field selection and reference field selection by motion vector based at least in part on the first signal. Step-the conversion, 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 하나의 참조 필드를 가진다고 나타낼 경우, 상기 필드 별 참조 필드 선택을 사용하는 단계; 및 Using the per-field reference field selection when the first signal indicates that the interlaced forward-prediction field has one reference field; And 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 두 개의 가능한 참조 필드를 가진다고 나타낼 경우 상기 움직임 벡터 별 참조 필드 선택을 사용하는 단계를 포함함 -; Using a reference field selection by motion vector when the first signal indicates that the interlaced forward-prediction field has two possible reference fields; 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 인터레이스형 전방-예측 필드에 대한 움직임 보상을 수행하는 단계; 및Performing motion compensation on the interlaced forward-prediction field using the computing device implementing the video decoder; And 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 참조 필드 버퍼를 관리하기 위해 부가의 신호를 처리하지 않고서 차후의 움직임 보상을 위해 상기 참조 필드 버퍼를 갱신하는 단계Using the computing device implementing the video decoder, updating the reference field buffer for subsequent motion compensation without processing additional signals to manage the reference field buffer 를 포함하는 방법.How to include. 제8항에 있어서,The method of claim 8, 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 하나의 참조 필드를 갖는다고 나타내는 경우, 상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 사용하여, 상기 2개의 가능한 참조 필드 중에서 상기 하나의 참조 필드를 식별하는 제2 신호를 처리하는 단계를 더 포함하고, When the first signal indicates that the interlaced forward-prediction field has one reference field, using the computing device implementing the video decoder, identifying the one reference field from the two possible reference fields Processing the second signal to perform, 상기 제1 및 제2 신호는 각각 상기 인터레이스형 전방-예측 필드에 대한 픽처 레벨(picture level)에 있는, 방법.Wherein the first and second signals are each at a picture level for the interlaced forward-prediction field. 제8항에 있어서,The method of claim 8, 상기 2개의 가능한 참조 필드는, (1) 시간상 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드, 및 (2) 시간상 두 번째로 가장 최근인 이전의 인 터레이스형 인트라 또는 전방-예측 필드로 제약되는, 방법.The two possible reference fields are (1) the oldest interlaced intra or forward-prediction field that is most recent in time, and (2) the second most recent previous interlaced intra or forward-prediction field in time. Constrained. 제8항에 있어서,The method of claim 8, 상기 하나의 참조 필드는 (1) 시간상 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드, 또는 (2) 시간상 두 번째로 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드로 제약되는, 방법.Wherein the one reference field is constrained to (1) the previous interlaced intra or forward-prediction field that is most recent in time, or (2) the second most recent previous interlaced intra or forward-prediction field in time. . 프로세서;A processor; 메모리;Memory; 입력 장치, 출력 장치, 및 통신 연결 중 하나 이상; 및At least one of an input device, an output device, and a communication connection; And 저장소를 포함하는 디코더로서,A decoder comprising a repository, 상기 저장소는,The reservoir is 인터레이스형 전방-예측 필드가 (1) 하나의 참조 필드를 가지고 움직임 보상을 위해 필드 레벨 참조 필드 선택을 사용하는지, 또는 (2) 2개의 가능한 참조 필드를 가지고 상기 움직임 보상을 위해 움직임 벡터 별 참조 필드 선택을 사용하는지를 가리키는 제1 신호를 처리하는 수단;Whether the interlaced forward-prediction field uses (1) field level reference field selection for motion compensation with one reference field, or (2) reference field per motion vector for the motion compensation with two possible reference fields. Means for processing a first signal indicating whether to use selection; 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 하나의 참조 필드를 가지고 필드 레벨 참조 필드 선택을 사용한다고 가리키는 경우, 상기 2개의 가능한 참조 필드들 중에서 상기 하나의 참조 필드를 식별하는 제2 신호를 처리하는 수단;When the first signal indicates that the interlaced forward-prediction field has one reference field and uses field level reference field selection, a second signal identifying the one reference field among the two possible reference fields Means for processing; 상기 제1 신호가 상기 인터레이스형 전방-예측 필드가 2개의 가능한 참조 필드를 가지고 움직임 벡터 별 참조 필드 선택을 사용한다고 가리키는 경우, 복수의 움직임 벡터 각각에 대해 제3 신호를 처리하는 수단 - 상기 제3 신호 각각은 상기 2개의 가능한 참조 필드 사이에서 선택을 위한 것임 -; 및 Means for processing a third signal for each of a plurality of motion vectors when the first signal indicates that the interlaced forward-prediction field has two possible reference fields and uses reference field selection by motion vector-the third Each signal is for selection between the two possible reference fields; And 상기 인터레이스형 전방-예측 필드에 대한 상기 움직임 보상을 수행하는 수단Means for performing the motion compensation on the interlaced forward-prediction field 을 사용하여, 상기 디코더로 하여금 비디오를 디코딩하게 하는 컴퓨터 실행가능 명령어를 저장하는, Store computer executable instructions that cause the decoder to decode the video, 디코더.Decoder. 제12항에 있어서,The method of claim 12, 상기 제1 신호 및 상기 제2 신호는 각각 상기 인터레이스형 전방-예측 필드에 대한 픽처 레벨에 있고, 상기 제3 신호는 매크로블록 레벨에 있는, 디코더.Wherein the first signal and the second signal are each at a picture level for the interlaced forward-prediction field and the third signal is at a macroblock level. 제12항에 있어서,The method of claim 12, 상기 2개의 가능한 참조 필드는, (1) 시간상 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드, 및 (2) 시간상 두 번째로 가장 최근인 이전의 인터레이스형 인트라 또는 전방-예측 필드이도록 제약되어 있는, 디코더.The two possible reference fields are constrained to be (1) the oldest interlaced intra or forward-prediction field that is most recent in time, and (2) the oldest interlaced intra or forward-prediction field that is second most recent in time. That is, a decoder. 제12항에 있어서,The method of claim 12, 상기 저장소는, 참조 필드 버퍼를 관리하기 위해 부가의 신호를 처리하지 않고서 차후의 움직임 보상을 위해 상기 참조 필드 버퍼를 갱신하는 수단을 사용하여 상기 디코더로 하여금 비디오를 디코딩하게 하는 컴퓨터 실행가능 명령어를 더 저장하는, 디코더.The storage further comprises computer executable instructions for causing the decoder to decode the video using means for updating the reference field buffer for subsequent motion compensation without processing additional signals to manage the reference field buffer. To store, decoder.
KR1020097018329A 2003-09-07 2004-09-03 Coding and decoding for interlaced video KR101037834B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60/501,081 2003-09-07
US10/857,473 US7567617B2 (en) 2003-09-07 2004-05-27 Predicting motion vectors for fields of forward-predicted interlaced video frames
US10/857,473 2004-05-27
US10/933,958 2004-09-02
PCT/US2004/029034 WO2005027496A2 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067002225A Division KR101037816B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video

Publications (2)

Publication Number Publication Date
KR20090108656A KR20090108656A (en) 2009-10-15
KR101037834B1 true KR101037834B1 (en) 2011-05-31

Family

ID=41552030

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020097018144A KR101038794B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video
KR1020097018329A KR101037834B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video
KR1020097018152A KR101038822B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020097018144A KR101038794B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020097018152A KR101038822B1 (en) 2003-09-07 2004-09-03 Coding and decoding for interlaced video

Country Status (1)

Country Link
KR (3) KR101038794B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2617199B1 (en) * 2010-09-14 2018-01-24 BlackBerry Limited Methods and devices for data compression with adaptive filtering in the transform domain
HUE034477T2 (en) 2010-09-30 2018-02-28 Samsung Electronics Co Ltd Device for interpolating images by using a smoothing interpolation filter
WO2012064083A2 (en) * 2010-11-08 2012-05-18 엘지전자 주식회사 Deblocking filtering method and apparatus
KR101961960B1 (en) 2011-02-09 2019-03-25 엘지전자 주식회사 Method for encoding and decoding image and device using same
KR102214669B1 (en) 2020-04-09 2021-02-10 동아대학교 산학협력단 Hardware structure inference method optimized with modified Hybrid Median Filter

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408029B1 (en) * 1998-04-02 2002-06-18 Intel Corporation Method and apparatus for simplifying real-time data encoding
US6704360B2 (en) * 1997-03-27 2004-03-09 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704360B2 (en) * 1997-03-27 2004-03-09 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6408029B1 (en) * 1998-04-02 2002-06-18 Intel Corporation Method and apparatus for simplifying real-time data encoding

Also Published As

Publication number Publication date
KR101038794B1 (en) 2011-06-03
KR20090108111A (en) 2009-10-14
KR20090108656A (en) 2009-10-15
KR20090108654A (en) 2009-10-15
KR101038822B1 (en) 2011-06-03

Similar Documents

Publication Publication Date Title
KR101037816B1 (en) Coding and decoding for interlaced video
US7577198B2 (en) Number of reference fields for an interlaced forward-predicted field
KR101083870B1 (en) Advanced bi-directional predictive coding of interlaced video
US7623574B2 (en) Selecting between dominant and non-dominant motion vector predictor polarities
US7620106B2 (en) Joint coding and decoding of a reference field selection and differential motion vector information
US7606308B2 (en) Signaling macroblock mode information for macroblocks of interlaced forward-predicted fields
US8009739B2 (en) Intensity estimation/compensation for interlaced forward-predicted fields
US20050053295A1 (en) Chroma motion vector derivation for interlaced forward-predicted fields
KR101037834B1 (en) Coding and decoding for interlaced video

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140417

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 9