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

Unified Diff: webrtc/media/engine/payload_type_mapper.cc

Issue 2151453002: Revert of WebRtcVoiceEngine: Use AudioDecoderFactory to generate recv codecs. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 5 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 | « webrtc/media/engine/payload_type_mapper.h ('k') | webrtc/media/engine/payload_type_mapper_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/payload_type_mapper.cc
diff --git a/webrtc/media/engine/payload_type_mapper.cc b/webrtc/media/engine/payload_type_mapper.cc
deleted file mode 100644
index 87b54be33b51f530e0aac15da859d614bba7eedd..0000000000000000000000000000000000000000
--- a/webrtc/media/engine/payload_type_mapper.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/engine/payload_type_mapper.h"
-
-#include "webrtc/common_types.h"
-#include "webrtc/media/base/mediaconstants.h"
-
-namespace cricket {
-
-PayloadTypeMapper::PayloadTypeMapper()
- // RFC 3551 reserves payload type numbers in the range 96-127 exclusively
- // for dynamic assignment. Once those are used up, it is recommended that
- // payload types unassigned by the RFC are used for dynamic payload type
- // mapping, before any static payload ids. At this point, we only support
- // mapping within the exclusive range.
- : next_unused_payload_type_(96),
- max_payload_type_(127),
- mappings_({
- // Static payload type assignments according to RFC 3551.
- {{"PCMU", 8000, 1}, 0},
- {{"GSM", 8000, 1}, 3},
- {{"G723", 8000, 1}, 4},
- {{"DVI4", 8000, 1}, 5},
- {{"DVI4", 16000, 1}, 6},
- {{"LPC", 8000, 1}, 7},
- {{"PCMA", 8000, 1}, 8},
- {{"G722", 8000, 1}, 9},
- {{"L16", 44100, 2}, 10},
- {{"L16", 44100, 1}, 11},
- {{"QCELP", 8000, 1}, 12},
- {{"CN", 8000, 1}, 13},
- // RFC 4566 is a bit ambiguous on the contents of the "encoding
- // parameters" field, which, for audio, encodes the number of
- // channels. It is "optional and may be omitted if the number of
- // channels is one". Does that necessarily imply that an omitted
- // encoding parameter means one channel? Since RFC 3551 doesn't
- // specify a value for this parameter for MPA, I've included both 0
- // and 1 here, to increase the chances it will be correctly used if
- // someone implements an MPEG audio encoder/decoder.
- {{"MPA", 90000, 0}, 14},
- {{"MPA", 90000, 1}, 14},
- {{"G728", 8000, 1}, 15},
- {{"DVI4", 11025, 1}, 16},
- {{"DVI4", 22050, 1}, 17},
- {{"G729", 8000, 1}, 18},
-
- // Payload type assignments currently used by WebRTC.
- // Includes video, to reduce collisions (and thus reassignments)
- // RTX codecs mapping to specific video payload types
- {{kRtxCodecName, 90000, 0,
- {{kCodecParamAssociatedPayloadType,
- std::to_string(kDefaultVp8PlType)}}},
- kDefaultRtxVp8PlType},
- {{kRtxCodecName, 90000, 0,
- {{kCodecParamAssociatedPayloadType,
- std::to_string(kDefaultVp9PlType)}}},
- kDefaultRtxVp9PlType},
- {{kRtxCodecName, 90000, 0,
- {{kCodecParamAssociatedPayloadType,
- std::to_string(kDefaultRedPlType)}}},
- kDefaultRtxRedPlType},
- {{kRtxCodecName, 90000, 0,
- {{kCodecParamAssociatedPayloadType,
- std::to_string(kDefaultH264PlType)}}},
- kDefaultRtxH264PlType},
- // Other codecs
- {{kVp8CodecName, 90000, 0}, kDefaultVp8PlType},
- {{kVp9CodecName, 90000, 0}, kDefaultVp9PlType},
- {{kIlbcCodecName, 8000, 1}, 102},
- {{kIsacCodecName, 16000, 1}, 103},
- {{kIsacCodecName, 32000, 1}, 104},
- {{kCnCodecName, 16000, 1}, 105},
- {{kCnCodecName, 32000, 1}, 106},
- {{kH264CodecName, 90000, 0}, kDefaultH264PlType},
- {{kOpusCodecName, 48000, 2,
- {{"minptime", "10"}, {"useinbandfec", "1"}}}, 111},
- {{kRedCodecName, 90000, 0}, kDefaultRedPlType},
- {{kUlpfecCodecName, 90000, 0}, kDefaultUlpfecType},
- {{kDtmfCodecName, 8000, 1}, 126}}) {
- // TODO(ossu): Try to keep this as change-proof as possible until we're able
- // to remove the payload type constants from everywhere in the code.
- for (const auto& mapping : mappings_) {
- used_payload_types_.insert(mapping.second);
- }
-}
-
-PayloadTypeMapper::~PayloadTypeMapper() = default;
-
-rtc::Optional<int> PayloadTypeMapper::GetMappingFor(
- const webrtc::SdpAudioFormat& format) {
- auto iter = mappings_.find(format);
- if (iter != mappings_.end())
- return rtc::Optional<int>(iter->second);
-
- for (; next_unused_payload_type_ <= max_payload_type_;
- ++next_unused_payload_type_) {
- int payload_type = next_unused_payload_type_;
- if (used_payload_types_.find(payload_type) == used_payload_types_.end()) {
- used_payload_types_.insert(payload_type);
- mappings_[format] = payload_type;
- ++next_unused_payload_type_;
- return rtc::Optional<int>(payload_type);
- }
- }
-
- return rtc::Optional<int>();
-}
-
-rtc::Optional<int> PayloadTypeMapper::FindMappingFor(
- const webrtc::SdpAudioFormat& format) const {
- auto iter = mappings_.find(format);
- if (iter != mappings_.end())
- return rtc::Optional<int>(iter->second);
-
- return rtc::Optional<int>();
-}
-
-rtc::Optional<AudioCodec> PayloadTypeMapper::ToAudioCodec(
- const webrtc::SdpAudioFormat& format) {
- // TODO(ossu): We can safely set bitrate to zero here, since that field is
- // not presented in the SDP. It is used to ferry around some target bitrate
- // values for certain codecs (ISAC and Opus) and in ways it really
- // shouldn't. It should be removed once we no longer use CodecInsts in the
- // ACM or NetEq.
- auto opt_payload_type = GetMappingFor(format);
- if (opt_payload_type) {
- AudioCodec codec(*opt_payload_type, format.name, format.clockrate_hz, 0,
- format.num_channels);
- codec.params = format.parameters;
- return rtc::Optional<AudioCodec>(std::move(codec));
- }
-
- return rtc::Optional<AudioCodec>();
-}
-
-bool PayloadTypeMapper::SdpAudioFormatOrdering::operator()(
- const webrtc::SdpAudioFormat& a,
- const webrtc::SdpAudioFormat& b) const {
- if (a.clockrate_hz == b.clockrate_hz) {
- if (a.num_channels == b.num_channels) {
- int name_cmp = STR_CASE_CMP(a.name.c_str(), b.name.c_str());
- if (name_cmp == 0)
- return a.parameters < b.parameters;
- return name_cmp < 0;
- }
- return a.num_channels < b.num_channels;
- }
- return a.clockrate_hz < b.clockrate_hz;
-}
-
-} // namespace cricket
« no previous file with comments | « webrtc/media/engine/payload_type_mapper.h ('k') | webrtc/media/engine/payload_type_mapper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698