1 /* 2 * Copyright (C) 2005-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #pragma once 10 11 // VideoSettings.h: interface for the CVideoSettings class. 12 // 13 ////////////////////////////////////////////////////////////////////// 14 15 enum EINTERLACEMETHOD 16 { 17 VS_INTERLACEMETHOD_NONE=0, 18 VS_INTERLACEMETHOD_AUTO=1, 19 VS_INTERLACEMETHOD_RENDER_BLEND=2, 20 VS_INTERLACEMETHOD_RENDER_WEAVE=4, 21 VS_INTERLACEMETHOD_RENDER_BOB=6, 22 VS_INTERLACEMETHOD_DEINTERLACE=7, 23 VS_INTERLACEMETHOD_VDPAU_BOB=8, 24 VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE=11, 25 VS_INTERLACEMETHOD_VDPAU_TEMPORAL=12, 26 VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF=13, 27 VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL=14, 28 VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF=15, 29 VS_INTERLACEMETHOD_DEINTERLACE_HALF=16, 30 VS_INTERLACEMETHOD_VAAPI_BOB = 22, 31 VS_INTERLACEMETHOD_VAAPI_MADI = 23, 32 VS_INTERLACEMETHOD_VAAPI_MACI = 24, 33 VS_INTERLACEMETHOD_DXVA_AUTO = 32, 34 VS_INTERLACEMETHOD_MAX // do not use and keep as last enum value. 35 }; 36 37 enum ESCALINGMETHOD 38 { 39 VS_SCALINGMETHOD_NEAREST=0, 40 VS_SCALINGMETHOD_LINEAR, 41 VS_SCALINGMETHOD_CUBIC_B_SPLINE, 42 VS_SCALINGMETHOD_CUBIC_MITCHELL, 43 VS_SCALINGMETHOD_CUBIC_CATMULL, 44 VS_SCALINGMETHOD_CUBIC_0_075, 45 VS_SCALINGMETHOD_CUBIC_0_1, 46 VS_SCALINGMETHOD_LANCZOS2, 47 VS_SCALINGMETHOD_LANCZOS3_FAST, 48 VS_SCALINGMETHOD_LANCZOS3, 49 VS_SCALINGMETHOD_SINC8, 50 VS_SCALINGMETHOD_BICUBIC_SOFTWARE, 51 VS_SCALINGMETHOD_LANCZOS_SOFTWARE, 52 VS_SCALINGMETHOD_SINC_SOFTWARE, 53 VS_SCALINGMETHOD_VDPAU_HARDWARE, 54 VS_SCALINGMETHOD_DXVA_HARDWARE, 55 VS_SCALINGMETHOD_AUTO, 56 VS_SCALINGMETHOD_SPLINE36_FAST, 57 VS_SCALINGMETHOD_SPLINE36, 58 VS_SCALINGMETHOD_MAX // do not use and keep as last enum value. 59 }; 60 61 enum ETONEMAPMETHOD 62 { 63 VS_TONEMAPMETHOD_OFF = 0, 64 VS_TONEMAPMETHOD_REINHARD = 1, 65 VS_TONEMAPMETHOD_ACES = 2, 66 VS_TONEMAPMETHOD_HABLE = 3, 67 VS_TONEMAPMETHOD_MAX 68 }; 69 70 enum ViewMode 71 { 72 ViewModeNormal = 0, 73 ViewModeZoom, 74 ViewModeStretch4x3, 75 ViewModeWideZoom, 76 ViewModeStretch16x9, 77 ViewModeOriginal, 78 ViewModeCustom, 79 ViewModeStretch16x9Nonlin, 80 ViewModeZoom120Width, 81 ViewModeZoom110Width 82 }; 83 84 class CVideoSettings 85 { 86 public: 87 CVideoSettings(); 88 ~CVideoSettings() = default; 89 90 bool operator!=(const CVideoSettings &right) const; 91 92 EINTERLACEMETHOD m_InterlaceMethod; 93 ESCALINGMETHOD m_ScalingMethod; 94 int m_ViewMode; // current view mode 95 float m_CustomZoomAmount; // custom setting zoom amount 96 float m_CustomPixelRatio; // custom setting pixel ratio 97 float m_CustomVerticalShift; // custom setting vertical shift 98 bool m_CustomNonLinStretch; 99 int m_AudioStream; 100 float m_VolumeAmplification; 101 int m_SubtitleStream; 102 float m_SubtitleDelay; 103 bool m_SubtitleOn; 104 float m_Brightness; 105 float m_Contrast; 106 float m_Gamma; 107 float m_NoiseReduction; 108 bool m_PostProcess; 109 float m_Sharpness; 110 float m_AudioDelay; 111 int m_ResumeTime; 112 int m_StereoMode; 113 bool m_StereoInvert; 114 int m_VideoStream; 115 int m_ToneMapMethod; 116 float m_ToneMapParam; 117 int m_Orientation; 118 int m_CenterMixLevel; // relative to metadata or default 119 }; 120 121 class CCriticalSection; 122 class CVideoSettingsLocked 123 { 124 public: 125 CVideoSettingsLocked(CVideoSettings &vs, CCriticalSection &critSection); 126 virtual ~CVideoSettingsLocked() = default; 127 128 CVideoSettingsLocked(CVideoSettingsLocked const &) = delete; 129 void operator=(CVideoSettingsLocked const &x) = delete; 130 131 void SetSubtitleStream(int stream); 132 void SetSubtitleVisible(bool visible); 133 void SetAudioStream(int stream); 134 void SetVideoStream(int stream); 135 void SetAudioDelay(float delay); 136 void SetSubtitleDelay(float delay); 137 void SetViewMode(int mode, float zoom, float par, float shift, bool stretch); 138 void SetVolumeAmplification(float amp); 139 140 protected: 141 CVideoSettings &m_videoSettings; 142 CCriticalSection &m_critSection; 143 }; 144