Changeset 207952 in webkit


Ignore:
Timestamp:
Oct 27, 2016 12:31:13 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

MediaPayload does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=164015

Patch by Youenn Fablet <youenn@apple.com> on 2016-10-27
Reviewed by Eric Carlson.

No change of behavior.
Making MediaPayload a struct and no-longer ref-counted.
Small performance improvements in MediaEndpointOwr.

  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::configurationFromJSON):
(WebCore::configurationToJSON):

  • platform/mediastream/MediaEndpoint.h:
  • platform/mediastream/MediaPayload.h:

(WebCore::MediaPayload::addParameter):
(WebCore::MediaPayload::create): Deleted.
(WebCore::MediaPayload::~MediaPayload): Deleted.
(WebCore::MediaPayload::type): Deleted.
(WebCore::MediaPayload::setType): Deleted.
(WebCore::MediaPayload::encodingName): Deleted.
(WebCore::MediaPayload::setEncodingName): Deleted.
(WebCore::MediaPayload::clockRate): Deleted.
(WebCore::MediaPayload::setClockRate): Deleted.
(WebCore::MediaPayload::channels): Deleted.
(WebCore::MediaPayload::setChannels): Deleted.
(WebCore::MediaPayload::ccmfir): Deleted.
(WebCore::MediaPayload::setCcmfir): Deleted.
(WebCore::MediaPayload::nackpli): Deleted.
(WebCore::MediaPayload::setNackpli): Deleted.
(WebCore::MediaPayload::nack): Deleted.
(WebCore::MediaPayload::setNack): Deleted.
(WebCore::MediaPayload::parameters): Deleted.
(WebCore::MediaPayload::clone): Deleted.
(WebCore::MediaPayload::MediaPayload): Deleted.

  • platform/mediastream/PeerMediaDescription.h:

(WebCore::PeerMediaDescription::payloads):
(WebCore::PeerMediaDescription::addPayload):
(WebCore::PeerMediaDescription::setPayloads):
(WebCore::PeerMediaDescription::clone):

  • platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:

(WebCore::MediaEndpointOwr::getDefaultAudioPayloads):
(WebCore::MediaEndpointOwr::getDefaultVideoPayloads):
(WebCore::MediaEndpointOwr::filterPayloads):

  • platform/mock/MockMediaEndpoint.cpp:

