diff --git a/media/base/video_adapter.cc b/media/base/video_adapter.cc index 149071d153..01aaad13d3 100644 --- a/media/base/video_adapter.cc +++ b/media/base/video_adapter.cc @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -39,7 +40,8 @@ struct Fraction { // Determines number of output pixels if both width and height of an input of // `input_pixels` pixels is scaled with the fraction numerator / denominator. int scale_pixel_count(int input_pixels) { - return (numerator * numerator * input_pixels) / (denominator * denominator); + return (numerator * numerator * static_cast(input_pixels)) + / (denominator * denominator); } }; diff --git a/media/base/video_adapter_unittest.cc b/media/base/video_adapter_unittest.cc index 3a8d2e6098..778e61e74c 100644 --- a/media/base/video_adapter_unittest.cc +++ b/media/base/video_adapter_unittest.cc @@ -839,6 +839,16 @@ TEST_P(VideoAdapterTest, RequestAspectRatio) { EXPECT_EQ(360, cropped_height_); EXPECT_EQ(640, out_width_); EXPECT_EQ(360, out_height_); + + adapter_.OnOutputFormatRequest(std::make_pair(1280, 720), 1280 * 720 - 1, + absl::nullopt); + EXPECT_TRUE(adapter_.AdaptFrameResolution(2592, 1944, 0, &cropped_width_, + &cropped_height_, &out_width_, + &out_height_)); + EXPECT_EQ(2592, cropped_width_); + EXPECT_EQ(1458, cropped_height_); + EXPECT_EQ(1152, out_width_); + EXPECT_EQ(648, out_height_); } TEST_P(VideoAdapterTest, RequestAspectRatioWithDifferentOrientation) {