Coverage Report

Created: 2026-09-14 08:00

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
36.1k
{
22
36.1k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
36.1k
    int err, i;
24
25
36.1k
    HEADER("Sequence Header");
26
27
36.1k
    ui(8,  sequence_header_code);
28
29
36.1k
    uir(12, horizontal_size_value);
30
24.1k
    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
18.4k
    uir(4, frame_rate_code);
37
17.5k
    ui(18, bit_rate_value);
38
39
13.3k
    marker_bit();
40
41
9.47k
    ui(10, vbv_buffer_size_value);
42
8.40k
    ui(1,  constrained_parameters_flag);
43
44
8.40k
    ui(1, load_intra_quantiser_matrix);
45
8.40k
    if (current->load_intra_quantiser_matrix) {
46
198k
        for (i = 0; i < 64; i++)
47
195k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
4.21k
    }
49
50
6.94k
    ui(1, load_non_intra_quantiser_matrix);
51
6.94k
    if (current->load_non_intra_quantiser_matrix) {
52
159k
        for (i = 0; i < 64; i++)
53
157k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
3.36k
    }
55
56
5.70k
    return 0;
57
6.94k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_header
Line
Count
Source
21
33.9k
{
22
33.9k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
33.9k
    int err, i;
24
25
33.9k
    HEADER("Sequence Header");
26
27
33.9k
    ui(8,  sequence_header_code);
28
29
33.9k
    uir(12, horizontal_size_value);
30
21.9k
    uir(12, vertical_size_value);
31
32
19.3k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
19.3k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
19.3k
    uir(4, aspect_ratio_information);
36
16.3k
    uir(4, frame_rate_code);
37
15.3k
    ui(18, bit_rate_value);
38
39
11.1k
    marker_bit();
40
41
7.28k
    ui(10, vbv_buffer_size_value);
42
6.22k
    ui(1,  constrained_parameters_flag);
43
44
6.22k
    ui(1, load_intra_quantiser_matrix);
45
6.22k
    if (current->load_intra_quantiser_matrix) {
46
151k
        for (i = 0; i < 64; i++)
47
149k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
3.49k
    }
49
50
4.75k
    ui(1, load_non_intra_quantiser_matrix);
51
4.75k
    if (current->load_non_intra_quantiser_matrix) {
52
111k
        for (i = 0; i < 64; i++)
53
109k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
2.62k
    }
55
56
3.52k
    return 0;
57
4.75k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_header
Line
Count
Source
21
2.18k
{
22
2.18k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
23
2.18k
    int err, i;
24
25
2.18k
    HEADER("Sequence Header");
26
27
2.18k
    ui(8,  sequence_header_code);
28
29
2.18k
    uir(12, horizontal_size_value);
30
2.18k
    uir(12, vertical_size_value);
31
32
2.18k
    mpeg2->horizontal_size = current->horizontal_size_value;
33
2.18k
    mpeg2->vertical_size   = current->vertical_size_value;
34
35
2.18k
    uir(4, aspect_ratio_information);
36
2.18k
    uir(4, frame_rate_code);
37
2.18k
    ui(18, bit_rate_value);
38
39
2.18k
    marker_bit();
40
41
2.18k
    ui(10, vbv_buffer_size_value);
42
2.18k
    ui(1,  constrained_parameters_flag);
43
44
2.18k
    ui(1, load_intra_quantiser_matrix);
45
2.18k
    if (current->load_intra_quantiser_matrix) {
46
46.9k
        for (i = 0; i < 64; i++)
47
46.2k
            uirs(8, intra_quantiser_matrix[i], 1, i);
48
722
    }
49
50
2.18k
    ui(1, load_non_intra_quantiser_matrix);
51
2.18k
    if (current->load_non_intra_quantiser_matrix) {
52
48.1k
        for (i = 0; i < 64; i++)
53
47.4k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
54
741
    }
55
56
2.18k
    return 0;
57
2.18k
}
58
59
static int FUNC(user_data)(CodedBitstreamContext *ctx, RWContext *rw,
60
                           MPEG2RawUserData *current)
61
986k
{
62
986k
    size_t k;
63
986k
    int err;
64
65
986k
    HEADER("User Data");
66
67
986k
    ui(8, user_data_start_code);
68
69
#ifdef READ
70
507k
    k = get_bits_left(rw);
71
507k
    av_assert0(k % 8 == 0);
72
507k
    current->user_data_length = k /= 8;
73
507k
    if (k > 0) {
74
11.4k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
11.4k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
11.4k
        current->user_data = current->user_data_ref->data;
78
11.4k
    }
79
507k
#endif
80
81
15.0M
    for (k = 0; k < current->user_data_length; k++)
82
14.0M
        uis(8, user_data[k], 1, k);
83
84
986k
    return 0;
85
986k
}
cbs_mpeg2.c:cbs_mpeg2_read_user_data
Line
Count
Source
61
507k
{
62
507k
    size_t k;
63
507k
    int err;
64
65
507k
    HEADER("User Data");
66
67
507k
    ui(8, user_data_start_code);
68
69
507k
#ifdef READ
70
507k
    k = get_bits_left(rw);
71
507k
    av_assert0(k % 8 == 0);
72
507k
    current->user_data_length = k /= 8;
73
507k
    if (k > 0) {
74
11.4k
        current->user_data_ref = av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
75
11.4k
        if (!current->user_data_ref)
76
0
            return AVERROR(ENOMEM);
77
11.4k
        current->user_data = current->user_data_ref->data;
78
11.4k
    }
79
507k
#endif
80
81
7.60M
    for (k = 0; k < current->user_data_length; k++)
82
7.09M
        uis(8, user_data[k], 1, k);
83
84
507k
    return 0;
85
507k
}
cbs_mpeg2.c:cbs_mpeg2_write_user_data
Line
Count
Source
61
479k
{
62
479k
    size_t k;
63
479k
    int err;
64
65
479k
    HEADER("User Data");
66
67
479k
    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.47M
    for (k = 0; k < current->user_data_length; k++)
82
6.99M
        uis(8, user_data[k], 1, k);
83
84
479k
    return 0;
85
479k
}
86
87
static int FUNC(sequence_extension)(CodedBitstreamContext *ctx, RWContext *rw,
88
                                    MPEG2RawSequenceExtension *current)
89
24.5k
{
90
24.5k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
24.5k
    int err;
92
93
24.5k
    HEADER("Sequence Extension");
94
95
24.5k
    ui(8,  profile_and_level_indication);
96
24.0k
    ui(1,  progressive_sequence);
97
24.0k
    ui(2,  chroma_format);
98
24.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
10.7k
    ui(8,  vbv_buffer_size_extension);
110
9.78k
    ui(1,  low_delay);
111
9.42k
    ui(2,  frame_rate_extension_n);
112
9.42k
    ui(5,  frame_rate_extension_d);
113
114
9.42k
    return 0;
115
9.42k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_extension
Line
Count
Source
89
23.8k
{
90
23.8k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
23.8k
    int err;
92
93
23.8k
    HEADER("Sequence Extension");
94
95
23.8k
    ui(8,  profile_and_level_indication);
96
23.3k
    ui(1,  progressive_sequence);
97
23.3k
    ui(2,  chroma_format);
98
23.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.0k
    ui(8,  vbv_buffer_size_extension);
110
9.12k
    ui(1,  low_delay);
111
8.76k
    ui(2,  frame_rate_extension_n);
112
8.76k
    ui(5,  frame_rate_extension_d);
113
114
8.76k
    return 0;
115
8.76k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_extension
Line
Count
Source
89
660
{
90
660
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
91
660
    int err;
92
93
660
    HEADER("Sequence Extension");
94
95
660
    ui(8,  profile_and_level_indication);
96
660
    ui(1,  progressive_sequence);
97
660
    ui(2,  chroma_format);
98
660
    ui(2,  horizontal_size_extension);
99
660
    ui(2,  vertical_size_extension);
100
101
660
    mpeg2->horizontal_size = (mpeg2->horizontal_size & 0xfff) |
102
660
        current->horizontal_size_extension << 12;
103
660
    mpeg2->vertical_size = (mpeg2->vertical_size & 0xfff) |
104
660
        current->vertical_size_extension << 12;
105
660
    mpeg2->progressive_sequence = current->progressive_sequence;
106
107
660
    ui(12, bit_rate_extension);
108
660
    marker_bit();
109
660
    ui(8,  vbv_buffer_size_extension);
110
660
    ui(1,  low_delay);
111
660
    ui(2,  frame_rate_extension_n);
112
660
    ui(5,  frame_rate_extension_d);
113
114
660
    return 0;
115
660
}
116
117
static int FUNC(sequence_display_extension)(CodedBitstreamContext *ctx, RWContext *rw,
118
                                            MPEG2RawSequenceDisplayExtension *current)
119
9.19k
{
120
9.19k
    int err;
121
122
9.19k
    HEADER("Sequence Display Extension");
123
124
9.19k
    ui(3, video_format);
125
126
9.19k
    ui(1, colour_description);
127
9.19k
    if (current->colour_description) {
128
#ifdef READ
129
18.3k
#define READ_AND_PATCH(name) do { \
130
18.3k
        ui(8, name); \
131
18.3k
        if (current->name == 0) { \
132
3.26k
            current->name = 2; \
133
3.26k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
3.26k
                   "extension had the invalid value 0. Setting it to 2 " \
135
3.26k
                   "(meaning unknown) instead.\n", #name); \
136
3.26k
        } \
137
16.4k
    } while (0)
138
7.02k
        READ_AND_PATCH(colour_primaries);
139
5.94k
        READ_AND_PATCH(transfer_characteristics);
140
5.38k
        READ_AND_PATCH(matrix_coefficients);
141
5.38k
#undef READ_AND_PATCH
142
#else
143
646
        uir(8, colour_primaries);
144
646
        uir(8, transfer_characteristics);
145
646
        uir(8, matrix_coefficients);
146
646
#endif
147
1.52k
    } else {
148
1.52k
        infer(colour_primaries,         2);
149
1.52k
        infer(transfer_characteristics, 2);
150
1.52k
        infer(matrix_coefficients,      2);
151
1.52k
    }
152
153
7.31k
    ui(14, display_horizontal_size);
154
6.16k
    marker_bit();
155
5.37k
    ui(14, display_vertical_size);
156
157
4.95k
    return 0;
158
5.37k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_display_extension
Line
Count
Source
119
8.26k
{
120
8.26k
    int err;
121
122
8.26k
    HEADER("Sequence Display Extension");
123
124
8.26k
    ui(3, video_format);
125
126
8.26k
    ui(1, colour_description);
127
8.26k
    if (current->colour_description) {
128
7.02k
#ifdef READ
129
7.02k
#define READ_AND_PATCH(name) do { \
130
7.02k
        ui(8, name); \
131
7.02k
        if (current->name == 0) { \
132
7.02k
            current->name = 2; \
133
7.02k
            av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
134
7.02k
                   "extension had the invalid value 0. Setting it to 2 " \
135
7.02k
                   "(meaning unknown) instead.\n", #name); \
136
7.02k
        } \
137
7.02k
    } while (0)
138
7.02k
        READ_AND_PATCH(colour_primaries);
139
5.94k
        READ_AND_PATCH(transfer_characteristics);
140
5.38k
        READ_AND_PATCH(matrix_coefficients);
141
5.38k
#undef READ_AND_PATCH
142
#else
143
        uir(8, colour_primaries);
144
        uir(8, transfer_characteristics);
145
        uir(8, matrix_coefficients);
146
#endif
147
5.38k
    } else {
148
1.24k
        infer(colour_primaries,         2);
149
1.24k
        infer(transfer_characteristics, 2);
150
1.24k
        infer(matrix_coefficients,      2);
151
1.24k
    }
152
153
6.39k
    ui(14, display_horizontal_size);
154
5.23k
    marker_bit();
155
4.45k
    ui(14, display_vertical_size);
156
157
4.03k
    return 0;
158
4.45k
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_display_extension
Line
Count
Source
119
924
{
120
924
    int err;
121
122
924
    HEADER("Sequence Display Extension");
123
124
924
    ui(3, video_format);
125
126
924
    ui(1, colour_description);
127
924
    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
646
        uir(8, colour_primaries);
144
646
        uir(8, transfer_characteristics);
145
646
        uir(8, matrix_coefficients);
146
646
#endif
147
646
    } else {
148
278
        infer(colour_primaries,         2);
149
278
        infer(transfer_characteristics, 2);
150
278
        infer(matrix_coefficients,      2);
151
278
    }
152
153
924
    ui(14, display_horizontal_size);
154
924
    marker_bit();
155
924
    ui(14, display_vertical_size);
156
157
924
    return 0;
158
924
}
159
160
static int FUNC(group_of_pictures_header)(CodedBitstreamContext *ctx, RWContext *rw,
161
                                          MPEG2RawGroupOfPicturesHeader *current)
162
2.27k
{
163
2.27k
    int err;
164
165
2.27k
    HEADER("Group of Pictures Header");
166
167
2.27k
    ui(8,  group_start_code);
168
169
2.27k
    ui(25, time_code);
170
1.78k
    ui(1,  closed_gop);
171
1.78k
    ui(1,  broken_link);
172
173
1.78k
    return 0;
174
1.78k
}
cbs_mpeg2.c:cbs_mpeg2_read_group_of_pictures_header
Line
Count
Source
162
2.00k
{
163
2.00k
    int err;
164
165
2.00k
    HEADER("Group of Pictures Header");
166
167
2.00k
    ui(8,  group_start_code);
168
169
2.00k
    ui(25, time_code);
170
1.51k
    ui(1,  closed_gop);
171
1.51k
    ui(1,  broken_link);
172
173
1.51k
    return 0;
174
1.51k
}
cbs_mpeg2.c:cbs_mpeg2_write_group_of_pictures_header
Line
Count
Source
162
268
{
163
268
    int err;
164
165
268
    HEADER("Group of Pictures Header");
166
167
268
    ui(8,  group_start_code);
168
169
268
    ui(25, time_code);
170
268
    ui(1,  closed_gop);
171
268
    ui(1,  broken_link);
172
173
268
    return 0;
174
268
}
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.67M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.54M
        skip_bits(rw, 1 + 8);
188
    current->extra_information_length = k;
189
133k
    if (k > 0) {
190
31.9k
        *rw = start;
191
31.9k
        current->extra_information_ref =
192
31.9k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
31.9k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
31.9k
        current->extra_information = current->extra_information_ref->data;
196
31.9k
    }
197
133k
#endif
198
199
13.1M
    for (k = 0; k < current->extra_information_length; k++) {
200
13.0M
        bit(marker_name, 1);
201
13.0M
        xuia(8, element_name,
202
13.0M
             current->extra_information[k], 0, 255, 1, k);
203
13.0M
    }
204
205
136k
    bit(marker_name, 0);
206
207
134k
    return 0;
208
136k
}
cbs_mpeg2.c:cbs_mpeg2_read_extra_information
Line
Count
Source
179
133k
{
180
133k
    int err;
181
133k
    size_t k;
182
133k
#ifdef READ
183
133k
    GetBitContext start = *rw;
184
133k
    uint8_t bit;
185
186
6.67M
    for (k = 0; nextbits(1, 1, bit); k++)
187
6.54M
        skip_bits(rw, 1 + 8);
188
133k
    current->extra_information_length = k;
189
133k
    if (k > 0) {
190
31.9k
        *rw = start;
191
31.9k
        current->extra_information_ref =
192
31.9k
            av_buffer_allocz(k + AV_INPUT_BUFFER_PADDING_SIZE);
193
31.9k
        if (!current->extra_information_ref)
194
0
            return AVERROR(ENOMEM);
195
31.9k
        current->extra_information = current->extra_information_ref->data;
196
31.9k
    }
197
133k
#endif
198
199
6.67M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.54M
        bit(marker_name, 1);
201
6.54M
        xuia(8, element_name,
202
6.54M
             current->extra_information[k], 0, 255, 1, k);
203
6.54M
    }
204
205
131k
    bit(marker_name, 0);
206
207
129k
    return 0;
208
131k
}
cbs_mpeg2.c:cbs_mpeg2_write_extra_information
Line
Count
Source
179
4.82k
{
180
4.82k
    int err;
181
4.82k
    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.46M
    for (k = 0; k < current->extra_information_length; k++) {
200
6.45M
        bit(marker_name, 1);
201
6.45M
        xuia(8, element_name,
202
6.45M
             current->extra_information[k], 0, 255, 1, k);
203
6.45M
    }
204
205
4.82k
    bit(marker_name, 0);
206
207
4.82k
    return 0;
208
4.82k
}
209
210
static int FUNC(picture_header)(CodedBitstreamContext *ctx, RWContext *rw,
211
                                MPEG2RawPictureHeader *current)
212
50.2k
{
213
50.2k
    int err;
214
215
50.2k
    HEADER("Picture Header");
216
217
50.2k
    ui(8,  picture_start_code);
218
219
50.2k
    ui(10, temporal_reference);
220
46.9k
    uir(3, picture_coding_type);
221
27.2k
    ui(16, vbv_delay);
222
223
24.7k
    if (current->picture_coding_type == 2 ||
224
20.6k
        current->picture_coding_type == 3) {
225
6.01k
        ui(1, full_pel_forward_vector);
226
6.01k
        ui(3, forward_f_code);
227
6.01k
    }
228
229
23.0k
    if (current->picture_coding_type == 3) {
230
1.81k
        ui(1, full_pel_backward_vector);
231
1.81k
        ui(3, backward_f_code);
232
1.81k
    }
233
234
23.0k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
23.0k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
22.1k
    return 0;
238
23.0k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_header
Line
Count
Source
212
49.1k
{
213
49.1k
    int err;
214
215
49.1k
    HEADER("Picture Header");
216
217
49.1k
    ui(8,  picture_start_code);
218
219
49.1k
    ui(10, temporal_reference);
220
45.8k
    uir(3, picture_coding_type);
221
26.2k
    ui(16, vbv_delay);
222
223
23.7k
    if (current->picture_coding_type == 2 ||
224
19.8k
        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
22.0k
    if (current->picture_coding_type == 3) {
230
1.59k
        ui(1, full_pel_backward_vector);
231
1.59k
        ui(3, backward_f_code);
232
1.59k
    }
233
234
22.0k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
22.0k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
21.1k
    return 0;
238
22.0k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_header
Line
Count
Source
212
1.03k
{
213
1.03k
    int err;
214
215
1.03k
    HEADER("Picture Header");
216
217
1.03k
    ui(8,  picture_start_code);
218
219
1.03k
    ui(10, temporal_reference);
220
1.03k
    uir(3, picture_coding_type);
221
1.03k
    ui(16, vbv_delay);
222
223
1.03k
    if (current->picture_coding_type == 2 ||
224
721
        current->picture_coding_type == 3) {
225
538
        ui(1, full_pel_forward_vector);
226
538
        ui(3, forward_f_code);
227
538
    }
228
229
1.03k
    if (current->picture_coding_type == 3) {
230
221
        ui(1, full_pel_backward_vector);
231
221
        ui(3, backward_f_code);
232
221
    }
233
234
1.03k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_picture,
235
1.03k
                                  "extra_information_picture[k]", "extra_bit_picture"));
236
237
1.03k
    return 0;
238
1.03k
}
239
240
static int FUNC(picture_coding_extension)(CodedBitstreamContext *ctx, RWContext *rw,
241
                                          MPEG2RawPictureCodingExtension *current)
242
18.8k
{
243
18.8k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
18.8k
    int err;
245
246
18.8k
    HEADER("Picture Coding Extension");
247
248
18.8k
    uir(4, f_code[0][0]);
249
18.4k
    uir(4, f_code[0][1]);
250
17.0k
    uir(4, f_code[1][0]);
251
16.4k
    uir(4, f_code[1][1]);
252
253
14.9k
    ui(2, intra_dc_precision);
254
14.9k
    ui(2, picture_structure);
255
14.9k
    ui(1, top_field_first);
256
14.3k
    ui(1, frame_pred_frame_dct);
257
14.3k
    ui(1, concealment_motion_vectors);
258
14.3k
    ui(1, q_scale_type);
259
14.3k
    ui(1, intra_vlc_format);
260
14.3k
    ui(1, alternate_scan);
261
14.3k
    ui(1, repeat_first_field);
262
14.3k
    ui(1, chroma_420_type);
263
14.3k
    ui(1, progressive_frame);
264
265
12.3k
    if (mpeg2->progressive_sequence) {
266
5.24k
        if (current->repeat_first_field) {
267
2.59k
            if (current->top_field_first)
268
810
                mpeg2->number_of_frame_centre_offsets = 3;
269
1.78k
            else
270
1.78k
                mpeg2->number_of_frame_centre_offsets = 2;
271
2.64k
        } else {
272
2.64k
            mpeg2->number_of_frame_centre_offsets = 1;
273
2.64k
        }
274
7.14k
    } else {
275
7.14k
        if (current->picture_structure == 1 || // Top field.
276
6.02k
            current->picture_structure == 2) { // Bottom field.
277
2.40k
            mpeg2->number_of_frame_centre_offsets = 1;
278
4.73k
        } else {
279
4.73k
            if (current->repeat_first_field)
280
3.30k
                mpeg2->number_of_frame_centre_offsets = 3;
281
1.43k
            else
282
1.43k
                mpeg2->number_of_frame_centre_offsets = 2;
283
4.73k
        }
284
7.14k
    }
285
286
12.3k
    ui(1, composite_display_flag);
287
12.3k
    if (current->composite_display_flag) {
288
6.71k
        ui(1, v_axis);
289
6.71k
        ui(3, field_sequence);
290
6.71k
        ui(1, sub_carrier);
291
6.71k
        ui(7, burst_amplitude);
292
6.39k
        ui(8, sub_carrier_phase);
293
6.39k
    }
294
295
9.65k
    return 0;
296
12.3k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_coding_extension
Line
Count
Source
242
16.7k
{
243
16.7k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
16.7k
    int err;
245
246
16.7k
    HEADER("Picture Coding Extension");
247
248
16.7k
    uir(4, f_code[0][0]);
249
16.4k
    uir(4, f_code[0][1]);
250
14.9k
    uir(4, f_code[1][0]);
251
14.3k
    uir(4, f_code[1][1]);
252
253
12.9k
    ui(2, intra_dc_precision);
254
12.9k
    ui(2, picture_structure);
255
12.9k
    ui(1, top_field_first);
256
12.3k
    ui(1, frame_pred_frame_dct);
257
12.3k
    ui(1, concealment_motion_vectors);
258
12.3k
    ui(1, q_scale_type);
259
12.3k
    ui(1, intra_vlc_format);
260
12.3k
    ui(1, alternate_scan);
261
12.3k
    ui(1, repeat_first_field);
262
12.3k
    ui(1, chroma_420_type);
263
12.3k
    ui(1, progressive_frame);
264
265
10.3k
    if (mpeg2->progressive_sequence) {
266
4.56k
        if (current->repeat_first_field) {
267
2.14k
            if (current->top_field_first)
268
590
                mpeg2->number_of_frame_centre_offsets = 3;
269
1.55k
            else
270
1.55k
                mpeg2->number_of_frame_centre_offsets = 2;
271
2.42k
        } else {
272
2.42k
            mpeg2->number_of_frame_centre_offsets = 1;
273
2.42k
        }
274
5.76k
    } else {
275
5.76k
        if (current->picture_structure == 1 || // Top field.
276
4.96k
            current->picture_structure == 2) { // Bottom field.
277
1.83k
            mpeg2->number_of_frame_centre_offsets = 1;
278
3.93k
        } else {
279
3.93k
            if (current->repeat_first_field)
280
2.84k
                mpeg2->number_of_frame_centre_offsets = 3;
281
1.09k
            else
282
1.09k
                mpeg2->number_of_frame_centre_offsets = 2;
283
3.93k
        }
284
5.76k
    }
285
286
10.3k
    ui(1, composite_display_flag);
287
10.3k
    if (current->composite_display_flag) {
288
5.97k
        ui(1, v_axis);
289
5.97k
        ui(3, field_sequence);
290
5.97k
        ui(1, sub_carrier);
291
5.97k
        ui(7, burst_amplitude);
292
5.64k
        ui(8, sub_carrier_phase);
293
5.64k
    }
294
295
7.61k
    return 0;
296
10.3k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_coding_extension
Line
Count
Source
242
2.04k
{
243
2.04k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
244
2.04k
    int err;
245
246
2.04k
    HEADER("Picture Coding Extension");
247
248
2.04k
    uir(4, f_code[0][0]);
249
2.04k
    uir(4, f_code[0][1]);
250
2.04k
    uir(4, f_code[1][0]);
251
2.04k
    uir(4, f_code[1][1]);
252
253
2.04k
    ui(2, intra_dc_precision);
254
2.04k
    ui(2, picture_structure);
255
2.04k
    ui(1, top_field_first);
256
2.04k
    ui(1, frame_pred_frame_dct);
257
2.04k
    ui(1, concealment_motion_vectors);
258
2.04k
    ui(1, q_scale_type);
259
2.04k
    ui(1, intra_vlc_format);
260
2.04k
    ui(1, alternate_scan);
261
2.04k
    ui(1, repeat_first_field);
262
2.04k
    ui(1, chroma_420_type);
263
2.04k
    ui(1, progressive_frame);
264
265
2.04k
    if (mpeg2->progressive_sequence) {
266
676
        if (current->repeat_first_field) {
267
455
            if (current->top_field_first)
268
220
                mpeg2->number_of_frame_centre_offsets = 3;
269
235
            else
270
235
                mpeg2->number_of_frame_centre_offsets = 2;
271
455
        } else {
272
221
            mpeg2->number_of_frame_centre_offsets = 1;
273
221
        }
274
1.37k
    } else {
275
1.37k
        if (current->picture_structure == 1 || // Top field.
276
1.06k
            current->picture_structure == 2) { // Bottom field.
277
571
            mpeg2->number_of_frame_centre_offsets = 1;
278
801
        } else {
279
801
            if (current->repeat_first_field)
280
463
                mpeg2->number_of_frame_centre_offsets = 3;
281
338
            else
282
338
                mpeg2->number_of_frame_centre_offsets = 2;
283
801
        }
284
1.37k
    }
285
286
2.04k
    ui(1, composite_display_flag);
287
2.04k
    if (current->composite_display_flag) {
288
746
        ui(1, v_axis);
289
746
        ui(3, field_sequence);
290
746
        ui(1, sub_carrier);
291
746
        ui(7, burst_amplitude);
292
746
        ui(8, sub_carrier_phase);
293
746
    }
294
295
2.04k
    return 0;
296
2.04k
}
297
298
static int FUNC(quant_matrix_extension)(CodedBitstreamContext *ctx, RWContext *rw,
299
                                        MPEG2RawQuantMatrixExtension *current)
300
19.4k
{
301
19.4k
    int err, i;
302
303
19.4k
    HEADER("Quant Matrix Extension");
304
305
19.4k
    ui(1, load_intra_quantiser_matrix);
306
19.4k
    if (current->load_intra_quantiser_matrix) {
307
127k
        for (i = 0; i < 64; i++)
308
125k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
3.10k
    }
310
311
18.1k
    ui(1, load_non_intra_quantiser_matrix);
312
18.1k
    if (current->load_non_intra_quantiser_matrix) {
313
146k
        for (i = 0; i < 64; i++)
314
145k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
3.34k
    }
316
317
16.3k
    ui(1, load_chroma_intra_quantiser_matrix);
318
16.3k
    if (current->load_chroma_intra_quantiser_matrix) {
319
152k
        for (i = 0; i < 64; i++)
320
149k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
3.29k
    }
322
323
15.3k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
15.3k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
147k
        for (i = 0; i < 64; i++)
326
145k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
9.49k
    }
328
329
7.55k
    return 0;
330
15.3k
}
cbs_mpeg2.c:cbs_mpeg2_read_quant_matrix_extension
Line
Count
Source
300
16.2k
{
301
16.2k
    int err, i;
302
303
16.2k
    HEADER("Quant Matrix Extension");
304
305
16.2k
    ui(1, load_intra_quantiser_matrix);
306
16.2k
    if (current->load_intra_quantiser_matrix) {
307
80.9k
        for (i = 0; i < 64; i++)
308
79.7k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
2.39k
    }
310
311
15.0k
    ui(1, load_non_intra_quantiser_matrix);
312
15.0k
    if (current->load_non_intra_quantiser_matrix) {
313
101k
        for (i = 0; i < 64; i++)
314
100k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
2.65k
    }
316
317
13.2k
    ui(1, load_chroma_intra_quantiser_matrix);
318
13.2k
    if (current->load_chroma_intra_quantiser_matrix) {
319
103k
        for (i = 0; i < 64; i++)
320
102k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
2.54k
    }
322
323
12.1k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
12.1k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
101k
        for (i = 0; i < 64; i++)
326
100k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
8.77k
    }
328
329
4.42k
    return 0;
330
12.1k
}
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
46.2k
        for (i = 0; i < 64; i++)
308
45.5k
            uirs(8, intra_quantiser_matrix[i], 1, i);
309
712
    }
310
311
3.13k
    ui(1, load_non_intra_quantiser_matrix);
312
3.13k
    if (current->load_non_intra_quantiser_matrix) {
313
45.3k
        for (i = 0; i < 64; i++)
314
44.6k
            uirs(8, non_intra_quantiser_matrix[i], 1, i);
315
698
    }
316
317
3.13k
    ui(1, load_chroma_intra_quantiser_matrix);
318
3.13k
    if (current->load_chroma_intra_quantiser_matrix) {
319
48.5k
        for (i = 0; i < 64; i++)
320
47.8k
            uirs(8, intra_quantiser_matrix[i], 1, i);
321
747
    }
322
323
3.13k
    ui(1, load_chroma_non_intra_quantiser_matrix);
324
3.13k
    if (current->load_chroma_non_intra_quantiser_matrix) {
325
46.3k
        for (i = 0; i < 64; i++)
326
45.6k
            uirs(8, chroma_non_intra_quantiser_matrix[i], 1, i);
327
713
    }
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.07k
{
335
6.07k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
6.07k
    int err, i;
337
338
6.07k
    HEADER("Picture Display Extension");
339
340
8.98k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
5.47k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
4.68k
        marker_bit();
343
3.83k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
3.55k
        marker_bit();
345
3.55k
    }
346
347
3.51k
    return 0;
348
6.07k
}
cbs_mpeg2.c:cbs_mpeg2_read_picture_display_extension
Line
Count
Source
334
5.05k
{
335
5.05k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
5.05k
    int err, i;
337
338
5.05k
    HEADER("Picture Display Extension");
339
340
7.09k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
4.60k
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
3.81k
        marker_bit();
343
2.96k
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
2.67k
        marker_bit();
345
2.67k
    }
346
347
2.48k
    return 0;
348
5.05k
}
cbs_mpeg2.c:cbs_mpeg2_write_picture_display_extension
Line
Count
Source
334
1.02k
{
335
1.02k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
336
1.02k
    int err, i;
337
338
1.02k
    HEADER("Picture Display Extension");
339
340
1.89k
    for (i = 0; i < mpeg2->number_of_frame_centre_offsets; i++) {
341
874
        sis(16, frame_centre_horizontal_offset[i], 1, i);
342
874
        marker_bit();
343
874
        sis(16, frame_centre_vertical_offset[i],   1, i);
344
874
        marker_bit();
345
874
    }
346
347
1.02k
    return 0;
348
1.02k
}
349
350
static int FUNC(extension_data)(CodedBitstreamContext *ctx, RWContext *rw,
351
                                MPEG2RawExtensionData *current)
352
79.6k
{
353
79.6k
    int err;
354
355
79.6k
    HEADER("Extension Data");
356
357
79.6k
    ui(8, extension_start_code);
358
79.6k
    ui(4, extension_start_code_identifier);
359
360
79.1k
    switch (current->extension_start_code_identifier) {
361
24.5k
    case MPEG2_EXTENSION_SEQUENCE:
362
24.5k
        return FUNC(sequence_extension)
363
24.5k
            (ctx, rw, &current->data.sequence);
364
9.19k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
9.19k
        return FUNC(sequence_display_extension)
366
9.19k
            (ctx, rw, &current->data.sequence_display);
367
19.4k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
19.4k
        return FUNC(quant_matrix_extension)
369
19.4k
            (ctx, rw, &current->data.quant_matrix);
370
6.07k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
6.07k
        return FUNC(picture_display_extension)
372
6.07k
            (ctx, rw, &current->data.picture_display);
373
18.8k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
18.8k
        return FUNC(picture_coding_extension)
375
18.8k
            (ctx, rw, &current->data.picture_coding);
376
1.09k
    default:
377
1.09k
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
1.09k
               current->extension_start_code_identifier);
379
1.09k
        return AVERROR_PATCHWELCOME;
380
79.1k
    }
381
79.1k
}
cbs_mpeg2.c:cbs_mpeg2_read_extension_data
Line
Count
Source
352
71.8k
{
353
71.8k
    int err;
354
355
71.8k
    HEADER("Extension Data");
356
357
71.8k
    ui(8, extension_start_code);
358
71.8k
    ui(4, extension_start_code_identifier);
359
360
71.3k
    switch (current->extension_start_code_identifier) {
361
23.8k
    case MPEG2_EXTENSION_SEQUENCE:
362
23.8k
        return FUNC(sequence_extension)
363
23.8k
            (ctx, rw, &current->data.sequence);
364
8.26k
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
8.26k
        return FUNC(sequence_display_extension)
366
8.26k
            (ctx, rw, &current->data.sequence_display);
367
16.2k
    case MPEG2_EXTENSION_QUANT_MATRIX:
368
16.2k
        return FUNC(quant_matrix_extension)
369
16.2k
            (ctx, rw, &current->data.quant_matrix);
370
5.05k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
5.05k
        return FUNC(picture_display_extension)
372
5.05k
            (ctx, rw, &current->data.picture_display);
373
16.7k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
16.7k
        return FUNC(picture_coding_extension)
375
16.7k
            (ctx, rw, &current->data.picture_coding);
376
1.09k
    default:
377
1.09k
        av_log(ctx->log_ctx, AV_LOG_ERROR, "Extension ID %d not supported.\n",
378
1.09k
               current->extension_start_code_identifier);
379
1.09k
        return AVERROR_PATCHWELCOME;
380
71.3k
    }
381
71.3k
}
cbs_mpeg2.c:cbs_mpeg2_write_extension_data
Line
Count
Source
352
7.79k
{
353
7.79k
    int err;
354
355
7.79k
    HEADER("Extension Data");
356
357
7.79k
    ui(8, extension_start_code);
358
7.79k
    ui(4, extension_start_code_identifier);
359
360
7.79k
    switch (current->extension_start_code_identifier) {
361
660
    case MPEG2_EXTENSION_SEQUENCE:
362
660
        return FUNC(sequence_extension)
363
660
            (ctx, rw, &current->data.sequence);
364
924
    case MPEG2_EXTENSION_SEQUENCE_DISPLAY:
365
924
        return FUNC(sequence_display_extension)
366
924
            (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.02k
    case MPEG2_EXTENSION_PICTURE_DISPLAY:
371
1.02k
        return FUNC(picture_display_extension)
372
1.02k
            (ctx, rw, &current->data.picture_display);
373
2.04k
    case MPEG2_EXTENSION_PICTURE_CODING:
374
2.04k
        return FUNC(picture_coding_extension)
375
2.04k
            (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.79k
    }
381
7.79k
}
382
383
static int FUNC(slice_header)(CodedBitstreamContext *ctx, RWContext *rw,
384
                              MPEG2RawSliceHeader *current)
385
184k
{
386
184k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
184k
    int err;
388
389
184k
    HEADER("Slice Header");
390
391
184k
    ui(8, slice_vertical_position);
392
393
184k
    if (mpeg2->vertical_size > 2800)
394
57.9k
        ui(3, slice_vertical_position_extension);
395
182k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
182k
    uir(5, quantiser_scale_code);
401
402
116k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
51.3k
        ui(1, slice_extension_flag);
404
51.3k
        ui(1, intra_slice);
405
51.3k
        ui(1, slice_picture_id_enable);
406
51.3k
        ui(6, slice_picture_id);
407
51.3k
    }
408
409
115k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
115k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
112k
    return 0;
413
115k
}
cbs_mpeg2.c:cbs_mpeg2_read_slice_header
Line
Count
Source
385
180k
{
386
180k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
180k
    int err;
388
389
180k
    HEADER("Slice Header");
390
391
180k
    ui(8, slice_vertical_position);
392
393
180k
    if (mpeg2->vertical_size > 2800)
394
57.3k
        ui(3, slice_vertical_position_extension);
395
179k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
179k
    uir(5, quantiser_scale_code);
401
402
112k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
50.0k
        ui(1, slice_extension_flag);
404
50.0k
        ui(1, intra_slice);
405
50.0k
        ui(1, slice_picture_id_enable);
406
50.0k
        ui(6, slice_picture_id);
407
50.0k
    }
408
409
111k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
111k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
108k
    return 0;
413
111k
}
cbs_mpeg2.c:cbs_mpeg2_write_slice_header
Line
Count
Source
385
3.79k
{
386
3.79k
    CodedBitstreamMPEG2Context *mpeg2 = ctx->priv_data;
387
3.79k
    int err;
388
389
3.79k
    HEADER("Slice Header");
390
391
3.79k
    ui(8, slice_vertical_position);
392
393
3.79k
    if (mpeg2->vertical_size > 2800)
394
539
        ui(3, slice_vertical_position_extension);
395
3.79k
    if (mpeg2->scalable) {
396
0
        if (mpeg2->scalable_mode == 0)
397
0
            ui(7, priority_breakpoint);
398
0
    }
399
400
3.79k
    uir(5, quantiser_scale_code);
401
402
3.79k
    if (nextbits(1, 1, current->slice_extension_flag)) {
403
1.34k
        ui(1, slice_extension_flag);
404
1.34k
        ui(1, intra_slice);
405
1.34k
        ui(1, slice_picture_id_enable);
406
1.34k
        ui(6, slice_picture_id);
407
1.34k
    }
408
409
3.79k
    CHECK(FUNC(extra_information)(ctx, rw, &current->extra_information_slice,
410
3.79k
                                  "extra_information_slice[k]", "extra_bit_slice"));
411
412
3.79k
    return 0;
413
3.79k
}
414
415
static int FUNC(sequence_end)(CodedBitstreamContext *ctx, RWContext *rw,
416
                              MPEG2RawSequenceEnd *current)
417
1.06k
{
418
1.06k
    int err;
419
420
1.06k
    HEADER("Sequence End");
421
422
1.06k
    ui(8, sequence_end_code);
423
424
1.06k
    return 0;
425
1.06k
}
cbs_mpeg2.c:cbs_mpeg2_read_sequence_end
Line
Count
Source
417
751
{
418
751
    int err;
419
420
751
    HEADER("Sequence End");
421
422
751
    ui(8, sequence_end_code);
423
424
751
    return 0;
425
751
}
cbs_mpeg2.c:cbs_mpeg2_write_sequence_end
Line
Count
Source
417
316
{
418
316
    int err;
419
420
316
    HEADER("Sequence End");
421
422
316
    ui(8, sequence_end_code);
423
424
316
    return 0;
425
316
}