(WebCore::MockMediaEndpoint::getDefaultAudioPayloads):
(WebCore::MockMediaEndpoint::getDefaultVideoPayloads):
(WebCore::MockMediaEndpoint::filterPayloads):

Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r207938 r207952  
     12016-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
    1522016-10-26  Dan Bernstein  <mitz@apple.com>
    253
  • trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h

    r207897 r207952  
    120120    std::unique_ptr<SDPProcessor> m_sdpProcessor;
    121121
    122     Vector<RefPtr<MediaPayload>> m_defaultAudioPayloads;
    123     Vector<RefPtr<MediaPayload>> m_defaultVideoPayloads;
     122    Vector<MediaPayload> m_defaultAudioPayloads;
     123    Vector<MediaPayload> m_defaultVideoPayloads;
    124124
    125125    String m_cname;
  • trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp

    r207897 r207952  
    224224            payloadsArray->get(j)->asObject(payloadsObject);
    225225
    226             RefPtr<MediaPayload> payload = MediaPayload::create();
     226            MediaPayload payload;
    227227
    228228            if (payloadsObject->getInteger(typeString(), intValue))
    229                 payload->setType(intValue);
     229                payload.type = intValue;
    230230
    231231            if (payloadsObject->getString(encodingNameString(), stringValue))
    232                 payload->setEncodingName(stringValue);
     232                payload.encodingName = stringValue;
    233233
    234234            if (payloadsObject->getInteger(clockRateString(), intValue))
    235                 payload->setClockRate(intValue);
     235                payload.clockRate = intValue;
    236236
    237237            if (payloadsObject->getInteger(channelsString(), intValue))
    238                 payload->setChannels(intValue);
     238                payload.channels = intValue;
    239239
    240240            if (payloadsObject->getBoolean(ccmfirString(), boolValue))
    241                 payload->setCcmfir(boolValue);
     241                payload.ccmfir = boolValue;
    242242
    243243            if (payloadsObject->getBoolean(nackpliString(), boolValue))
    244                 payload->setNackpli(boolValue);
     244                payload.nackpli = boolValue;
    245245
    246246            if (payloadsObject->getBoolean(nackString(), boolValue))
    247                 payload->setNack(boolValue);
     247                payload.nack = boolValue;
    248248
    249249            RefPtr<InspectorObject> parametersObject = InspectorObject::create();
    250250            if (payloadsObject->getObject(parametersString(), parametersObject)) {
    251251                if (parametersObject->getInteger(packetizationModeString(), intValue))
    252                     payload->addParameter("packetizationMode", intValue);
     252                    payload.addParameter("packetizationMode", intValue);
    253253
    254254                if (parametersObject->getInteger(aptString(), intValue))
    255                     payload->addParameter("apt", intValue);
     255                    payload.addParameter("apt", intValue);
    256256
    257257                if (parametersObject->getInteger(rtxTimeString(), intValue))
    258                     payload->addParameter("rtxTime", intValue);
     258                    payload.addParameter("rtxTime", intValue);
    259259            }
    260260
     
    363363        RefPtr<InspectorArray> payloadsArray = InspectorArray::create();
    364364
    365         for (RefPtr<MediaPayload> payload : mediaDescription->payloads()) {
     365        for (auto& payload : mediaDescription->payloads()) {
    366366            RefPtr<InspectorObject> payloadObject = InspectorObject::create();
    367367
    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()) {
    377377                RefPtr<InspectorObject> parametersObject = InspectorObject::create();
    378378
    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));
    381381
    382382                payloadObject->setObject(parametersString(), parametersObject);
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h

    r207897 r207952  
    4444class MediaEndpointClient;
    4545class MediaEndpointSessionConfiguration;
    46 class MediaPayload;
     46struct MediaPayload;
    4747class RealtimeMediaSource;
    4848
    4949typedef std::unique_ptr<MediaEndpoint> (*CreateMediaEndpoint)(MediaEndpointClient&);
    50 typedef Vector<RefPtr<MediaPayload>> MediaPayloadVector;
     50typedef Vector<MediaPayload> MediaPayloadVector;
    5151typedef HashMap<String, RealtimeMediaSource*> RealtimeMediaSourceMap;
    5252
  • trunk/Source/WebCore/platform/mediastream/MediaPayload.h

    r198492 r207952  
    2929 */
    3030
    31 #ifndef MediaPayload_h
    32 #define MediaPayload_h
     31#pragma once
    3332
    3433#if ENABLE(WEB_RTC)
    3534
    3635#include <wtf/HashMap.h>
    37 #include <wtf/RefCounted.h>
    38 #include <wtf/RefPtr.h>
    3936#include <wtf/text/StringHash.h>
    4037
    4138namespace WebCore {
    4239
    43 class MediaPayload : public RefCounted<MediaPayload> {
     40struct MediaPayload {
    4441public:
    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); }
    5043
    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 };
    10147
    10248    // audio
    103     unsigned m_channels { 0 };
     49    unsigned channels { 0 };
    10450
    10551    // 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 };
    10955
    110     HashMap<String, unsigned> m_parameters;
     56    HashMap<String, unsigned> parameters;
    11157};
    11258
     
    11460
    11561#endif // ENABLE(WEB_RTC)
    116 
    117 #endif // MediaPayload_h
  • trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h

    r207897 r207952  
    6565    void setMid(const String& mid) { m_mid = mid; }
    6666
    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; }
    7171
    7272    bool rtcpMux() const { return m_rtcpMux; }
     
    120120        copy->m_mid = String(m_mid);
    121121
    122         for (auto& payload : m_payloads)
    123             copy->m_payloads.append(payload->clone());
     122        copy->m_payloads = m_payloads;
    124123
    125124        copy->m_rtcpMux = m_rtcpMux;
     
    156155    String m_mid;
    157156
    158     Vector<RefPtr<MediaPayload>> m_payloads;
     157    Vector<MediaPayload> m_payloads;
    159158
    160159    bool m_rtcpMux { true };
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp

    r207897 r207952  
    111111
    112112    // 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));
    133133
    134134    return payloads;
     
    140140
    141141    // 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));
    167167
    168168    return payloads;
    169169}
    170170
    171 static bool payloadsContainType(MediaPayloadVector payloads, unsigned payloadType)
    172 {
    173     for (auto& payload : payloads) {
    174         if (payload->type() == payloadType)
     171static bool payloadsContainType(const Vector<const MediaPayload*>& payloads, unsigned payloadType)
     172{
     173    for (auto payload : payloads) {
     174        ASSERT(payload);
     175        if (payload->type == payloadType)
    175176            return true;
    176177    }
     
    180181MediaPayloadVector MediaEndpointOwr::filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads)
    181182{
    182     MediaPayloadVector filteredPayloads;
     183    Vector<const MediaPayload*> filteredPayloads;
    183184
    184185    for (auto& remotePayload : remotePayloads) {
    185         MediaPayload* defaultPayload = nullptr;
     186        const MediaPayload* defaultPayload = nullptr;
    186187        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;
    189190                break;
    190191            }
     
    193194            continue;
    194195
    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")))
    197198            continue;
    198199
    199         filteredPayloads.append(remotePayload);
     200        filteredPayloads.append(&remotePayload);
    200201    }
    201202
    202203    MediaPayloadVector filteredAptPayloads;
    203204
    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"))))
    206207            continue;
    207         filteredAptPayloads.append(filteredPayload);
     208        filteredAptPayloads.append(*filteredPayload);
    208209    }
    209210
     
    236237}
    237238
    238 static RefPtr<MediaPayload> findRtxPayload(MediaPayloadVector payloads, unsigned apt)
     239static const MediaPayload* findRtxPayload(const MediaPayloadVector& payloads, unsigned apt)
    239240{
    240241    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;
    244245    }
    245246    return nullptr;
     
    277278            continue;
    278279
    279         MediaPayload* payload = nullptr;
     280        const MediaPayload* payload = nullptr;
    280281        for (auto& p : mdesc.payloads()) {
    281             if (p->encodingName().convertToASCIIUppercase() != "RTX") {
    282                 payload = p.get();
     282            if (p.encodingName.convertToASCIIUppercase() != "RTX") {
     283                payload = &p;
    283284                break;
    284285            }
     
    288289            return UpdateResult::Failed;
    289290
    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()));
    295296
    296297        OwrPayload* sendPayload;
    297298        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);
    299300        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);
    303304        }
    304305
     
    490491
    491492    for (auto& payload : mediaDescription->payloads()) {
    492         if (payload->encodingName().convertToASCIIUppercase() == "RTX")
     493        if (payload.encodingName.convertToASCIIUppercase() == "RTX")
    493494            continue;
    494495
    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()));
    499500
    500501        OwrPayload* receivePayload;
    501502        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);
    503504        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);
    507508        }
    508509
  • trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp

    r207897 r207952  
    7575    MediaPayloadVector payloads;
    7676
    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));
    9797
    9898    return payloads;
     
    103103    MediaPayloadVector payloads;
    104104
    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));
    130130
    131131    return payloads;
     
    137137
    138138    for (auto& remotePayload : remotePayloads) {
    139         MediaPayload* defaultPayload = nullptr;
     139        const MediaPayload* defaultPayload = nullptr;
    140140        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;
    143143                break;
    144144            }
     
    147147            continue;
    148148
    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")))
    151151            continue;
    152152
Note: See TracChangeset for help on using the changeset viewer.