Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG
(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6)
10th Meeting: 8-12 December 2003, Waikoloa	Document: JVT-J050
Filename: JVT-J050.doc
Date: 2003-12-22	

Title:	Text of ITU-T Rec. H.264 (2004)/DCOR 1 | ISO/IEC 14496-10 (2003)/DCOR 1	
Status:	Output Document Approved by JVT	
Purpose:	JVT-Approved Draft Text of Corrigendum to Standard	
Author(s) or
Contact(s):	Gary Sullivan
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052 USA

Thomas Wiegand
Heinrich Hertz Institute (FhG),
Einsteinufer 37, D-10587 Berlin,
Germany

Ajay Luthra
Motorola Corporation
6420 Sequence Drive
San Diego, CA 92121 USA	
Tel:
Fax:
Email:

Tel:
Fax:
Email:

Tel:
Fax:
Email:	
+1 (425) 703-5308
+1 (425) 706-7329
garysull@microsoft.com

+49 - 30 - 31002 617
+49 - 30 - 392 72 00
wiegand@hhi.de

+1 (858) 404 3470
+1 (858) 404 2501
aluthra@motorola.com	
Source:	JVT	
_____________________________

INTERNATIONAL  STANDARD
Draft ISO/IEC 14496-10 : 2003/Cor.1 : 2004 (E)
Draft ITU-T Rec. H.264 (2003)/Cor.1 (2004 E)
ITU-T  RECOMMENDATION
ADVANCED VIDEO CODING
TECHNICAL  CORRIGENDUM  1
1)	Subclause 3.1
Replace subclause 3.1 with the following:
3.1	access unit: A set of NAL units always containing exactly one primary coded picture. In addition to the primary coded picture, an access unit may also contain one or more redundant coded pictures or other NAL units not containing slices or slice data partitions of a coded picture. The decoding of an access unit always results in a decoded picture.
2)	Subclause 3.3
Replace subclause 3.3 with the following:
3.3	adaptive binary arithmetic decoding process: An entropy decoding process that derives the values of bins from a bitstream produced by an adaptive binary arithmetic encoding process.
3)	Subclause 3.8
Replace subclause 3.8 with the following:
3.8	binarization: A set of bin strings for all possible values of a syntax element.
4)	Subclauses 3.9
Replace subclause 3.9 with the following:
3.9	binarization process: A unique mapping process of all possible values of a syntax element onto a set of bin strings. 
5)	Subclauses 3.10
Replace subclause 3.10 with the following:
3.10	bin string: A string of bins. A bin string is an intermediate binary representation of values of syntax elements from the binarization of the syntax element.
6)	Subclause 3.18
Replace subclause 3.18 with the following:
3.18	byte-aligned: A position in a bitstream is byte-aligned when the position is an integer multiple of 8 bits from the position of the first bit in the bitstream.  A bit or byte or syntax element is said to be byte-aligned when the position at which it appears in a bitstream is byte-aligned.
7)	Subclause 3.27
Replace subclause 3.27 with the following:
3.27	coded video sequence: A sequence of access units that consists, in decoding order, of an IDR access unit followed by zero or more non-IDR access units including all subsequent access units up to but not including any subsequent IDR access unit.
8)	Subclause 3.38
Replace subclause 3.38 with the following:
3.38	decoding process: The process specified in this Recommendation | International Standard that reads a bitstream and derives decoded pictures from it.
9)	Subclause 3.41
Replace subclause 3.41 with the following:
3.41	emulation prevention byte: A byte equal to 0x03 that may be present within a NAL unit.  The presence of emulation prevention bytes ensures that no sequence of consecutive byte-aligned bytes in the NAL unit contains a start code prefix.
10)	Subclause 3.45
Replace subclause 3.45 with the following:
3.45	field macroblock: A macroblock containing samples from a single field.  All macroblocks of a coded field are field macroblocks.  When macroblock-adaptive frame/field decoding is in use, some macroblocks of a coded frame may be field macroblocks.
11)	Subclause 3.47
Replace subclause 3.47 with the following:
3.47	field scan: A specific sequential ordering of transform coefficients that differs from the zig-zag scan by scanning columns more rapidly than rows.  Field scan is used for transform coefficients in field macroblocks.
12)	Subclause 3.49
Replace subclause 3.49 with the following:
3.49	frame: A frame contains an array of luma samples and two corresponding arrays of chroma samples. A frame consists of two fields, a top field and a bottom field.
13)	Subclause 3.50
Replace subclause 3.50 with the following:
3.50	frame macroblock: A macroblock representing samples from the two fields of a coded frame.  When macroblock-adaptive frame/field decoding is not in use, all macroblocks of a coded frame are frame macroblocks.  When macroblock-adaptive frame/field decoding is in use, some macroblocks of a coded frame may be frame macroblocks.
14)	Subclause 3.55
Replace subclause 3.55 with the following:
3.55	I slice: A slice that is not an SI slice that is decoded using prediction only from decoded samples within the same slice.
15)	Subclause 3.65
Replace subclause 3.65 with the following:
3.65	level: A defined set of constraints on the values that may be taken by the syntax elements and variables of this Recommendation | International Standard.  The same set of levels is defined for all profiles, with most aspects of the definition of each level being in common across different profiles. Individual implementations may, within specified constraints, support a different level for each supported profile. In a different context, level is the value of a transform coefficient prior to scaling.
16)	Subclause 3.68
Replace subclause 3.68 with the following:
3.68	luma: An adjective specifying that a sample array or single sample is representing the monochrome signal related to the primary colours. The symbol or subscript used for luma is Y or L. 
NOTE – The term luma is used rather than the term luminance in order to avoid the implication of the use of linear light transfer characteristics that is often associated with the term luminance. The symbol L is sometimes used instead of the symbol Y to avoid confusion with the symbol y as used for vertical location.
17)	Subclause 3.73
Replace subclause 3.73 with the following:
3.73	macroblock pair: A pair of vertically contiguous macroblocks in a frame that is coupled for use in macroblock-adaptive frame/field decoding.  The division of a slice into macroblock pairs is a partitioning.
18)	Subclause 3.79
Replace subclause 3.79 with the following:
3.79	NAL unit: A syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with emulation prevention bytes.
19)	Subclause 3.91
Replace subclause 3.91 with the following:
3.91	parity: The parity of a field can be top or bottom.
20)	Subclause 3.93
Insert new subclause 3.93.1 at the end of subclause 3.93, as follows:
3.93.1	picture parameter set: A syntax structure containing syntax elements that apply to zero or more entire coded pictures as determined by the content of a picture parameter set identifier syntax element found in each slice header.
21)	Subclause 3.98
Replace subclause 3.98 with the following:
3.98	predictor: A combination of specified values or previously decoded sample values or data elements used in the decoding process of subsequent sample values or data elements.
22)	Subclause 3.104
Replace subclause 3.104 with the following:
3.104	raw byte sequence payload (RBSP): A syntax structure containing an integer number of bytes that is encapsulated in a NAL unit. An RBSP is either empty or has the form of a string of data bits containing syntax elements followed by an RBSP stop bit and followed by zero or more subsequent bits equal to 0.
23)	Subclause 3.120
Insert new subclause 3.120.1 at the end of subclause 3.120, as follows:
3.120.1	sequence parameter set: A syntax structure containing syntax elements that apply to zero or more entire coded video sequences as determined by the content of a sequence parameter set identifier syntax element found in the picture parameter set referred to by the picture parameter set identifier syntax element found in each slice header.
24)	Subclause 3.130
Replace subclause 3.130 with the following:
3.130	start code prefix: A unique sequence of three bytes equal to 0x000001 embedded in the byte stream as a prefix to each NAL unit. The location of a start code prefix can be used by a decoder to identify the beginning of a new NAL unit and the end of a previous NAL unit. Emulation of start code prefixes is prevented within NAL units by the inclusion of emulation prevention bytes.
25)	Subclause 3.131
Replace subclause 3.131 with the following:
3.131	string of data bits (SODB): A sequence of some number of bits representing syntax elements present within a raw byte sequence payload prior to the raw byte sequence payload stop bit. Within an SODB, the left-most bit is considered to be the first and most significant bit, and the right-most bit is considered to be the last and least significant bit.
26)	Subclause 3.132
Replace subclause 3.132 with the following:
3.132	sub-macroblock: One quarter of the samples of a macroblock, i.e., an 8x8 luma block and two corresponding chroma blocks of which one corner is located at a corner of the macroblock.
27)	Subclause 6.4.7.5
Replace subclause 6.4.7.5 with the following:
6.4.7.5	Derivation process for neighbouring partitions
Inputs to this process are
-	a macroblock partition index mbPartIdx
-	a current sub-macroblock type currSubMbType
-	a sub-macroblock partition index subMbPartIdx 
Outputs of this process are 
-	mbAddrA\mbPartIdxA\subMbPartIdxA: specifying the macroblock or sub-macroblock partition to the left of the current macroblock and its availability status, or the sub-macroblock partition CurrMbAddr\mbPartIdx\subMbPartIdx and its availability status,
-	mbAddrB\mbPartIdxB\subMbPartIdxB: specifying the macroblock or sub-macroblock partition above the current macroblock and its availability status, or the sub-macroblock partition CurrMbAddr\mbPartIdx\subMbPartIdx and its availability status,
-	mbAddrC\mbPartIdxC\subMbPartIdxC: specifying the macroblock or sub-macroblock partition to the right-above of the current macroblock and its availability status, or the sub-macroblock partition CurrMbAddr\mbPartIdx\subMbPartIdx and its availability status,
-	mbAddrD\mbPartIdxD\subMbPartIdxD: specifying the macroblock or sub-macroblock partition to the left-above of the current macroblock and its availability status, or the sub-macroblock partition CurrMbAddr\mbPartIdx\subMbPartIdx and its availability status.
mbAddrN, mbPartIdxN, and subMbPartIdx (with N being A, B, C, or D) are derived as follows.
-	The inverse macroblock partition scanning process as described in subclause 6.4.2.1 is invoked with mbPartIdx as the input and ( x, y ) as the output.
-	The location of the upper-left luma sample inside a macroblock partition ( xS, yS ) is derived as follows.
-	If mb_type is equal to P_8x8, P_8x8ref0 or B_8x8, the inverse sub-macroblock partition scanning process as described in subclause 6.4.2.2 is invoked with subMbPartIdx as the input and ( xS, yS ) as the output. 
-	Otherwise, ( xS, yS ) are set to ( 0, 0 ).
-	The variable predPartWidth in Table 6‑2 is specified as follows.
-	If mb_type is equal to P_Skip, B_Skip, or B_Direct_16x16, or mb_type is equal to B_8x8 and currSubMbType is equal to B_Direct_8x8, predPartWidth = 16.
NOTE – When currSubMbType is equal to B_Direct_8x8, the predicted motion vector is the predicted motion vector for the complete macroblock.
-	Otherwise, if mb_type is equal to P_8x8, P_8x8ref0, or B_8x8 (and currSubMbType is not equal to B_Direct_8x8), predPartWidth = SubMbPartWidth( sub_mb_type[ mbPartIdx ] ).
-	Otherwise, predPartWidth = MbPartWidth( mb_type ).
-	The difference of luma location ( xD, yD ) is set according to Table 6‑2.
-	The neighbouring luma location ( xN, yN ) is specified by
xN = x + xS + xD		(6-21)
yN = y + yS + yD		(6-22)
-	The derivation process for neighbouring locations as specified in subclause 6.4.8 is invoked for luma locations with ( xN, yN ) as the input and the output is assigned to mbAddrN and ( xW, yW ).
-	Depending on mbAddrN, the following applies.
-	If mbAddrN is not available, the macroblock or sub-macroblock partition mbAddrN\mbPartIdxN\subMbPartIdxN is marked as not available.
-	Otherwise (mbAddrN is available), the following applies.
-	The macroblock partition in the macroblock mbAddrN covering the luma location ( xW, yW ) shall be assigned to mbPartIdxN and the sub-macroblock partition inside the macroblock partition mbPartIdxN covering the sample ( xW, yW ) in the macroblock mbAddrN shall be assigned to subMbPartIdxN.
-	When the partition given by mbPartIdxN and subMbPartIdxN is not yet decoded, the macroblock partition mbPartIdxN and the sub-macroblock partition subMbPartIdxN are marked as not available. 
NOTE - The latter condition is, for example, the case when mbPartIdx = 2, subMbPartIdx = 3, xD = 4, yD = ‑1, i.e., when neighbour C of the last 4x4 luma block of the third sub-macroblock is requested.
28)	Subclause 7.4.1.2.1
Replace subclause 7.4.1.2.1 with the following:
7.4.1.2.1	Order of sequence and picture parameter set RBSPs and their activation
NOTE – The sequence and picture parameter set mechanism decouples the transmission of infrequently changing information from the transmission of coded macroblock data. Sequence and picture parameter sets may, in some applications, be conveyed "out-of-band" using a reliable transport mechanism. 
A picture parameter set RBSP includes parameters that can be referred to by the coded slice NAL units or coded slice data partition A NAL units of one or more coded pictures. Each picture parameter set RBSP is initially considered inactive at the start of the operation of the decoding process.  At most one picture parameter set RBSP is considered active at any given moment during the operation of the decoding process, and the activation of any particular picture parameter set RBSP results in the deactivation of the previously-active picture parameter set RBSP (if any).
When a picture parameter set RBSP (with a particular value of pic_parameter_set_id) is not already active and it is referred to by a coded slice NAL unit or coded slice data partition A NAL unit (using that value of pic_parameter_set_id), it is activated. This picture parameter set RBSP is called the active picture parameter set RBSP until it is deactivated by the activation of another picture parameter set RBSP. A picture parameter set RBSP, with that particular value of pic_parameter_set_id,  shall be available to the decoding process prior to its activation. 
Any picture parameter set NAL unit containing the value of pic_parameter_set_id for the active picture parameter set RBSP shall have the same content as that of the active picture parameter set RBSP unless it follows the last VCL NAL unit of a coded picture and precedes the first VCL NAL unit of another coded picture.
A sequence parameter set RBSP includes parameters that can be referred to by one or more picture parameter set RBSPs or one or more SEI NAL units containing a buffering period SEI message. Each sequence parameter set RBSP is initially considered inactive at the start of the operation of the decoding process.  At most one sequence parameter set RBSP is considered active at any given moment during the operation of the decoding process, and the activation of any particular sequence parameter set RBSP results in the deactivation of the previously-active sequence parameter set RBSP (if any).
When a sequence parameter set RBSP (with a particular value of seq_parameter_set_id) is not already active and it is referred to by activation of a picture parameter set RBSP (using that value of seq_parameter_set_id) or is referred to by an SEI NAL unit containing a buffering period SEI message (using that value of seq_parameter_set_id), it is activated. This sequence parameter set RBSP is called the active sequence parameter set RBSP until it is deactivated by the activation of another sequence parameter set RBSP. A sequence parameter set RBSP, with that particular value of seq_parameter_set_id, shall be available to the decoding process prior to its activation. An activated sequence parameter set RBSP shall remain active for the entire coded video sequence.
NOTE – Because an IDR access unit begins a new coded video sequence and an activated sequence parameter set RBSP must remain active for the entire coded video sequence, a sequence parameter set RBSP can only be activated by a buffering period SEI message when the buffering period SEI message is part of an IDR access unit.
Any sequence parameter set NAL unit containing the value of seq_parameter_set_id for the active sequence parameter set RBSP shall have the same content as that of the active sequence parameter set RBSP unless it follows the last access unit of a coded video sequence and precedes the first VCL NAL unit and the first SEI NAL unit containing a buffering period SEI message (when present) of another coded video sequence.
NOTE – If picture parameter set RBSP or sequence parameter set RBSP are conveyed within the bitstream, these constraints impose an order constraint on the NAL units that contain the picture parameter set RBSP or sequence parameter set RBSP, respectively. Otherwise (picture parameter set RBSP or sequence parameter set RBSP are conveyed by other means not specified in this Recommendation | International Standard), they must be available to the decoding process in a timely fashion such that these constraints are obeyed.
During operation of the decoding process (see clause 8), the values of parameters of the active picture parameter set and the active sequence parameter set shall be considered in effect.  For interpretation of SEI messages, the values of the parameters of the picture parameter set and sequence parameter set that are active for the operation of the decoding process for the VCL NAL units of the primary coded picture in the same access unit shall be considered in effect unless otherwise specified in the SEI message semantics.
29)	Subclause 7.4.1.2.3
In subclause 7.4.1.2.3, change the second "NOTE" to the following:
NOTE – When a NAL unit having nal_unit_type equal to 7 or 8 is present in an access unit, it may or may not be referred to in the coded pictures of the access unit in which it is present, and may be referred to in coded pictures of subsequent access units.
30)	Subclause 7.4.1.2.4
Replace subclause 7.4.1.2.4 with the following:
7.4.1.2.4	Detection of the first VCL NAL unit of a primary coded picture
This subclause specifies constraints on VCL NAL unit syntax that are sufficient to enable the detection of the first VCL NAL unit of each primary coded picture.
Any coded slice NAL unit or coded slice data partition A NAL unit of the primary coded picture of the current access unit shall be different from any coded slice NAL unit or coded slice data partition A NAL unit of the primary coded picture of the previous access unit in one or more of the following ways.
-	frame_num differs in value.  The value of frame_num used to test this condition is the value of frame_num that appears in the syntax of the slice header, regardless of whether that value is inferred to have been equal to 0 for subsequent use in the decoding process due to the presence of memory_management_control_operation equal to 5.
-	field_pic_flag differs in value.
-	bottom_field_flag is present in both and differs in value.
-	nal_ref_idc differs in value with one of the nal_ref_idc values being equal to 0.
pic_order_cnt_type is equal to 0 for both and either pic_order_cnt_lsb differs in value, or delta_pic_order_cnt_bottom differs in value. 
pic_order_cnt_type is equal to 1 for both and either delta_pic_order_cnt[ 0 ] differs in value, or delta_pic_order_cnt[ 1 ] differs in value. 
-	nal_unit_type is equal to 5 for one coded slice NAL unit and is not equal to 5 in the other coded slice or coded slice data partition A NAL unit
-	nal_unit_type is equal to 5 for both and idr_pic_id differs in value.

