Coverage Report

Created: 2026-05-16 07:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/vlc/modules/codec/avcodec/avcommon.h
Line
Count
Source
1
/*****************************************************************************
2
 * avcommon.h: common code for libav*
3
 *****************************************************************************
4
 * Copyright (C) 2012 VLC authors and VideoLAN
5
 *
6
 * Authors: Rafaël Carré <funman@videolanorg>
7
 *
8
 * This program is free software; you can redistribute it and/or modify it
9
 * under the terms of the GNU Lesser General Public License as published by
10
 * the Free Software Foundation; either version 2.1 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
 * GNU Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public License
19
 * along with this program; if not, write to the Free Software Foundation,
20
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21
 *****************************************************************************/
22
23
#ifndef AVCOMMON_H
24
#define AVCOMMON_H 1
25
26
#ifdef HAVE_CONFIG_H
27
# include "config.h"
28
#endif
29
30
#include <vlc_avcodec.h>
31
#include <vlc_configuration.h>
32
#include <vlc_variables.h>
33
#include <vlc_es.h>
34
35
#include <limits.h>
36
37
#include "avcommon_compat.h"
38
39
# include <libavutil/avutil.h>
40
# include <libavutil/dict.h>
41
# include <libavutil/cpu.h>
42
# include <libavutil/log.h>
43
44
0
#define VLC_TIME_BASE_Q     (AVRational){1, CLOCK_FREQ}
45
46
#define FROM_AVSCALE(x, scale) \
47
0
    av_rescale_q((x), (scale), VLC_TIME_BASE_Q)
48
#define TO_AVSCALE(x, scale)\
49
0
    av_rescale_q((x), VLC_TIME_BASE_Q, (scale))
