Diff
Modified: trunk/Source/WebCore/ChangeLog (216897 => 216898)
--- trunk/Source/WebCore/ChangeLog 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/ChangeLog 2017-05-16 02:45:28 UTC (rev 216898)
@@ -1,3 +1,104 @@
+2017-05-15 Youenn Fablet <you...@apple.com>
+
+ Simplify RealtimeMediaSource data production and state
+ https://bugs.webkit.org/show_bug.cgi?id=171999
+
+ Reviewed by Eric Carlson.
+
+ RealtimeMediaSource takes 3 booleans:
+ - m_isProducingData tells whether data is produced or not. In the case of capturing, it tells whether capture
+ happens.
+ - m_muted/m_enabled allows JS or WebKit level to start/stop the source.
+
+ Changed MediaStream capture state computation so that capture is reported as follows:
+ - m_isProducing is true, capture is happenning and is active
+ - m_muted is true, capture is happening but is inactive.
+
+ Except in the case of WebRTC incoming sources, for which sources may be created as muted as per the spec,
+ all sources are unmuted, enabled and not producing data when created.
+
+ RealtimeMediaSource is now activable either by calling start/stop or by calling setMuted/setEnabled.
+ This in turns will set the boolean values accordingly and will call the underlying
+ startProducingData/stopProducingData methods doing the actual stuff.
+
+ Removing from all RealtimeMediaSource subclasses the handling of producing data.
+ Making more methods non-virtual/member fields private to simplify the model.
+
+ * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
+ (WebCore::CanvasCaptureMediaStreamTrack::Source::create):
+ (WebCore::CanvasCaptureMediaStreamTrack::Source::startProducingData):
+ (WebCore::CanvasCaptureMediaStreamTrack::Source::stopProducingData):
+ (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed):
+ (WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas):
+ * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
+ * Modules/mediastream/MediaStream.cpp:
+ (WebCore::MediaStream::mediaState):
+ * platform/mediastream/MediaStreamTrackPrivate.h:
+ (WebCore::MediaStreamTrackPrivate::startProducingData):
+ (WebCore::MediaStreamTrackPrivate::stopProducingData):
+ * platform/mediastream/RealtimeMediaSource.cpp:
+ (WebCore::RealtimeMediaSource::setMuted):
+ (WebCore::RealtimeMediaSource::notifyMutedChange):
+ (WebCore::RealtimeMediaSource::setEnabled):
+ (WebCore::RealtimeMediaSource::start):
+ (WebCore::RealtimeMediaSource::stop):
+ (WebCore::RealtimeMediaSource::requestStop):
+ (WebCore::RealtimeMediaSource::reset): Deleted.
+ * platform/mediastream/RealtimeMediaSource.h:
+ * platform/mediastream/mac/AVMediaCaptureSource.h:
+ * platform/mediastream/mac/AVMediaCaptureSource.mm:
+ (WebCore::AVMediaCaptureSource::AVMediaCaptureSource):
+ (WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange):
+ (WebCore::AVMediaCaptureSource::reset): Deleted.
+ (WebCore::AVMediaCaptureSource::isProducingData): Deleted.
+ * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
+ (WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
+ (WebCore::CoreAudioCaptureSource::startProducingData):
+ (WebCore::CoreAudioCaptureSource::stopProducingData):
+ (WebCore::CoreAudioCaptureSource::audioSourceProvider):
+ * platform/mediastream/mac/CoreAudioCaptureSource.h:
+ * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
+ (WebCore::MockRealtimeAudioSourceMac::render):
+ (WebCore::MockRealtimeAudioSource::createMuted): Deleted.
+ * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
+ (WebCore::MockRealtimeVideoSource::createMuted): Deleted.
+ * platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
+ (WebCore::RealtimeIncomingAudioSource::create):
+ (WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
+ (WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource):
+ (WebCore::RealtimeIncomingAudioSource::startProducingData):
+ (WebCore::RealtimeIncomingAudioSource::stopProducingData):
+ (WebCore::RealtimeIncomingAudioSource::setSourceTrack):
+ * platform/mediastream/mac/RealtimeIncomingAudioSource.h:
+ * platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:
+ (WebCore::RealtimeIncomingVideoSource::create):
+ (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
+ (WebCore::RealtimeIncomingVideoSource::startProducingData):
+ (WebCore::RealtimeIncomingVideoSource::setSourceTrack):
+ (WebCore::RealtimeIncomingVideoSource::stopProducingData):
+ (WebCore::RealtimeIncomingVideoSource::OnFrame):
+ * platform/mediastream/mac/RealtimeIncomingVideoSource.h:
+ * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
+ (WebCore::WebAudioSourceProviderAVFObjC::setClient):
+ * platform/mock/MockMediaEndpoint.cpp:
+ (WebCore::MockMediaEndpoint::createMutedRemoteSource):
+ (WebCore::MockMediaEndpoint::unmuteTimerFired):
+ * platform/mock/MockRealtimeAudioSource.cpp:
+ (WebCore::MockRealtimeAudioSource::createMuted):
+ (WebCore::MockRealtimeAudioSource::startProducingData):
+ (WebCore::MockRealtimeAudioSource::stopProducingData):
+ * platform/mock/MockRealtimeAudioSource.h:
+ * platform/mock/MockRealtimeMediaSource.cpp:
+ (WebCore::MockRealtimeMediaSource::startProducingData): Deleted.
+ (WebCore::MockRealtimeMediaSource::stopProducingData): Deleted.
+ * platform/mock/MockRealtimeMediaSource.h:
+ * platform/mock/MockRealtimeVideoSource.cpp:
+ (WebCore::MockRealtimeVideoSource::createMuted):
+ (WebCore::MockRealtimeVideoSource::startProducingData):
+ (WebCore::MockRealtimeVideoSource::stopProducingData):
+ (WebCore::MockRealtimeVideoSource::generateFrame):
+ * platform/mock/MockRealtimeVideoSource.h:
+
2017-05-15 Myles C. Maxfield <mmaxfi...@apple.com>
Migrate Font constructor from bools to enums
Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp (216897 => 216898)
--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -48,7 +48,7 @@
Ref<CanvasCaptureMediaStreamTrack::Source> CanvasCaptureMediaStreamTrack::Source::create(HTMLCanvasElement& canvas, std::optional<double>&& frameRequestRate)
{
auto source = adoptRef(*new Source(canvas, WTFMove(frameRequestRate)));
- source->startProducingData();
+ source->start();
callOnMainThread([source = source.copyRef()] {
if (!source->m_canvas)
@@ -76,10 +76,6 @@
void CanvasCaptureMediaStreamTrack::Source::startProducingData()
{
- if (m_isProducingData)
- return;
- m_isProducingData = true;
-
if (!m_canvas)
return;
m_canvas->addObserver(*this);
@@ -93,10 +89,6 @@
void CanvasCaptureMediaStreamTrack::Source::stopProducingData()
{
- if (!m_isProducingData)
- return;
- m_isProducingData = false;
-
m_requestFrameTimer.stop();
if (!m_canvas)
@@ -113,7 +105,7 @@
{
ASSERT_UNUSED(canvas, m_canvas == &canvas);
- stopProducingData();
+ stop();
m_canvas = nullptr;
}
@@ -150,7 +142,7 @@
{
ASSERT(m_canvas);
- if (!m_isProducingData)
+ if (!isProducingData())
return;
if (m_frameRequestRate) {
Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h (216897 => 216898)
--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -62,7 +62,6 @@
// RealtimeMediaSource API
void startProducingData() final;
void stopProducingData() final;
- bool isProducingData() const { return m_isProducingData; }
const RealtimeMediaSourceCapabilities& capabilities() const final { return RealtimeMediaSourceCapabilities::emptyCapabilities(); }
const RealtimeMediaSourceSettings& settings() const final { return m_settings; }
bool applySize(const IntSize&) final { return true; }
@@ -70,7 +69,6 @@
void captureCanvas();
void requestFrameTimerFired();
- bool m_isProducingData { false };
bool m_shouldEmitFrame { true };
std::optional<double> m_frameRequestRate;
Timer m_requestFrameTimer;
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (216897 => 216898)
--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -346,7 +346,7 @@
if (m_private->hasCaptureAudioSource()) {
if (m_private->muted())
state |= HasMutedAudioCaptureDevice;
- else if (m_isProducingData)
+ else if (m_isProducingData && m_private->isProducingData())
state |= HasActiveAudioCaptureDevice;
}
}
@@ -356,7 +356,7 @@
if (m_private->hasCaptureVideoSource()) {
if (m_private->muted())
state |= HasMutedVideoCaptureDevice;
- else if (m_isProducingData)
+ else if (m_isProducingData && m_private->isProducingData())
state |= HasActiveVideoCaptureDevice;
}
}
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -62,8 +62,8 @@
bool ended() const { return m_isEnded; }
- void startProducingData() { m_source->startProducingData(); }
- void stopProducingData() { m_source->stopProducingData(); }
+ void startProducingData() { m_source->start(); }
+ void stopProducingData() { m_source->stop(); }
bool isProducingData() { return m_source->isProducingData(); }
bool isIsolated() const { return m_source->isIsolated(); }
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -60,21 +60,15 @@
m_suppressNotifications = false;
}
-void RealtimeMediaSource::reset()
-{
- m_stopped = false;
- m_muted = false;
-}
-
void RealtimeMediaSource::addObserver(RealtimeMediaSource::Observer& observer)
{
- m_observers.append(&observer);
+ m_observers.append(observer);
}
void RealtimeMediaSource::removeObserver(RealtimeMediaSource::Observer& observer)
{
- m_observers.removeFirstMatching([&observer](auto* anObserver) {
- return anObserver == &observer;
+ m_observers.removeFirstMatching([&observer](auto anObserver) {
+ return &anObserver.get() == &observer;
});
if (!m_observers.size())
@@ -83,39 +77,39 @@
void RealtimeMediaSource::setMuted(bool muted)
{
- if (m_stopped || m_muted == muted)
+ if (muted)
+ stop();
+ else
+ start();
+
+ notifyMutedChange(muted);
+}
+
+void RealtimeMediaSource::notifyMutedChange(bool muted)
+{
+ if (m_muted == muted)
return;
m_muted = muted;
- if (muted) {
- // FIXME: We need to figure out how to guarantee that at least one black video frame is
- // emitted after being muted.
- stopProducingData();
- } else
- startProducingData();
-
notifyMutedObservers();
}
void RealtimeMediaSource::notifyMutedObservers() const
{
- for (auto& observer : m_observers)
- observer->sourceMutedChanged();
+ for (Observer& observer : m_observers)
+ observer.sourceMutedChanged();
}
void RealtimeMediaSource::setEnabled(bool enabled)
{
- if (m_stopped || m_enabled == enabled)
+ if (m_enabled == enabled)
return;
m_enabled = enabled;
- if (m_stopped)
- return;
-
- for (auto& observer : m_observers)
- observer->sourceEnabledChanged();
+ for (Observer& observer : m_observers)
+ observer.sourceEnabledChanged();
}
void RealtimeMediaSource::settingsDidChange()
@@ -129,49 +123,57 @@
scheduleDeferredTask([this] {
m_pendingSettingsDidChangeNotification = false;
- for (auto& observer : m_observers)
- observer->sourceSettingsChanged();
+ for (Observer& observer : m_observers)
+ observer.sourceSettingsChanged();
});
}
void RealtimeMediaSource::videoSampleAvailable(MediaSample& mediaSample)
{
- ASSERT(isMainThread());
- for (const auto& observer : m_observers)
- observer->videoSampleAvailable(mediaSample);
+ for (Observer& observer : m_observers)
+ observer.videoSampleAvailable(mediaSample);
}
void RealtimeMediaSource::audioSamplesAvailable(const MediaTime& time, const PlatformAudioData& audioData, const AudioStreamDescription& description, size_t numberOfFrames)
{
- for (const auto& observer : m_observers)
- observer->audioSamplesAvailable(time, audioData, description, numberOfFrames);
+ for (Observer& observer : m_observers)
+ observer.audioSamplesAvailable(time, audioData, description, numberOfFrames);
}
-void RealtimeMediaSource::stop(Observer* callingObserver)
+void RealtimeMediaSource::start()
{
- if (stopped())
+ if (m_isProducingData)
return;
- m_stopped = true;
+ m_isProducingData = true;
+ startProducingData();
+}
- for (const auto& observer : m_observers) {
- if (observer != callingObserver)
- observer->sourceStopped();
- }
+void RealtimeMediaSource::stop()
+{
+ if (!m_isProducingData)
+ return;
+ m_isProducingData = false;
stopProducingData();
}
void RealtimeMediaSource::requestStop(Observer* callingObserver)
{
- if (stopped())
+ if (!m_isProducingData)
return;
- for (const auto& observer : m_observers) {
- if (observer->preventSourceFromStopping())
+ for (Observer& observer : m_observers) {
+ if (observer.preventSourceFromStopping())
return;
}
- stop(callingObserver);
+
+ stop();
+
+ for (Observer& observer : m_observers) {
+ if (&observer != callingObserver)
+ observer.sourceStopped();
+ }
}
bool RealtimeMediaSource::supportsSizeAndFrameRate(std::optional<int>, std::optional<int>, std::optional<double>)
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -127,60 +127,30 @@
const String& id() const { return m_id; }
const String& persistentID() const { return m_persistentID; }
- virtual void setPersistentID(const String& persistentID) { m_persistentID = persistentID; }
+ virtual void setPersistentID(String&& persistentID) { m_persistentID = WTFMove(persistentID); }
enum class Type { None, Audio, Video };
Type type() const { return m_type; }
- virtual const String& name() const { return m_name; }
- virtual void setName(const String& name) { m_name = name; }
+ bool isProducingData() const { return m_isProducingData; }
+ void start();
+ void stop();
+ void requestStop(Observer* callingObserver = nullptr);
+
+ bool muted() const { return m_muted; }
+ void setMuted(bool);
- virtual unsigned fitnessScore() const { return m_fitnessScore; }
+ bool enabled() const { return m_enabled; }
+ void setEnabled(bool);
- virtual const RealtimeMediaSourceCapabilities& capabilities() const = 0;
- virtual const RealtimeMediaSourceSettings& settings() const = 0;
-
- using SuccessHandler = std::function<void()>;
- using FailureHandler = std::function<void(const String& badConstraint, const String& errorString)>;
- virtual void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&);
- std::optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
-
- virtual bool supportsConstraints(const MediaConstraints&, String&);
- virtual bool supportsConstraint(const MediaConstraint&) const;
-
- virtual void settingsDidChange();
-
- virtual bool isIsolated() const { return false; }
+ const String& name() const { return m_name; }
+ void setName(const String& name) { m_name = name; }
- void videoSampleAvailable(MediaSample&);
- void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t);
-
- bool stopped() const { return m_stopped; }
+ unsigned fitnessScore() const { return m_fitnessScore; }
- virtual bool muted() const { return m_muted; }
- virtual void setMuted(bool);
-
- virtual bool enabled() const { return m_enabled; }
- virtual void setEnabled(bool);
-
- virtual bool isCaptureSource() const { return false; }
-
- virtual void monitorOrientation(OrientationNotifier&) { }
-
WEBCORE_EXPORT void addObserver(Observer&);
WEBCORE_EXPORT void removeObserver(Observer&);
- virtual void startProducingData() { }
- virtual void stopProducingData() { }
- virtual bool isProducingData() const { return false; }
-
- void stop(Observer* callingObserver = nullptr);
- void requestStop(Observer* callingObserver = nullptr);
-
- virtual void reset();
-
- virtual AudioSourceProvider* audioSourceProvider() { return nullptr; }
-
void setWidth(int);
void setHeight(int);
const IntSize& size() const { return m_size; }
@@ -214,6 +184,27 @@
void setEchoCancellation(bool);
virtual bool applyEchoCancellation(bool) { return false; }
+ virtual const RealtimeMediaSourceCapabilities& capabilities() const = 0;
+ virtual const RealtimeMediaSourceSettings& settings() const = 0;
+
+ using SuccessHandler = std::function<void()>;
+ using FailureHandler = std::function<void(const String& badConstraint, const String& errorString)>;
+ virtual void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&);
+ std::optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
+
+ virtual bool supportsConstraints(const MediaConstraints&, String&);
+ virtual bool supportsConstraint(const MediaConstraint&) const;
+
+ virtual void settingsDidChange();
+
+ virtual bool isIsolated() const { return false; }
+
+ virtual bool isCaptureSource() const { return false; }
+
+ virtual void monitorOrientation(OrientationNotifier&) { }
+
+ virtual AudioSourceProvider* audioSourceProvider() { return nullptr; }
+
protected:
RealtimeMediaSource(const String& id, Type, const String& name);
@@ -231,26 +222,31 @@
virtual void applyConstraints(const FlattenedConstraint&);
virtual void applySizeAndFrameRate(std::optional<int> width, std::optional<int> height, std::optional<double>);
- const Vector<Observer*> observers() const { return m_observers; }
-
void notifyMutedObservers() const;
+ void notifyMutedChange(bool muted);
void initializeVolume(double volume) { m_volume = volume; }
void initializeSampleRate(int sampleRate) { m_sampleRate = sampleRate; }
void initializeEchoCancellation(bool echoCancellation) { m_echoCancellation = echoCancellation; }
+ void videoSampleAvailable(MediaSample&);
+ void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t);
+
+private:
+ WeakPtr<RealtimeMediaSource> createWeakPtr() { return m_weakPtrFactory.createWeakPtr(); }
+
+ virtual void startProducingData() { }
+ virtual void stopProducingData() { }
+
bool m_muted { false };
bool m_enabled { true };
-private:
- WeakPtr<RealtimeMediaSource> createWeakPtr() { return m_weakPtrFactory.createWeakPtr(); }
-
WeakPtrFactory<RealtimeMediaSource> m_weakPtrFactory;
String m_id;
String m_persistentID;
Type m_type;
String m_name;
- Vector<Observer*> m_observers;
+ Vector<std::reference_wrapper<Observer>> m_observers;
IntSize m_size;
double m_frameRate { 30 };
double m_aspectRatio { 0 };
@@ -261,9 +257,9 @@
RealtimeMediaSourceSettings::VideoFacingMode m_facingMode { RealtimeMediaSourceSettings::User};
bool m_echoCancellation { false };
- bool m_stopped { false };
bool m_pendingSettingsDidChangeNotification { false };
bool m_suppressNotifications { true };
+ bool m_isProducingData { false };
};
struct CaptureSourceOrError {
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -68,7 +68,6 @@
void startProducingData() final;
void stopProducingData() final;
- bool isProducingData() const final;
protected:
AVMediaCaptureSource(AVCaptureDevice*, const AtomicString&, RealtimeMediaSource::Type);
@@ -91,7 +90,6 @@
private:
void setupSession();
- void reset() final;
void beginConfiguration() final;
void commitConfiguration() final;
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm 2017-05-16 02:45:28 UTC (rev 216898)
@@ -148,8 +148,7 @@
static_assert(static_cast<int>(InterruptionReason::AudioInUse) == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient, "InterruptionReason::AudioInUse is not AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient as expected");
#endif
- setPersistentID(device.uniqueID);
- setMuted(true);
+ setPersistentID(String(device.uniqueID));
}
AVMediaCaptureSource::~AVMediaCaptureSource()
@@ -262,17 +261,6 @@
[m_session commitConfiguration];
}
-void AVMediaCaptureSource::reset()
-{
- RealtimeMediaSource::reset();
- m_isRunning = false;
- for (NSString *keyName in sessionKVOProperties())
- [m_session removeObserver:m_objcObserver.get() forKeyPath:keyName];
-
- shutdownCaptureSession();
- m_session = nullptr;
-}
-
void AVMediaCaptureSource::captureSessionIsRunningDidChange(bool state)
{
scheduleDeferredTask([this, state] {
@@ -280,19 +268,10 @@
return;
m_isRunning = state;
- if (m_muted == !m_isRunning)
- return;
-
- m_muted = !m_isRunning;
- notifyMutedObservers();
+ notifyMutedChange(!m_isRunning);
});
}
-bool AVMediaCaptureSource::isProducingData() const
-{
- return m_isRunning;
-}
-
#if PLATFORM(IOS)
void AVMediaCaptureSource::captureSessionRuntimeError(RetainPtr<NSError> error)
{
Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -648,8 +648,6 @@
: RealtimeMediaSource(deviceID, RealtimeMediaSource::Type::Audio, label)
, m_captureDeviceID(persistentID)
{
- m_muted = true;
-
auto& unit = CoreAudioSharedUnit::singleton();
initializeEchoCancellation(unit.enableEchoCancellation());
@@ -680,21 +678,12 @@
void CoreAudioCaptureSource::startProducingData()
{
- if (m_isProducingData)
- return;
-
#if PLATFORM(IOS)
coreAudioCaptureSourceFactory().setActiveSource(*this);
#endif
CoreAudioSharedUnit::singleton().startProducingData();
- m_isProducingData = CoreAudioSharedUnit::singleton().isProducingData();
- if (!m_isProducingData)
- return;
-
- m_muted = false;
-
if (m_audioSourceProvider)
m_audioSourceProvider->prepare(&CoreAudioSharedUnit::singleton().microphoneFormat().streamDescription());
}
@@ -701,12 +690,7 @@
void CoreAudioCaptureSource::stopProducingData()
{
- if (!m_isProducingData)
- return;
-
CoreAudioSharedUnit::singleton().stopProducingData();
- m_isProducingData = false;
- m_muted = true;
if (m_audioSourceProvider)
m_audioSourceProvider->unprepare();
@@ -756,7 +740,7 @@
{
if (!m_audioSourceProvider) {
m_audioSourceProvider = WebAudioSourceProviderAVFObjC::create(*this);
- if (m_isProducingData)
+ if (isProducingData())
m_audioSourceProvider->prepare(&CoreAudioSharedUnit::singleton().microphoneFormat().streamDescription());
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -80,7 +80,6 @@
bool isCaptureSource() const final { return true; }
void startProducingData() final;
void stopProducingData() final;
- bool isProducingData() const final { return m_isProducingData; }
bool applyVolume(double) final { return true; }
bool applySampleRate(int) final;
@@ -93,7 +92,6 @@
uint32_t m_captureDeviceID { 0 };
- bool m_isProducingData { false };
bool m_isSuspended { false };
mutable std::optional<RealtimeMediaSourceCapabilities> m_capabilities;
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2017-05-16 02:45:28 UTC (rev 216898)
@@ -107,13 +107,6 @@
}
}
-RefPtr<MockRealtimeAudioSource> MockRealtimeAudioSource::createMuted(const String& name)
-{
- auto source = adoptRef(new MockRealtimeAudioSource(name));
- source->m_muted = true;
- return source;
-}
-
void MockRealtimeAudioSourceMac::emitSampleBuffers(uint32_t frameCount)
{
ASSERT(m_formatDescription);
@@ -158,7 +151,7 @@
uint32_t bipBopCount = std::min(frameCount, bipBopRemain);
for (auto& audioBuffer : m_audioBufferList->buffers()) {
audioBuffer.mDataByteSize = frameCount * m_streamFormat.mBytesPerFrame;
- if (!m_muted && m_enabled) {
+ if (!muted() && enabled()) {
memcpy(audioBuffer.mData, &m_bipBopBuffer[bipBopStart], sizeof(Float32) * bipBopCount);
addHum(HumVolume, HumFrequency, sampleRate(), m_samplesRendered, static_cast<float*>(audioBuffer.mData), bipBopCount);
} else
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm 2017-05-16 02:45:28 UTC (rev 216898)
@@ -65,13 +65,6 @@
{
}
-RefPtr<MockRealtimeVideoSource> MockRealtimeVideoSource::createMuted(const String& name)
-{
- auto source = adoptRef(new MockRealtimeVideoSource(name));
- source->m_muted = true;
- return source;
-}
-
RetainPtr<CMSampleBufferRef> MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer(CVPixelBufferRef pixelBuffer)
{
if (!pixelBuffer)
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -47,7 +47,7 @@
Ref<RealtimeIncomingAudioSource> RealtimeIncomingAudioSource::create(rtc::scoped_refptr<webrtc::AudioTrackInterface>&& audioTrack, String&& audioTrackId)
{
auto source = adoptRef(*new RealtimeIncomingAudioSource(WTFMove(audioTrack), WTFMove(audioTrackId)));
- source->startProducingData();
+ source->start();
return source;
}
@@ -55,6 +55,7 @@
: RealtimeMediaSource(WTFMove(audioTrackId), RealtimeMediaSource::Type::Audio, String())
, m_audioTrack(WTFMove(audioTrack))
{
+ notifyMutedChange(!m_audioTrack);
}
RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource()
@@ -63,7 +64,7 @@
m_audioSourceProvider->unprepare();
m_audioSourceProvider = nullptr;
}
- stopProducingData();
+ stop();
}
@@ -112,10 +113,6 @@
void RealtimeIncomingAudioSource::startProducingData()
{
- if (m_isProducingData)
- return;
-
- m_isProducingData = true;
if (m_audioTrack)
m_audioTrack->AddSink(this);
}
@@ -122,10 +119,6 @@
void RealtimeIncomingAudioSource::stopProducingData()
{
- if (!m_isProducingData)
- return;
-
- m_isProducingData = false;
if (m_audioTrack)
m_audioTrack->RemoveSink(this);
}
@@ -136,7 +129,8 @@
ASSERT(track);
m_audioTrack = WTFMove(track);
- if (m_isProducingData)
+ notifyMutedChange(!m_audioTrack);
+ if (isProducingData())
m_audioTrack->AddSink(this);
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -67,14 +67,11 @@
MediaConstraints& constraints() { return *m_constraints.get(); }
RealtimeMediaSourceSupportedConstraints& supportedConstraints();
- bool isProducingData() const final { return m_isProducingData; }
-
AudioSourceProvider* audioSourceProvider() final;
RealtimeMediaSourceSettings m_currentSettings;
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
RefPtr<MediaConstraints> m_constraints;
- bool m_isProducingData { false };
rtc::scoped_refptr<webrtc::AudioTrackInterface> m_audioTrack;
RefPtr<WebAudioSourceProviderAVFObjC> m_audioSourceProvider;
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -58,7 +58,7 @@
PixelBufferConformerCV conformer(conformerOptions.get());
auto source = adoptRef(*new RealtimeIncomingVideoSource(WTFMove(videoTrack), WTFMove(trackId), conformerOptions.get()));
- source->startProducingData();
+ source->start();
return source;
}
@@ -67,17 +67,13 @@
, m_videoTrack(WTFMove(videoTrack))
, m_conformer(conformerOptions)
{
- m_muted = !m_videoTrack;
m_currentSettings.setWidth(640);
m_currentSettings.setHeight(480);
+ notifyMutedChange(!m_videoTrack);
}
void RealtimeIncomingVideoSource::startProducingData()
{
- if (m_isProducingData)
- return;
-
- m_isProducingData = true;
if (m_videoTrack)
m_videoTrack->AddOrUpdateSink(this, rtc::VideoSinkWants());
}
@@ -87,18 +83,14 @@
ASSERT(!m_videoTrack);
ASSERT(track);
- m_muted = false;
- m_videoTrack = track;
- if (m_isProducingData)
+ m_videoTrack = WTFMove(track);
+ notifyMutedChange(!m_videoTrack);
+ if (isProducingData())
m_videoTrack->AddOrUpdateSink(this, rtc::VideoSinkWants());
}
void RealtimeIncomingVideoSource::stopProducingData()
{
- if (!m_isProducingData)
- return;
-
- m_isProducingData = false;
if (m_videoTrack)
m_videoTrack->RemoveSink(this);
}
@@ -133,7 +125,7 @@
void RealtimeIncomingVideoSource::OnFrame(const webrtc::VideoFrame& frame)
{
- if (!m_isProducingData)
+ if (!isProducingData())
return;
auto pixelBuffer = pixelBufferFromVideoFrame(frame);
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -66,7 +66,6 @@
void processNewSample(CMSampleBufferRef, unsigned, unsigned, MediaSample::VideoRotation);
- bool isProducingData() const final { return m_isProducingData && m_buffer; }
bool applySize(const IntSize&) final { return true; }
// rtc::VideoSinkInterface
@@ -78,7 +77,6 @@
RealtimeMediaSourceSettings m_currentSettings;
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
RefPtr<MediaConstraints> m_constraints;
- bool m_isProducingData { false };
rtc::scoped_refptr<webrtc::VideoTrackInterface> m_videoTrack;
RetainPtr<CMSampleBufferRef> m_buffer;
PixelBufferConformerCV m_conformer;
Modified: trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm 2017-05-16 02:45:28 UTC (rev 216898)
@@ -109,7 +109,7 @@
if (m_client && !m_connected) {
m_connected = true;
m_captureSource->addObserver(*this);
- m_captureSource->startProducingData();
+ m_captureSource->start();
} else if (!m_client && m_connected) {
m_captureSource->removeObserver(*this);
m_connected = false;
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -485,7 +485,7 @@
return;
}
- if (!remoteSource->stopped())
+ if (remoteSource->isProducingData())
remoteSource->swapOutShallowSource(*realSource);
}
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -55,7 +55,7 @@
, m_mediaSource(mediaSource)
{
if (!mediaSource)
- m_muted = true;
+ notifyMutedChange(true);
}
RealtimeMediaSourceOwr(const String& id, RealtimeMediaSource::Type type, const String& name)
Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -208,7 +208,7 @@
}
m_mutedRemoteSources.set(mid, source);
- return *source;
+ return source.releaseNonNull();
}
void MockMediaEndpoint::replaceSendSource(RealtimeMediaSource& newSource, const String& mid)
@@ -334,7 +334,7 @@
void MockMediaEndpoint::unmuteTimerFired()
{
- RefPtr<RealtimeMediaSource> source = m_mutedRemoteSources.get(m_midsOfSourcesToUnmute.takeLast());
+ auto* source = m_mutedRemoteSources.get(m_midsOfSourcesToUnmute.takeLast());
if (source)
source->setMuted(false);
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -65,14 +65,14 @@
return CaptureSourceOrError(WTFMove(source));
}
+#endif
-RefPtr<MockRealtimeAudioSource> MockRealtimeAudioSource::createMuted(const String& name)
+Ref<MockRealtimeAudioSource> MockRealtimeAudioSource::createMuted(const String& name)
{
- auto source = adoptRef(new MockRealtimeAudioSource(name));
- source->m_muted = true;
+ auto source = adoptRef(*new MockRealtimeAudioSource(name));
+ source->notifyMutedChange(true);
return source;
}
-#endif
static MockRealtimeAudioSourceFactory& mockAudioCaptureSourceFactory()
{
@@ -121,11 +121,6 @@
void MockRealtimeAudioSource::startProducingData()
{
- if (m_isProducingData)
- return;
-
- m_isProducingData = true;
-
#if PLATFORM(IOS)
mockAudioCaptureSourceFactory().setActiveSource(*this);
#endif
@@ -133,8 +128,6 @@
if (!sampleRate())
setSampleRate(!deviceIndex() ? 44100 : 48000);
- MockRealtimeMediaSource::startProducingData();
-
m_startTime = monotonicallyIncreasingTime();
m_timer.startRepeating(renderInterval());
}
@@ -141,12 +134,6 @@
void MockRealtimeAudioSource::stopProducingData()
{
- if (!m_isProducingData)
- return;
-
- m_isProducingData = false;
-
- MockRealtimeMediaSource::stopProducingData();
m_timer.stop();
m_elapsedTime += monotonicallyIncreasingTime() - m_startTime;
m_startTime = NAN;
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -43,7 +43,7 @@
public:
static CaptureSourceOrError create(const String&, const MediaConstraints*);
- static RefPtr<MockRealtimeAudioSource> createMuted(const String& name);
+ static Ref<MockRealtimeAudioSource> createMuted(const String& name);
static AudioCaptureFactory& factory();
@@ -54,7 +54,6 @@
void startProducingData() final;
void stopProducingData() final;
- bool isProducingData() const final { return m_isProducingData; }
virtual void render(double) { }
@@ -80,7 +79,6 @@
double m_startTime { NAN };
double m_lastRenderTime { NAN };
double m_elapsedTime { 0 };
- bool m_isProducingData { false };
};
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -80,11 +80,11 @@
switch (type) {
case RealtimeMediaSource::Type::Audio:
m_deviceIndex = name == audioDevices()[0].label() ? 0 : 1;
- setPersistentID(audioDevices()[m_deviceIndex].persistentId());
+ setPersistentID(String(audioDevices()[m_deviceIndex].persistentId()));
return;
case RealtimeMediaSource::Type::Video:
m_deviceIndex = name == videoDevices()[0].label() ? 0 : 1;
- setPersistentID(videoDevices()[m_deviceIndex].persistentId());
+ setPersistentID(String(videoDevices()[m_deviceIndex].persistentId()));
return;
case RealtimeMediaSource::Type::None:
ASSERT_NOT_REACHED();
@@ -132,18 +132,6 @@
return m_supportedConstraints;
}
-void MockRealtimeMediaSource::startProducingData()
-{
- m_isProducingData = true;
- setMuted(false);
-}
-
-void MockRealtimeMediaSource::stopProducingData()
-{
- m_isProducingData = false;
- setMuted(true);
-}
-
} // namespace WebCore
#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -65,9 +65,6 @@
virtual void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&) = 0;
#endif
- void startProducingData() override;
- void stopProducingData() override;
-
const RealtimeMediaSourceCapabilities& capabilities() const override;
const RealtimeMediaSourceSettings& settings() const override;
@@ -84,14 +81,11 @@
void initializeSettings();
#endif
- bool isProducingData() const override { return m_isProducingData; }
-
RealtimeMediaSourceSettings m_currentSettings;
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
std::unique_ptr<RealtimeMediaSourceCapabilities> m_capabilities;
RefPtr<MediaConstraints> m_constraints;
unsigned m_deviceIndex { 0 };
- bool m_isProducingData { false };
};
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -72,14 +72,14 @@
return CaptureSourceOrError(WTFMove(source));
}
+#endif
-RefPtr<MockRealtimeVideoSource> MockRealtimeVideoSource::createMuted(const String& name)
+Ref<MockRealtimeVideoSource> MockRealtimeVideoSource::createMuted(const String& name)
{
- auto source = adoptRef(new MockRealtimeVideoSource(name));
- source->m_muted = true;
+ auto source = adoptRef(*new MockRealtimeVideoSource(name));
+ source->notifyMutedChange(true);
return source;
}
-#endif
static MockRealtimeVideoSourceFactory& mockVideoCaptureSourceFactory()
{
@@ -112,16 +112,10 @@
void MockRealtimeVideoSource::startProducingData()
{
- if (m_isProducingData)
- return;
-
- m_isProducingData = true;
-
#if PLATFORM(IOS)
mockVideoCaptureSourceFactory().setActiveSource(*this);
#endif
- MockRealtimeMediaSource::startProducingData();
if (size().isEmpty()) {
setWidth(640);
setHeight(480);
@@ -133,12 +127,6 @@
void MockRealtimeVideoSource::stopProducingData()
{
- if (!m_isProducingData)
- return;
-
- m_isProducingData = false;
-
- MockRealtimeMediaSource::stopProducingData();
m_timer.stop();
m_elapsedTime += monotonicallyIncreasingTime() - m_startTime;
m_startTime = NAN;
@@ -384,7 +372,7 @@
FloatRect frameRect(FloatPoint(), size);
context.fillRect(FloatRect(FloatPoint(), size), !deviceIndex() ? Color::black : Color::darkGray);
- if (!m_muted && m_enabled) {
+ if (!muted() && enabled()) {
drawText(context);
drawAnimation(context);
drawBoxes(context);
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h (216897 => 216898)
--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h 2017-05-16 02:45:28 UTC (rev 216898)
@@ -47,7 +47,7 @@
public:
static CaptureSourceOrError create(const String&, const MediaConstraints*);
- static RefPtr<MockRealtimeVideoSource> createMuted(const String& name);
+ static Ref<MockRealtimeVideoSource> createMuted(const String& name);
static VideoCaptureFactory& factory();
@@ -69,7 +69,6 @@
void startProducingData() final;
void stopProducingData() final;
- bool isProducingData() const final { return m_isProducingData; }
void drawAnimation(GraphicsContext&);
void drawText(GraphicsContext&);
@@ -103,7 +102,6 @@
unsigned m_frameNumber { 0 };
RunLoop::Timer<MockRealtimeVideoSource> m_timer;
- bool m_isProducingData { false };
};
} // namespace WebCore
Modified: trunk/Source/WebKit2/ChangeLog (216897 => 216898)
--- trunk/Source/WebKit2/ChangeLog 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebKit2/ChangeLog 2017-05-16 02:45:28 UTC (rev 216898)
@@ -1,3 +1,15 @@
+2017-05-15 Youenn Fablet <you...@apple.com>
+
+ Simplify RealtimeMediaSource data production and state
+ https://bugs.webkit.org/show_bug.cgi?id=171999
+
+ Reviewed by Eric Carlson.
+
+ * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+ (WebKit::UserMediaCaptureManagerProxy::startProducingData):
+ (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
+ * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+
2017-05-15 Brent Fulgham <bfulg...@apple.com>
Correct typo (part of r216790).
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (216897 => 216898)
--- trunk/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -154,7 +154,7 @@
{
auto iter = m_proxies.find(id);
if (iter != m_proxies.end())
- iter->value->source().startProducingData();
+ iter->value->source().start();
}
void UserMediaCaptureManagerProxy::stopProducingData(uint64_t id)
@@ -161,7 +161,7 @@
{
auto iter = m_proxies.find(id);
if (iter != m_proxies.end())
- iter->value->source().stopProducingData();
+ iter->value->source().stop();
}
void UserMediaCaptureManagerProxy::capabilities(uint64_t id, WebCore::RealtimeMediaSourceCapabilities& capabilities)
Modified: trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp (216897 => 216898)
--- trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp 2017-05-16 01:59:10 UTC (rev 216897)
+++ trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp 2017-05-16 02:45:28 UTC (rev 216898)
@@ -110,8 +110,7 @@
WebAudioBufferList audioData(m_description, numberOfFrames);
m_ringBuffer.fetch(audioData.list(), numberOfFrames, time.timeValue());
- for (auto* observer : observers())
- observer->audioSamplesAvailable(time, audioData, m_description, numberOfFrames);
+ RealtimeMediaSource::audioSamplesAvailable(time, audioData, m_description, numberOfFrames);
}
void applyConstraintsSucceeded(const WebCore::RealtimeMediaSourceSettings& settings)
@@ -127,24 +126,6 @@
callbacks.failureHandler(failedConstraint, errorMessage);
}
- void setMuted(bool muted) final
- {
- if (m_muted == muted)
- return;
-
- m_muted = muted;
- m_manager.setMuted(m_id, m_muted);
- }
-
- void setEnabled(bool enabled) final
- {
- if (m_enabled == enabled)
- return;
-
- m_enabled = enabled;
- m_manager.setEnabled(m_id, m_enabled);
- }
-
private:
void startProducingData() final { m_manager.startProducingData(m_id); }
void stopProducingData() final { m_manager.stopProducingData(m_id); }