Changeset 269764 in webkit


Ignore:
Timestamp:
Nov 12, 2020 11:20:19 PM (20 months ago)
Author:
youenn@apple.com
Message:

Add infrastructure for WebRTC transforms
https://bugs.webkit.org/show_bug.cgi?id=218750

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Make sure buffer is owned by the encoded image object.

  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/sdk/WebKit/WebKitEncoder.h:
  • Source/webrtc/sdk/WebKit/WebKitEncoder.mm:

(webrtc::encoderVideoTaskComplete):

Source/WebCore:

Introduce RTCRtpTransform behind a preference.
Add binding code with libwebrtc to be able to process encoded content in sender and receiver sides.
Add a mock transform to validate the infrastructure is working.

Test: webrtc/webrtc-transform.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediastream/RTCRtpReceiver+Transform.idl: Added.
  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::~RTCRtpReceiver):
(WebCore::RTCRtpReceiver::stop):
(WebCore::RTCRtpReceiver::setTransform):

  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpReceiverBackend.h:
  • Modules/mediastream/RTCRtpReceiverWithTransform.h: Added.

(WebCore::RTCRtpReceiverWithTransform::transform):
(WebCore::RTCRtpReceiverWithTransform::setTransform):

  • Modules/mediastream/RTCRtpSender+Transform.idl: Added.
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::~RTCRtpSender):
(WebCore::RTCRtpSender::stop):
(WebCore::RTCRtpSender::setTransform):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/RTCRtpSenderWithTransform.h: Added.

(WebCore::RTCRtpSenderWithTransform::transform):
(WebCore::RTCRtpSenderWithTransform::setTransform):

  • Modules/mediastream/RTCRtpTransform.cpp: Added.

(WebCore::RTCRtpTransform::~RTCRtpTransform):
(WebCore::RTCRtpTransform::attachToReceiver):
(WebCore::RTCRtpTransform::attachToSender):
(WebCore::RTCRtpTransform::detachFromReceiver):
(WebCore::RTCRtpTransform::detachFromSender):

  • Modules/mediastream/RTCRtpTransform.h: Added.
  • Modules/mediastream/RTCRtpTransform.idl: Added.
  • Modules/mediastream/RTCRtpTransformBackend.h: Added.
  • Modules/mediastream/RTCRtpTransformableFrame.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:

(WebCore::LibWebRTCRtpReceiverBackend::createRTCRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.cpp: Added.

(WebCore::mediaTypeFromReceiver):
(WebCore::LibWebRTCRtpReceiverTransformBackend::LibWebRTCRtpReceiverTransformBackend):
(WebCore::LibWebRTCRtpReceiverTransformBackend::~LibWebRTCRtpReceiverTransformBackend):
(WebCore::LibWebRTCRtpReceiverTransformBackend::setTransformableFrameCallback):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::createRTCRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp: Added.

(WebCore::mediaTypeFromSender):
(WebCore::LibWebRTCRtpSenderTransformBackend::LibWebRTCRtpSenderTransformBackend):
(WebCore::LibWebRTCRtpSenderTransformBackend::~LibWebRTCRtpSenderTransformBackend):
(WebCore::LibWebRTCRtpSenderTransformBackend::setTransformableFrameCallback):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp: Added.

(WebCore::LibWebRTCRtpTransformBackend::setInputCallback):
(WebCore::LibWebRTCRtpTransformBackend::clearTransformableFrameCallback):
(WebCore::LibWebRTCRtpTransformBackend::setOutputCallback):
(WebCore::LibWebRTCRtpTransformBackend::processTransformedFrame):
(WebCore::LibWebRTCRtpTransformBackend::Transform):
(WebCore::LibWebRTCRtpTransformBackend::RegisterTransformedFrameCallback):
(WebCore::LibWebRTCRtpTransformBackend::RegisterTransformedFrameSinkCallback):
(WebCore::LibWebRTCRtpTransformBackend::UnregisterTransformedFrameCallback):
(WebCore::LibWebRTCRtpTransformBackend::UnregisterTransformedFrameSinkCallback):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.h: Added.

(WebCore::LibWebRTCRtpTransformBackend::LibWebRTCRtpTransformBackend):
(WebCore::LibWebRTCRtpTransformBackend::Release const):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.h: Added.

(WebCore::LibWebRTCRtpTransformableFrame::LibWebRTCRtpTransformableFrame):
(WebCore::LibWebRTCRtpTransformableFrame::toRTCFrame):
(WebCore::LibWebRTCRtpTransformableFrame::data const):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • testing/Internals.cpp:

(WebCore::Internals::createMockRTCRtpTransform):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/MockRTCRtpTransform.cpp: Added.

(WebCore::MockRTCRtpTransformer::create):
(WebCore::MockRTCRtpTransformer::clear):
(WebCore::MockRTCRtpTransformer::transform):
(WebCore::MockRTCRtpTransformer::isProcessing const):
(WebCore::MockRTCRtpTransformer::MockRTCRtpTransformer):
(WebCore::MockRTCRtpTransform::MockRTCRtpTransform):
(WebCore::MockRTCRtpTransform::~MockRTCRtpTransform):
(WebCore::MockRTCRtpTransform::isProcessing const):
(WebCore::MockRTCRtpTransform::initializeBackendForReceiver):
(WebCore::MockRTCRtpTransform::initializeBackendForSender):
(WebCore::MockRTCRtpTransform::willClearBackend):

  • testing/MockRTCRtpTransform.h: Added.
  • testing/MockRTCRtpTransform.idl: Added.

Source/WebKit:

Remove no longer needed const casting.

  • Configurations/WebKit.xcconfig:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::completedEncoding):

Source/WTF:

Add an experimental preference for WebRTC transforms.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • webrtc/webrtc-transform-expected.txt: Added.
  • webrtc/webrtc-transform.html: Added.
