blob: 002484cb78711b6b270b4c17f184ab728034fdfe [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/muxers/mp4_type_conversion.h"
#include "base/big_endian.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace media {
struct LanguageAndCode {
std::string language;
uint16_t expected_code;
};
TEST(Mp4TypeConversionTest, LanguageCode) {
LanguageAndCode test_data[] = {
{"ara", 0x0641},
{"zho", 0x690f},
{"eng", 0x15c7},
{"fra", 0x1a41},
{"kor", 0x2df2},
{"und", kUndefinedLanguageCode},
{"", kUndefinedLanguageCode},
{"ENG", kUndefinedLanguageCode},
{"english", kUndefinedLanguageCode},
};
for (const auto& data : test_data) {
uint16_t language_code = ConvertIso639LanguageCodeToU16(data.language);
EXPECT_EQ(data.expected_code, language_code);
}
}
TEST(Mp4TypeConversionTest, TimescaleConversion) {
base::TimeDelta time_diff = base::Milliseconds(321);
EXPECT_EQ(ConvertToTimescale(time_diff, 30000), 9630u);
EXPECT_EQ(ConvertToTimescale(time_diff, 44100), 14156u);
base::TimeDelta time_diff2 = base::Microseconds(321000);
EXPECT_EQ(ConvertToTimescale(time_diff2, 30000), 9630u);
EXPECT_EQ(ConvertToTimescale(time_diff2, 44100), 14156u);
}
} // namespace media