NOTE – Some of the VCL NAL units in redundant coded pictures or some non-VCL NAL units (e.g. an access unit delimiter NAL unit) may also be used for the detection of the boundary between access units, and may therefore aid in the detection of the start of a new primary coded picture.
31)	Subclause 7.4.2.1
In subclause 7.4.2.1, make the following changes.
Replace the paragraph starting with "num_ref_frames" with the following:
num_ref_frames specifies the maximum number of short-term and long-term reference frames, complementary reference field pairs, and non-paired reference fields that may be used by the decoding process for inter prediction of any picture in the sequence. num_ref_frames also determines the size of the sliding window operation as specified in subclause 8.2.5.3. The value of num_ref_frames shall be in the range of 0 to MaxDpbSize (as specified in subclause A.3.1), inclusive.
Replace the section starting with "frame_mbs_only_flag" through Equation 7-8 with the following:
frame_mbs_only_flag equal to 0 specifies that coded pictures of the coded video sequence may either be coded fields or coded frames. frame_mbs_only_flag equal to 1 specifies that every coded picture of the coded video sequence is a coded frame containing only frame macroblocks.
The allowed range of values for pic_width_in_mbs_minus1, pic_height_in_map_units_minus1, and frame_mbs_only_flag is specified by constraints in Annex A. 
Depending on frame_mbs_only_flag, semantics are assigned to pic_height_in_map_units_minus1 as follows.
-	If frame_mbs_only_flag is equal to 0, pic_height_in_map_units_minus1 plus 1 is the height of a field in units of macroblocks.
-	Otherwise (frame_mbs_only_flag is equal to 1), pic_height_in_map_units_minus1 plus 1 is the height of a frame in units of macroblocks.
The variable FrameHeightInMbs is derived as follows
FrameHeightInMbs = ( 2 – frame_mbs_only_flag ) * PicHeightInMapUnits	(7-8)
32)	Subclause 7.4.2.10
Replace subclause 7.4.2.10 with the following:
7.4.2.10	RBSP slice trailing bits semantics
cabac_zero_word is a byte-aligned sequence of two bytes equal to 0x0000. 
Let NumBytesInVclNALunits be the sum of the values of NumBytesInNALunit for all VCL NAL units of a coded picture.
Let BinCountsInNALunits be the number of times that the parsing process function DecodeBin(), specified in subclause 9.3.3.2, is invoked to decode the contents of all VCL NAL units of a coded picture.  When entropy_coding_mode_flag is equal to 1, BinCountsInNALunits shall not exceed ( 32 ÷ 3 ) * NumBytesInVclNALunits + 96 * PicSizeInMbs. 
NOTE – The constraint on the maximum number of bins resulting from decoding the contents of the slice layer NAL units can be met by inserting a number of cabac_zero_word syntax elements to increase the value of NumBytesInVclNALunits.  Each cabac_zero_word is represented in a NAL unit by the three-byte sequence 0x000003 (as a result of the constraints on NAL unit contents that result in requiring inclusion of an emulation_prevention_three_byte for each cabac_zero_word).
33)	Subclause 7.4.3
In subclause 7.4.3, make the following changes.
Replace the paragraphs after Table 7-3 through the paragraph starting with "frame_num" with the following:
slice_type values in the range 5..9 specify, in addition to the coding type of the current slice, that all other slices of the current coded picture shall have a value of slice_type equal to the current value of slice_type or equal to the current value of slice_type – 5.
When nal_unit_type is equal to 5 (IDR picture), slice_type shall be equal to 2, 4, 7, or 9.
When num_ref_frames is equal to 0, slice_type shall be equal to 2, 4, 7, or 9.
pic_parameter_set_id specifies the picture parameter set in use. The value of pic_parameter_set_id shall be in the range of 0 to 255, inclusive.  
frame_num is used as an identifier for pictures and shall be represented by log2_max_frame_num_minus4 + 4 bits in the bitstream.  frame_num is constrained as follows:
Replace the paragraph after Equation 7-10 starting with "A picture including" with the following:
A picture including a memory_management_control_operation equal to 5 shall have frame_num constraints as described above and, after the decoding of the current picture and the processing of the memory management control operations, the picture shall be inferred to have had frame_num equal to 0 for all subsequent use in the decoding process, except as specified in subclause 0.
Replace the sentence after Equation 7-16 with the following:
The value of slice_qp_delta shall be limited such that SliceQPY is in the range of 0 to 51, inclusive.
34)	Subclause 7.4.3.3
In subclause 7.4.3.3, make the following changes.
Replace the paragraph starting with "long_term_reference_flag" with the following:
long_term_reference_flag equal to 0 specifies that the MaxLongTermFrameIdx variable is set equal to “no long-term frame indices” and that the IDR picture is marked as “used for short-term reference”. long_term_reference_flag equal to 1 specifies that the MaxLongTermFrameIdx variable is set equal to 0 and that the current IDR picture is marked “used for long-term reference” and is assigned LongTermFrameIdx equal to 0.  When num_ref_frames is equal to 0, long_term_reference_flag shall be equal to 0.
Replace the paragraph starting with "adaptive_ref_pic_marking_mode_flag" with the following:
adaptive_ref_pic_marking_mode_flag selects the reference picture marking mode of the currently decoded picture as specified in Table 7‑5. adaptive_ref_pic_marking_mode_flag shall be equal to 1 when the number of frames, complementary field pairs, and non-paired fields that are currently marked as "used for long-term reference" is equal to Max( num_ref_frames, 1 ).
35)	Subclause 7.4.4
In subclause 7.4.4, make the following changes.
Replace the paragraph starting with "To each Intra_16x16" with the following:
To each Intra_16x16 prediction macroblock, an Intra16x16PredMode is assigned, which specifies the Intra_16x16 prediction mode. CodedBlockPatternChroma contains the coded block pattern value for chroma as specified in Table 7‑12. CodedBlockPatternLuma specifies whether, for the luma component, non-zero AC transform coefficient levels are present.  CodedBlockPatternLuma equal to 0 specifies that all AC transform coefficient levels in the luma component of the macroblock are equal to 0.  CodedBlockPatternLuma equal to 15 specifies that at least one AC transform coefficient levels in the luma component of the macroblock is non-zero, requiring scanning of AC transform coefficient levels for all 16 of the 4x4 blocks in the 16x16 block.
Replace the paragraph starting with "coded_block_pattern" with the following:
coded_block_pattern specifies which of the six 8x8 blocks - luma and chroma – may contain non-zero transform coefficient levels. For macroblocks with prediction mode not equal to Intra_16x16, coded_block_pattern is present in the bitstream and the variables CodedBlockPatternLuma and CodedBlockPatternChroma are derived as follows. 
CodedBlockPatternLuma = coded_block_pattern % 16
CodedBlockPatternChroma = coded_block_pattern / 16	(7-22)
CodedBlockPatternLuma specifies, for each 4x4 luma block, one of the following cases.
-	All transform coefficient levels of the 4x4 luma block are equal to zero
-	One or more transform coefficient levels of the 4x4 luma block shall be non-zero valued.
The meaning of CodedBlockPatternChroma is specified in Table 7‑12. 
Replace Table 7-12 with the following:
Table 7‑12 – Specification of CodedBlockPatternChroma values
CodedBlockPatternChroma	Description	
0	All chroma transform coefficient levels are equal to 0.	
1	One or more chroma DC transform coefficient levels shall be non-zero valued. 
All chroma AC transform coefficient levels are equal to 0.	
2	Zero or more chroma DC transform coefficient levels are non-zero valued. 
One or more chroma AC transform coefficient levels shall be non-zero valued.	

