11 Commits

Author SHA1 Message Date
Lukáš Lalinský
f6083f327f Remove extra commas from configure.in.in
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1022859 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-13 11:30:19 +00:00
Lukáš Lalinský
8b43367eb4 Update libtool version-info
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1022852 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-13 11:17:49 +00:00
Lukáš Lalinský
639b604a55 Changelog
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1022849 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-13 11:15:54 +00:00
Christophe Giboudeaux
482431286e Remove a non-existing dir.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1022837 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-13 10:19:34 +00:00
Lukáš Lalinský
cc7c66bf86 Upgrade obsolete gnre MP4 atoms to ©gen
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021692 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-09 20:11:29 +00:00
Lukáš Lalinský
db3db34e21 Fix building of examples with ENABLE_STATIC
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021651 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-09 18:16:38 +00:00
Lukáš Lalinský
9b17ca219c Add option for building a static version of taglib
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021124 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-08 08:52:57 +00:00
Lukáš Lalinský
f644bafa44 Use the internal config names
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021106 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-08 07:26:12 +00:00
Lukáš Lalinský
06f405f719 Add support for a global, installable config header
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1019671 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-04 09:29:59 +00:00
Lukáš Lalinský
cf83551c93 Define MAKE_TAGLIB_LIB from the automake build system
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1019659 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-04 09:07:27 +00:00
Lukáš Lalinský
0adea10728 Fix compilation warnings
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1019655 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
2009-09-04 08:50:24 +00:00
37 changed files with 110 additions and 26 deletions

View File

@@ -2,6 +2,8 @@ project(taglib)
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
OPTION(ENABLE_STATIC "Make static version of libtag" OFF)
OPTION(BUILD_TESTS "Build the test suite" OFF)
OPTION(BUILD_EXAMPLES "Build the examples" OFF)
@@ -53,6 +55,15 @@ endif(NOT WIN32)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
configure_file(config-taglib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h )
if(WITH_ASF)
set(TAGLIB_WITH_ASF TRUE)
endif(WITH_ASF)
if(WITH_MP4)
set(TAGLIB_WITH_MP4 TRUE)
endif(WITH_MP4)
configure_file(taglib/taglib_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib_config.h )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/taglib_config.h DESTINATION ${INCLUDE_INSTALL_DIR}/taglib)
ADD_SUBDIRECTORY( taglib )
ADD_SUBDIRECTORY(tests)

11
NEWS
View File

@@ -1,6 +1,17 @@
TagLib 1.6
==========
1.6:
* New CMake option to build a static version - ENABLE_STATIC.
* Added support for disabling dllimport/dllexport on Windows using the
TAGLIB_STATIC macro.
* Support for parsing the obsolete 'gnre' MP4 atom.
* New cpp macros TAGLIB_WITH_MP4 and TAGLIB_WITH_ASF to determin if
TagLib was built with MP4/ASF support.
1.6 RC1:
* Split Ogg packets larger than 64k into multiple pages. (BUG:171957)
* TagLib can now use FLAC padding block. (BUG:107659)
* ID3v2.2 frames are now not incorrectly saved. (BUG:176373)

View File

@@ -19,6 +19,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib_c.pc.cmake ${CMAKE_CURRENT_BIN
########### next target ###############
ADD_LIBRARY(tag_c SHARED tag_c.cpp)
if(ENABLE_STATIC)
set_target_properties(tag_c PROPERTIES COMPILE_DEFINITIONS TAGLIB_STATIC)
endif(ENABLE_STATIC)
TARGET_LINK_LIBRARIES(tag_c tag )

View File

@@ -86,11 +86,11 @@ TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type)
return reinterpret_cast<TagLib_File *>(new Ogg::Speex::File(filename));
case TagLib_File_TrueAudio:
return reinterpret_cast<TagLib_File *>(new TrueAudio::File(filename));
#ifdef WITH_MP4
#ifdef TAGLIB_WITH_MP4
case TagLib_File_MP4:
return reinterpret_cast<TagLib_File *>(new MP4::File(filename));
#endif
#ifdef WITH_ASF
#ifdef TAGLIB_WITH_ASF
case TagLib_File_ASF:
return reinterpret_cast<TagLib_File *>(new ASF::File(filename));
#endif

