Title: [214924] trunk
Revision
214924
Author
[email protected]
Date
2017-04-04 19:50:51 -0700 (Tue, 04 Apr 2017)

Log Message

[Mac] Add back web audio support for getUserMedia MediaStreamTrack
https://bugs.webkit.org/show_bug.cgi?id=170482

Patch by Youenn Fablet <[email protected]> on 2017-04-04
Reviewed by Eric Carlson.

Source/WebCore:

´Covered by reenabled test.

Exporting method and class used in WebKit2.

* WebCore.xcodeproj/project.pbxproj:
* platform/audio/mac/CAAudioStreamDescription.h:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:

Source/WebKit2:

* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setStorage):

LayoutTests:

* TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (214923 => 214924)


--- trunk/LayoutTests/ChangeLog	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/LayoutTests/ChangeLog	2017-04-05 02:50:51 UTC (rev 214924)
@@ -1,3 +1,12 @@
+2017-04-04  Youenn Fablet  <[email protected]>
+
+        [Mac] Add back web audio support for getUserMedia MediaStreamTrack
+        https://bugs.webkit.org/show_bug.cgi?id=170482
+
+        Reviewed by Eric Carlson.
+
+        * TestExpectations:
+
 2017-04-04  Ryan Haddad  <[email protected]>
 
         Mark fast/images/slower-animation-than-decoding-image.html as flaky.

Modified: trunk/LayoutTests/TestExpectations (214923 => 214924)


--- trunk/LayoutTests/TestExpectations	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/LayoutTests/TestExpectations	2017-04-05 02:50:51 UTC (rev 214924)
@@ -717,7 +717,6 @@
 webrtc/peer-connection-audio-mute2.html [ Pass Failure ]
 webrtc/peer-connection-remote-audio-mute2.html [ Pass Failure ]
 webkit.org/b/170178 webrtc/video-replace-track-to-null.html [ Pass Failure ]
-fast/mediastream/getUserMedia-webaudio.html [ Skip ]
 fast/mediastream/RTCPeerConnection-closed-state.html [ Skip ]
 fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html [ Skip ]
 fast/mediastream/RTCPeerConnection-more-media-to-negotiate.html [ Skip ]

Modified: trunk/Source/WebCore/ChangeLog (214923 => 214924)


--- trunk/Source/WebCore/ChangeLog	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebCore/ChangeLog	2017-04-05 02:50:51 UTC (rev 214924)
@@ -1,3 +1,18 @@
+2017-04-04  Youenn Fablet  <[email protected]>
+
+        [Mac] Add back web audio support for getUserMedia MediaStreamTrack
+        https://bugs.webkit.org/show_bug.cgi?id=170482
+
+        Reviewed by Eric Carlson.
+
+        ´Covered by reenabled test.
+
+        Exporting method and class used in WebKit2.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/audio/mac/CAAudioStreamDescription.h:
+        * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
+
 2017-04-04  Alexey Proskuryakov  <[email protected]>
 
         More build fixing.

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (214923 => 214924)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-04-05 02:50:51 UTC (rev 214924)
@@ -282,7 +282,7 @@
 		07C1C0E21BFB600100BD2256 /* MediaTrackSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E01BFB600100BD2256 /* MediaTrackSupportedConstraints.h */; };
 		07C1C0E51BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E41BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		07D637401BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D6373E1BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h */; };
+		07D637401BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D6373E1BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		07D637411BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07D6373F1BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.mm */; };
 		07D6A4EF1BECF2D200174146 /* MockRealtimeMediaSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07D6A4ED1BECF2D200174146 /* MockRealtimeMediaSource.cpp */; };
 		07D6A4F01BECF2D200174146 /* MockRealtimeMediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D6A4EE1BECF2D200174146 /* MockRealtimeMediaSource.h */; };

Modified: trunk/Source/WebCore/platform/audio/mac/CAAudioStreamDescription.h (214923 => 214924)


--- trunk/Source/WebCore/platform/audio/mac/CAAudioStreamDescription.h	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebCore/platform/audio/mac/CAAudioStreamDescription.h	2017-04-05 02:50:51 UTC (rev 214924)
@@ -43,7 +43,7 @@
 
     const PlatformDescription& platformDescription() const final;
 
-    PCMFormat format() const final;
+    WEBCORE_EXPORT PCMFormat format() const final;
 
     double sampleRate() const final { return m_streamDescription.mSampleRate; }
     bool isPCM() const final { return m_streamDescription.mFormatID == kAudioFormatLinearPCM; }

Modified: trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h (214923 => 214924)


--- trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h	2017-04-05 02:50:51 UTC (rev 214924)
@@ -44,7 +44,7 @@
 class AudioSampleDataSource;
 class CAAudioStreamDescription;
 
-class WebAudioSourceProviderAVFObjC : public RefCounted<WebAudioSourceProviderAVFObjC>, public AudioSourceProvider, RealtimeMediaSource::Observer {
+class WEBCORE_EXPORT WebAudioSourceProviderAVFObjC : public RefCounted<WebAudioSourceProviderAVFObjC>, public AudioSourceProvider, RealtimeMediaSource::Observer {
 public:
     static Ref<WebAudioSourceProviderAVFObjC> create(RealtimeMediaSource&);
     virtual ~WebAudioSourceProviderAVFObjC();

Modified: trunk/Source/WebKit2/ChangeLog (214923 => 214924)


--- trunk/Source/WebKit2/ChangeLog	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebKit2/ChangeLog	2017-04-05 02:50:51 UTC (rev 214924)
@@ -1,3 +1,13 @@
+2017-04-04  Youenn Fablet  <[email protected]>
+
+        [Mac] Add back web audio support for getUserMedia MediaStreamTrack
+        https://bugs.webkit.org/show_bug.cgi?id=170482
+
+        Reviewed by Eric Carlson.
+
+        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+        (WebKit::UserMediaCaptureManager::Source::setStorage):
+
 2017-04-04  Tim Horton  <[email protected]>
 
         [Mac] -[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps

Modified: trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp (214923 => 214924)


--- trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp	2017-04-05 01:18:07 UTC (rev 214923)
+++ trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp	2017-04-05 02:50:51 UTC (rev 214924)
@@ -38,6 +38,7 @@
 #include <WebCore/MediaConstraintsImpl.h>
 #include <WebCore/RealtimeMediaSourceCenter.h>
 #include <WebCore/WebAudioBufferList.h>
+#include <WebCore/WebAudioSourceProviderAVFObjC.h>
 
 using namespace WebCore;
 
@@ -79,6 +80,9 @@
     void setStorage(const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames)
     {
         m_description = description;
+        if (m_audioSourceProvider)
+            m_audioSourceProvider->prepare(&m_description.streamDescription());
+
         if (handle.isNull()) {
             m_ringBuffer.deallocate();
             storage().setReadOnly(false);
@@ -110,7 +114,14 @@
     void startProducingData() final { m_manager.startProducingData(m_id); }
     void stopProducingData() final { m_manager.stopProducingData(m_id); }
 
-    AudioSourceProvider* audioSourceProvider() final { return nullptr; }
+    AudioSourceProvider* audioSourceProvider() final {
+        if (!m_audioSourceProvider) {
+            m_audioSourceProvider = WebAudioSourceProviderAVFObjC::create(*this);
+            if (m_description.format() != AudioStreamDescription::None)
+                m_audioSourceProvider->prepare(&m_description.streamDescription());
+        }
+        return m_audioSourceProvider.get();
+    }
 
 private:
     // RealtimeMediaSource
@@ -123,6 +134,7 @@
     RealtimeMediaSourceSettings m_settings;
     CAAudioStreamDescription m_description;
     CARingBuffer m_ringBuffer;
+    RefPtr<WebAudioSourceProviderAVFObjC> m_audioSourceProvider;
 };
 
 UserMediaCaptureManager::UserMediaCaptureManager(WebProcess* process)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to