Ana səhifə

Contents Page


Yüklə 2.59 Mb.
səhifə7/35
tarix25.06.2016
ölçüsü2.59 Mb.
1   2   3   4   5   6   7   8   9   10   ...   35

6.3 Video bitstream semantics

6.3.1 Semantic rules for higher syntactic structures


This clause details the rules that govern the way in which the higher level syntactic elements may be combined together to produce a legal bitstream. Subsequent clauses detail the semantic meaning of all fields in the video bitstream.

Figure 6-15 illustrates the high level structure of the video bitstream.

The following semantic rules apply:

• If the first sequence_header() of the sequence is not followed by sequence_extension() then the stream shall conform to ISO/IEC 11172-2 and is not documented within this specification.

• If the first sequence_header() of a sequence is followed by a sequence_extension() then all subsequent occurrences of sequence_header() shall also be immediately followed by a sequence_extension().

• sequence_extension() shall only occur immediately following a sequence_header().

• Following a sequence_header() there shall be at least one coded picture before a repeat sequence_header() or a sequence_end_code. This implies that sequence_extension() shall not immediately precede a sequence_end_code.

• If sequence_extension() occurs in the bitstream then each picture_header() shall be followed immediately by a picture_coding_extension().

• sequence_end_code shall be positioned at the end of the bitstream such that, after decoding and frame reordering, there shall be no missing frames.

• picture_coding_extension() shall only occur immediately following a picture_header().

• The first coded frame following a group_of_pictures_header() shall be a coded I-frame.

A number of different extensions are defined in addition to sequence_extension() and picture_coding_extension(). The set of allowed extensions is different at each different point in the syntax where extensions are allowed. Table 6-2 defines a four bit extension_start_code_identifier for each extension.





Figure 6-15. High level bitstream organisation

At each point where extensions are allowed in the bitstream any number of the extensions from the defined allowable set may be included. However each type of extension shall not occur more than once.

In the case that a decoder encounters an extension with an extension identification that is described as “reserved” in this specification the decoder shall discard all subsequent data until the next start code. This requirement allows future definition of compatible extensions to this specification.

Table 6-2. extension_start_code_identifier codes.

extension_start_code_identifier

Name

0000

reserved

0001

Sequence Extension ID

1111


reserved


6.3.2 Video sequence


sequence_end_code -- The sequence_end_code is the bit string ‘000001B7’ in hexadecimal. It terminates a video sequence.

6.3.3 Sequence header


sequence_header_code -- The sequence_header_code is the bit string ‘000001B3’ in hexadecimal. It identifies the beginning of a sequence header.

horizontal_size_value -- This word forms the 12 least significant bits of horizontal_size.

vertical_size_value -- This word forms the 12 least significant bits of vertical_size.

horizontal_size -- The horizontal_size is a 14-bit unsigned integer, the 12 least significant bits are defined in horizontal_size_value, the 2 most significant bits are defined in horizontal_size_extension. The horizontal_size is the width of the displayable part of the luminance component of pictures in samples. The width of the encoded luminance component of pictures in macroblocks, mb_width, is (horizontal_size + 15)/16. The displayable part is left-aligned in the encoded pictures.

In order to avoid start code emulation horizontal_size_value shall not be zero. This precludes values of horizontal_size that are multiples of 4096.



vertical_size -- The vertical_size is a 14-bit unsigned integer, the 12 least significant bits are defined in vertical_size_value, the 2 most significant bits are defined in vertical_size_extension. The vertical_size is the height of the displayable part of the luminance component of the frame in lines.

In the case that progressive_sequence is ‘1’ the height of the encoded luminance component of frames in macroblocks, mb_height, is (vertical_size + 15)/16.

In the case that progressive_sequence is ‘0’ the height of the encoded luminance component of frame pictures in macroblocks, mb_height, is 2*((vertical_size + 31)/32). The height of the encoded luminance component of field pictures in macroblocks, mb_height, is ((vertical_size + 31)/32).

The displayable part is top-aligned in the encoded pictures.

In order to avoid start code emulation vertical_size_value shall not be zero. This precludes values of vertical_size that are multiples of 4096.

