Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
1d65bfb5
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1d65bfb5
编写于
12月 23, 2019
作者:
J
Jim
提交者:
GitHub
12月 23, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2068 from cg2121/adv-audio-percent
UI: Add option to use percent instead of dB
上级
c25d53c4
a2298f3f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
104 addition
and
2 deletion
+104
-2
UI/adv-audio-control.cpp
UI/adv-audio-control.cpp
+40
-2
UI/adv-audio-control.hpp
UI/adv-audio-control.hpp
+11
-0
UI/data/locale/en-US.ini
UI/data/locale/en-US.ini
+1
-0
UI/window-basic-adv-audio.cpp
UI/window-basic-adv-audio.cpp
+49
-0
UI/window-basic-adv-audio.hpp
UI/window-basic-adv-audio.hpp
+3
-0
未找到文件。
UI/adv-audio-control.cpp
浏览文件 @
1d65bfb5
...
...
@@ -32,7 +32,9 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
labelL
=
new
QLabel
();
labelR
=
new
QLabel
();
nameLabel
=
new
QLabel
();
stackedWidget
=
new
QStackedWidget
();
volume
=
new
QDoubleSpinBox
();
percent
=
new
QSpinBox
();
forceMono
=
new
QCheckBox
();
balance
=
new
BalanceSlider
();
#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
...
...
@@ -84,6 +86,20 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
if
(
volume
->
value
()
<
MIN_DB
)
volume
->
setSpecialValueText
(
"-inf dB"
);
percent
->
setMinimum
(
0
);
percent
->
setMaximum
(
2000
);
percent
->
setSuffix
(
"%"
);
percent
->
setValue
((
int
)(
obs_source_get_volume
(
source
)
*
100.0
f
));
percent
->
setFixedWidth
(
100
);
stackedWidget
->
addWidget
(
volume
);
stackedWidget
->
addWidget
(
percent
);
VolumeType
volType
=
(
VolumeType
)
config_get_int
(
GetGlobalConfig
(),
"BasicWindow"
,
"AdvAudioVolumeType"
);
SetVolumeWidget
(
volType
);
forceMono
->
setChecked
((
flags
&
OBS_SOURCE_FLAG_FORCE_MONO
)
!=
0
);
forceMonoContainer
->
layout
()
->
addWidget
(
forceMono
);
...
...
@@ -160,6 +176,8 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
QWidget
::
connect
(
volume
,
SIGNAL
(
valueChanged
(
double
)),
this
,
SLOT
(
volumeChanged
(
double
)));
QWidget
::
connect
(
percent
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
percentChanged
(
int
)));
QWidget
::
connect
(
forceMono
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
downmixMonoChanged
(
bool
)));
QWidget
::
connect
(
balance
,
SIGNAL
(
valueChanged
(
int
)),
this
,
...
...
@@ -191,7 +209,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
OBSAdvAudioCtrl
::~
OBSAdvAudioCtrl
()
{
nameLabel
->
deleteLater
();
volume
->
deleteLater
();
stackedWidget
->
deleteLater
();
forceMonoContainer
->
deleteLater
();
balanceContainer
->
deleteLater
();
syncOffset
->
deleteLater
();
...
...
@@ -207,7 +225,7 @@ void OBSAdvAudioCtrl::ShowAudioControl(QGridLayout *layout)
int
idx
=
0
;
layout
->
addWidget
(
nameLabel
,
lastRow
,
idx
++
);
layout
->
addWidget
(
volume
,
lastRow
,
idx
++
);
layout
->
addWidget
(
stackedWidget
,
lastRow
,
idx
++
);
layout
->
addWidget
(
forceMonoContainer
,
lastRow
,
idx
++
);
layout
->
addWidget
(
balanceContainer
,
lastRow
,
idx
++
);
layout
->
addWidget
(
syncOffset
,
lastRow
,
idx
++
);
...
...
@@ -270,7 +288,10 @@ void OBSAdvAudioCtrl::SourceFlagsChanged(uint32_t flags)
void
OBSAdvAudioCtrl
::
SourceVolumeChanged
(
float
value
)
{
volume
->
blockSignals
(
true
);
percent
->
blockSignals
(
true
);
volume
->
setValue
(
obs_mul_to_db
(
value
));
percent
->
setValue
((
int
)
std
::
round
(
value
*
100.0
f
));
percent
->
blockSignals
(
false
);
volume
->
blockSignals
(
false
);
}
...
...
@@ -303,6 +324,11 @@ void OBSAdvAudioCtrl::volumeChanged(double db)
obs_source_set_volume
(
source
,
val
);
}
void
OBSAdvAudioCtrl
::
percentChanged
(
int
percent
)
{
obs_source_set_volume
(
source
,
(
float
)
percent
/
100.0
f
);
}
void
OBSAdvAudioCtrl
::
downmixMonoChanged
(
bool
checked
)
{
uint32_t
flags
=
obs_source_get_flags
(
source
);
...
...
@@ -412,3 +438,15 @@ void OBSAdvAudioCtrl::mixer6Changed(bool checked)
{
setMixer
(
source
,
5
,
checked
);
}
void
OBSAdvAudioCtrl
::
SetVolumeWidget
(
VolumeType
type
)
{
switch
(
type
)
{
case
VolumeType
::
Percent
:
stackedWidget
->
setCurrentWidget
(
percent
);
break
;
case
VolumeType
::
dB
:
stackedWidget
->
setCurrentWidget
(
volume
);
break
;
}
}
UI/adv-audio-control.hpp
浏览文件 @
1d65bfb5
...
...
@@ -4,6 +4,7 @@
#include <QWidget>
#include <QPointer>
#include <QDoubleSpinBox>
#include <QStackedWidget>
#include "balance-slider.hpp"
class
QGridLayout
;
...
...
@@ -12,6 +13,11 @@ class QSpinBox;
class
QCheckBox
;
class
QComboBox
;
enum
class
VolumeType
{
dB
,
Percent
,
};
class
OBSAdvAudioCtrl
:
public
QObject
{
Q_OBJECT
...
...
@@ -23,6 +29,8 @@ private:
QPointer
<
QWidget
>
balanceContainer
;
QPointer
<
QLabel
>
nameLabel
;
QPointer
<
QStackedWidget
>
stackedWidget
;
QPointer
<
QSpinBox
>
percent
;
QPointer
<
QDoubleSpinBox
>
volume
;
QPointer
<
QCheckBox
>
forceMono
;
QPointer
<
BalanceSlider
>
balance
;
...
...
@@ -54,6 +62,8 @@ public:
inline
obs_source_t
*
GetSource
()
const
{
return
source
;
}
void
ShowAudioControl
(
QGridLayout
*
layout
);
void
SetVolumeWidget
(
VolumeType
type
);
public
slots
:
void
SourceFlagsChanged
(
uint32_t
flags
);
void
SourceVolumeChanged
(
float
volume
);
...
...
@@ -61,6 +71,7 @@ public slots:
void
SourceMixersChanged
(
uint32_t
mixers
);
void
volumeChanged
(
double
db
);
void
percentChanged
(
int
percent
);
void
downmixMonoChanged
(
bool
checked
);
void
balanceChanged
(
int
val
);
void
syncOffsetChanged
(
int
milliseconds
);
...
...
UI/data/locale/en-US.ini
浏览文件 @
1d65bfb5
...
...
@@ -91,6 +91,7 @@ Default="(Default)"
Calculating
=
"Calculating..."
Fullscreen
=
"Fullscreen"
Windowed
=
"Windowed"
Percent
=
"Percent"
# warning if program already open
AlreadyRunning.Title
=
"OBS is already running"
...
...
UI/window-basic-adv-audio.cpp
浏览文件 @
1d65bfb5
...
...
@@ -93,6 +93,11 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent)
setSizeGripEnabled
(
true
);
setWindowModality
(
Qt
::
NonModal
);
setAttribute
(
Qt
::
WA_DeleteOnClose
,
true
);
setContextMenuPolicy
(
Qt
::
CustomContextMenu
);
connect
(
this
,
SIGNAL
(
customContextMenuRequested
(
const
QPoint
&
)),
this
,
SLOT
(
ShowContextMenu
(
const
QPoint
&
)));
}
OBSBasicAdvAudio
::~
OBSBasicAdvAudio
()
...
...
@@ -168,3 +173,47 @@ void OBSBasicAdvAudio::SourceRemoved(OBSSource source)
}
}
}
void
OBSBasicAdvAudio
::
SetVolumeType
()
{
QAction
*
action
=
reinterpret_cast
<
QAction
*>
(
sender
());
VolumeType
type
=
(
VolumeType
)
action
->
property
(
"volumeType"
).
toInt
();
for
(
size_t
i
=
0
;
i
<
controls
.
size
();
i
++
)
controls
[
i
]
->
SetVolumeWidget
(
type
);
config_set_int
(
GetGlobalConfig
(),
"BasicWindow"
,
"AdvAudioVolumeType"
,
(
int
)
type
);
}
void
OBSBasicAdvAudio
::
ShowContextMenu
(
const
QPoint
&
pos
)
{
VolumeType
type
=
(
VolumeType
)
config_get_int
(
GetGlobalConfig
(),
"BasicWindow"
,
"AdvAudioVolumeType"
);
QMenu
*
contextMenu
=
new
QMenu
(
this
);
QAction
*
percent
=
new
QAction
(
QTStr
(
"Percent"
),
this
);
QAction
*
dB
=
new
QAction
(
QTStr
(
"dB"
),
this
);
percent
->
setProperty
(
"volumeType"
,
(
int
)
VolumeType
::
Percent
);
dB
->
setProperty
(
"volumeType"
,
(
int
)
VolumeType
::
dB
);
connect
(
percent
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
SetVolumeType
()),
Qt
::
DirectConnection
);
connect
(
dB
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
SetVolumeType
()),
Qt
::
DirectConnection
);
percent
->
setCheckable
(
true
);
dB
->
setCheckable
(
true
);
if
(
type
==
VolumeType
::
Percent
)
percent
->
setChecked
(
true
);
else
if
(
type
==
VolumeType
::
dB
)
dB
->
setChecked
(
true
);
contextMenu
->
addAction
(
dB
);
contextMenu
->
addAction
(
percent
);
contextMenu
->
exec
(
mapToGlobal
(
pos
));
}
UI/window-basic-adv-audio.hpp
浏览文件 @
1d65bfb5
...
...
@@ -31,6 +31,9 @@ public slots:
void
SourceAdded
(
OBSSource
source
);
void
SourceRemoved
(
OBSSource
source
);
void
ShowContextMenu
(
const
QPoint
&
pos
);
void
SetVolumeType
();
public:
OBSBasicAdvAudio
(
QWidget
*
parent
);
~
OBSBasicAdvAudio
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录