首页 > 其他分享 >SDL_PauseAudio 声音播放/暂停函数剖析

SDL_PauseAudio 声音播放/暂停函数剖析

时间:2023-03-30 11:01:15浏览次数:51  
标签:pause 音频 播放 剖析 device SDL audio PauseAudio

函数说明

用此函数来暂停播放音频,或播放音频。根据参数来决定, 0是播放音频 ,非0是暂停播放音频切记,并不是停止播放音频!


函数声明

/**
 *  \name Pause audio functions
 *
 *  These functions pause and unpause the audio callback processing.
 *  They should be called with   a parameter of 0 after opening the audio
 *  device to start playing sound.  This is so you can safely initialize
 *  data for your callback function after opening the audio device.
 *  Silence will be written to the audio device during the pause.
 */
/* @{ */
extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
                                                  int pause_on);
/* @} *//* Pause audio functions */

函数具体实现

void
SDL_PauseAudioDevice(SDL_AudioDeviceID devid, int pause_on)
{
    SDL_AudioDevice *device = get_audio_device(devid);
    if (device) {
        current_audio.impl.LockDevice(device);
        SDL_AtomicSet(&device->paused, pause_on ? 1 : 0);
        current_audio.impl.UnlockDevice(device);
    }
}

void
SDL_PauseAudio(int pause_on)
{
    SDL_PauseAudioDevice(1, pause_on);
}

代码剖析

关键是设置设备的paused状态,因此,该函数只是做了一个标志位的设置,SDL底层的线程会判断该标志,通过回调函数取音频数据进行播放

标签:pause,音频,播放,剖析,device,SDL,audio,PauseAudio
From: https://blog.51cto.com/fengyuzaitu/6159298

相关文章

  • 一文剖析:LVS/Nginx/HAProxy原理及应用场景
    负载均衡已经发展成为网络架构中的基础核心组件,消除了服务器单点故障,可以进行请求流量分流,提升冗余,保证服务器的稳定性。在开源的软件负载均衡中,应用最为广泛的有LVS、Nginx......
  • Lucene 源代码剖析-9索引是如何存储的
    Lucene 源码剖析5           索引是如何存储的  5.1   数据存储类Directory      Directory及相关类负责文档索引的存储。           5......
  • Spring源码核心剖析
    作者:京东科技韩国凯前言SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只......
  • Spring源码核心剖析
    作者:京东科技韩国凯前言SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAO......
  • SDL时间和天气显示
    1.天气获取  天气获取采用命令行浏览器curl,天气获取接口使用心知天气网;   心知天气是中国气象局官方授权的商业气象服务公司,基于气象数值预报和人工智能技术,提供......
  • SDL显示文本
      SDL(SimpleDirectMediaLayer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以......
  • Qt QtPromise源码剖析
    Promise概念Promise是一种异步编程的解决方案.Promises是用于传递异步计算结果的回调的替代方法.QtPromise开源模板库使用Qt框架的朋友如果对异步编程有需求,建议可使......
  • 深入理解 Python 虚拟机:字典(dict)的实现原理及源码剖析
    深入理解Python虚拟机:字典(dict)的实现原理及源码剖析在本篇文章当中主要给大家深入介绍一下在cpython当中字典的实现原理,在本篇文章当中主要介绍在早期python3当中的......
  • SDL应用之YUV图像与音频输出
    1.YUV简介   YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素......
  • C++ 树进阶系列之深度剖析字典(trie)树
    1.前文本文和大家一起聊聊字典树,从字典二字可知,于功能而言,字典树是类似于英汉字典的一棵信息树。字典树有2大特点:有容乃大。能存储大量的数据信息。提供有基于关键字......