Test tagging recoding from Android camera app
This commit is contained in:
parent
93bd1b2814
commit
105d8ac83a
|
@ -48,6 +48,7 @@ testfiles=(
|
|||
'mtx-test-data/mkv/handbrake-chapters-2.mkv'
|
||||
'mtx-test-data/mkv/tags.mkv'
|
||||
'mp4/test1.m4a'
|
||||
'mp4/android-8.1-camera-recoding.mp4'
|
||||
'mtx-test-data/aac/he-aacv2-ps.m4a'
|
||||
'mtx-test-data/alac/othertest-itunes.m4a'
|
||||
'mtx-test-data/mp3/id3-tag-and-xing-header.mp3'
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include "../progressfeedback.h"
|
||||
#include "../tagvalue.h"
|
||||
|
||||
#include <c++utilities/chrono/datetime.h>
|
||||
#include <c++utilities/chrono/format.h>
|
||||
#include <c++utilities/conversion/stringconversion.h>
|
||||
#include <c++utilities/tests/testutils.h>
|
||||
using namespace TestUtilities;
|
||||
|
@ -85,6 +87,7 @@ private:
|
|||
void checkMp4Testfile4();
|
||||
void checkMp4Testfile5();
|
||||
void checkMp4Testfile6();
|
||||
void checkMp4Testfile7();
|
||||
void checkMp4TestMetaData();
|
||||
void checkMp4Constraints();
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include "../mp4/mp4ids.h"
|
||||
#include "../mp4/mp4tag.h"
|
||||
|
||||
using namespace ChronoUtilities;
|
||||
|
||||
namespace Mp4TestFlags {
|
||||
enum TestFlag {
|
||||
ForceRewring = 0x1,
|
||||
|
@ -342,6 +344,82 @@ void OverallTests::checkMp4Testfile6()
|
|||
CPPUNIT_ASSERT(m_diag.level() <= DiagLevel::Information);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Checks "mp4/android-8.1-camera-recoding.mp4".
|
||||
*/
|
||||
void OverallTests::checkMp4Testfile7()
|
||||
{
|
||||
CPPUNIT_ASSERT_EQUAL(ContainerFormat::Mp4, m_fileInfo.containerFormat());
|
||||
CPPUNIT_ASSERT(m_fileInfo.container() != nullptr);
|
||||
CPPUNIT_ASSERT_EQUAL("nvr1"s, m_fileInfo.container()->documentType());
|
||||
const auto tracks = m_fileInfo.tracks();
|
||||
CPPUNIT_ASSERT_EQUAL(3_st, tracks.size());
|
||||
for (const auto &track : tracks) {
|
||||
switch (track->id()) {
|
||||
case 1:
|
||||
CPPUNIT_ASSERT_EQUAL("VideoHandle"s, track->name());
|
||||
CPPUNIT_ASSERT_EQUAL(MediaType::Video, track->mediaType());
|
||||
CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Avc, track->format().general);
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<unsigned char>(SubFormats::AvcBaselineProfile), track->format().sub);
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<unsigned char>(0), track->format().extension);
|
||||
CPPUNIT_ASSERT_EQUAL(4.0, track->version());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint16>(0), track->channelCount());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<byte>(0), track->channelConfig());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<byte>(0), track->extensionChannelConfig());
|
||||
CPPUNIT_ASSERT_EQUAL(0u, track->samplingFrequency());
|
||||
CPPUNIT_ASSERT_EQUAL(0u, track->extensionSamplingFrequency());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint16>(24), track->depth());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint64>(51), track->sampleCount());
|
||||
CPPUNIT_ASSERT_EQUAL(1920u, track->pixelSize().width());
|
||||
CPPUNIT_ASSERT_EQUAL(1080u, track->pixelSize().height());
|
||||
CPPUNIT_ASSERT_EQUAL(72u, track->resolution().width());
|
||||
CPPUNIT_ASSERT_EQUAL(72u, track->resolution().height());
|
||||
CPPUNIT_ASSERT_EQUAL(DateTime::fromDateAndTime(2018, 7, 8, 20, 3, 52), track->creationTime());
|
||||
CPPUNIT_ASSERT_EQUAL(DateTime::fromDateAndTime(2018, 7, 8, 20, 3, 52), track->modificationTime());
|
||||
CPPUNIT_ASSERT_EQUAL("YUV 4:2:0"s, string(track->chromaFormat()));
|
||||
CPPUNIT_ASSERT_EQUAL(1, track->duration().seconds());
|
||||
break;
|
||||
case 2:
|
||||
CPPUNIT_ASSERT_EQUAL("SoundHandle"s, track->name());
|
||||
CPPUNIT_ASSERT_EQUAL(MediaType::Audio, track->mediaType());
|
||||
CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Aac, track->format().general);
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<unsigned char>(SubFormats::AacMpeg4LowComplexityProfile), track->format().sub);
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<unsigned char>(0), track->format().extension);
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint16>(2), track->channelCount());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<byte>(Mpeg4ChannelConfigs::FrontLeftFrontRight), track->channelConfig());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<byte>(0), track->extensionChannelConfig());
|
||||
CPPUNIT_ASSERT_EQUAL(48000u, track->samplingFrequency());
|
||||
CPPUNIT_ASSERT_EQUAL(0u, track->extensionSamplingFrequency());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint16>(16), track->bitsPerSample());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<uint64>(76), track->sampleCount());
|
||||
CPPUNIT_ASSERT_EQUAL(DateTime::fromDateAndTime(2018, 7, 8, 20, 3, 52), track->creationTime());
|
||||
CPPUNIT_ASSERT_EQUAL(DateTime::fromDateAndTime(2018, 7, 8, 20, 3, 52), track->modificationTime());
|
||||
CPPUNIT_ASSERT_EQUAL(1, track->duration().seconds());
|
||||
CPPUNIT_ASSERT_EQUAL(256.0, track->bitrate());
|
||||
break;
|
||||
case 3:
|
||||
CPPUNIT_ASSERT_EQUAL("MetaHandler"s, track->name());
|
||||
CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Unknown, track->format().general);
|
||||
CPPUNIT_ASSERT_EQUAL("urim"s, track->formatId());
|
||||
break;
|
||||
default:
|
||||
CPPUNIT_FAIL("unknown track ID");
|
||||
}
|
||||
}
|
||||
const auto tags = m_fileInfo.tags();
|
||||
switch (m_tagStatus) {
|
||||
case TagStatus::Original:
|
||||
CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
|
||||
break;
|
||||
case TagStatus::TestMetaDataPresent:
|
||||
checkMp4TestMetaData();
|
||||
break;
|
||||
case TagStatus::Removed:
|
||||
CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
|
||||
}
|
||||
CPPUNIT_ASSERT(m_diag.level() <= DiagLevel::Information);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Checks whether test meta data for MP4 files has been applied correctly.
|
||||
*/
|
||||
|
@ -452,6 +530,7 @@ void OverallTests::testMp4Parsing()
|
|||
parseFile(TestUtilities::testFilePath("mtx-test-data/mp4/dash/dragon-age-inquisition-H1LkM6IVlm4-video.mp4"), &OverallTests::checkMp4Testfile3);
|
||||
parseFile(TestUtilities::testFilePath("mtx-test-data/alac/othertest-itunes.m4a"), &OverallTests::checkMp4Testfile4);
|
||||
parseFile(TestUtilities::testFilePath("mtx-test-data/aac/he-aacv2-ps.m4a"), &OverallTests::checkMp4Testfile5);
|
||||
parseFile(TestUtilities::testFilePath("mp4/android-8.1-camera-recoding.mp4"), &OverallTests::checkMp4Testfile7);
|
||||
}
|
||||
|
||||
#ifdef PLATFORM_UNIX
|
||||
|
@ -517,6 +596,7 @@ void OverallTests::testMp4Making()
|
|||
&OverallTests::checkMp4Testfile3);
|
||||
makeFile(TestUtilities::workingCopyPath("mtx-test-data/alac/othertest-itunes.m4a"), modifyRoutine, &OverallTests::checkMp4Testfile4);
|
||||
makeFile(TestUtilities::workingCopyPath("mtx-test-data/aac/he-aacv2-ps.m4a"), modifyRoutine, &OverallTests::checkMp4Testfile5);
|
||||
makeFile(TestUtilities::workingCopyPath("mp4/android-8.1-camera-recoding.mp4"), modifyRoutine, &OverallTests::checkMp4Testfile7);
|
||||
// -> add/remove tracks
|
||||
modifyRoutine = (m_mode & RemoveTagOrTrack) ? &OverallTests::removeSecondTrack : &OverallTests::alterMp4Tracks;
|
||||
m_fileInfo.setTagPosition(ElementPosition::Keep);
|
||||
|
|
|
@ -70,6 +70,7 @@ struct TestFile {
|
|||
{ "mtx-test-data/mkv/tags.mkv", { "4330019afc3d846600c1ded38158fcac081297f4e56c749251c236f4871e0287" } },
|
||||
{ "mkv/nested-tags.xml", { "85cfcc94920f114e52fd1aa3df24706cd2710626e065a2c8c55dd209ec8dc8ce" } },
|
||||
{ "mp4/test1.m4a", { "4f16e0a22525bd13ba859431406d7f5991e0b4f155c51e10e5f32b0c97034b36" } },
|
||||
{ "mp4/android-8.1-camera-recoding.mp4", { "e7c5624872de1c9c2fb52dd954cef53adc337a6ba88342ff516dde5d4ef374dc" } },
|
||||
{ "mtx-test-data/aac/he-aacv2-ps.m4a", { "be54be0ae45b0184583ced8a84a881a1652a449feb7f6a917e11f60efabb68ac" } },
|
||||
{ "mtx-test-data/alac/othertest-itunes.m4a", { "5e9c64cde00902211533fbe38aaa67ef5f79a945e1d717951b78b4bbf9ff84e8" } },
|
||||
{ "mtx-test-data/mp3/id3-tag-and-xing-header.mp3", { "4a9187b05dc74d32e5a3de53494fde9db8c6c25d46082f86de6f424ad28daacf" } },
|
||||
|
|
Loading…
Reference in New Issue