MP3-Mplib
view release on metacpan or search on metacpan
RETVAL = constant(s,len,arg);
OUTPUT:
RETVAL
void
get_header(filename)
char * filename;
PROTOTYPE: $
INIT:
mpeg_header * header;
PPCODE:
header = mp_get_mpeg_header_from_file(filename);
if (header == NULL)
XSRETURN_UNDEF;
EXTEND(SP, 1);
PUSHs(sv_2mortal(map_mpeg_header_to_sv(header)));
void
get_tag(filename, ver)
char * filename;
int ver;
PROTOTYPE: $$
INIT:
id3_tag_list * taglist;
id3_tag * tag;
PPCODE:
taglist = mp_get_tag_list_from_file(filename);
if (taglist == NULL)
XSRETURN_UNDEF;
tag = get_tag(taglist, ver);
if (tag == NULL)
XSRETURN_UNDEF;
EXTEND(SP, 1);
PUSHs(sv_2mortal(map_id3_tag_to_sv(tag)));
mp_free_list(taglist);
void
get_id3v2_header(filename)
char * filename;
PROTOTYPE: $
INIT:
id3_tag_list * taglist;
id3_tag * tag;
PPCODE:
taglist = mp_get_tag_list_from_file(filename);
if (taglist == NULL)
XSRETURN_UNDEF;
tag = get_tag(taglist, 2);
if (tag == NULL)
XSRETURN_UNDEF;
EXTEND(SP, 1);
PUSHs(sv_2mortal(map_id3v2_header_to_sv(((id3v2_tag*)tag->tag)->header)));
mp_free_list(taglist);
void
set_tag (filename, ver, tag, enc = ISO_8859_1)
char * filename;
int ver;
SV * tag;
int enc;
PREINIT:
int ret;
PROTOTYPE: $$$;$
PPCODE:
if ( (!SvROK(tag)) ||
(SvTYPE(SvRV(tag)) != SVt_PVHV) )
croak("MP3::Mplib::set_tag expects a hash-ref as third arg");
if (ver == 1)
ret = set_v1_tag(filename, (HV *) SvRV(tag), enc);
else if (ver == 2)
ret = set_v2_tag(filename, (HV *) SvRV(tag), enc);
else
croak("Unsupported tag version (v%i) in MP3::Mplib::set_header",
sv_setpvf(mp3_lib_err, "mp_file\034%i", MP_EERROR);
EXTEND(SP, 1);
PUSHs(sv_2mortal(newSViv(ret == 0 ? 1 : 0)));
void
delete_tags(filename, ver)
char * filename;
int ver;
PROTOTYPE: $$
PPCODE:
EXTEND(SP, 1);
switch(mp_del_tags_by_ver_from_file(filename, ver)) {
case 0:
PUSHs(sv_2mortal(newSVuv(1)));
break;
case 1:
PUSHs(sv_2mortal(newSVuv(0)));
break;
}
void
_clean_up(filename)
char * filename;
PROTOTYPE: $
PPCODE:
id3_tag_list *taglist;
id3_tag * tag;
int i, j;
taglist = mp_get_tag_list_from_file(filename);
tag = get_tag(taglist, 2);
if (tag == NULL)
XSRETURN_UNDEF;
sv_setpvf(mp3_lib_err, "mp_file\034%i", MP_EERROR);
mp_free_list(taglist->first);
void
_dump_structure(filename)
char * filename;
INIT:
id3_tag_list * taglist, *iter;
int c = 0;
PROTOTYPE: $
PPCODE:
taglist = mp_get_tag_list_from_file(filename);
if (taglist == NULL) {
printf("No tags found\n");
XSRETURN_UNDEF;
}
iter = taglist;
while (iter) {
id3_tag *tag = iter->tag;
printf("Tag at position %i:\n", ++c);
printf("Version: %i", tag->version);
( run in 0.460 second using v1.01-cache-2.11-cpan-5511b514fd6 )