| Index: webrtc/config.h | 
| diff --git a/webrtc/config.h b/webrtc/config.h | 
| index 962e0f2fb9ac844ff243c0425c1b9df4dca76a4d..46c1f42085b597e54b23264326b2cd3c72e9523f 100644 | 
| --- a/webrtc/config.h | 
| +++ b/webrtc/config.h | 
| @@ -1,5 +1,5 @@ | 
| /* | 
| - *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 
| + *  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 | 
| @@ -8,259 +8,12 @@ | 
| *  be found in the AUTHORS file in the root of the source tree. | 
| */ | 
|  | 
| -// TODO(pbos): Move Config from common.h to here. | 
| - | 
| #ifndef WEBRTC_CONFIG_H_ | 
| #define WEBRTC_CONFIG_H_ | 
|  | 
| -#include <string> | 
| -#include <vector> | 
| - | 
| -#include "webrtc/common_types.h" | 
| -#include "webrtc/rtc_base/basictypes.h" | 
| -#include "webrtc/rtc_base/optional.h" | 
| -#include "webrtc/rtc_base/refcount.h" | 
| -#include "webrtc/rtc_base/scoped_ref_ptr.h" | 
| -#include "webrtc/typedefs.h" | 
| - | 
| -namespace webrtc { | 
| - | 
| -// Settings for NACK, see RFC 4585 for details. | 
| -struct NackConfig { | 
| -  NackConfig() : rtp_history_ms(0) {} | 
| -  std::string ToString() const; | 
| -  // Send side: the time RTP packets are stored for retransmissions. | 
| -  // Receive side: the time the receiver is prepared to wait for | 
| -  // retransmissions. | 
| -  // Set to '0' to disable. | 
| -  int rtp_history_ms; | 
| -}; | 
| - | 
| -// Settings for ULPFEC forward error correction. | 
| -// Set the payload types to '-1' to disable. | 
| -struct UlpfecConfig { | 
| -  UlpfecConfig() | 
| -      : ulpfec_payload_type(-1), | 
| -        red_payload_type(-1), | 
| -        red_rtx_payload_type(-1) {} | 
| -  std::string ToString() const; | 
| -  bool operator==(const UlpfecConfig& other) const; | 
| - | 
| -  // Payload type used for ULPFEC packets. | 
| -  int ulpfec_payload_type; | 
| - | 
| -  // Payload type used for RED packets. | 
| -  int red_payload_type; | 
| - | 
| -  // RTX payload type for RED payload. | 
| -  int red_rtx_payload_type; | 
| -}; | 
| - | 
| -// RTP header extension, see RFC 5285. | 
| -struct RtpExtension { | 
| -  RtpExtension() {} | 
| -  RtpExtension(const std::string& uri, int id) : uri(uri), id(id) {} | 
| -  RtpExtension(const std::string& uri, int id, bool encrypt) : uri(uri), | 
| -      id(id), encrypt(encrypt) {} | 
| -  std::string ToString() const; | 
| -  bool operator==(const RtpExtension& rhs) const { | 
| -    return uri == rhs.uri && id == rhs.id && encrypt == rhs.encrypt; | 
| -  } | 
| -  static bool IsSupportedForAudio(const std::string& uri); | 
| -  static bool IsSupportedForVideo(const std::string& uri); | 
| -  // Return "true" if the given RTP header extension URI may be encrypted. | 
| -  static bool IsEncryptionSupported(const std::string& uri); | 
| - | 
| -  // Returns the named header extension if found among all extensions, | 
| -  // nullptr otherwise. | 
| -  static const RtpExtension* FindHeaderExtensionByUri( | 
| -    const std::vector<RtpExtension>& extensions, | 
| -    const std::string& uri); | 
| - | 
| -  // Return a list of RTP header extensions with the non-encrypted extensions | 
| -  // removed if both the encrypted and non-encrypted extension is present for | 
| -  // the same URI. | 
| -  static std::vector<RtpExtension> FilterDuplicateNonEncrypted( | 
| -    const std::vector<RtpExtension>& extensions); | 
| - | 
| -  // Header extension for audio levels, as defined in: | 
| -  // http://tools.ietf.org/html/draft-ietf-avtext-client-to-mixer-audio-level-03 | 
| -  static const char kAudioLevelUri[]; | 
| -  static const int kAudioLevelDefaultId; | 
| - | 
| -  // Header extension for RTP timestamp offset, see RFC 5450 for details: | 
| -  // http://tools.ietf.org/html/rfc5450 | 
| -  static const char kTimestampOffsetUri[]; | 
| -  static const int kTimestampOffsetDefaultId; | 
| - | 
| -  // Header extension for absolute send time, see url for details: | 
| -  // http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time | 
| -  static const char kAbsSendTimeUri[]; | 
| -  static const int kAbsSendTimeDefaultId; | 
| - | 
| -  // Header extension for coordination of video orientation, see url for | 
| -  // details: | 
| -  // http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ts_126114v120700p.pdf | 
| -  static const char kVideoRotationUri[]; | 
| -  static const int kVideoRotationDefaultId; | 
| - | 
| -  // Header extension for video content type. E.g. default or screenshare. | 
| -  static const char kVideoContentTypeUri[]; | 
| -  static const int kVideoContentTypeDefaultId; | 
| - | 
| -  // Header extension for video timing. | 
| -  static const char kVideoTimingUri[]; | 
| -  static const int kVideoTimingDefaultId; | 
| - | 
| -  // Header extension for transport sequence number, see url for details: | 
| -  // http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions | 
| -  static const char kTransportSequenceNumberUri[]; | 
| -  static const int kTransportSequenceNumberDefaultId; | 
| - | 
| -  static const char kPlayoutDelayUri[]; | 
| -  static const int kPlayoutDelayDefaultId; | 
| - | 
| -  // Encryption of Header Extensions, see RFC 6904 for details: | 
| -  // https://tools.ietf.org/html/rfc6904 | 
| -  static const char kEncryptHeaderExtensionsUri[]; | 
| - | 
| -  // Inclusive min and max IDs for one-byte header extensions, per RFC5285. | 
| -  static const int kMinId; | 
| -  static const int kMaxId; | 
| - | 
| -  std::string uri; | 
| -  int id = 0; | 
| -  bool encrypt = false; | 
| -}; | 
| - | 
| -struct VideoStream { | 
| -  VideoStream(); | 
| -  ~VideoStream(); | 
| -  std::string ToString() const; | 
| - | 
| -  size_t width; | 
| -  size_t height; | 
| -  int max_framerate; | 
| - | 
| -  int min_bitrate_bps; | 
| -  int target_bitrate_bps; | 
| -  int max_bitrate_bps; | 
| - | 
| -  int max_qp; | 
| - | 
| -  // Bitrate thresholds for enabling additional temporal layers. Since these are | 
| -  // thresholds in between layers, we have one additional layer. One threshold | 
| -  // gives two temporal layers, one below the threshold and one above, two give | 
| -  // three, and so on. | 
| -  // The VideoEncoder may redistribute bitrates over the temporal layers so a | 
| -  // bitrate threshold of 100k and an estimate of 105k does not imply that we | 
| -  // get 100k in one temporal layer and 5k in the other, just that the bitrate | 
| -  // in the first temporal layer should not exceed 100k. | 
| -  // TODO(kthelgason): Apart from a special case for two-layer screencast these | 
| -  // thresholds are not propagated to the VideoEncoder. To be implemented. | 
| -  std::vector<int> temporal_layer_thresholds_bps; | 
| -}; | 
| - | 
| -class VideoEncoderConfig { | 
| - public: | 
| -  // These are reference counted to permit copying VideoEncoderConfig and be | 
| -  // kept alive until all encoder_specific_settings go out of scope. | 
| -  // TODO(kthelgason): Consider removing the need for copying VideoEncoderConfig | 
| -  // and use rtc::Optional for encoder_specific_settings instead. | 
| -  class EncoderSpecificSettings : public rtc::RefCountInterface { | 
| -   public: | 
| -    // TODO(pbos): Remove FillEncoderSpecificSettings as soon as VideoCodec is | 
| -    // not in use and encoder implementations ask for codec-specific structs | 
| -    // directly. | 
| -    void FillEncoderSpecificSettings(VideoCodec* codec_struct) const; | 
| - | 
| -    virtual void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const; | 
| -    virtual void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const; | 
| -    virtual void FillVideoCodecH264(VideoCodecH264* h264_settings) const; | 
| -   private: | 
| -    ~EncoderSpecificSettings() override {} | 
| -    friend class VideoEncoderConfig; | 
| -  }; | 
| - | 
| -  class H264EncoderSpecificSettings : public EncoderSpecificSettings { | 
| -   public: | 
| -    explicit H264EncoderSpecificSettings(const VideoCodecH264& specifics); | 
| -    void FillVideoCodecH264(VideoCodecH264* h264_settings) const override; | 
| - | 
| -   private: | 
| -    VideoCodecH264 specifics_; | 
| -  }; | 
| - | 
| -  class Vp8EncoderSpecificSettings : public EncoderSpecificSettings { | 
| -   public: | 
| -    explicit Vp8EncoderSpecificSettings(const VideoCodecVP8& specifics); | 
| -    void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const override; | 
| - | 
| -   private: | 
| -    VideoCodecVP8 specifics_; | 
| -  }; | 
| - | 
| -  class Vp9EncoderSpecificSettings : public EncoderSpecificSettings { | 
| -   public: | 
| -    explicit Vp9EncoderSpecificSettings(const VideoCodecVP9& specifics); | 
| -    void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const override; | 
| - | 
| -   private: | 
| -    VideoCodecVP9 specifics_; | 
| -  }; | 
| - | 
| -  enum class ContentType { | 
| -    kRealtimeVideo, | 
| -    kScreen, | 
| -  }; | 
| - | 
| -  class VideoStreamFactoryInterface : public rtc::RefCountInterface { | 
| -   public: | 
| -    // An implementation should return a std::vector<VideoStream> with the | 
| -    // wanted VideoStream settings for the given video resolution. | 
| -    // The size of the vector may not be larger than | 
| -    // |encoder_config.number_of_streams|. | 
| -    virtual std::vector<VideoStream> CreateEncoderStreams( | 
| -        int width, | 
| -        int height, | 
| -        const VideoEncoderConfig& encoder_config) = 0; | 
| - | 
| -   protected: | 
| -    ~VideoStreamFactoryInterface() override {} | 
| -  }; | 
| - | 
| -  VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; | 
| -  VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; | 
| - | 
| -  // Mostly used by tests.  Avoid creating copies if you can. | 
| -  VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } | 
| - | 
| -  VideoEncoderConfig(); | 
| -  VideoEncoderConfig(VideoEncoderConfig&&); | 
| -  ~VideoEncoderConfig(); | 
| -  std::string ToString() const; | 
| - | 
| -  rtc::scoped_refptr<VideoStreamFactoryInterface> video_stream_factory; | 
| -  std::vector<SpatialLayer> spatial_layers; | 
| -  ContentType content_type; | 
| -  rtc::scoped_refptr<const EncoderSpecificSettings> encoder_specific_settings; | 
| - | 
| -  // Padding will be used up to this bitrate regardless of the bitrate produced | 
| -  // by the encoder. Padding above what's actually produced by the encoder helps | 
| -  // maintaining a higher bitrate estimate. Padding will however not be sent | 
| -  // unless the estimated bandwidth indicates that the link can handle it. | 
| -  int min_transmit_bitrate_bps; | 
| -  int max_bitrate_bps; | 
| - | 
| -  // Max number of encoded VideoStreams to produce. | 
| -  size_t number_of_streams; | 
| - | 
| - private: | 
| -  // Access to the copy constructor is private to force use of the Copy() | 
| -  // method for those exceptional cases where we do use it. | 
| -  VideoEncoderConfig(const VideoEncoderConfig&); | 
| -}; | 
| +// TODO(holmer): Delete this file once downstream projects have been updated. | 
|  | 
| -}  // namespace webrtc | 
| +#include "webrtc/api/rtpparameters.h" | 
| +#include "webrtc/call/rtp_config.h" | 
|  | 
| #endif  // WEBRTC_CONFIG_H_ | 
|  |