36)	Subclause 7.4.5.1
In subclause 7.4.5.1, replace the paragraph starting with "intra_chroma_pred_mode" with the following:
intra_chroma_pred_mode specifies the type of spatial prediction used for chroma in macroblocks using Intra_4x4 or Intra_16x16 prediction, as shown in Table 7‑13.
37)	Subclause 8.2.1
In subclause 8.2.1, replace the section starting with "Consider the variable listD" up to but not including the section starting with "Consider the variable list0" with the following:
-	Consider the list variable listD containing as elements the TopFieldOrderCnt and BottomFieldOrderCnt values associated with the list of pictures including all of the following
-	the first picture in the list is the previous picture of any of the following types
-	an IDR picture
-	a picture containing a memory_management_control_operation equal to 5
-	the following additional pictures.
-	If pic_order_cnt_type is equal to 0, all other pictures that follow in decoding order after the first picture in the list and are not "non-existing" frames inferred by the decoding process for gaps in frame_num specified in subclause 8.2.5.2 and either precede the current picture in decoding order or are the current picture.  When pic_order_cnt_type is equal to 0 and the current picture is not a "non-existing" frame inferred by the decoding process for gaps in frame_num specified in subclause 8.2.5.2, the current picture is included in listD prior to the invoking of the decoded reference picture marking process.
-	Otherwise (pic_order_cnt_type is not equal to 0), all other pictures that follow in decoding order after the first picture in the list and either precede the current picture in decoding order or are the current picture. When pic_order_cnt_type is not equal to 0, the current picture is included in listD prior to the invoking of the decoded reference picture marking process.
38)	Subclause 8.2.1.1
In subclause 8.2.1.1, replace the section starting with "The variables prevPicOrderCntMsb and prevPicOrderCntLsb" up to but not including the section starting with "PicOrderCntMsb of the current picture" with the following:
The variables prevPicOrderCntMsb and prevPicOrderCntLsb are derived as follows.
-	If the current picture is an IDR picture, prevPicOrderCntMsb is set equal to 0 and prevPicOrderCntLsb is set equal to 0.
-	Otherwise, if the current picture is not an IDR picture and the previous reference picture in decoding order included a memory_management_control_operation equal to 5 and is not a bottom field, prevPicOrderCntMsb is set equal to 0 and prevPicOrderCntLsb is set equal to the value of TopFieldOrderCnt for the previous picture.
-	Otherwise, if the current picture is not an IDR picture and the previous reference picture in decoding order included a memory_management_control_operation equal to 5 and is a bottom field, prevPicOrderCntMsb is set equal to 0 and prevPicOrderCntLsb is set equal to 0.
-	Otherwise (the current picture is not an IDR picture and the previous reference picture in decoding order did not include a memory_management_control_operation equal to 5), prevPicOrderCntMsb is set equal to PicOrderCntMsb of the previous reference picture in decoding order and prevPicOrderCntLsb is set equal to the value of pic_order_cnt_lsb of the previous reference picture in decoding order.
39)	Subclause 8.2.4.2.3
In subclause 8.2.4.2.3, make the following changes:
Replace the paragraph starting with "For B slices" with the following:
For B slices, the order of short-term reference pictures in the reference picture lists RefPicList0 and RefPicList1 depends on output order, as given by PicOrderCnt( ).  When pic_order_cnt_type is equal to 0, reference pictures that are marked as "non-existing" as specified in subclause 8.2.5.2 are not included in either RefPicList0 and RefPicList1.
NOTE – When gaps_in_frame_num_allowed_flag is equal to 1, encoders should use reference picture list reordering to ensure proper operation of the decoding process (particularly when pic_order_cnt_type is equal to 0, in which case PicOrderCnt( ) is not inferred for "non-existing" frames).
Change the two sentences stating "It is derived as follows" with " It is ordered as follows":
40)	Subclause 8.2.4.2.4
Replace subclause 8.2.4.2.4 with the following:
8.2.4.2.4	Initialisation process for reference picture lists for B slices in fields
This initialisation process is invoked when decoding a B slice in a coded field.
Outputs of this process are the initial reference picture lists RefPicList0 and RefPicList1.
When decoding a field, each field of a stored reference frame is identified as a separate reference picture with a unique index. The order of short-term reference pictures in the reference picture lists RefPicList0 and RefPicList1 depend on output order, as given by PicOrderCnt( ). When pic_order_cnt_type is equal to 0, reference pictures that are marked as "non-existing" as specified in subclause 8.2.5.2 are not included in RefPicList0 and RefPicList1.
NOTE – When gaps_in_frame_num_allowed_flag is equal to 1, encoders should use reference picture list reordering to ensure proper operation of the decoding process (particularly when pic_order_cnt_type is equal to 0, in which case PicOrderCnt( ) is not inferred for "non-existing" frames).
NOTE – When decoding a field, there are effectively at least twice as many pictures available for referencing as there would be when decoding a frame at the same position in decoding order.
Three ordered lists of reference frames, refFrameList0ShortTerm, refFrameList1ShortTerm and refFrameListLongTerm, are derived as follows. For purposes of the formation of these lists of frames the term reference entry refers in the following to decoded reference frames, complementary reference field pairs, or non-paired reference fields. When pic_order_cnt_type is equal to 0, the term reference entry does not refer to frames that are marked as "non-existing" as specified in subclause 8.2.5.2.
-	refFrameList0ShortTerm is ordered starting with the reference entry f0 with the largest value of PicOrderCnt( f0 ) less than or equal to the value of PicOrderCnt( CurrPic ) of the current field and proceeding through in descending order to the short-term reference entry f1 that has the smallest value of PicOrderCnt( f1 ), and then continuing with the reference entry f2 with the smallest value of PicOrderCnt( f2 ) greater than the value of PicOrderCnt( CurrPic ) of the current field and proceeding through in ascending order to the short-term reference entry f3 that has the largest value of PicOrderCnt( f3 ).  
NOTE - When for the current field nal_ref_idc is greater than 0 and the current coded field follows in decoding order a coded field fld1 with which together it forms a complementary reference field pair after decoding, fld1 shall be included into the list refFrameList0ShortTerm using PicOrderCnt( fld1 ) and the ordering method described in the previous sentence shall be applied. 
-	refFrameList1ShortTerm is ordered starting with the reference entry f4 with the smallest value of PicOrderCnt( f4 ) greater than the value of PicOrderCnt( CurrPic ) of the current field and proceeding through in ascending order to the short-term reference entry f5 that has the largest value of PicOrderCnt( f5 ), and then continuing with the reference entry f6 with the largest value of PicOrderCnt( f6 ) less than or equal to the value of PicOrderCnt( CurrPic ) of the current field and proceeding through in descending order to the short-term reference entry f7 that has the smallest value of PicOrderCnt( f7 ).  
NOTE - When for the current field nal_ref_idc is greater than 0 and the current coded field follows in decoding order a coded field fld2 with which together it forms a complementary reference field pair after decoding, fld2 shall be included into the list refFrameList1ShortTerm using PicOrderCnt( fld2 ) and the ordering method described in the previous sentence shall be applied. 
-	refFrameListLongTerm is ordered starting with the reference entry having the lowest LongTermFrameIdx value and proceeding through in ascending order to the reference entry having highest LongTermFrameIdx value.  
NOTE - When the complementary field of the current picture is marked "used for long-term reference" it is included into the list refFrameListLongTerm. A reference entry in which only one field is marked as “used for long-term reference” is included into the list refFrameListLongTerm.
The process specified in subclause 8.2.4.2.5 is invoked with refFrameList0ShortTerm and refFrameListLongTerm given as input and the output is assigned to RefPicList0.
The process specified in subclause 8.2.4.2.5 is invoked with refFrameList1ShortTerm and refFrameListLongTerm given as input and the output is assigned to RefPicList1.
When the reference picture list RefPicList1 has more than one entry and it is identical to the reference picture list RefPicList0, the first two entries RefPicList1[0] and RefPicList1[1] are switched.
41)	Subclause 8.2.5.1
At the end of subclause 8.2.5.1, replace the phrase "shall not be greater than num_ref_frames." with the phrase " shall not be greater than Max( num_ref_frames, 1 ).":
42)	Subclause 8.2.5.2
Near the end of subclause 8.2.5.2, insert the following paragraph before the "NOTE":

When pic_order_cnt_type is not equal to 0, TopFieldOrderCnt and BottomFieldOrderCnt are derived for each of the "non-existing" frames by invoking the decoding process for picture order count in subclause 8.2.1.  When invoking the process in subclause 8.2.1 for a particular "non-existing" frame, the current picture is considered to be a picture considered having frame_num inferred to be equal to UnusedShortTermFrameNum, nal_ref_idc inferred to be not equal to 0, nal_unit_type inferred to be not equal to 5, field_pic_flag inferred to be equal to 0, adaptive_ref_pic_marking_mode_flag inferred to be equal to 0, delta_pic_order_cnt[ 0 ] (if needed) inferred to be equal to 0, and delta_pic_order_cnt[ 1] (if needed) inferred to be equal to 0.
43)	Subclause 8.2.5.3
In subclause 8.2.5.3, make the following changes:
Replace the sentence "Depending on the current field, the following applies." with " Depending on the properties of the current picture as specified below, the following applies."
Replace the phrase "When numShortTerm + numLongTerm is equal to num_ref_frames" with "When numShortTerm + numLongTerm is equal to Max( num_ref_frames, 1 )".
44)	Subclause 8.3
In subclause 8.3, insert the following paragraph before the paragraph starting with "Depending on the value of mb_type":
The variable MvCnt is set equal to 0.
45)	Subclause 8.3.1.2.3
Replace subclause 8.3.1.2.3 with the following:
8.3.1.2.3	Specification of Intra_4x4_DC prediction mode
This Intra_4x4 prediction mode shall be used when Intra4x4PredMode[ luma4x4BlkIdx ] is equal to 2.
The values of the prediction samples pred4x4L[ x, y ], with x, y = 0..3 are derived as follows.
-	If all samples p[ x, -1 ], with x = 0..3 and p[ -1, y ], with y = 0..3 are marked as “available for Intra_4x4 prediction”, the values of the prediction samples pred4x4L[ x, y ], with x, y = 0..3 are derived by
pred4x4L[ x, y ] = ( p[ 0, -1 ] + p[ 1, -1 ] + p[ 2, -1 ] + p[ 3, -1 ] + 
		            p[ -1, 0 ] + p[ -1, 1 ] + p[ -1, 2 ] + p[ -1, 3 ] + 4 ) >> 3	(8-47)
