mkvmuxer_tests: Add Projection element test.

Change-Id: I9a1e56d0846f43851ed0430ec52e2d7b816661fc
This commit is contained in:
Tom Finegan 2016-08-29 12:28:52 -07:00
parent 1e0a8eaa3c
commit 24fb44aa1a
2 changed files with 44 additions and 0 deletions

View File

@ -845,6 +845,50 @@ TEST_F(MuxerTest, Colour) {
EXPECT_TRUE(CompareFiles(GetTestFilePath("colour.webm"), filename_));
}
TEST_F(MuxerTest, Projection) {
EXPECT_TRUE(SegmentInit(false, false, false));
AddVideoTrack();
mkvmuxer::Projection muxer_proj;
muxer_proj.set_type(mkvmuxer::Projection::kRectangular);
muxer_proj.set_pose_yaw(1);
muxer_proj.set_pose_pitch(2);
muxer_proj.set_pose_roll(3);
const uint8_t muxer_proj_private[1] = {4};
const uint64_t muxer_proj_private_length = 1;
ASSERT_TRUE(muxer_proj.SetProjectionPrivate(&muxer_proj_private[0],
muxer_proj_private_length));
VideoTrack* const video_track =
static_cast<VideoTrack*>(segment_.GetTrackByNumber(kVideoTrackNumber));
ASSERT_TRUE(video_track != nullptr);
ASSERT_TRUE(video_track->SetProjection(muxer_proj));
ASSERT_NO_FATAL_FAILURE(AddDummyFrameAndFinalize(kVideoTrackNumber));
mkvparser::Segment* segment = nullptr;
ASSERT_TRUE(ParseMkvFileReleaseSegment(filename_, &segment));
std::unique_ptr<mkvparser::Segment> segment_ptr(segment);
const mkvparser::VideoTrack* const parser_track =
static_cast<const mkvparser::VideoTrack*>(
segment_ptr->GetTracks()->GetTrackByIndex(0));
const mkvparser::Projection* const parser_proj =
parser_track->GetProjection();
ASSERT_TRUE(parser_proj != nullptr);
EXPECT_FLOAT_EQ(muxer_proj.pose_yaw(), parser_proj->pose_yaw);
EXPECT_FLOAT_EQ(muxer_proj.pose_pitch(), parser_proj->pose_pitch);
EXPECT_FLOAT_EQ(muxer_proj.pose_roll(), parser_proj->pose_roll);
ASSERT_TRUE(parser_proj->private_data != nullptr);
EXPECT_EQ(static_cast<size_t>(muxer_proj.private_data_length()),
parser_proj->private_data_length);
EXPECT_EQ(muxer_proj.private_data()[0], parser_proj->private_data[0]);
typedef mkvparser::Projection::ProjectionType ParserProjType;
EXPECT_EQ(static_cast<ParserProjType>(muxer_proj.type()), parser_proj->type);
EXPECT_TRUE(CompareFiles(GetTestFilePath("projection.webm"), filename_));
}
} // namespace test
int main(int argc, char* argv[]) {

BIN
testing/testdata/projection.webm vendored Normal file

Binary file not shown.