summaryrefslogtreecommitdiffstats
path: root/src/options/general.h
blob: 454ca60317a169c44ec941fe11849069c4cd2ccf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once

#include "common/ffdata.h"

typedef enum FF_A_PACKED FFDsForceDrmType {
    FF_DS_FORCE_DRM_TYPE_FALSE = 0,  // Disable
    FF_DS_FORCE_DRM_TYPE_TRUE = 1,   // Try `libdrm`, then `sysfs` if libdrm failed
    FF_DS_FORCE_DRM_TYPE_SYSFS_ONLY, // Use `/sys/class/drm` only
} FFDsForceDrmType;

typedef struct FFOptionsGeneral {
    bool multithreading;
    int32_t processingTimeout;
    bool detectVersion;
    FFstrbuf playerName;

// Module options that cannot be put in module option structure
#if defined(__linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__) || defined(__GNU__)
    FFDsForceDrmType dsForceDrm;
#endif
} FFOptionsGeneral;

const char* ffOptionsParseGeneralJsonConfig(FFOptionsGeneral* options, yyjson_val* root);
bool ffOptionsParseGeneralCommandLine(FFOptionsGeneral* options, const char* key, const char* value);
void ffOptionsInitGeneral(FFOptionsGeneral* options);
void ffOptionsDestroyGeneral(FFOptionsGeneral* options);
void ffOptionsGenerateGeneralJsonConfig(FFdata* data, FFOptionsGeneral* options);