Audio-SoundFile
view release on metacpan or search on metacpan
Reader/Reader.xs view on Meta::CPAN
PROTOTYPE: $$$
PREINIT:
HV *hash;
SV **file;
SV **head;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
XSRETURN_IV(sf_seek((SNDFILE *)SvIV(*file), offset, whence));
}
int
bread_raw(self, bref, blocks)
SV *self
SV *bref
size_t blocks
PROTOTYPE: $$$
PREINIT:
HV *hash;
SV **file;
SV **head;
short *buff;
size_t blen;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
buff = (short *)malloc(sizeof(short) * blocks);
blen = sf_read_short((SNDFILE *)SvIV(*file), buff, blocks);
if (blen > 0)
sv_setpvn(SvRV(bref), (char *)buff, blen * sizeof(short) / sizeof(char));
else
sv_setsv(SvRV(bref), &PL_sv_undef);
free(buff);
XSRETURN_IV(blen);
}
int
bread_pdl(self, bref, blocks)
SV *self
SV *bref
int blocks
PROTOTYPE: $$$
PREINIT:
HV *hash;
SV **file;
SV **head;
pdl *newp;
size_t blen;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
newp = PDL->create(PDL_PERM);
newp->datatype = PDL_S;
PDL->setdims(newp, (PDL_Long *)&blocks, 1);
PDL->allocdata(newp);
blen = sf_read_short((SNDFILE *)SvIV(*file), newp->data, blocks);
if (blen > 0) {
newp->nvals = blen;
PDL->SetSV_PDL(SvRV(bref), newp);
}
else {
PDL->destroy(newp);
sv_setsv(SvRV(bref), &PL_sv_undef);
}
XSRETURN_IV(blen);
}
SV *
fread_raw(self, bref, frames)
SV *self
SV *bref
size_t frames
PROTOTYPE: $$$
PPCODE:
{
XSRETURN_UNDEF; /* FIXME: not yet implemented */
}
SV *
fread_pdl(self, bref, frames)
SV *self
SV *bref
size_t frames
PROTOTYPE: $$$
PPCODE:
{
XSRETURN_UNDEF; /* FIXME: not yet implemented */
}
BOOT:
PDL_addr = perl_get_sv("PDL::SHARE", FALSE);
if (! PDL_addr)
croak("This module requires use of PDL::Core first");
PDL = (Core *)SvIV(PDL_addr);
( run in 3.557 seconds using v1.01-cache-2.11-cpan-6b5c3043376 )