aspect_ratio_information -- This is a four-bit integer defined in the Table 6-3.

aspect_ratio_information either specifies that the “sample aspect ratio” (SAR) of the reconstructed frame is 1,0 (square samples) or alternatively it gives the “display aspect ratio” (DAR).

• If sequence_display_extension() is not present then it is intended that the entire reconstructed frame is intended to be mapped to the entire active region of the display. The sample aspect ratio may be calculated as follows:

NOTE - In this case horizontal_size and vertical_size are constrained by the SAR of the source and the DAR selected.

• If sequence_display_extension() is present then the sample aspect ratio may be calculated as follows:



Table 6-3 — aspect_ratio_information

aspect_ratio_information

Sample Aspect Ratio

DAR

0000

forbidden

forbidden

0001

1,0 (Square Sample)

-

1111


-

reserved

frame_rate_code -- This is a four-bit integer used to define frame_rate_value as shown in Table 6-4. frame_rate may be derived from frame_rate_value, frame_rate_extension_n and frame_rate_extension_d as follows:

frame_rate = frame_rate_value * (frame_rate_extension_n + 1) ÷ (frame_rate_extension_d + 1)

When an entry for the frame rate exists directly in Table 6-4, frame_rate_extension_n and frame_rate_extension_d shall be zero. (frame_rate_extension_n + 1) and (frame_rate_extension_d + 1) shall not have a common divisor greater than one.

If progressive_sequence is ‘1’ the period between two successive frames at the output of the decoding process is the reciprocal of the frame_rate. See Figure 7-18.

If progressive_sequence is ‘0’ the period between two successive fields at the output of the decoding process is half of the reciprocal of the frame_rate. See Figure 7-20.

The frame_rate signalled in the enhancement layer of temporal scalability is the combined frame rate after the temporal remultiplex operation if picture_mux_enable in the sequence_scalable_extension() is set to '1'.



Table 6-4 — frame_rate_value

frame_rate_code

frame_rate_value

0000

forbidden

0001

24 000÷1001 (23,976)

1111

reserved

bit_rate_value -- The lower 18 bits of bit_rate.

bit_rate -- This is a 30-bit integer. The lower 18 bits of the integer are in bit_rate_value and the upper 12 bits are in bit_rate_extension. bit_rate is measured in units of 400 bits/second, rounded upwards. The value zero is forbidden.

The bitrate specified bounds the maximum rate of operation of the VBV as defined in C.3 of annex C.

The VBV operates in one of two modes depending on the coded values in vbv_delay. In all cases (both constant and variable bitrate operation) the bitrate specified shall be the upper bound of the rate at which the coded data is supplied to the input of the VBV.

NOTE - Since constant bitrate operation is simply a special case of variable bitrate operation there is no requirement that the value of bit_rate is the actual bitrate at which the data is supplied. However it is recommended in the case of constant bitrate operation that bit_rate should represent the actual bitrate.



marker_bit -- This is one bit that shall be set to ‘1’. This bit prevents emulation of start codes.

vbv_buffer_size_value -- the lower 10 bits of vbv_buffer_size.

vbv_buffer_size -- vbv_buffer_size is an 18-bit integer. The lower 10 bits of the integer are in vbv_buffer_size_value and the upper 8 bits are in vbv_buffer_size_extension. The integer defines the size of the VBV (Video Buffering Verifier, see Annex C) buffer needed to decode the sequence. It is defined as:

B = 16 * 1024 * vbv_buffer_size

where B is the minimum VBV buffer size in bits required to decode the sequence (see Annex C).

constrained_parameters_flag -- This flag (used in ISO/IEC 11172-2) has no meaning in this specification and shall have the value ‘0’.

load_intra_quantiser_matrix -- See 6.3.11 “Quant matrix extension”

intra_quantiser_matrix -- See 6.3.11 “Quant matrix extension”

load_non_intra_quantiser_matrix -- See 6.3.11 “Quant matrix extension”

non_intra_quantiser_matrix -- See 6.3.11 “Quant matrix extension”

1   2   3   4   5   6   7   8   9   10   ...   35


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət