Coverage Report

Created: 2026-02-14 06:59

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
37.0k
{
22
37.0k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
37.0k
    int err, i;
24
25
37.0k
    HEADER("Sequence Header");
26
27
37.0k
    ui(8,  sequence_header_code);
28
29
37.0k
    uir(12, horizontal_size_value);
30
23.8k
    uir(12, vertical_size_value);
31
32
21.5k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
21.5k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
21.5k
    uir(4, aspect_ratio_information);
36
19.3k
    uir(4, frame_rate_code);
37
18.8k
    ui(18, bit_rate_value);
38
39
13.9k
    marker_bit();
40
41
9.82k
    ui(10, vbv_buffer_size_value);
42
8.88k
    ui(1,  constrained_parameters_flag);
43
44
8.88k
    ui(1, load_intra_quantiser_matrix);
45
8.88k
    if (current->load_intra_quantiser_matrix) {
46
192k
        for (i = 0; i < 64; i++)
47
189k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
4.27k
    }
49
50
7.29k
    ui(1, load_non_intra_quantiser_matrix);
51
7.29k
    if (current->load_non_intra_quantiser_matrix) {
52
161k
        for (i = 0; i < 64; i++)
53
159k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
3.14k
    }
55
56
6.44k
    return 0;
57
7.29k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_header
Line
Count
Source
21
34.7k
{
22
34.7k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
34.7k
    int err, i;
24
25
34.7k
    HEADER("Sequence Header");
26
27
34.7k
    ui(8,  sequence_header_code);
28
29
34.7k
    uir(12, horizontal_size_value);
30
21.6k
    uir(12, vertical_size_value);
31
32
19.2k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
19.2k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
19.2k
    uir(4, aspect_ratio_information);
36
17.1k
    uir(4, frame_rate_code);
37
16.6k
    ui(18, bit_rate_value);
38
39
11.6k
    marker_bit();
40
41
7.59k
    ui(10, vbv_buffer_size_value);
42
6.66k
    ui(1,  constrained_parameters_flag);
43
44
6.66k
    ui(1, load_intra_quantiser_matrix);
45
6.66k
    if (current->load_intra_quantiser_matrix) {
46
146k
        for (i = 0; i < 64; i++)
47
144k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
3.56k
    }
49
50
5.07k
    ui(1, load_non_intra_quantiser_matrix);
51
5.07k
    if (current->load_non_intra_quantiser_matrix) {
52
113k
        for (i = 0; i < 64; i++)
53
111k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
2.39k
    }
55
56
4.21k
    return 0;
57
5.07k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_header
Line
Count
Source
21
2.22k
{
22
2.22k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
2.22k
    int err, i;
24
25
2.22k
    HEADER("Sequence Header");
26
27
2.22k
    ui(8,  sequence_header_code);
28
29
2.22k
    uir(12, horizontal_size_value);
30
2.22k
    uir(12, vertical_size_value);
31
32
2.22k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
2.22k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
2.22k
    uir(4, aspect_ratio_information);
36
2.22k
    uir(4, frame_rate_code);
37
2.22k
    ui(18, bit_rate_value);
38
39
2.22k
    marker_bit();
40
41
2.22k
    ui(10, vbv_buffer_size_value);
42
2.22k
    ui(1,  constrained_parameters_flag);
43
44
2.22k
    ui(1, load_intra_quantiser_matrix);
45
2.22k
    if (current->load_intra_quantiser_matrix) {
46
46.5k
        for (i = 0; i < 64; i++)
47
45.8k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
716
    }
49
50
2.22k
    ui(1, load_non_intra_quantiser_matrix);
51
2.22k
    if (current->load_non_intra_quantiser_matrix) {
52
48.8k
        for (i = 0; i < 64; i++)
53
48.0k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
751
    }
55
56
2.22k
    return 0;
57
2.22k
}
58
59
static int FUNC(user_data)(CodedBitstreamContext *ctx, RWContext *rw,
60
                           MPEG2RawUserData *current)
61
1.03M
{
62
1.03M
    size_t k;
63
1.03M
    int err;
64
65
1.03M
    HEADER("User Data");
66
67
1.03M
    ui(8, user_data_start_code);
68
69
#ifdef READ
70
541k
    k = get_bits_left(rw);
71
541k
    av_assert0(k % 8 == 0);
72
541k
    current->user_data_length = k /= 8;
73
541k
    if (k > 0) {
74
9.51k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
9.51k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
9.51k
        current->user_data = current->user_data_ref->data;
78
9.51k
    }
79
541k
#endif
80
81
13.7M
    for (k = 0; k < current->user_data_length; k++)
82
12.7M
        uis(8, user_data[k], 1, k);
83
84
1.03M
    return 0;
85
1.03M
}
cbs_mpeg2.c:cbs_mpeg2_read_user_data
Line
Count
Source
61
541k
{
62
541k
    size_t k;
63
541k
    int err;
64
65
541k
    HEADER("User Data");
66
67
541k
    ui(8, user_data_start_code);
68
69
541k
#ifdef READ
70
541k
    k = get_bits_left(rw);
71
541k
    av_assert0(k % 8 == 0);
72
541k
    current->user_data_length = k /= 8;
73
541k
    if (k > 0) {
74
9.51k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
9.51k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
9.51k
        current->user_data = current->user_data_ref->data;
78
9.51k
    }
79
541k
#endif
80
81
6.97M
    for (k = 0; k < current->user_data_length; k++)
82
6.43M
        uis(8, user_data[k], 1, k);
83
84
541k
    return 0;
85
541k
}
cbs_mpeg2.c:cbs_mpeg2_write_user_data
Line
Count
Source
61
494k
{
62
494k
    size_t k;
63
494k
    int err;
64
65
494k
    HEADER("User Data");
66
67
494k
    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
6.79M
    for (k = 0; k < current->user_data_length; k++)
82
6.29M
        uis(8, user_data[k], 1, k);
83
84
494k
    return 0;
85
494k
}
86
87
static int FUNC(sequence_extension)(CodedBitstreamContext *ctx, RWContext *rw,
88
                                    MPEG2RawSequenceExtension *current)
89
19.3k
{
90
19.3k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
19.3k
    int err;
92
93
19.3k
    HEADER("Sequence Extension");
94
95
19.3k
    ui(8,  profile_and_level_indication);
96
18.9k
    ui(1,  progressive_sequence);
97
18.9k
    ui(2,  chroma_format);
98
18.9k
    ui(2,  horizontal_size_extension);
99
11.7k
    ui(2,  vertical_size_extension);
100
101
11.7k
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
11.7k
        current->horizontal_size_extension << 12;
103
11.7k
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
11.7k
        current->vertical_size_extension << 12;
105
11.7k
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
11.7k
    ui(12, bit_rate_extension);
108
11.3k
    marker_bit();
109
10.0k
    ui(8,  vbv_buffer_size_extension);
110
9.02k
    ui(1,  low_delay);
111
8.66k
    ui(2,  frame_rate_extension_n);
112
8.66k
    ui(5,  frame_rate_extension_d);
113
114
8.66k
    return 0;
115
8.66k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_extension
Line
Count
Source
89
18.6k
{
90
18.6k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
18.6k
    int err;
92
93
18.6k
    HEADER("Sequence Extension");
94
95
18.6k
    ui(8,  profile_and_level_indication);
96
18.2k
    ui(1,  progressive_sequence);
97
18.2k
    ui(2,  chroma_format);
98
18.2k
    ui(2,  horizontal_size_extension);
99
11.0k
    ui(2,  vertical_size_extension);
100
101
11.0k
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
11.0k
        current->horizontal_size_extension << 12;
103
11.0k
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
11.0k
        current->vertical_size_extension << 12;
105
11.0k
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
11.0k
    ui(12, bit_rate_extension);
108
10.7k
    marker_bit();
109
9.36k
    ui(8,  vbv_buffer_size_extension);
110
8.34k
    ui(1,  low_delay);
111
7.99k
    ui(2,  frame_rate_extension_n);
112
7.99k
    ui(5,  frame_rate_extension_d);
113
114
7.99k
    return 0;
115
7.99k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_extension
Line
Count
Source
89
671
{
90
671
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
671
    int err;
92
93
671
    HEADER("Sequence Extension");
94
95
671
    ui(8,  profile_and_level_indication);
96
671
    ui(1,  progressive_sequence);
97
671
    ui(2,  chroma_format);
98
671
    ui(2,  horizontal_size_extension);
99
671
    ui(2,  vertical_size_extension);
100
101
671
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
671
        current->horizontal_size_extension << 12;
103
671
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
671
        current->vertical_size_extension << 12;
105
671
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
671
    ui(12, bit_rate_extension);
108
671
    marker_bit();
109
671
    ui(8,  vbv_buffer_size_extension);
110
671
    ui(1,  low_delay);
111
671
    ui(2,  frame_rate_extension_n);
112
671
    ui(5,  frame_rate_extension_d);
113
114
671
    return 0;
115
671
}
116
117
static int FUNC(sequence_display_extension)(CodedBitstreamContext *ctx, RWContext *rw,
118
                                            MPEG2RawSequenceDisplayExtension *current)
119
7.75k
{
120
7.75k
    int err;
121
122
7.75k
    HEADER("Sequence Display Extension");
123
124
7.75k
    ui(3, video_format);
125
126
7.75k
    ui(1, colour_description);
127
7.75k
    if (current->colour_description) {
128
#ifdef READ
129
14.2k
#define READ_AND_PATCH(name) do { \
130
14.2k
        ui(8, name); \
131
14.2k
        if (current->name == 0) { \
132
2.95k
            current->name = 2; \
133
2.95k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
2.95k
                   "extension had the invalid value 0. Setting it to 2 " \
135
2.95k
                   "(meaning unknown) instead.\n", #name); \
136
2.95k
        } \
137
12.8k
    } while (0)
138
5.32k
        READ_AND_PATCH(colour_primaries);
139
4.76k
        READ_AND_PATCH(transfer_characteristics);
140
4.16k
        READ_AND_PATCH(matrix_coefficients);
141
4.16k
#undef READ_AND_PATCH
142
#else
143
654
        uir(8, colour_primaries);
144
654
        uir(8, transfer_characteristics);
145
654
        uir(8, matrix_coefficients);
146
654
#endif
147
1.78k
    } else {
148
1.78k
        infer(colour_primaries,         2);
149
1.78k
        infer(transfer_characteristics, 2);
150
1.78k
        infer(matrix_coefficients,      2);
151
1.78k
    }
152
153
6.38k
    ui(14, display_horizontal_size);
154
5.51k
    marker_bit();
155
4.80k
    ui(14, display_vertical_size);
156
157
4.25k
    return 0;
158
4.80k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_display_extension
Line
Count
Source
119
6.83k
{
120
6.83k
    int err;
121
122
6.83k
    HEADER("Sequence Display Extension");
123
124
6.83k
    ui(3, video_format);
125
126
6.83k
    ui(1, colour_description);
127
6.83k
    if (current->colour_description) {
128
5.32k
#ifdef READ
129
5.32k
#define READ_AND_PATCH(name) do { \
130
5.32k
        ui(8, name); \
131
5.32k
        if (current->name == 0) { \
132
5.32k
            current->name = 2; \
133
5.32k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
5.32k
                   "extension had the invalid value 0. Setting it to 2 " \
135
5.32k
                   "(meaning unknown) instead.\n", #name); \
136
5.32k
        } \
137
5.32k
    } while (0)
138
5.32k
        READ_AND_PATCH(colour_primaries);
139
4.76k
        READ_AND_PATCH(transfer_characteristics);
140
4.16k
        READ_AND_PATCH(matrix_coefficients);
141
4.16k
#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.16k
    } else {
148
1.51k
        infer(colour_primaries,         2);
149
1.51k
        infer(transfer_characteristics, 2);
150
1.51k
        infer(matrix_coefficients,      2);
151
1.51k
    }
152
153
5.46k
    ui(14, display_horizontal_size);
154
4.60k
    marker_bit();
155
3.88k
    ui(14, display_vertical_size);
156
157
3.33k
    return 0;
158
3.88k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_display_extension
Line
Count
Source
119
917
{
120
917
    int err;
121
122
917
    HEADER("Sequence Display Extension");
123
124
917
    ui(3, video_format);
125
126
917
    ui(1, colour_description);
127
917
    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
654
        uir(8, colour_primaries);
144
654
        uir(8, transfer_characteristics);
145
654
        uir(8, matrix_coefficients);
146
654
#endif
147
654
    } else {
148
263
        infer(colour_primaries,         2);
149
263
        infer(transfer_characteristics, 2);
150
263
        infer(matrix_coefficients,      2);
151
263
    }
152
153
917
    ui(14, display_horizontal_size);
154
917
    marker_bit();
155
917
    ui(14, display_vertical_size);
156
157
917
    return 0;
158
917
}
159
160
static int FUNC(group_of_pictures_header)(CodedBitstreamContext *ctx, RWContext *rw,
161
                                          MPEG2RawGroupOfPicturesHeader *current)
162
3.21k
{
163
3.21k
    int err;
164
165
3.21k
    HEADER("Group of Pictures Header");
166
167
3.21k
    ui(8,  group_start_code);
168
169
3.21k
    ui(25, time_code);
170
2.77k
    ui(1,  closed_gop);
171
2.77k
    ui(1,  broken_link);
172
173
2.77k
    return 0;
174
2.77k
}
cbs_mpeg2.c:cbs_mpeg2_read_group_of_pictures_header
Line
Count
Source
162
2.85k
{
163
2.85k
    int err;
164
165
2.85k
    HEADER("Group of Pictures Header");
166
167
2.85k
    ui(8,  group_start_code);
168
169
2.85k
    ui(25, time_code);
170
2.42k
    ui(1,  closed_gop);
171
2.42k
    ui(1,  broken_link);
172
173
2.42k
    return 0;
174
2.42k
}
cbs_mpeg2.c:cbs_mpeg2_write_group_of_pictures_header
Line
Count
Source
162
351
{
163
351
    int err;
164
165
351
    HEADER("Group of Pictures Header");
166
167
351
    ui(8,  group_start_code);
168
169
351
    ui(25, time_code);
170
351
    ui(1,  closed_gop);
171
351
    ui(1,  broken_link);
172
173
351
    return 0;
174
351
}
175
176
static int FUNC(extra_information)(CodedBitstreamContext *ctx, RWContext *rw,
177
                                   MPEG2RawExtraInformation *current,
178
                                   const char *element_name, const char *marker_name)
179
141k
{
180
141k
    int err;
181
141k
    size_t k;
182
#ifdef READ
183
    GetBitContext start = *rw;
184
    uint8_t bit;
185
186
6.56M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.43M
        skip_bits(rw, 1 + 8);
188
    current->extra_information_length = k;
189
125k
    if (k > 0) {
190
28.2k
        *rw = start;
191
28.2k
        current->extra_information_ref =
192
28.2k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
28.2k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
28.2k
        current->extra_information = current->extra_information_ref->data;
196
28.2k
    }
197
125k
#endif
198
199
12.9M
    for (k = 0; k < current->extra_information_length; k++) {
200
12.8M
        bit(marker_name, 1);
201
12.8M
        xuia(8, element_name,
202
12.8M
             current->extra_information[k], 0, 255, 1, k);
203
12.8M
    }
204
205
138k
    bit(marker_name, 0);
206
207
137k
    return 0;
208
138k
}
cbs_mpeg2.c:cbs_mpeg2_read_extra_information
Line
Count
Source
179
125k
{
180
125k
    int err;
181
125k
    size_t k;
182
125k
#ifdef READ
183
125k
    GetBitContext start = *rw;
184
125k
    uint8_t bit;
185
186
6.56M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.43M
        skip_bits(rw, 1 + 8);
188
125k
    current->extra_information_length = k;
189
125k
    if (k > 0) {
190
28.2k
        *rw = start;
191
28.2k
        current->extra_information_ref =
192
28.2k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
28.2k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
28.2k
        current->extra_information = current->extra_information_ref->data;
196
28.2k
    }
197
125k
#endif
198
199
6.56M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.43M
        bit(marker_name, 1);
201
6.43M
        xuia(8, element_name,
202
6.43M
             current->extra_information[k], 0, 255, 1, k);
203
6.43M
    }
204
205
122k
    bit(marker_name, 0);
206
207
121k
    return 0;
208
122k
}
cbs_mpeg2.c:cbs_mpeg2_write_extra_information
Line
Count
Source
179
15.5k
{
180
15.5k
    int err;
181
15.5k
    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.38M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.37M
        bit(marker_name, 1);
201
6.37M
        xuia(8, element_name,
202
6.37M
             current->extra_information[k], 0, 255, 1, k);
203
6.37M
    }
204
205
15.5k
    bit(marker_name, 0);
206
207
15.5k
    return 0;
208
15.5k
}
209
210
static int FUNC(picture_header)(CodedBitstreamContext *ctx, RWContext *rw,
211
                                MPEG2RawPictureHeader *current)
212
39.0k
{
213
39.0k
    int err;
214
215
39.0k
    HEADER("Picture Header");
216
217
39.0k
    ui(8,  picture_start_code);
218
219
39.0k
    ui(10, temporal_reference);
220
36.7k
    uir(3, picture_coding_type);
221
21.4k
    ui(16, vbv_delay);
222
223
18.8k
    if (current->picture_coding_type == 2 ||
224
15.0k
        current->picture_coding_type == 3) {
225
5.44k
        ui(1, full_pel_forward_vector);
226
5.44k
        ui(3, forward_f_code);
227
5.44k
    }
228
229
17.3k
    if (current->picture_coding_type == 3) {
230
1.55k
        ui(1, full_pel_backward_vector);
231
1.55k
        ui(3, backward_f_code);
232
1.55k
    }
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.5k
    return 0;
238
17.3k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_header
Line
Count
Source
212
38.1k
{
213
38.1k
    int err;
214
215
38.1k
    HEADER("Picture Header");
216
217
38.1k
    ui(8,  picture_start_code);
218
219
38.1k
    ui(10, temporal_reference);
220
35.7k
    uir(3, picture_coding_type);
221
20.4k
    ui(16, vbv_delay);
222
223
17.9k
    if (current->picture_coding_type == 2 ||
224
14.3k
        current->picture_coding_type == 3) {
225
4.92k
        ui(1, full_pel_forward_vector);
226
4.92k
        ui(3, forward_f_code);
227
4.92k
    }
228
229
16.3k
    if (current->picture_coding_type == 3) {
230
1.33k
        ui(1, full_pel_backward_vector);
231
1.33k
        ui(3, backward_f_code);
232
1.33k
    }
233
234
16.3k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
16.3k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
15.5k
    return 0;
238
16.3k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_header
Line
Count
Source
212
960
{
213
960
    int err;
214
215
960
    HEADER("Picture Header");
216
217
960
    ui(8,  picture_start_code);
218
219
960
    ui(10, temporal_reference);
220
960
    uir(3, picture_coding_type);
221
960
    ui(16, vbv_delay);
222
223
960
    if (current->picture_coding_type == 2 ||
224
670
        current->picture_coding_type == 3) {
225
517
        ui(1, full_pel_forward_vector);
226
517
        ui(3, forward_f_code);
227
517
    }
228
229
960
    if (current->picture_coding_type == 3) {
230
227
        ui(1, full_pel_backward_vector);
231
227
        ui(3, backward_f_code);
232
227
    }
233
234
960
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
960
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
960
    return 0;
238
960
}
239
240
static int FUNC(picture_coding_extension)(CodedBitstreamContext *ctx, RWContext *rw,
241
                                          MPEG2RawPictureCodingExtension *current)
242
12.2k
{
243
12.2k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
12.2k
    int err;
245
246
12.2k
    HEADER("Picture Coding Extension");
247
248
12.2k
    uir(4, f_code[0][0]);
249
11.9k
    uir(4, f_code[0][1]);
250
11.3k
    uir(4, f_code[1][0]);
251
10.8k
    uir(4, f_code[1][1]);
252
253
9.97k
    ui(2, intra_dc_precision);
254
9.97k
    ui(2, picture_structure);
255
9.97k
    ui(1, top_field_first);
256
9.63k
    ui(1, frame_pred_frame_dct);
257
9.63k
    ui(1, concealment_motion_vectors);
258
9.63k
    ui(1, q_scale_type);
259
9.63k
    ui(1, intra_vlc_format);
260
9.63k
    ui(1, alternate_scan);
261
9.63k
    ui(1, repeat_first_field);
262
9.63k
    ui(1, chroma_420_type);
263
9.63k
    ui(1, progressive_frame);
264
265
8.97k
    if (mpeg2->progressive_sequence) {
266
4.18k
        if (current->repeat_first_field) {
267
1.98k
            if (current->top_field_first)
268
802
                mpeg2->number_of_frame_centre_offsets = 3;
269
1.18k
            else
270
1.18k
                mpeg2->number_of_frame_centre_offsets = 2;
271
2.19k
        } else {
272
2.19k
            mpeg2->number_of_frame_centre_offsets = 1;
273
2.19k
        }
274
4.79k
    } else {
275
4.79k
        if (current->picture_structure == 1 || // Top field.
276
3.68k
            current->picture_structure == 2) { // Bottom field.
277
2.09k
            mpeg2->number_of_frame_centre_offsets = 1;
278
2.69k
        } else {
279
2.69k
            if (current->repeat_first_field)
280
1.22k
                mpeg2->number_of_frame_centre_offsets = 3;
281
1.47k
            else
282
1.47k
                mpeg2->number_of_frame_centre_offsets = 2;
283
2.69k
        }
284
4.79k
    }
285
286
8.97k
    ui(1, composite_display_flag);
287
8.97k
    if (current->composite_display_flag) {
288
3.98k
        ui(1, v_axis);
289
3.98k
        ui(3, field_sequence);
290
3.98k
        ui(1, sub_carrier);
291
3.98k
        ui(7, burst_amplitude);
292
3.72k
        ui(8, sub_carrier_phase);
293
3.72k
    }
294
295
8.10k
    return 0;
296
8.97k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_coding_extension
Line
Count
Source
242
10.3k
{
243
10.3k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
10.3k
    int err;
245
246
10.3k
    HEADER("Picture Coding Extension");
247
248
10.3k
    uir(4, f_code[0][0]);
249
10.0k
    uir(4, f_code[0][1]);
250
9.45k
    uir(4, f_code[1][0]);
251
8.92k
    uir(4, f_code[1][1]);
252
253
8.10k
    ui(2, intra_dc_precision);
254
8.10k
    ui(2, picture_structure);
255
8.10k
    ui(1, top_field_first);
256
7.75k
    ui(1, frame_pred_frame_dct);
257
7.75k
    ui(1, concealment_motion_vectors);
258
7.75k
    ui(1, q_scale_type);
259
7.75k
    ui(1, intra_vlc_format);
260
7.75k
    ui(1, alternate_scan);
261
7.75k
    ui(1, repeat_first_field);
262
7.75k
    ui(1, chroma_420_type);
263
7.75k
    ui(1, progressive_frame);
264
265
7.10k
    if (mpeg2->progressive_sequence) {
266
3.52k
        if (current->repeat_first_field) {
267
1.54k
            if (current->top_field_first)
268
583
                mpeg2->number_of_frame_centre_offsets = 3;
269
961
            else
270
961
                mpeg2->number_of_frame_centre_offsets = 2;
271
1.98k
        } else {
272
1.98k
            mpeg2->number_of_frame_centre_offsets = 1;
273
1.98k
        }
274
3.57k
    } else {
275
3.57k
        if (current->picture_structure == 1 || // Top field.
276
2.75k
            current->picture_structure == 2) { // Bottom field.
277
1.56k
            mpeg2->number_of_frame_centre_offsets = 1;
278
2.00k
        } else {
279
2.00k
            if (current->repeat_first_field)
280
832
                mpeg2->number_of_frame_centre_offsets = 3;
281
1.17k
            else
282
1.17k
                mpeg2->number_of_frame_centre_offsets = 2;
283
2.00k
        }
284
3.57k
    }
285
286
7.10k
    ui(1, composite_display_flag);
287
7.10k
    if (current->composite_display_flag) {
288
3.34k
        ui(1, v_axis);
289
3.34k
        ui(3, field_sequence);
290
3.34k
        ui(1, sub_carrier);
291
3.34k
        ui(7, burst_amplitude);
292
3.08k
        ui(8, sub_carrier_phase);
293
3.08k
    }
294
295
6.22k
    return 0;
296
7.10k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_coding_extension
Line
Count
Source
242
1.87k
{
243
1.87k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
1.87k
    int err;
245
246
1.87k
    HEADER("Picture Coding Extension");
247
248
1.87k
    uir(4, f_code[0][0]);
249
1.87k
    uir(4, f_code[0][1]);
250
1.87k
    uir(4, f_code[1][0]);
251
1.87k
    uir(4, f_code[1][1]);
252
253
1.87k
    ui(2, intra_dc_precision);
254
1.87k
    ui(2, picture_structure);
255
1.87k
    ui(1, top_field_first);
256
1.87k
    ui(1, frame_pred_frame_dct);
257
1.87k
    ui(1, concealment_motion_vectors);
258
1.87k
    ui(1, q_scale_type);
259
1.87k
    ui(1, intra_vlc_format);
260
1.87k
    ui(1, alternate_scan);
261
1.87k
    ui(1, repeat_first_field);
262
1.87k
    ui(1, chroma_420_type);
263
1.87k
    ui(1, progressive_frame);
264
265
1.87k
    if (mpeg2->progressive_sequence) {
266
655
        if (current->repeat_first_field) {
267
438
            if (current->top_field_first)
268
219
                mpeg2->number_of_frame_centre_offsets = 3;
269
219
            else
270
219
                mpeg2->number_of_frame_centre_offsets = 2;
271
438
        } else {
272
217
            mpeg2->number_of_frame_centre_offsets = 1;
273
217
        }
274
1.21k
    } else {
275
1.21k
        if (current->picture_structure == 1 || // Top field.
276
928
            current->picture_structure == 2) { // Bottom field.
277
526
            mpeg2->number_of_frame_centre_offsets = 1;
278
693
        } else {
279
693
            if (current->repeat_first_field)
280
391
                mpeg2->number_of_frame_centre_offsets = 3;
281
302
            else
282
302
                mpeg2->number_of_frame_centre_offsets = 2;
283
693
        }
284
1.21k
    }
285
286
1.87k
    ui(1, composite_display_flag);
287
1.87k
    if (current->composite_display_flag) {
288
638
        ui(1, v_axis);
289
638
        ui(3, field_sequence);
290
638
        ui(1, sub_carrier);
291
638
        ui(7, burst_amplitude);
292
638
        ui(8, sub_carrier_phase);
293
638
    }
294
295
1.87k
    return 0;
296
1.87k
}
297
298
static int FUNC(quant_matrix_extension)(CodedBitstreamContext *ctx, RWContext *rw,
299
                                        MPEG2RawQuantMatrixExtension *current)
300
12.1k
{
301
12.1k
    int err, i;
302
303
12.1k
    HEADER("Quant Matrix Extension");
304
305
12.1k
    ui(1, load_intra_quantiser_matrix);
306
12.1k
    if (current->load_intra_quantiser_matrix) {
307
116k
        for (i = 0; i < 64; i++)
308
114k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
2.63k
    }
310
311
11.2k
    ui(1, load_non_intra_quantiser_matrix);
312
11.2k
    if (current->load_non_intra_quantiser_matrix) {
313
120k
        for (i = 0; i < 64; i++)
314
119k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
2.68k
    }
316
317
10.0k
    ui(1, load_chroma_intra_quantiser_matrix);
318
10.0k
    if (current->load_chroma_intra_quantiser_matrix) {
319
134k
        for (i = 0; i < 64; i++)
320
132k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
2.92k
    }
322
323
9.11k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
9.11k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
111k
        for (i = 0; i < 64; i++)
326
110k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
3.61k
    }
328
329
7.08k
    return 0;
330
9.11k
}
cbs_mpeg2.c:cbs_mpeg2_read_quant_matrix_extension
Line
Count
Source
300
8.99k
{
301
8.99k
    int err, i;
302
303
8.99k
    HEADER("Quant Matrix Extension");
304
305
8.99k
    ui(1, load_intra_quantiser_matrix);
306
8.99k
    if (current->load_intra_quantiser_matrix) {
307
66.8k
        for (i = 0; i < 64; i++)
308
65.8k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
1.87k
    }
310
311
8.07k
    ui(1, load_non_intra_quantiser_matrix);
312
8.07k
    if (current->load_non_intra_quantiser_matrix) {
313
75.3k
        for (i = 0; i < 64; i++)
314
74.5k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
1.98k
    }
316
317
6.90k
    ui(1, load_chroma_intra_quantiser_matrix);
318
6.90k
    if (current->load_chroma_intra_quantiser_matrix) {
319
84.5k
        for (i = 0; i < 64; i++)
320
83.3k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
2.15k
    }
322
323
5.93k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
5.93k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
66.0k
        for (i = 0; i < 64; i++)
326
65.1k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
2.90k
    }
328
329
3.90k
    return 0;
330
5.93k
}
cbs_mpeg2.c:cbs_mpeg2_write_quant_matrix_extension
Line
Count
Source
300
3.17k
{
301
3.17k
    int err, i;
302
303
3.17k
    HEADER("Quant Matrix Extension");
304
305
3.17k
    ui(1, load_intra_quantiser_matrix);
306
3.17k
    if (current->load_intra_quantiser_matrix) {
307
49.3k
        for (i = 0; i < 64; i++)
308
48.5k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
759
    }
310
311
3.17k
    ui(1, load_non_intra_quantiser_matrix);
312
3.17k
    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
700
    }
316
317
3.17k
    ui(1, load_chroma_intra_quantiser_matrix);
318
3.17k
    if (current->load_chroma_intra_quantiser_matrix) {
319
49.9k
        for (i = 0; i < 64; i++)
320
49.2k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
769
    }
322
323
3.17k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
3.17k
    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.17k
    return 0;
330
3.17k
}
331
332
static int FUNC(picture_display_extension)(CodedBitstreamContext *ctx, RWContext *rw,
333
                                           MPEG2RawPictureDisplayExtension *current)
334
6.28k
{
335
6.28k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
6.28k
    int err, i;
337
338
6.28k
    HEADER("Picture Display Extension");
339
340
9.40k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
6.09k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
5.19k
        marker_bit();
343
4.40k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
3.93k
        marker_bit();
345
3.93k
    }
346
347
3.30k
    return 0;
348
6.28k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_display_extension
Line
Count
Source
334
5.09k
{
335
5.09k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
5.09k
    int err, i;
337
338
5.09k
    HEADER("Picture Display Extension");
339
340
7.28k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
5.17k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
4.26k
        marker_bit();
343
3.48k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
3.00k
        marker_bit();
345
3.00k
    }
346
347
2.11k
    return 0;
348
5.09k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_display_extension
Line
Count
Source
334
1.18k
{
335
1.18k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
1.18k
    int err, i;
337
338
1.18k
    HEADER("Picture Display Extension");
339
340
2.11k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
926
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
926
        marker_bit();
343
926
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
926
        marker_bit();
345
926
    }
346
347
1.18k
    return 0;
348
1.18k
}
349
350
static int FUNC(extension_data)(CodedBitstreamContext *ctx, RWContext *rw,
351
                                MPEG2RawExtensionData *current)
352
58.6k
{
353
58.6k
    int err;
354
355
58.6k
    HEADER("Extension Data");
356
357
58.6k
    ui(8, extension_start_code);
358
58.6k
    ui(4, extension_start_code_identifier);
359
360
58.3k
    switch (current->extension_start_code_identifier) {
361
19.3k
    case MPEG2_EXTENSION_SEQUENCE:
362
19.3k
        return FUNC(sequence_extension)
363
19.3k
            (ctx, rw, &current->data.sequence);
364
7.75k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
7.75k
        return FUNC(sequence_display_extension)
366
7.75k
            (ctx, rw, &current->data.sequence_display);
367
12.1k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
12.1k
        return FUNC(quant_matrix_extension)
369
12.1k
            (ctx, rw, &current->data.quant_matrix);
370
6.28k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
6.28k
        return FUNC(picture_display_extension)
372
6.28k
            (ctx, rw, &current->data.picture_display);
373
12.2k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
12.2k
        return FUNC(picture_coding_extension)
375
12.2k
            (ctx, rw, &current->data.picture_coding);
376
577
    default:
377
577
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
577
               current->extension_start_code_identifier);
379
577
        return AVERROR_PATCHWELCOME;
380
58.3k
    }
381
58.3k
}
cbs_mpeg2.c:cbs_mpeg2_read_extension_data
Line
Count
Source
352
50.8k
{
353
50.8k
    int err;
354
355
50.8k
    HEADER("Extension Data");
356
357
50.8k
    ui(8, extension_start_code);
358
50.8k
    ui(4, extension_start_code_identifier);
359
360
50.5k
    switch (current->extension_start_code_identifier) {
361
18.6k
    case MPEG2_EXTENSION_SEQUENCE:
362
18.6k
        return FUNC(sequence_extension)
363
18.6k
            (ctx, rw, &current->data.sequence);
364
6.83k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
6.83k
        return FUNC(sequence_display_extension)
366
6.83k
            (ctx, rw, &current->data.sequence_display);
367
8.99k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
8.99k
        return FUNC(quant_matrix_extension)
369
8.99k
            (ctx, rw, &current->data.quant_matrix);
370
5.09k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
5.09k
        return FUNC(picture_display_extension)
372
5.09k
            (ctx, rw, &current->data.picture_display);
373
10.3k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
10.3k
        return FUNC(picture_coding_extension)
375
10.3k
            (ctx, rw, &current->data.picture_coding);
376
577
    default:
377
577
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
577
               current->extension_start_code_identifier);
379
577
        return AVERROR_PATCHWELCOME;
380
50.5k
    }
381
50.5k
}
cbs_mpeg2.c:cbs_mpeg2_write_extension_data
Line
Count
Source
352
7.82k
{
353
7.82k
    int err;
354
355
7.82k
    HEADER("Extension Data");
356
357
7.82k
    ui(8, extension_start_code);
358
7.82k
    ui(4, extension_start_code_identifier);
359
360
7.82k
    switch (current->extension_start_code_identifier) {
361
671
    case MPEG2_EXTENSION_SEQUENCE:
362
671
        return FUNC(sequence_extension)
363
671
            (ctx, rw, &current->data.sequence);
364
917
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
917
        return FUNC(sequence_display_extension)
366
917
            (ctx, rw, &current->data.sequence_display);
367
3.17k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
3.17k
        return FUNC(quant_matrix_extension)
369
3.17k
            (ctx, rw, &current->data.quant_matrix);
370
1.18k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
1.18k
        return FUNC(picture_display_extension)
372
1.18k
            (ctx, rw, &current->data.picture_display);
373
1.87k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
1.87k
        return FUNC(picture_coding_extension)
375
1.87k
            (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
7.82k
    }
381
7.82k
}
382
383
static int FUNC(slice_header)(CodedBitstreamContext *ctx, RWContext *rw,
384
                              MPEG2RawSliceHeader *current)
385
175k
{
386
175k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
175k
    int err;
388
389
175k
    HEADER("Slice Header");
390
391
175k
    ui(8, slice_vertical_position);
392
393
175k
    if (mpeg2->vertical_size > 2800)
394
62.5k
        ui(3, slice_vertical_position_extension);
395
173k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
173k
    uir(5, quantiser_scale_code);
401
402
125k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
45.1k
        ui(1, slice_extension_flag);
404
45.1k
        ui(1, intra_slice);
405
45.1k
        ui(1, slice_picture_id_enable);
406
45.1k
        ui(6, slice_picture_id);
407
45.1k
    }
408
409
124k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
124k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
120k
    return 0;
413
124k
}
cbs_mpeg2.c:cbs_mpeg2_read_slice_header
Line
Count
Source
385
160k
{
386
160k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
160k
    int err;
388
389
160k
    HEADER("Slice Header");
390
391
160k
    ui(8, slice_vertical_position);
392
393
160k
    if (mpeg2->vertical_size > 2800)
394
61.5k
        ui(3, slice_vertical_position_extension);
395
158k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
158k
    uir(5, quantiser_scale_code);
401
402
110k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
43.5k
        ui(1, slice_extension_flag);
404
43.5k
        ui(1, intra_slice);
405
43.5k
        ui(1, slice_picture_id_enable);
406
43.5k
        ui(6, slice_picture_id);
407
43.5k
    }
