I ported C headers to pascal years ago using H2Pas. Don't know if they are still valid with current version but update them should be quite easy. Attached files. Remember that you first must load taglib_c and then taglib library, procedure
LoadLibTag from
taglib.pas do it for you. Here is simple example (PMusicTag is just pointer to pascal record, I'm pretty sure you get it):
function FillTag(ATag: PMusicTag): Boolean;
var
pFile : PTagLib_File;
pTag : PTagLib_Tag;
pAudio : PTagLib_AudioProperties;
begin
ATag^.Index := -1;
ATag^.Title := '';
ATag^.Artist := '';
ATag^.Album := '';
ATag^.Genre := '';
ATag^.Year := '';
ATag^.Length := 0;
ATag^.LengthS := '';
ATag^.Track := '';
if not FileExistsUTF8(ATag^.Filename) then Exit(False);
if not LibtagLoaded then
begin
LoadLibtag;
if not LibtagLoaded then
raise Exception.Create('Could not load libtag library');
end;
taglib_id3v2_set_default_text_encoding(Ord(DefaultTagLibEncoding));
pFile := taglib_file_new(PAnsiChar(ATag^.Filename));
try
Result := taglib_file_is_valid(pFile);
if Result then
begin
//*** Tags ***
pTag := taglib_file_tag(pFile);
ATag^.Title := taglib_tag_title(pTag);
ATag^.Album := taglib_tag_album(pTag);
ATag^.Artist := taglib_tag_artist(pTag);
ATag^.Genre := taglib_tag_genre(pTag);
if taglib_tag_track(pTag) > 0 then
ATag^.Track := IntToStr(taglib_tag_track(pTag));
if taglib_tag_year(pTag) > 0 then
ATag^.Year := IntToStr(taglib_tag_year(pTag));
//*** Audio property ***
pAudio := taglib_file_audioproperties(pFile);
//FBitrate := taglib_audioproperties_bitrate(pAudio);
ATag^.Length := taglib_audioproperties_length(pAudio);
ATag^.LengthS := FormatPlayTime(ATag^.Length);
end;
finally
if Result then
taglib_tag_free_strings;
taglib_file_free(pFile);
end;
end;