@@ -364,24 +364,66 @@ TEST_F(VideoCodecInitializerTest, Vp9DeactivateLayers) {
364364 config_.simulcast_layers [1 ].active = true ;
365365 config_.simulcast_layers [2 ].active = true ;
366366 EXPECT_TRUE (InitializeCodec ());
367+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 3 );
367368 EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
368369 EXPECT_TRUE (codec_out_.spatialLayers [1 ].active );
369370 EXPECT_TRUE (codec_out_.spatialLayers [2 ].active );
370371
371372 // Deactivate top layer.
373+ config_.simulcast_layers [0 ].active = true ;
374+ config_.simulcast_layers [1 ].active = true ;
372375 config_.simulcast_layers [2 ].active = false ;
373376 EXPECT_TRUE (InitializeCodec ());
377+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 3 );
374378 EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
375379 EXPECT_TRUE (codec_out_.spatialLayers [1 ].active );
376380 EXPECT_FALSE (codec_out_.spatialLayers [2 ].active );
377381
378382 // Deactivate middle layer.
379- config_.simulcast_layers [2 ].active = true ;
383+ config_.simulcast_layers [0 ].active = true ;
380384 config_.simulcast_layers [1 ].active = false ;
385+ config_.simulcast_layers [2 ].active = true ;
381386 EXPECT_TRUE (InitializeCodec ());
387+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 3 );
382388 EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
383389 EXPECT_FALSE (codec_out_.spatialLayers [1 ].active );
384390 EXPECT_TRUE (codec_out_.spatialLayers [2 ].active );
391+
392+ // Deactivate first layer.
393+ config_.simulcast_layers [0 ].active = false ;
394+ config_.simulcast_layers [1 ].active = true ;
395+ config_.simulcast_layers [2 ].active = true ;
396+ EXPECT_TRUE (InitializeCodec ());
397+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 2 );
398+ EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
399+ EXPECT_TRUE (codec_out_.spatialLayers [1 ].active );
400+
401+ // HD singlecast.
402+ config_.simulcast_layers [0 ].active = false ;
403+ config_.simulcast_layers [1 ].active = false ;
404+ config_.simulcast_layers [2 ].active = true ;
405+ EXPECT_TRUE (InitializeCodec ());
406+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 1 );
407+ EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
408+
409+ // VGA singlecast.
410+ config_.simulcast_layers [0 ].active = false ;
411+ config_.simulcast_layers [1 ].active = true ;
412+ config_.simulcast_layers [2 ].active = false ;
413+ EXPECT_TRUE (InitializeCodec ());
414+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 2 );
415+ EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
416+ EXPECT_FALSE (codec_out_.spatialLayers [1 ].active );
417+
418+ // QVGA singlecast.
419+ config_.simulcast_layers [0 ].active = true ;
420+ config_.simulcast_layers [1 ].active = false ;
421+ config_.simulcast_layers [2 ].active = false ;
422+ EXPECT_TRUE (InitializeCodec ());
423+ EXPECT_EQ (codec_out_.VP9 ()->numberOfSpatialLayers , 3 );
424+ EXPECT_TRUE (codec_out_.spatialLayers [0 ].active );
425+ EXPECT_FALSE (codec_out_.spatialLayers [1 ].active );
426+ EXPECT_FALSE (codec_out_.spatialLayers [2 ].active );
385427}
386428
387429} // namespace webrtc
0 commit comments