2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "VideoSettings.h"
11 #include "threads/CriticalSection.h"
15 CVideoSettings::CVideoSettings()
17 m_InterlaceMethod
= VS_INTERLACEMETHOD_AUTO
;
18 m_ScalingMethod
= VS_SCALINGMETHOD_LINEAR
;
19 m_ViewMode
= ViewModeNormal
;
20 m_CustomZoomAmount
= 1.0f
;
21 m_CustomPixelRatio
= 1.0f
;
22 m_CustomVerticalShift
= 0.0f
;
23 m_CustomNonLinStretch
= false;
25 m_SubtitleStream
= -1;
26 m_SubtitleDelay
= 0.0f
;
27 m_subtitleVerticalPosition
= 0;
28 m_subtitleVerticalPositionSave
= false;
35 m_PostProcess
= false;
36 m_VolumeAmplification
= 0;
40 m_StereoInvert
= false;
42 m_ToneMapMethod
= VS_TONEMAPMETHOD_OFF
;
43 m_ToneMapParam
= 1.0f
;
48 bool CVideoSettings::operator!=(const CVideoSettings
&right
) const
50 if (m_InterlaceMethod
!= right
.m_InterlaceMethod
) return true;
51 if (m_ScalingMethod
!= right
.m_ScalingMethod
) return true;
52 if (m_ViewMode
!= right
.m_ViewMode
) return true;
53 if (m_CustomZoomAmount
!= right
.m_CustomZoomAmount
) return true;
54 if (m_CustomPixelRatio
!= right
.m_CustomPixelRatio
) return true;
55 if (m_CustomVerticalShift
!= right
.m_CustomVerticalShift
) return true;
56 if (m_CustomNonLinStretch
!= right
.m_CustomNonLinStretch
) return true;
57 if (m_AudioStream
!= right
.m_AudioStream
) return true;
58 if (m_SubtitleStream
!= right
.m_SubtitleStream
) return true;
59 if (m_SubtitleDelay
!= right
.m_SubtitleDelay
) return true;
60 if (m_subtitleVerticalPosition
!= right
.m_subtitleVerticalPosition
)
62 if (m_subtitleVerticalPositionSave
!= right
.m_subtitleVerticalPositionSave
)
64 if (m_SubtitleOn
!= right
.m_SubtitleOn
) return true;
65 if (m_Brightness
!= right
.m_Brightness
) return true;
66 if (m_Contrast
!= right
.m_Contrast
) return true;
67 if (m_Gamma
!= right
.m_Gamma
) return true;
68 if (m_Sharpness
!= right
.m_Sharpness
) return true;
69 if (m_NoiseReduction
!= right
.m_NoiseReduction
) return true;
70 if (m_PostProcess
!= right
.m_PostProcess
) return true;
71 if (m_VolumeAmplification
!= right
.m_VolumeAmplification
) return true;
72 if (m_AudioDelay
!= right
.m_AudioDelay
) return true;
73 if (m_ResumeTime
!= right
.m_ResumeTime
) return true;
74 if (m_StereoMode
!= right
.m_StereoMode
) return true;
75 if (m_StereoInvert
!= right
.m_StereoInvert
) return true;
76 if (m_VideoStream
!= right
.m_VideoStream
) return true;
77 if (m_ToneMapMethod
!= right
.m_ToneMapMethod
) return true;
78 if (m_ToneMapParam
!= right
.m_ToneMapParam
) return true;
79 if (m_Orientation
!= right
.m_Orientation
) return true;
80 if (m_CenterMixLevel
!= right
.m_CenterMixLevel
) return true;
84 //------------------------------------------------------------------------------
85 // CVideoSettingsLocked
86 //------------------------------------------------------------------------------
87 CVideoSettingsLocked::CVideoSettingsLocked(CVideoSettings
&vs
, CCriticalSection
&critSection
) :
88 m_videoSettings(vs
), m_critSection(critSection
)
92 void CVideoSettingsLocked::SetSubtitleStream(int stream
)
94 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
95 m_videoSettings
.m_SubtitleStream
= stream
;
98 void CVideoSettingsLocked::SetSubtitleVisible(bool visible
)
100 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
101 m_videoSettings
.m_SubtitleOn
= visible
;
104 void CVideoSettingsLocked::SetAudioStream(int stream
)
106 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
107 m_videoSettings
.m_AudioStream
= stream
;
110 void CVideoSettingsLocked::SetVideoStream(int stream
)
112 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
113 m_videoSettings
.m_VideoStream
= stream
;
116 void CVideoSettingsLocked::SetAudioDelay(float delay
)
118 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
119 m_videoSettings
.m_AudioDelay
= delay
;
122 void CVideoSettingsLocked::SetSubtitleDelay(float delay
)
124 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
125 m_videoSettings
.m_SubtitleDelay
= delay
;
128 void CVideoSettingsLocked::SetSubtitleVerticalPosition(int value
, bool save
)
130 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
131 m_videoSettings
.m_subtitleVerticalPosition
= value
;
132 m_videoSettings
.m_subtitleVerticalPositionSave
= save
;
135 void CVideoSettingsLocked::SetViewMode(int mode
, float zoom
, float par
, float shift
, bool stretch
)
137 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
138 m_videoSettings
.m_ViewMode
= mode
;
139 m_videoSettings
.m_CustomZoomAmount
= zoom
;
140 m_videoSettings
.m_CustomPixelRatio
= par
;
141 m_videoSettings
.m_CustomVerticalShift
= shift
;
142 m_videoSettings
.m_CustomNonLinStretch
= stretch
;
145 void CVideoSettingsLocked::SetVolumeAmplification(float amp
)
147 std::unique_lock
<CCriticalSection
> lock(m_critSection
);
148 m_videoSettings
.m_VolumeAmplification
= amp
;