#sdl #audio #sound #bridge #rg3d

rg3d-sound-sdl

使用rg3d-sound与SDL音频子系统

2个版本

0.1.1 2022年5月5日
0.1.0 2022年5月5日

#322多媒体

MIT许可证

12KB
67

rg3d-sound-sdl

使用rg3d-sound与SDL音频子系统

此crate允许您使用[SDL2的][sdl2]音频后端从rg3d_sound输出渲染的音频数据。这提供了操作系统之间的最大可移植性,因为SDL音频几乎在SDL工作的任何地方都可以使用,并且在Linux上它还会利用Pulseaudio和PipeWire等较新的音频接口。

示例

use std::{error::Error, fs::File, io::BufReader, thread, time::Duration};

use rg3d_sound::{
    buffer::{DataSource, SoundBufferResource},
    context::SoundContext,
    source::{generic::GenericSourceBuilder, Status},
};

fn main() -> Result<(), Box<dyn Error>> {
    let sdl = sdl2::init()?;
    let audio = sdl.audio()?;
    let (engine, device) = rg3d_sound_sdl::open(&audio, None)?;
    device.resume();

    let ctx = SoundContext::new();
    engine.lock().unwrap().add_context(ctx.clone());

    let sound_buffer = SoundBufferResource::new_generic(DataSource::File {
        path: "ding.wav".into(),
        data: BufReader::new(File::open("ding.wav")?),
    })
    .expect("Failed to create data source");

    let source = GenericSourceBuilder::new()
        .with_buffer(sound_buffer)
        .with_status(Status::Playing)
        .build_source()?;

    ctx.state().add_source(source);

    thread::sleep(Duration::from_millis(1090));
    Ok(())
}

许可证

MIT许可证

版权所有 (c) 2022 Michael Connor Buchan [email protected]

在此,任何人免费获得此软件及其相关文档文件(“软件”)的副本(“软件”),可以自由处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供的人这样做,前提是以下条件

上述版权声明和本许可声明应包含在所有副本或实质性部分的软件中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,无论该责任源于、产生于或与软件或软件的使用或其他方式有关。

依赖项

~31MB
~606K SLoC