Commit 68091841 authored by Hirokazu Honda's avatar Hirokazu Honda Committed by Commit Bot

media: Add default values to VEA::Config::SpatialLayer

VideoEncodeAccelerator::Config::SpatialLayer's member variables
don't have default values. It causes "use-of-uninitialized-value"
failure in its unittest on Memory-Sanitizer build. This fixes
the failure and some minor mistakes in the unittest.

Bug: 1067758, 1067758
Test: media_unittests
Change-Id: Ic4a2de59a14227a195466dd08bc679b6a66487dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2138678
Commit-Queue: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: default avatarDan Sanders <sandersd@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757309}
parent e0aa5b15
...@@ -64,10 +64,10 @@ bool operator==(const ::media::VideoEncoderInfo& l, ...@@ -64,10 +64,10 @@ bool operator==(const ::media::VideoEncoderInfo& l,
bool operator==( bool operator==(
const ::media::VideoEncodeAccelerator::Config::SpatialLayer& l, const ::media::VideoEncodeAccelerator::Config::SpatialLayer& l,
const ::media::VideoEncodeAccelerator::Config::SpatialLayer& r) { const ::media::VideoEncodeAccelerator::Config::SpatialLayer& r) {
return l.width == r.width && l.height == r.height && return (l.width == r.width && l.height == r.height &&
l.bitrate_bps == r.bitrate_bps && l.framerate == r.framerate && l.bitrate_bps == r.bitrate_bps && l.framerate == r.framerate &&
l.max_qp == r.max_qp && l.num_of_temporal_layers && l.max_qp == r.max_qp &&
r.num_of_temporal_layers; l.num_of_temporal_layers == r.num_of_temporal_layers);
} }
bool operator==(const ::media::VideoEncodeAccelerator::Config& l, bool operator==(const ::media::VideoEncodeAccelerator::Config& l,
...@@ -109,21 +109,15 @@ TEST(VideoEncoderInfoStructTraitTest, RoundTrip) { ...@@ -109,21 +109,15 @@ TEST(VideoEncoderInfoStructTraitTest, RoundTrip) {
EXPECT_EQ(input, output); EXPECT_EQ(input, output);
} }
// This test is failing on msan: crbug.com/1067758 TEST(SpatialLayerStructTraitTest, RoundTrip) {
#if defined(MEMORY_SANITIZER)
#define MAYBE_RoundTrip DISABLED_RoundTrip
#else
#define MAYBE_RoundTrip RoundTrip
#endif
TEST(SpatialLayerStructTraitTest, MAYBE_RoundTrip) {
::media::VideoEncodeAccelerator::Config::SpatialLayer input_spatial_layer; ::media::VideoEncodeAccelerator::Config::SpatialLayer input_spatial_layer;
input_spatial_layer.width = 320u; input_spatial_layer.width = 320;
input_spatial_layer.width = 180u; input_spatial_layer.width = 180;
input_spatial_layer.bitrate_bps = 12345678; input_spatial_layer.bitrate_bps = 12345678u;
input_spatial_layer.framerate = 24; input_spatial_layer.framerate = 24u;
input_spatial_layer.max_qp = 30; input_spatial_layer.max_qp = 30u;
input_spatial_layer.num_of_temporal_layers = 3; input_spatial_layer.num_of_temporal_layers = 3u;
::media::VideoEncodeAccelerator::Config::SpatialLayer output_spatial_layer{}; ::media::VideoEncodeAccelerator::Config::SpatialLayer output_spatial_layer;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::SpatialLayer>( ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::SpatialLayer>(
&input_spatial_layer, &output_spatial_layer)); &input_spatial_layer, &output_spatial_layer));
EXPECT_EQ(input_spatial_layer, output_spatial_layer); EXPECT_EQ(input_spatial_layer, output_spatial_layer);
...@@ -133,13 +127,13 @@ TEST(VideoEncodeAcceleratorConfigStructTraitTest, RoundTrip) { ...@@ -133,13 +127,13 @@ TEST(VideoEncodeAcceleratorConfigStructTraitTest, RoundTrip) {
std::vector<::media::VideoEncodeAccelerator::Config::SpatialLayer> std::vector<::media::VideoEncodeAccelerator::Config::SpatialLayer>
input_spatial_layers(3); input_spatial_layers(3);
gfx::Size kBaseSize(320, 180); gfx::Size kBaseSize(320, 180);
uint32_t kBaseBitrateBps = 123456; uint32_t kBaseBitrateBps = 123456u;
uint32_t kBaseFramerate = 24; uint32_t kBaseFramerate = 24u;
for (size_t i = 0; i < input_spatial_layers.size(); ++i) { for (size_t i = 0; i < input_spatial_layers.size(); ++i) {
input_spatial_layers[i].width = input_spatial_layers[i].width =
static_cast<uint32_t>(kBaseSize.width() * (i + 1)); static_cast<int32_t>(kBaseSize.width() * (i + 1));
input_spatial_layers[i].height = input_spatial_layers[i].height =
static_cast<uint32_t>(kBaseSize.height() * (i + 1)); static_cast<int32_t>(kBaseSize.height() * (i + 1));
input_spatial_layers[i].bitrate_bps = kBaseBitrateBps * (i + 1) / 2; input_spatial_layers[i].bitrate_bps = kBaseBitrateBps * (i + 1) / 2;
input_spatial_layers[i].framerate = kBaseFramerate * 2 / (i + 1); input_spatial_layers[i].framerate = kBaseFramerate * 2 / (i + 1);
input_spatial_layers[i].max_qp = 30 * (i + 1) / 2; input_spatial_layers[i].max_qp = 30 * (i + 1) / 2;
......
...@@ -112,18 +112,18 @@ class MEDIA_EXPORT VideoEncodeAccelerator { ...@@ -112,18 +112,18 @@ class MEDIA_EXPORT VideoEncodeAccelerator {
struct MEDIA_EXPORT SpatialLayer { struct MEDIA_EXPORT SpatialLayer {
// The encoder dimension of the spatial layer. // The encoder dimension of the spatial layer.
int32_t width; int32_t width = 0;
int32_t height; int32_t height = 0;
// The bitrate of encoded output stream of the spatial layer in bits per // The bitrate of encoded output stream of the spatial layer in bits per
// second. // second.
uint32_t bitrate_bps; uint32_t bitrate_bps = 0u;
uint32_t framerate; uint32_t framerate = 0u;
// The recommended maximum qp value of the spatial layer. VEA can ignore // The recommended maximum qp value of the spatial layer. VEA can ignore
// this value. // this value.
uint8_t max_qp; uint8_t max_qp = 0u;
// The number of temporal layers of the spatial layer. The detail of // The number of temporal layers of the spatial layer. The detail of
// the temporal layer structure is up to VideoEncodeAccelerator. // the temporal layer structure is up to VideoEncodeAccelerator.
uint8_t num_of_temporal_layers; uint8_t num_of_temporal_layers = 0u;
}; };
Config(); Config();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment