Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
7d6bf872
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,发现更多精彩内容 >>
提交
7d6bf872
编写于
8月 21, 2016
作者:
M
Michael Hoang
提交者:
jp9000
9月 22, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
linux-alsa: Add ability to specify a custom PCM
Closes jp9000/obs-studio#599
上级
108a4aa4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
1 deletion
+38
-1
plugins/linux-alsa/alsa-input.c
plugins/linux-alsa/alsa-input.c
+38
-1
未找到文件。
plugins/linux-alsa/alsa-input.c
浏览文件 @
7d6bf872
...
...
@@ -64,6 +64,8 @@ struct alsa_data {
};
static
const
char
*
alsa_get_name
(
void
*
);
static
bool
alsa_devices_changed
(
obs_properties_t
*
props
,
obs_property_t
*
p
,
obs_data_t
*
settings
);
static
obs_properties_t
*
alsa_get_properties
(
void
*
);
static
void
*
alsa_create
(
obs_data_t
*
,
obs_source_t
*
);
static
void
alsa_destroy
(
void
*
);
...
...
@@ -119,7 +121,12 @@ void * alsa_create(obs_data_t *settings, obs_source_t *source)
data
->
listen_thread
=
0
;
data
->
reopen_thread
=
0
;
data
->
device
=
bstrdup
(
obs_data_get_string
(
settings
,
"device_id"
));
const
char
*
device
=
obs_data_get_string
(
settings
,
"device_id"
);
if
(
strcmp
(
device
,
"__custom__"
)
==
0
)
device
=
obs_data_get_string
(
settings
,
"custom_pcm"
);
data
->
device
=
bstrdup
(
device
);
data
->
rate
=
obs_data_get_int
(
settings
,
"rate"
);
if
(
os_event_init
(
&
data
->
abort_event
,
OS_EVENT_TYPE_MANUAL
)
!=
0
)
{
...
...
@@ -179,6 +186,10 @@ void alsa_update(void *vptr, obs_data_t *settings)
bool
reset
=
false
;
device
=
obs_data_get_string
(
settings
,
"device_id"
);
if
(
strcmp
(
device
,
"__custom__"
)
==
0
)
device
=
obs_data_get_string
(
settings
,
"custom_pcm"
);
if
(
strcmp
(
data
->
device
,
device
)
!=
0
)
{
bfree
(
data
->
device
);
data
->
device
=
bstrdup
(
device
);
...
...
@@ -215,9 +226,28 @@ const char * alsa_get_name(void *unused)
void
alsa_get_defaults
(
obs_data_t
*
settings
)
{
obs_data_set_default_string
(
settings
,
"device_id"
,
"default"
);
obs_data_set_default_string
(
settings
,
"custom_pcm"
,
"default"
);
obs_data_set_default_int
(
settings
,
"rate"
,
44100
);
}
static
bool
alsa_devices_changed
(
obs_properties_t
*
props
,
obs_property_t
*
p
,
obs_data_t
*
settings
)
{
UNUSED_PARAMETER
(
p
);
bool
visible
=
false
;
const
char
*
device_id
=
obs_data_get_string
(
settings
,
"device_id"
);
if
(
strcmp
(
device_id
,
"__custom__"
)
==
0
)
visible
=
true
;
obs_property_t
*
custom_pcm
=
obs_properties_get
(
props
,
"custom_pcm"
);
obs_property_set_visible
(
custom_pcm
,
visible
);
obs_property_modified
(
custom_pcm
,
settings
);
return
true
;
}
obs_properties_t
*
alsa_get_properties
(
void
*
unused
)
{
void
**
hints
;
...
...
@@ -240,10 +270,15 @@ obs_properties_t * alsa_get_properties(void *unused)
obs_property_list_add_string
(
devices
,
"Default"
,
"default"
);
obs_properties_add_text
(
props
,
"custom_pcm"
,
obs_module_text
(
"PCM"
),
OBS_TEXT_DEFAULT
);
rate
=
obs_properties_add_list
(
props
,
"rate"
,
obs_module_text
(
"Rate"
),
OBS_COMBO_TYPE_LIST
,
OBS_COMBO_FORMAT_INT
);
obs_property_set_modified_callback
(
devices
,
alsa_devices_changed
);
obs_property_list_add_int
(
rate
,
"32000 Hz"
,
32000
);
obs_property_list_add_int
(
rate
,
"44100 Hz"
,
44100
);
obs_property_list_add_int
(
rate
,
"48000 Hz"
,
48000
);
...
...
@@ -277,6 +312,8 @@ obs_properties_t * alsa_get_properties(void *unused)
obs_property_list_add_string
(
devices
,
descr
,
name
);
obs_property_list_add_string
(
devices
,
"Custom"
,
"__custom__"
);
next:
if
(
name
!=
NULL
)
free
(
name
),
name
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录