-	Otherwise, if any samples p[ x, -1 ], with x = 0..3 are marked as “not available for Intra_4x4 prediction” and all samples p[ -1, y ], with y = 0..3 are marked as “available for Intra_4x4 prediction”, the values of the prediction samples pred4x4L[ x, y ], with x, y = 0..3 are derived by
pred4x4L[ x, y ] = ( p[ -1, 0 ] + p[ -1, 1 ] + p[ -1, 2 ] + p[ -1, 3 ] + 2 ) >> 2	(8-48)
-	Otherwise, if any samples p[ -1, y ], with y = 0..3 are marked as “not available for Intra_4x4 prediction” and all samples p[ x, -1 ], with x = 0 .. 3 are marked as “available for Intra_4x4 prediction”, the values of the prediction samples pred4x4L[ x, y ], with x, y = 0 .. 3 are derived by
pred4x4L[ x, y ] = ( p[ 0, -1 ] + p[ 1, -1 ] + p[ 2, -1 ] + p[ 3, -1 ] + 2 ) >> 2	(8-49)
-	Otherwise (some samples p[ x, -1 ], with x = 0..3 and some samples p[ -1, y ], with y = 0..3 are marked as “not available for Intra_4x4 prediction”), the values of the prediction samples pred4x4L[ x, y ], with x, y = 0..3 are derived by
pred4x4L[ x, y ] = 128		(8-50)
NOTE – A 4x4 luma block can always be predicted using this mode.
46)	Subclause 8.3.2.3
Replace subclause 8.3.2.3 with the following:
8.3.2.3	Specification of Intra_16x16_DC prediction mode
This Intra_16x16 prediction mode shall be used depending on whether the neighbouring samples are marked as “available for Intra_16x16 prediction” as follows.
-	If all neighbouring samples p[ x, -1 ], with x = 0..15 and p[ -1, y ], with y = 0..15 are marked as “available for Intra_16x16 prediction”, the prediction for all luma samples in the macroblock is given by:
predL[ x, y ] = , with x, y = 0..15	(8-72)
-	Otherwise, if any of the neighbouring samples p[ x, -1 ], with x = 0..15 are marked as "not available for Intra_16x16 prediction" and all of the neighbouring samples p[ -1, y ], with y = 0..15 are marked as “available for Intra_16x16 prediction”, the prediction for all luma samples in the macroblock is given by:
predL[ x, y ] = , with x, y = 0..15	(8-73)
-	Otherwise, if any of the neighbouring samples p[ -1, y ], with y = 0..15 are marked as "not available for Intra_16x16 prediction" and all of the neighbouring samples p[ x, -1 ], with x = 0..15 are marked as “available for Intra_16x16 prediction”, the prediction for all luma samples in the macroblock is given by:
predL[ x, y ] = , with x, y = 0..15	(8-74)
-	Otherwise (some of the neighbouring samples p[ x, -1 ], with x = 0..15 and some of the neighbouring samples p[ -1, y ], with y = 0..15 are marked as “not available for Intra_16x16 prediction”), the prediction for all luma samples in the macroblock is given by:
predL[ x, y ] = 128, with x, y = 0..15		(8-75)
47)	Subclause 8.3.2.4
In subclause 8.3.2.4, replace Equation 8-76 with the following:
predL[ x, y ] = Clip1( ( a + b * ( x - 7 ) + c * ( y - 7 ) + 16 ) >> 5 ), with x, y = 0..15,	(8-76)
48)	Subclause 8.3.3.1
Replace subclause 8.3.3.1 with the following:
8.3.3.1	Specification of Intra_Chroma_DC prediction mode
The values of the prediction samples predC[ x, y ] with x = 0..3 and y = 0..3 are derived as follows.
-	If all samples p[ x, –1 ], with x = 0..3 and all samples p[ –1, y ], with y = 0..3 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 0..3 and y = 0..3	(8-82)
-	Otherwise, if all samples p[ x, –1 ], with x = 0..3 are marked as “available for Intra chroma prediction” and any samples p[ –1, y ], with y = 0..3 are marked as “not available for Intra chroma prediction”,
predC[ x, y ] = , with x = 0..3 and y = 0..3	(8-83)
-	Otherwise, if any samples p[ x, –1 ], with x = 0..3 are marked as “not available for Intra chroma prediction” and all samples p[ ‑1, y ], with y = 0..3 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 0..3 and y = 0..3	(8-84)
-	Otherwise (some samples p[ x, –1 ], with x = 0..3 and some samples p[ -1, y ], with y = 0..3 are marked as “not available for Intra chroma prediction”),
predC[ x, y ] = 128, with x = 0..3 and y = 0..3		(8-85)
The values of the prediction samples predC[ x, y ], with x = 4..7 and y = 0..3 are derived as follows.
-	If all samples p[ x, -1 ], with x = 4..7 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 4..7 and y = 0..3	(8-86)
-	Otherwise, if all samples p[ -1, y ], with y = 0..3 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 4..7 and y = 0..3	(8-87)
-	Otherwise (some samples p[ x, –1 ], with x = 4..7 and some samples p[ -1, y ], with y = 0..3 are marked as “not available for Intra chroma prediction”),
predC[ x, y ] = 128, with x = 4..7 and y = 0..3		(8-88)
The values of the prediction samples predC[ x, y ], with x = 0..3 and y = 4..7 are derived as follows.
-	If all samples p[ -1, y ], with y = 4..7 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 0..3 and y = 4..7	(8-89)
-	Otherwise, if all samples p[ x, -1 ], with x = 0..3 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 0..3 and y = 4..7	(8-90)
-	Otherwise (some samples p[ x, –1 ], with x = 0..3 and some samples p[ -1, y ], with y = 4..7 are marked as “not available for Intra chroma prediction”),
predC[ x, y ] = 128, with x = 0..3 and y = 4..7		(8-91)
The values of the prediction samples predC[ x, y ] with x = 4..7 and y = 4..7 are derived as follows.
-	If all samples p[ x, –1 ], with x = 4..7 and all samples p[ –1, y ], with y = 4..7 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 4..7 and y = 4..7	(8-92)
-	Otherwise, if all samples p[ x, –1 ], with x = 4..7 are marked as “available for Intra chroma prediction” and any samples p[ –1, y ], with y = 4..7 are marked as “not available for Intra chroma prediction”,
predC[ x, y ] = , with x = 4..7 and y = 4..7	(8-93)
-	Otherwise, if any samples p[ x, –1 ], with x = 4..7 are marked as “not available for Intra chroma prediction” and all samples p[ ‑1, y ], with y = 4..7 are marked as “available for Intra chroma prediction”,
predC[ x, y ] = , with x = 4..7 and y = 4..7	(8-94)
-	Otherwise (some samples p[ x, –1 ], with x = 4..7 and some samples p[ -1, y ], with y = 4..7 are marked as “not available for Intra chroma prediction”),
predC[ x, y ] = 128, with x = 4..7 and y = 4..7		(8-95)
49)	Subclause 8.4
In subclause 8.4, make the following changes.
Replace the section starting with "The Inter prediction process for a macroblock partition" up to but not including the section starting with "For use in derivation processes of variables invoked later in the decoding process" with the following:
Let the variable MvCnt be initially set equal to 0 before any invocation of subclause 0 for the macroblock.
The Inter prediction process for a macroblock partition mbPartIdx and a sub-macroblock partition subMbPartIdx consists of the following ordered steps
1.	Derivation process for motion vector components and reference indices as specified in subclause 8.4.1. 
Inputs to this process are 
-	a macroblock partition mbPartIdx, 
-	a sub-macroblock partition subMbPartIdx. 
Outputs of this process are 
-	luma motion vectors mvL0 and mvL1 and the chroma motion vectors mvCL0 and mvCL1
-	reference indices refIdxL0 and refIdxL1
-	prediction list utilization flags predFlagL0 and predFlagL1
-	the sub-macroblock partition motion vector count subMvCnt.
1.	The variable MvCnt is incremented by subMvCnt.
2.	Decoding process for Inter prediction samples as specified in subclause 8.4.2.
Inputs to this process are 
-	a macroblock partition mbPartIdx, 
-	a sub-macroblock partition subMbPartIdx. 
-	variables specifying partition width and height, partWidth, and partHeight
-	luma motion vectors mvL0 and mvL1 and the chroma motion vectors mvCL0 and mvCL1
-	reference indices refIdxL0 and refIdxL1
-	prediction list utilization flags predFlagL0 and predFlagL1
Outputs of this process are 
-	inter prediction samples (pred); which are a (partWidth)x(partHeight) array predPartL of prediction luma samples and two (partWidth/2)x(partHeight/2) arrays predPartCr, and predPartCb of prediction chroma samples, one for each of the chroma components Cb and Cr.
50)	Subclause 8.4.1
Replace subclause 8.4.1 with the following:
Derivation process for motion vector components and reference indices
Inputs to this process are 
-	a macroblock partition mbPartIdx, 
-	a sub-macroblock partition subMbPartIdx. 
Outputs of this process are 
-	luma motion vectors mvL0 and mvL1 as well as the chroma motion vectors mvCL0 and mvCL1
-	reference indices refIdxL0 and refIdxL1
-	prediction list utilization flags predFlagL0 and predFlagL1
-	a sub-partition macroblock motion vector count variable subMvCnt
For the derivation of the variables mvL0 and mvL1 as well as refIdxL0 and refIdxL1, the following applies.
-	If mb_type is equal to P_Skip, the derivation process for luma motion vectors for skipped macroblocks in P and SP slices in subclause 8.4.1.1 is invoked with the output being the luma motion vectors mvL0 and reference indices refIdxL0, and predFlagL0 is set equal to 1. mvL1 and refIdxL1 are marked as not available and predFlagL1 is set equal to 0. The sub-partition motion vector count variable subMvCnt is set equal to 1.
-	Otherwise, if mb_type is equal to B_Skip, or B_Direct_16x16 or sub_mb_type[ subMbPartIdx ] is equal to B_Direct_8x8, the derivation process for luma motion vectors for B_Skip, B_Direct_16x16, and B_Direct_8x8 in B slices in subclause 8.4.1.2 is invoked with mbPartIdx and subMbPartIdx as the input and the output being the luma motion vectors mvL0, mvL1, the reference indices refIdxL0, refIdxL1, the sub-partition motion vector count subMvCnt, and the prediction utilization flags predFlagL0 and predFlagL1.
-	Otherwise, for X being replaced by either 0 or 1 in the variables predFlagLX, mvLX, refIdxLX, and in Pred_LX and in the syntax elements ref_idx_lX and mvd_lX, and the following applies. 
-	The variables refIdxLX and predFlagLX are derived as follows.
-	If MbPartPredMode( mb_type, mbPartIdx ) or SubMbPredMode( sub_mb_type[ subMbPartIdx ] ) is equal to Pred_LX or to BiPred, 
refIdxLX = ref_idx_lX[ mbPartIdx ]		(8-120)
predFlagLX = 1		(8-121)
-	Otherwise, the variables refIdxLX and predFlagLX are specified by
refIdxLX = -1		(8-122)
predFlagLX = 0		(8-123)
-	The sub-partition motion vector count subMvCnt is set equal to predFlagL0 + predFlagL1.
-	The derivation process for luma motion vector prediction in subclause 8.4.1.3 is invoked with mbPartIdx subMbPartIdx, refIdxLX, and list suffix LX as the input and the output being mvpLX.  The luma motion vectors are derived by
mvLX[ 0 ] = mvpLX[ 0 ] + mvd_lX[ mbPartIdx ][ subMbPartIdx ][ 0 ]	(8-124)
mvLX[ 1 ] = mvpLX[ 1 ] + mvd_lX[ mbPartIdx ][ subMbPartIdx ][ 1 ]	(8-125)
For the derivation of the variables for the chroma motion vectors, the following applies. When predFlagLX (with X being either 0 or 1) is equal to 1, the derivation process for chroma motion vectors in subclause 8.4.1.4 is invoked with mvLX and refIdxLX as input and the output being mvCLX.
51)	Subclause 8.4.1.1
In subclause 8.4.1.1, replace the sentence " The process specified in subclause 8.4.1.3.2 is invoked with mbPartIdx set equal to 0, subMbPartIdx set equal to 0, and list suffix L0 as input and the output is assigned to mbAddrA, mbAddrB, mvL0A, mvL0B, refIdxL0A, and refIdxL0B." with "Let currSubMbType be set equal to sub_mb_type[ 0 ].  The process specified in subclause 8.4.1.3.2 is invoked with mbPartIdx set equal to 0, subMbPartIdx set equal to 0, currSubMbType, and list suffix L0 as input and the output is assigned to mbAddrA, mbAddrB, mvL0A, mvL0B, refIdxL0A, and refIdxL0B.":
52)	Subclause 8.4.1.2
Replace subclause 8.4.1.2 with the following:
8.4.1.2	Derivation process for luma motion vectors for B_Skip, B_Direct_16x16, and B_Direct_8x8 
This process is invoked when mb_type is equal to B_Skip or B_Direct_16x16, or sub_mb_type[ mbPartIdx ] is equal to B_Direct_8x8.
Inputs to this process are mbPartIdx and subMbPartIdx.
Outputs of this process are the reference indices refIdxL0, refIdxL1, the motion vectors mvL0 and mvL1, the sub-partition motion vector count subMvCnt, and the prediction list utilization flags, predFlagL0 and predFlagL1.
The derivation process depends on the value of direct_spatial_mv_pred_flag, which is present in the bitstream in the slice header syntax as specified in subclause 7.3.3, and is specified as follows. 
-	If direct_spatial_mv_pred_flag is equal to 1, the mode in which the outputs of this process are derived is referred to as spatial direct prediction mode.
-	Otherwise (direct_spatial_mv_pred_flag is equal to 0), mode in which the outputs of this process are derived is referred to as temporal direct prediction mode.
Both spatial and temporal direct prediction mode use the co-located motion vectors and reference indices as specified in subclause 8.4.1.2.1.
The motion vectors and reference indices are derived as follows.
-	If spatial direct prediction mode is used, the direct motion vector and reference index prediction mode specified in subclause 8.4.1.2.2 is used, with subMvCnt being an output.
-	Otherwise (temporal direct prediction mode is used), the direct motion vector and reference index prediction mode specified in subclause 8.4.1.2.3 is used and the variable subMvCnt is derived as follows.
-	If subMbPartIdx is equal to 0, subMvCnt is set equal to 2.
-	Otherwise (subMbPartIdx is not equal to 0), subMvCnt is set equal to 0.
53)	Subclause 8.4.1.2.2
Replace subclause 8.4.1.2.2 with the following:
8.4.1.2.2	Derivation process for spatial direct luma motion vector and reference index prediction mode
This process is invoked when direct_spatial_mv_pred_flag is equal to 1 and any of the following conditions is true. 
-	mb_type is equal to B_Skip 
-	mb_type is equal to B_Direct_16x16
-	sub_mb_type[ mbPartIdx ] is equal to B_Direct_8x8.
Inputs to this process are mbPartIdx, subMbPartIdx.
Outputs of this process are the reference indices refIdxL0, refIdxL1, the motion vectors mvL0 and mvL1, the sub-partition motion vector count subMvCnt, and the prediction list utilization flags, predFlagL0 and predFlagL1.
The reference indices refIdxL0 and refIdxL1 and the variable directZeroPredictionFlag are derived by applying the following ordered steps.
1.	Let the variable currSubMbType be set equal to sub_mb_type[ mbPartIdx ].
2.	The process specified in subclause 8.4.1.3.2 is invoked with mbPartIdx = 0, subMbPartIdx = 0, currSubMbType, and list suffix L0 as input and the output is assigned to the motion vectors mvL0N and the reference indices refIdxL0N with N being replaced by A, B, or C.
3.	The process specified in subclause 8.4.1.3.2 is invoked with mbPartIdx = 0, subMbPartIdx = 0, currSubMbType, and list suffix L1 as input and the output is assigned to the motion vectors mvL1N and the reference indices refIdxL1N with N being replaced by A, B, or C.
NOTE – The motion vectors mvL0N, mvL1N and the reference indices refIdxL0N, refIdxL1N are identical for all 4x4 sub-macroblock partitions of a macroblock.
1.	The reference indices refIdxL0, refIdxL1, and directZeroPredictionFlag are derived by 
refIdxL0 = MinPositive( refIdxL0A, MinPositive( refIdxL0B, refIdxL0C ) ) 	(8-137)
refIdxL1 = MinPositive( refIdxL1A, MinPositive( refIdxL1B, refIdxL1C ) ) 	(8-138)
directZeroPredictionFlag = 0		(8-139)
where
	(8-140)