408
409
109k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
109k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
105k
    return 0;
413
109k
}
cbs_mpeg2.c:cbs_mpeg2_write_slice_header
Line
Count
Source
385
14.6k
{
386
14.6k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
14.6k
    int err;
388
389
14.6k
    HEADER("Slice Header");
390
391
14.6k
    ui(8, slice_vertical_position);
392
393
14.6k
    if (mpeg2->vertical_size > 2800)
394
1.04k
        ui(3, slice_vertical_position_extension);
395
14.6k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
14.6k
    uir(5, quantiser_scale_code);
401
402
14.6k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
1.58k
        ui(1, slice_extension_flag);
404
1.58k
        ui(1, intra_slice);
405
1.58k
        ui(1, slice_picture_id_enable);
406
1.58k
        ui(6, slice_picture_id);
407
1.58k
    }
408
409
14.6k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
14.6k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
14.6k
    return 0;
413
14.6k
}
414
415
static int FUNC(sequence_end)(CodedBitstreamContext *ctx, RWContext *rw,
416
                              MPEG2RawSequenceEnd *current)
417
1.74k
{
418
1.74k
    int err;
419
420
1.74k
    HEADER("Sequence End");
421
422
1.74k
    ui(8, sequence_end_code);
423
424
1.74k
    return 0;
425
1.74k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_end
Line
Count
Source
417
1.42k
{
418
1.42k
    int err;
419
420
1.42k
    HEADER("Sequence End");
421
422
1.42k
    ui(8, sequence_end_code);
423
424
1.42k
    return 0;
425
1.42k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_end
Line
Count
Source
417
327
{
418
327
    int err;
419
420
327
    HEADER("Sequence End");
421
422
327
    ui(8, sequence_end_code);
423
424
327
    return 0;
425
327
}