View File

@@ -56,6 +56,7 @@ KDE_CONF_FILES
dnl without this order in this file, automake will be confused!
dnl
AM_CONFIG_HEADER(config.h)
AM_CONFIG_HEADER(taglib/taglib_config.h)
dnl checks for programs.
dnl first check for c/c++ compilers
@@ -129,15 +130,15 @@ AC_DEFUN([AC_NO_CPPUNIT],
AC_ARG_ENABLE([mp4],
[AS_HELP_STRING([--enable-mp4], [add MP4 support])],
[
AC_DEFINE([WITH_MP4], [1],
[With MP4 support])
AC_DEFINE([WITH_MP4], [1], [With MP4 support])
AC_DEFINE([TAGLIB_WITH_MP4], [1], [With MP4 support])
])
AC_ARG_ENABLE([asf],
[AS_HELP_STRING([--enable-asf], [add ASF support])],
[
AC_DEFINE([WITH_ASF], [1],
[With ASF support])
AC_DEFINE([WITH_ASF], [1], [With ASF support])
AC_DEFINE([TAGLIB_WITH_ASF], [1], [With ASF support])
])
AC_LANG_SAVE

View File

@@ -7,6 +7,10 @@ INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/../taglib
${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2
${CMAKE_CURRENT_SOURCE_DIR}/../bindings/c/ )
if(ENABLE_STATIC)
add_definitions(-DTAGLIB_STATIC)
endif(ENABLE_STATIC)
########### next target ###############
ADD_EXECUTABLE(tagreader tagreader.cpp)

View File

@@ -19,7 +19,6 @@ INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_SOURCE_DIR}/riff
${CMAKE_CURRENT_SOURCE_DIR}/riff/aiff
${CMAKE_CURRENT_SOURCE_DIR}/riff/wav
${CMAKE_CURRENT_BINARY_DIR}/taglib
${CMAKE_CURRENT_BINARY_DIR}/..
)
if(ZLIB_FOUND)
@@ -184,7 +183,12 @@ SET(tag_LIB_SRCS ${mpeg_SRCS} ${id3v1_SRCS} ${id3v2_SRCS} ${frames_SRCS} ${ogg_S
)
ADD_LIBRARY(tag SHARED ${tag_LIB_SRCS})
if(ENABLE_STATIC)
add_library(tag STATIC ${tag_LIB_SRCS})
set_target_properties(tag PROPERTIES COMPILE_DEFINITIONS TAGLIB_STATIC)
else(ENABLE_STATIC)
add_library(tag SHARED ${tag_LIB_SRCS})
endif(ENABLE_STATIC)
TARGET_LINK_LIBRARIES(tag )
if(ZLIB_FOUND)

View File

@@ -1,5 +1,6 @@
SUBDIRS = toolkit mpeg ogg flac ape mpc wavpack trueaudio riff asf mp4
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \
@@ -23,7 +24,7 @@ INCLUDES = \
lib_LTLIBRARIES = libtag.la
libtag_la_SOURCES = tag.cpp tagunion.cpp fileref.cpp audioproperties.cpp
taglib_include_HEADERS = tag.h fileref.h audioproperties.h taglib_export.h
taglib_include_HEADERS = tag.h fileref.h audioproperties.h taglib_export.h taglib_config.h
taglib_includedir = $(includedir)/taglib
# Here are a set of rules to help you update your library version information:
@@ -42,9 +43,10 @@ taglib_includedir = $(includedir)/taglib
# set age to 0.
# Version history:
# 6:0:5 -- TagLib 1.5
# 7:0:6 -- TagLib 1.6
# 7:0:6 -- TagLib 1.6 RC1
# 7:1:6 -- TagLib 1.6
libtag_la_LDFLAGS = $(all_libraries) -no-undefined -version-info 7:0:6
libtag_la_LDFLAGS = $(all_libraries) -no-undefined -version-info 7:1:6
libtag_la_LIBADD = ./mpeg/libmpeg.la ./ogg/libogg.la ./flac/libflac.la ./mpc/libmpc.la \
./ape/libape.la ./toolkit/libtoolkit.la ./wavpack/libwavpack.la \
./trueaudio/libtrueaudio.la ./riff/libriff.la \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -129,14 +129,14 @@ StringList FileRef::defaultFileExtensions()
l.append("wv");
l.append("spx");
l.append("tta");
#ifdef WITH_MP4
#ifdef TAGLIB_WITH_MP4
l.append("m4a");
l.append("m4b");
l.append("m4p");
l.append("3g2");
l.append("mp4");
#endif
#ifdef WITH_ASF
#ifdef TAGLIB_WITH_ASF
l.append("wma");
l.append("asf");
#endif
@@ -221,11 +221,11 @@ File *FileRef::create(FileName fileName, bool readAudioProperties,
return new Ogg::Speex::File(fileName, readAudioProperties, audioPropertiesStyle);
if(ext == "TTA")
return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle);
#ifdef WITH_MP4
#ifdef TAGLIB_WITH_MP4
if(ext == "M4A" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2")
return new MP4::File(fileName, readAudioProperties, audioPropertiesStyle);
#endif
#ifdef WITH_ASF
#ifdef TAGLIB_WITH_ASF
if(ext == "WMA" || ext == "ASF")
return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle);
#endif

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,6 +1,8 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \
-I$(top_srcdir)/taglib/mpeg/id3v1 \
$(all_includes)
noinst_LTLIBRARIES = libmp4.la

View File

@@ -33,6 +33,7 @@
#include <tstring.h>
#include "mp4atom.h"
#include "mp4tag.h"
#include "id3v1genres.h"
using namespace TagLib;
@@ -73,6 +74,9 @@ MP4::Tag::Tag(File *file, MP4::Atoms *atoms)
else if(atom->name == "tmpo") {
parseInt(atom, file);
}
else if(atom->name == "gnre") {
parseGnre(atom, file);
}
else {
parseText(atom, file);
}
@@ -130,6 +134,18 @@ MP4::Tag::parseInt(MP4::Atom *atom, TagLib::File *file)
}
}
void
MP4::Tag::parseGnre(MP4::Atom *atom, TagLib::File *file)
{
ByteVectorList data = parseData(atom, file);
if(data.size()) {
int idx = (int)data[0].toShort();
if(!d->items.contains("\251gen")) {
d->items.insert("\251gen", StringList(ID3v1::genre(idx)));
}
}
}
void
MP4::Tag::parseIntPair(MP4::Atom *atom, TagLib::File *file)
{

View File

@@ -71,6 +71,7 @@ namespace TagLib {
void parseText(Atom *atom, TagLib::File *file, int expectedFlags = 1);
void parseFreeForm(Atom *atom, TagLib::File *file);
void parseInt(Atom *atom, TagLib::File *file);
void parseGnre(Atom *atom, TagLib::File *file);
void parseIntPair(Atom *atom, TagLib::File *file);
void parseBool(Atom *atom, TagLib::File *file);

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,4 +1,5 @@
SUBDIRS = id3v1 id3v2
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,4 +1,5 @@
SUBDIRS = frames
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -137,7 +137,7 @@ void AttachedPictureFrame::parseFields(const ByteVector &data)
d->mimeType = readStringField(data, String::Latin1, &pos);
/* Now we need at least two more bytes available */
if (pos + 1 >= data.size()) {
if (uint(pos) + 1 >= data.size()) {
debug("Truncated picture frame.");
return;
}

View File

@@ -1,5 +1,6 @@
SUBDIRS = vorbis flac speex
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = -I$(top_srcdir)/taglib -I$(top_srcdir)/taglib/toolkit $(all_includes)
noinst_LTLIBRARIES = libogg.la

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -394,8 +394,8 @@ void Ogg::File::writePageGroup(const List<int> &thePageGroup)
// First step: Pages that contain the comment data
for(List<Page *>::ConstIterator it = pages.begin(); it != pages.end(); ++it) {
const int index = (*it)->header()->pageSequenceNumber();
if(index < static_cast<int>(d->pages.size())) {
const unsigned int index = (*it)->header()->pageSequenceNumber();
if(index < d->pages.size()) {
delete d->pages[index];
d->pages[index] = *it;
}
@@ -411,8 +411,8 @@ void Ogg::File::writePageGroup(const List<int> &thePageGroup)
// Second step: the renumbered pages
for(List<Page *>::ConstIterator it = renumberedPages.begin(); it != renumberedPages.end(); ++it) {
const int index = (*it)->header()->pageSequenceNumber();
if(index < static_cast<int>(d->pages.size())) {
const unsigned int index = (*it)->header()->pageSequenceNumber();
if(index < d->pages.size()) {
delete d->pages[index];
d->pages[index] = *it;
}

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,5 +1,6 @@
SUBDIRS = aiff wav
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -167,7 +167,7 @@ void RIFF::File::read()
ByteVector chunkName = readBlock(4);
uint chunkSize = readBlock(4).toUInt(bigEndian);
if(tell() + chunkSize > length()) {
if(tell() + chunkSize > uint(length())) {
// something wrong
break;
}

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -0,0 +1,4 @@
/* taglib_config.h. Generated by cmake from taglib_config.h.cmake */
#cmakedefine TAGLIB_WITH_ASF 1
#cmakedefine TAGLIB_WITH_MP4 1

View File

@@ -0,0 +1,5 @@
/* With ASF support */
#undef TAGLIB_WITH_ASF
/* With MP4 support */
#undef TAGLIB_WITH_MP4

View File

@@ -26,7 +26,7 @@
#ifndef TAGLIB_EXPORT_H
#define TAGLIB_EXPORT_H
#if defined(_WIN32) || defined(_WIN64)
#if !defined(TAGLIB_STATIC) && (defined(_WIN32) || defined(_WIN64))
#ifdef MAKE_TAGLIB_LIB
#define TAGLIB_EXPORT __declspec(dllexport)
#else
@@ -36,4 +36,6 @@
#define TAGLIB_EXPORT
#endif
#include "taglib_config.h"
#endif

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
$(all_includes)

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -1,3 +1,4 @@
DEFS = -DMAKE_TAGLIB_LIB @DEFS@
INCLUDES = \
-I$(top_srcdir)/taglib \
-I$(top_srcdir)/taglib/toolkit \

View File

@@ -14,7 +14,7 @@ using namespace TagLib;
class TestFileRef : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(TestFileRef);
#ifdef WITH_ASF
#ifdef TAGLIB_WITH_ASF
CPPUNIT_TEST(testASF);
#endif
CPPUNIT_TEST(testMusepack);
@@ -22,7 +22,7 @@ class TestFileRef : public CppUnit::TestFixture
CPPUNIT_TEST(testSpeex);
CPPUNIT_TEST(testFLAC);
CPPUNIT_TEST(testMP3);
#ifdef WITH_MP4
#ifdef TAGLIB_WITH_MP4
CPPUNIT_TEST(testMP4_1);
CPPUNIT_TEST(testMP4_2);
CPPUNIT_TEST(testMP4_3);
@@ -82,7 +82,7 @@ public:
fileRefSave("click", ".mpc");
}
#ifdef WITH_ASF
#ifdef TAGLIB_WITH_ASF
void testASF()
{
fileRefSave("silence-1", ".wma");
@@ -114,7 +114,7 @@ public:
fileRefSave("empty", ".tta");
}
#ifdef WITH_MP4
#ifdef TAGLIB_WITH_MP4
void testMP4_1()
{
fileRefSave("has-tags", ".m4a");