2.	When both reference indices refIdxL0 and refIdxL1 are less than 0,
refIdxL0 = 0		(8-141)
refIdxL1 = 0		(8-142)
directZeroPredictionFlag = 1		(8-143)
The process specified in subclause 8.4.1.2.1 is invoked with mbPartIdx, subMbPartIdx given as input and the output is assigned to refIdxCol and mvCol.
The variable colZeroFlag is derived as follows.
-	If all of the following conditions are true, colZeroFlag is set equal to 1.
-	the reference picture referred by RefPicList1[0] is a short-term reference picture 
-	refIdxCol is equal to 0
-	both motion vector components mvCol[ 0 ] and mvCol[ 1 ] lie in the range of -1 to 1 in units specified as follows.
-	If the colocated macroblock is a frame macroblock, the units of mvCol[ 0 ] and mvCol[ 1 ] are units of quarter luma frame samples.
-	Otherwise (the colocated macroblock is a field macroblock), the units of mvCol[ 0 ] and mvCol[ 1 ] are units of quarter luma field samples.
NOTE – For purposes of determining the condition above, the value mvCol[ 1 ] is not scaled to use the units of a motion vector for the current macroblock in cases when the current macroblock is a frame macroblock and the colocated macroblock is a field macroblock or when the current macroblock is a field macroblock and the colocated macroblock is a frame macroblock.  This aspect differs from the use of mvCol[ 1 ] in the temporal direct mode as specified in subclause 8.4.1.2.3, which applies scaling to the motion vector of the colocated macroblock to use the same units as the units of a motion vector for the current macroblock, using Equation 8-146 or Equation 8-147 in these cases.
-	Otherwise, colZeroFlag is set equal to 0.
The motion vectors mvLX (with X being 0 or 1) are derived as follows.
-	If any of the following conditions is true, both components of the motion vector mvLX are set equal to 0.
-	directZeroPredictionFlag is equal to 1
-	refIdxLX is less than 0
-	refIdxLX is equal to 0 and colZeroFlag is equal to 1
-	Otherwise, the process specified in subclause 8.4.1.3 is invoked with mbPartIdx = 0, subMbPartIdx = 0, refIdxLX, and list suffix LX as the input and the output is assigned to mvLX.
NOTE – In the immediately above case, the returned motion vector mvLX is identical for all 4x4 sub-macroblock partitions of a macroblock.
The prediction utilization flags predFlagL0 and predFlagL1 shall be derived as specified using Table 8‑8.
Table 8‑8 – Assignment of prediction utilization flags
refIdxL0	refIdxL1	predFlagL0	predFlagL1	
>= 0	>= 0	1	1	
>= 0	< 0	1	0	
< 0	>= 0	0	1	

The variable subMvCnt is derived as follows.
-	If subMbPartIdx is not equal to 0 or direct_8x8_inference_flag is equal to 0, subMvCnt is set equal to 0.
-	Otherwise (subMbPartIdx is equal to 0 and direct_8x8_inference_flag is equal to 1), subMvCnt is set equal to predFlagL0 + predFLagL1.
54)	Subclause 8.4.1.2.3
Replace the content of subclause 8.4.1.2.3 up to but not including the sentence stating "Figure 8‑2 illustrates the temporal direct-mode motion vector inference when the current picture is temporally between the list 0 reference picture and the list 1 reference picture." with the following:
8.4.1.2.3	Derivation process for temporal direct luma motion vector and reference index prediction mode
This process is invoked when direct_spatial_mv_pred_flag is equal to 0 and any of the following conditions is true. 
-	mb_type is equal to B_Skip 
-	mb_type is equal to B_Direct_16x16
-	sub_mb_type[ mbPartIdx ] is equal to B_Direct_8x8.
Inputs to this process are mbPartIdx and subMbPartIdx.
Outputs of this process are the motion vectors mvL0 and mvL1, the reference indices refIdxL0 and refIdxL1, and the prediction list utilization flags, predFlagL0 and predFlagL1.
The process specified in subclause 8.4.1.2.1 is invoked with mbPartIdx, subMbPartIdx given as input and the output is assigned to colPic, mbAddrCol, mvCol, refIdxCol, and vertMvScale.
The reference indices refIdxL0 and refIdxL1 are derived as follows.
refIdxL0 = ( ( refIdxCol < 0 ) ? 0 : MapColToList0( refIdxCol ) ) 	(8-144)
refIdxL1 = 0		(8-145)
NOTE - If the current macroblock is a field macroblock, refIdxL0 and refIdxL1 index a list of fields; otherwise (the current macroblock is a frame macroblock), refIdxL0 and refIdxL1 index a list of frames or complementary reference field pairs. 
Let refPicCol be a frame, a field, or a complementary field pair that was referred by the reference index refIdxCol when decoding the co-located macroblock mbAddrCol inside the picture colPic. The function MapColToList0( refIdxCol ) is specified as follows. 
-	If vertMvScale is equal to One_To_One, the following applies.
-	If field_pic_flag is equal to 0 and the current macroblock is a field macroblock, the following applies.
-	Let refIdxL0Frm be the lowest valued reference index in the current reference picture list RefPicList0 that references the frame or complementary field pair that contains the field refPicCol. RefPicList0 shall contain a variable PicNum or LongTermPicNum that references the frame or complementary field pair that contains refPicCol. The return value of MapColToList0( ) is specified as follows.
-	If the field referred to by refIdxCol has the same parity as the current macroblock, MapColToList0( refIdxCol ) returns the reference index ( refIdxL0Frm << 1 ).
-	Otherwise (the field referred by refIdxCol has the opposite parity of the current macroblock), MapColToList0( refIdxCol) returns the reference index ( ( refIdxL0Frm << 1 ) + 1 ).
-	Otherwise (field_pic_flag is equal to 1 or the current macroblock is a frame macroblock), MapColToList0( refIdxCol ) returns the lowest valued reference index refIdxL0 in the current reference picture list RefPicList0 that references refPicCol. RefPicList0 shall contain a variable PicNum or LongTermPicNum that references refPicCol.
-	Otherwise, if vertMvScale is equal to Frm_To_Fld, the following applies.
-	If field_pic_flag is equal to 0, let refIdxL0Frm be the lowest valued reference index in the current reference index list RefPicList0 that references refPicCol. MapColToList0( refIdxCol ) returns the reference index  ( refIdxL0Frm << 1 ). RefPicList0 shall contain a variable PicNum or LongTermPicNum that references refPicCol.
-	Otherwise (field_pic_flag is equal to 1), MapColToList0( refIdxCol ) returns the lowest valued reference index refIdxL0 in the current reference picture list RefPicList0 that references the field of refPicCol with the same parity as the current picture CurrPic. RefPicList0 shall contain a variable PicNum or LongTermPicNum that references the field of refPicCol with the same parity as the current picture CurrPic.
-	Otherwise (vertMvScale is equal to Fld_To_Frm), MapColToList0( refIdxCol ) returns the lowest valued reference index refIdxL0 in the current reference picture list RefPicList0 that references the frame or complementary field pair that contains refPicCol. RefPicList0 shall contain a variable PicNum or LongTermPicNum that references the frame or complementary field pair that contains refPicCol.
NOTE – A decoded reference picture that was marked as "used for short-term reference" when it was referenced in the decoding process of the picture containing the co-located macroblock may have been modified to be marked as "used for long-term reference" before being used for reference for inter prediction using the direct prediction mode for the current macroblock.
Depending on the value of vertMvScale the vertical component of mvCol is modified as follows.
-	If vertMvScale is equal to Frm_To_Fld
mvCol[ 1 ] = mvCol[ 1 ] / 2		(8-146)
-	Otherwise, if vertMvScale is equal to Fld_To_Frm
mvCol[ 1 ] = mvCol[ 1 ] * 2		(8-147)
-	Otherwise (vertMvScale is equal to One_To_One), mvCol[ 1 ] remains unchanged.
The variables currPicOrField, pic0, and pic1, are derived as follows:
-	If field_pic_flag is equal to 0 and the current macroblock is a field macroblock, the following applies.
–	currPicOrField is the field of the current picture CurrPic that has the same parity as the current macroblock.  pic1 is the field of RefPicList1[0] that has the same parity as the current macroblock.  Let frame0 be the frame or complementary field pair that is referred to by RefPicList0[ refIdxL0 /2 ].
–	If refIdxL0 % 2 is equal to 0, pic0 is the field of frame0 that has the same parity as the current macroblock.
–	Otherwise (refIdxL0 % 2 is not equal to 0), pic0 is the field of frame0 that has the opposite parity of the current macroblock.
–	Otherwise (field_pic_flag is equal to 1 or the current macroblock is a frame macroblock), currPicOrField is the current picture CurrPic, pic1 is the decoded reference picture referred to by RefPicList1[ 0 ], and pic0 is the decoded reference picture referred to by RefPicList0[ refIdxL0 ].
The two motion vectors mvL0 and mvL1 for each 4x4 sub-macroblock partition of the current macroblock are derived as follows:
NOTE – It is often the case that many of the 4x4 sub-macroblock partitions share the same motion vectors and reference pictures. In these cases, temporal direct mode motion compensation can calculate the inter prediction sample values in larger units than 4x4 luma sample blocks. For example, when direct_8x8_inference_flag is equal to 1, at least each 8x8 luma sample quadrant of the macroblock shares the same motion vectors and reference pictures.
–	If the reference index refIdxL0 refers to a long-term picture, or DiffPicOrderCnt( pic1, pic0 ) is equal to 0, the motion vectors mvL0, mvL1 for the direct mode partition are derived by
mvL0 = mvCol		(8-148)
mvL1 = 0			(8-149)
–	Otherwise, the motion vectors mvL0, mvL1 are derived as scaled versions of the motion vector mvCol of the co-located sub-macroblock partition as specified below (see Figure 8‑2)
tx = ( 16 384 + Abs( td / 2 ) ) / td		(8-150)
DistScaleFactor = Clip3( -1024, 1023, ( tb * tx + 32 ) >> 6 ) 	(8-151)
mvL0 = ( DistScaleFactor * mvCol + 128 ) >> 8		(8-152)
mvL1 = mvL0 – mvCol 		(8-153)
	where tb and td are derived as follows.
tb = Clip3( -128, 127, DiffPicOrderCnt( currPicOrField, pic0 ) )	(8-154)
td = Clip3( -128, 127, DiffPicOrderCnt( pic1, pic0 ) )	(8-155)
NOTE - mvL0 and mvL1 cannot exceed the ranges specified in Annex A.
The prediction utilization flags predFlagL0 and predFlagL1 are both set equal to 1.
55)	Subclause 8.4.1.3
In subclause 8.4.1.3 make the following changes.
Insert the the following new paragraph above the paragraph starting with "The derivation process for the neighbouring":
Let currSubMbType be set equal to sub_mb_type[ mbPartIdx ].
Replace the paragraph starting with "The derivation process for the neighbouring" with:
The derivation process for the neighbouring blocks for motion data in subclause 8.4.1.3.2 is invoked with mbPartIdx, subMbPartIdx, currSubMbType, and list suffix LX as the input and with mbAddrN\mbPartIdxN\subMbPartIdxN, reference indices refIdxLXN and the motion vectors mvLXN with N being replaced by A, B, or C as the output.
56)	Subclause 8.4.1.3.2
In subclause 6.4.7.5 make the following changes:
Change the list of inputs at the beginning of the subclause with the following:
Inputs to this process are
-	the macroblock partition index mbPartIdx,
-	the sub-macroblock partition index subMbPartIdx,
-	the current sub-macroblock type currSubMbType,
-	the list suffix LX
Replace the sentence "The process in subclause 6.4.7.5 is invoked with mbPartIdx, currSubMbType, and subMbPartIdx as input and the output is assigned to mbAddrN\mbPartIdxN\subMbPartIdxN with N being replaced by A, B, C, or D." with "The process in subclause 6.4.7.5 is invoked with mbPartIdx, currSubMbType, and subMbPartIdx as input and the output is assigned to mbAddrN\mbPartIdxN\subMbPartIdxN with N being replaced by A, B, C, or D."
57)	Subclause 8.4.2.2.1
In subclause 8.4.2.2.1, replace the section starting with "In Figure 8‑4, the positions labelled with upper-case letters" through Equation 8-184 with the following:
The variable refPicHeightEffectiveL, which is the height of the effective reference picture luma array, is derived as follows.
–	If MbaffFrameFlag is equal to 0 or mb_field_decoding_flag is equal to 0, refPicHeightEffectiveL is set equal to PicHeightInSamplesL.
–	Otherwise (MbaffFrameFlag is equal to 1 and mb_field_decoding_flag is equal to 1), refPicHeightEffectiveL is set equal to PicHeightInSamplesL / 2.
In Figure 8‑4, the positions labelled with upper-case letters within shaded blocks represent luma samples at full-sample locations inside the given two-dimensional array refPicLXL of luma samples. These samples may be used for generating the predicted luma sample value predPartLXL[ xL, yL ]. The locations ( xZL, yZL ) for each of the corresponding luma samples Z, where Z may be A, B, C, D, E, F, G, H, I, J, K, L, M, N, P, Q, R, S, T, or U, inside the given array refPicLXL of luma samples are derived as follows:
xZL = Clip3( 0, PicWidthInSamplesL – 1, xIntL + xDZL )
yZL = Clip3( 0, refPicHeightEffectiveL – 1, yIntL + yDZL )	(8-184)
58)	Subclause 8.4.2.2.2
Replace the section of subclause 8.4.2.2.2 starting with "These samples may be used for" and following to the end of the subclause with the following:
The variable refPicHeightEffectiveC,  which is the height of the effective reference picture chroma array, is derived as follows.
–	If MbaffFrameFlag is equal to 0 or mb_field_decoding_flag is equal to 0, refPicHeightEffectiveC is set equal to PicHeightInSamplesC.
–	Otherwise (MbaffFrameFlag is equal to 1 and mb_field_decoding_flag is equal to 1), refPicHeightEffectiveC is set equal to PicHeightInSamplesC / 2.
The sample coordinates specified in Equations 8-206 through 8-213 are used for generating the predicted chroma sample value predPartLXC[ xC, yC ]. 
xAC = Clip3( 0, PicWidthInSamplesC – 1, xIntC ) 		(8-206)
xBC = Clip3( 0, PicWidthInSamplesC – 1, xIntC + 1 ) 		(8-207)
xCC = Clip3( 0, PicWidthInSamplesC – 1, xIntC ) 		(8-208)
xDC = Clip3( 0, PicWidthInSamplesC – 1, xIntC + 1 ) 		(8-209)
yAC = Clip3( 0, refPicHeightEffectiveC – 1, yIntC ) 		(8-210)
yBC = Clip3( 0, refPicHeightEffectiveC – 1, yIntC ) 		(8-211)
yCC = Clip3( 0, refPicHeightEffectiveC – 1, yIntC + 1 ) 	(8-212)
yDC = Clip3( 0, refPicHeightEffectiveC – 1, yIntC + 1 ) 	(8-213)
Given the chroma samples A, B, C, and D at full-sample locations specified in Equations 8-206 through 8-213, the predicted chroma sample value predPartLXC[ xC, yC ] is derived as follows:
predPartLXC[ xC, yC ] = ( ( 8 – xFracC ) * ( 8 – yFracC ) * A + xFracC * ( 8 – yFracC ) * B +
		                         ( 8 – xFracC ) * yFracC * C            + xFracC * yFracC * D            + 32 ) >> 6	(8-214)
59)	Subclause 8.4.2.3.1
In subclause 8.4.2.3.1, in the phrase "Otherwise (the chroma Cr component sample prediction values predPartCr[ x, y ] are derived), the following applies with C set equal to Cb, x set equal to 0 .. partWidth / 2 ‑ 1, and y set equal to 0 .. partHeight / 2 ‑ 1" change "Cb" to "Cr".
60)	Subclause 8.4.2.3.2
In subclause 8.4.2.3.2, in the phrase " Otherwise (the chroma Cr component sample prediction values predPartCr[ x, y ] are derived), the following applies with C set equal to Cb, x set equal to 0 .. partWidth / 2 ‑ 1, and y set equal to 0 .. partHeight / 2 ‑ 1" change "Cb" to "Cr".
61)	Subclause 8.5.5
Replace subclause 8.5.5 with the following:
8.5.5	Derivation process for the chroma quantisation parameters and scaling function
Outputs of this process are:
–	QPC: the chroma quantisation parameter 
–	QSC: the additional chroma quantisation parameter required for decoding SP and SI slices (if applicable)
NOTE – QP quantisation parameter values QPY, QPC, QSY, and QSC are always in the range of 0 to 51, inclusive.  
The value of QPC for chroma is determined from the current value of QPY and the value of chroma_qp_index_offset. 
NOTE – The scaling equations are specified such that the equivalent transform coefficient level scaling factor doubles for every increment of 6 in QPY. Thus, there is an increase in the factor used for scaling of approximately 12 % for each increase of 1 in the value of QPY.
The value of QPC shall be determined as specified in Table 8‑13 based on the index denoted as qPI. The value of qPI shall be derived as follows.
qPI = Clip3( 0, 51, QPY + chroma_qp_index_offset )		(8-251)
Table 8‑13 – Specification of QPC as a function of qPI
qPI	<30	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	
QPC	=qPI	29	30	31	32	32	33	34	34	35	35	36	36	37	37	37	38	38	38	39	39	39	39	

When the current slice is an SP or SI slice, QSC is derived using the above process, substituting QPY with QSY and QPC with QSC.
The function LevelScale( m, i, j ) is specified as follows:
	(8-252)
where the first and second subscripts of v are row and column indices, respectively, of the matrix specified as:
.		(8-253)
62)	Subclause 8.5.6
In subclause 8.5.6, replace the "NOTE" at the end of the subclause with the following two "NOTE"s:
NOTE – When entropy_coding_mode_flag is equal to 0 and QPY is less than 10, the range of values that can be represented for the elements cij of c is not sufficient to represent the full range of values of the elements dcYij of dcY that could be necessary to form a close approximation of the content of any possible source picture by use of the Intra_16x16 macroblock type.
NOTE – Since the range limit imposed on the elements dcYij of dcY is imposed after the right shift in Equation 8-256, a larger range of values must be supported in the decoder prior to the right shift.
63)	Subclause 8.5.7
In subclause 8.5.7, add the following two "NOTE"s at the end of the subclause:
NOTE – When entropy_coding_mode_flag is equal to 0 and QPY is less than 4, the range of values that can be represented for the elements cij of c is not sufficient to represent the full range of values of the elements dcCij of dcC that could be necessary to form a close approximation of the content of any possible source picture.
NOTE – Since the range limit imposed on the elements dcCij of dcC is imposed after the right shift in Equation 8-259, a larger range of values must be supported in the decoder prior to the right shift.
64)	Subclause 8.5.9
In subclause 8.5.9, replace the list of inputs at the beginning of the subclause with the following:
Inputs to this process are
-	luma4x4BlkIdx or chroma4x4BlkIdx
-	a 4x4 sample array u with elements uij which is either a luma or chroma block
65)	Subclause 8.6.1.2
In subclause 8.6.1.2, replace Equation 8-306 with the following:
dcijr = ( Sign( dcijs ) * ( Abs( dcijs ) * LevelScale2( QSC % 6, 0, 0) + ( 1 << ( 15 + QSC / 6 ) ) ) ) >> ( 16 + QSC / 6 )  
				       with i, j = 0, 1 	(8-306)
66)	Subclause 8.7
In subclause 8.7, make the following changes:
Replace the first paragraph with the following:
A conditional filtering shall be applied to all 4x4 block edges of a picture, except edges at the boundary of the picture and any edges for which the deblocking filter process is disabled by disable_deblocking_filter_idc, as specified below. This filtering process shall be performed on a macroblock basis after the completion of the picture construction process prior to deblocking filter process (as specified in subclauses 8.5 and 8.6) for the entire decoded picture, with all macroblocks in a picture processed in order of increasing macroblock addresses. 
Replace the first "NOTE" with the following:
NOTE – Prior to the operation of the deblocking filter process for each macroblock, the deblocked samples of the macroblock or macroblock pair above (if any) and the macroblock or macroblock pair to the left (if any) of the current macroblock are always available because the deblocking filter process is performed after the completion of the picture construction process prior to deblocking filter process for the entire decoded picture. 
Replace the section starting with "For both chroma components iCbCr = 0 and 1" up to but not including the section starting with "When filterInternalEdgesFlag is equal to 1" with the following
-	For both chroma components iCbCr = 0 and 1, the following applies.
-	When filterLeftMbEdgeFlag is equal to 1, the filtering of the left vertical chroma edge is specified as follows.
-	The process specified in subclause 8.7.1 is invoked with mbAddr, chromaEdgeFlag = 1, iCbCr, verticalEdgeFlag = 1, fieldModeFilteringFlag = 1, and (xEk, yEk) = (0, k) with k = 0..7 as input and S'C with C being replaced by Cb for iCbCr = 0 and C being replaced by Cr for iCbCr = 1 as output.
67)	Subclause 8.7.2.1
Replace subclause 8.7.2.1 with the following:
Derivation process for the luma content dependent boundary filtering strength
Inputs to this process are the input sample values p0 and q0 of a single set of samples across an edge that is to be filtered and verticalEdgeFlag.
Output of this process is the variable bS.
Let the variable mixedModeEdgeFlag be derived as follows.
-	If MbaffFrameFlag is equal to 1 and the samples p0 and q0  are in different macroblock pairs, one of which is a field macroblock pair and the other is a frame macroblock pair, mixedModeEdgeFlag is set equal to 1
-	Otherwise, mixedModeEdgeFlag is set equal to 0.
The variable bS is derived as follows.
-	If the block edge is also a macroblock edge and any of the following conditions are true, a value of bS equal to 4 shall be the output:
-	the samples p0 and q0 are both in frame macroblocks and either of the samples p0 or q0 is in a macroblock coded using an Intra macroblock prediction mode
-	the samples p0 and q0 are both in frame macroblocks and either of the samples p0 or q0 is in a macroblock that is in a slice with slice_type equal to SP or SI
-	MbaffFrameFlag is equal to 1 or field_pic_flag is equal to 1, and verticalEdgeFlag is equal to 1, and either of the samples p0 or q0 is in a macroblock coded using an Intra macroblock prediction mode.
-	MbaffFrameFlag is equal to 1 or field_pic_flag is equal to 1, and verticalEdgeFlag is equal to 1, and either of the samples p0 or q0 is in a macroblock that is in a slice with slice_type equal to SP or SI
-	Otherwise, if any of the following conditions are true, a value of bS equal to 3 shall be the output:
-	mixedModeEdgeFlag is equal to 0 and either of the samples p0 or q0 is in a macroblock coded using an Intra macroblock prediction mode
-	mixedModeEdgeFlag is equal to 0 and either of the samples p0 or q0 is in a macroblock that is in a slice with slice_type equal to SP or SI
-	mixedModeEdgeFlag is equal to 1, verticalEdgeFlag is equal to 0, and either of the samples p0 or q0 is in a macroblock coded using an Intra macroblock prediction mode
-	mixedModeEdgeFlag is equal to 1, verticalEdgeFlag is equal to 0, and either of the samples p0 or q0 is in a macroblock that is in a slice with slice_type equal to SP or SI
-	Otherwise, if the following condition is true, a value of bS equal to 2 shall be the output:
-	the 4x4 luma block containing sample p0 or the 4x4 luma block containing sample q0 contains non-zero transform coefficient levels
-	Otherwise, if any of the following conditions are true, a value of bS equal to 1 shall be the output:
-	mixedModeEdgeFlag is equal to 1
-	mixedModeEdgeFlag is equal to 0 and for the prediction of the macroblock/sub-macroblock partition containing the sample p0 different reference pictures or a different number of motion vectors are used than for the prediction of the macroblock/sub-macroblock partition containing the sample q0.
NOTE – The determination of whether the reference pictures used for the two macroblock/sub-macroblock partitions are the same or different is based only on which pictures are referenced, without regard to whether a prediction is formed using an index into list 0 or an index into list 1, and also without regard to whether or not the index position within a reference picture list is different or not.
-	mixedModeEdgeFlag is equal to 0 and one motion vector is used to predict the macroblock/sub-macroblock partition containing the sample p0 and one motion vector is used to predict the macroblock/sub-macroblock partition containing the sample q0 and the absolute difference between the horizontal or vertical component of the motion vectors used is greater than or equal to 4 in units of quarter luma frame samples.
-	mixedModeEdgeFlag is equal to 0 and two motion vectors and two different reference pictures are used to predict the macroblock/sub-macroblock partition containing the sample p0 and two motion vectors for the same two reference pictures are used to predict the macroblock/sub-macroblock partition containing the sample q0 and the absolute difference between the horizontal or vertical component of the two motion vectors used in the prediction of the two macroblock/sub-macroblock partitions for the same reference picture is greater than or equal to 4 in units of quarter luma frame samples.
-	mixedModeEdgeFlag is equal to 0 and two motion vectors for the same reference picture are used to predict the macroblock/sub-macroblock partition containing the sample p0 and two motion vectors for the same reference picture as used to predict the macroblock/sub-macroblock partition containing the sample p0 are used to predict the macroblock/sub-macroblock partition containing the sample q0 and both of the following conditions are true:
-	The absolute difference between the horizontal or vertical component of list 0 motion vectors used in the prediction of the two macroblock/sub-macroblock partitions is greater than or equal to 4 in quarter luma frame samples or the absolute difference between the horizontal or vertical component of the list 1 motion vectors used in the prediction of the two macroblock/sub-macroblock partitions is greater than or equal to 4 in units of quarter luma frame samples.
-	The absolute difference between the horizontal or vertical component of list 0 motion vector used in the prediction of the macroblock/sub-macroblock partition containing the sample p0 and the list 1 motion vector used in the prediction of the macroblock/sub-macroblock partition containing the sample q0 is greater than or equal to 4 in units of quarter luma frame samples or the absolute difference between the horizontal or vertical component of the list 1 motion vector used in the prediction of the macroblock/sub-macroblock partition containing the sample p0 and list 0 motion vector used in the prediction of the macroblock/sub-macroblock partition containing the sample q0 is greater than or equal to 4 in units of quarter luma frame samples.
NOTE – A vertical difference of 4 in units of quarter luma frame samples is a difference of 2 in units of quarter luma field samples
-	Otherwise, a value of bS equal to 0 shall be the output.
68)	Subclause 8.7.2.3
In the first sentence of subclause 8.7.2.3, replace "(i = 0..3)" with "(i = 0..2)".
69)	Subclause 9.2.1
In the "NOTE" in subclause 9.2.1, replace the two occurrences of "Intra 16x16" with "Intra_16x16" (replacing the space with an underline character):
70)	Subclause 9.3.3.1.1.6
In subclause 9.3.3.1.1.6, replace the paragraph starting with "The derivation process for neighbouring partitions" with the following two paragraphs:
Let currSubMbType be set equal to sub_mb_type[ mbPartIdx ].
The derivation process for neighbouring partitions specified in subclause 6.4.7.5 is invoked with mbPartIdx, currSubMbType, and subMbPartIdx = 0 as input and the output is assigned to mbAddrA\mbPartIdxA and mbAddrB\mbPartIdxB.
71)	Subclause 9.3.3.1.1.7
In subclause 9.3.3.1.1.7, replace the paragraph starting with"The derivation process for neighbouring partitions" with the following two paragraphs:
Let currSubMbType be set equal to sub_mb_type[ mbPartIdx ].
The derivation process for neighbouring partitions specified in subclause 6.4.7.5 is invoked with mbPartIdx, currSubMbType, and subMbPartIdx as input and the output is assigned to mbAddrA\mbPartIdxA\subMbPartIdxA and mbAddrB\mbPartIdxB\subMbPartIdxB.
72)	Subclause 9.3.3.2.4
In subclause 9.3.3.2.4, replace the (bullet-formatted) paragraph starting with "If codIOffset is greater than or equal to codIRange" with the following:
-	If codIOffset is greater than or equal to codIRange, the variable binVal is set equal to 1, no renormalization is carried out, and CABAC decoding is terminated. The last bit inserted in register codIOffset is equal to 1.  When decoding end_of_slice_flag, this last bit inserted in register codIOffset is interpreted as rbsp_stop_one_bit.
73)	Subclause 9.3.4.5
In subclause 9.3.4.5, replace the paragraph starting with "When the value of binVal to encode is equal to 1" with the following:
When the value of binVal to encode is equal to 1, CABAC encoding is terminated and the flushing procedure shown in Figure 9‑12 is applied. In this flushing procedure, the last bit written by WriteBits( B, N ) is equal to 1.  When encoding end_of_slice_flag, this last bit is interpreted as the rbsp_stop_one_bit.
74)	Subclause A.3.1
In subclause A.3.1, make the following changes
Replace item "m)" of the itemized list with the following:
m)	Number of motion vectors per two consecutive macroblocks in decoding order (also applying to the total from the last macroblock of a slice and the first macroblock of the next slice in decoding order) does not exceed MaxMvsPer2Mb, where MaxMvsPer2Mb is specified in Table A‑1. The number of motion vectors for each macroblock is value of the variable MvCnt after the completion of the intra or inter prediction process for the macroblock.
Replace the entry in Table A-1 for the row marked "5" of the column marked "Max decoded picture buffer size MaxDPB (1024 bytes)" that contains "41 310.0" with "41 400.0".
75)	Annex B
Replace entirety of Annex B with the following:
A	Annex B
Byte stream format
(This annex forms an integral part of this Recommendation | International Standard)
This annex specifies syntax and semantics of a byte stream format specified for use by applications that deliver some or all of the NAL unit stream as an ordered stream of bytes or bits within which the locations of NAL unit boundaries need to be identifiable from patterns in the data, such as ITU-T Recommendation H.222.0 | ISO/IEC 13818-1 systems or ITU‑T Recommendation H.320 systems.  For bit-oriented delivery, the bit order for the byte stream format is specified to start with the MSB of the first byte, proceed to the LSB of the first byte, followed by the MSB of the second byte, etc.
The byte stream format consists of a sequence of byte stream NAL unit syntax structures.  Each byte stream NAL unit syntax structure contains one start code prefix followed by one nal_unit( NumBytesInNALunit ) syntax structure.  It may (and under some circumstances, it shall) also contain an additional zero_byte syntax element.  It may also contain one or more additional trailing_zero_8bits syntax elements.  When it is the first byte stream NAL unit in the bitstream, it may also contain one or more additional leading_zero_8bits syntax elements.
B.1	Byte stream NAL unit syntax and semantics
B.1.1	Byte stream NAL unit syntax