50
51
#if (CLOCK_FREQ == AV_TIME_BASE)
52
70.9k
#define FROM_AV_TS_NZ(x)     (x)
53
2.01M
#define TO_AV_TS_NZ(x)       (x)
54
#else
55
#define FROM_AV_TS_NZ(x)  FROM_AVSCALE((x), AV_TIME_BASE_Q)
56
#define TO_AV_TS_NZ(x)    TO_AVSCALE((x), AV_TIME_BASE_Q)
57
#endif
58
59
70.9k
#define FROM_AV_TS(x)     (FROM_AV_TS_NZ(x) + VLC_TICK_0)
60
2.01M
#define TO_AV_TS(x)       (TO_AV_TS_NZ((x) - VLC_TICK_0))
61
62
#define AV_OPTIONS_TEXT     N_("Advanced options")
63
#define AV_OPTIONS_LONGTEXT N_("Advanced options, in the form {opt=val,opt2=val2}.")
64
65
#define AV_RESET_TS_TEXT     N_("Reset timestamps")
66
#define AV_RESET_TS_LONGTEXT N_("The muxed content will start near a 0 timestamp.")
67
68
static inline void vlc_av_get_options(const char *psz_opts, AVDictionary** pp_dict)
69
0
{
70
0
    config_chain_t *cfg = NULL;
71
0
    config_ChainParseOptions(&cfg, psz_opts);
72
0
    for (config_chain_t *item = cfg; item != NULL; item = item->p_next) {
73
0
        av_dict_set(pp_dict, item->psz_name, item->psz_value, 0);
74
0
    }
75
0
    if (cfg)
76
0
        config_ChainDestroy(cfg);
77
0
}
Unexecuted instantiation: avcodec.c:vlc_av_get_options
Unexecuted instantiation: encoder.c:vlc_av_get_options
Unexecuted instantiation: fourcc.c:vlc_av_get_options
Unexecuted instantiation: video.c:vlc_av_get_options
Unexecuted instantiation: subtitle.c:vlc_av_get_options
Unexecuted instantiation: audio.c:vlc_av_get_options
78
79
static inline void vlc_init_avutil(vlc_object_t *obj)
80
807k
{
81
807k
    int level = AV_LOG_QUIET;
82
83
807k
    int64_t verbose = var_InheritInteger(obj, "verbose");
84
807k
    if (verbose >= 0) switch(verbose + VLC_MSG_ERR) {
85
807k
    case VLC_MSG_ERR:
86
807k
        level = AV_LOG_ERROR;
87
807k
        break;
88
0
    case VLC_MSG_WARN:
89
0
        level = AV_LOG_WARNING;
90
0
        break;
91
0
    case VLC_MSG_INFO:
92
0
        level = AV_LOG_INFO;
93
0
        break;
94
0
    case VLC_MSG_DBG:
95
0
        level = AV_LOG_VERBOSE;
96
0
        break;
97
0
    default:
98
0
        level = AV_LOG_DEBUG;
99
0
        break;
100
807k
    }
101
102
807k
    av_log_set_level(level);
103
104
807k
    msg_Dbg(obj, "CPU flags: 0x%08x", av_get_cpu_flags());
105
807k
}
avcodec.c:vlc_init_avutil
Line
Count
Source
80
807k
{
81
807k
    int level = AV_LOG_QUIET;
82
83
807k
    int64_t verbose = var_InheritInteger(obj, "verbose");
84
807k
    if (verbose >= 0) switch(verbose + VLC_MSG_ERR) {
85
807k
    case VLC_MSG_ERR:
86
807k
        level = AV_LOG_ERROR;
87
807k
        break;
88
0
    case VLC_MSG_WARN:
89
0
        level = AV_LOG_WARNING;
90
0
        break;
91
0
    case VLC_MSG_INFO:
92
0
        level = AV_LOG_INFO;
93
0
        break;
94
0
    case VLC_MSG_DBG:
95
0
        level = AV_LOG_VERBOSE;
96
0
        break;
97
0
    default:
98
0
        level = AV_LOG_DEBUG;
99
0
        break;
100
807k
    }
101
102
807k
    av_log_set_level(level);
103
104
807k
    msg_Dbg(obj, "CPU flags: 0x%08x", av_get_cpu_flags());
105
807k
}
Unexecuted instantiation: encoder.c:vlc_init_avutil
Unexecuted instantiation: fourcc.c:vlc_init_avutil
Unexecuted instantiation: video.c:vlc_init_avutil
Unexecuted instantiation: subtitle.c:vlc_init_avutil
Unexecuted instantiation: audio.c:vlc_init_avutil
106
107
#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
108
# include <libavformat/avformat.h>
109
# include <libavformat/version.h>
110
static inline void vlc_init_avformat(vlc_object_t *obj)
111
0
{
112
0
    vlc_avcodec_lock();
113
0
114
0
    vlc_init_avutil(obj);
115
0
116
0
    avformat_network_init();
117
0
118
0
    vlc_avcodec_unlock();
119
0
}
Unexecuted instantiation: avcodec.c:vlc_init_avformat
Unexecuted instantiation: encoder.c:vlc_init_avformat
Unexecuted instantiation: fourcc.c:vlc_init_avformat
Unexecuted instantiation: video.c:vlc_init_avformat
Unexecuted instantiation: subtitle.c:vlc_init_avformat
Unexecuted instantiation: audio.c:vlc_init_avformat
120
#endif
121
122
# include <libavcodec/avcodec.h>
123
# include <libavcodec/version.h>
124
static inline void vlc_init_avcodec(vlc_object_t *obj)
125
807k
{
126
807k
    vlc_avcodec_lock();
127
128
807k
    vlc_init_avutil(obj);
129
130
131
807k
    vlc_avcodec_unlock();
132
807k
}
avcodec.c:vlc_init_avcodec
Line
Count
Source
125
807k
{
126
807k
    vlc_avcodec_lock();
127
128
807k
    vlc_init_avutil(obj);
129
130
131
807k
    vlc_avcodec_unlock();
132
807k
}
Unexecuted instantiation: encoder.c:vlc_init_avcodec
Unexecuted instantiation: fourcc.c:vlc_init_avcodec
Unexecuted instantiation: video.c:vlc_init_avcodec
Unexecuted instantiation: subtitle.c:vlc_init_avcodec
Unexecuted instantiation: audio.c:vlc_init_avcodec
133
134
#ifndef AV_ERROR_MAX_STRING_SIZE
135
 #define AV_ERROR_MAX_STRING_SIZE 64
136
#endif
137
138
static inline vlc_rational_t FromAVRational(const AVRational rat)
139
0
{
140
0
    return (vlc_rational_t){.num = rat.num, .den = rat.den};
141
0
}
Unexecuted instantiation: avcodec.c:FromAVRational
Unexecuted instantiation: encoder.c:FromAVRational
Unexecuted instantiation: fourcc.c:FromAVRational
Unexecuted instantiation: video.c:FromAVRational
Unexecuted instantiation: subtitle.c:FromAVRational
Unexecuted instantiation: audio.c:FromAVRational
142
143
static inline void set_video_color_settings( const video_format_t *p_fmt, AVCodecContext *p_context )
144
170k
{
145
170k
    switch( p_fmt->color_range )
146
170k
    {
147
8.72k
    case COLOR_RANGE_FULL:
148
8.72k
        p_context->color_range = AVCOL_RANGE_JPEG;
149
8.72k
        break;
150
27.4k
    case COLOR_RANGE_LIMITED:
151
27.4k
        p_context->color_range = AVCOL_RANGE_MPEG;
152
161k
    case COLOR_RANGE_UNDEF: /* do nothing */
153
161k
        break;
154
0
    default:
155
0
        p_context->color_range = AVCOL_RANGE_UNSPECIFIED;
156
0
        break;
157
170k
    }
158
159
170k
    switch( p_fmt->space )
160
170k
    {
161
2.09k
        case COLOR_SPACE_BT709:
162
2.09k
            p_context->colorspace = AVCOL_SPC_BT709;
163
2.09k
            break;
164
2.60k
        case COLOR_SPACE_BT601:
165
2.60k
            p_context->colorspace = AVCOL_SPC_BT470BG;
166
2.60k
            break;
167
1.14k
        case COLOR_SPACE_BT2020:
168
1.14k
            p_context->colorspace = AVCOL_SPC_BT2020_CL;
169
1.14k
            break;
170
164k
        default:
171
164k
            p_context->colorspace = AVCOL_SPC_UNSPECIFIED;
172
164k
            break;
173
170k
    }
174
175
170k
    switch( p_fmt->transfer )
176
170k
    {
177
483
        case TRANSFER_FUNC_LINEAR:
178
483
            p_context->color_trc = AVCOL_TRC_LINEAR;
179
483
            break;
180
70
        case TRANSFER_FUNC_SRGB:
181
70
            p_context->color_trc = AVCOL_TRC_GAMMA22;
182
70
            break;
183
790
        case TRANSFER_FUNC_BT470_BG:
184
790
            p_context->color_trc = AVCOL_TRC_GAMMA28;
185
790
            break;
186
218
        case TRANSFER_FUNC_BT470_M:
187
218
            p_context->color_trc = AVCOL_TRC_GAMMA22;
188
218
            break;
189
4.31k
        case TRANSFER_FUNC_BT709:
190
4.31k
            p_context->color_trc = AVCOL_TRC_BT709;
191
4.31k
            break;
192
239
        case TRANSFER_FUNC_SMPTE_ST2084:
193
239
            p_context->color_trc = AVCOL_TRC_SMPTEST2084;
194
239
            break;
195
103
        case TRANSFER_FUNC_SMPTE_240:
196
103
            p_context->color_trc = AVCOL_TRC_SMPTE240M;
197
103
            break;
198
164k
        default:
199
164k
            p_context->color_trc = AVCOL_TRC_UNSPECIFIED;
200
164k
            break;
201
170k
    }
202
170k
    switch( p_fmt->primaries )
203
170k
    {
204
2.73k
        case COLOR_PRIMARIES_BT601_525:
205
2.73k
            p_context->color_primaries = AVCOL_PRI_SMPTE170M;
206
2.73k
            break;
207
1.76k
        case COLOR_PRIMARIES_BT601_625:
208
1.76k
            p_context->color_primaries = AVCOL_PRI_BT470BG;
209
1.76k
            break;
210
2.15k
        case COLOR_PRIMARIES_BT709:
211
2.15k
            p_context->color_primaries = AVCOL_PRI_BT709;
212
2.15k
            break;
213
677
        case COLOR_PRIMARIES_BT2020:
214
677
            p_context->color_primaries = AVCOL_PRI_BT2020;
215
677
            break;
216
105
        case COLOR_PRIMARIES_FCC1953:
217
105
            p_context->color_primaries = AVCOL_PRI_BT470M;
218
105
            break;
219
163k
        default:
220
163k
            p_context->color_primaries = AVCOL_PRI_UNSPECIFIED;
221
163k
            break;
222
170k
    }
223
170k
    switch( p_fmt->chroma_location )
224
170k
    {
225
0
        case CHROMA_LOCATION_LEFT:
226
0
            p_context->chroma_sample_location = AVCHROMA_LOC_LEFT;
227
0
            break;
228
0
        case CHROMA_LOCATION_CENTER:
229
0
            p_context->chroma_sample_location = AVCHROMA_LOC_CENTER;
230
0
            break;
231
0
        case CHROMA_LOCATION_TOP_LEFT:
232
0
            p_context->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;
233
0
            break;
234
0
        case CHROMA_LOCATION_TOP_CENTER:
235
0
            p_context->chroma_sample_location = AVCHROMA_LOC_TOP;
236
0
            break;
237
0
        case CHROMA_LOCATION_BOTTOM_LEFT:
238
0
            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOMLEFT;
239
0
            break;
240
0
        case CHROMA_LOCATION_BOTTOM_CENTER:
241
0
            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOM;
242
0
            break;
243
170k
        default:
244
170k
            p_context->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED;
245
170k
            break;
246
170k
    }
247
170k
}
Unexecuted instantiation: avcodec.c:set_video_color_settings
Unexecuted instantiation: encoder.c:set_video_color_settings
Unexecuted instantiation: fourcc.c:set_video_color_settings
video.c:set_video_color_settings
Line
Count
Source
144
170k
{
145
170k
    switch( p_fmt->color_range )
146
170k
    {
147
8.72k
    case COLOR_RANGE_FULL:
148
8.72k
        p_context->color_range = AVCOL_RANGE_JPEG;
149
8.72k
        break;
150
27.4k
    case COLOR_RANGE_LIMITED:
151
27.4k
        p_context->color_range = AVCOL_RANGE_MPEG;
152
161k
    case COLOR_RANGE_UNDEF: /* do nothing */
153
161k
        break;
154
0
    default:
155
0
        p_context->color_range = AVCOL_RANGE_UNSPECIFIED;
156
0
        break;
157
170k
    }
158
159
170k
    switch( p_fmt->space )
160
170k
    {
161
2.09k
        case COLOR_SPACE_BT709:
162
2.09k
            p_context->colorspace = AVCOL_SPC_BT709;
163
2.09k
            break;
164
2.60k
        case COLOR_SPACE_BT601:
165
2.60k
            p_context->colorspace = AVCOL_SPC_BT470BG;
166
2.60k
            break;
167
1.14k
        case COLOR_SPACE_BT2020:
168
1.14k
            p_context->colorspace = AVCOL_SPC_BT2020_CL;
169
1.14k
            break;
170
164k
        default:
171
164k
            p_context->colorspace = AVCOL_SPC_UNSPECIFIED;
172
164k
            break;
173
170k
    }
174
175
170k
    switch( p_fmt->transfer )
176
170k
    {
177
483
        case TRANSFER_FUNC_LINEAR:
178
483
            p_context->color_trc = AVCOL_TRC_LINEAR;
179
483
            break;
180
70
        case TRANSFER_FUNC_SRGB:
181
70
            p_context->color_trc = AVCOL_TRC_GAMMA22;
182
70
            break;
183
790
        case TRANSFER_FUNC_BT470_BG:
184
790
            p_context->color_trc = AVCOL_TRC_GAMMA28;
185
790
            break;
186
218
        case TRANSFER_FUNC_BT470_M:
187
218
            p_context->color_trc = AVCOL_TRC_GAMMA22;
188
218
            break;
189
4.31k
        case TRANSFER_FUNC_BT709:
190
4.31k
            p_context->color_trc = AVCOL_TRC_BT709;
191
4.31k
            break;
192
239
        case TRANSFER_FUNC_SMPTE_ST2084:
193
239
            p_context->color_trc = AVCOL_TRC_SMPTEST2084;
194
239
            break;
195
103
        case TRANSFER_FUNC_SMPTE_240:
196
103
            p_context->color_trc = AVCOL_TRC_SMPTE240M;
197
103
            break;
198
164k
        default:
199
164k
            p_context->color_trc = AVCOL_TRC_UNSPECIFIED;
200
164k
            break;
201
170k
    }
202
170k
    switch( p_fmt->primaries )
203
170k
    {
204
2.73k
        case COLOR_PRIMARIES_BT601_525:
205
2.73k
            p_context->color_primaries = AVCOL_PRI_SMPTE170M;
206
2.73k
            break;
207
1.76k
        case COLOR_PRIMARIES_BT601_625:
208
1.76k
            p_context->color_primaries = AVCOL_PRI_BT470BG;
209
1.76k
            break;
210
2.15k
        case COLOR_PRIMARIES_BT709:
211
2.15k
            p_context->color_primaries = AVCOL_PRI_BT709;
212
2.15k
            break;
213
677
        case COLOR_PRIMARIES_BT2020:
214
677
            p_context->color_primaries = AVCOL_PRI_BT2020;
215
677
            break;
216
105
        case COLOR_PRIMARIES_FCC1953:
217
105
            p_context->color_primaries = AVCOL_PRI_BT470M;
218
105
            break;
219
163k
        default:
220
163k
            p_context->color_primaries = AVCOL_PRI_UNSPECIFIED;
221
163k
            break;
222
170k
    }
223
170k
    switch( p_fmt->chroma_location )
224
170k
    {
225
0
        case CHROMA_LOCATION_LEFT:
226
0
            p_context->chroma_sample_location = AVCHROMA_LOC_LEFT;
227
0
            break;
228
0
        case CHROMA_LOCATION_CENTER:
229
0
            p_context->chroma_sample_location = AVCHROMA_LOC_CENTER;
230
0
            break;
231
0
        case CHROMA_LOCATION_TOP_LEFT:
232
0
            p_context->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;
233
0
            break;
234
0
        case CHROMA_LOCATION_TOP_CENTER:
235
0
            p_context->chroma_sample_location = AVCHROMA_LOC_TOP;
236
0
            break;
237
0
        case CHROMA_LOCATION_BOTTOM_LEFT:
238
0
            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOMLEFT;
239
0
            break;
240
0
        case CHROMA_LOCATION_BOTTOM_CENTER:
241
0
            p_context->chroma_sample_location = AVCHROMA_LOC_BOTTOM;
242
0
            break;
243
170k
        default:
244
170k
            p_context->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED;
245
170k
            break;
246
170k
    }
247
170k
}
Unexecuted instantiation: subtitle.c:set_video_color_settings
Unexecuted instantiation: audio.c:set_video_color_settings
248
249
static inline void get_video_color_settings( const AVCodecContext *ctx,
250
                                             video_format_t *fmt )
251
158k
{
252
158k
    switch ( ctx->color_range )
253
158k
    {
254
23.1k
    case AVCOL_RANGE_JPEG:
255
23.1k
        fmt->color_range = COLOR_RANGE_FULL;
256
23.1k
        break;
257
63.3k
    case AVCOL_RANGE_MPEG:
258
63.3k
        fmt->color_range = COLOR_RANGE_LIMITED;
259
63.3k
        break;
260
71.6k
    default: /* do nothing */
261
71.6k
        break;
262
158k
    }
263
264
158k
    switch( ctx->colorspace )
265
158k
    {
266
1.43k
        case AVCOL_SPC_BT709:
267
1.43k
            fmt->space = COLOR_SPACE_BT709;
268
1.43k
            break;
269
932
        case AVCOL_SPC_SMPTE170M:
270
1.58k
        case AVCOL_SPC_BT470BG:
271
1.58k
            fmt->space = COLOR_SPACE_BT601;
272
1.58k
            break;
273
2.51k
        case AVCOL_SPC_BT2020_NCL:
274
3.27k
        case AVCOL_SPC_BT2020_CL:
275
3.27k
            fmt->space = COLOR_SPACE_BT2020;
276
3.27k
            break;
277
151k
        default:
278
151k
            break;
279
158k
    }
280
281
158k
    switch( ctx->color_trc )
282
158k
    {
283
893
        case AVCOL_TRC_LINEAR:
284
893
            fmt->transfer = TRANSFER_FUNC_LINEAR;
285
893
            break;
286
1.08k
        case AVCOL_TRC_GAMMA22:
287
1.08k
            fmt->transfer = TRANSFER_FUNC_SRGB;
288
1.08k
            break;
289
4.03k
        case AVCOL_TRC_BT709:
290
4.03k
            fmt->transfer = TRANSFER_FUNC_BT709;
291
4.03k
            break;
292
143
        case AVCOL_TRC_SMPTE170M:
293
1.84k
        case AVCOL_TRC_BT2020_10:
294
2.12k
        case AVCOL_TRC_BT2020_12:
295
2.12k
            fmt->transfer = TRANSFER_FUNC_BT2020;
296
2.12k
            break;
297
283
        case AVCOL_TRC_ARIB_STD_B67:
298
283
            fmt->transfer = TRANSFER_FUNC_ARIB_B67;
299
283
            break;
300
80
        case AVCOL_TRC_SMPTE2084:
301
80
            fmt->transfer = TRANSFER_FUNC_SMPTE_ST2084;
302
80
            break;
303
146
        case AVCOL_TRC_SMPTE240M:
304
146
            fmt->transfer = TRANSFER_FUNC_SMPTE_240;
305
146
            break;
306
189
        case AVCOL_TRC_GAMMA28:
307
189
            fmt->transfer = TRANSFER_FUNC_BT470_BG;
308
189
            break;
309
149k
        default:
310
149k
            break;
311
158k
    }
312
313
158k
    switch( ctx->color_primaries )
314
158k
    {
315
1.33k
        case AVCOL_PRI_BT709:
316
1.33k
            fmt->primaries = COLOR_PRIMARIES_BT709;
317
1.33k
            break;
318
473
        case AVCOL_PRI_BT470BG:
319
473
            fmt->primaries = COLOR_PRIMARIES_BT601_625;
320
473
            break;
321
1.25k
        case AVCOL_PRI_SMPTE170M:
322
1.62k
        case AVCOL_PRI_SMPTE240M:
323
1.62k
            fmt->primaries = COLOR_PRIMARIES_BT601_525;
324
1.62k
            break;
325
117
        case AVCOL_PRI_BT2020:
326
117
            fmt->primaries = COLOR_PRIMARIES_BT2020;
327
117
            break;
328
154k
        default:
329
154k
            break;
330
158k
    }
331
332
158k
    switch( ctx->chroma_sample_location )
333
158k
    {
334
75.2k
        case AVCHROMA_LOC_LEFT:
335
75.2k
            fmt->chroma_location = CHROMA_LOCATION_LEFT;
336
75.2k
            break;
337
8.09k
        case AVCHROMA_LOC_CENTER:
338
8.09k
            fmt->chroma_location = CHROMA_LOCATION_CENTER;
339
8.09k
            break;
340
10.2k
        case AVCHROMA_LOC_TOPLEFT:
341
10.2k
            fmt->chroma_location = CHROMA_LOCATION_TOP_LEFT;
342
10.2k
            break;
343
64.5k
        default:
344
64.5k
            break;
345
158k
    }
346
158k
}
Unexecuted instantiation: avcodec.c:get_video_color_settings
Unexecuted instantiation: encoder.c:get_video_color_settings
Unexecuted instantiation: fourcc.c:get_video_color_settings
video.c:get_video_color_settings
Line
Count
Source
251
158k
{
252
158k
    switch ( ctx->color_range )
253
158k
    {
254
23.1k
    case AVCOL_RANGE_JPEG:
255
23.1k
        fmt->color_range = COLOR_RANGE_FULL;
256
23.1k
        break;
257
63.3k
    case AVCOL_RANGE_MPEG:
258
63.3k
        fmt->color_range = COLOR_RANGE_LIMITED;
259
63.3k
        break;
260
71.6k
    default: /* do nothing */
261
71.6k
        break;
262
158k
    }
263
264
158k
    switch( ctx->colorspace )
265
158k
    {
266
1.43k
        case AVCOL_SPC_BT709:
267
1.43k
            fmt->space = COLOR_SPACE_BT709;
268
1.43k
            break;
269
932
        case AVCOL_SPC_SMPTE170M:
270
1.58k
        case AVCOL_SPC_BT470BG:
271
1.58k
            fmt->space = COLOR_SPACE_BT601;
272
1.58k
            break;
273
2.51k
        case AVCOL_SPC_BT2020_NCL:
274
3.27k
        case AVCOL_SPC_BT2020_CL:
275
3.27k
            fmt->space = COLOR_SPACE_BT2020;
276
3.27k
            break;
277
151k
        default:
278
151k
            break;
279
158k
    }
280
281
158k
    switch( ctx->color_trc )
282
158k
    {
283
893
        case AVCOL_TRC_LINEAR:
284
893
            fmt->transfer = TRANSFER_FUNC_LINEAR;
285
893
            break;
286
1.08k
        case AVCOL_TRC_GAMMA22:
287
1.08k
            fmt->transfer = TRANSFER_FUNC_SRGB;
288
1.08k
            break;
289
4.03k
        case AVCOL_TRC_BT709:
290
4.03k
            fmt->transfer = TRANSFER_FUNC_BT709;
291
4.03k
            break;
292
143
        case AVCOL_TRC_SMPTE170M:
293
1.84k
        case AVCOL_TRC_BT2020_10:
294
2.12k
        case AVCOL_TRC_BT2020_12:
295
2.12k
            fmt->transfer = TRANSFER_FUNC_BT2020;
296
2.12k
            break;
297
283
        case AVCOL_TRC_ARIB_STD_B67:
298
283
            fmt->transfer = TRANSFER_FUNC_ARIB_B67;
299
283
            break;
300
80
        case AVCOL_TRC_SMPTE2084:
301
80
            fmt->transfer = TRANSFER_FUNC_SMPTE_ST2084;
302
80
            break;
303
146
        case AVCOL_TRC_SMPTE240M:
304
146
            fmt->transfer = TRANSFER_FUNC_SMPTE_240;
305
146
            break;
306
189
        case AVCOL_TRC_GAMMA28:
307
189
            fmt->transfer = TRANSFER_FUNC_BT470_BG;
308
189
            break;
309
149k
        default:
310
149k
            break;
311
158k
    }
312
313
158k
    switch( ctx->color_primaries )
314
158k
    {
315
1.33k
        case AVCOL_PRI_BT709:
316
1.33k
            fmt->primaries = COLOR_PRIMARIES_BT709;
317
1.33k
            break;
318
473
        case AVCOL_PRI_BT470BG:
319
473
            fmt->primaries = COLOR_PRIMARIES_BT601_625;
320
473
            break;
321
1.25k
        case AVCOL_PRI_SMPTE170M:
322
1.62k
        case AVCOL_PRI_SMPTE240M:
323
1.62k
            fmt->primaries = COLOR_PRIMARIES_BT601_525;
324
1.62k
            break;
325
117
        case AVCOL_PRI_BT2020:
326
117
            fmt->primaries = COLOR_PRIMARIES_BT2020;
327
117
            break;
328
154k
        default:
329
154k
            break;
330
158k
    }
331
332
158k
    switch( ctx->chroma_sample_location )
333
158k
    {
334
75.2k
        case AVCHROMA_LOC_LEFT:
335
75.2k
            fmt->chroma_location = CHROMA_LOCATION_LEFT;
336
75.2k
            break;
337
8.09k
        case AVCHROMA_LOC_CENTER:
338
8.09k
            fmt->chroma_location = CHROMA_LOCATION_CENTER;
339
8.09k
            break;
340
10.2k
        case AVCHROMA_LOC_TOPLEFT:
341
10.2k
            fmt->chroma_location = CHROMA_LOCATION_TOP_LEFT;
342
10.2k
            break;
343
64.5k
        default:
344
64.5k
            break;
345
158k
    }
346
158k
}
Unexecuted instantiation: subtitle.c:get_video_color_settings
Unexecuted instantiation: audio.c:get_video_color_settings
347
348
#endif