Changeset 207952 in webkit
- Timestamp:
- Oct 27, 2016 12:31:13 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r207938 r207952 1 2016-10-27 Youenn Fablet <youenn@apple.com> 2 3 MediaPayload does not need to be refcounted 4 https://bugs.webkit.org/show_bug.cgi?id=164015 5 6 Reviewed by Eric Carlson. 7 8 No change of behavior. 9 Making MediaPayload a struct and no-longer ref-counted. 10 Small performance improvements in MediaEndpointOwr. 11 12 * Modules/mediastream/MediaEndpointPeerConnection.h: 13 * Modules/mediastream/SDPProcessor.cpp: 14 (WebCore::configurationFromJSON): 15 (WebCore::configurationToJSON): 16 * platform/mediastream/MediaEndpoint.h: 17 * platform/mediastream/MediaPayload.h: 18 (WebCore::MediaPayload::addParameter): 19 (WebCore::MediaPayload::create): Deleted. 20 (WebCore::MediaPayload::~MediaPayload): Deleted. 21 (WebCore::MediaPayload::type): Deleted. 22 (WebCore::MediaPayload::setType): Deleted. 23 (WebCore::MediaPayload::encodingName): Deleted. 24 (WebCore::MediaPayload::setEncodingName): Deleted. 25 (WebCore::MediaPayload::clockRate): Deleted. 26 (WebCore::MediaPayload::setClockRate): Deleted. 27 (WebCore::MediaPayload::channels): Deleted. 28 (WebCore::MediaPayload::setChannels): Deleted. 29 (WebCore::MediaPayload::ccmfir): Deleted. 30 (WebCore::MediaPayload::setCcmfir): Deleted. 31 (WebCore::MediaPayload::nackpli): Deleted. 32 (WebCore::MediaPayload::setNackpli): Deleted. 33 (WebCore::MediaPayload::nack): Deleted. 34 (WebCore::MediaPayload::setNack): Deleted. 35 (WebCore::MediaPayload::parameters): Deleted. 36 (WebCore::MediaPayload::clone): Deleted. 37 (WebCore::MediaPayload::MediaPayload): Deleted. 38 * platform/mediastream/PeerMediaDescription.h: 39 (WebCore::PeerMediaDescription::payloads): 40 (WebCore::PeerMediaDescription::addPayload): 41 (WebCore::PeerMediaDescription::setPayloads): 42 (WebCore::PeerMediaDescription::clone): 43 * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp: 44 (WebCore::MediaEndpointOwr::getDefaultAudioPayloads): 45 (WebCore::MediaEndpointOwr::getDefaultVideoPayloads): 46 (WebCore::MediaEndpointOwr::filterPayloads): 47 * platform/mock/MockMediaEndpoint.cpp: 48 (WebCore::MockMediaEndpoint::getDefaultAudioPayloads): 49 (WebCore::MockMediaEndpoint::getDefaultVideoPayloads): 50 (WebCore::MockMediaEndpoint::filterPayloads): 51 1 52 2016-10-26 Dan Bernstein <mitz@apple.com> 2 53 -
trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h
r207897 r207952 120 120 std::unique_ptr<SDPProcessor> m_sdpProcessor; 121 121 122 Vector< RefPtr<MediaPayload>> m_defaultAudioPayloads;123 Vector< RefPtr<MediaPayload>> m_defaultVideoPayloads;122 Vector<MediaPayload> m_defaultAudioPayloads; 123 Vector<MediaPayload> m_defaultVideoPayloads; 124 124 125 125 String m_cname; -
trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp
r207897 r207952 224 224 payloadsArray->get(j)->asObject(payloadsObject); 225 225 226 RefPtr<MediaPayload> payload = MediaPayload::create();226 MediaPayload payload; 227 227 228 228 if (payloadsObject->getInteger(typeString(), intValue)) 229 payload ->setType(intValue);229 payload.type = intValue; 230 230 231 231 if (payloadsObject->getString(encodingNameString(), stringValue)) 232 payload ->setEncodingName(stringValue);232 payload.encodingName = stringValue; 233 233 234 234 if (payloadsObject->getInteger(clockRateString(), intValue)) 235 payload ->setClockRate(intValue);235 payload.clockRate = intValue; 236 236 237 237 if (payloadsObject->getInteger(channelsString(), intValue)) 238 payload ->setChannels(intValue);238 payload.channels = intValue; 239 239 240 240 if (payloadsObject->getBoolean(ccmfirString(), boolValue)) 241 payload ->setCcmfir(boolValue);241 payload.ccmfir = boolValue; 242 242 243 243 if (payloadsObject->getBoolean(nackpliString(), boolValue)) 244 payload ->setNackpli(boolValue);244 payload.nackpli = boolValue; 245 245 246 246 if (payloadsObject->getBoolean(nackString(), boolValue)) 247 payload ->setNack(boolValue);247 payload.nack = boolValue; 248 248 249 249 RefPtr<InspectorObject> parametersObject = InspectorObject::create(); 250 250 if (payloadsObject->getObject(parametersString(), parametersObject)) { 251 251 if (parametersObject->getInteger(packetizationModeString(), intValue)) 252 payload ->addParameter("packetizationMode", intValue);252 payload.addParameter("packetizationMode", intValue); 253 253 254 254 if (parametersObject->getInteger(aptString(), intValue)) 255 payload ->addParameter("apt", intValue);255 payload.addParameter("apt", intValue); 256 256 257 257 if (parametersObject->getInteger(rtxTimeString(), intValue)) 258 payload ->addParameter("rtxTime", intValue);258 payload.addParameter("rtxTime", intValue); 259 259 } 260 260 … … 363 363 RefPtr<InspectorArray> payloadsArray = InspectorArray::create(); 364 364 365 for ( RefPtr<MediaPayload>payload : mediaDescription->payloads()) {365 for (auto& payload : mediaDescription->payloads()) { 366 366 RefPtr<InspectorObject> payloadObject = InspectorObject::create(); 367 367 368 payloadObject->setInteger(typeString(), payload ->type());369 payloadObject->setString(encodingNameString(), payload ->encodingName());370 payloadObject->setInteger(clockRateString(), payload ->clockRate());371 payloadObject->setInteger(channelsString(), payload ->channels());372 payloadObject->setBoolean(ccmfirString(), payload ->ccmfir());373 payloadObject->setBoolean(nackpliString(), payload ->nackpli());374 payloadObject->setBoolean(nackString(), payload ->nack());375 376 if (!payload ->parameters().isEmpty()) {368 payloadObject->setInteger(typeString(), payload.type); 369 payloadObject->setString(encodingNameString(), payload.encodingName); 370 payloadObject->setInteger(clockRateString(), payload.clockRate); 371 payloadObject->setInteger(channelsString(), payload.channels); 372 payloadObject->setBoolean(ccmfirString(), payload.ccmfir); 373 payloadObject->setBoolean(nackpliString(), payload.nackpli); 374 payloadObject->setBoolean(nackString(), payload.nack); 375 376 if (!payload.parameters.isEmpty()) { 377 377 RefPtr<InspectorObject> parametersObject = InspectorObject::create(); 378 378 379 for (auto& name : payload ->parameters().keys())380 parametersObject->setInteger(name, payload ->parameters().get(name));379 for (auto& name : payload.parameters.keys()) 380 parametersObject->setInteger(name, payload.parameters.get(name)); 381 381 382 382 payloadObject->setObject(parametersString(), parametersObject); -
trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h
r207897 r207952 44 44 class MediaEndpointClient; 45 45 class MediaEndpointSessionConfiguration; 46 classMediaPayload;46 struct MediaPayload; 47 47 class RealtimeMediaSource; 48 48 49 49 typedef std::unique_ptr<MediaEndpoint> (*CreateMediaEndpoint)(MediaEndpointClient&); 50 typedef Vector< RefPtr<MediaPayload>> MediaPayloadVector;50 typedef Vector<MediaPayload> MediaPayloadVector; 51 51 typedef HashMap<String, RealtimeMediaSource*> RealtimeMediaSourceMap; 52 52 -
trunk/Source/WebCore/platform/mediastream/MediaPayload.h
r198492 r207952 29 29 */ 30 30 31 #ifndef MediaPayload_h 32 #define MediaPayload_h 31 #pragma once 33 32 34 33 #if ENABLE(WEB_RTC) 35 34 36 35 #include <wtf/HashMap.h> 37 #include <wtf/RefCounted.h>38 #include <wtf/RefPtr.h>39 36 #include <wtf/text/StringHash.h> 40 37 41 38 namespace WebCore { 42 39 43 class MediaPayload : public RefCounted<MediaPayload>{40 struct MediaPayload { 44 41 public: 45 static RefPtr<MediaPayload> create() 46 { 47 return adoptRef(new MediaPayload()); 48 } 49 virtual ~MediaPayload() { } 42 void addParameter(const String& name, unsigned value) { parameters.set(name, value); } 50 43 51 unsigned type() const { return m_type; } 52 void setType(unsigned type) { m_type = type; } 53 54 const String& encodingName() const { return m_encodingName; } 55 void setEncodingName(const String & encodingName) { m_encodingName = encodingName; } 56 57 unsigned clockRate() const { return m_clockRate; } 58 void setClockRate(unsigned clockRate) { m_clockRate = clockRate; } 59 60 unsigned channels() const { return m_channels; } 61 void setChannels(unsigned channels) { m_channels = channels; } 62 63 bool ccmfir() const { return m_ccmfir; } 64 void setCcmfir(bool ccmfir) { m_ccmfir = ccmfir; } 65 66 bool nackpli() const { return m_nackpli; } 67 void setNackpli(bool nackpli) { m_nackpli = nackpli; } 68 69 bool nack() const { return m_nack; } 70 void setNack(bool nack) { m_nack = nack; } 71 72 const HashMap<String, unsigned>& parameters() const { return m_parameters; } 73 void addParameter(const String& name, unsigned value) { m_parameters.set(name, value); } 74 75 RefPtr<MediaPayload> clone() const 76 { 77 RefPtr<MediaPayload> copy = create(); 78 79 copy->m_type = m_type; 80 copy->m_encodingName = String(m_encodingName); 81 copy->m_clockRate = m_clockRate; 82 83 copy->m_channels = m_channels; 84 85 copy->m_ccmfir = m_ccmfir; 86 copy->m_nackpli = m_nackpli; 87 copy->m_nack = m_nack; 88 89 for (auto& key : m_parameters.keys()) 90 copy->m_parameters.add(key, m_parameters.get(key)); 91 92 return copy; 93 } 94 95 private: 96 MediaPayload() { } 97 98 unsigned m_type { 0 }; 99 String m_encodingName; 100 unsigned m_clockRate { 0 }; 44 unsigned type { 0 }; 45 String encodingName; 46 unsigned clockRate { 0 }; 101 47 102 48 // audio 103 unsigned m_channels { 0 };49 unsigned channels { 0 }; 104 50 105 51 // video 106 bool m_ccmfir { false };107 bool m_nackpli { false };108 bool m_nack { false };52 bool ccmfir { false }; 53 bool nackpli { false }; 54 bool nack { false }; 109 55 110 HashMap<String, unsigned> m_parameters;56 HashMap<String, unsigned> parameters; 111 57 }; 112 58 … … 114 60 115 61 #endif // ENABLE(WEB_RTC) 116 117 #endif // MediaPayload_h -
trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h
r207897 r207952 65 65 void setMid(const String& mid) { m_mid = mid; } 66 66 67 const Vector< RefPtr<MediaPayload>>& payloads() const { return m_payloads; }68 void addPayload( RefPtr<MediaPayload>&& payload) { m_payloads.append(WTFMove(payload)); }69 void setPayloads(Vector< RefPtr<MediaPayload>>&& payloads) { m_payloads = payloads; }70 void setPayloads(const Vector< RefPtr<MediaPayload>>& payloads) { m_payloads = payloads; }67 const Vector<MediaPayload>& payloads() const { return m_payloads; } 68 void addPayload(MediaPayload&& payload) { m_payloads.append(WTFMove(payload)); } 69 void setPayloads(Vector<MediaPayload>&& payloads) { m_payloads = payloads; } 70 void setPayloads(const Vector<MediaPayload>& payloads) { m_payloads = payloads; } 71 71 72 72 bool rtcpMux() const { return m_rtcpMux; } … … 120 120 copy->m_mid = String(m_mid); 121 121 122 for (auto& payload : m_payloads) 123 copy->m_payloads.append(payload->clone()); 122 copy->m_payloads = m_payloads; 124 123 125 124 copy->m_rtcpMux = m_rtcpMux; … … 156 155 String m_mid; 157 156 158 Vector< RefPtr<MediaPayload>> m_payloads;157 Vector<MediaPayload> m_payloads; 159 158 160 159 bool m_rtcpMux { true }; -
trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp
r207897 r207952 111 111 112 112 // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723) 113 RefPtr<MediaPayload> payload = MediaPayload::create();114 payload ->setType(111);115 payload ->setEncodingName("OPUS");116 payload ->setClockRate(48000);117 payload ->setChannels(2);118 payloads.append( payload);119 120 payload = MediaPayload::create();121 payload ->setType(8);122 payload ->setEncodingName("PCMA");123 payload ->setClockRate(8000);124 payload ->setChannels(1);125 payloads.append( payload);126 127 payload = MediaPayload::create();128 payload ->setType(0);129 payload ->setEncodingName("PCMU");130 payload ->setClockRate(8000);131 payload ->setChannels(1);132 payloads.append( payload);113 MediaPayload payload1; 114 payload1.type = 111; 115 payload1.encodingName = "OPUS"; 116 payload1.clockRate = 48000; 117 payload1.channels = 2; 118 payloads.append(WTFMove(payload1)); 119 120 MediaPayload payload2; 121 payload2.type = 8; 122 payload2.encodingName = "PCMA"; 123 payload2.clockRate = 8000; 124 payload2.channels = 1; 125 payloads.append(WTFMove(payload2)); 126 127 MediaPayload payload3; 128 payload3.type = 0; 129 payload3.encodingName = "PCMU"; 130 payload3.clockRate = 8000; 131 payload3.channels = 1; 132 payloads.append(WTFMove(payload3)); 133 133 134 134 return payloads; … … 140 140 141 141 // FIXME: This list should be based on what is available in the platform (bug: http://webkit.org/b/163723) 142 RefPtr<MediaPayload> payload = MediaPayload::create();143 payload ->setType(103);144 payload ->setEncodingName("H264");145 payload ->setClockRate(90000);146 payload ->setCcmfir(true);147 payload ->setNackpli(true);148 payload ->addParameter("packetizationMode", 1);149 payloads.append( payload);150 151 payload = MediaPayload::create();152 payload ->setType(100);153 payload ->setEncodingName("VP8");154 payload ->setClockRate(90000);155 payload ->setCcmfir(true);156 payload ->setNackpli(true);157 payload ->setNack(true);158 payloads.append( payload);159 160 payload = MediaPayload::create();161 payload ->setType(120);162 payload ->setEncodingName("RTX");163 payload ->setClockRate(90000);164 payload ->addParameter("apt", 100);165 payload ->addParameter("rtxTime", 200);166 payloads.append( payload);142 MediaPayload payload1; 143 payload1.type = 103; 144 payload1.encodingName = "H264"; 145 payload1.clockRate = 90000; 146 payload1.ccmfir = true; 147 payload1.nackpli = true; 148 payload1.addParameter("packetizationMode", 1); 149 payloads.append(WTFMove(payload1)); 150 151 MediaPayload payload2; 152 payload2.type = 100; 153 payload2.encodingName = "VP8"; 154 payload2.clockRate = 90000; 155 payload2.ccmfir = true; 156 payload2.nackpli = true; 157 payload2.nack = true; 158 payloads.append(WTFMove(payload2)); 159 160 MediaPayload payload3; 161 payload3.type = 120; 162 payload3.encodingName = "RTX"; 163 payload3.clockRate = 90000; 164 payload1.addParameter("apt", 100); 165 payload1.addParameter("rtxTime", 200); 166 payloads.append(WTFMove(payload3)); 167 167 168 168 return payloads; 169 169 } 170 170 171 static bool payloadsContainType(MediaPayloadVector payloads, unsigned payloadType) 172 { 173 for (auto& payload : payloads) { 174 if (payload->type() == payloadType) 171 static bool payloadsContainType(const Vector<const MediaPayload*>& payloads, unsigned payloadType) 172 { 173 for (auto payload : payloads) { 174 ASSERT(payload); 175 if (payload->type == payloadType) 175 176 return true; 176 177 } … … 180 181 MediaPayloadVector MediaEndpointOwr::filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) 181 182 { 182 MediaPayloadVectorfilteredPayloads;183 Vector<const MediaPayload*> filteredPayloads; 183 184 184 185 for (auto& remotePayload : remotePayloads) { 185 MediaPayload* defaultPayload = nullptr;186 const MediaPayload* defaultPayload = nullptr; 186 187 for (auto& p : defaultPayloads) { 187 if (p ->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {188 defaultPayload = p.get();188 if (p.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) { 189 defaultPayload = &p; 189 190 break; 190 191 } … … 193 194 continue; 194 195 195 if (defaultPayload->parameters ().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")196 && (defaultPayload->parameters ().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))196 if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode") 197 && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode"))) 197 198 continue; 198 199 199 filteredPayloads.append( remotePayload);200 filteredPayloads.append(&remotePayload); 200 201 } 201 202 202 203 MediaPayloadVector filteredAptPayloads; 203 204 204 for (auto &filteredPayload : filteredPayloads) {205 if (filteredPayload->parameters ().contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters().get("apt"))))205 for (auto filteredPayload : filteredPayloads) { 206 if (filteredPayload->parameters.contains("apt") && (!payloadsContainType(filteredPayloads, filteredPayload->parameters.get("apt")))) 206 207 continue; 207 filteredAptPayloads.append( filteredPayload);208 filteredAptPayloads.append(*filteredPayload); 208 209 } 209 210 … … 236 237 } 237 238 238 static RefPtr<MediaPayload> findRtxPayload(MediaPayloadVectorpayloads, unsigned apt)239 static const MediaPayload* findRtxPayload(const MediaPayloadVector& payloads, unsigned apt) 239 240 { 240 241 for (auto& payload : payloads) { 241 if (payload ->encodingName().convertToASCIIUppercase() == "RTX" && payload->parameters().contains("apt")242 && (payload ->parameters().get("apt") == apt))243 return payload;242 if (payload.encodingName.convertToASCIIUppercase() == "RTX" && payload.parameters.contains("apt") 243 && (payload.parameters.get("apt") == apt)) 244 return &payload; 244 245 } 245 246 return nullptr; … … 277 278 continue; 278 279 279 MediaPayload* payload = nullptr;280 const MediaPayload* payload = nullptr; 280 281 for (auto& p : mdesc.payloads()) { 281 if (p ->encodingName().convertToASCIIUppercase() != "RTX") {282 payload = p.get();282 if (p.encodingName.convertToASCIIUppercase() != "RTX") { 283 payload = &p; 283 284 break; 284 285 } … … 288 289 return UpdateResult::Failed; 289 290 290 RefPtr<MediaPayload> rtxPayload = findRtxPayload(mdesc.payloads(), payload->type());291 RealtimeMediaSourceOwr* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid()));292 293 ASSERT(codecTypes.find(payload->encodingName ().convertToASCIIUppercase()) != notFound);294 OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName().convertToASCIIUppercase()));291 auto* rtxPayload = findRtxPayload(mdesc.payloads(), payload->type); 292 auto* source = static_cast<RealtimeMediaSourceOwr*>(sendSourceMap.get(mdesc.mid())); 293 294 ASSERT(codecTypes.find(payload->encodingName.convertToASCIIUppercase()) != notFound); 295 auto codecType = static_cast<OwrCodecType>(codecTypes.find(payload->encodingName.convertToASCIIUppercase())); 295 296 296 297 OwrPayload* sendPayload; 297 298 if (mdesc.type() == "audio") 298 sendPayload = owr_audio_payload_new(codecType, payload->type (), payload->clockRate(), payload->channels());299 sendPayload = owr_audio_payload_new(codecType, payload->type, payload->clockRate, payload->channels); 299 300 else { 300 sendPayload = owr_video_payload_new(codecType, payload->type (), payload->clockRate(), payload->ccmfir(), payload->nackpli());301 g_object_set(sendPayload, "rtx-payload-type", rtxPayload ? rtxPayload->type (): -1,302 "rtx-time", rtxPayload && rtxPayload->parameters ().contains("rtxTime") ? rtxPayload->parameters().get("rtxTime") : 0, nullptr);301 sendPayload = owr_video_payload_new(codecType, payload->type, payload->clockRate, payload->ccmfir, payload->nackpli); 302 g_object_set(sendPayload, "rtx-payload-type", rtxPayload ? rtxPayload->type : -1, 303 "rtx-time", rtxPayload && rtxPayload->parameters.contains("rtxTime") ? rtxPayload->parameters.get("rtxTime") : 0, nullptr); 303 304 } 304 305 … … 490 491 491 492 for (auto& payload : mediaDescription->payloads()) { 492 if (payload ->encodingName().convertToASCIIUppercase() == "RTX")493 if (payload.encodingName.convertToASCIIUppercase() == "RTX") 493 494 continue; 494 495 495 RefPtr<MediaPayload> rtxPayload = findRtxPayload(mediaDescription->payloads(), payload->type());496 497 ASSERT(codecTypes.find(payload ->encodingName()) != notFound);498 OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload ->encodingName().convertToASCIIUppercase()));496 auto* rtxPayload = findRtxPayload(mediaDescription->payloads(), payload.type); 497 498 ASSERT(codecTypes.find(payload.encodingName) != notFound); 499 OwrCodecType codecType = static_cast<OwrCodecType>(codecTypes.find(payload.encodingName.convertToASCIIUppercase())); 499 500 500 501 OwrPayload* receivePayload; 501 502 if (mediaDescription->type() == "audio") 502 receivePayload = owr_audio_payload_new(codecType, payload ->type(), payload->clockRate(), payload->channels());503 receivePayload = owr_audio_payload_new(codecType, payload.type, payload.clockRate, payload.channels); 503 504 else { 504 receivePayload = owr_video_payload_new(codecType, payload ->type(), payload->clockRate(), payload->ccmfir(), payload->nackpli());505 g_object_set(receivePayload, "rtx-payload-type", rtxPayload ? rtxPayload->type (): -1,506 "rtx-time", rtxPayload && rtxPayload->parameters ().contains("rtxTime") ? rtxPayload->parameters().get("rtxTime") : 0, nullptr);505 receivePayload = owr_video_payload_new(codecType, payload.type, payload.clockRate, payload.ccmfir, payload.nackpli); 506 g_object_set(receivePayload, "rtx-payload-type", rtxPayload ? rtxPayload->type : -1, 507 "rtx-time", rtxPayload && rtxPayload->parameters.contains("rtxTime") ? rtxPayload->parameters.get("rtxTime") : 0, nullptr); 507 508 } 508 509 -
trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp
r207897 r207952 75 75 MediaPayloadVector payloads; 76 76 77 RefPtr<MediaPayload> payload = MediaPayload::create();78 payload ->setType(111);79 payload ->setEncodingName("OPUS");80 payload ->setClockRate(48000);81 payload ->setChannels(2);82 payloads.append( payload);83 84 payload = MediaPayload::create();85 payload ->setType(8);86 payload ->setEncodingName("PCMA");87 payload ->setClockRate(8000);88 payload ->setChannels(1);89 payloads.append( payload);90 91 payload = MediaPayload::create();92 payload ->setType(0);93 payload ->setEncodingName("PCMU");94 payload ->setClockRate(8000);95 payload ->setChannels(1);96 payloads.append( payload);77 MediaPayload payload1; 78 payload1.type = 111; 79 payload1.encodingName = "OPUS"; 80 payload1.clockRate = 48000; 81 payload1.channels = 2; 82 payloads.append(WTFMove(payload1)); 83 84 MediaPayload payload2; 85 payload2.type = 8; 86 payload2.encodingName = "PCMA"; 87 payload2.clockRate = 8000; 88 payload2.channels = 1; 89 payloads.append(WTFMove(payload2)); 90 91 MediaPayload payload3; 92 payload3.type = 0; 93 payload3.encodingName = "PCMU"; 94 payload3.clockRate = 8000; 95 payload3.channels = 1; 96 payloads.append(WTFMove(payload3)); 97 97 98 98 return payloads; … … 103 103 MediaPayloadVector payloads; 104 104 105 RefPtr<MediaPayload> payload = MediaPayload::create();106 payload ->setType(103);107 payload ->setEncodingName("H264");108 payload ->setClockRate(90000);109 payload ->setCcmfir(true);110 payload ->setNackpli(true);111 payload ->addParameter("packetizationMode", 1);112 payloads.append( payload);113 114 payload = MediaPayload::create();115 payload ->setType(100);116 payload ->setEncodingName("VP8");117 payload ->setClockRate(90000);118 payload ->setCcmfir(true);119 payload ->setNackpli(true);120 payload ->setNack(true);121 payloads.append( payload);122 123 payload = MediaPayload::create();124 payload ->setType(120);125 payload ->setEncodingName("RTX");126 payload ->setClockRate(90000);127 payload ->addParameter("apt", 100);128 payload ->addParameter("rtxTime", 200);129 payloads.append( payload);105 MediaPayload payload1; 106 payload1.type = 103; 107 payload1.encodingName = "H264"; 108 payload1.clockRate = 90000; 109 payload1.ccmfir = true; 110 payload1.nackpli = true; 111 payload1.addParameter("packetizationMode", 1); 112 payloads.append(WTFMove(payload1)); 113 114 MediaPayload payload2; 115 payload2.type = 100; 116 payload2.encodingName = "VP8"; 117 payload2.clockRate = 90000; 118 payload2.ccmfir = true; 119 payload2.nackpli = true; 120 payload2.nack = true; 121 payloads.append(WTFMove(payload2)); 122 123 MediaPayload payload3; 124 payload3.type = 120; 125 payload3.encodingName = "RTX"; 126 payload3.clockRate = 90000; 127 payload3.addParameter("apt", 100); 128 payload3.addParameter("rtxTime", 200); 129 payloads.append(WTFMove(payload3)); 130 130 131 131 return payloads; … … 137 137 138 138 for (auto& remotePayload : remotePayloads) { 139 MediaPayload* defaultPayload = nullptr;139 const MediaPayload* defaultPayload = nullptr; 140 140 for (auto& payload : defaultPayloads) { 141 if (payload ->encodingName() == remotePayload->encodingName().convertToASCIIUppercase()) {142 defaultPayload = payload.get();141 if (payload.encodingName == remotePayload.encodingName.convertToASCIIUppercase()) { 142 defaultPayload = &payload; 143 143 break; 144 144 } … … 147 147 continue; 148 148 149 if (defaultPayload->parameters ().contains("packetizationMode") && remotePayload->parameters().contains("packetizationMode")150 && (defaultPayload->parameters ().get("packetizationMode") != defaultPayload->parameters().get("packetizationMode")))149 if (defaultPayload->parameters.contains("packetizationMode") && remotePayload.parameters.contains("packetizationMode") 150 && (defaultPayload->parameters.get("packetizationMode") != defaultPayload->parameters.get("packetizationMode"))) 151 151 continue; 152 152
Note: See TracChangeset
for help on using the changeset viewer.