17f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org/* 27f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 37f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * 47f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * Use of this source code is governed by a BSD-style license 57f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * that can be found in the LICENSE file in the root of the source 67f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * tree. An additional intellectual property rights grant can be found 77f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * in the file PATENTS. All contributing project authors may 87f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org * be found in the AUTHORS file in the root of the source tree. 97f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org */ 107f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 117f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org#include <stdlib.h> // NULL 127f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 13a048d7cb0a5bad5ca49bbcc5273cb4cca28c1710pbos@webrtc.org#include "testing/gtest/include/gtest/gtest.h" 14a048d7cb0a5bad5ca49bbcc5273cb4cca28c1710pbos@webrtc.org#include "webrtc/modules/rtp_rtcp/source/vp8_partition_aggregator.h" 157f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 167f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgnamespace webrtc { 177f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 187f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(PartitionTreeNode, CreateAndDelete) { 194591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kVector[] = {1, 2, 3}; 204591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kVector); 217f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* node1 = 227f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode::CreateRootNode(kVector, kNumPartitions); 237f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* node2 = 247f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org new PartitionTreeNode(node1, kVector, kNumPartitions, 17); 257f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete node1; 267f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete node2; 277f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 287f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 297f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(PartitionTreeNode, CreateChildrenAndDelete) { 304591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kVector[] = {1, 2, 3}; 314591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kVector); 324591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kMaxSize = 10; 334591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kPenalty = 5; 347f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* root = 357f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode::CreateRootNode(kVector, kNumPartitions); 367f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(root->CreateChildren(kMaxSize)); 377f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org ASSERT_TRUE(NULL != root->left_child()); 387f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org ASSERT_TRUE(NULL != root->right_child()); 394591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(3u, root->left_child()->this_size()); 404591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(2u, root->right_child()->this_size()); 417f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(11, root->right_child()->Cost(kPenalty)); 427f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_FALSE(root->left_child()->packet_start()); 437f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(root->right_child()->packet_start()); 447f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete root; 457f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 467f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 477f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(PartitionTreeNode, FindOptimalConfig) { 484591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kVector[] = {197, 194, 213, 215, 184, 199, 197, 207}; 494591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kVector); 504591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kMaxSize = 1500; 514591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kPenalty = 1; 527f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* root = 537f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode::CreateRootNode(kVector, kNumPartitions); 547f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org root->set_max_parent_size(500); 557f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org root->set_min_parent_size(300); 567f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* opt = root->GetOptimalNode(kMaxSize, kPenalty); 577f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org ASSERT_TRUE(opt != NULL); 584591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(4u, opt->NumPackets()); 597f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org // Expect optimal sequence to be {1, 0, 1, 0, 1, 0, 1, 0}, which corresponds 607f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org // to (right)-left-right-left-right-left-right-left, where the root node is 617f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org // implicitly a "right" node by definition. 627f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt->parent()->parent()->parent()->parent()->parent()-> 637f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org parent()->parent()->packet_start()); 647f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_FALSE(opt->parent()->parent()->parent()->parent()->parent()-> 657f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org parent()->packet_start()); 667f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt->parent()->parent()->parent()->parent()->parent()-> 677f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org packet_start()); 687f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_FALSE(opt->parent()->parent()->parent()->parent()->packet_start()); 697f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt->parent()->parent()->parent()->packet_start()); 707f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_FALSE(opt->parent()->parent()->packet_start()); 717f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt->parent()->packet_start()); 727f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_FALSE(opt->packet_start()); 737f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt == root->left_child()->right_child()->left_child()-> 747f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org right_child()->left_child()->right_child()->left_child()); 757f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete root; 767f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 777f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 787f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(PartitionTreeNode, FindOptimalConfigSinglePartition) { 794591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kVector[] = {17}; 804591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kVector); 814591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kMaxSize = 1500; 824591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kPenalty = 1; 837f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* root = 847f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode::CreateRootNode(kVector, kNumPartitions); 857f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org PartitionTreeNode* opt = root->GetOptimalNode(kMaxSize, kPenalty); 867f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org ASSERT_TRUE(opt != NULL); 874591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(1u, opt->NumPackets()); 887f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_TRUE(opt == root); 897f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete root; 907f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 917f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 924591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.orgstatic void VerifyConfiguration( 934591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t* expected_config, 944591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t expected_config_len, 954591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const Vp8PartitionAggregator::ConfigVec& opt_config, 964591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const RTPFragmentationHeader& fragmentation) { 977f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org ASSERT_EQ(expected_config_len, fragmentation.fragmentationVectorSize); 987f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(expected_config_len, opt_config.size()); 997f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org for (size_t i = 0; i < expected_config_len; ++i) { 1007f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(expected_config[i], opt_config[i]); 1017f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org } 1027f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1037f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1047f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgstatic void VerifyMinMax(const Vp8PartitionAggregator& aggregator, 1054591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const Vp8PartitionAggregator::ConfigVec& opt_config, 1067f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int expected_min, 1077f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int expected_max) { 1087f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int min_size = -1; 1097f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int max_size = -1; 1107f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org aggregator.CalcMinMax(opt_config, &min_size, &max_size); 1117f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(expected_min, min_size); 1127f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(expected_max, max_size); 1137f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1147f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1157f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(Vp8PartitionAggregator, CreateAndDelete) { 1167f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org RTPFragmentationHeader fragmentation; 1177f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.VerifyAndAllocateFragmentationHeader(3); 1187f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator* aggregator = 1197f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org new Vp8PartitionAggregator(fragmentation, 0, 2); 1207f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete aggregator; 1217f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1227f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1237f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(Vp8PartitionAggregator, FindOptimalConfig) { 1247f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org RTPFragmentationHeader fragmentation; 1257f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.VerifyAndAllocateFragmentationHeader(8); 1267f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[0] = 197; 1277f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[1] = 194; 1287f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[2] = 213; 1297f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[3] = 215; 1307f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[4] = 184; 1317f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[5] = 199; 1327f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[6] = 197; 1337f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[7] = 207; 1347f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator* aggregator = 1357f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org new Vp8PartitionAggregator(fragmentation, 0, 7); 1367f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org aggregator->SetPriorMinMax(300, 500); 1374591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kMaxSize = 1500; 1384591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kPenalty = 1; 1394591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org Vp8PartitionAggregator::ConfigVec opt_config = 1404591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org aggregator->FindOptimalConfiguration(kMaxSize, kPenalty); 1414591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfig[] = {0, 0, 1, 1, 2, 2, 3, 3}; 1424591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfigSize = GTEST_ARRAY_SIZE_(kExpectedConfig); 1437f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyConfiguration(kExpectedConfig, kExpectedConfigSize, opt_config, 1447f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation); 1457f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyMinMax(*aggregator, opt_config, 383, 428); 1467f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org // Change min and max and run method again. This time, we expect it to leave 1477f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org // the values unchanged. 1487f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int min_size = 382; 1497f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org int max_size = 429; 1507f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org aggregator->CalcMinMax(opt_config, &min_size, &max_size); 1517f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(382, min_size); 1527f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org EXPECT_EQ(429, max_size); 1537f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete aggregator; 1547f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1557f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1567f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(Vp8PartitionAggregator, FindOptimalConfigEqualFragments) { 1577f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org RTPFragmentationHeader fragmentation; 1587f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.VerifyAndAllocateFragmentationHeader(8); 1597f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[0] = 200; 1607f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[1] = 200; 1617f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[2] = 200; 1627f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[3] = 200; 1637f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[4] = 200; 1647f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[5] = 200; 1657f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[6] = 200; 1667f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[7] = 200; 1677f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator* aggregator = 1687f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org new Vp8PartitionAggregator(fragmentation, 0, 7); 1694591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kMaxSize = 1500; 1704591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kPenalty = 1; 1714591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org Vp8PartitionAggregator::ConfigVec opt_config = 1724591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org aggregator->FindOptimalConfiguration(kMaxSize, kPenalty); 1734591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfig[] = {0, 0, 0, 0, 1, 1, 1, 1}; 1744591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfigSize = GTEST_ARRAY_SIZE_(kExpectedConfig); 1757f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyConfiguration(kExpectedConfig, kExpectedConfigSize, opt_config, 1767f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation); 1777f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyMinMax(*aggregator, opt_config, 800, 800); 1787f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete aggregator; 1797f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1807f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1817f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(Vp8PartitionAggregator, FindOptimalConfigSinglePartition) { 1827f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org RTPFragmentationHeader fragmentation; 1837f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.VerifyAndAllocateFragmentationHeader(1); 1847f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation.fragmentationLength[0] = 17; 1857f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator* aggregator = 1867f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org new Vp8PartitionAggregator(fragmentation, 0, 0); 1874591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kMaxSize = 1500; 1884591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org size_t kPenalty = 1; 1894591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org Vp8PartitionAggregator::ConfigVec opt_config = 1904591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org aggregator->FindOptimalConfiguration(kMaxSize, kPenalty); 1914591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfig[] = {0}; 1924591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org const size_t kExpectedConfigSize = GTEST_ARRAY_SIZE_(kExpectedConfig); 1937f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyConfiguration(kExpectedConfig, kExpectedConfigSize, opt_config, 1947f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org fragmentation); 1957f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org VerifyMinMax(*aggregator, opt_config, 17, 17); 1967f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org delete aggregator; 1977f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 1987f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1997f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.orgTEST(Vp8PartitionAggregator, TestCalcNumberOfFragments) { 2007f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org const int kMTU = 1500; 2014591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(2u, 2027f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator::CalcNumberOfFragments( 2037f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1600, kMTU, 1, 300, 900)); 2044591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(3u, 2057f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator::CalcNumberOfFragments( 2067f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1600, kMTU, 1, 300, 798)); 2074591fbd09f9cb6e83433c49a12dd8524c2806502pkasting@chromium.org EXPECT_EQ(2u, 2087f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org Vp8PartitionAggregator::CalcNumberOfFragments( 2097f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 1600, kMTU, 1, 900, 1000)); 2107f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org} 2117f2c2a5db29cb337eb3885b36158773ace880d68henrik.lundin@webrtc.org 2126a6f0893dd1e653410ba4b22e7f33947d15aeb65danilchap} // namespace webrtc 213