Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
77e97637
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,发现更多精彩内容 >>
提交
77e97637
编写于
6月 12, 2014
作者:
P
Palana
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add disconnected (selected) devices to device list for mac-avcapture
This requires the (localized) device name to be stored
上级
e4601ac6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
57 addition
and
13 deletion
+57
-13
plugins/mac-avcapture/av-capture.m
plugins/mac-avcapture/av-capture.m
+57
-13
未找到文件。
plugins/mac-avcapture/av-capture.m
浏览文件 @
77e97637
...
@@ -331,8 +331,12 @@ static void capture_device(struct av_capture *capture, AVCaptureDevice *dev,
...
@@ -331,8 +331,12 @@ static void capture_device(struct av_capture *capture, AVCaptureDevice *dev,
obs_data_t
settings
)
obs_data_t
settings
)
{
{
capture
->
device
=
dev
;
capture
->
device
=
dev
;
AVLOG
(
LOG_INFO
,
"Selected device '%s' %p"
,
capture
->
device
.
localizedName
.
UTF8String
,
capture
);
const
char
*
name
=
capture
->
device
.
localizedName
.
UTF8String
;
obs_data_setstring
(
settings
,
"device_name"
,
name
);
obs_data_setstring
(
settings
,
"device"
,
capture
->
device
.
uniqueID
.
UTF8String
);
AVLOG
(
LOG_INFO
,
"Selected device '%s'"
,
name
);
if
(
obs_data_getbool
(
settings
,
"use_preset"
))
{
if
(
obs_data_getbool
(
settings
,
"use_preset"
))
{
NSString
*
preset
=
get_string
(
settings
,
"preset"
);
NSString
*
preset
=
get_string
(
settings
,
"preset"
);
...
@@ -534,11 +538,53 @@ static void av_capture_defaults(obs_data_t settings)
...
@@ -534,11 +538,53 @@ static void av_capture_defaults(obs_data_t settings)
obs_data_set_default_string
(
settings
,
"device"
,
obs_data_set_default_string
(
settings
,
"device"
,
dev
.
uniqueID
.
UTF8String
);
dev
.
uniqueID
.
UTF8String
);
obs_data_set_default_string
(
settings
,
"device_name"
,
dev
.
localizedName
.
UTF8String
);
obs_data_set_default_bool
(
settings
,
"use_preset"
,
true
);
obs_data_set_default_bool
(
settings
,
"use_preset"
,
true
);
obs_data_set_default_string
(
settings
,
"preset"
,
highest
.
UTF8String
);
obs_data_set_default_string
(
settings
,
"preset"
,
highest
.
UTF8String
);
}
}
static
bool
update_device_list
(
obs_property_t
list
,
NSString
*
uid
,
NSString
*
name
,
bool
disconnected
)
{
bool
dev_found
=
false
;
bool
list_modified
=
false
;
size_t
size
=
obs_property_list_item_count
(
list
);
for
(
size_t
i
=
0
;
i
<
size
;)
{
const
char
*
uid_
=
obs_property_list_item_string
(
list
,
i
);
bool
found
=
[
uid
isEqualToString
:
@
(
uid_
)];
bool
disabled
=
obs_property_list_item_disabled
(
list
,
i
);
if
(
!
found
&&
!
disabled
)
{
i
+=
1
;
continue
;
}
if
(
disabled
&&
!
found
)
{
list_modified
=
true
;
obs_property_list_item_remove
(
list
,
i
);
continue
;
}
if
(
disabled
!=
disconnected
)
list_modified
=
true
;
dev_found
=
true
;
obs_property_list_item_disable
(
list
,
i
,
disconnected
);
i
+=
1
;
}
if
(
dev_found
)
return
list_modified
;
size_t
idx
=
obs_property_list_add_string
(
list
,
name
.
UTF8String
,
uid
.
UTF8String
);
obs_property_list_item_disable
(
list
,
idx
,
disconnected
);
return
true
;
}
static
void
fill_presets
(
AVCaptureDevice
*
dev
,
obs_property_t
list
,
static
void
fill_presets
(
AVCaptureDevice
*
dev
,
obs_property_t
list
,
NSString
*
current_preset
)
NSString
*
current_preset
)
{
{
...
@@ -546,8 +592,9 @@ static void fill_presets(AVCaptureDevice *dev, obs_property_t list,
...
@@ -546,8 +592,9 @@ static void fill_presets(AVCaptureDevice *dev, obs_property_t list,
bool
preset_found
=
false
;
bool
preset_found
=
false
;
for
(
NSString
*
preset
in
presets
())
{
for
(
NSString
*
preset
in
presets
())
{
bool
supported
=
[
dev
supportsAVCaptureSessionPreset
:
preset
];
bool
is_current
=
[
preset
isEqualToString
:
current_preset
];
bool
is_current
=
[
preset
isEqualToString
:
current_preset
];
bool
supported
=
!
dev
||
[
dev
supportsAVCaptureSessionPreset
:
preset
];
if
(
is_current
)
if
(
is_current
)
preset_found
=
true
;
preset_found
=
true
;
...
@@ -584,7 +631,8 @@ static bool check_preset(AVCaptureDevice *dev,
...
@@ -584,7 +631,8 @@ static bool check_preset(AVCaptureDevice *dev,
bool
presets_changed
=
false
;
bool
presets_changed
=
false
;
for
(
NSString
*
preset
in
presets
())
{
for
(
NSString
*
preset
in
presets
())
{
bool
is_listed
=
[
listed
member
:
preset
]
!=
nil
;
bool
is_listed
=
[
listed
member
:
preset
]
!=
nil
;
bool
supported
=
[
dev
supportsAVCaptureSessionPreset
:
preset
];
bool
supported
=
!
dev
||
[
dev
supportsAVCaptureSessionPreset
:
preset
];
if
(
supported
==
is_listed
)
if
(
supported
==
is_listed
)
continue
;
continue
;
...
@@ -602,15 +650,14 @@ static bool check_preset(AVCaptureDevice *dev,
...
@@ -602,15 +650,14 @@ static bool check_preset(AVCaptureDevice *dev,
static
bool
properties_device_changed
(
obs_properties_t
props
,
obs_property_t
p
,
static
bool
properties_device_changed
(
obs_properties_t
props
,
obs_property_t
p
,
obs_data_t
settings
)
obs_data_t
settings
)
{
{
UNUSED_PARAMETER
(
p
);
NSString
*
uid
=
get_string
(
settings
,
"device"
);
NSString
*
uid
=
get_string
(
settings
,
"device"
);
AVCaptureDevice
*
dev
=
[
AVCaptureDevice
deviceWithUniqueID
:
uid
];
AVCaptureDevice
*
dev
=
[
AVCaptureDevice
deviceWithUniqueID
:
uid
];
if
(
!
dev
)
return
false
;
return
check_preset
(
dev
,
obs_properties_get
(
props
,
"preset"
),
settings
);
NSString
*
name
=
get_string
(
settings
,
"device_name"
);
bool
dev_list_updated
=
update_device_list
(
p
,
uid
,
name
,
!
dev
);
p
=
obs_properties_get
(
props
,
"preset"
);
return
check_preset
(
dev
,
p
,
settings
)
||
dev_list_updated
;
}
}
static
bool
properties_preset_changed
(
obs_properties_t
props
,
obs_property_t
p
,
static
bool
properties_preset_changed
(
obs_properties_t
props
,
obs_property_t
p
,
...
@@ -621,9 +668,6 @@ static bool properties_preset_changed(obs_properties_t props, obs_property_t p,
...
@@ -621,9 +668,6 @@ static bool properties_preset_changed(obs_properties_t props, obs_property_t p,
NSString
*
uid
=
get_string
(
settings
,
"device"
);
NSString
*
uid
=
get_string
(
settings
,
"device"
);
AVCaptureDevice
*
dev
=
[
AVCaptureDevice
deviceWithUniqueID
:
uid
];
AVCaptureDevice
*
dev
=
[
AVCaptureDevice
deviceWithUniqueID
:
uid
];
if
(
!
dev
)
return
false
;
return
check_preset
(
dev
,
p
,
settings
);
return
check_preset
(
dev
,
p
,
settings
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录