基于alsa的音量控制代码
来源:互联网 发布:淘宝二手市场在哪 编辑:程序博客网 时间:2024/04/29 05:06
//头文件
#include <alsa/asoundlib.h>
//类定义
class Sound {
public:
Sound();
~Sound();
int sound_read();
void sound_write(int);
private:
snd_mixer_t * mixer;
snd_mixer_elem_t *pcm_element;
};
//初始化-----------------------------------------------------
Sound::Sound()
{
snd_mixer_open(&mixer, 0);
snd_mixer_attach(mixer, "default");
snd_mixer_selem_register(mixer, NULL, NULL);
snd_mixer_load(mixer);
//找到Pcm对应的element,方法比较笨拙
pcm_element = snd_mixer_first_elem(mixer);
pcm_element = snd_mixer_elem_next(pcm_element);
pcm_element = snd_mixer_elem_next(pcm_element);
//
long int a, b;
long alsa_min_vol, alsa_max_vol;
///处理alsa1.0之前的bug,之后的可略去该部分代码
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &a);
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &b);
snd_mixer_selem_get_playback_volume_range(pcm_element,
&alsa_min_vol,
&alsa_max_vol);
///设定音量范围
snd_mixer_selem_set_playback_volume_range(pcm_element, 0, 100);
}
//读音量值-----------------------------------------------------
int Sound::sound_read()
{
long ll, lr;
//处理事件
snd_mixer_handle_events(mixer);
//左声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &ll);
//右声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &lr);
return (ll + lr) >> 1;
}
//写入音量-----------------------------------------------------
void Sound::sound_write(int leftright)
{
//左音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT,
leftright);
//右音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT,
leftright);
}
//退出-----------------------------------------------------
Sound::~Sound()
{
snd_mixer_close(mixer);
}
#include <alsa/asoundlib.h>
//类定义
class Sound {
public:
Sound();
~Sound();
int sound_read();
void sound_write(int);
private:
snd_mixer_t * mixer;
snd_mixer_elem_t *pcm_element;
};
//初始化-----------------------------------------------------
Sound::Sound()
{
snd_mixer_open(&mixer, 0);
snd_mixer_attach(mixer, "default");
snd_mixer_selem_register(mixer, NULL, NULL);
snd_mixer_load(mixer);
//找到Pcm对应的element,方法比较笨拙
pcm_element = snd_mixer_first_elem(mixer);
pcm_element = snd_mixer_elem_next(pcm_element);
pcm_element = snd_mixer_elem_next(pcm_element);
//
long int a, b;
long alsa_min_vol, alsa_max_vol;
///处理alsa1.0之前的bug,之后的可略去该部分代码
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &a);
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &b);
snd_mixer_selem_get_playback_volume_range(pcm_element,
&alsa_min_vol,
&alsa_max_vol);
///设定音量范围
snd_mixer_selem_set_playback_volume_range(pcm_element, 0, 100);
}
//读音量值-----------------------------------------------------
int Sound::sound_read()
{
long ll, lr;
//处理事件
snd_mixer_handle_events(mixer);
//左声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &ll);
//右声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &lr);
return (ll + lr) >> 1;
}
//写入音量-----------------------------------------------------
void Sound::sound_write(int leftright)
{
//左音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT,
leftright);
//右音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT,
leftright);
}
//退出-----------------------------------------------------
Sound::~Sound()
{
snd_mixer_close(mixer);
}
- 基于alsa的音量控制代码
- 基于alsa的音量控制代码
- 基于OpenCV的视频图像组态 (14):音量控制
- 控制音量的大小
- 基于Alsa lib进行音量调节以及静音操作
- android控制音量的方法
- Android系统的音量控制
- GL音乐播放器--代码实现<四>--进度控制和可隐藏的音量控制
- 大二上学期Linux课程设计(基于qt的音量控制管理器)
- 大二上学期Linux课程设计(基于qt的音量控制管理器)
- ALSA声卡12_从零编写之添加音量控制_学习笔记
- 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制
- 音量控制
- android播放器音量控制-使用震动示例代码-进度条控制音量
- alsa-lib、tinyalsa以及基于alsa的用户空间编程
- 基于s3c2440的alsa-lib及alsa-utils成功移植
- 基于s3c2440的alsa-lib及alsa-utils成功移植
- android音量的控制曲线的计算方法
- H面试程序(29):求最大递增数
- toj1075 Stockbroker Grapevine
- 反向灰度投影找出特定内容
- 让工作更轻松——EA类图与代码同步
- 《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图
- 基于alsa的音量控制代码
- Listener监听器之HttpSessionListener
- SQL中的Case When Else End的用法
- 花生壳
- Android notification详解
- 【第一篇章-android平台buffer播放探索】native media
- Java操作MongoDB
- listview 一直显示最底部 和 显示刷新之前的位置
- Java和C/C++程序实时通讯数据移植问题的研究