From 724a68c79ca7fecd1e3ce18f2546007c5c9d8da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Sat, 24 Oct 2009 12:01:40 +0000 Subject: [PATCH] Don't wrote the Vorbis framing bit to OggFLAC files https://bugs.launchpad.net/maxosx/+bug/445970 http://www.hydrogenaudio.org/forums/index.php?showtopic=75263 CCMAIL:me@sbooth.org git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1039704 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- taglib/ogg/flac/oggflacfile.cpp | 2 +- tests/CMakeLists.txt | 3 +++ tests/Makefile.am | 5 +++- tests/data/empty_flac.oga | Bin 0 -> 9113 bytes tests/data/empty_vorbis.ogg | Bin 0 -> 4328 bytes tests/test_oggflac.cpp | 44 ++++++++++++++++++++++++++++++++ 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 tests/data/empty_flac.oga create mode 100644 tests/data/empty_vorbis.ogg create mode 100644 tests/test_oggflac.cpp diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp index 3070f3ab..85a59354 100644 --- a/taglib/ogg/flac/oggflacfile.cpp +++ b/taglib/ogg/flac/oggflacfile.cpp @@ -93,7 +93,7 @@ Properties *Ogg::FLAC::File::audioProperties() const bool Ogg::FLAC::File::save() { - d->xiphCommentData = d->comment->render(); + d->xiphCommentData = d->comment->render(false); // Create FLAC metadata-block: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2db60512..403e6060 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,6 +14,8 @@ INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/vorbis + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/flac + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/flac ) SET(test_runner_SRCS @@ -33,6 +35,7 @@ SET(test_runner_SRCS test_aiff.cpp test_riff.cpp test_ogg.cpp + test_oggflac.cpp ) IF(WITH_MP4) SET(test_runner_SRCS ${test_runner_SRCS} test_mp4.cpp) diff --git a/tests/Makefile.am b/tests/Makefile.am index f51e0765..e51ac0de 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -7,6 +7,8 @@ INCLUDES = \ -I$(top_srcdir)/taglib/mpeg/id3v2 \ -I$(top_srcdir)/taglib/ogg \ -I$(top_srcdir)/taglib/ogg/vorbis \ + -I$(top_srcdir)/taglib/ogg/flac \ + -I$(top_srcdir)/taglib/flac \ -I$(top_srcdir)/taglib/riff \ -I$(top_srcdir)/taglib/riff/aiff \ -I$(top_srcdir)/taglib/mpeg/id3v2/frames @@ -26,7 +28,8 @@ test_runner_SOURCES = \ test_xiphcomment.cpp \ test_riff.cpp \ test_aiff.cpp \ - test_ogg.cpp + test_ogg.cpp \ + test_oggflac.cpp if build_tests TESTS = test_runner diff --git a/tests/data/empty_flac.oga b/tests/data/empty_flac.oga new file mode 100644 index 0000000000000000000000000000000000000000..444587fd0cf950ce092cc5540b81f973b52136d1 GIT binary patch literal 9113 zcmeI&Pe_w-9LMqB<7R)X=Hpsx*{roTTWGc!ViMF+=unb}K}D3HHir-v=4Ay7v44~u zIut>N3=gqOk|2nUC`n|P{Q)8B5O$FcQ6nW*B*QSMf=N6#OLaN^0Wk&6_N z0#ZNi`B0c8zAYvR(9KB@)ou`&2~|a$Ke6cR}l}Q*8&K(hJnlX=r^fHFXbi-lDe7 zKxH?m$2Xx3x2em;(8jxzeim}MsY7mPlb3pW7;;xq=_zP)1$Al!^6aLreTTetl(P>i T_fuYbCLMKbvFzDNznJ+2futKO literal 0 HcmV?d00001 diff --git a/tests/data/empty_vorbis.ogg b/tests/data/empty_vorbis.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa533104d6fde177772775137cb7660a3be11418 GIT binary patch literal 4328 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 literal 0 HcmV?d00001 diff --git a/tests/test_oggflac.cpp b/tests/test_oggflac.cpp new file mode 100644 index 00000000..a29a27a6 --- /dev/null +++ b/tests/test_oggflac.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "utils.h" + +using namespace std; +using namespace TagLib; + +class TestOggFLAC : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(TestOggFLAC); + CPPUNIT_TEST(testFramingBit); + CPPUNIT_TEST_SUITE_END(); + +public: + + void testFramingBit() + { + string newname = copyFile("empty_flac", ".oga"); + + Ogg::FLAC::File *f = new Ogg::FLAC::File(newname.c_str()); + f->tag()->setArtist("The Artist"); + f->save(); + delete f; + + f = new Ogg::FLAC::File(newname.c_str()); + CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist()); + + f->seek(0, File::End); + int size = f->tell(); + CPPUNIT_ASSERT_EQUAL(9134, size); + + delete f; + //deleteFile(newname); + } + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(TestOggFLAC);