| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 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 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 std::string name; | 67 std::string name; |
| 68 int clockrate; | 68 int clockrate; |
| 69 CodecParameterMap params; | 69 CodecParameterMap params; |
| 70 FeedbackParams feedback_params; | 70 FeedbackParams feedback_params; |
| 71 | 71 |
| 72 // Creates a codec with the given parameters. | 72 // Creates a codec with the given parameters. |
| 73 Codec(int id, const std::string& name, int clockrate); | 73 Codec(int id, const std::string& name, int clockrate); |
| 74 // Creates an empty codec. | 74 // Creates an empty codec. |
| 75 Codec(); | 75 Codec(); |
| 76 Codec(const Codec& c); | 76 Codec(const Codec& c); |
| 77 Codec(Codec&& c); |
| 77 virtual ~Codec(); | 78 virtual ~Codec(); |
| 78 | 79 |
| 79 // Indicates if this codec is compatible with the specified codec. | 80 // Indicates if this codec is compatible with the specified codec. |
| 80 bool Matches(const Codec& codec) const; | 81 bool Matches(const Codec& codec) const; |
| 81 | 82 |
| 82 // Find the parameter for |name| and write the value to |out|. | 83 // Find the parameter for |name| and write the value to |out|. |
| 83 bool GetParam(const std::string& name, std::string* out) const; | 84 bool GetParam(const std::string& name, std::string* out) const; |
| 84 bool GetParam(const std::string& name, int* out) const; | 85 bool GetParam(const std::string& name, int* out) const; |
| 85 | 86 |
| 86 void SetParam(const std::string& name, const std::string& value); | 87 void SetParam(const std::string& name, const std::string& value); |
| 87 void SetParam(const std::string& name, int value); | 88 void SetParam(const std::string& name, int value); |
| 88 | 89 |
| 89 // It is safe to input a non-existent parameter. | 90 // It is safe to input a non-existent parameter. |
| 90 // Returns true if the parameter existed, false if it did not exist. | 91 // Returns true if the parameter existed, false if it did not exist. |
| 91 bool RemoveParam(const std::string& name); | 92 bool RemoveParam(const std::string& name); |
| 92 | 93 |
| 93 bool HasFeedbackParam(const FeedbackParam& param) const; | 94 bool HasFeedbackParam(const FeedbackParam& param) const; |
| 94 void AddFeedbackParam(const FeedbackParam& param); | 95 void AddFeedbackParam(const FeedbackParam& param); |
| 95 | 96 |
| 96 // Filter |this| feedbacks params such that only those shared by both |this| | 97 // Filter |this| feedbacks params such that only those shared by both |this| |
| 97 // and |other| are kept. | 98 // and |other| are kept. |
| 98 void IntersectFeedbackParams(const Codec& other); | 99 void IntersectFeedbackParams(const Codec& other); |
| 99 | 100 |
| 100 virtual webrtc::RtpCodecParameters ToCodecParameters() const; | 101 virtual webrtc::RtpCodecParameters ToCodecParameters() const; |
| 101 | 102 |
| 102 Codec& operator=(const Codec& c); | 103 Codec& operator=(const Codec& c); |
| 104 Codec& operator=(Codec&& c); |
| 103 | 105 |
| 104 bool operator==(const Codec& c) const; | 106 bool operator==(const Codec& c) const; |
| 105 | 107 |
| 106 bool operator!=(const Codec& c) const { | 108 bool operator!=(const Codec& c) const { |
| 107 return !(*this == c); | 109 return !(*this == c); |
| 108 } | 110 } |
| 109 }; | 111 }; |
| 110 | 112 |
| 111 struct AudioCodec : public Codec { | 113 struct AudioCodec : public Codec { |
| 112 int bitrate; | 114 int bitrate; |
| 113 size_t channels; | 115 size_t channels; |
| 114 | 116 |
| 115 // Creates a codec with the given parameters. | 117 // Creates a codec with the given parameters. |
| 116 AudioCodec(int id, | 118 AudioCodec(int id, |
| 117 const std::string& name, | 119 const std::string& name, |
| 118 int clockrate, | 120 int clockrate, |
| 119 int bitrate, | 121 int bitrate, |
| 120 size_t channels); | 122 size_t channels); |
| 121 // Creates an empty codec. | 123 // Creates an empty codec. |
| 122 AudioCodec(); | 124 AudioCodec(); |
| 123 AudioCodec(const AudioCodec& c); | 125 AudioCodec(const AudioCodec& c); |
| 126 AudioCodec(AudioCodec&& c); |
| 124 virtual ~AudioCodec() = default; | 127 virtual ~AudioCodec() = default; |
| 125 | 128 |
| 126 // Indicates if this codec is compatible with the specified codec. | 129 // Indicates if this codec is compatible with the specified codec. |
| 127 bool Matches(const AudioCodec& codec) const; | 130 bool Matches(const AudioCodec& codec) const; |
| 128 | 131 |
| 129 std::string ToString() const; | 132 std::string ToString() const; |
| 130 | 133 |
| 131 webrtc::RtpCodecParameters ToCodecParameters() const override; | 134 webrtc::RtpCodecParameters ToCodecParameters() const override; |
| 132 | 135 |
| 133 AudioCodec& operator=(const AudioCodec& c); | 136 AudioCodec& operator=(const AudioCodec& c); |
| 137 AudioCodec& operator=(AudioCodec&& c); |
| 134 | 138 |
| 135 bool operator==(const AudioCodec& c) const; | 139 bool operator==(const AudioCodec& c) const; |
| 136 | 140 |
| 137 bool operator!=(const AudioCodec& c) const { | 141 bool operator!=(const AudioCodec& c) const { |
| 138 return !(*this == c); | 142 return !(*this == c); |
| 139 } | 143 } |
| 140 }; | 144 }; |
| 141 | 145 |
| 142 struct VideoCodec : public Codec { | 146 struct VideoCodec : public Codec { |
| 143 // Creates a codec with the given parameters. | 147 // Creates a codec with the given parameters. |
| 144 VideoCodec(int id, const std::string& name); | 148 VideoCodec(int id, const std::string& name); |
| 145 // Creates a codec with the given name and empty id. | 149 // Creates a codec with the given name and empty id. |
| 146 explicit VideoCodec(const std::string& name); | 150 explicit VideoCodec(const std::string& name); |
| 147 // Creates an empty codec. | 151 // Creates an empty codec. |
| 148 VideoCodec(); | 152 VideoCodec(); |
| 149 VideoCodec(const VideoCodec& c); | 153 VideoCodec(const VideoCodec& c); |
| 154 VideoCodec(VideoCodec&& c); |
| 150 virtual ~VideoCodec() = default; | 155 virtual ~VideoCodec() = default; |
| 151 | 156 |
| 152 std::string ToString() const; | 157 std::string ToString() const; |
| 153 | 158 |
| 154 VideoCodec& operator=(const VideoCodec& c); | 159 VideoCodec& operator=(const VideoCodec& c); |
| 160 VideoCodec& operator=(VideoCodec&& c); |
| 155 | 161 |
| 156 bool operator==(const VideoCodec& c) const; | 162 bool operator==(const VideoCodec& c) const; |
| 157 | 163 |
| 158 bool operator!=(const VideoCodec& c) const { | 164 bool operator!=(const VideoCodec& c) const { |
| 159 return !(*this == c); | 165 return !(*this == c); |
| 160 } | 166 } |
| 161 | 167 |
| 162 static VideoCodec CreateRtxCodec(int rtx_payload_type, | 168 static VideoCodec CreateRtxCodec(int rtx_payload_type, |
| 163 int associated_payload_type); | 169 int associated_payload_type); |
| 164 | 170 |
| 165 enum CodecType { | 171 enum CodecType { |
| 166 CODEC_VIDEO, | 172 CODEC_VIDEO, |
| 167 CODEC_RED, | 173 CODEC_RED, |
| 168 CODEC_ULPFEC, | 174 CODEC_ULPFEC, |
| 169 CODEC_RTX, | 175 CODEC_RTX, |
| 170 }; | 176 }; |
| 171 | 177 |
| 172 CodecType GetCodecType() const; | 178 CodecType GetCodecType() const; |
| 173 // Validates a VideoCodec's payload type, dimensions and bitrates etc. If they | 179 // Validates a VideoCodec's payload type, dimensions and bitrates etc. If they |
| 174 // don't make sense (such as max < min bitrate), and error is logged and | 180 // don't make sense (such as max < min bitrate), and error is logged and |
| 175 // ValidateCodecFormat returns false. | 181 // ValidateCodecFormat returns false. |
| 176 bool ValidateCodecFormat() const; | 182 bool ValidateCodecFormat() const; |
| 177 }; | 183 }; |
| 178 | 184 |
| 179 struct DataCodec : public Codec { | 185 struct DataCodec : public Codec { |
| 180 DataCodec(int id, const std::string& name); | 186 DataCodec(int id, const std::string& name); |
| 181 DataCodec(); | 187 DataCodec(); |
| 182 DataCodec(const DataCodec& c); | 188 DataCodec(const DataCodec& c); |
| 189 DataCodec(DataCodec&& c); |
| 183 virtual ~DataCodec() = default; | 190 virtual ~DataCodec() = default; |
| 184 | 191 |
| 185 DataCodec& operator=(const DataCodec& c); | 192 DataCodec& operator=(const DataCodec& c); |
| 193 DataCodec& operator=(DataCodec&& c); |
| 186 | 194 |
| 187 std::string ToString() const; | 195 std::string ToString() const; |
| 188 }; | 196 }; |
| 189 | 197 |
| 190 // Get the codec setting associated with |payload_type|. If there | 198 // Get the codec setting associated with |payload_type|. If there |
| 191 // is no codec associated with that payload type it returns false. | 199 // is no codec associated with that payload type it returns false. |
| 192 template <class Codec> | 200 template <class Codec> |
| 193 bool FindCodecById(const std::vector<Codec>& codecs, | 201 bool FindCodecById(const std::vector<Codec>& codecs, |
| 194 int payload_type, | 202 int payload_type, |
| 195 Codec* codec_out) { | 203 Codec* codec_out) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 207 webrtc::VideoCodecType CodecTypeFromName(const std::string& name); | 215 webrtc::VideoCodecType CodecTypeFromName(const std::string& name); |
| 208 bool HasNack(const Codec& codec); | 216 bool HasNack(const Codec& codec); |
| 209 bool HasRemb(const Codec& codec); | 217 bool HasRemb(const Codec& codec); |
| 210 bool HasTransportCc(const Codec& codec); | 218 bool HasTransportCc(const Codec& codec); |
| 211 bool IsCodecSupported(const std::vector<VideoCodec>& supported_codecs, | 219 bool IsCodecSupported(const std::vector<VideoCodec>& supported_codecs, |
| 212 const VideoCodec& codec); | 220 const VideoCodec& codec); |
| 213 | 221 |
| 214 } // namespace cricket | 222 } // namespace cricket |
| 215 | 223 |
| 216 #endif // WEBRTC_MEDIA_BASE_CODEC_H_ | 224 #endif // WEBRTC_MEDIA_BASE_CODEC_H_ |
| OLD | NEW |