Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/renderer/media/video_track_recorder.h" | 5 #include "content/renderer/media/video_track_recorder.h" | 
| 6 | 6 | 
| 7 #include <utility> | 7 #include <utility> | 
| 8 | 8 | 
| 9 #include "base/bind.h" | 9 #include "base/bind.h" | 
| 10 #include "base/logging.h" | 10 #include "base/logging.h" | 
| (...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1016 init_params.iRCMode = RC_BITRATE_MODE; | 1016 init_params.iRCMode = RC_BITRATE_MODE; | 
| 1017 init_params.iTargetBitrate = bits_per_second_; | 1017 init_params.iTargetBitrate = bits_per_second_; | 
| 1018 } else { | 1018 } else { | 
| 1019 init_params.iRCMode = RC_OFF_MODE; | 1019 init_params.iRCMode = RC_OFF_MODE; | 
| 1020 } | 1020 } | 
| 1021 | 1021 | 
| 1022 // Threading model: Set to 1 due to https://crbug.com/583348. | 1022 // Threading model: Set to 1 due to https://crbug.com/583348. | 
| 1023 init_params.iMultipleThreadIdc = 1; | 1023 init_params.iMultipleThreadIdc = 1; | 
| 1024 | 1024 | 
| 1025 // TODO(mcasas): consider reducing complexity if there are few CPUs available. | 1025 // TODO(mcasas): consider reducing complexity if there are few CPUs available. | 
| 1026 DCHECK_EQ(MEDIUM_COMPLEXITY, init_params.iComplexityMode); | 1026 init_params.iComplexityMode = MEDIUM_COMPLEXITY; | 
| 1027 DCHECK(!init_params.bEnableDenoise); | 1027 DCHECK(!init_params.bEnableDenoise); | 
| 1028 DCHECK(init_params.bEnableFrameSkip); | 1028 DCHECK(init_params.bEnableFrameSkip); | 
| 1029 | 1029 | 
| 1030 // The base spatial layer 0 is the only one we use. | 1030 // The base spatial layer 0 is the only one we use. | 
| 1031 DCHECK_EQ(1, init_params.iSpatialLayerNum); | 1031 DCHECK_EQ(1, init_params.iSpatialLayerNum); | 
| 1032 init_params.sSpatialLayers[0].iVideoWidth = init_params.iPicWidth; | 1032 init_params.sSpatialLayers[0].iVideoWidth = init_params.iPicWidth; | 
| 1033 init_params.sSpatialLayers[0].iVideoHeight = init_params.iPicHeight; | 1033 init_params.sSpatialLayers[0].iVideoHeight = init_params.iPicHeight; | 
| 1034 init_params.sSpatialLayers[0].iSpatialBitrate = init_params.iTargetBitrate; | 1034 init_params.sSpatialLayers[0].iSpatialBitrate = init_params.iTargetBitrate; | 
| 1035 // Slice num according to number of threads. | 1035 | 
| 1036 init_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_AUTO_SLICE; | 1036 // When uiSliceMode = SM_FIXEDSLCNUM_SLICE, uiSliceNum = 0 means auto design | 
| 1037 // it with cpu core number. | |
| 1038 // TODO(sprang): Set to 0 when we understand why the rate controller borks | |
| 1039 // when uiSliceNum > 1. | |
| 
 
mcasas
2016/11/03 15:35:12
No need to indent here.
Also, is there a bug we c
 
 | |
| 1040 init_params.sSpatialLayers[0].sSliceArgument.uiSliceNum = 1; | |
| 1041 init_params.sSpatialLayers[0].sSliceArgument.uiSliceMode = | |
| 1042 SM_FIXEDSLCNUM_SLICE; | |
| 1037 | 1043 | 
| 1038 if (openh264_encoder_->InitializeExt(&init_params) != cmResultSuccess) { | 1044 if (openh264_encoder_->InitializeExt(&init_params) != cmResultSuccess) { | 
| 1039 NOTREACHED() << "Failed to initialize OpenH264 encoder"; | 1045 NOTREACHED() << "Failed to initialize OpenH264 encoder"; | 
| 1040 return; | 1046 return; | 
| 1041 } | 1047 } | 
| 1042 | 1048 | 
| 1043 int pixel_format = EVideoFormatType::videoFormatI420; | 1049 int pixel_format = EVideoFormatType::videoFormatI420; | 
| 1044 openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, &pixel_format); | 1050 openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, &pixel_format); | 
| 1045 } | 1051 } | 
| 1046 #endif //#if BUILDFLAG(RTC_USE_H264) | 1052 #endif //#if BUILDFLAG(RTC_USE_H264) | 
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1143 encoder_->SetPaused(paused_before_init_); | 1149 encoder_->SetPaused(paused_before_init_); | 
| 1144 | 1150 | 
| 1145 // StartFrameEncode() will be called on Render IO thread. | 1151 // StartFrameEncode() will be called on Render IO thread. | 
| 1146 MediaStreamVideoSink::ConnectToTrack( | 1152 MediaStreamVideoSink::ConnectToTrack( | 
| 1147 track_, | 1153 track_, | 
| 1148 base::Bind(&VideoTrackRecorder::Encoder::StartFrameEncode, encoder_), | 1154 base::Bind(&VideoTrackRecorder::Encoder::StartFrameEncode, encoder_), | 
| 1149 false); | 1155 false); | 
| 1150 } | 1156 } | 
| 1151 | 1157 | 
| 1152 } // namespace content | 1158 } // namespace content | 
| OLD | NEW |