DirectX Video Acceleration for Windows Media Video Decoding 20
© 2010 Microsoft Corporation. All rights reserved.
When FH % M is not zero, samples at virtual positions (x = j, y = FH + 2 * i + 1)
for i = 0 to (M / 2) − 1 − ((FH % M) / 2) are created by setting each of these
samples to the value of the sample at position (x = j, y = FH − 1).
For i = 0 to 2 * M − 1, samples at virtual positions (x = j, y = FrameHeightInMBs
* M + 2 * i) are created by setting each of these samples to the value of the
sample at position (x = j, y = FrameHeightInMBs * M − 2).
For i = 0 to 2 * M − 1, samples at virtual positions (x = j, y = FrameHeightInMBs
* M + 2 * i + 1) are created by setting each of these samples to the value of the
sample at position (x = j, y = FrameHeightInMBs * M − 1).
Note This padding process may not be necessary in accelerators that can operate with
memory address clipping of the reference picture texture surface. The padding process
is defined here to provide a clear description of the necessary values in the decoded
picture, not as a prescription of how to obtain the results.
For MPEG-4 part 2, motion vector (MV) range clipping by the accelerator is always
necessary when the padding method is used for extrapolation in the accelerator,
because MPEG-4 part has no predefined limit to MV range. By comparison, the WMV 8
encoder limits the MV range such that 32 samples of luma padding are sufficient for the
decoding process. Therefore, if the accelerator uses 32 samples of luma padding and a
corresponding 16 samples of chroma padding, it should not strictly be necessary to clip
motion vector values. However, no such encoder limitation is specified for WMV 9, so in
this case the accelerator will always need to use MV range clipping when the padding
method is used for extrapolation.
Furthermore, when WMV 9 Simple or Main profile is used (that is, when iWMV9 is 1 and
iWMVA is 0), MV range clipping will be necessary even when the accelerator can
operate with memory address clipping. The reason is that these profiles include special
clipping behavior. (See section 3.2.14.4.)
Note The method described here pads reference frames by at least 32 luma samples
and 16 chroma samples horizontally, and at least 64 luma samples and 32 chroma
samples vertically. In fact, an accelerator can obtain equivalent results for progressive-
scan video sequences by padding reference frames by only 17 or 18 luma samples (8 or
9 chroma samples), and for interlaced-scan sequences by padding reference frames by
34 or 36 luma samples (16 or 18 chroma samples). In this case, the choice between the
alternate pairs of numbers (17 or 18; and 34 or 36) depends on whether fractional
remainders are set to zero when integer offsets are clipped. However, the larger amount
of padding is given for convenience of specification, and accelerators are responsible for
ensuring that their results are functionally equivalent to the specification.
Note Interlaced video sequences may contain individual progressive-scan pictures,
and those progressive-scan pictures may be used as references for decoding field
pictures or field-mode macroblocks of interlaced-scan pictures. For this reason, the
padding method specified here pads progressive frames by the same amount that it
pads interlaced frames.
Note The extrapolation padding of the reference frame is performed based on the
values of bPicStructure and bPicExtrapolation for the frame being referenced and not
based on these parameters for the picture being decoded.