Location:
trunk
Files:
14 added
34 edited
7 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r269761 r269764  
     12020-11-12  Youenn Fablet  <youenn@apple.com>
     2
     3        Add infrastructure for WebRTC transforms
     4        https://bugs.webkit.org/show_bug.cgi?id=218750
     5
     6        Reviewed by Eric Carlson.
     7
     8        * webrtc/webrtc-transform-expected.txt: Added.
     9        * webrtc/webrtc-transform.html: Added.
     10
    1112020-11-12  Truitt Savell  <tsavell@apple.com>
    212
  • trunk/Source/ThirdParty/libwebrtc/ChangeLog

    r269642 r269764  
     12020-11-12  Youenn Fablet  <youenn@apple.com>
     2
     3        Add infrastructure for WebRTC transforms
     4        https://bugs.webkit.org/show_bug.cgi?id=218750
     5
     6        Reviewed by Eric Carlson.
     7
     8        Make sure buffer is owned by the encoded image object.
     9
     10        * Configurations/libwebrtc.mac.exp:
     11        * Source/webrtc/sdk/WebKit/WebKitEncoder.h:
     12        * Source/webrtc/sdk/WebKit/WebKitEncoder.mm:
     13        (webrtc::encoderVideoTaskComplete):
     14
    1152020-11-10  Youenn Fablet  <youenn@apple.com> and Victor M Jaquez <vjaquez@igalia.com>
    216
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp

    r269642 r269764  
    230230__ZN6webrtc19setDecoderFrameSizeEPvtt
    231231__ZN6webrtc18RtpCodecCapabilityC1Ev
    232 __ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPhmRKNS_22WebKitEncodedFrameInfoE
     232__ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPKhmRKNS_22WebKitEncodedFrameInfoE
    233233__ZN6webrtc24setVideoEncoderCallbacksEPFPvRKNS_14SdpVideoFormatEEPFiS0_EPFiS0_RKNS_10VideoCodecEEPFiS0_RKNS_10VideoFrameEbEPFiS0_S0_EPFvS0_RKNS_12VideoEncoder21RateControlParametersEE
    234234__ZN6webrtc20setLocalEncoderRatesEPvjj
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp

    r269642 r269764  
    230230__ZN6webrtc19setDecoderFrameSizeEPvtt
    231231__ZN6webrtc18RtpCodecCapabilityC1Ev
    232 __ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPhmRKNS_22WebKitEncodedFrameInfoE
     232__ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPKhmRKNS_22WebKitEncodedFrameInfoE
    233233__ZN6webrtc24setVideoEncoderCallbacksEPFPvRKNS_14SdpVideoFormatEEPFiS0_EPFiS0_RKNS_10VideoCodecEEPFiS0_RKNS_10VideoFrameEbEPFiS0_S0_EPFvS0_RKNS_12VideoEncoder21RateControlParametersEE
    234234__ZN6webrtc20setLocalEncoderRatesEPvjj
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp

    r269642 r269764  
    230230__ZN6webrtc19setDecoderFrameSizeEPvtt
    231231__ZN6webrtc18RtpCodecCapabilityC1Ev
    232 __ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPhmRKNS_22WebKitEncodedFrameInfoE
     232__ZN6webrtc24encoderVideoTaskCompleteEPvNS_14VideoCodecTypeEPKhmRKNS_22WebKitEncodedFrameInfoE
    233233__ZN6webrtc24setVideoEncoderCallbacksEPFPvRKNS_14SdpVideoFormatEEPFiS0_EPFiS0_RKNS_10VideoCodecEEPFiS0_RKNS_10VideoFrameEbEPFiS0_S0_EPFvS0_RKNS_12VideoEncoder21RateControlParametersEE
    234234__ZN6webrtc20setLocalEncoderRatesEPvjj
  • trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.h

    r269642 r269764  
    8181void setLocalEncoderRates(LocalEncoder, uint32_t bitRate, uint32_t frameRate);
    8282void setLocalEncoderLowLatency(LocalEncoder, bool isLowLatencyEnabled);
    83 void encoderVideoTaskComplete(void*, webrtc::VideoCodecType, uint8_t* buffer, size_t length, const WebKitEncodedFrameInfo&);
     83void encoderVideoTaskComplete(void*, webrtc::VideoCodecType, const uint8_t* buffer, size_t length, const WebKitEncodedFrameInfo&);
    8484
    8585template<class Decoder>
  • trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.mm

    r269642 r269764  
    291291}
    292292
    293 void encoderVideoTaskComplete(void* callback, webrtc::VideoCodecType codecType, uint8_t* buffer, size_t length, const WebKitEncodedFrameInfo& info)
    294 {
    295     webrtc::EncodedImage encodedImage(buffer, length, length);
     293void encoderVideoTaskComplete(void* callback, webrtc::VideoCodecType codecType, const uint8_t* buffer, size_t length, const WebKitEncodedFrameInfo& info)
     294{
     295    webrtc::EncodedImage encodedImage;
     296    encodedImage.SetEncodedData(EncodedImageBuffer::Create(buffer, length));
     297
    296298    encodedImage._encodedWidth = info.width;
    297299    encodedImage._encodedHeight = info.height;
  • trunk/Source/WTF/ChangeLog

    r269760 r269764  
     12020-11-12  Youenn Fablet  <youenn@apple.com>
     2
     3        Add infrastructure for WebRTC transforms
     4        https://bugs.webkit.org/show_bug.cgi?id=218750
     5
     6        Reviewed by Eric Carlson.
     7
     8        Add an experimental preference for WebRTC transforms.
     9
     10        * Scripts/Preferences/WebPreferencesExperimental.yaml:
     11
    1122020-11-12  Sam Weinig  <weinig@apple.com>
    213
  • trunk/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml

    r269712 r269764  
    985985      default: false
    986986
     987WebRTCInsertableStreamsEnabled:
     988  type: bool
     989  condition: ENABLE(WEB_RTC)
     990  humanReadableName: "WebRTC Insertable Streams API"
     991  humanReadableDescription: "Enable WebRTC Insertable Streams API"
     992  defaultValue:
     993    WebKitLegacy:
     994      default: false
     995    WebKit:
     996      default: false
     997    WebCore:
     998      default: false
     999
    9871000# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
    9881001WebRTCPlatformCodecsInGPUProcessEnabled:
  • trunk/Source/WebCore/CMakeLists.txt

    r269612 r269764  
    400400    Modules/mediastream/RTCRtpHeaderExtensionParameters.idl
    401401    Modules/mediastream/RTCRtpParameters.idl
     402    Modules/mediastream/RTCRtpReceiver+Transform.idl
    402403    Modules/mediastream/RTCRtpReceiver.idl
    403404    Modules/mediastream/RTCRtpRtxParameters.idl
    404405    Modules/mediastream/RTCRtpSendParameters.idl
     406    Modules/mediastream/RTCRtpSender+Transform.idl
    405407    Modules/mediastream/RTCRtpSender.idl
    406408    Modules/mediastream/RTCRtpSynchronizationSource.idl
    407409    Modules/mediastream/RTCRtpTransceiver.idl
    408410    Modules/mediastream/RTCRtpTransceiverDirection.idl
     411    Modules/mediastream/RTCRtpTransform.idl
    409412    Modules/mediastream/RTCSdpType.idl
    410413    Modules/mediastream/RTCSessionDescription.idl
     
    17501753    testing/MockContentFilterSettings.idl
    17511754    testing/MockPageOverlay.idl
     1755    testing/MockRTCRtpTransform.idl
    17521756    testing/ServiceWorkerInternals.idl
    17531757    testing/TypeConversions.idl
     
    17731777    testing/MockPageOverlay.cpp
    17741778    testing/MockPageOverlayClient.cpp
     1779    testing/MockRTCRtpTransform.cpp
    17751780    testing/ServiceWorkerInternals.cpp
    17761781    testing/js/WebCoreTestSupport.cpp
  • trunk/Source/WebCore/ChangeLog

    r269762 r269764  
     12020-11-12  Youenn Fablet  <youenn@apple.com>
     2
     3        Add infrastructure for WebRTC transforms
     4        https://bugs.webkit.org/show_bug.cgi?id=218750
     5
     6        Reviewed by Eric Carlson.
     7
     8        Introduce RTCRtpTransform behind a preference.
     9        Add binding code with libwebrtc to be able to process encoded content in sender and receiver sides.
     10        Add a mock transform to validate the infrastructure is working.
     11
     12        Test: webrtc/webrtc-transform.html
     13
     14        * CMakeLists.txt:
     15        * DerivedSources-input.xcfilelist:
     16        * DerivedSources-output.xcfilelist:
     17        * DerivedSources.make:
     18        * Modules/mediastream/RTCRtpReceiver+Transform.idl: Added.
     19        * Modules/mediastream/RTCRtpReceiver.cpp:
     20        (WebCore::RTCRtpReceiver::~RTCRtpReceiver):
     21        (WebCore::RTCRtpReceiver::stop):
     22        (WebCore::RTCRtpReceiver::setTransform):
     23        * Modules/mediastream/RTCRtpReceiver.h:
     24        * Modules/mediastream/RTCRtpReceiverBackend.h:
     25        * Modules/mediastream/RTCRtpReceiverWithTransform.h: Added.
     26        (WebCore::RTCRtpReceiverWithTransform::transform):
     27        (WebCore::RTCRtpReceiverWithTransform::setTransform):
     28        * Modules/mediastream/RTCRtpSender+Transform.idl: Added.
     29        * Modules/mediastream/RTCRtpSender.cpp:
     30        (WebCore::RTCRtpSender::~RTCRtpSender):
     31        (WebCore::RTCRtpSender::stop):
     32        (WebCore::RTCRtpSender::setTransform):
     33        * Modules/mediastream/RTCRtpSender.h:
     34        * Modules/mediastream/RTCRtpSenderBackend.h:
     35        * Modules/mediastream/RTCRtpSenderWithTransform.h: Added.
     36        (WebCore::RTCRtpSenderWithTransform::transform):
     37        (WebCore::RTCRtpSenderWithTransform::setTransform):
     38        * Modules/mediastream/RTCRtpTransform.cpp: Added.
     39        (WebCore::RTCRtpTransform::~RTCRtpTransform):
     40        (WebCore::RTCRtpTransform::attachToReceiver):
     41        (WebCore::RTCRtpTransform::attachToSender):
     42        (WebCore::RTCRtpTransform::detachFromReceiver):
     43        (WebCore::RTCRtpTransform::detachFromSender):
     44        * Modules/mediastream/RTCRtpTransform.h: Added.
     45        * Modules/mediastream/RTCRtpTransform.idl: Added.
     46        * Modules/mediastream/RTCRtpTransformBackend.h: Added.
     47        * Modules/mediastream/RTCRtpTransformableFrame.h: Added.
     48        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
     49        (WebCore::LibWebRTCRtpReceiverBackend::createRTCRtpTransformBackend):
     50        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
     51        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.cpp: Added.
     52        (WebCore::mediaTypeFromReceiver):
     53        (WebCore::LibWebRTCRtpReceiverTransformBackend::LibWebRTCRtpReceiverTransformBackend):
     54        (WebCore::LibWebRTCRtpReceiverTransformBackend::~LibWebRTCRtpReceiverTransformBackend):
     55        (WebCore::LibWebRTCRtpReceiverTransformBackend::setTransformableFrameCallback):
     56        * Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.h: Added.
     57        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
     58        (WebCore::LibWebRTCRtpSenderBackend::createRTCRtpTransformBackend):
     59        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
     60        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp: Added.
     61        (WebCore::mediaTypeFromSender):
     62        (WebCore::LibWebRTCRtpSenderTransformBackend::LibWebRTCRtpSenderTransformBackend):
     63        (WebCore::LibWebRTCRtpSenderTransformBackend::~LibWebRTCRtpSenderTransformBackend):
     64        (WebCore::LibWebRTCRtpSenderTransformBackend::setTransformableFrameCallback):
     65        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.h: Added.
     66        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp: Added.
     67        (WebCore::LibWebRTCRtpTransformBackend::setInputCallback):
     68        (WebCore::LibWebRTCRtpTransformBackend::clearTransformableFrameCallback):
     69        (WebCore::LibWebRTCRtpTransformBackend::setOutputCallback):
     70        (WebCore::LibWebRTCRtpTransformBackend::processTransformedFrame):
     71        (WebCore::LibWebRTCRtpTransformBackend::Transform):
     72        (WebCore::LibWebRTCRtpTransformBackend::RegisterTransformedFrameCallback):
     73        (WebCore::LibWebRTCRtpTransformBackend::RegisterTransformedFrameSinkCallback):
     74        (WebCore::LibWebRTCRtpTransformBackend::UnregisterTransformedFrameCallback):
     75        (WebCore::LibWebRTCRtpTransformBackend::UnregisterTransformedFrameSinkCallback):
     76        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.h: Added.
     77        (WebCore::LibWebRTCRtpTransformBackend::LibWebRTCRtpTransformBackend):
     78        (WebCore::LibWebRTCRtpTransformBackend::Release const):
     79        * Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.h: Added.
     80        (WebCore::LibWebRTCRtpTransformableFrame::LibWebRTCRtpTransformableFrame):
     81        (WebCore::LibWebRTCRtpTransformableFrame::toRTCFrame):
     82        (WebCore::LibWebRTCRtpTransformableFrame::data const):
     83        * Sources.txt:
     84        * WebCore.xcodeproj/project.pbxproj:
     85        * bindings/js/WebCoreBuiltinNames.h:
     86        * bindings/scripts/CodeGeneratorJS.pm:
     87        (GenerateHeader):
     88        * bindings/scripts/test/JS/JSTestInterface.h:
     89        * testing/Internals.cpp:
     90        (WebCore::Internals::createMockRTCRtpTransform):
     91        * testing/Internals.h:
     92        * testing/Internals.idl:
     93        * testing/MockRTCRtpTransform.cpp: Added.
     94        (WebCore::MockRTCRtpTransformer::create):
     95        (WebCore::MockRTCRtpTransformer::clear):
     96        (WebCore::MockRTCRtpTransformer::transform):
     97        (WebCore::MockRTCRtpTransformer::isProcessing const):
     98        (WebCore::MockRTCRtpTransformer::MockRTCRtpTransformer):
     99        (WebCore::MockRTCRtpTransform::MockRTCRtpTransform):
     100        (WebCore::MockRTCRtpTransform::~MockRTCRtpTransform):
     101        (WebCore::MockRTCRtpTransform::isProcessing const):
     102        (WebCore::MockRTCRtpTransform::initializeBackendForReceiver):
     103        (WebCore::MockRTCRtpTransform::initializeBackendForSender):
     104        (WebCore::MockRTCRtpTransform::willClearBackend):
     105        * testing/MockRTCRtpTransform.h: Added.
     106        * testing/MockRTCRtpTransform.idl: Added.
     107
    11082020-11-12  Joonghun Park  <jh718.park@samsung.com>
    2109
  • trunk/Source/WebCore/DerivedSources-input.xcfilelist

    r269612 r269764  
    130130$(PROJECT_DIR)/Modules/geolocation/PositionErrorCallback.idl
    131131$(PROJECT_DIR)/Modules/geolocation/PositionOptions.idl
     132$(PROJECT_DIR)/Modules/highlight/Highlight.idl
    132133$(PROJECT_DIR)/Modules/highlight/HighlightRegister.idl
    133 $(PROJECT_DIR)/Modules/highlight/Highlight.idl
    134134$(PROJECT_DIR)/Modules/indexeddb/DOMWindow+IndexedDatabase.idl
    135135$(PROJECT_DIR)/Modules/indexeddb/IDBCursor.idl
     
    234234$(PROJECT_DIR)/Modules/mediastream/RTCRtpHeaderExtensionParameters.idl
    235235$(PROJECT_DIR)/Modules/mediastream/RTCRtpParameters.idl
     236$(PROJECT_DIR)/Modules/mediastream/RTCRtpReceiver+Transform.idl
    236237$(PROJECT_DIR)/Modules/mediastream/RTCRtpReceiver.idl
    237238$(PROJECT_DIR)/Modules/mediastream/RTCRtpRtxParameters.idl
    238239$(PROJECT_DIR)/Modules/mediastream/RTCRtpSendParameters.idl
     240$(PROJECT_DIR)/Modules/mediastream/RTCRtpSender+Transform.idl
    239241$(PROJECT_DIR)/Modules/mediastream/RTCRtpSender.idl
    240242$(PROJECT_DIR)/Modules/mediastream/RTCRtpSynchronizationSource.idl
    241243$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransceiver.idl
    242244$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransceiverDirection.idl
     245$(PROJECT_DIR)/Modules/mediastream/RTCRtpTransform.idl
    243246$(PROJECT_DIR)/Modules/mediastream/RTCSdpType.idl
    244247$(PROJECT_DIR)/Modules/mediastream/RTCSessionDescription.idl
     
    290293$(PROJECT_DIR)/Modules/remoteplayback/RemotePlayback.idl
    291294$(PROJECT_DIR)/Modules/remoteplayback/RemotePlaybackAvailabilityCallback.idl
     295$(PROJECT_DIR)/Modules/speech/DOMWindow+SpeechSynthesis.idl
    292296$(PROJECT_DIR)/Modules/speech/SpeechRecognition.idl
    293297$(PROJECT_DIR)/Modules/speech/SpeechRecognitionAlternative.idl
     
    297301$(PROJECT_DIR)/Modules/speech/SpeechRecognitionResult.idl
    298302$(PROJECT_DIR)/Modules/speech/SpeechRecognitionResultList.idl
    299 $(PROJECT_DIR)/Modules/speech/DOMWindow+SpeechSynthesis.idl
    300303$(PROJECT_DIR)/Modules/speech/SpeechSynthesis.idl
    301304$(PROJECT_DIR)/Modules/speech/SpeechSynthesisEvent.idl
     
    13021305$(PROJECT_DIR)/testing/MockPaymentCoordinator.idl
    13031306$(PROJECT_DIR)/testing/MockPaymentError.idl
     1307$(PROJECT_DIR)/testing/MockRTCRtpTransform.idl
    13041308$(PROJECT_DIR)/testing/MockWebAuthenticationConfiguration.idl
    13051309$(PROJECT_DIR)/testing/ServiceWorkerInternals.idl
  • trunk/Source/WebCore/DerivedSources-output.xcfilelist

    r269612 r269764  
    11061106$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHdrMetadataType.cpp
    11071107$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHdrMetadataType.h
     1108$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlight.cpp
     1109$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlight.h
    11081110$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlightRegister.cpp
    11091111$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlightRegister.h
    1110 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlight.cpp
    1111 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHighlight.h
    11121112$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHistory.cpp
    11131113$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSHistory.h
     
    13421342$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockPaymentError.cpp
    13431343$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockPaymentError.h
     1344$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockRTCRtpTransform.cpp
     1345$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockRTCRtpTransform.h
    13441346$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockWebAuthenticationConfiguration.cpp
    13451347$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMockWebAuthenticationConfiguration.h
     
    16981700$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpParameters.cpp
    16991701$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpParameters.h
     1702$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpReceiver+Transform.cpp
     1703$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpReceiver+Transform.h
    17001704$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpReceiver.cpp
    17011705$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpReceiver.h
     
    17041708$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSendParameters.cpp
    17051709$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSendParameters.h
     1710$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSender+Transform.cpp
     1711$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSender+Transform.h
    17061712$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSender.cpp
    17071713$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpSender.h
     
    17121718$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransceiverDirection.cpp
    17131719$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransceiverDirection.h
     1720$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransform.cpp
     1721$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCRtpTransform.h
    17141722$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSdpType.cpp
    17151723$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSRTCSdpType.h
  • trunk/Source/WebCore/DerivedSources.make

    r269612 r269764  
    259259    $(WebCore)/Modules/mediastream/RTCRtpParameters.idl \
    260260    $(WebCore)/Modules/mediastream/RTCRtpReceiver.idl \
     261    $(WebCore)/Modules/mediastream/RTCRtpReceiver+Transform.idl \
    261262    $(WebCore)/Modules/mediastream/RTCRtpRtxParameters.idl \
    262263    $(WebCore)/Modules/mediastream/RTCRtpSendParameters.idl \
    263264    $(WebCore)/Modules/mediastream/RTCRtpSender.idl \
     265    $(WebCore)/Modules/mediastream/RTCRtpSender+Transform.idl \
    264266    $(WebCore)/Modules/mediastream/RTCRtpSynchronizationSource.idl \
    265267    $(WebCore)/Modules/mediastream/RTCRtpTransceiver.idl \
    266268    $(WebCore)/Modules/mediastream/RTCRtpTransceiverDirection.idl \
     269    $(WebCore)/Modules/mediastream/RTCRtpTransform.idl \
    267270    $(WebCore)/Modules/mediastream/RTCSdpType.idl \
    268271    $(WebCore)/Modules/mediastream/RTCSessionDescription.idl \
     
    12271230    $(WebCore)/testing/MockPaymentCoordinator.idl \
    12281231    $(WebCore)/testing/MockPaymentError.idl \
     1232    $(WebCore)/testing/MockRTCRtpTransform.idl \
    12291233    $(WebCore)/testing/MockWebAuthenticationConfiguration.idl \
    12301234    $(WebCore)/testing/ServiceWorkerInternals.idl \
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiver.cpp

    r251134 r269764  
    5050}
    5151
     52RTCRtpReceiver::~RTCRtpReceiver()
     53{
     54    if (m_transform)
     55        m_transform->detachFromReceiver(*this);
     56}
     57
    5258void RTCRtpReceiver::stop()
    5359{
    5460    if (!m_backend)
    5561        return;
     62
     63    if (m_transform)
     64        m_transform->detachFromReceiver(*this);
    5665
    5766    m_backend = nullptr;
     
    7382}
    7483
     84ExceptionOr<void> RTCRtpReceiver::setTransform(RefPtr<RTCRtpTransform>&& transform)
     85{
     86    if (transform && transform->isAttached())
     87        return Exception { InvalidStateError, "transform is already in use"_s };
     88
     89    if (m_transform)
     90        m_transform->detachFromReceiver(*this);
     91    m_transform = WTFMove(transform);
     92    if (m_transform)
     93        m_transform->attachToReceiver(*this);
     94
     95    return { };
     96}
     97
    7598} // namespace WebCore
    7699
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiver.h

    r250735 r269764  
    3636#include "RTCRtpReceiverBackend.h"
    3737#include "RTCRtpSynchronizationSource.h"
     38#include "RTCRtpTransform.h"
    3839#include "ScriptWrappable.h"
    3940
     
    5152        return adoptRef(*new RTCRtpReceiver(connection, WTFMove(track), WTFMove(backend)));
    5253    }
     54    ~RTCRtpReceiver();
    5355
    5456    static Optional<RTCRtpCapabilities> getCapabilities(ScriptExecutionContext&, const String& kind);
     
    6668    void getStats(Ref<DeferredPromise>&&);
    6769
     70    RTCRtpTransform* transform() { return m_transform.get(); }
     71    ExceptionOr<void> setTransform(RefPtr<RTCRtpTransform>&&);
     72
    6873private:
    6974    RTCRtpReceiver(PeerConnectionBackend&, Ref<MediaStreamTrack>&&, std::unique_ptr<RTCRtpReceiverBackend>&&);
     
    7277    std::unique_ptr<RTCRtpReceiverBackend> m_backend;
    7378    WeakPtr<PeerConnectionBackend> m_connection;
     79    RefPtr<RTCRtpTransform> m_transform;
    7480};
    7581
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiverBackend.h

    r236147 r269764  
    3232namespace WebCore {
    3333
     34class RTCRtpTransformBackend;
     35
    3436class RTCRtpReceiverBackend {
    3537public:
     
    3840    virtual Vector<RTCRtpContributingSource> getContributingSources() const { return { }; }
    3941    virtual Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const { return { }; }
     42    virtual Ref<RTCRtpTransformBackend> createRTCRtpTransformBackend() = 0;
    4043};
    4144
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp

    r266468 r269764  
    6767}
    6868
    69 RTCRtpSender::~RTCRtpSender() = default;
     69RTCRtpSender::~RTCRtpSender()
     70{
     71    if (m_transform)
     72        m_transform->detachFromSender(*this);
     73}
    7074
    7175void RTCRtpSender::setTrackToNull()
     
    7882void RTCRtpSender::stop()
    7983{
     84    if (m_transform)
     85        m_transform->detachFromSender(*this);
     86
    8087    m_trackId = { };
    8188    m_track = nullptr;
     
    187194}
    188195
     196ExceptionOr<void> RTCRtpSender::setTransform(RefPtr<RTCRtpTransform>&& transform)
     197{
     198    if (transform && transform->isAttached())
     199        return Exception { InvalidStateError, "transform is already in use"_s };
     200
     201    if (m_transform)
     202        m_transform->detachFromSender(*this);
     203    m_transform = WTFMove(transform);
     204    if (m_transform)
     205        m_transform->attachToSender(*this);
     206
     207    return { };
     208}
     209
    189210} // namespace WebCore
    190211
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h

    r266468 r269764  
    3737#include "RTCRtpSenderBackend.h"
    3838#include "RTCRtpTransceiverDirection.h"
     39#include "RTCRtpTransform.h"
    3940#include "ScriptWrappable.h"
    4041#include <wtf/WeakPtr.h>
     
    8283    Optional<RTCRtpTransceiverDirection> currentTransceiverDirection() const;
    8384
     85    RTCRtpTransform* transform() { return m_transform.get(); }
     86    ExceptionOr<void> setTransform(RefPtr<RTCRtpTransform>&&);
     87
    8488private:
    8589    RTCRtpSender(RTCPeerConnection&, String&& trackKind, Vector<String>&& mediaStreamIds, std::unique_ptr<RTCRtpSenderBackend>&&);
     
    9296    WeakPtr<RTCPeerConnection> m_connection;
    9397    RefPtr<RTCDTMFSender> m_dtmfSender;
     98    RefPtr<RTCRtpTransform> m_transform;
    9499};
    95100
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpSenderBackend.h

    r266468 r269764  
    3232class RTCDTMFSenderBackend;
    3333class RTCRtpSender;
     34class RTCRtpTransformBackend;
    3435class ScriptExecutionContext;
    3536
     
    4041class RTCRtpSenderBackend {
    4142public:
     43    virtual ~RTCRtpSenderBackend() = default;
     44
    4245    virtual bool replaceTrack(RTCRtpSender&, MediaStreamTrack*) = 0;
    4346    virtual RTCRtpSendParameters getParameters() const = 0;
    4447    virtual void setParameters(const RTCRtpSendParameters&, DOMPromiseDeferred<void>&&) = 0;
    4548    virtual std::unique_ptr<RTCDTMFSenderBackend> createDTMFBackend() = 0;
    46     virtual ~RTCRtpSenderBackend() = default;
     49    virtual Ref<RTCRtpTransformBackend> createRTCRtpTransformBackend() = 0;
    4750};
    4851
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpTransformBackend.h

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#if ENABLE(WEB_RTC)
    2828
     29#include <wtf/ThreadSafeRefCounted.h>
     30
    2931namespace WebCore {
    3032
    31 class MediaStreamTrack;
    32 class RTCDTMFSenderBackend;
    33 class RTCRtpSender;
    34 class ScriptExecutionContext;
     33class RTCRtpTransformableFrame;
    3534
    36 struct RTCRtpSendParameters;
     35class RTCRtpTransformBackend : public ThreadSafeRefCounted<RTCRtpTransformBackend, WTF::DestructionThread::Main> {
     36public:
     37    virtual ~RTCRtpTransformBackend() = default;
    3738
    38 template<typename IDLType> class DOMPromiseDeferred;
     39    using Callback = Function<void(RTCRtpTransformableFrame&&)>;
     40    virtual void setTransformableFrameCallback(Callback&&) = 0;
     41    virtual void clearTransformableFrameCallback() = 0;
     42    virtual void processTransformedFrame(RTCRtpTransformableFrame&&) = 0;
    3943
    40 class RTCRtpSenderBackend {
    41 public:
    42     virtual bool replaceTrack(RTCRtpSender&, MediaStreamTrack*) = 0;
    43     virtual RTCRtpSendParameters getParameters() const = 0;
    44     virtual void setParameters(const RTCRtpSendParameters&, DOMPromiseDeferred<void>&&) = 0;
    45     virtual std::unique_ptr<RTCDTMFSenderBackend> createDTMFBackend() = 0;
    46     virtual ~RTCRtpSenderBackend() = default;
     44    enum class MediaType { Audio, Video };
     45    virtual MediaType mediaType() const = 0;
     46
     47    enum class Side { Sender, Receiver };
     48    virtual Side side() const = 0;
    4749};
    4850
  • trunk/Source/WebCore/Modules/mediastream/RTCRtpTransformableFrame.h

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#if ENABLE(WEB_RTC)
    2828
    29 #include "RTCRtpParameters.h"
    30 #include "RTCRtpSynchronizationSource.h"
    31 
    3229namespace WebCore {
    3330
    34 class RTCRtpReceiverBackend {
     31class RTCRtpTransformableFrame {
    3532public:
    36     virtual ~RTCRtpReceiverBackend() = default;
    37     virtual RTCRtpParameters getParameters() { return { }; }
    38     virtual Vector<RTCRtpContributingSource> getContributingSources() const { return { }; }
    39     virtual Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const { return { }; }
     33    virtual ~RTCRtpTransformableFrame() = default;
     34
     35    struct Data {
     36        const uint8_t* data;
     37        size_t size;
     38    };
     39    virtual Data data() const = 0;
     40    virtual void setData(Data) = 0;
    4041};
    4142
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp

    r267566 r269764  
    2626#include "LibWebRTCRtpReceiverBackend.h"
    2727
     28#include "LibWebRTCRtpReceiverTransformBackend.h"
    2829#include "LibWebRTCUtils.h"
     30#include "RTCRtpTransformBackend.h"
    2931#include "RealtimeIncomingAudioSource.h"
    3032#include "RealtimeIncomingVideoSource.h"
     
    115117}
    116118
     119Ref<RTCRtpTransformBackend> LibWebRTCRtpReceiverBackend::createRTCRtpTransformBackend()
     120{
     121    return LibWebRTCRtpReceiverTransformBackend::create(m_rtcReceiver);
     122}
    117123
    118124} // namespace WebCore
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h

    r267566 r269764  
    5353    Vector<RTCRtpContributingSource> getContributingSources() const final;
    5454    Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const final;
     55    Ref<RTCRtpTransformBackend> createRTCRtpTransformBackend() final;
    5556
    5657    rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_rtcReceiver;
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.cpp

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2323 */
    2424
    25 #pragma once
     25#include "config.h"
     26#include "LibWebRTCRtpReceiverTransformBackend.h"
    2627
    2728#if ENABLE(WEB_RTC) && USE(LIBWEBRTC)
    2829
    29 #include "LibWebRTCMacros.h"
    30 #include "RTCRtpReceiverBackend.h"
    31 #include <webrtc/api/scoped_refptr.h>
    32 
    33 namespace webrtc {
    34 class RtpReceiverInterface;
    35 }
     30#include "LibWebRTCRtpTransformableFrame.h"
    3631
    3732namespace WebCore {
    3833
    39 class RealtimeMediaSource;
     34static inline LibWebRTCRtpReceiverTransformBackend::MediaType mediaTypeFromReceiver(const webrtc::RtpReceiverInterface& receiver)
     35{
     36    return receiver.media_type() == cricket::MEDIA_TYPE_AUDIO ? RTCRtpTransformBackend::MediaType::Audio : RTCRtpTransformBackend::MediaType::Video;
     37}
    4038
    41 class LibWebRTCRtpReceiverBackend final : public RTCRtpReceiverBackend {
    42     WTF_MAKE_FAST_ALLOCATED;
    43 public:
    44     explicit LibWebRTCRtpReceiverBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface>&&);
    45     ~LibWebRTCRtpReceiverBackend();
     39LibWebRTCRtpReceiverTransformBackend::LibWebRTCRtpReceiverTransformBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface> rtcReceiver)
     40    : LibWebRTCRtpTransformBackend(mediaTypeFromReceiver(*rtcReceiver), Side::Receiver)
     41    , m_rtcReceiver(WTFMove(rtcReceiver))
     42{
     43}
    4644
    47     webrtc::RtpReceiverInterface* rtcReceiver() { return m_rtcReceiver.get(); }
     45LibWebRTCRtpReceiverTransformBackend::~LibWebRTCRtpReceiverTransformBackend()
     46{
     47}
    4848
    49     Ref<RealtimeMediaSource> createSource();
    50 
    51 private:
    52     RTCRtpParameters getParameters() final;
    53     Vector<RTCRtpContributingSource> getContributingSources() const final;
    54     Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const final;
    55 
    56     rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_rtcReceiver;
    57 };
     49void LibWebRTCRtpReceiverTransformBackend::setTransformableFrameCallback(Callback&& callback)
     50{
     51    setInputCallback(WTFMove(callback));
     52    m_rtcReceiver->SetDepacketizerToDecoderFrameTransformer(this);
     53}
    5854
    5955} // namespace WebCore
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.h

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#if ENABLE(WEB_RTC) && USE(LIBWEBRTC)
    2828
    29 #include "LibWebRTCMacros.h"
    30 #include "RTCRtpReceiverBackend.h"
    31 #include <webrtc/api/scoped_refptr.h>
     29#include "LibWebRTCRtpTransformBackend.h"
     30
     31ALLOW_UNUSED_PARAMETERS_BEGIN
     32ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     33
     34#include <webrtc/api/rtp_receiver_interface.h>
     35
     36ALLOW_DEPRECATED_DECLARATIONS_END
     37ALLOW_UNUSED_PARAMETERS_END
    3238
    3339namespace webrtc {
     
    3743namespace WebCore {
    3844
    39 class RealtimeMediaSource;
    40 
    41 class LibWebRTCRtpReceiverBackend final : public RTCRtpReceiverBackend {
    42     WTF_MAKE_FAST_ALLOCATED;
     45class LibWebRTCRtpReceiverTransformBackend final : public LibWebRTCRtpTransformBackend {
    4346public:
    44     explicit LibWebRTCRtpReceiverBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface>&&);
    45     ~LibWebRTCRtpReceiverBackend();
    46 
    47     webrtc::RtpReceiverInterface* rtcReceiver() { return m_rtcReceiver.get(); }
    48 
    49     Ref<RealtimeMediaSource> createSource();
     47    static Ref<LibWebRTCRtpReceiverTransformBackend> create(rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver) { return adoptRef(*new LibWebRTCRtpReceiverTransformBackend(WTFMove(receiver))); }
     48    ~LibWebRTCRtpReceiverTransformBackend();
    5049
    5150private:
    52     RTCRtpParameters getParameters() final;
    53     Vector<RTCRtpContributingSource> getContributingSources() const final;
    54     Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const final;
     51    explicit LibWebRTCRtpReceiverTransformBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface>);
     52
     53    // RTCRtpTransformBackend
     54    void setTransformableFrameCallback(Callback&&) final;
    5555
    5656    rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_rtcReceiver;
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp

    r266468 r269764  
    3131#include "LibWebRTCDTMFSenderBackend.h"
    3232#include "LibWebRTCPeerConnectionBackend.h"
     33#include "LibWebRTCRtpSenderTransformBackend.h"
    3334#include "LibWebRTCUtils.h"
    3435#include "RTCPeerConnection.h"
    3536#include "RTCRtpSender.h"
     37#include "RTCRtpTransformBackend.h"
    3638#include "ScriptExecutionContext.h"
    3739
     
    137139}
    138140
     141Ref<RTCRtpTransformBackend> LibWebRTCRtpSenderBackend::createRTCRtpTransformBackend()
     142{
     143    return LibWebRTCRtpSenderTransformBackend::create(m_rtcSender);
     144}
     145
    139146RealtimeOutgoingVideoSource* LibWebRTCRtpSenderBackend::videoSource()
    140147{
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h

    r266468 r269764  
    7171    void setParameters(const RTCRtpSendParameters&, DOMPromiseDeferred<void>&&) final;
    7272    std::unique_ptr<RTCDTMFSenderBackend> createDTMFBackend() final;
     73    Ref<RTCRtpTransformBackend> createRTCRtpTransformBackend() final;
    7374
    7475    void startSource();
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2323 */
    2424
    25 #pragma once
     25#include "config.h"
     26#include "LibWebRTCRtpSenderTransformBackend.h"
    2627
    2728#if ENABLE(WEB_RTC) && USE(LIBWEBRTC)
    2829
    29 #include "LibWebRTCMacros.h"
    30 #include "RTCRtpReceiverBackend.h"
    31 #include <webrtc/api/scoped_refptr.h>
    32 
    33 namespace webrtc {
    34 class RtpReceiverInterface;
    35 }
     30#include "LibWebRTCRtpTransformableFrame.h"
    3631
    3732namespace WebCore {
    3833
    39 class RealtimeMediaSource;
     34static inline LibWebRTCRtpSenderTransformBackend::MediaType mediaTypeFromSender(const webrtc::RtpSenderInterface& sender)
     35{
     36    return sender.media_type() == cricket::MEDIA_TYPE_AUDIO ? RTCRtpTransformBackend::MediaType::Audio : RTCRtpTransformBackend::MediaType::Video;
     37}
    4038
    41 class LibWebRTCRtpReceiverBackend final : public RTCRtpReceiverBackend {
    42     WTF_MAKE_FAST_ALLOCATED;
    43 public:
    44     explicit LibWebRTCRtpReceiverBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface>&&);
    45     ~LibWebRTCRtpReceiverBackend();
     39LibWebRTCRtpSenderTransformBackend::LibWebRTCRtpSenderTransformBackend(rtc::scoped_refptr<webrtc::RtpSenderInterface> rtcSender)
     40    : LibWebRTCRtpTransformBackend(mediaTypeFromSender(*rtcSender), Side::Sender)
     41    , m_rtcSender(WTFMove(rtcSender))
     42{
     43}
    4644
    47     webrtc::RtpReceiverInterface* rtcReceiver() { return m_rtcReceiver.get(); }
     45LibWebRTCRtpSenderTransformBackend::~LibWebRTCRtpSenderTransformBackend()
     46{
     47}
    4848
    49     Ref<RealtimeMediaSource> createSource();
     49void LibWebRTCRtpSenderTransformBackend::setTransformableFrameCallback(Callback&& callback)
     50{
     51    setInputCallback(WTFMove(callback));
     52    m_rtcSender->SetEncoderToPacketizerFrameTransformer(this);
     53}
    5054
    51 private:
    52     RTCRtpParameters getParameters() final;
    53     Vector<RTCRtpContributingSource> getContributingSources() const final;
    54     Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const final;
    55 
    56     rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_rtcReceiver;
    57 };
    5855
    5956} // namespace WebCore
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.h

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#if ENABLE(WEB_RTC) && USE(LIBWEBRTC)
    2828
    29 #include "LibWebRTCMacros.h"
    30 #include "RTCRtpReceiverBackend.h"
    31 #include <webrtc/api/scoped_refptr.h>
     29#include "LibWebRTCRtpTransformBackend.h"
     30
     31ALLOW_UNUSED_PARAMETERS_BEGIN
     32ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     33
     34#include <webrtc/api/rtp_sender_interface.h>
     35
     36ALLOW_DEPRECATED_DECLARATIONS_END
     37ALLOW_UNUSED_PARAMETERS_END
    3238
    3339namespace webrtc {
    34 class RtpReceiverInterface;
     40class RtpSenderInterface;
    3541}
    3642
    3743namespace WebCore {
    3844
    39 class RealtimeMediaSource;
     45class LibWebRTCSenderTransformer;
    4046
    41 class LibWebRTCRtpReceiverBackend final : public RTCRtpReceiverBackend {
     47class LibWebRTCRtpSenderTransformBackend final : public LibWebRTCRtpTransformBackend {
    4248    WTF_MAKE_FAST_ALLOCATED;
    4349public:
    44     explicit LibWebRTCRtpReceiverBackend(rtc::scoped_refptr<webrtc::RtpReceiverInterface>&&);
    45     ~LibWebRTCRtpReceiverBackend();
    46 
    47     webrtc::RtpReceiverInterface* rtcReceiver() { return m_rtcReceiver.get(); }
    48 
    49     Ref<RealtimeMediaSource> createSource();
     50    static Ref<LibWebRTCRtpSenderTransformBackend> create(rtc::scoped_refptr<webrtc::RtpSenderInterface> sender) { return adoptRef(*new LibWebRTCRtpSenderTransformBackend(WTFMove(sender))); }
     51    ~LibWebRTCRtpSenderTransformBackend();
    5052
    5153private:
    52     RTCRtpParameters getParameters() final;
    53     Vector<RTCRtpContributingSource> getContributingSources() const final;
    54     Vector<RTCRtpSynchronizationSource> getSynchronizationSources() const final;
     54    explicit LibWebRTCRtpSenderTransformBackend(rtc::scoped_refptr<webrtc::RtpSenderInterface>);
    5555
    56     rtc::scoped_refptr<webrtc::RtpReceiverInterface> m_rtcReceiver;
     56    // RTCRtpTransformBackend
     57    void setTransformableFrameCallback(Callback&&) final;
     58
     59    rtc::scoped_refptr<webrtc::RtpSenderInterface> m_rtcSender;
    5760};
    5861
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.h

    r269763 r269764  
    11/*
    2  * Copyright (C) 2018 Apple Inc.
     2 * Copyright (C) 2020 Apple Inc.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#if ENABLE(WEB_RTC)
    2828
     29#include "RTCRtpTransformableFrame.h"
     30
    2931namespace WebCore {
    3032
    31 class MediaStreamTrack;
    32 class RTCDTMFSenderBackend;
    33 class RTCRtpSender;
    34 class ScriptExecutionContext;
     33class LibWebRTCRtpTransformableFrame final : public RTCRtpTransformableFrame {
     34    WTF_MAKE_FAST_ALLOCATED;
     35public:
     36    explicit LibWebRTCRtpTransformableFrame(std::unique_ptr<webrtc::TransformableFrameInterface>&&);
     37    virtual ~LibWebRTCRtpTransformableFrame() = default;
    3538
    36 struct RTCRtpSendParameters;
     39    static std::unique_ptr<webrtc::TransformableFrameInterface> toRTCFrame(LibWebRTCRtpTransformableFrame&&);
    3740
    38 template<typename IDLType> class DOMPromiseDeferred;
     41private:
     42    Data data() const final;
     43    void setData(Data data) final { m_rtcFrame->SetData({ data.data, data.size }); }
    3944
    40 class RTCRtpSenderBackend {
    41 public:
    42     virtual bool replaceTrack(RTCRtpSender&, MediaStreamTrack*) = 0;
    43     virtual RTCRtpSendParameters getParameters() const = 0;
    44     virtual void setParameters(const RTCRtpSendParameters&, DOMPromiseDeferred<void>&&) = 0;
    45     virtual std::unique_ptr<RTCDTMFSenderBackend> createDTMFBackend() = 0;
    46     virtual ~RTCRtpSenderBackend() = default;
     45    std::unique_ptr<webrtc::TransformableFrameInterface> m_rtcFrame;
    4746};
     47
     48inline LibWebRTCRtpTransformableFrame::LibWebRTCRtpTransformableFrame(std::unique_ptr<webrtc::TransformableFrameInterface>&& frame)
     49    : m_rtcFrame(WTFMove(frame))
     50{
     51}
     52
     53inline std::unique_ptr<webrtc::TransformableFrameInterface> LibWebRTCRtpTransformableFrame::toRTCFrame(LibWebRTCRtpTransformableFrame&& frame)
     54{
     55    return WTFMove(frame.m_rtcFrame);
     56}
     57
     58inline RTCRtpTransformableFrame::Data LibWebRTCRtpTransformableFrame::data() const
     59{
     60    auto data = m_rtcFrame->GetData();
     61    return { data.begin(), data.size() };
     62}
    4863
    4964} // namespace WebCore
  • trunk/Source/WebCore/Sources.txt

    r269712 r269764  
    165165Modules/mediastream/RTCRtpReceiver.cpp
    166166Modules/mediastream/RTCRtpSender.cpp
     167Modules/mediastream/RTCRtpTransform.cpp
    167168Modules/mediastream/RTCRtpTransceiver.cpp
    168169Modules/mediastream/RTCSessionDescription.cpp
     
    171172Modules/mediastream/UserMediaRequest.cpp
    172173Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp
     174Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverTransformBackend.cpp
     175Modules/mediastream/libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp
     176Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp
    173177Modules/notifications/Notification.cpp
    174178Modules/notifications/NotificationController.cpp
     
    33223326JSRTCRtpTransceiver.cpp
    33233327JSRTCRtpTransceiverDirection.cpp
     3328JSRTCRtpTransform.cpp
    33243329JSRTCSdpType.cpp
    33253330JSRTCSessionDescription.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r269712 r269764  
    10471047                413A1AA22371A8B4007EF3A5 /* JSDOMSetLike.h in Headers */ = {isa = PBXBuildFile; fileRef = 413A1A9F2371A8A8007EF3A5 /* JSDOMSetLike.h */; };
    10481048                413C2C341BC29A8F0075204C /* JSDOMConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 413C2C331BC29A7B0075204C /* JSDOMConstructor.h */; };
     1049                413C8B332552F27D00E65055 /* RTCRtpSenderWithTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 413C8B2E2552F27B00E65055 /* RTCRtpSenderWithTransform.h */; };
     1050                413C8B342552F27D00E65055 /* RTCRtpTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 413C8B2F2552F27B00E65055 /* RTCRtpTransform.h */; };
     1051                413C8B352552F27D00E65055 /* RTCRtpReceiverWithTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 413C8B302552F27C00E65055 /* RTCRtpReceiverWithTransform.h */; };
    10491052                413CCD4A20DE034F0065A21A /* MockMediaDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 413CCD4820DE013C0065A21A /* MockMediaDevice.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10501053                413E00791DB0E4F2002341D2 /* MemoryRelease.h in Headers */ = {isa = PBXBuildFile; fileRef = 413E00781DB0E4DE002341D2 /* MemoryRelease.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    10991102                41815C1E138319830057AAA4 /* WebCoreTestSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41815C1C138319830057AAA4 /* WebCoreTestSupport.cpp */; };
    11001103                41815C1F138319830057AAA4 /* WebCoreTestSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1104                4181C5C9255573DF00AEB0FF /* RTCRtpTransformBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 4181C5C8255573DF00AEB0FF /* RTCRtpTransformBackend.h */; };
     1105                4181C5CB255582E400AEB0FF /* RTCRtpTransformableFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 4181C5CA255582E300AEB0FF /* RTCRtpTransformableFrame.h */; };
     1106                4181C5CD2555836900AEB0FF /* LibWebRTCRtpTransformableFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 4181C5CC2555836800AEB0FF /* LibWebRTCRtpTransformableFrame.h */; };
     1107                4181C5D12555895600AEB0FF /* LibWebRTCRtpTransformBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 4181C5CF2555895600AEB0FF /* LibWebRTCRtpTransformBackend.h */; };
     1108                4181C5D62555C1B900AEB0FF /* MockRTCRtpTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 4181C5D52555C1B900AEB0FF /* MockRTCRtpTransform.h */; };
     1109                4181C5D72555C49A00AEB0FF /* MockRTCRtpTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4181C5D32555C1B100AEB0FF /* MockRTCRtpTransform.cpp */; };
     1110                4181C639255AE90F00AEB0FF /* JSMockRTCRtpTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D6F3E921C1F85550061DBE4 /* JSMockRTCRtpTransform.cpp */; };
    11011111                418205471E53E98C00D62207 /* RTCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 418205451E53C8CD00D62207 /* RTCController.h */; settings = {ATTRIBUTES = (Private, ); }; };
    11021112                41826BF223FB597700B922B1 /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 41826BF123FB597000B922B1 /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    70357045                2D6F3E921C1F85550061DBD5 /* JSInternalsSetLike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternalsSetLike.cpp; sourceTree = "<group>"; };
    70367046                2D6F3E921C1F85550061DBD6 /* JSInternalsMapLike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternalsMapLike.cpp; sourceTree = "<group>"; };
     7047                2D6F3E921C1F85550061DBE4 /* JSMockRTCRtpTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMockRTCRtpTransform.cpp; sourceTree = "<group>"; };
    70377048                2D6F3E931C1F85550061DBD4 /* JSMockPageOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMockPageOverlay.h; sourceTree = "<group>"; };
    70387049                2D70BA1218074DDF0001908A /* PlatformCALayerCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerCocoa.h; sourceTree = "<group>"; };
     
    75637574                413A1AA12371A8A9007EF3A5 /* JSDOMSetLike.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMSetLike.cpp; sourceTree = "<group>"; };
    75647575                413C2C331BC29A7B0075204C /* JSDOMConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMConstructor.h; sourceTree = "<group>"; };
     7576                413C8B242552EEA900E65055 /* RTCRtpReceiver+Transform.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "RTCRtpReceiver+Transform.idl"; sourceTree = "<group>"; };
     7577                413C8B262552EEA900E65055 /* RTCRtpSender+Transform.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "RTCRtpSender+Transform.idl"; sourceTree = "<group>"; };
     7578                413C8B292552F01300E65055 /* RTCRtpTransform.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCRtpTransform.idl; sourceTree = "<group>"; };
     7579                413C8B2E2552F27B00E65055 /* RTCRtpSenderWithTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpSenderWithTransform.h; sourceTree = "<group>"; };
     7580                413C8B2F2552F27B00E65055 /* RTCRtpTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpTransform.h; sourceTree = "<group>"; };
     7581                413C8B302552F27C00E65055 /* RTCRtpReceiverWithTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpReceiverWithTransform.h; sourceTree = "<group>"; };
    75657582                413CCD4820DE013C0065A21A /* MockMediaDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockMediaDevice.h; sourceTree = "<group>"; };
    75667583                413E00771DB0E4DE002341D2 /* MemoryRelease.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryRelease.cpp; sourceTree = "<group>"; };
     
    76737690                41815C1D138319830057AAA4 /* WebCoreTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreTestSupport.h; sourceTree = "<group>"; };
    76747691                4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebCoreTestSupport.xcconfig; sourceTree = "<group>"; };
     7692                4181C5BE2553EB6E00AEB0FF /* LibWebRTCRtpSenderTransformBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpSenderTransformBackend.h; path = libwebrtc/LibWebRTCRtpSenderTransformBackend.h; sourceTree = "<group>"; };
     7693                4181C5C02553EB6E00AEB0FF /* LibWebRTCRtpReceiverTransformBackend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCRtpReceiverTransformBackend.cpp; path = libwebrtc/LibWebRTCRtpReceiverTransformBackend.cpp; sourceTree = "<group>"; };
     7694                4181C5C12553EB6E00AEB0FF /* LibWebRTCRtpSenderTransformBackend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCRtpSenderTransformBackend.cpp; path = libwebrtc/LibWebRTCRtpSenderTransformBackend.cpp; sourceTree = "<group>"; };
     7695                4181C5C22553EB6F00AEB0FF /* LibWebRTCRtpReceiverTransformBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpReceiverTransformBackend.h; path = libwebrtc/LibWebRTCRtpReceiverTransformBackend.h; sourceTree = "<group>"; };
     7696                4181C5C62555735100AEB0FF /* RTCRtpTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCRtpTransform.cpp; sourceTree = "<group>"; };
     7697                4181C5C8255573DF00AEB0FF /* RTCRtpTransformBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpTransformBackend.h; sourceTree = "<group>"; };
     7698                4181C5CA255582E300AEB0FF /* RTCRtpTransformableFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpTransformableFrame.h; sourceTree = "<group>"; };
     7699                4181C5CC2555836800AEB0FF /* LibWebRTCRtpTransformableFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpTransformableFrame.h; path = libwebrtc/LibWebRTCRtpTransformableFrame.h; sourceTree = "<group>"; };
     7700                4181C5CE2555895500AEB0FF /* LibWebRTCRtpTransformBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCRtpTransformBackend.cpp; path = libwebrtc/LibWebRTCRtpTransformBackend.cpp; sourceTree = "<group>"; };
     7701                4181C5CF2555895600AEB0FF /* LibWebRTCRtpTransformBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpTransformBackend.h; path = libwebrtc/LibWebRTCRtpTransformBackend.h; sourceTree = "<group>"; };
     7702                4181C5D32555C1B100AEB0FF /* MockRTCRtpTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockRTCRtpTransform.cpp; sourceTree = "<group>"; };
     7703                4181C5D52555C1B900AEB0FF /* MockRTCRtpTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockRTCRtpTransform.h; sourceTree = "<group>"; };
     7704                4181C636255AE26100AEB0FF /* MockRTCRtpTransform.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = MockRTCRtpTransform.idl; sourceTree = "<group>"; };
    76757705                418205451E53C8CD00D62207 /* RTCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCController.h; sourceTree = "<group>"; };
    76767706                418205481E53EAAD00D62207 /* RTCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCController.cpp; sourceTree = "<group>"; };
     
    1704717077                                41A48AA81E84AF1D00D2AC2D /* RTCRtpParameters.h */,
    1704817078                                41A48AA71E84AEEC00D2AC2D /* RTCRtpParameters.idl */,
     17079                                413C8B242552EEA900E65055 /* RTCRtpReceiver+Transform.idl */,
    1704917080                                5E2C43561BCEE30D0001E2BC /* RTCRtpReceiver.cpp */,
    1705017081                                5E2C43571BCEE30D0001E2BC /* RTCRtpReceiver.h */,
    1705117082                                5E2C43581BCEE30D0001E2BC /* RTCRtpReceiver.idl */,
    1705217083                                41D1A048213EDDEB0063FB6B /* RTCRtpReceiverBackend.h */,
     17084                                413C8B302552F27C00E65055 /* RTCRtpReceiverWithTransform.h */,
    1705317085                                41FCB760214867000038ADC6 /* RTCRtpRtxParameters.h */,
    1705417086                                41FCB758214865D20038ADC6 /* RTCRtpRtxParameters.idl */,
     17087                                413C8B262552EEA900E65055 /* RTCRtpSender+Transform.idl */,
    1705517088                                5E2C43591BCEE30D0001E2BC /* RTCRtpSender.cpp */,
    1705617089                                5E2C435A1BCEE30D0001E2BC /* RTCRtpSender.h */,
    1705717090                                5E2C435B1BCEE30D0001E2BC /* RTCRtpSender.idl */,
    1705817091                                41D1A046213EDDEB0063FB6B /* RTCRtpSenderBackend.h */,
     17092                                413C8B2E2552F27B00E65055 /* RTCRtpSenderWithTransform.h */,
    1705917093                                414AD3FC2149842000521676 /* RTCRtpSendParameters.h */,
    1706017094                                414AD3FE2149842000521676 /* RTCRtpSendParameters.idl */,
     
    1706617100                                4186BD46214072B60001826F /* RTCRtpTransceiverBackend.h */,
    1706717101                                316DCB171E78C330001B5F87 /* RTCRtpTransceiverDirection.idl */,
     17102                                4181C5C62555735100AEB0FF /* RTCRtpTransform.cpp */,
     17103                                413C8B2F2552F27B00E65055 /* RTCRtpTransform.h */,
     17104                                413C8B292552F01300E65055 /* RTCRtpTransform.idl */,
     17105                                4181C5CA255582E300AEB0FF /* RTCRtpTransformableFrame.h */,
     17106                                4181C5C8255573DF00AEB0FF /* RTCRtpTransformBackend.h */,
    1706817107                                410F565824FCF85400A2E50C /* RTCSdpType.idl */,
    1706917108                                07221B7A17CEC32700848E51 /* RTCSessionDescription.cpp */,
     
    1912719166                                41D1A04A213EDDFE0063FB6B /* LibWebRTCRtpReceiverBackend.cpp */,
    1912819167                                4186BD3B213EDE380001826F /* LibWebRTCRtpReceiverBackend.h */,
     19168                                4181C5C02553EB6E00AEB0FF /* LibWebRTCRtpReceiverTransformBackend.cpp */,
     19169                                4181C5C22553EB6F00AEB0FF /* LibWebRTCRtpReceiverTransformBackend.h */,
    1912919170                                41D1A04B213EDDFE0063FB6B /* LibWebRTCRtpSenderBackend.cpp */,
    1913019171                                4186BD3D213EDE390001826F /* LibWebRTCRtpSenderBackend.h */,
     19172                                4181C5C12553EB6E00AEB0FF /* LibWebRTCRtpSenderTransformBackend.cpp */,
     19173                                4181C5BE2553EB6E00AEB0FF /* LibWebRTCRtpSenderTransformBackend.h */,
    1913119174                                4186BD4D2140B9E80001826F /* LibWebRTCRtpTransceiverBackend.cpp */,
    1913219175                                4186BD4B2140A8050001826F /* LibWebRTCRtpTransceiverBackend.h */,
     19176                                4181C5CC2555836800AEB0FF /* LibWebRTCRtpTransformableFrame.h */,
     19177                                4181C5CE2555895500AEB0FF /* LibWebRTCRtpTransformBackend.cpp */,
     19178                                4181C5CF2555895600AEB0FF /* LibWebRTCRtpTransformBackend.h */,
    1913319179                                41D28D0B2139E01D00F4206F /* LibWebRTCStatsCollector.cpp */,
    1913419180                                41D28D0C2139E01E00F4206F /* LibWebRTCStatsCollector.h */,
     
    1921119257                                A14061891E2ECA0A0032B34E /* MockPreviewLoaderClient.cpp */,
    1921219258                                A140618A1E2ECA0A0032B34E /* MockPreviewLoaderClient.h */,
     19259                                4181C5D32555C1B100AEB0FF /* MockRTCRtpTransform.cpp */,
     19260                                4181C5D52555C1B900AEB0FF /* MockRTCRtpTransform.h */,
     19261                                4181C636255AE26100AEB0FF /* MockRTCRtpTransform.idl */,
    1921319262                                57156108234C1B31008FC7AB /* MockWebAuthenticationConfiguration.h */,
    1921419263                                5715610D234C7481008FC7AB /* MockWebAuthenticationConfiguration.idl */,
     
    1926619315                                A1BB85B42159B3890067E07D /* JSMockPaymentError.cpp */,
    1926719316                                A1BB85B52159B38A0067E07D /* JSMockPaymentError.h */,
     19317                                2D6F3E921C1F85550061DBE4 /* JSMockRTCRtpTransform.cpp */,
    1926819318                                57156111234C7FBC008FC7AB /* JSMockWebAuthenticationConfiguration.cpp */,
    1926919319                                57156110234C7FBC008FC7AB /* JSMockWebAuthenticationConfiguration.h */,
     
    3322433274                                415747481E3869A700E914D8 /* LibWebRTCProvider.h in Headers */,
    3322533275                                41B28B3D1F860EF300FB52AC /* LibWebRTCProviderCocoa.h in Headers */,
     33276                                4181C5CD2555836900AEB0FF /* LibWebRTCRtpTransformableFrame.h in Headers */,
     33277                                4181C5D12555895600AEB0FF /* LibWebRTCRtpTransformBackend.h in Headers */,
    3322633278                                410E4461234373E9000173D4 /* LibWebRTCSocketIdentifier.h in Headers */,
    3322733279                                84730D911248F0B300D3A9C9 /* LightSource.h in Headers */,
     
    3341833470                                07EE76EC1BE96DB000F89133 /* MockRealtimeVideoSource.h in Headers */,
    3341933471                                07EE76EF1BEA619800F89133 /* MockRealtimeVideoSourceMac.h in Headers */,
     33472                                4181C5D62555C1B900AEB0FF /* MockRTCRtpTransform.h in Headers */,
    3342033473                                CDF2B0171820540700F2B424 /* MockSourceBufferPrivate.h in Headers */,
    3342133474                                CDF2B0191820540700F2B424 /* MockTracks.h in Headers */,
     
    3404634099                                412DE4B8219285C00075F3A7 /* RTCRtpCapabilities.h in Headers */,
    3404734100                                5E2C43631BCEE32B0001E2BC /* RTCRtpReceiver.h in Headers */,
     34101                                413C8B352552F27D00E65055 /* RTCRtpReceiverWithTransform.h in Headers */,
    3404834102                                5E2C43611BCEE3230001E2BC /* RTCRtpSender.h in Headers */,
     34103                                413C8B332552F27D00E65055 /* RTCRtpSenderWithTransform.h in Headers */,
    3404934104                                5E5E2B141CFC3E75000C0D85 /* RTCRtpTransceiver.h in Headers */,
    3405034105                                31EB54DF1E7DC74400C1623B /* RTCRtpTransceiverDirection.h in Headers */,
     34106                                413C8B342552F27D00E65055 /* RTCRtpTransform.h in Headers */,
     34107                                4181C5CB255582E400AEB0FF /* RTCRtpTransformableFrame.h in Headers */,
     34108                                4181C5C9255573DF00AEB0FF /* RTCRtpTransformBackend.h in Headers */,
    3405134109                                3135910A1E7DDC7300F30630 /* RTCSdpType.h in Headers */,
    3405234110                                078E092617D14D1C00420AA1 /* RTCSessionDescription.h in Headers */,
     
    3550235560                                A146D31A1F99BCF800D29196 /* JSMockPaymentCoordinator.cpp in Sources */,
    3550335561                                A1BB85B82159B3A40067E07D /* JSMockPaymentError.cpp in Sources */,
     35562                                4181C639255AE90F00AEB0FF /* JSMockRTCRtpTransform.cpp in Sources */,
    3550435563                                57156114234C7FD6008FC7AB /* JSMockWebAuthenticationConfiguration.cpp in Sources */,
    3550535564                                427DA71D13735DFA007C57FB /* JSServiceWorkerInternals.cpp in Sources */,
     
    3551735576                                A1AFEDE71F8BFF6D0087013F /* MockPaymentCoordinator.cpp in Sources */,
    3551835577                                A140618B1E2ECA0A0032B34E /* MockPreviewLoaderClient.cpp in Sources */,
     35578                                4181C5D72555C49A00AEB0FF /* MockRTCRtpTransform.cpp in Sources */,
    3551935579                                AA5F3B8F16CC4B3900455EB0 /* PlatformSpeechSynthesizerMock.cpp in Sources */,
    3552035580                                417F0D821FFEE979008EF303 /* ServiceWorkerInternals.cpp in Sources */,
  • trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h

    r268774 r269764  
    175175    macro(MediaStreamTrack) \
    176176    macro(MerchantValidationEvent) \
     177    macro(MockRTCRtpTransform) \
    177178    macro(ModernMediaControls) \
    178179    macro(NavigatorCredentials) \
     
    221222    macro(RTCRtpSender) \
    222223    macro(RTCRtpTransceiver) \
     224    macro(RTCRtpTransform) \
    223225    macro(RTCSessionDescription) \
    224226    macro(RTCStatsReport) \
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r269314 r269764  
    32233223        if ($interfaceName ne "Node" && $codeGenerator->InheritsInterface($interface, "Node")) {
    32243224            $headerIncludes{"JSNode.h"} = 1;
    3225             push(@headerContent, "class JS${interfaceName}Owner : public JSNodeOwner {\n");
     3225            push(@headerContent, "class ${exportMacro}JS${interfaceName}Owner : public JSNodeOwner {\n");
    32263226        } else {
    3227             push(@headerContent, "class JS${interfaceName}Owner : public JSC::WeakHandleOwner {\n");
     3227            push(@headerContent, "class ${exportMacro}JS${interfaceName}Owner : public JSC::WeakHandleOwner {\n");
    32283228        }
    32293229        $headerIncludes{"<wtf/NeverDestroyed.h>"} = 1;
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h

    r266753 r269764  
    9090};
    9191
    92 class JSTestInterfaceOwner : public JSC::WeakHandleOwner {
     92class WEBCORE_EXPORT JSTestInterfaceOwner : public JSC::WeakHandleOwner {
    9393public:
    9494    virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&, const char**);
  • trunk/Source/WebCore/testing/Internals.cpp

    r269662 r269764  
    139139#include "MockPageOverlay.h"
    140140#include "MockPageOverlayClient.h"
     141#include "MockRTCRtpTransform.h"
    141142#include "NavigatorBeacon.h"
    142143#include "NavigatorMediaDevices.h"
     
    15801581}
    15811582
     1583Ref<MockRTCRtpTransform> Internals::createMockRTCRtpTransform()
     1584{
     1585    return MockRTCRtpTransform::create();
     1586}
     1587
    15821588void Internals::setEnableWebRTCEncryption(bool value)
    15831589{
  • trunk/Source/WebCore/testing/Internals.h

    r269662 r269764  
    3333#include "HEVCUtilities.h"
    3434#include "IDLTypes.h"
     35#include "MockRTCRtpTransform.h"
    3536#include "OrientationNotifier.h"
    3637#include "PageConsoleClient.h"
     
    607608    void setWebRTCVP9Support(bool);
    608609    void setWebRTCVP9VTBSupport(bool);
     610    Ref<MockRTCRtpTransform> createMockRTCRtpTransform();
    609611    void setEnableWebRTCEncryption(bool);
    610612    void setUseDTLS10(bool);
  • trunk/Source/WebCore/testing/Internals.idl

    r269662 r269764  
    803803    [Conditional=WEB_RTC] undefined setWebRTCVP9Support(boolean allowed);
    804804    [Conditional=WEB_RTC] undefined setWebRTCVP9VTBSupport(boolean allowed);
     805    [Conditional=WEB_RTC] MockRTCRtpTransform createMockRTCRtpTransform();
    805806
    806807    [Conditional=MEDIA_STREAM] undefined setMockAudioTrackChannelNumber(MediaStreamTrack track, unsigned short count);
  • trunk/Source/WebKit/ChangeLog

    r269763 r269764  
     12020-11-12  Youenn Fablet  <youenn@apple.com>
     2
     3        Add infrastructure for WebRTC transforms
     4        https://bugs.webkit.org/show_bug.cgi?id=218750
     5
     6        Reviewed by Eric Carlson.
     7
     8        Remove no longer needed const casting.
     9
     10        * Configurations/WebKit.xcconfig:
     11        * WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
     12        (WebKit::LibWebRTCCodecs::completedEncoding):
     13
    1142020-11-12  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp

    r269739 r269764  
    442442        return;
    443443
    444     webrtc::encoderVideoTaskComplete(encoder->encodedImageCallback, encoder->codecType, const_cast<uint8_t*>(data.data()), data.size(), info);
     444    webrtc::encoderVideoTaskComplete(encoder->encodedImageCallback, encoder->codecType, data.data(), data.size(), info);
    445445}
    446446
Note: See TracChangeset for help on using the changeset viewer.