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