3 #include "../abstracttrack.h" 4 #include "../mpegaudio/mpegaudioframe.h" 5 #include "../mp4/mp4ids.h" 6 #include "../matroska/matroskacontainer.h" 8 #include <c++utilities/conversion/binaryconversion.h> 9 #include <c++utilities/io/misc.h> 32 void OverallTests::checkMkvTestfile1()
34 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
35 const auto tracks = m_fileInfo.tracks();
36 CPPUNIT_ASSERT_EQUAL(2_st, tracks.size());
37 for(
const auto &track : tracks) {
41 CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::MicrosoftMpeg4, track->format().general);
46 CPPUNIT_ASSERT_EQUAL(48000u, track->samplingFrequency());
49 CPPUNIT_FAIL(
"unknown track ID");
52 const auto tags = m_fileInfo.tags();
55 CPPUNIT_ASSERT(tags.size() == 1);
56 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Big Buck Bunny - test 1");
58 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File1, basic MPEG4.2 and MP3 with only SimpleBlock");
62 checkMkvTestMetaData();
65 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
72 void OverallTests::checkMkvTestfile2()
74 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
75 const auto tracks = m_fileInfo.tracks();
76 CPPUNIT_ASSERT(tracks.size() == 2);
77 for(
const auto &track : tracks) {
82 CPPUNIT_ASSERT(track->displaySize() ==
Size(1354, 576));
87 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
90 CPPUNIT_FAIL(
"unknown track ID");
93 const auto tags = m_fileInfo.tags();
96 CPPUNIT_ASSERT(tags.size() == 1);
97 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Elephant Dream - test 2");
99 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 2, 100,000 timecode scale, odd aspect ratio, and CRC-32. Codecs are AVC and AAC");
102 checkMkvTestMetaData();
105 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
112 void OverallTests::checkMkvTestfile3()
114 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
115 const auto tracks = m_fileInfo.tracks();
116 CPPUNIT_ASSERT(tracks.size() == 2);
117 for(
const auto &track : tracks) {
118 switch(track->id()) {
122 CPPUNIT_ASSERT(track->displaySize() ==
Size(1024, 576));
127 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
130 CPPUNIT_FAIL(
"unknown track ID");
133 const auto tags = m_fileInfo.tags();
134 switch(m_tagStatus) {
136 CPPUNIT_ASSERT(tags.size() == 1);
137 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Elephant Dream - test 3");
139 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 3, header stripping on the video track and no SimpleBlock");
142 checkMkvTestMetaData();
145 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
154 void OverallTests::checkMkvTestfile4()
156 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
158 const auto tracks = m_fileInfo.tracks();
159 CPPUNIT_ASSERT(tracks.size() == 2);
160 for(
const auto &track : tracks) {
161 switch(track->id()) {
164 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Theora);
165 CPPUNIT_ASSERT(track->displaySize() ==
Size(1280, 720));
169 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Vorbis);
170 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
171 CPPUNIT_ASSERT(track->channelCount() == 2);
172 switch(m_tagStatus) {
175 CPPUNIT_ASSERT_EQUAL(
"und"s, track->language());
176 CPPUNIT_ASSERT_EQUAL(
string(), track->name());
177 CPPUNIT_ASSERT(track->isEnabled());
178 CPPUNIT_ASSERT(!track->isForced());
179 CPPUNIT_ASSERT(!track->isDefault());
182 CPPUNIT_ASSERT_EQUAL(
"ger"s, track->language());
183 CPPUNIT_ASSERT_EQUAL(
"the name"s, track->name());
184 CPPUNIT_ASSERT(track->isEnabled());
185 CPPUNIT_ASSERT(track->isForced());
186 CPPUNIT_ASSERT(track->isDefault());
191 CPPUNIT_FAIL(
"unknown track ID");
194 const auto tags = m_fileInfo.tags();
195 switch(m_tagStatus) {
198 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
201 checkMkvTestMetaData();
209 void OverallTests::checkMkvTestfile5()
211 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
212 const auto tracks = m_fileInfo.tracks();
213 CPPUNIT_ASSERT(tracks.size() == 11);
214 for(
const auto &track : tracks) {
215 switch(track->id()) {
219 CPPUNIT_ASSERT(track->displaySize() ==
Size(1024, 576));
224 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
228 CPPUNIT_ASSERT(track->mediaType() == MediaType::Text);
230 CPPUNIT_ASSERT(track->language() ==
"ger");
236 const auto tags = m_fileInfo.tags();
237 switch(m_tagStatus) {
239 CPPUNIT_ASSERT(tags.size() == 1);
240 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Big Buck Bunny - test 8");
242 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 8, secondary audio commentary track, misc subtitle tracks");
245 checkMkvTestMetaData();
248 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
255 void OverallTests::checkMkvTestfile6()
257 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
258 const auto tracks = m_fileInfo.tracks();
259 CPPUNIT_ASSERT(tracks.size() == 2);
260 for(
const auto &track : tracks) {
261 switch(track->id()) {
264 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::MicrosoftMpeg4);
265 CPPUNIT_ASSERT(track->pixelSize() ==
Size(854, 480));
270 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
271 CPPUNIT_ASSERT(track->channelConfig() ==
static_cast<byte
>(MpegChannelMode::Stereo));
274 CPPUNIT_FAIL(
"unknown track ID");
277 const auto tags = m_fileInfo.tags();
278 switch(m_tagStatus) {
280 CPPUNIT_ASSERT(tags.size() == 1);
281 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Big Buck Bunny - test 6");
283 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 6, random length to code the size of Clusters and Blocks, no Cues for seeking");
286 checkMkvTestMetaData();
289 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
296 void OverallTests::checkMkvTestfile7()
298 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
299 const auto tracks = m_fileInfo.tracks();
300 CPPUNIT_ASSERT(tracks.size() == 2);
301 for(
const auto &track : tracks) {
302 switch(track->id()) {
306 CPPUNIT_ASSERT(track->pixelSize() ==
Size(1024, 576));
307 CPPUNIT_ASSERT(!strcmp(track->chromaFormat(),
"YUV 4:2:0"));
312 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
316 CPPUNIT_FAIL(
"unknown track ID");
319 const auto tags = m_fileInfo.tags();
320 switch(m_tagStatus) {
322 CPPUNIT_ASSERT(tags.size() == 1);
323 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Big Buck Bunny - test 7");
325 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 7, junk elements are present at the beggining or end of clusters, the parser should skip it. There is also a damaged element at 451418");
328 checkMkvTestMetaData();
331 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
338 void OverallTests::checkMkvTestfile8()
340 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
341 const auto tracks = m_fileInfo.tracks();
342 CPPUNIT_ASSERT(tracks.size() == 2);
343 for(
const auto &track : tracks) {
344 switch(track->id()) {
348 CPPUNIT_ASSERT(track->pixelSize() ==
Size(1024, 576));
349 CPPUNIT_ASSERT(!strcmp(track->chromaFormat(),
"YUV 4:2:0"));
354 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
358 CPPUNIT_FAIL(
"unknown track ID");
361 const auto tags = m_fileInfo.tags();
362 switch(m_tagStatus) {
364 CPPUNIT_ASSERT(tags.size() == 1);
365 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Title).toString() ==
"Big Buck Bunny - test 8");
367 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Comment).toString() ==
"Matroska Validation File 8, audio missing between timecodes 6.019s and 6.360s");
370 checkMkvTestMetaData();
373 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
380 void OverallTests::checkMkvTestfileHandbrakeChapters()
382 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
383 const auto tracks = m_fileInfo.tracks();
384 CPPUNIT_ASSERT_EQUAL(2_st, tracks.size());
385 for(
const auto &track : tracks) {
386 switch(track->id()) {
390 CPPUNIT_ASSERT_EQUAL(4.0, track->version());
391 CPPUNIT_ASSERT(track->pixelSize() ==
Size(1280, 544));
392 CPPUNIT_ASSERT(track->displaySize() ==
Size(1280, 544));
393 CPPUNIT_ASSERT(track->fps() == 23);
398 CPPUNIT_ASSERT(track->samplingFrequency() == 44100);
402 CPPUNIT_FAIL(argsToString(
"unknown track ID ", track->id()));
405 const auto chapters = m_fileInfo.chapters();
406 CPPUNIT_ASSERT_EQUAL(2_st, chapters.size());
407 for(
const auto &chapter : chapters) {
408 switch(chapter->id()) {
410 CPPUNIT_ASSERT(!strcmp(chapter->names().at(0).data(),
"Kapitel 01"));
411 CPPUNIT_ASSERT_EQUAL(0l, chapter->startTime().totalTicks());
412 CPPUNIT_ASSERT_EQUAL(15, chapter->endTime().seconds());
415 CPPUNIT_ASSERT(!strcmp(chapter->names().at(0).data(),
"Kapitel 02"));
416 CPPUNIT_ASSERT_EQUAL(15, chapter->startTime().seconds());
417 CPPUNIT_ASSERT_EQUAL(27, chapter->endTime().seconds());
420 CPPUNIT_FAIL(argsToString(
"unknown chapter ID ", chapter->id()));
423 const auto tags = m_fileInfo.tags();
424 switch(m_tagStatus) {
426 CPPUNIT_ASSERT_EQUAL(2_st, tags.size());
427 CPPUNIT_ASSERT(tags[0]->target().isEmpty());
428 CPPUNIT_ASSERT_EQUAL(
""s, static_cast<MatroskaTag *>(tags[0])->value(
"CREATION_TIME").toString());
430 CPPUNIT_ASSERT_EQUAL(2_st, tags[1]->target().tracks().at(0));
431 CPPUNIT_ASSERT_EQUAL(
"eng"s, tags[1]->value(KnownField::Language).toString());
434 checkMkvTestMetaData();
437 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
444 void OverallTests::checkMkvTestfileNestedTags()
446 CPPUNIT_ASSERT(m_fileInfo.containerFormat() == ContainerFormat::Matroska);
447 const auto tags = m_fileInfo.tags();
448 bool generalTagFound =
false;
449 switch(m_tagStatus) {
452 CPPUNIT_ASSERT_EQUAL(5_st, tags.size());
453 for(
const Tag *tag : tags) {
454 CPPUNIT_ASSERT(tag->type() == TagType::MatroskaTag);
455 const auto *mkvTag =
static_cast<const MatroskaTag *
>(tag);
456 const auto &target = mkvTag->
target();
457 if(target.level() == 50 && target.tracks().empty()) {
458 generalTagFound =
true;
460 const auto &fields = mkvTag->fields();
462 CPPUNIT_ASSERT(artistField != fields.end());
463 CPPUNIT_ASSERT_EQUAL(
"Test artist"s, artistField->second.value().toString());
464 const auto &nestedFields = artistField->second.nestedFields();
465 CPPUNIT_ASSERT_EQUAL(1_st, nestedFields.size());
466 CPPUNIT_ASSERT_EQUAL(
"ADDRESS"s, nestedFields[0].idToString());
467 CPPUNIT_ASSERT_EQUAL(
"Test address"s, nestedFields[0].value().toString());
470 CPPUNIT_ASSERT(generalTagFound);
473 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
480 void OverallTests::checkMkvTestMetaData()
483 const auto tags = m_fileInfo.tags();
484 const auto tracks = m_fileInfo.tracks();
485 CPPUNIT_ASSERT_EQUAL(2_st, tags.size());
486 CPPUNIT_ASSERT_EQUAL(m_testTitle.toString(), tags.front()->value(
KnownField::Title).toString());
488 CPPUNIT_ASSERT_EQUAL(m_testComment.toString(), tags.front()->value(
KnownField::Comment).toString());
489 CPPUNIT_ASSERT_EQUAL(30_st, tags[1]->target().level());
490 CPPUNIT_ASSERT_EQUAL(tracks.at(0)->id(), tags[1]->target().tracks().at(0));
491 CPPUNIT_ASSERT_EQUAL(m_testAlbum.toString(), tags[1]->value(
KnownField::Album).toString());
492 CPPUNIT_ASSERT_EQUAL(m_testPartNumber.toInteger(), tags[1]->value(KnownField::PartNumber).toInteger());
493 CPPUNIT_ASSERT_EQUAL(m_testTotalParts.toInteger(), tags[1]->value(KnownField::TotalParts).toInteger());
496 const auto attachments = m_fileInfo.attachments();
497 CPPUNIT_ASSERT_EQUAL(1_st, attachments.size());
498 CPPUNIT_ASSERT(attachments[0]->mimeType() ==
"image/png");
499 CPPUNIT_ASSERT(attachments[0]->name() ==
"cover.jpg");
501 CPPUNIT_ASSERT(attachmentData !=
nullptr);
502 if (m_testCover.empty()) {
503 m_testCover = readFile(testFilePath(
"matroska_wave1/logo3_256x256.png"), 20000);
505 CPPUNIT_ASSERT_EQUAL(m_testCover.size(),
static_cast<size_t>(attachmentData->
size()));
506 istream &attachmentSteam = attachmentData->
stream();
507 attachmentSteam.seekg(attachmentData->
startOffset());
508 for (
char expectedChar : m_testCover) {
509 CPPUNIT_ASSERT_EQUAL(expectedChar, static_cast<char>(attachmentSteam.get()));
516 void OverallTests::checkMkvConstraints()
520 CPPUNIT_ASSERT(m_fileInfo.container());
523 CPPUNIT_ASSERT_EQUAL(4096_st, m_fileInfo.paddingSize());
525 CPPUNIT_ASSERT(m_fileInfo.paddingSize() >= 1024);
526 CPPUNIT_ASSERT(m_fileInfo.paddingSize() <= (4096 + 1024));
528 if(!(m_mode &
RemoveTag) && (m_expectedTagPos != ElementPosition::Keep) && ((m_mode & ForceRewring) || (m_mode &
ForceTagPos))) {
529 CPPUNIT_ASSERT_EQUAL(m_expectedTagPos, m_fileInfo.container()->determineTagPosition());
532 CPPUNIT_ASSERT_EQUAL(m_expectedIndexPos, m_fileInfo.container()->determineIndexPosition());
540 void OverallTests::setMkvTestMetaData()
542 CPPUNIT_ASSERT_EQUAL(ContainerFormat::Matroska, m_fileInfo.containerFormat());
546 const string fileName(m_fileInfo.fileName());
547 if(fileName ==
"test4.mkv") {
552 CPPUNIT_ASSERT(track);
558 }
else if(fileName ==
"handbrake-chapters-2.mkv") {
560 m_fileInfo.removeTag(m_fileInfo.tags().at(1));
562 Tag *firstTag = m_fileInfo.tags().at(0);
567 trackIds.emplace_back(m_fileInfo.tracks().at(0)->id());
568 Tag *newTag = container->createTag(
TagTarget(30, trackIds));
569 CPPUNIT_ASSERT_MESSAGE(
"create tag", newTag);
571 newTag->
setValue(KnownField::PartNumber, m_testPartNumber);
572 newTag->
setValue(KnownField::TotalParts, m_testTotalParts);
575 CPPUNIT_ASSERT_MESSAGE(
"create attachment", attachment);
576 attachment->
setFile(TestUtilities::testFilePath(
"matroska_wave1/logo3_256x256.png"));
578 attachment->
setName(
"cover.jpg");
586 void OverallTests::createMkvWithNestedTags()
589 m_nestedTagsMkvPath = workingCopyPathMode(
"mtx-test-data/mkv/nested-tags.mkv", WorkingCopyMode::NoCopy);
590 remove(m_nestedTagsMkvPath.data());
592 cerr <<
"\n\n- Create testfile \"" << m_nestedTagsMkvPath <<
"\" with mkvmerge" << endl;
593 const string tagsMkvPath(testFilePath(
"mtx-test-data/mkv/tags.mkv"));
594 const string tagsXmlPath(testFilePath(
"mkv/nested-tags.xml"));
595 const char *
const mkvmergeArgs[] = {
596 "--ui-language en_US",
597 "--output", m_nestedTagsMkvPath.data(),
598 "--no-global-tags",
"--language",
"0:und",
"--default-track",
"0:yes",
"--language",
"1:und",
"--default-track",
"1:yes",
599 "(", tagsMkvPath.data(),
")",
600 "--global-tags", tagsXmlPath.data(),
"--track-order",
"0:0,0:1",
nullptr 602 string mkvmergeOutput, mkvmergeErrors;
603 int res = execHelperApp(
"/bin/mkvmerge", mkvmergeArgs, mkvmergeOutput, mkvmergeErrors);
604 cout << mkvmergeOutput << endl;
605 cerr << mkvmergeErrors << endl;
607 cerr <<
"- failure (exit code " << res <<
"); unable to test nested tags" << endl;
608 remove(m_nestedTagsMkvPath.data());
609 m_nestedTagsMkvPath.clear();
619 cerr << endl <<
"Matroska parser" << endl;
620 m_fileInfo.setForceFullParse(
false);
622 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test1.mkv"), &OverallTests::checkMkvTestfile1);
623 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test2.mkv"), &OverallTests::checkMkvTestfile2);
624 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test3.mkv"), &OverallTests::checkMkvTestfile3);
625 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test4.mkv"), &OverallTests::checkMkvTestfile4);
626 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test5.mkv"), &OverallTests::checkMkvTestfile5);
627 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test6.mkv"), &OverallTests::checkMkvTestfile6);
628 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test7.mkv"), &OverallTests::checkMkvTestfile7);
629 parseFile(TestUtilities::testFilePath(
"matroska_wave1/test8.mkv"), &OverallTests::checkMkvTestfile8);
630 parseFile(TestUtilities::testFilePath(
"mtx-test-data/mkv/handbrake-chapters-2.mkv"), &OverallTests::checkMkvTestfileHandbrakeChapters);
631 createMkvWithNestedTags();
632 if(!m_nestedTagsMkvPath.empty()) {
633 parseFile(m_nestedTagsMkvPath, &OverallTests::checkMkvTestfileNestedTags);
645 void OverallTests::testMkvMakingWithDifferentSettings()
648 m_fileInfo.setForceFullParse(
true);
651 for(m_mode = 0; m_mode != 0x100; ++m_mode) {
657 m_fileInfo.setTagPosition(ElementPosition::Keep);
659 m_fileInfo.setTagPosition(m_mode &
TagsBeforeData ? ElementPosition::BeforeData : ElementPosition::AfterData);
665 m_fileInfo.setIndexPosition(ElementPosition::Keep);
667 m_fileInfo.setIndexPosition(m_mode &
IndexBeforeData ? ElementPosition::BeforeData : ElementPosition::AfterData);
670 m_fileInfo.setMinPadding(m_mode & PaddingConstraints ? 1024 : 0);
671 m_fileInfo.setMaxPadding(m_mode & PaddingConstraints ? (4096 + 1024) : static_cast<size_t>(-1));
672 m_fileInfo.setForceTagPosition(m_mode &
ForceTagPos);
676 list<string> testConditions;
677 if(m_mode & ForceRewring) {
678 testConditions.emplace_back(
"forcing rewrite");
680 if(m_mode & KeepTagPos) {
682 testConditions.emplace_back(
"removing tag");
684 testConditions.emplace_back(
"keeping tag position");
687 testConditions.emplace_back(
"tags before data");
689 testConditions.emplace_back(
"tags after data");
691 if(m_mode & KeepIndexPos) {
692 testConditions.emplace_back(
"keeping index position");
694 testConditions.emplace_back(
"index before data");
696 testConditions.emplace_back(
"index after data");
698 if(m_mode & PaddingConstraints) {
699 testConditions.emplace_back(
"padding constraints");
701 if(m_mode & ForceTagPos) {
702 testConditions.emplace_back(
"forcing tag position");
704 if(m_mode & ForceIndexPos) {
705 testConditions.emplace_back(
"forcing index position");
707 cerr << endl <<
"Matroska maker - testmode " << m_mode <<
": " << joinStrings(testConditions,
", ") << endl;
711 void (
OverallTests::*modifyRoutine)(void) = (m_mode &
RemoveTag) ? &OverallTests::removeAllTags : &OverallTests::setMkvTestMetaData;
712 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test1.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile1);
713 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test2.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile2);
714 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test3.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile3);
715 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test4.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile4);
716 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test5.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile5);
717 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test6.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile6);
718 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test7.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile7);
719 makeFile(TestUtilities::workingCopyPath(
"matroska_wave1/test8.mkv"), modifyRoutine, &OverallTests::checkMkvTestfile8);
720 makeFile(TestUtilities::workingCopyPath(
"mtx-test-data/mkv/handbrake-chapters-2.mkv"), modifyRoutine, &OverallTests::checkMkvTestfileHandbrakeChapters);
728 void OverallTests::testMkvMakingNestedTags()
730 createMkvWithNestedTags();
731 if(!m_nestedTagsMkvPath.empty()) {
732 cerr << endl <<
"Matroska maker - rewrite file with nested tags" << endl;
733 m_fileInfo.setMinPadding(0);
734 m_fileInfo.setMaxPadding(0);
735 m_fileInfo.setTagPosition(ElementPosition::BeforeData);
736 m_fileInfo.setIndexPosition(ElementPosition::BeforeData);
737 makeFile(m_nestedTagsMkvPath, &OverallTests::noop, &OverallTests::checkMkvTestfileNestedTags);
The OverallTests class tests reading and writing tags and parsing technical information for all suppo...
void testMkvParsing()
Tests the Matroska parser via MediaFileInfo.