Coverage Report

Created: 2026-01-16 07:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ffmpeg/libavcodec/cbs_mpeg2_syntax_template.c
Line
Count
Source
1
/*
2
 * This file is part of FFmpeg.
3
 *
4
 * FFmpeg is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
6
 * License as published by the Free Software Foundation; either
7
 * version 2.1 of the License, or (at your option) any later version.
8
 *
9
 * FFmpeg is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 * Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15
 * License along with FFmpeg; if not, write to the Free Software
16
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
 */
18
19
static int FUNC(sequence_header)(CodedBitstreamContext *ctx, RWContext *rw,
20
                                 MPEG2RawSequenceHeader *current)
21
39.5k
{
22
39.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
39.5k
    int err, i;
24
25
39.5k
    HEADER("Sequence Header");
26
27
39.5k
    ui(8,  sequence_header_code);
28
29
39.5k
    uir(12, horizontal_size_value);
30
27.0k
    uir(12, vertical_size_value);
31
32
24.8k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
24.8k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
24.8k
    uir(4, aspect_ratio_information);
36
23.2k
    uir(4, frame_rate_code);
37
22.9k
    ui(18, bit_rate_value);
38
39
18.3k
    marker_bit();
40
41
13.9k
    ui(10, vbv_buffer_size_value);
42
13.3k
    ui(1,  constrained_parameters_flag);
43
44
13.3k
    ui(1, load_intra_quantiser_matrix);
45
13.3k
    if (current->load_intra_quantiser_matrix) {
46
220k
        for (i = 0; i < 64; i++)
47
217k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
4.74k
    }
49
50
11.5k
    ui(1, load_non_intra_quantiser_matrix);
51
11.5k
    if (current->load_non_intra_quantiser_matrix) {
52
173k
        for (i = 0; i < 64; i++)
53
171k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
3.58k
    }
55
56
10.4k
    return 0;
57
11.5k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_header
Line
Count
Source
21
35.5k
{
22
35.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
35.5k
    int err, i;
24
25
35.5k
    HEADER("Sequence Header");
26
27
35.5k
    ui(8,  sequence_header_code);
28
29
35.5k
    uir(12, horizontal_size_value);
30
23.0k
    uir(12, vertical_size_value);
31
32
20.8k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
20.8k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
20.8k
    uir(4, aspect_ratio_information);
36
19.2k
    uir(4, frame_rate_code);
37
18.9k
    ui(18, bit_rate_value);
38
39
14.2k
    marker_bit();
40
41
9.92k
    ui(10, vbv_buffer_size_value);
42
9.32k
    ui(1,  constrained_parameters_flag);
43
44
9.32k
    ui(1, load_intra_quantiser_matrix);
45
9.32k
    if (current->load_intra_quantiser_matrix) {
46
173k
        for (i = 0; i < 64; i++)
47
171k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
4.02k
    }
49
50
7.58k
    ui(1, load_non_intra_quantiser_matrix);
51
7.58k
    if (current->load_non_intra_quantiser_matrix) {
52
124k
        for (i = 0; i < 64; i++)
53
123k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
2.83k
    }
55
56
6.44k
    return 0;
57
7.58k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_header
Line
Count
Source
21
4.01k
{
22
4.01k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
4.01k
    int err, i;
24
25
4.01k
    HEADER("Sequence Header");
26
27
4.01k
    ui(8,  sequence_header_code);
28
29
4.01k
    uir(12, horizontal_size_value);
30
4.01k
    uir(12, vertical_size_value);
31
32
4.01k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
4.01k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
4.01k
    uir(4, aspect_ratio_information);
36
4.01k
    uir(4, frame_rate_code);
37
4.01k
    ui(18, bit_rate_value);
38
39
4.01k
    marker_bit();
40
41
4.01k
    ui(10, vbv_buffer_size_value);
42
4.01k
    ui(1,  constrained_parameters_flag);
43
44
4.01k
    ui(1, load_intra_quantiser_matrix);
45
4.01k
    if (current->load_intra_quantiser_matrix) {
46
46.7k
        for (i = 0; i < 64; i++)
47
46.0k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
719
    }
49
50
4.01k
    ui(1, load_non_intra_quantiser_matrix);
51
4.01k
    if (current->load_non_intra_quantiser_matrix) {
52
49.0k
        for (i = 0; i < 64; i++)
53
48.2k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
754
    }
55
56
4.01k
    return 0;
57
4.01k
}
58
59
static int FUNC(user_data)(CodedBitstreamContext *ctx, RWContext *rw,
60
                           MPEG2RawUserData *current)
61
1.11M
{
62
1.11M
    size_t k;
63
1.11M
    int err;
64
65
1.11M
    HEADER("User Data");
66
67
1.11M
    ui(8, user_data_start_code);
68
69
#ifdef READ
70
592k
    k = get_bits_left(rw);
71
592k
    av_assert0(k % 8 == 0);
72
592k
    current->user_data_length = k /= 8;
73
592k
    if (k > 0) {
74
9.90k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
9.90k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
9.90k
        current->user_data = current->user_data_ref->data;
78
9.90k
    }
79
592k
#endif
80
81
14.9M
    for (k = 0; k < current->user_data_length; k++)
82
13.8M
        uis(8, user_data[k], 1, k);
83
84
1.11M
    return 0;
85
1.11M
}
cbs_mpeg2.c:cbs_mpeg2_read_user_data
Line
Count
Source
61
592k
{
62
592k
    size_t k;
63
592k
    int err;
64
65
592k
    HEADER("User Data");
66
67
592k
    ui(8, user_data_start_code);
68
69
592k
#ifdef READ
70
592k
    k = get_bits_left(rw);
71
592k
    av_assert0(k % 8 == 0);
72
592k
    current->user_data_length = k /= 8;
73
592k
    if (k > 0) {
74
9.90k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
9.90k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
9.90k
        current->user_data = current->user_data_ref->data;
78
9.90k
    }
79
592k
#endif
80
81
7.56M
    for (k = 0; k < current->user_data_length; k++)
82
6.97M
        uis(8, user_data[k], 1, k);
83
84
592k
    return 0;
85
592k
}
cbs_mpeg2.c:cbs_mpeg2_write_user_data
Line
Count
Source
61
524k
{
62
524k
    size_t k;
63
524k
    int err;
64
65
524k
    HEADER("User Data");
66
67
524k
    ui(8, user_data_start_code);
68
69
#ifdef READ
70
    k = get_bits_left(rw);
71
    av_assert0(k % 8 == 0);
72
    current->user_data_length = k /= 8;
73
    if (k > 0) {
74
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
        if (!current->user_data_ref)
76
            return AVERROR(ENOMEM);
77
        current->user_data = current->user_data_ref->data;
78
    }
79
#endif
80
81
7.36M
    for (k = 0; k < current->user_data_length; k++)
82
6.84M
        uis(8, user_data[k], 1, k);
83
84
524k
    return 0;
85
524k
}
86
87
static int FUNC(sequence_extension)(CodedBitstreamContext *ctx, RWContext *rw,
88
                                    MPEG2RawSequenceExtension *current)
89
20.5k
{
90
20.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
20.5k
    int err;
92
93
20.5k
    HEADER("Sequence Extension");
94
95
20.5k
    ui(8,  profile_and_level_indication);
96
20.0k
    ui(1,  progressive_sequence);
97
20.0k
    ui(2,  chroma_format);
98
20.0k
    ui(2,  horizontal_size_extension);
99
12.9k
    ui(2,  vertical_size_extension);
100
101
12.9k
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
12.9k
        current->horizontal_size_extension << 12;
103
12.9k
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
12.9k
        current->vertical_size_extension << 12;
105
12.9k
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
12.9k
    ui(12, bit_rate_extension);
108
12.5k
    marker_bit();
109
11.3k
    ui(8,  vbv_buffer_size_extension);
110
10.3k
    ui(1,  low_delay);
111
8.85k
    ui(2,  frame_rate_extension_n);
112
8.85k
    ui(5,  frame_rate_extension_d);
113
114
8.85k
    return 0;
115
8.85k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_extension
Line
Count
Source
89
19.8k
{
90
19.8k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
19.8k
    int err;
92
93
19.8k
    HEADER("Sequence Extension");
94
95
19.8k
    ui(8,  profile_and_level_indication);
96
19.3k
    ui(1,  progressive_sequence);
97
19.3k
    ui(2,  chroma_format);
98
19.3k
    ui(2,  horizontal_size_extension);
99
12.2k
    ui(2,  vertical_size_extension);
100
101
12.2k
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
12.2k
        current->horizontal_size_extension << 12;
103
12.2k
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
12.2k
        current->vertical_size_extension << 12;
105
12.2k
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
12.2k
    ui(12, bit_rate_extension);
108
11.8k
    marker_bit();
109
10.5k
    ui(8,  vbv_buffer_size_extension);
110
9.58k
    ui(1,  low_delay);
111
8.12k
    ui(2,  frame_rate_extension_n);
112
8.12k
    ui(5,  frame_rate_extension_d);
113
114
8.12k
    return 0;
115
8.12k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_extension
Line
Count
Source
89
736
{
90
736
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
736
    int err;
92
93
736
    HEADER("Sequence Extension");
94
95
736
    ui(8,  profile_and_level_indication);
96
736
    ui(1,  progressive_sequence);
97
736
    ui(2,  chroma_format);
98
736
    ui(2,  horizontal_size_extension);
99
736
    ui(2,  vertical_size_extension);
100
101
736
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
736
        current->horizontal_size_extension << 12;
103
736
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
736
        current->vertical_size_extension << 12;
105
736
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
736
    ui(12, bit_rate_extension);
108
736
    marker_bit();
109
736
    ui(8,  vbv_buffer_size_extension);
110
736
    ui(1,  low_delay);
111
736
    ui(2,  frame_rate_extension_n);
112
736
    ui(5,  frame_rate_extension_d);
113
114
736
    return 0;
115
736
}
116
117
static int FUNC(sequence_display_extension)(CodedBitstreamContext *ctx, RWContext *rw,
118
                                            MPEG2RawSequenceDisplayExtension *current)
119
8.09k
{
120
8.09k
    int err;
121
122
8.09k
    HEADER("Sequence Display Extension");
123
124
8.09k
    ui(3, video_format);
125
126
8.09k
    ui(1, colour_description);
127
8.09k
    if (current->colour_description) {
128
#ifdef READ
129
14.0k
#define READ_AND_PATCH(name) do { \
130
14.0k
        ui(8, name); \
131
14.0k
        if (current->name == 0) { \
132
2.85k
            current->name = 2; \
133
2.85k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
2.85k
                   "extension had the invalid value 0. Setting it to 2 " \
135
2.85k
                   "(meaning unknown) instead.\n", #name); \
136
2.85k
        } \
137
12.5k
    } while (0)
138
5.27k
        READ_AND_PATCH(colour_primaries);
139
4.65k
        READ_AND_PATCH(transfer_characteristics);
140
4.07k
        READ_AND_PATCH(matrix_coefficients);
141
4.07k
#undef READ_AND_PATCH
142
#else
143
728
        uir(8, colour_primaries);
144
728
        uir(8, transfer_characteristics);
145
728
        uir(8, matrix_coefficients);
146
728
#endif
147
2.09k
    } else {
148
2.09k
        infer(colour_primaries,         2);
149
2.09k
        infer(transfer_characteristics, 2);
150
2.09k
        infer(matrix_coefficients,      2);
151
2.09k
    }
152
153
6.67k
    ui(14, display_horizontal_size);
154
5.84k
    marker_bit();
155
5.07k
    ui(14, display_vertical_size);
156
157
4.60k
    return 0;
158
5.07k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_display_extension
Line
Count
Source
119
6.98k
{
120
6.98k
    int err;
121
122
6.98k
    HEADER("Sequence Display Extension");
123
124
6.98k
    ui(3, video_format);
125
126
6.98k
    ui(1, colour_description);
127
6.98k
    if (current->colour_description) {
128
5.27k
#ifdef READ
129
5.27k
#define READ_AND_PATCH(name) do { \
130
5.27k
        ui(8, name); \
131
5.27k
        if (current->name == 0) { \
132
5.27k
            current->name = 2; \
133
5.27k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
5.27k
                   "extension had the invalid value 0. Setting it to 2 " \
135
5.27k
                   "(meaning unknown) instead.\n", #name); \
136
5.27k
        } \
137
5.27k
    } while (0)
138
5.27k
        READ_AND_PATCH(colour_primaries);
139
4.65k
        READ_AND_PATCH(transfer_characteristics);
140
4.07k
        READ_AND_PATCH(matrix_coefficients);
141
4.07k
#undef READ_AND_PATCH
142
#else
143
        uir(8, colour_primaries);
144
        uir(8, transfer_characteristics);
145
        uir(8, matrix_coefficients);
146
#endif
147
4.07k
    } else {
148
1.70k
        infer(colour_primaries,         2);
149
1.70k
        infer(transfer_characteristics, 2);
150
1.70k
        infer(matrix_coefficients,      2);
151
1.70k
    }
152
153
5.55k
    ui(14, display_horizontal_size);
154
4.72k
    marker_bit();
155
3.96k
    ui(14, display_vertical_size);
156
157
3.48k
    return 0;
158
3.96k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_display_extension
Line
Count
Source
119
1.11k
{
120
1.11k
    int err;
121
122
1.11k
    HEADER("Sequence Display Extension");
123
124
1.11k
    ui(3, video_format);
125
126
1.11k
    ui(1, colour_description);
127
1.11k
    if (current->colour_description) {
128
#ifdef READ
129
#define READ_AND_PATCH(name) do { \
130
        ui(8, name); \
131
        if (current->name == 0) { \
132
            current->name = 2; \
133
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
                   "extension had the invalid value 0. Setting it to 2 " \
135
                   "(meaning unknown) instead.\n", #name); \
136
        } \
137
    } while (0)
138
        READ_AND_PATCH(colour_primaries);
139
        READ_AND_PATCH(transfer_characteristics);
140
        READ_AND_PATCH(matrix_coefficients);
141
#undef READ_AND_PATCH
142
#else
143
728
        uir(8, colour_primaries);
144
728
        uir(8, transfer_characteristics);
145
728
        uir(8, matrix_coefficients);
146
728
#endif
147
728
    } else {
148
389
        infer(colour_primaries,         2);
149
389
        infer(transfer_characteristics, 2);
150
389
        infer(matrix_coefficients,      2);
151
389
    }
152
153
1.11k
    ui(14, display_horizontal_size);
154
1.11k
    marker_bit();
155
1.11k
    ui(14, display_vertical_size);
156
157
1.11k
    return 0;
158
1.11k
}
159
160
static int FUNC(group_of_pictures_header)(CodedBitstreamContext *ctx, RWContext *rw,
161
                                          MPEG2RawGroupOfPicturesHeader *current)
162
3.13k
{
163
3.13k
    int err;
164
165
3.13k
    HEADER("Group of Pictures Header");
166
167
3.13k
    ui(8,  group_start_code);
168
169
3.13k
    ui(25, time_code);
170
2.60k
    ui(1,  closed_gop);
171
2.60k
    ui(1,  broken_link);
172
173
2.60k
    return 0;
174
2.60k
}
cbs_mpeg2.c:cbs_mpeg2_read_group_of_pictures_header
Line
Count
Source
162
2.77k
{
163
2.77k
    int err;
164
165
2.77k
    HEADER("Group of Pictures Header");
166
167
2.77k
    ui(8,  group_start_code);
168
169
2.77k
    ui(25, time_code);
170
2.25k
    ui(1,  closed_gop);
171
2.25k
    ui(1,  broken_link);
172
173
2.25k
    return 0;
174
2.25k
}
cbs_mpeg2.c:cbs_mpeg2_write_group_of_pictures_header
Line
Count
Source
162
357
{
163
357
    int err;
164
165
357
    HEADER("Group of Pictures Header");
166
167
357
    ui(8,  group_start_code);
168
169
357
    ui(25, time_code);
170
357
    ui(1,  closed_gop);
171
357
    ui(1,  broken_link);
172
173
357
    return 0;
174
357
}
175
176
static int FUNC(extra_information)(CodedBitstreamContext *ctx, RWContext *rw,
177
                                   MPEG2RawExtraInformation *current,
178
                                   const char *element_name, const char *marker_name)
179
138k
{
180
138k
    int err;
181
138k
    size_t k;
182
#ifdef READ
183
    GetBitContext start = *rw;
184
    uint8_t bit;
185
186
6.74M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.62M
        skip_bits(rw, 1 + 8);
188
    current->extra_information_length = k;
189
123k
    if (k > 0) {
190
28.8k
        *rw = start;
191
28.8k
        current->extra_information_ref =
192
28.8k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
28.8k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
28.8k
        current->extra_information = current->extra_information_ref->data;
196
28.8k
    }
197
123k
#endif
198
199
13.3M
    for (k = 0; k < current->extra_information_length; k++) {
200
13.1M
        bit(marker_name, 1);
201
13.1M
        xuia(8, element_name,
202
13.1M
             current->extra_information[k], 0, 255, 1, k);
203
13.1M
    }
204
205
135k
    bit(marker_name, 0);
206
207
134k
    return 0;
208
135k
}
cbs_mpeg2.c:cbs_mpeg2_read_extra_information
Line
Count
Source
179
123k
{
180
123k
    int err;
181
123k
    size_t k;
182
123k
#ifdef READ
183
123k
    GetBitContext start = *rw;
184
123k
    uint8_t bit;
185
186
6.74M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.62M
        skip_bits(rw, 1 + 8);
188
123k
    current->extra_information_length = k;
189
123k
    if (k > 0) {
190
28.8k
        *rw = start;
191
28.8k
        current->extra_information_ref =
192
28.8k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
28.8k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
28.8k
        current->extra_information = current->extra_information_ref->data;
196
28.8k
    }
197
123k
#endif
198
199
6.74M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.62M
        bit(marker_name, 1);
201
6.62M
        xuia(8, element_name,
202
6.62M
             current->extra_information[k], 0, 255, 1, k);
203
6.62M
    }
204
205
120k
    bit(marker_name, 0);
206
207
118k
    return 0;
208
120k
}
cbs_mpeg2.c:cbs_mpeg2_write_extra_information
Line
Count
Source
179
15.2k
{
180
15.2k
    int err;
181
15.2k
    size_t k;
182
#ifdef READ
183
    GetBitContext start = *rw;
184
    uint8_t bit;
185
186
    for (k = 0; nextbits(1, 1, bit); k++)
187
        skip_bits(rw, 1 + 8);
188
    current->extra_information_length = k;
189
    if (k > 0) {
190
        *rw = start;
191
        current->extra_information_ref =
192
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
        if (!current->extra_information_ref)
194
            return AVERROR(ENOMEM);
195
        current->extra_information = current->extra_information_ref->data;
196
    }
197
#endif
198
199
6.57M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.55M
        bit(marker_name, 1);
201
6.55M
        xuia(8, element_name,
202
6.55M
             current->extra_information[k], 0, 255, 1, k);
203
6.55M
    }
204
205
15.2k
    bit(marker_name, 0);
206
207
15.2k
    return 0;
208
15.2k
}
209
210
static int FUNC(picture_header)(CodedBitstreamContext *ctx, RWContext *rw,
211
                                MPEG2RawPictureHeader *current)
212
40.4k
{
213
40.4k
    int err;
214
215
40.4k
    HEADER("Picture Header");
216
217
40.4k
    ui(8,  picture_start_code);
218
219
40.4k
    ui(10, temporal_reference);
220
37.9k
    uir(3, picture_coding_type);
221
21.6k
    ui(16, vbv_delay);
222
223
19.0k
    if (current->picture_coding_type == 2 ||
224
15.1k
        current->picture_coding_type == 3) {
225
5.47k
        ui(1, full_pel_forward_vector);
226
5.47k
        ui(3, forward_f_code);
227
5.47k
    }
228
229
17.3k
    if (current->picture_coding_type == 3) {
230
1.51k
        ui(1, full_pel_backward_vector);
231
1.51k
        ui(3, backward_f_code);
232
1.51k
    }
233
234
17.3k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
17.3k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
16.6k
    return 0;
238
17.3k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_header
Line
Count
Source
212
39.4k
{
213
39.4k
    int err;
214
215
39.4k
    HEADER("Picture Header");
216
217
39.4k
    ui(8,  picture_start_code);
218
219
39.4k
    ui(10, temporal_reference);
220
37.0k
    uir(3, picture_coding_type);
221
20.7k
    ui(16, vbv_delay);
222
223
18.1k
    if (current->picture_coding_type == 2 ||
224
14.4k
        current->picture_coding_type == 3) {
225
4.96k
        ui(1, full_pel_forward_vector);
226
4.96k
        ui(3, forward_f_code);
227
4.96k
    }
228
229
16.4k
    if (current->picture_coding_type == 3) {
230
1.28k
        ui(1, full_pel_backward_vector);
231
1.28k
        ui(3, backward_f_code);
232
1.28k
    }
233
234
16.4k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
16.4k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
15.6k
    return 0;
238
16.4k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_header
Line
Count
Source
212
958
{
213
958
    int err;
214
215
958
    HEADER("Picture Header");
216
217
958
    ui(8,  picture_start_code);
218
219
958
    ui(10, temporal_reference);
220
958
    uir(3, picture_coding_type);
221
958
    ui(16, vbv_delay);
222
223
958
    if (current->picture_coding_type == 2 ||
224
678
        current->picture_coding_type == 3) {
225
506
        ui(1, full_pel_forward_vector);
226
506
        ui(3, forward_f_code);
227
506
    }
228
229
958
    if (current->picture_coding_type == 3) {
230
226
        ui(1, full_pel_backward_vector);
231
226
        ui(3, backward_f_code);
232
226
    }
233
234
958
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
958
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
958
    return 0;
238
958
}
239
240
static int FUNC(picture_coding_extension)(CodedBitstreamContext *ctx, RWContext *rw,
241
                                          MPEG2RawPictureCodingExtension *current)
242
12.5k
{
243
12.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
12.5k
    int err;
245
246
12.5k
    HEADER("Picture Coding Extension");
247
248
12.5k
    uir(4, f_code[0][0]);
249
12.2k
    uir(4, f_code[0][1]);
250
11.6k
    uir(4, f_code[1][0]);
251
10.2k
    uir(4, f_code[1][1]);
252
253
9.45k
    ui(2, intra_dc_precision);
254
9.45k
    ui(2, picture_structure);
255
9.45k
    ui(1, top_field_first);
256
9.15k
    ui(1, frame_pred_frame_dct);
257
9.15k
    ui(1, concealment_motion_vectors);
258
9.15k
    ui(1, q_scale_type);
259
9.15k
    ui(1, intra_vlc_format);
260
9.15k
    ui(1, alternate_scan);
261
9.15k
    ui(1, repeat_first_field);
262
9.15k
    ui(1, chroma_420_type);
263
9.15k
    ui(1, progressive_frame);
264
265
8.52k
    if (mpeg2->progressive_sequence) {
266
3.98k
        if (current->repeat_first_field) {
267
2.01k
            if (current->top_field_first)
268
817
                mpeg2->number_of_frame_centre_offsets = 3;
269
1.20k
            else
270
1.20k
                mpeg2->number_of_frame_centre_offsets = 2;
271
2.01k
        } else {
272
1.97k
            mpeg2->number_of_frame_centre_offsets = 1;
273
1.97k
        }
274
4.53k
    } else {
275
4.53k
        if (current->picture_structure == 1 || // Top field.
276
3.52k
            current->picture_structure == 2) { // Bottom field.
277
2.16k
            mpeg2->number_of_frame_centre_offsets = 1;
278
2.37k
        } else {
279
2.37k
            if (current->repeat_first_field)
280
1.24k
                mpeg2->number_of_frame_centre_offsets = 3;
281
1.13k
            else
282
1.13k
                mpeg2->number_of_frame_centre_offsets = 2;
283
2.37k
        }
284
4.53k
    }
285
286
8.52k
    ui(1, composite_display_flag);
287
8.52k
    if (current->composite_display_flag) {
288
3.89k
        ui(1, v_axis);
289
3.89k
        ui(3, field_sequence);
290
3.89k
        ui(1, sub_carrier);
291
3.89k
        ui(7, burst_amplitude);
292
3.63k
        ui(8, sub_carrier_phase);
293
3.63k
    }
294
295
7.78k
    return 0;
296
8.52k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_coding_extension
Line
Count
Source
242
10.5k
{
243
10.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
10.5k
    int err;
245
246
10.5k
    HEADER("Picture Coding Extension");
247
248
10.5k
    uir(4, f_code[0][0]);
249
10.3k
    uir(4, f_code[0][1]);
250
9.70k
    uir(4, f_code[1][0]);
251
8.35k
    uir(4, f_code[1][1]);
252
253
7.52k
    ui(2, intra_dc_precision);
254
7.52k
    ui(2, picture_structure);
255
7.52k
    ui(1, top_field_first);
256
7.22k
    ui(1, frame_pred_frame_dct);
257
7.22k
    ui(1, concealment_motion_vectors);
258
7.22k
    ui(1, q_scale_type);
259
7.22k
    ui(1, intra_vlc_format);
260
7.22k
    ui(1, alternate_scan);
261
7.22k
    ui(1, repeat_first_field);
262
7.22k
    ui(1, chroma_420_type);
263
7.22k
    ui(1, progressive_frame);
264
265
6.59k
    if (mpeg2->progressive_sequence) {
266
3.31k
        if (current->repeat_first_field) {
267
1.56k
            if (current->top_field_first)
268
596
                mpeg2->number_of_frame_centre_offsets = 3;
269
968
            else
270
968
                mpeg2->number_of_frame_centre_offsets = 2;
271
1.74k
        } else {
272
1.74k
            mpeg2->number_of_frame_centre_offsets = 1;
273
1.74k
        }
274
3.31k
    } else {
275
3.28k
        if (current->picture_structure == 1 || // Top field.
276
2.56k
            current->picture_structure == 2) { // Bottom field.
277
1.60k
            mpeg2->number_of_frame_centre_offsets = 1;
278
1.68k
        } else {
279
1.68k
            if (current->repeat_first_field)
280
853
                mpeg2->number_of_frame_centre_offsets = 3;
281
828
            else
282
828
                mpeg2->number_of_frame_centre_offsets = 2;
283
1.68k
        }
284
3.28k
    }
285
286
6.59k
    ui(1, composite_display_flag);
287
6.59k
    if (current->composite_display_flag) {
288
3.23k
        ui(1, v_axis);
289
3.23k
        ui(3, field_sequence);
290
3.23k
        ui(1, sub_carrier);
291
3.23k
        ui(7, burst_amplitude);
292
2.97k
        ui(8, sub_carrier_phase);
293
2.97k
    }
294
295
5.85k
    return 0;
296
6.59k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_coding_extension
Line
Count
Source
242
1.92k
{
243
1.92k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
1.92k
    int err;
245
246
1.92k
    HEADER("Picture Coding Extension");
247
248
1.92k
    uir(4, f_code[0][0]);
249
1.92k
    uir(4, f_code[0][1]);
250
1.92k
    uir(4, f_code[1][0]);
251
1.92k
    uir(4, f_code[1][1]);
252
253
1.92k
    ui(2, intra_dc_precision);
254
1.92k
    ui(2, picture_structure);
255
1.92k
    ui(1, top_field_first);
256
1.92k
    ui(1, frame_pred_frame_dct);
257
1.92k
    ui(1, concealment_motion_vectors);
258
1.92k
    ui(1, q_scale_type);
259
1.92k
    ui(1, intra_vlc_format);
260
1.92k
    ui(1, alternate_scan);
261
1.92k
    ui(1, repeat_first_field);
262
1.92k
    ui(1, chroma_420_type);
263
1.92k
    ui(1, progressive_frame);
264
265
1.92k
    if (mpeg2->progressive_sequence) {
266
679
        if (current->repeat_first_field) {
267
455
            if (current->top_field_first)
268
221
                mpeg2->number_of_frame_centre_offsets = 3;
269
234
            else
270
234
                mpeg2->number_of_frame_centre_offsets = 2;
271
455
        } else {
272
224
            mpeg2->number_of_frame_centre_offsets = 1;
273
224
        }
274
1.24k
    } else {
275
1.24k
        if (current->picture_structure == 1 || // Top field.
276
953
            current->picture_structure == 2) { // Bottom field.
277
558
            mpeg2->number_of_frame_centre_offsets = 1;
278
691
        } else {
279
691
            if (current->repeat_first_field)
280
389
                mpeg2->number_of_frame_centre_offsets = 3;
281
302
            else
282
302
                mpeg2->number_of_frame_centre_offsets = 2;
283
691
        }
284
1.24k
    }
285
286
1.92k
    ui(1, composite_display_flag);
287
1.92k
    if (current->composite_display_flag) {
288
658
        ui(1, v_axis);
289
658
        ui(3, field_sequence);
290
658
        ui(1, sub_carrier);
291
658
        ui(7, burst_amplitude);
292
658
        ui(8, sub_carrier_phase);
293
658
    }
294
295
1.92k
    return 0;
296
1.92k
}
297
298
static int FUNC(quant_matrix_extension)(CodedBitstreamContext *ctx, RWContext *rw,
299
                                        MPEG2RawQuantMatrixExtension *current)
300
11.8k
{
301
11.8k
    int err, i;
302
303
11.8k
    HEADER("Quant Matrix Extension");
304
305
11.8k
    ui(1, load_intra_quantiser_matrix);
306
11.8k
    if (current->load_intra_quantiser_matrix) {
307
119k
        for (i = 0; i < 64; i++)
308
117k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
2.93k
    }
310
311
10.6k
    ui(1, load_non_intra_quantiser_matrix);
312
10.6k
    if (current->load_non_intra_quantiser_matrix) {
313
115k
        for (i = 0; i < 64; i++)
314
113k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
2.42k
    }
316
317
9.72k
    ui(1, load_chroma_intra_quantiser_matrix);
318
9.72k
    if (current->load_chroma_intra_quantiser_matrix) {
319
128k
        for (i = 0; i < 64; i++)
320
126k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
2.81k
    }
322
323
8.80k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
8.80k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
110k
        for (i = 0; i < 64; i++)
326
109k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
3.32k
    }
328
329
7.06k
    return 0;
330
8.80k
}
cbs_mpeg2.c:cbs_mpeg2_read_quant_matrix_extension
Line
Count
Source
300
8.66k
{
301
8.66k
    int err, i;
302
303
8.66k
    HEADER("Quant Matrix Extension");
304
305
8.66k
    ui(1, load_intra_quantiser_matrix);
306
8.66k
    if (current->load_intra_quantiser_matrix) {
307
70.6k
        for (i = 0; i < 64; i++)
308
69.6k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
2.18k
    }
310
311
7.48k
    ui(1, load_non_intra_quantiser_matrix);
312
7.48k
    if (current->load_non_intra_quantiser_matrix) {
313
69.8k
        for (i = 0; i < 64; i++)
314
68.9k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
1.72k
    }
316
317
6.59k
    ui(1, load_chroma_intra_quantiser_matrix);
318
6.59k
    if (current->load_chroma_intra_quantiser_matrix) {
319
80.7k
        for (i = 0; i < 64; i++)
320
79.5k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
2.08k
    }
322
323
5.66k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
5.66k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
65.0k
        for (i = 0; i < 64; i++)
326
64.2k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
2.62k
    }
328
329
3.93k
    return 0;
330
5.66k
}
cbs_mpeg2.c:cbs_mpeg2_write_quant_matrix_extension
Line
Count
Source
300
3.13k
{
301
3.13k
    int err, i;
302
303
3.13k
    HEADER("Quant Matrix Extension");
304
305
3.13k
    ui(1, load_intra_quantiser_matrix);
306
3.13k
    if (current->load_intra_quantiser_matrix) {
307
49.0k
        for (i = 0; i < 64; i++)
308
48.2k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
754
    }
310
311
3.13k
    ui(1, load_non_intra_quantiser_matrix);
312
3.13k
    if (current->load_non_intra_quantiser_matrix) {
313
45.5k
        for (i = 0; i < 64; i++)
314
44.8k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
701
    }
316
317
3.13k
    ui(1, load_chroma_intra_quantiser_matrix);
318
3.13k
    if (current->load_chroma_intra_quantiser_matrix) {
319
47.5k
        for (i = 0; i < 64; i++)
320
46.8k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
732
    }
322
323
3.13k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
3.13k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
45.8k
        for (i = 0; i < 64; i++)
326
45.1k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
705
    }
328
329
3.13k
    return 0;
330
3.13k
}
331
332
static int FUNC(picture_display_extension)(CodedBitstreamContext *ctx, RWContext *rw,
333
                                           MPEG2RawPictureDisplayExtension *current)
334
6.10k
{
335
6.10k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
6.10k
    int err, i;
337
338
6.10k
    HEADER("Picture Display Extension");
339
340
9.17k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
5.62k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
4.84k
        marker_bit();
343
4.12k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
3.89k
        marker_bit();
345
3.89k
    }
346
347
3.54k
    return 0;
348
6.10k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_display_extension
Line
Count
Source
334
4.86k
{
335
4.86k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
4.86k
    int err, i;
337
338
4.86k
    HEADER("Picture Display Extension");
339
340
6.98k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
4.67k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
3.89k
        marker_bit();
343
3.16k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
2.93k
        marker_bit();
345
2.93k
    }
346
347
2.31k
    return 0;
348
4.86k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_display_extension
Line
Count
Source
334
1.23k
{
335
1.23k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
1.23k
    int err, i;
337
338
1.23k
    HEADER("Picture Display Extension");
339
340
2.18k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
956
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
956
        marker_bit();
343
956
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
956
        marker_bit();
345
956
    }
346
347
1.23k
    return 0;
348
1.23k
}
349
350
static int FUNC(extension_data)(CodedBitstreamContext *ctx, RWContext *rw,
351
                                MPEG2RawExtensionData *current)
352
60.0k
{
353
60.0k
    int err;
354
355
60.0k
    HEADER("Extension Data");
356
357
60.0k
    ui(8, extension_start_code);
358
60.0k
    ui(4, extension_start_code_identifier);
359
360
59.7k
    switch (current->extension_start_code_identifier) {
361
20.5k
    case MPEG2_EXTENSION_SEQUENCE:
362
20.5k
        return FUNC(sequence_extension)
363
20.5k
            (ctx, rw, &current->data.sequence);
364
8.09k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
8.09k
        return FUNC(sequence_display_extension)
366
8.09k
            (ctx, rw, &current->data.sequence_display);
367
11.8k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
11.8k
        return FUNC(quant_matrix_extension)
369
11.8k
            (ctx, rw, &current->data.quant_matrix);
370
6.10k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
6.10k
        return FUNC(picture_display_extension)
372
6.10k
            (ctx, rw, &current->data.picture_display);
373
12.5k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
12.5k
        return FUNC(picture_coding_extension)
375
12.5k
            (ctx, rw, &current->data.picture_coding);
376
655
    default:
377
655
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
655
               current->extension_start_code_identifier);
379
655
        return AVERROR_PATCHWELCOME;
380
59.7k
    }
381
59.7k
}
cbs_mpeg2.c:cbs_mpeg2_read_extension_data
Line
Count
Source
352
51.9k
{
353
51.9k
    int err;
354
355
51.9k
    HEADER("Extension Data");
356
357
51.9k
    ui(8, extension_start_code);
358
51.9k
    ui(4, extension_start_code_identifier);
359
360
51.6k
    switch (current->extension_start_code_identifier) {
361
19.8k
    case MPEG2_EXTENSION_SEQUENCE:
362
19.8k
        return FUNC(sequence_extension)
363
19.8k
            (ctx, rw, &current->data.sequence);
364
6.98k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
6.98k
        return FUNC(sequence_display_extension)
366
6.98k
            (ctx, rw, &current->data.sequence_display);
367
8.66k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
8.66k
        return FUNC(quant_matrix_extension)
369
8.66k
            (ctx, rw, &current->data.quant_matrix);
370
4.86k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
4.86k
        return FUNC(picture_display_extension)
372
4.86k
            (ctx, rw, &current->data.picture_display);
373
10.5k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
10.5k
        return FUNC(picture_coding_extension)
375
10.5k
            (ctx, rw, &current->data.picture_coding);
376
655
    default:
377
655
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
655
               current->extension_start_code_identifier);
379
655
        return AVERROR_PATCHWELCOME;
380
51.6k
    }
