From 524fbf35d138e1efacf5b48103ecaca638b0f4e6 Mon Sep 17 00:00:00 2001 From: "wez@chromium.org" Date: Thu, 22 May 2014 21:31:20 +0000 Subject: Switch CandidateSession to use lists rather than vectors. This makes it possible to add candidate configurations at either the back (least-preferred) or front (most-preferred) of each channel's candidate list. This CL also disables VP9, by default, in candidate session configurations, replaces DisableVideoCodec with EnableVideoCodec, and makes the Enable/DisableCodec helpers members of CandidateSessionConfig.. Review URL: https://codereview.chromium.org/292093002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272324 0039d316-1c4b-4281-b951-d872f2087c98 --- remoting/protocol/session_config.h | 51 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 26 deletions(-) (limited to 'remoting/protocol/session_config.h') diff --git a/remoting/protocol/session_config.h b/remoting/protocol/session_config.h index b3fa90a..ae1ab5e 100644 --- a/remoting/protocol/session_config.h +++ b/remoting/protocol/session_config.h @@ -5,8 +5,8 @@ #ifndef REMOTING_PROTOCOL_SESSION_CONFIG_H_ #define REMOTING_PROTOCOL_SESSION_CONFIG_H_ +#include #include -#include #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" @@ -48,7 +48,7 @@ struct ChannelConfig { ChannelConfig(TransportType transport, int version, Codec codec); // operator== is overloaded so that std::find() works with - // std::vector. + // std::list. bool operator==(const ChannelConfig& b) const; TransportType transport; @@ -101,37 +101,42 @@ class SessionConfig { // because it allows one to specify multiple configurations for each channel. class CandidateSessionConfig { public: + static scoped_ptr CreateEmpty(); + static scoped_ptr CreateFrom( + const SessionConfig& config); + static scoped_ptr CreateDefault(); + ~CandidateSessionConfig(); - const std::vector& control_configs() const { + const std::list& control_configs() const { return control_configs_; } - std::vector* mutable_control_configs() { + std::list* mutable_control_configs() { return &control_configs_; } - const std::vector& event_configs() const { + const std::list& event_configs() const { return event_configs_; } - std::vector* mutable_event_configs() { + std::list* mutable_event_configs() { return &event_configs_; } - const std::vector& video_configs() const { + const std::list& video_configs() const { return video_configs_; } - std::vector* mutable_video_configs() { + std::list* mutable_video_configs() { return &video_configs_; } - const std::vector& audio_configs() const { + const std::list& audio_configs() const { return audio_configs_; } - std::vector* mutable_audio_configs() { + std::list* mutable_audio_configs() { return &audio_configs_; } @@ -153,15 +158,9 @@ class CandidateSessionConfig { scoped_ptr Clone() const; - static scoped_ptr CreateEmpty(); - static scoped_ptr CreateFrom( - const SessionConfig& config); - static scoped_ptr CreateDefault(); - - // Modifies |config| to disable specific features. - static void DisableAudioChannel(CandidateSessionConfig* config); - static void DisableVideoCodec(CandidateSessionConfig* config, - ChannelConfig::Codec codec); + // Helpers for enabling/disabling specific features. + void DisableAudioChannel(); + void EnableVideoCodec(ChannelConfig::Codec codec); private: CandidateSessionConfig(); @@ -169,16 +168,16 @@ class CandidateSessionConfig { CandidateSessionConfig& operator=(const CandidateSessionConfig& b); static bool SelectCommonChannelConfig( - const std::vector& host_configs_, - const std::vector& client_configs_, + const std::list& host_configs_, + const std::list& client_configs_, ChannelConfig* config); - static bool IsChannelConfigSupported(const std::vector& vector, + static bool IsChannelConfigSupported(const std::list& list, const ChannelConfig& value); - std::vector control_configs_; - std::vector event_configs_; - std::vector video_configs_; - std::vector audio_configs_; + std::list control_configs_; + std::list event_configs_; + std::list video_configs_; + std::list audio_configs_; }; } // namespace protocol -- cgit v1.1