OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdint.h> | 5 #include <stdint.h> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/test/perf_test_suite.h" | 9 #include "base/test/perf_test_suite.h" |
10 #include "media/formats/mp2t/timestamp_unroller.h" | 10 #include "media/formats/mp2t/timestamp_unroller.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 namespace media { | 13 namespace media { |
14 namespace mp2t { | 14 namespace mp2t { |
15 | 15 |
16 static std::vector<int64> TruncateTimestamps( | 16 static std::vector<int64_t> TruncateTimestamps( |
17 const std::vector<int64>& timestamps) { | 17 const std::vector<int64_t>& timestamps) { |
18 const int nbits = 33; | 18 const int nbits = 33; |
19 int64 truncate_mask = (INT64_C(1) << nbits) - 1; | 19 int64_t truncate_mask = (INT64_C(1) << nbits) - 1; |
20 std::vector<int64> truncated_timestamps(timestamps.size()); | 20 std::vector<int64_t> truncated_timestamps(timestamps.size()); |
21 for (size_t k = 0; k < timestamps.size(); k++) | 21 for (size_t k = 0; k < timestamps.size(); k++) |
22 truncated_timestamps[k] = timestamps[k] & truncate_mask; | 22 truncated_timestamps[k] = timestamps[k] & truncate_mask; |
23 return truncated_timestamps; | 23 return truncated_timestamps; |
24 } | 24 } |
25 | 25 |
26 static void RunUnrollTest(const std::vector<int64>& timestamps) { | 26 static void RunUnrollTest(const std::vector<int64_t>& timestamps) { |
27 std::vector<int64> truncated_timestamps = TruncateTimestamps(timestamps); | 27 std::vector<int64_t> truncated_timestamps = TruncateTimestamps(timestamps); |
28 | 28 |
29 TimestampUnroller timestamp_unroller; | 29 TimestampUnroller timestamp_unroller; |
30 for (size_t k = 0; k < timestamps.size(); k++) { | 30 for (size_t k = 0; k < timestamps.size(); k++) { |
31 int64 unrolled_timestamp = | 31 int64_t unrolled_timestamp = |
32 timestamp_unroller.GetUnrolledTimestamp(truncated_timestamps[k]); | 32 timestamp_unroller.GetUnrolledTimestamp(truncated_timestamps[k]); |
33 EXPECT_EQ(timestamps[k], unrolled_timestamp); | 33 EXPECT_EQ(timestamps[k], unrolled_timestamp); |
34 } | 34 } |
35 } | 35 } |
36 | 36 |
37 TEST(TimestampUnrollerTest, SingleStream) { | 37 TEST(TimestampUnrollerTest, SingleStream) { |
38 // Array of 64 bit timestamps. | 38 // Array of 64 bit timestamps. |
39 // This is the expected result from unrolling these timestamps | 39 // This is the expected result from unrolling these timestamps |
40 // truncated to 33 bits. | 40 // truncated to 33 bits. |
41 int64 timestamps[] = { | 41 int64_t timestamps[] = { |
42 INT64_C(0x0000000000000000), | 42 INT64_C(0x0000000000000000), |
43 INT64_C(-190), // - 190 | 43 INT64_C(-190), // - 190 |
44 INT64_C(0x00000000aaaaa9ed), // + 0xaaaaaaab | 44 INT64_C(0x00000000aaaaa9ed), // + 0xaaaaaaab |
45 INT64_C(0x0000000155555498), // + 0xaaaaaaab | 45 INT64_C(0x0000000155555498), // + 0xaaaaaaab |
46 INT64_C(0x00000001ffffff43), // + 0xaaaaaaab | 46 INT64_C(0x00000001ffffff43), // + 0xaaaaaaab |
47 INT64_C(0x00000002aaaaa9ee), // + 0xaaaaaaab | 47 INT64_C(0x00000002aaaaa9ee), // + 0xaaaaaaab |
48 INT64_C(0x0000000355555499), // + 0xaaaaaaab | 48 INT64_C(0x0000000355555499), // + 0xaaaaaaab |
49 INT64_C(0x00000003ffffff44), // + 0xaaaaaaab | 49 INT64_C(0x00000003ffffff44), // + 0xaaaaaaab |
50 }; | 50 }; |
51 | 51 |
52 std::vector<int64> timestamps_vector( | 52 std::vector<int64_t> timestamps_vector(timestamps, |
53 timestamps, timestamps + arraysize(timestamps)); | 53 timestamps + arraysize(timestamps)); |
54 RunUnrollTest(timestamps_vector); | 54 RunUnrollTest(timestamps_vector); |
55 } | 55 } |
56 | 56 |
57 } // namespace mp2t | 57 } // namespace mp2t |
58 } // namespace media | 58 } // namespace media |
OLD | NEW |