381
51.6k
}
cbs_mpeg2.c:cbs_mpeg2_write_extension_data
Line
Count
Source
352
8.14k
{
353
8.14k
    int err;
354
355
8.14k
    HEADER("Extension Data");
356
357
8.14k
    ui(8, extension_start_code);
358
8.14k
    ui(4, extension_start_code_identifier);
359
360
8.14k
    switch (current->extension_start_code_identifier) {
361
736
    case MPEG2_EXTENSION_SEQUENCE:
362
736
        return FUNC(sequence_extension)
363
736
            (ctx, rw, &current->data.sequence);
364
1.11k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
1.11k
        return FUNC(sequence_display_extension)
366
1.11k
            (ctx, rw, &current->data.sequence_display);
367
3.13k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
3.13k
        return FUNC(quant_matrix_extension)
369
3.13k
            (ctx, rw, &current->data.quant_matrix);
370
1.23k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
1.23k
        return FUNC(picture_display_extension)
372
1.23k
            (ctx, rw, &current->data.picture_display);
373
1.92k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
1.92k
        return FUNC(picture_coding_extension)
375
1.92k
            (ctx, rw, &current->data.picture_coding);
376
0
    default:
377
0
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
0
               current->extension_start_code_identifier);
379
0
        return AVERROR_PATCHWELCOME;
380
8.14k
    }
381
8.14k
}
382
383
static int FUNC(slice_header)(CodedBitstreamContext *ctx, RWContext *rw,
384
                              MPEG2RawSliceHeader *current)
385
173k
{
386
173k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
173k
    int err;
388
389
173k
    HEADER("Slice Header");
390
391
173k
    ui(8, slice_vertical_position);
392
393
173k
    if (mpeg2->vertical_size > 2800)
394
58.1k
        ui(3, slice_vertical_position_extension);
395
171k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
171k
    uir(5, quantiser_scale_code);
401
402
122k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
45.2k
        ui(1, slice_extension_flag);
404
45.2k
        ui(1, intra_slice);
405
45.2k
        ui(1, slice_picture_id_enable);
406
45.2k
        ui(6, slice_picture_id);
407
45.2k
    }
408
409
121k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
121k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
117k
    return 0;
413
121k
}
cbs_mpeg2.c:cbs_mpeg2_read_slice_header
Line
Count
Source
385
159k
{
386
159k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
159k
    int err;
388
389
159k
    HEADER("Slice Header");
390
391
159k
    ui(8, slice_vertical_position);
392
393
159k
    if (mpeg2->vertical_size > 2800)
394
57.6k
        ui(3, slice_vertical_position_extension);
395
157k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
157k
    uir(5, quantiser_scale_code);
401
402
108k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
43.8k
        ui(1, slice_extension_flag);
404
43.8k
        ui(1, intra_slice);
405
43.8k
        ui(1, slice_picture_id_enable);
406
43.8k
        ui(6, slice_picture_id);
407
43.8k
    }
