| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 // TODO(pbos): Move Config from common.h to here. | 11 // TODO(pbos): Move Config from common.h to here. |
| 12 | 12 |
| 13 #ifndef WEBRTC_CONFIG_H_ | 13 #ifndef WEBRTC_CONFIG_H_ |
| 14 #define WEBRTC_CONFIG_H_ | 14 #define WEBRTC_CONFIG_H_ |
| 15 | 15 |
| 16 #include <string> | 16 #include <string> |
| 17 #include <vector> | 17 #include <vector> |
| 18 | 18 |
| 19 #include "webrtc/base/optional.h" | 19 #include "webrtc/base/optional.h" |
| 20 #include "webrtc/base/refcount.h" |
| 21 #include "webrtc/base/scoped_ref_ptr.h" |
| 20 #include "webrtc/common_types.h" | 22 #include "webrtc/common_types.h" |
| 21 #include "webrtc/typedefs.h" | 23 #include "webrtc/typedefs.h" |
| 22 | 24 |
| 23 namespace webrtc { | 25 namespace webrtc { |
| 24 | 26 |
| 25 // Settings for NACK, see RFC 4585 for details. | 27 // Settings for NACK, see RFC 4585 for details. |
| 26 struct NackConfig { | 28 struct NackConfig { |
| 27 NackConfig() : rtp_history_ms(0) {} | 29 NackConfig() : rtp_history_ms(0) {} |
| 28 std::string ToString() const; | 30 std::string ToString() const; |
| 29 // Send side: the time RTP packets are stored for retransmissions. | 31 // Send side: the time RTP packets are stored for retransmissions. |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 std::vector<int> temporal_layer_thresholds_bps; | 125 std::vector<int> temporal_layer_thresholds_bps; |
| 124 }; | 126 }; |
| 125 | 127 |
| 126 struct VideoEncoderConfig { | 128 struct VideoEncoderConfig { |
| 127 public: | 129 public: |
| 128 enum class ContentType { | 130 enum class ContentType { |
| 129 kRealtimeVideo, | 131 kRealtimeVideo, |
| 130 kScreen, | 132 kScreen, |
| 131 }; | 133 }; |
| 132 | 134 |
| 135 class VideoStreamFactoryInterface : public rtc::RefCountInterface { |
| 136 public: |
| 137 // An implementation should return a std::vector<VideoStream> with the |
| 138 // wanted VideoStream settings for the given video resolution. |
| 139 // The size of the vector may not be larger than |
| 140 // |encoder_config.number_of_streams|. |
| 141 virtual std::vector<VideoStream> CreateEncoderStreams( |
| 142 int width, |
| 143 int height, |
| 144 const VideoEncoderConfig& encoder_config) = 0; |
| 145 |
| 146 protected: |
| 147 virtual ~VideoStreamFactoryInterface() {} |
| 148 }; |
| 149 |
| 133 VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; | 150 VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; |
| 134 VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; | 151 VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; |
| 135 | 152 |
| 136 // Mostly used by tests. Avoid creating copies if you can. | 153 // Mostly used by tests. Avoid creating copies if you can. |
| 137 VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } | 154 VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } |
| 138 | 155 |
| 139 VideoEncoderConfig(); | 156 VideoEncoderConfig(); |
| 140 VideoEncoderConfig(VideoEncoderConfig&&) = default; | 157 VideoEncoderConfig(VideoEncoderConfig&&) = default; |
| 141 ~VideoEncoderConfig(); | 158 ~VideoEncoderConfig(); |
| 142 std::string ToString() const; | 159 std::string ToString() const; |
| 143 | 160 |
| 144 std::vector<VideoStream> streams; | 161 rtc::scoped_refptr<VideoStreamFactoryInterface> encoder_stream_factory; |
| 145 std::vector<SpatialLayer> spatial_layers; | 162 std::vector<SpatialLayer> spatial_layers; |
| 146 ContentType content_type; | 163 ContentType content_type; |
| 147 void* encoder_specific_settings; | 164 void* encoder_specific_settings; |
| 148 | 165 |
| 149 // Padding will be used up to this bitrate regardless of the bitrate produced | 166 // Padding will be used up to this bitrate regardless of the bitrate produced |
| 150 // by the encoder. Padding above what's actually produced by the encoder helps | 167 // by the encoder. Padding above what's actually produced by the encoder helps |
| 151 // maintaining a higher bitrate estimate. Padding will however not be sent | 168 // maintaining a higher bitrate estimate. Padding will however not be sent |
| 152 // unless the estimated bandwidth indicates that the link can handle it. | 169 // unless the estimated bandwidth indicates that the link can handle it. |
| 153 int min_transmit_bitrate_bps; | 170 int min_transmit_bitrate_bps; |
| 154 bool expect_encode_from_texture; | 171 int max_bitrate_bps; |
| 172 |
| 173 // Max number of encoded VideoStreams to produce. |
| 174 size_t number_of_streams; |
| 155 | 175 |
| 156 private: | 176 private: |
| 157 // Access to the copy constructor is private to force use of the Copy() | 177 // Access to the copy constructor is private to force use of the Copy() |
| 158 // method for those exceptional cases where we do use it. | 178 // method for those exceptional cases where we do use it. |
| 159 VideoEncoderConfig(const VideoEncoderConfig&) = default; | 179 VideoEncoderConfig(const VideoEncoderConfig&) = default; |
| 160 }; | 180 }; |
| 161 | 181 |
| 162 struct VideoDecoderH264Settings { | 182 struct VideoDecoderH264Settings { |
| 163 std::string sprop_parameter_sets; | 183 std::string sprop_parameter_sets; |
| 164 }; | 184 }; |
| 165 | 185 |
| 166 class DecoderSpecificSettings { | 186 class DecoderSpecificSettings { |
| 167 public: | 187 public: |
| 168 virtual ~DecoderSpecificSettings() {} | 188 virtual ~DecoderSpecificSettings() {} |
| 169 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; | 189 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; |
| 170 }; | 190 }; |
| 171 | 191 |
| 172 } // namespace webrtc | 192 } // namespace webrtc |
| 173 | 193 |
| 174 #endif // WEBRTC_CONFIG_H_ | 194 #endif // WEBRTC_CONFIG_H_ |
| OLD | NEW |