| Index: content/renderer/media/video_track_recorder.cc
 | 
| diff --git a/content/renderer/media/video_track_recorder.cc b/content/renderer/media/video_track_recorder.cc
 | 
| index d924f1bfcf1feb2ed343ad8a43cccfcd6766f97f..22c26a87d73cd2b2547f39dfddd8ec0f7412b3b4 100644
 | 
| --- a/content/renderer/media/video_track_recorder.cc
 | 
| +++ b/content/renderer/media/video_track_recorder.cc
 | 
| @@ -1023,7 +1023,7 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
 | 
|    init_params.iMultipleThreadIdc = 1;
 | 
|  
 | 
|    // TODO(mcasas): consider reducing complexity if there are few CPUs available.
 | 
| -  DCHECK_EQ(MEDIUM_COMPLEXITY, init_params.iComplexityMode);
 | 
| +  init_params.iComplexityMode = MEDIUM_COMPLEXITY;
 | 
|    DCHECK(!init_params.bEnableDenoise);
 | 
|    DCHECK(init_params.bEnableFrameSkip);
 | 
|  
 | 
| @@ -1032,8 +1032,14 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
 | 
|    init_params.sSpatialLayers[0].iVideoWidth        = init_params.iPicWidth;
 | 
|    init_params.sSpatialLayers[0].iVideoHeight       = init_params.iPicHeight;
 | 
|    init_params.sSpatialLayers[0].iSpatialBitrate    = init_params.iTargetBitrate;
 | 
| -  // Slice num according to number of threads.
 | 
| -  init_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_AUTO_SLICE;
 | 
| +
 | 
| +  // When uiSliceMode = SM_FIXEDSLCNUM_SLICE, uiSliceNum = 0 means auto design
 | 
| +  // it with cpu core number.
 | 
| +  // TODO(sprang): Set to 0 when we understand why the rate controller borks
 | 
| +  // when uiSliceNum > 1. See https://github.com/cisco/openh264/issues/2591
 | 
| +  init_params.sSpatialLayers[0].sSliceArgument.uiSliceNum = 1;
 | 
| +  init_params.sSpatialLayers[0].sSliceArgument.uiSliceMode =
 | 
| +      SM_FIXEDSLCNUM_SLICE;
 | 
|  
 | 
|    if (openh264_encoder_->InitializeExt(&init_params) != cmResultSuccess) {
 | 
|      NOTREACHED() << "Failed to initialize OpenH264 encoder";
 | 
| 
 |