add embed code
This commit is contained in:
parent
2e27390058
commit
612421f7b6
1 changed files with 21 additions and 4 deletions
|
@ -138,8 +138,7 @@ pub const Embed = struct {
|
||||||
filepath: []const u8,
|
filepath: []const u8,
|
||||||
|
|
||||||
sndfile: *c.SNDFILE = undefined,
|
sndfile: *c.SNDFILE = undefined,
|
||||||
|
buf: []f32 = undefined,
|
||||||
// TODO add its own read buffers from snd file
|
|
||||||
|
|
||||||
pub fn init(allocator: *std.mem.Allocator, filepath: []const u8) @This() {
|
pub fn init(allocator: *std.mem.Allocator, filepath: []const u8) @This() {
|
||||||
return Embed{
|
return Embed{
|
||||||
|
@ -157,6 +156,7 @@ pub const Embed = struct {
|
||||||
.sections = c_int(0),
|
.sections = c_int(0),
|
||||||
.seekable = c_int(0),
|
.seekable = c_int(0),
|
||||||
};
|
};
|
||||||
|
|
||||||
self.sndfile = try image.sopen(
|
self.sndfile = try image.sopen(
|
||||||
self.allocator,
|
self.allocator,
|
||||||
self.filepath,
|
self.filepath,
|
||||||
|
@ -164,12 +164,29 @@ pub const Embed = struct {
|
||||||
&in_fmt,
|
&in_fmt,
|
||||||
);
|
);
|
||||||
|
|
||||||
// TODO allocate 1 or 2 in read buffer, but only use 1
|
self.buf = try self.allocator.alloc(f32, @intCast(usize, in_fmt.channels));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn deinit(self: *@This()) void {}
|
pub fn deinit(self: *@This()) void {}
|
||||||
|
|
||||||
pub fn run(self: *@This(), bufs: *RunBuffers) void {
|
pub fn run(self: *@This(), bufs: *RunBuffers) void {
|
||||||
bufs.out[0] = 0;
|
const read_bytes = c.sf_readf_float(self.sndfile, self.buf.ptr, 1);
|
||||||
|
|
||||||
|
if (read_bytes == 0) {
|
||||||
|
std.debug.warn("WARN! reached EOF for embed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (read_bytes < 0) {
|
||||||
|
const st: i32 = c.sf_error(self.sndfile);
|
||||||
|
std.debug.warn(
|
||||||
|
"Failed to read {} ({})\n",
|
||||||
|
self.filepath,
|
||||||
|
c.sf_error_number(st),
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bufs.out[0] = bufs.in[0] + self.buf[0];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue