| Index: webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
 | 
| diff --git a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
 | 
| index 0d09839a8c4e822aae4135c2bf1751a139a2844e..e1f1e0abae75f10b5134198983af7c5507e1cf44 100644
 | 
| --- a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
 | 
| +++ b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
 | 
| @@ -12,18 +12,21 @@
 | 
|  #ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_TEMPORAL_LAYERS_H_
 | 
|  #define WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_TEMPORAL_LAYERS_H_
 | 
|  
 | 
| -#include "vpx/vpx_encoder.h"
 | 
| +#include <vector>
 | 
|  
 | 
|  #include "webrtc/common_video/include/video_image.h"
 | 
|  #include "webrtc/typedefs.h"
 | 
|  
 | 
| +struct vpx_codec_enc_cfg;
 | 
| +typedef struct vpx_codec_enc_cfg vpx_codec_enc_cfg_t;
 | 
| +
 | 
|  namespace webrtc {
 | 
|  
 | 
|  struct CodecSpecificInfoVP8;
 | 
|  
 | 
|  class TemporalLayers {
 | 
|   public:
 | 
| -  // Factory for TemporalLayer strategy. Default behaviour is a fixed pattern
 | 
| +  // Factory for TemporalLayer strategy. Default behavior is a fixed pattern
 | 
|    // of temporal layers. See default_temporal_layers.cc
 | 
|    virtual ~TemporalLayers() {}
 | 
|  
 | 
| @@ -31,10 +34,15 @@ class TemporalLayers {
 | 
|    // and/or update the reference buffers.
 | 
|    virtual int EncodeFlags(uint32_t timestamp) = 0;
 | 
|  
 | 
| -  virtual bool ConfigureBitrates(int bitrate_kbit,
 | 
| -                                 int max_bitrate_kbit,
 | 
| -                                 int framerate,
 | 
| -                                 vpx_codec_enc_cfg_t* cfg) = 0;
 | 
| +  // Update state based on new bitrate target and incoming framerate.
 | 
| +  // Returns the bitrate allocation for the active temporal layers.
 | 
| +  virtual std::vector<uint32_t> OnRatesUpdated(int bitrate_kbps,
 | 
| +                                               int max_bitrate_kbps,
 | 
| +                                               int framerate) = 0;
 | 
| +
 | 
| +  // Update the encoder configuration with target bitrates or other parameters.
 | 
| +  // Returns true iff the configuration was actually modified.
 | 
| +  virtual bool UpdateConfiguration(vpx_codec_enc_cfg_t* cfg) = 0;
 | 
|  
 | 
|    virtual void PopulateCodecSpecific(bool base_layer_sync,
 | 
|                                       CodecSpecificInfoVP8* vp8_info,
 | 
| @@ -43,26 +51,42 @@ class TemporalLayers {
 | 
|    virtual void FrameEncoded(unsigned int size, uint32_t timestamp, int qp) = 0;
 | 
|  
 | 
|    virtual int CurrentLayerId() const = 0;
 | 
| -
 | 
| -  virtual bool UpdateConfiguration(vpx_codec_enc_cfg_t* cfg) = 0;
 | 
|  };
 | 
|  
 | 
| +class TemporalLayersListener;
 | 
|  class TemporalLayersFactory {
 | 
|   public:
 | 
| +  TemporalLayersFactory() : listener_(nullptr) {}
 | 
|    virtual ~TemporalLayersFactory() {}
 | 
| -  virtual TemporalLayers* Create(int temporal_layers,
 | 
| +  virtual TemporalLayers* Create(int simulcast_id,
 | 
| +                                 int temporal_layers,
 | 
|                                   uint8_t initial_tl0_pic_idx) const;
 | 
| +  void SetListener(TemporalLayersListener* listener);
 | 
| +
 | 
| + protected:
 | 
| +  TemporalLayersListener* listener_;
 | 
|  };
 | 
|  
 | 
|  // Factory for a temporal layers strategy that adaptively changes the number of
 | 
| -// layers based on input framerate so that the base layer has an acceptable
 | 
| -// framerate. See realtime_temporal_layers.cc
 | 
| +// layers based on input frame rate so that the base layer has an acceptable
 | 
| +// frame rate. See realtime_temporal_layers.cc
 | 
|  class RealTimeTemporalLayersFactory : public TemporalLayersFactory {
 | 
|   public:
 | 
| +  RealTimeTemporalLayersFactory() {}
 | 
|    ~RealTimeTemporalLayersFactory() override {}
 | 
| -  TemporalLayers* Create(int num_temporal_layers,
 | 
| +  TemporalLayers* Create(int simulcast_id,
 | 
| +                         int num_temporal_layers,
 | 
|                           uint8_t initial_tl0_pic_idx) const override;
 | 
|  };
 | 
|  
 | 
| +class TemporalLayersListener {
 | 
| + public:
 | 
| +  TemporalLayersListener() {}
 | 
| +  virtual ~TemporalLayersListener() {}
 | 
| +
 | 
| +  virtual void OnTemporalLayersCreated(int simulcast_id,
 | 
| +                                       TemporalLayers* layers) = 0;
 | 
| +};
 | 
| +
 | 
|  }  // namespace webrtc
 | 
|  #endif  // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_TEMPORAL_LAYERS_H_
 | 
| 
 |