byte_stream_nal_unit( NumBytesInNALunit ) {	C	Descriptor	
	while( next_bits( 24 )  !=  0x000001 &&
				next_bits( 32 ) != 0x00000001 )			
		leading_zero_8bits  /* equal to 0x00 */		f(8)	
	if( next_bits( 24 ) != 0x000001 )		f(8)	
		zero_byte  /* equal to 0x00 */		f(8)	
	if( more_data_in_byte_stream( ) ) {			
		start_code_prefix_one_3bytes  /* equal to 0x000001 */		f(24)	
		nal_unit( NumBytesInNALunit )			
	}			
	while( more_data_in_byte_stream &&
				next_bits( 32 ) != 0x00000001 )			
		trailing_zero_8bits  /* equal to 0x00 */		f(8)	
}			

B.1.2	Byte stream NAL unit semantics
The order of byte stream NAL units in the byte stream shall follow the decoding order of the NAL units contained in the byte stream NAL units (see subclause 7.4.1.2).  The content of each byte stream NAL unit is associated with the same access unit as the NAL unit contained in the byte stream NAL unit (see subclause 7.4.1.2.3).
leading_zero_8bits is a byte equal to 0x00.
NOTE – The leading_zero_8bits syntax element can only be present in the first byte stream NAL unit of the bitstream, because (as shown in the syntax diagram of subclause B.1.1) any bytes equal to 0x00 that follow a NAL unit syntax structure and precede the four-byte sequence 0x00000001 (which is to be interpreted as a zero_byte followed by a start_code_prefix_3bytes) will be considered to be trailing_zero_8bits syntax elements that are part of the preceding byte stream NAL unit.
zero_byte is a single byte equal to 0x00.
When any of the following conditions are fulfilled, the zero_byte syntax element shall be present.
–	the nal_unit_type within the nal_unit( ) is equal to 7 (sequence parameter set) or 8 (picture parameter set)
–	the byte stream NAL unit syntax structure contains the first NAL unit of an access unit in decoding order, as specified by subclause 7.4.1.2.3.
start_code_prefix_one_3bytes is a fixed-value sequence of 3 bytes equal to 0x000001.  This syntax element is called a start code prefix.
trailing_zero_8bits is a byte equal to 0x00.
B.2	Byte stream NAL unit decoding process
Input to this process consists of an ordered stream of bytes consisting of a sequence of byte stream NAL unit syntax structures.
Output of this process consists of a sequence of NAL unit syntax structures.
At the beginning of the decoding process, the decoder initialises its current position in the byte stream to the beginning of the byte stream.  It then extracts and discards each leading_zero_8bits syntax element (if present), moving the current position in the byte stream forward one byte at a time, until the current position in the byte stream is such that the next four bytes in the bitstream form the four-byte sequence 0x00000001.
The decoder then performs the following step-wise process repeatedly to extract and decode each NAL unit syntax structure in the byte stream until the end of the byte stream has been encountered (as determined by unspecified means) and the last NAL unit in the byte stream has been decoded:
When the next four bytes in the bitstream form the four-byte sequence 0x00000001, the next byte in the byte stream (which is a zero_byte syntax element) is extracted and discarded and the current position in the byte stream is set equal to the position of the byte following this discarded byte.
The next three-byte sequence in the byte stream (which is a start_code_prefix_3bytes) is extracted and discarded and the current position in the byte stream is set equal to the position of the byte following this three-byte sequence.
3.	NumBytesInNALunit is set equal to the number of bytes starting with the byte at the current position in the byte stream up to and including the last byte that precedes the location of any of the following conditions:
a.	A subsequent byte-aligned three-byte sequence equal to 0x000000, or
b.	A subsequent byte-aligned three-byte sequence equal to 0x000001, or
c.	The end of the byte stream, as determined by unspecified means.
1.	NumBytesInNALunit bytes are removed from the bitstream and the current position in the byte stream is advanced by NumBytesInNALunit bytes.  This sequence of bytes is nal_unit( NumBytesInNALunit ) and is decoded using the NAL unit decoding process.
2.	When the current position in the byte stream is not at the end of the byte stream (as determined by unspecified means) and the next bytes in the byte stream do not start with a three-byte sequence equal to 0x000001 and the next bytes in the byte stream are do not start with a four byte sequence equal to 0x00000001, the decoder extracts and discards each trailing_zero_8bits syntax element, moving the current position in the byte stream forward one byte at a time, until the current position in the byte stream is such that the next bytes in the byte stream form the four-byte sequence 0x00000001 or the end of the byte stream has been encountered (as determined by unspecified means).
B.3	Decoder byte-alignment recovery (informative)
This subclause does not form an integral part of this Recommendation | International Standard.
Many applications provide data to a decoder in a manner that is inherently byte aligned, and thus have no need for the bit-oriented byte alignment detection procedure described in this subclause.
A decoder is said to have byte-alignment with a bitstream when the decoder is able to determine whether or not the positions of data in the bitstream are byte-aligned. When a decoder does not have byte alignment with the encoder’s byte stream, the decoder may examine the incoming bitstream for the binary pattern '00000000 00000000 00000000 00000001' (31 consecutive bits equal to 0 followed by a bit equal to 1).  The bit immediately following this pattern is the first bit of an aligned byte following a start code prefix.  Upon detecting this pattern, the decoder will be byte aligned with the encoder and positioned at the start of a NAL unit in the byte stream.
Once byte aligned with the encoder, the decoder can examine the incoming byte stream for subsequent three-byte sequences 0x000001 and 0x000003.
When the three-byte sequence 0x000001 is detected, this is a start code prefix.
When the three-byte sequence 0x000003 is detected, the third byte (0x03) is an emulation_prevention_three_byte to be discarded as specified in subclause 7.4.1.
The byte alignment detection procedure described in this subclause is functionally equivalent to searching a byte sequence for three consecutive zero-valued bytes (0x000000), starting at any alignment position.  Detection of this pattern indicates that the next non-zero byte contains the end of a start code prefix (as a conforming byte stream cannot contain more than 23 consecutive zero-valued bits without containing 31 or more consecutive zero-valued bits, allowing detection of 0x000000 relative to any starting alignment position), and the first non-zero bit in that next non-zero byte is the last bit of an aligned byte and is the last bit of a start code prefix.
76)	Parent sublause of Annex C
Replace the sentence in Annex C that states "The CPB size (number of bits) is specified by CpbSize[ SchedSelIdx ] in Annex E. DPB size (number of frame buffers) is specified by max_dec_frame_buffering in Annex E." with " The CPB size (number of bits) is specified by CpbSize[ SchedSelIdx ] in Annex E. DPB size (number of frame buffers) is specified as Max( 1, max_dec_frame_buffering ) in Annex E."
77)	Subclause C.1.1
Replace subclause C.1.1 with the following:
C.1.1	Timing of bitstream arrival
The HRD may be initialised at any one of the buffering period SEI messages.  Prior to initialisation, the CPB is empty.
NOTE - After initialisation, the HRD is not initialised again by subsequent buffering period SEI messages.
The access unit that is associated with the buffering period SEI message that initializes the CPB is referred to as access unit 0. All other access units are referred to as access unit n with n being incremented by 1 for the next access unit in decoding order.
The time at which the first bit of access unit n begins to enter the CPB is referred to as the initial arrival time tai( n ).
The initial arrival time of access units is derived as follows.
-	If the access unit is access unit 0, tai( 0 ) = 0,
-	Otherwise (the access unit is access unit n with n > 0), the following applies.
When cbr_flag[ SchedSelIdx ] is equal to 1, the initial arrival time for access unit n, is equal to the final arrival time (which is derived below) of access unit n ‑ 1, i.e.
tai( n ) = taf( n – 1 )		(C-2)
If access unit n is not the first access unit of a subsequent buffering period, the initial arrival time for access unit n is derived by
tai( n ) = Max( taf( n – 1 ), tai,earliest( n ) )		(C-3)
where tai,earliest( n ) is given as follows
tai,earliest( n ) = tr,n( n ) – 
( initial_cpb_removal_delay[ SchedSelIdx ] + initial_cpb_removal_delay_offset[ SchedSelIdx ] ) ¸ 90000	(C-4)
with tr,n( n ) being the nominal removal time of access unit n from the CPB as specified in subclause C.1.2 and initial_cpb_removal_delay[ SchedSelIdx ] and initial_cpb_removal_delay_offset[ SchedSelIdx ] being specified in the previous buffering period SEI message.
NOTE – The constraint expressed in Equation C-3 applies both when cbr_flag[ SchedSelIdx ] is equal to 0 and when cbr_flag[ SchedSelIdx ] is equal to 1. When cbr_flag[ SchedSelIdx ] is equal to 1, Equations C-2 and C-3 together imply that tai,earliest( n ) must be less than or equal to taf( n – 1 ) for n > 0.
-	Otherwise (access unit n is the first access unit of a subsequent buffering period), the initial arrival time for the access unit n is derived by
tai( n ) = tr,n( n ) – ( initial_cpb_removal_delay[ SchedSelIdx ] ¸ 90000 )	(C-5)
with initial_cpb_removal_delay[ SchedSelIdx ] being specified in the buffering period SEI message associated with access unit n.
The final arrival time for access unit n is derived by
taf( n ) = tai( n ) + b( n ) ¸ BitRate[ SchedSelIdx ]		(C-6)
where b( n ) is the size in bits of access unit n, counting the bits of the Type I bitstream for Type I conformance or the bits of the Type II bitstream for Type II conformance. 
The values of SchedSelIdx, BitRate[ SchedSelIdx ], and CpbSize[ SchedSelIdx ] are constrained as follows.
-	If access unit n and access unit n - 1 are part of different coded video sequences and the content of the active sequence parameter sets of the two coded video sequences differ, the HSS selects a value SchedSelIdx1 of SchedSelIdx from among the values of SchedSelIdx provided for the coded video sequence containing access unit n that results in a BitRate[ SchedSelIdx1 ] or CpbSize[ SchedSelIdx1 ] for the second of the two coded video sequences (which contains access unit n).  The value of BitRate[ SchedSelIdx1 ] or CpbSize[ SchedSelIdx1 ] may differ from the value of BitRate[ SchedSelIdx0 ] or CpbSize[ SchedSelIdx0 ] for the value SchedSelIdx0 of SchedSelIdx  that was in use for the coded video sequence containing access unit n - 1. 
-	Otherwise, the HSS continues to operate with the previous values of SchedSelIdx, BitRate[ SchedSelIdx ] and CpbSize[ SchedSelIdx ].
When the HSS selects values of BitRate[ SchedSelIdx ] or CpbSize[ SchedSelIdx ] that differ from those of the previous access unit, the following applies.
-	the variable BitRate[ SchedSelIdx ] comes into effect at time tai( n )
-	the variable CpbSize[ SchedSelIdx ] comes into effect as follows.
-	If the new value of CpbSize[ SchedSelIdx ] exceeds the old CPB size, it comes into effect at time tai( n ), 
-	Otherwise, the new value of CpbSize[ SchedSelIdx ] comes into effect at the time tr( n ).
78)	Subclause C.1.2
Replace subclause C.1.2 with the following:
A.1.1	Timing of coded picture removal
For access unit 0, the nominal removal time of the access unit from the CPB is specified by
tr,n( 0 ) = initial_cpb_removal_delay[ SchedSelIdx ] ¸ 90000	(C-7)
For the first access unit of a buffering period that does not initialise the HRD, the nominal removal time of the access unit from the CPB is specified by
tr,n( n ) = tr,n ( nb ) + tc * cpb_removal_delay( n )		(C-8)
where tr,n( nb ) is the nominal removal time of the first access unit of the previous buffering period and cpb_removal_delay( n ) is the value of cpb_removal_delay specified in the picture timing SEI message associated with access unit n.
When an access unit n is the first access unit of a buffering period, nb is set equal to n at the removal time of access unit n.
The nominal removal time tr,n(n) of an access unit n that is not the first access unit of a buffering period is given by
tr,n( n ) = tr,n( nb ) + tc * cpb_removal_delay( n )		(C-9)
where tr,n( nb ) is the nominal removal time of the first access unit of the current buffering period and cpb_removal_delay( n ) is the value of cpb_removal_delay specified in the picture timing SEI message associated with access unit n.
The removal time of access unit n is specified as follows.
-	If low_delay_hrd_flag is equal to 0 or tr,n( n ) >= taf( n ), the removal time of access unit n is specified by 
tr( n ) = tr,n( n )		(C-10)
-	Otherwise (low_delay_hrd_flag is equal to 1 and tr,n( n ) < taf( n )), the removal time of access unit n is specified by
tr( n ) = tr,n( n ) + tc * Ceil( ( taf( n ) - tr,n( n ) ) ¸ tc ) 		(C-11)
NOTE – The latter case indicates that the size access unit n, b(n), is so large that it prevents removal at the nominal removal time.
79)	Subclause C.2.3
In subclause C.2.3, replace the phrase "the decoded reference picture marking process 8.2.5" with "the decoded reference picture marking process specified in subclause 8.2.5".
80)	Subclause C.3
Replace subclause C.3 with the following:
C.3	Bitstream conformance
A bitstream of coded data conforming to this Recommendation | International Standard fulfils the following requirements.
The bitstream is constructed according to the syntax, semantics, and constraints specified in this Recommendation | International Standard outside of this Annex.
The bitstream is tested by the HRD as specified below:
For Type I bitstreams, the number of tests carried out is equal to cpb_cnt_minus1 + 1 where cpb_cnt_minus1 for Type I conformance is the either the syntax element of hrd_parameters( ) following the vcl_hrd_parameters_present_flag or is determined by the application by other means not specified in this Recommendation | International Standard. One test is carried out for each bit rate and CPB size combination specified by hrd_parameters( ) following the vcl_hrd_parameters_present_flag.
For Type II bitstreams there are two sets of tests. The number of tests of the first set is equal to cpb_cnt_minus1 + 1 where cpb_cnt_minus1 for Type II conformance is either the syntax element of hrd_parameters( ) following the vcl_hrd_parameters_present_flag or is determined by the application by other means not specified in this Recommendation | International Standard. One test is carried out for each bit rate and CPB size combination. For these tests, only VCL and filler data NAL units are counted for the input bit rate and CPB storage.
The number of tests of the second set, for Type II bitstreams, is equal to cpb_cnt_minus1 + 1 where cpb_cnt_minus1 for Type II conformance is either the syntax element of hrd_parameters( ) following the nal_hrd_parameters_present_flag or is determined by the application by other means not specified in this Recommendation | International Standard. One test is carried out for each bit rate and CPB size combination specified by hrd_parameters( ) following the nal_hrd_parameters_present_flag. For these tests, all NAL units (of a Type II NAL unit stream) or all bytes (of a byte stream) are counted for the input bit rate and CPB storage.
For conforming bitstreams, all of the following conditions shall be fulfilled for each of the tests.
-	For each access unit n, with n>0, associated with a buffering period SEI message, with tg,90( n ) specified by
tg,90( n ) = 90000 * ( tr,n( n ) - taf( n - 1 ) )		(C-14)
The value of initial_cpb_removal_delay[ SchedSelIdx ] shall be constrained as follows.
-	If cbr_flag[ SchedSelIdx ] is equal to 0,
initial_cpb_removal_delay[ SchedSelIdx ] <= tg,90( n )	(C-15)
-	Otherwise (cbr_flag[ SchedSelIdx ] is equal to 1),
Floor( tg,90( n ) ) <= 	initial_cpb_removal_delay[ SchedSelIdx ] < tg,90( n ) + 1	(C-16)
NOTE – When cbr_flag[ SchedSelIdx ] is equal to 1 and the precision of the clocks used (the 90 kHz clock used for initial_cpb_removal_delay[ SchedSelIdx ], and the 1tc Hz clock used for cpb_removal_delay) differs, the constraint above may cause a small difference of CPB buffer fullness in the operation of the HRD after initialisation at different buffering period SEI messages. Encoders must take this into account, as the HRD may be initialised at any one of the buffering period SEI messages.
A CPB overflow is specified as the condition in which the total number of bits in the CPB is larger than the CPB buffer size. The CPB shall never overflow.   
A CPB underflow is specified as the condition in which tr,n(n) is less then taf(n). When low_delay_hrd_flag is equal to 0, the CPB shall never underflow. 
The nominal removal times of pictures from the CPB (starting from the second picture in decoding order), shall satisfy the constraints on tr,n(n) and tr(n) expressed in subclauses A.3.1 and A.3.2 for the profile and level specified in the bitstream.
Immediately after any decoded picture is added to the DPB, the fullness of the DPB shall be less than or equal to the DPB size as constrained by Annexes A, D, and E for the profile and level specified in the bitstream.
All reference pictures shall be present in the DPB when needed for prediction. Each picture shall be present in the DPB at its DPB output time unless it is not stored in the DPB at all, or is removed from the DPB before its output time by one of the processes specified in subclause C.2.
The value of to,dpb(n) as given by Equation C-13, which is the difference between the output time of a picture and that of the picture immediately following it in output order, shall satisfy the constraint expressed in subclause A.3.1 for the profile and level specified in the bitstream.
81)	Subclause C.4
In subclause C.4, make the following changes.
Replace the paragraph starting with "For output timing decoder conformance" with the following:
For output timing decoder conformance, the HSS operates as described above, with delivery schedules selected only from the subset of values of SchedSelIdx for which the bit rate and CPB size are restricted as specified in Annex A for the specified profile and level, or with "interpolated" delivery schedules as specified below for which the bit rate and CPB size are restricted as specified in Annex A. The same delivery schedule is used for both the HRD and DUT.
Replace the last paragraph, starting with "For the HRD, the CPB size" with the following paragraph:
For output order decoder conformance, the HRD CPB size is equal to CpbSize[ SchedSelIdx ] for the selected schedule and the DPB size is equal to MaxDpbSize. Removal time from the CPB for the HRD is equal to final bit arrival time and decoding is immediate. The operation of the DPB of this HRD is described below.
82)	Subclause D.2.2
In subclause D.2.2, replace the paragraph consisting of the single sentence "The size of the syntax element dpb_output_delay is given in bits by dpb_output_delay_length_minus1 + 1." with the following:
The size of the syntax element dpb_output_delay is given in bits by dpb_output_delay_length_minus1 + 1.  If max_dec_frame_buffering is equal to 0, dpb_output_delay shall be equal to 0.
83)	Subclause D.2.7
In subclause D.2.7, make the following changes.
Replace the sentence "The recovery point is specified as a count in units of access units subsequent to the current access unit at the position of the SEI message." with "The recovery point is specified as a count in units of frame_num increments subsequent to the frame_num of the current access unit at the position of the SEI message."
In the sentence starting with "changing_slice_group_idc", change the phrase "the period between the access unit associated with the recovery point SEI message (inclusive) and the specified recovery point (exclusive) in decoding order" to "the period between the access unit associated with the recovery point SEI message (inclusive) and the specified recovery point (inclusive) in decoding order".
84)	Subclause E.2.1
In subclause E.2.1, make the following changes.
Replace the section starting with the paragraph starting with "fixed_frame_rate_flag" up to and including the paragraph stating "The value computed for tfi,dpb( n ) shall be the same for all n > 0.   and equal to num_units_in_tick  time_scale." with the following:
fixed_frame_rate_flag equal to 1 indicates that the temporal distance between the HRD output times of any two consecutive pictures in output order is constrained as follows. fixed_frame_rate_flag equal to 0 indicates that no such constraints apply to the temporal distance between the HRD output times of any two consecutive pictures in output order.
When fixed_frame_rate_flag is equal to 1, for all n where n indicates the n-th picture in output order and picture n is not the last picture in the bitstream in output order, the value of tfi,dpb( n ) is specified  by
tfi,dpb( n )  =  to,dpb( n )  DeltaTfiDivisor	(E-10)
where to,dpb( n ) is specified in Equation C-13 and DeltaTfiDivisor is specified by Table E‑6 based on the value of pic_struct_present_flag, field_pic_flag, and pic_struct for picture n.  Entries marked "-" in Table E‑6 indicate a lack of dependence of DeltaTfiDivisor on the corresponding syntax element.
When fixed_frame_rate_flag is equal to 1, the value computed for tfi,dpb( n ) shall be the same for all n > 0 and shall be equal to num_units_in_tick  time_scale.
Replace the section starting with the paragraph starting with "The variable VclHrdBpPresentFlag is derived as follows" up to but not including the paragraph starting with "The variable CpbDpbDelaysPresentFlag is derived as follows" with the following:
The variable VclHrdBpPresentFlag is derived as follows.
-	If any of the following is true, the value of VclHrdBpPresentFlag shall be set equal to 1.
–	vcl_hrd_parameters_present_flag is present in the bitstream and is equal to 1
–	the need for presence of buffering periods for VCL HRD operation to be present in the bitstream in buffering period SEI messages is determined by the application, by some means not specified in this Recommendation | International Standard.
-	Otherwise, the value of VclHrdBpPresentFlag shall be set equal to 0.
Replace the paragraph starting with "log2_max_mv_length_horizontal and log2_max_mv_length_vertical" with the following:
log2_max_mv_length_horizontal and log2_max_mv_length_vertical indicate the maximum absolute value of a decoded horizontal and vertical motion vector component, respectively, in ¼ luma sample units, for all pictures in the sequence.  A value of n asserts that no value of a motion vector component shall exceed the range from -2n to 2n-1, inclusive, in units of ¼ luma sample displacement.  The value of log2_max_mv_length_horizontal shall be in the range of 0 to 16, inclusive. The value of log2_max_mv_length_vertical shall be in the range of 0 to 16, inclusive. When log2_max_mv_length_horizontal is not present, the values of log2_max_mv_length_horizontal and log2_max_mv_length_vertical shall be inferred to be equal to 16.
Replace the paragraph starting with "max_dec_frame_buffering" with the following:
max_dec_frame_buffering specifies the required size of the HRD decoded picture buffer (DPB) in units of frame buffers.  The sequence shall not require a decoded picture buffer with size of more than Max( 1, max_dec_frame_buffering ) frame buffers to enable the output of decoded pictures at the output times  specified by dpb_output_delay of the picture timing SEI messages. The value of max_dec_frame_buffering shall be in the range of num_ref_frames to MaxDpbSize (as specified in subclause A.3.1), inclusive. When the max_dec_frame_buffering syntax element is not present, the value of max_dec_frame_buffering shall be inferred to be equal to MaxDpbSize.
[– End – ]