Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
anbox
提交
f4cd48d8
A
anbox
项目概览
openeuler
/
anbox
通知
24
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
anbox
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f4cd48d8
编写于
8月 27, 2020
作者:
O
openeuler-ci-bot
提交者:
Gitee
8月 27, 2020
浏览文件
操作
浏览文件
下载
差异文件
!100 audio: using PulseAudio to record
Merge pull request !100 from rongwang/master
上级
a5e5d482
a2f48060
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
1 addition
and
87 deletion
+1
-87
src/anbox/audio/alsa_helper.cpp
src/anbox/audio/alsa_helper.cpp
+1
-86
src/anbox/audio/alsa_helper.h
src/anbox/audio/alsa_helper.h
+0
-1
未找到文件。
src/anbox/audio/alsa_helper.cpp
浏览文件 @
f4cd48d8
...
...
@@ -309,93 +309,8 @@ snd_pcm_uframes_t AlsaHelper::get_period_frames_bytes() const
std
::
string
AlsaHelper
::
get_usb_audio_device_name
()
const
{
std
::
string
deviceName
=
"default"
;
snd_ctl_t
*
handle
=
nullptr
;
int
err
=
-
1
;
snd_ctl_card_info_t
*
info
=
nullptr
;
snd_ctl_card_info_alloca
(
&
info
);
int
card
=
-
1
;
if
(
snd_card_next
(
&
card
)
<
0
||
card
<
0
)
{
return
deviceName
;
}
int
nameMaxLen
=
32
;
while
(
card
>=
0
)
{
char
name
[
nameMaxLen
];
snprintf
(
name
,
nameMaxLen
,
"hw:%d"
,
card
);
if
((
err
=
snd_ctl_open
(
&
handle
,
name
,
0
))
<
0
)
{
if
(
snd_card_next
(
&
card
)
<
0
)
{
break
;
}
}
if
((
err
=
snd_ctl_card_info
(
handle
,
info
))
<
0
)
{
snd_ctl_close
(
handle
);
if
(
snd_card_next
(
&
card
)
<
0
)
{
break
;
}
}
int
dev
=
-
1
;
while
(
true
)
{
snd_ctl_pcm_next_device
(
handle
,
&
dev
);
if
(
dev
<
0
)
{
break
;
}
if
((
snd_ctl_card_info_get_id
(
info
)
!=
nullptr
)
&&
(
snd_ctl_card_info_get_name
(
info
)
!=
nullptr
))
{
std
::
string
card_info_id
(
snd_ctl_card_info_get_id
(
info
));
std
::
string
card_info_name
(
snd_ctl_card_info_get_name
(
info
));
if
((
card_info_id
==
"Audio"
)
&&
(
card_info_name
==
"USB Audio"
))
{
deviceName
=
"hw:"
+
std
::
to_string
(
card
)
+
","
+
std
::
to_string
(
dev
);
if
(
validateAudioDevice
(
deviceName
))
{
snd_ctl_close
(
handle
);
return
deviceName
;
}
}
}
}
snd_ctl_close
(
handle
);
if
(
snd_card_next
(
&
card
)
<
0
)
{
break
;
}
}
return
deviceName
;
return
"pulse"
;
//using PulseAudio
}
bool
AlsaHelper
::
validateAudioDevice
(
std
::
string
name
)
const
{
snd_pcm_t
*
handle
=
nullptr
;
snd_pcm_hw_params_t
*
params
=
nullptr
;
unsigned
int
rate
=
0
;
float
lowLimit
=
0.95
;
float
upLimit
=
1.05
;
hwparams
specHwparams
=
{
.
format
=
SND_PCM_FORMAT_S16_LE
,
.
channels
=
CHANELTYPE_MONO
,
.
rate
=
DEFAULT_SAMPLE_RATE
,
};
if
(
snd_pcm_open
(
&
handle
,
name
.
c_str
(),
SND_PCM_STREAM_CAPTURE
,
0
)
<
0
)
{
return
false
;
}
snd_pcm_hw_params_alloca
(
&
params
);
if
(
snd_pcm_hw_params_any
(
handle
,
params
)
<
0
)
{
snd_pcm_close
(
handle
);
return
false
;
}
if
(
snd_pcm_hw_params_set_format
(
handle
,
params
,
specHwparams
.
format
)
<
0
)
{
snd_pcm_close
(
handle
);
return
false
;
}
if
(
snd_pcm_hw_params_set_channels
(
handle
,
params
,
specHwparams
.
channels
)
<
0
)
{
snd_pcm_close
(
handle
);
return
false
;
}
rate
=
specHwparams
.
rate
;
snd_pcm_hw_params_set_rate_near
(
handle
,
params
,
&
specHwparams
.
rate
,
0
);
if
(
static_cast
<
float
>
(
rate
*
upLimit
)
<
specHwparams
.
rate
||
static_cast
<
float
>
(
rate
*
lowLimit
)
>
specHwparams
.
rate
)
{
snd_pcm_close
(
handle
);
return
false
;
}
snd_pcm_close
(
handle
);
return
true
;
}
}
}
src/anbox/audio/alsa_helper.h
浏览文件 @
f4cd48d8
...
...
@@ -115,7 +115,6 @@ private:
int
xrun
(
void
);
int
suspend
(
void
);
void
compute_max_peak
(
char
*
data
,
size_t
count
)
const
;
bool
validateAudioDevice
(
std
::
string
name
)
const
;
};
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录