| /* | |
| * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #include "api/video_codecs/video_encoder.h" | |
| namespace webrtc { | |
| // TODO(mflodman): Add default complexity for VP9 and VP9. | |
| VideoCodecVP8 VideoEncoder::GetDefaultVp8Settings() { | |
| VideoCodecVP8 vp8_settings; | |
| memset(&vp8_settings, 0, sizeof(vp8_settings)); | |
| vp8_settings.numberOfTemporalLayers = 1; | |
| vp8_settings.denoisingOn = true; | |
| vp8_settings.automaticResizeOn = false; | |
| vp8_settings.frameDroppingOn = true; | |
| vp8_settings.keyFrameInterval = 3000; | |
| return vp8_settings; | |
| } | |
| VideoCodecVP9 VideoEncoder::GetDefaultVp9Settings() { | |
| VideoCodecVP9 vp9_settings; | |
| memset(&vp9_settings, 0, sizeof(vp9_settings)); | |
| vp9_settings.numberOfTemporalLayers = 1; | |
| vp9_settings.denoisingOn = true; | |
| vp9_settings.frameDroppingOn = true; | |
| vp9_settings.keyFrameInterval = 3000; | |
| vp9_settings.adaptiveQpMode = true; | |
| vp9_settings.automaticResizeOn = true; | |
| vp9_settings.numberOfSpatialLayers = 1; | |
| vp9_settings.flexibleMode = false; | |
| vp9_settings.interLayerPred = InterLayerPredMode::kOn; | |
| return vp9_settings; | |
| } | |
| VideoCodecH264 VideoEncoder::GetDefaultH264Settings() { | |
| VideoCodecH264 h264_settings; | |
| memset(&h264_settings, 0, sizeof(h264_settings)); | |
| h264_settings.frameDroppingOn = true; | |
| h264_settings.keyFrameInterval = 3000; | |
| h264_settings.spsData = nullptr; | |
| h264_settings.spsLen = 0; | |
| h264_settings.ppsData = nullptr; | |
| h264_settings.ppsLen = 0; | |
| h264_settings.profile = H264::kProfileConstrainedBaseline; | |
| return h264_settings; | |
| } | |
| VideoEncoder::ScalingSettings::ScalingSettings() = default; | |
| VideoEncoder::ScalingSettings::ScalingSettings(KOff) : ScalingSettings() {} | |
| VideoEncoder::ScalingSettings::ScalingSettings(int low, int high) | |
| : thresholds(QpThresholds(low, high)) {} | |
| VideoEncoder::ScalingSettings::ScalingSettings(int low, | |
| int high, | |
| int min_pixels) | |
| : thresholds(QpThresholds(low, high)), min_pixels_per_frame(min_pixels) {} | |
| VideoEncoder::ScalingSettings::ScalingSettings(const ScalingSettings&) = | |
| default; | |
| VideoEncoder::ScalingSettings::~ScalingSettings() {} | |
| // static | |
| constexpr VideoEncoder::ScalingSettings::KOff | |
| VideoEncoder::ScalingSettings::kOff; | |
| int32_t VideoEncoder::SetRates(uint32_t bitrate, uint32_t framerate) { | |
| RTC_NOTREACHED() << "SetRate(uint32_t, uint32_t) is deprecated."; | |
| return -1; | |
| } | |
| int32_t VideoEncoder::SetRateAllocation( | |
| const VideoBitrateAllocation& allocation, | |
| uint32_t framerate) { | |
| return SetRates(allocation.get_sum_kbps(), framerate); | |
| } | |
| VideoEncoder::ScalingSettings VideoEncoder::GetScalingSettings() const { | |
| return ScalingSettings::kOff; | |
| } | |
| bool VideoEncoder::SupportsNativeHandle() const { | |
| return false; | |
| } | |
| const char* VideoEncoder::ImplementationName() const { | |
| return "unknown"; | |
| } | |
| } // namespace webrtc |