SDL2.0学习笔记6--用SDL播放音频wave文件

本文介绍了如何利用SDL2.0库播放wave音频文件,包括初始化音频子系统、打开wave文件、启动音频播放线程、填充音频数据以及播放结束后的资源释放步骤。
摘要由CSDN通过智能技术生成
#include "SDL.h"

struct {
    Uint8   *sound;     // pointer to wave data
    Uint32  soundlen;   // length of wave data
    int     soundpos;   // current play position
}wave;

int done;

static void quit(int rc)
{
    SDL_Quit();
    exit(rc);
}

void SDLCALL fill_audio(void *unused, Uint8 *stream, int len)
{
    Uint8   *waveptr;
    int     waveleft;
    int     copylen;

    SDL_memset(stream, 0, len);

    if (wave.soundpos == wave.soundlen)
    {
        done = 1;
        return;
    }

    waveptr  = wave.sound + wave.soundpos;
    waveleft = wave.soundlen - wave.soundpos;

    waveleft <= len ? (copylen = waveleft) : (copylen = len);

    SDL_memcpy(stream, waveptr, copylen);
    wave.soundpos += copylen;

    SDL_Log("len: %d, copylen:%d\n", len, copylen);
}

/*
    SDL播放音频wave文件测试
*/
int audio_test()
{
    SDL_AudioSpec spec;
    const char * audio_file = "sample.wav";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值