Audio-SoundFile
view release on metacpan or search on metacpan
Header/Header.xs view on Meta::CPAN
MODULE = Audio::SoundFile::Header PACKAGE = Audio::SoundFile::Header
SV *
format_check(self)
SV *self
PROTOTYPE: $
PREINIT:
SF_INFO *info;
HV *hash;
SV *head;
PPCODE:
{
if (! (sv_isobject(self) && sv_derived_from(self, CLASSNAME)))
XSRETURN_UNDEF;
if (SvTYPE(hash = (HV *)SvRV(self)) != SVt_PVHV)
XSRETURN_UNDEF;
if ((info = Audio_SoundFile_Header_toSFinfo(aTHX_ self)) != NULL) {
head = Audio_SoundFile_Header_toObject(aTHX_ hash, info);
free(info);
Reader/Reader.xs view on Meta::CPAN
char *name
char *path
SV *href
PROTOTYPE: $$$
PREINIT:
SF_INFO info;
SNDFILE *file;
SV *self;
HV *hash;
SV *head;
PPCODE:
{
if (! SvROK(href))
XSRETURN_UNDEF;
if ((file = sf_open(path, SFM_READ, &info)) == NULL)
XSRETURN_UNDEF;
if (! SvOK(head = Audio_SoundFile_Header_toObject(aTHX_ NULL, &info)))
XSRETURN_UNDEF;
Reader/Reader.xs view on Meta::CPAN
}
SV *
close(self)
SV *self
PROTOTYPE: $
PREINIT:
HV *hash;
SV **file;
SV **head;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
XSRETURN_IV(sf_close((SNDFILE *)SvIV(*file)));
}
SV *
bseek(self, offset, whence)
SV *self
off_t offset
int whence
PROTOTYPE: $$$
PREINIT:
SF_INFO *info;
HV *hash;
SV **file;
SV **head;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
info = Audio_SoundFile_Header_toSFinfo(aTHX_ *head);
XSRETURN_IV(info->channels * sf_seek((SNDFILE *)SvIV(*file),
info->channels * offset, whence));
}
SV *
fseek(self, offset, whence)
SV *self
off_t offset
int whence
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);
Reader/Reader.xs view on Meta::CPAN
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);
Reader/Reader.xs view on Meta::CPAN
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);
Writer/Writer.xs view on Meta::CPAN
SV *
new(name, path, href)
char *name
char *path
SV *href
PROTOTYPE: $$$
PREINIT:
SF_INFO *info;
SNDFILE *file;
HV *hash;
PPCODE:
{
if ((info = Audio_SoundFile_Header_toSFinfo(aTHX_ href)) == NULL)
XSRETURN_UNDEF;
if ((file = sf_open(path, SFM_WRITE, info)) == NULL)
XSRETURN_UNDEF;
hash = newHV();
hv_store(hash, "head", 4, href, 0);
hv_store(hash, "file", 4, newSViv((IV)file), 0);
Writer/Writer.xs view on Meta::CPAN
}
SV *
close(self)
SV *self
PROTOTYPE: $
PREINIT:
HV *hash;
SV **file;
SV **head;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
XSRETURN_IV(sf_close((SNDFILE *)SvIV(*file)));
}
SV *
bseek(self, offset, whence)
SV *self
off_t offset
int whence
PROTOTYPE: $$$
PREINIT:
SF_INFO *info;
HV *hash;
SV **file;
SV **head;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
info = Audio_SoundFile_Header_toSFinfo(aTHX_ *head);
XSRETURN_IV(info->channels * sf_seek((SNDFILE *)SvIV(*file),
info->channels * offset, whence));
}
SV *
fseek(self, offset, whence)
SV *self
off_t offset
int whence
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));
}
SV *
bwrite_raw(self, buff)
SV *self
SV *buff
PROTOTYPE: $$
PREINIT:
HV *hash;
SV **file;
SV **head;
short *bptr;
STRLEN blen;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
bptr = (short *)SvPV(buff, blen);
blen = sf_write_short((SNDFILE *)SvIV(*file),
bptr, blen * sizeof(char) / sizeof(short));
XSRETURN_IV(blen);
}
SV *
bwrite_pdl(self, buff)
SV *self
pdl *buff
PROTOTYPE: $$
PREINIT:
HV *hash;
SV **file;
SV **head;
size_t blen;
PPCODE:
{
CHECK_AND_INIT(self, hash, file, head);
blen = sf_write_short((SNDFILE *)SvIV(*file), buff->data, buff->nvals);
XSRETURN_IV(blen);
}
SV *
fwrite_raw(self, buff)
SV *self
SV *buff
PROTOTYPE: $$
PPCODE:
{
XSRETURN_UNDEF; /* FIXME: not yet implemented */
}
SV *
fwrite_pdl(self, buff)
SV *self
pdl *buff
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 0.450 second using v1.01-cache-2.11-cpan-71847e10f99 )