Sigrid Solveig Haflínudóttircompile stuff50243ce5 years agoHistory
94 lines · 2.1 KB · C
RawDownload
/* This file is placed in the public domain */#include <stdio.h>#include <stdint.h>#include <stdlib.h>#include "soundpipe.h" #define CHECK_NULL_FILE(fp) if(fp == NULL) return SP_NOT_OK int spa_open(sp_data *sp, sp_audio *spa, const char *name, int mode){    spa_header *header;    header = &spa->header;    spa->mode = SPA_NULL;    spa->offset = sizeof(spa_header);    if(mode == SPA_READ) {        spa->fp = fopen(name, "rb");        CHECK_NULL_FILE(spa->fp);        fread(header, spa->offset, 1, spa->fp);    } else if(mode == SPA_WRITE) {        spa->fp = fopen(name, "wb");        CHECK_NULL_FILE(spa->fp);        header->magic = 100;        header->nchan = sp->nchan;        header->len = sp->len;        header->sr = sp->sr;        fwrite(header, spa->offset, 1, spa->fp);    } else {        return SP_NOT_OK;    }     spa->mode = mode;     return SP_OK;} size_t spa_write_buf(sp_data *sp, sp_audio *spa, SPFLOAT *buf, uint32_t size){	USED(sp);     if(spa->mode != SPA_WRITE) {        return 0;    }    return fwrite(buf, sizeof(SPFLOAT), size, spa->fp);} size_t spa_read_buf(sp_data *sp, sp_audio *spa, SPFLOAT *buf, uint32_t size){	USED(sp);     if(spa->mode != SPA_READ) {        return 0;    }    return fread(buf, sizeof(SPFLOAT), size, spa->fp);} int spa_close(sp_audio *spa){    if(spa->fp != NULL) fclose(spa->fp);    return SP_OK;} int sp_process_spa(sp_data *sp, void *ud, void (*callback)(sp_data *, void *)){    sp_audio spa;    if(spa_open(sp, &spa, sp->filename, SPA_WRITE) == SP_NOT_OK) {        fprintf(stderr, "Error: could not open file %s.\n", sp->filename);    }    while(sp->len > 0) {        callback(sp, ud);        spa_write_buf(sp, &spa, sp->out, sp->nchan);        sp->len--;        sp->pos++;    }    spa_close(&spa);    return SP_OK;} int sp_ftbl_loadspa(sp_data *sp, sp_ftbl **ft, const char *filename){    sp_ftbl *ftp;    sp_audio spa;    size_t size;      spa_open(sp, &spa, filename, SPA_READ);     size = spa.header.len;    sp_ftbl_create(sp, ft, size);    ftp = *ft;     spa_read_buf(sp, &spa, ftp->tbl, ftp->size);    spa_close(&spa);    return SP_OK;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t