Index: webrtc/media/engine/payload_type_mapper.h |
diff --git a/webrtc/media/engine/payload_type_mapper.h b/webrtc/media/engine/payload_type_mapper.h |
index d1f8f35949adbf8fe68189264b305b0405958c83..a79fb4756c644f9274fe2fe34b0bb36f74a94f78 100644 |
--- a/webrtc/media/engine/payload_type_mapper.h |
+++ b/webrtc/media/engine/payload_type_mapper.h |
@@ -11,6 +11,44 @@ |
#ifndef WEBRTC_MEDIA_ENGINE_PAYLOAD_TYPE_MAPPER_H_ |
#define WEBRTC_MEDIA_ENGINE_PAYLOAD_TYPE_MAPPER_H_ |
-// This file intentionally left blank for build purposes. |
+#include <map> |
+#include <set> |
+#include "webrtc/base/optional.h" |
+#include "webrtc/media/base/codec.h" |
+#include "webrtc/modules/audio_coding/codecs/audio_format.h" |
+ |
+namespace cricket { |
+ |
+class PayloadTypeMapper { |
+ public: |
+ PayloadTypeMapper(); |
+ ~PayloadTypeMapper(); |
+ |
+ // Finds the current payload type for |format| or assigns a new one, if no |
+ // current mapping exists. Will return an empty value if it was unable to |
+ // create a mapping, i.e. if all dynamic payload type ids have been used up. |
+ rtc::Optional<int> GetMappingFor(const webrtc::SdpAudioFormat& format); |
+ |
+ // Finds the current payload type for |format|, if any. Returns an empty value |
+ // if no payload type mapping exists for the format. |
+ rtc::Optional<int> FindMappingFor(const webrtc::SdpAudioFormat& format) const; |
+ |
+ // Like GetMappingFor, but fills in an AudioCodec structure with the necessary |
+ // information instead. |
+ rtc::Optional<AudioCodec> ToAudioCodec(const webrtc::SdpAudioFormat& format); |
+ |
+ private: |
+ struct SdpAudioFormatOrdering { |
+ bool operator()(const webrtc::SdpAudioFormat& a, |
+ const webrtc::SdpAudioFormat& b) const; |
+ }; |
+ |
+ int next_unused_payload_type_; |
+ int max_payload_type_; |
+ std::map<webrtc::SdpAudioFormat, int, SdpAudioFormatOrdering> mappings_; |
+ std::set<int> used_payload_types_; |
+}; |
+ |
+} // namespace cricket |
#endif // WEBRTC_MEDIA_ENGINE_PAYLOAD_TYPE_MAPPER_H_ |