408
409
106k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
106k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
103k
    return 0;
413
106k
}
cbs_mpeg2.c:cbs_mpeg2_write_slice_header
Line
Count
Source
385
14.3k
{
386
14.3k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
14.3k
    int err;
388
389
14.3k
    HEADER("Slice Header");
390
391
14.3k
    ui(8, slice_vertical_position);
392
393
14.3k
    if (mpeg2->vertical_size > 2800)
394
517
        ui(3, slice_vertical_position_extension);
395
14.3k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
14.3k
    uir(5, quantiser_scale_code);
401
402
14.3k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
1.35k
        ui(1, slice_extension_flag);
404
1.35k
        ui(1, intra_slice);
405
1.35k
        ui(1, slice_picture_id_enable);
406
1.35k
        ui(6, slice_picture_id);
407
1.35k
    }
408
409
14.3k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
14.3k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
14.3k
    return 0;
413
14.3k
}
414
415
static int FUNC(sequence_end)(CodedBitstreamContext *ctx, RWContext *rw,
416
                              MPEG2RawSequenceEnd *current)
417
1.88k
{
418
1.88k
    int err;
419
420
1.88k
    HEADER("Sequence End");
421
422
1.88k
    ui(8, sequence_end_code);
423
424
1.88k
    return 0;
425
1.88k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_end
Line
Count
Source
417
1.54k
{
418
1.54k
    int err;
419
420
1.54k
    HEADER("Sequence End");
421
422
1.54k
    ui(8, sequence_end_code);
423
424
1.54k
    return 0;
425
1.54k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_end
Line
Count
Source
417
343
{
418
343
    int err;
419
420
343
    HEADER("Sequence End");
421
422
343
    ui(8, sequence_end_code);
423
424
343
    return 0;
425
343
}