#ifndef SRC_SETTINGS #define SRC_SETTINGS #include "common/settings_base.h" #define SCREEN_MODE_WINDOW 0 #define SCREEN_MODE_FULLSCREEN 1 #define SCREEN_MODE_HEADLESS 2 // The singleton “Settings” namespace class Settings { public: // General section static inline Setting vendorid{"vendor-id", 4884}; static inline Setting productid{"product-id", 5408}; static inline Setting width{"width", 720}; static inline Setting height{"height", 576}; static inline Setting sourceFps{"source-fps", 60}; static inline Setting fps{"fps", 60}; static inline Setting screenMode{"window-mode", 0}; static inline Setting cursor{"cursor", false}; static inline Setting loglevel{"log-level", 2}; // Device configurations section static inline Setting encryption{"encryption", false}; static inline Setting autoconnect{"autoconnect", true}; static inline Setting weakCharge{"weak-charge", true}; static inline Setting leftDrive{"left-hand-drive", true}; static inline Setting nightMode{"night-mode", 2}; static inline Setting wifi5{"wifi-5", true}; static inline Setting bluetoothAudio{"bluetooth-audio", false}; static inline Setting micType{"mic-type", 1}; static inline Setting dpi{"android-dpi", 120}; static inline Setting androidMode{"android-resolution", 1}; static inline Setting mediaDelay{"android-media-delay", 300}; // Application configuration section static inline Setting fontSize{"font-size", 30}; static inline Setting vsync{"vsync", false}; static inline Setting hwDecode{"hw-decode", true}; static inline Setting renderingBuffer{"rendering-buffer", 5}; static inline Setting eventsSkip{"draw-skip-events", 3}; static inline Setting forceRedraw{"force-redraw", 0}; static inline Setting forceRedrawTimeout{"force-redraw-timeout", 0}; static inline Setting aspectCorrection{"aspect-correction", 1}; static inline Setting renderDriver{"renderer-driver", ""}; static inline Setting alternativeRendering{"alternative-rendering", false}; static inline Setting fastScale{"fast-render-scale", false}; static inline Setting usbQueue{"async-usb-calls", 16}; static inline Setting usbTransferSize{"usb-buffer-size", 20480}; static inline Setting usbBuffer{"usb-buffer", 64}; static inline Setting videoQueue{"video-buffer-size", 64}; static inline Setting audioQueue{"audio-buffer-size", 64}; static inline Setting audioDelay{"audio-buffer-wait", 2}; static inline Setting audioDelayCall{"audio-buffer-wait-call", 6}; static inline Setting audioFade{"audio-fade", 0.3}; static inline Setting audioAuxDelay{"audio-aux-delay", 200}; static inline Setting audioBuffer{"audio-buffer-samples", 512}; static inline Setting audioDriver{"audio-driver", ""}; static inline Setting onConnect{"on-connect-script", ""}; static inline Setting onDisconnect{"on-disconnect-script", ""}; // Key mapping section static inline KeySetting keySiri{"key-siri", 115, 5}; static inline KeySetting keyNightOn{"key-nightmode-on", 122, 16}; static inline KeySetting keyNightOff{"key-nightmode-off", 120, 17}; static inline KeySetting keyLeft{"key-left", 1073741904, 100}; static inline KeySetting keyRight{"key-right", 1073741903, 101}; static inline KeySetting keyEnter{"key-enter", 13, 104}; static inline KeySetting keyEnterUp{"key-enterup", 0, 105}; static inline KeySetting keyBack{"key-back", 8, 106}; static inline KeySetting keyUp{"key-up", 1073741906, 113}; static inline KeySetting keyDown{"key-down", 1073741905, 114}; static inline KeySetting keyHome{"key-home", 104, 200}; static inline KeySetting keyPlay{"key-play", 93, 201}; static inline KeySetting keyPause{"key-pause", 91, 202}; static inline KeySetting keyPlayPause{"key-play-toggle", 112, 203}; static inline KeySetting keyNext{"key-next", 46, 204}; static inline KeySetting keyPrev{"key-previous", 44, 205}; static inline KeySetting keyAccept{"key-call-accept", 97, 300}; static inline KeySetting keyReject{"key-call-reject", 115, 301}; static inline KeySetting keyVideoFocus{"key-video-focus", 118, 500}; static inline KeySetting keyVideoRelease{"key-video-release", 98, 501}; static inline KeySetting keyNavFocus{"key-nav-focus", 110, 508}; static inline KeySetting keyNavRelease{"key-nav-release", 109, 509}; static inline Setting keyPipe{"key-pipe-path", ""}; // Debug section static inline Setting codecLowDelay{"decode-low-delay", true}; static inline Setting codecFast{"decode-fast", true}; static inline Setting debugOverlay{"debug-overlay", false}; static bool load(const std::string &filename); static void print(); static inline bool isFullscreen() { return screenMode == SCREEN_MODE_FULLSCREEN; }; static inline bool isHeadless() { return screenMode == SCREEN_MODE_HEADLESS; }; private: static void trim(std::string &s); }; #endif /* SRC_SETTINGS */