Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(531)

Unified Diff: talk/media/base/mediachannel.h

Issue 1229283003: Refactor the relationship between BaseChannel and MediaChannel so that we send over all the paramet… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: merge Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | talk/media/webrtc/webrtcvideoengine2.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/media/base/mediachannel.h
diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h
index 492f136798a851a61024ad3ea75d3d8fca5bee9c..ed4142969b96e74934b1416d760c3aa08b05e4af 100644
--- a/talk/media/base/mediachannel.h
+++ b/talk/media/base/mediachannel.h
@@ -138,6 +138,20 @@ static std::string ToStringIfSet(const char* key, const Settable<T>& val) {
return str;
}
+template <class T>
+static std::string VectorToString(const std::vector<T>& vals) {
+ std::ostringstream ost;
+ ost << "[";
+ for (size_t i = 0; i < vals.size(); ++i) {
+ if (i > 0) {
+ ost << ", ";
+ }
+ ost << vals[i].ToString();
+ }
+ ost << "]";
+ return ost.str();
+}
+
// Options that can be applied to a VoiceMediaChannel or a VoiceMediaEngine.
// Used to be flags, but that makes it hard to selectively apply options.
// We are moving all of the setting of options to structs like this,
@@ -453,9 +467,6 @@ struct VideoOptions {
struct RtpHeaderExtension {
RtpHeaderExtension() : id(0) {}
RtpHeaderExtension(const std::string& u, int i) : uri(u), id(i) {}
- std::string uri;
- int id;
- // TODO(juberti): SendRecv direction;
bool operator==(const RtpHeaderExtension& ext) const {
// id is a reserved word in objective-c. Therefore the id attribute has to
@@ -463,6 +474,19 @@ struct RtpHeaderExtension {
return this->id == ext.id &&
uri == ext.uri;
}
+
+ std::string ToString() const {
+ std::ostringstream ost;
+ ost << "{";
+ ost << "id: , " << id;
+ ost << "uri: " << uri;
+ ost << "}";
+ return ost.str();
+ }
+
+ std::string uri;
+ int id;
+ // TODO(juberti): SendRecv direction;
};
// Returns the named header extension if found among all extensions, NULL
@@ -985,6 +1009,45 @@ struct DataMediaInfo {
std::vector<DataReceiverInfo> receivers;
};
+template <class Codec>
+struct RtpParameters {
+ virtual std::string ToString() {
+ std::ostringstream ost;
+ ost << "{";
+ ost << "codecs: " << VectorToString(codecs) << ", ";
+ ost << "extensions: " << VectorToString(extensions);
+ ost << "}";
+ return ost.str();
+ }
+
+ std::vector<Codec> codecs;
+ std::vector<RtpHeaderExtension> extensions;
+ // TODO(pthatcher): Add streams.
+};
+
+template <class Codec, class Options>
+struct RtpSendParameters : RtpParameters<Codec> {
+ std::string ToString() override {
+ std::ostringstream ost;
+ ost << "{";
+ ost << "codecs: " << VectorToString(this->codecs) << ", ";
+ ost << "extensions: " << VectorToString(this->extensions) << ", ";
+ ost << "max_bandiwidth_bps: " << max_bandwidth_bps << ", ";
+ ost << "options: " << options.ToString();
+ ost << "}";
+ return ost.str();
+ }
+
+ int max_bandwidth_bps = -1;
+ Options options;
+};
+
+struct AudioSendParameters : RtpSendParameters<AudioCodec, AudioOptions> {
+};
+
+struct AudioRecvParameters : RtpParameters<AudioCodec> {
+};
+
class VoiceMediaChannel : public MediaChannel {
public:
enum Error {
@@ -1010,6 +1073,22 @@ class VoiceMediaChannel : public MediaChannel {
VoiceMediaChannel() {}
virtual ~VoiceMediaChannel() {}
+ // TODO(pthatcher): Remove SetSendCodecs,
+ // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions
+ // once all implementations implement SetSendParameters.
+ virtual bool SetSendParameters(const AudioSendParameters& params) {
+ return (SetSendCodecs(params.codecs) &&
+ SetSendRtpHeaderExtensions(params.extensions) &&
+ SetMaxSendBandwidth(params.max_bandwidth_bps) &&
+ SetOptions(params.options));
+ }
+ // TODO(pthatcher): Remove SetRecvCodecs and
+ // SetRecvRtpHeaderExtensions once all implementations implement
+ // SetRecvParameters.
+ virtual bool SetRecvParameters(const AudioRecvParameters& params) {
+ return (SetRecvCodecs(params.codecs) &&
+ SetRecvRtpHeaderExtensions(params.extensions));
+ }
// Sets the codecs/payload types to be used for incoming media.
virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) = 0;
// Sets the codecs/payload types to be used for outgoing media.
@@ -1065,6 +1144,12 @@ class VoiceMediaChannel : public MediaChannel {
sigslot::signal2<uint32, VoiceMediaChannel::Error> SignalMediaError;
};
+struct VideoSendParameters : RtpSendParameters<VideoCodec, VideoOptions> {
+};
+
+struct VideoRecvParameters : RtpParameters<VideoCodec> {
+};
+
class VideoMediaChannel : public MediaChannel {
public:
enum Error {
@@ -1086,6 +1171,22 @@ class VideoMediaChannel : public MediaChannel {
virtual ~VideoMediaChannel() {}
// Allow video channel to unhook itself from an associated voice channel.
virtual void DetachVoiceChannel() = 0;
+ // TODO(pthatcher): Remove SetSendCodecs,
+ // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions
+ // once all implementations implement SetSendParameters.
+ virtual bool SetSendParameters(const VideoSendParameters& params) {
+ return (SetSendCodecs(params.codecs) &&
+ SetSendRtpHeaderExtensions(params.extensions) &&
+ SetMaxSendBandwidth(params.max_bandwidth_bps) &&
+ SetOptions(params.options));
+ }
+ // TODO(pthatcher): Remove SetRecvCodecs and
+ // SetRecvRtpHeaderExtensions once all implementations implement
+ // SetRecvParameters.
+ virtual bool SetRecvParameters(const VideoRecvParameters& params) {
+ return (SetRecvCodecs(params.codecs) &&
+ SetRecvRtpHeaderExtensions(params.extensions));
+ }
// Sets the codecs/payload types to be used for incoming media.
virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) = 0;
// Sets the codecs/payload types to be used for outgoing media.
@@ -1189,6 +1290,27 @@ struct SendDataParams {
enum SendDataResult { SDR_SUCCESS, SDR_ERROR, SDR_BLOCK };
+struct DataOptions {
+ std::string ToString() {
+ return "{}";
+ }
+};
+
+struct DataSendParameters : RtpSendParameters<DataCodec, DataOptions> {
+ std::string ToString() {
+ std::ostringstream ost;
+ // Options and extensions aren't used.
+ ost << "{";
+ ost << "codecs: " << VectorToString(codecs) << ", ";
+ ost << "max_bandiwidth_bps: " << max_bandwidth_bps;
+ ost << "}";
+ return ost.str();
+ }
+};
+
+struct DataRecvParameters : RtpParameters<DataCodec> {
+};
+
class DataMediaChannel : public MediaChannel {
public:
enum Error {
@@ -1203,6 +1325,19 @@ class DataMediaChannel : public MediaChannel {
virtual ~DataMediaChannel() {}
+ // TODO(pthatcher): Remove SetSendCodecs,
+ // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions
+ // once all implementations implement SetSendParameters.
+ virtual bool SetSendParameters(const DataSendParameters& params) {
+ return (SetSendCodecs(params.codecs) &&
+ SetMaxSendBandwidth(params.max_bandwidth_bps));
+ }
+ // TODO(pthatcher): Remove SetRecvCodecs and
+ // SetRecvRtpHeaderExtensions once all implementations implement
+ // SetRecvParameters.
+ virtual bool SetRecvParameters(const DataRecvParameters& params) {
+ return SetRecvCodecs(params.codecs);
+ }
virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) = 0;
virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) = 0;
« no previous file with comments | « no previous file | talk/media/webrtc/webrtcvideoengine2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698