mirror of
https://github.com/taglib/taglib.git
synced 2025-07-18 04:54:19 -04:00
Partial support for 64-bit atoms
We still can't handle actual 64-bit atoms, but we can handle 32-bit sizes stored in 64 bits. CCBUG:198730 git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1001897 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
BIN
tests/data/64bit.mp4
Normal file
BIN
tests/data/64bit.mp4
Normal file
Binary file not shown.
@ -18,6 +18,7 @@ class TestMP4 : public CppUnit::TestFixture
|
||||
CPPUNIT_TEST(testFreeForm);
|
||||
CPPUNIT_TEST(testUpdateStco);
|
||||
CPPUNIT_TEST(testSaveExisingWhenIlstIsLast);
|
||||
CPPUNIT_TEST(test64BitAtom);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
@ -118,6 +119,32 @@ public:
|
||||
deleteFile(filename);
|
||||
}
|
||||
|
||||
void test64BitAtom()
|
||||
{
|
||||
string filename = copyFile("64bit", ".mp4");
|
||||
|
||||
MP4::File *f = new MP4::File(filename.c_str());
|
||||
CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["cpil"].toBool());
|
||||
|
||||
MP4::Atoms *atoms = new MP4::Atoms(f);
|
||||
MP4::Atom *moov = atoms->atoms[0];
|
||||
CPPUNIT_ASSERT_EQUAL(long(77), moov->length);
|
||||
|
||||
f->tag()->itemListMap()["pgap"] = 1;
|
||||
f->save();
|
||||
|
||||
f = new MP4::File(filename.c_str());
|
||||
CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["cpil"].toBool());
|
||||
CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["pgap"].toBool());
|
||||
|
||||
atoms = new MP4::Atoms(f);
|
||||
moov = atoms->atoms[0];
|
||||
// original size + 'pgap' size + padding
|
||||
CPPUNIT_ASSERT_EQUAL(long(77 + 25 + 974), moov->length);
|
||||
|
||||
deleteFile(filename);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4);
|
||||
|
Reference in New Issue
Block a user