Tag access with libtaginfo




Hello

I am the developer of a media player for Gtk, which is called xnoise.
As it is written in vala language, I can use C APIs via vapi or gir
files. For efficient tag access I always used taglib_c (C bindings of
taglib). Unfortunately, the C bindings of taglib only make use of the
virtual C++ API of Taglib.Tag, which only allows access to artist,
album, title, genre, tracknumber and a few others. With that API, it
wasn't possible to address tags like album artist, embedded album art,
embedded lyrics, encoder, ...

That is the reason why I wrote a C++ wrapper library for taglib that allows
accessing all the meta tags, etc. that are addressed by easytag + some
more (recently I extended it so that all tag types used by easytag can be accessed).

This library is called "libtaginfo" [1] and it provides full C bindings API for extended tag access. 
Access to any media file type is handled in a similar way.

It is simple, fast, extendible, fully documented, covered with unit
tests and used by at least 2 media players atm (xnoise (vala) and pragha
(C+GObject)). 
The API is kept simple: File types are automatically determined by
extension, by mimetype or manually. See coding example below. 
Optionally, string management can be enabled.



-> My question is: Could this could be interesting for usage in easytag?

Using libtaginfo would give the possibility to have unified, simple
access to Mp3, Ogg, Opus, Flac, MPC, Ape, Speex, WavPack, TrueAudio,
WAV, AIFF, MP4 and ASF files.
The underlying taglib library is already a dependency of easytag and it
is a proven-to-be-stable and effective library.
With libtaginfo, it would be possible to drop dependencies for libogg,
libspeex, libflac, libid3tag and libwavpack.
You would gain extra support for APE, mp4 and opus and remove implementation details from easytag. 
All tags that are accessed with easytag can also be addressed with libtaginfo (see also tag name field table 
in the source package).

License is LGPLv2+. 
Latest version is 0.2.0 and has been released on 12. Dec 2013 (yesterday).


Coding example for libtaginfo C bindings:
________________________________________________
    TagInfo_Info *info;
    // create info object; returns null, if not supported
    info = taginfo_info_create("./path/to/mediafile");
    if(info == NULL)
      return 1;
    if(taginfo_info_load(info)) {
      char* name = taginfo_info_get_title(info);
      printf("-- TAG --%s\n", name);
      free(name); // alternatively, autom. string management can be used
    }
    taginfo_info_free(info);
________________________________________________

Binaries for ubuntu are available via my ppa [2]. 
For many other distros (including Arch Linux and Fedora) libtaginfo packages are available and may soon be 
updated to the latest 0.2.0 version.

Source package download: [5]

Best Regards
Jörn

[1]: https://bitbucket.org/shuerhaaken/libtaginfo
[2]: https://launchpad.net/~shkn/+archive/xnoise
[3]: https://www.archlinux.org/packages/?sort=&q=libtaginfo&maintainer=&flagged=
[4]: https://admin.fedoraproject.org/pkgdb/acls/list/?searchwords=*libtaginfo*
[5]: https://bitbucket.org/shuerhaaken/libtaginfo/downloads










[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]