Title: [211978] trunk/Source/WebCore
Revision
211978
Author
[email protected]
Date
2017-02-09 12:28:44 -0800 (Thu, 09 Feb 2017)

Log Message

Make passing PlatformAudioData in audioSamplesAvaliable const-correct.
https://bugs.webkit.org/show_bug.cgi?id=168051

Reviewed by Eric Carlson.

Modify all the functions which take a (conceptually) read-only audio buffer const-correct.

Drive-by fix: AudioSampleBufferList::copyFrom() set a ivar pointer to the passed in
AudioBufferList. Ensure that the ivar is reset when copyFrom() returns by using a
SetForScope.

* platform/audio/mac/AudioSampleBufferList.cpp:
(WebCore::AudioSampleBufferList::copyFrom):
* platform/audio/mac/AudioSampleBufferList.h:
* platform/audio/mac/AudioSampleDataSource.cpp:
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pushSamples):
* platform/audio/mac/AudioSampleDataSource.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::audioSamplesAvailable):
* platform/mediastream/RealtimeMediaSource.h:
(WebCore::RealtimeMediaSource::Observer::audioSamplesAvailable):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
* platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:
(WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):
* platform/mediastream/mac/RealtimeOutgoingAudioSource.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (211977 => 211978)


--- trunk/Source/WebCore/ChangeLog	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/ChangeLog	2017-02-09 20:28:44 UTC (rev 211978)
@@ -1,5 +1,36 @@
 2017-02-09  Jer Noble  <[email protected]>
 
+        Make passing PlatformAudioData in audioSamplesAvaliable const-correct.
+        https://bugs.webkit.org/show_bug.cgi?id=168051
+
+        Reviewed by Eric Carlson.
+
+        Modify all the functions which take a (conceptually) read-only audio buffer const-correct.
+
+        Drive-by fix: AudioSampleBufferList::copyFrom() set a ivar pointer to the passed in
+        AudioBufferList. Ensure that the ivar is reset when copyFrom() returns by using a
+        SetForScope.
+
+        * platform/audio/mac/AudioSampleBufferList.cpp:
+        (WebCore::AudioSampleBufferList::copyFrom):
+        * platform/audio/mac/AudioSampleBufferList.h:
+        * platform/audio/mac/AudioSampleDataSource.cpp:
+        (WebCore::AudioSampleDataSource::pushSamplesInternal):
+        (WebCore::AudioSampleDataSource::pushSamples):
+        * platform/audio/mac/AudioSampleDataSource.h:
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::RealtimeMediaSource::audioSamplesAvailable):
+        * platform/mediastream/RealtimeMediaSource.h:
+        (WebCore::RealtimeMediaSource::Observer::audioSamplesAvailable):
+        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
+        (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
+        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
+        * platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:
+        (WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):
+        * platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
+
+2017-02-09  Jer Noble  <[email protected]>
+
         Fix some logging statements in MediaPlayerPrivateMediaStreamAVFObjC
         https://bugs.webkit.org/show_bug.cgi?id=168063
 

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp (211977 => 211978)


--- trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp	2017-02-09 20:28:44 UTC (rev 211978)
@@ -32,6 +32,7 @@
 #include "VectorMath.h"
 #include <Accelerate/Accelerate.h>
 #include <AudioToolbox/AudioConverter.h>
+#include <wtf/SetForScope.h>
 
 namespace WebCore {
 
@@ -244,7 +245,7 @@
     return static_cast<AudioSampleBufferList*>(inRefCon)->convertInput(ioNumberDataPackets, ioData);
 }
 
-OSStatus AudioSampleBufferList::copyFrom(AudioBufferList& source, AudioConverterRef converter)
+OSStatus AudioSampleBufferList::copyFrom(const AudioBufferList& source, AudioConverterRef converter)
 {
     reset();
 
@@ -252,7 +253,7 @@
     UInt32 propertyDataSize = sizeof(inputFormat);
     AudioConverterGetProperty(converter, kAudioConverterCurrentInputStreamDescription, &propertyDataSize, &inputFormat);
     m_converterInputBytesPerPacket = inputFormat.mBytesPerPacket;
-    m_converterInputBuffer = &source;
+    SetForScope<const AudioBufferList*> scopedInputBuffer(m_converterInputBuffer, &source);
 
 #if !LOG_DISABLED
     AudioStreamBasicDescription outputFormat;

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.h (211977 => 211978)


--- trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.h	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSampleBufferList.h	2017-02-09 20:28:44 UTC (rev 211978)
@@ -51,7 +51,7 @@
     void applyGain(float);
 
     OSStatus copyFrom(const AudioSampleBufferList&, size_t count = SIZE_MAX);
-    OSStatus copyFrom(AudioBufferList&, AudioConverterRef);
+    OSStatus copyFrom(const AudioBufferList&, AudioConverterRef);
     OSStatus copyFrom(AudioSampleBufferList&, AudioConverterRef);
     OSStatus copyFrom(CARingBuffer&, size_t frameCount, uint64_t startFrame, CARingBuffer::FetchMode);
 
@@ -83,8 +83,7 @@
 
     std::unique_ptr<CAAudioStreamDescription> m_internalFormat;
 
-    AudioSampleBufferList* m_converterInputBuffer2 { nullptr };
-    AudioBufferList* m_converterInputBuffer { nullptr };
+    const AudioBufferList* m_converterInputBuffer { nullptr };
     uint32_t m_converterInputBytesPerPacket { 0 };
 
     uint64_t m_timestamp { 0 };

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp (211977 => 211978)


--- trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp	2017-02-09 20:28:44 UTC (rev 211978)
@@ -141,11 +141,11 @@
     return MediaTime::createWithDouble(mach_absolute_time() * frequency);
 }
 
-void AudioSampleDataSource::pushSamplesInternal(AudioBufferList& bufferList, const MediaTime& presentationTime, size_t sampleCount)
+void AudioSampleDataSource::pushSamplesInternal(const AudioBufferList& bufferList, const MediaTime& presentationTime, size_t sampleCount)
 {
     ASSERT(m_lock.isHeld());
 
-    AudioBufferList* sampleBufferList;
+    const AudioBufferList* sampleBufferList;
     if (m_converter) {
         m_scratchBuffer->reset();
         OSStatus err = m_scratchBuffer->copyFrom(bufferList, m_converter);
@@ -197,7 +197,7 @@
     pushSamplesInternal(list, toMediaTime(CMSampleBufferGetPresentationTimeStamp(sampleBuffer)), CMSampleBufferGetNumSamples(sampleBuffer));
 }
 
-void AudioSampleDataSource::pushSamples(const MediaTime& sampleTime, PlatformAudioData& audioData, size_t sampleCount)
+void AudioSampleDataSource::pushSamples(const MediaTime& sampleTime, const PlatformAudioData& audioData, size_t sampleCount)
 {
     std::unique_lock<Lock> lock(m_lock, std::try_to_lock);
     ASSERT(is<WebAudioBufferList>(audioData));

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.h (211977 => 211978)


--- trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.h	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSampleDataSource.h	2017-02-09 20:28:44 UTC (rev 211978)
@@ -52,7 +52,7 @@
     OSStatus setInputFormat(const CAAudioStreamDescription&);
     OSStatus setOutputFormat(const CAAudioStreamDescription&);
 
-    void pushSamples(const MediaTime&, PlatformAudioData&, size_t);
+    void pushSamples(const MediaTime&, const PlatformAudioData&, size_t);
     void pushSamples(const AudioStreamBasicDescription&, CMSampleBufferRef);
 
     enum PullMode { Copy, Mix };
@@ -73,7 +73,7 @@
     OSStatus setupConverter();
     bool pullSamplesInternal(AudioBufferList&, size_t&, uint64_t, double, PullMode);
 
-    void pushSamplesInternal(AudioBufferList&, const MediaTime&, size_t frameCount);
+    void pushSamplesInternal(const AudioBufferList&, const MediaTime&, size_t frameCount);
 
     std::unique_ptr<CAAudioStreamDescription> m_inputDescription;
     std::unique_ptr<CAAudioStreamDescription> m_outputDescription;

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2017-02-09 20:28:44 UTC (rev 211978)
@@ -119,7 +119,7 @@
         observer->videoSampleAvailable(mediaSample);
 }
 
-void RealtimeMediaSource::audioSamplesAvailable(const MediaTime& time, PlatformAudioData& audioData, const AudioStreamDescription& description, size_t numberOfFrames)
+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);

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2017-02-09 20:28:44 UTC (rev 211978)
@@ -78,7 +78,7 @@
         virtual void videoSampleAvailable(MediaSample&) { }
 
         // May be called on a background thread.
-        virtual void audioSamplesAvailable(const MediaTime&, PlatformAudioData&, const AudioStreamDescription&, size_t /*numberOfFrames*/) { }
+        virtual void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t /*numberOfFrames*/) { }
     };
 
     virtual ~RealtimeMediaSource() { }
@@ -110,7 +110,7 @@
     virtual void settingsDidChange();
 
     void videoSampleAvailable(MediaSample&);
-    void audioSamplesAvailable(const MediaTime&, PlatformAudioData&, const AudioStreamDescription&, size_t);
+    void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t);
     
     bool stopped() const { return m_stopped; }
 

Modified: trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp	2017-02-09 20:28:44 UTC (rev 211978)
@@ -178,7 +178,7 @@
     return err;
 }
 
-void AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable(const MediaTime& sampleTime, PlatformAudioData& audioData, const AudioStreamDescription& description, size_t sampleCount)
+void AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable(const MediaTime& sampleTime, const PlatformAudioData& audioData, const AudioStreamDescription& description, size_t sampleCount)
 {
     ASSERT(description.platformDescription().type == PlatformDescription::CAAudioStreamBasicType);
 

Modified: trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h	2017-02-09 20:28:44 UTC (rev 211978)
@@ -66,7 +66,7 @@
     void sourceMutedChanged()  final { }
     void sourceSettingsChanged() final { }
     bool preventSourceFromStopping() final { return false; }
-    void audioSamplesAvailable(const MediaTime&, PlatformAudioData&, const AudioStreamDescription&, size_t) final;
+    void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
 
     static OSStatus inputProc(void*, AudioUnitRenderActionFlags*, const AudioTimeStamp*, UInt32 inBusNumber, UInt32 numberOfFrames, AudioBufferList*);
     OSStatus render(UInt32 sampleCount, AudioBufferList&, UInt32 inBusNumber, const AudioTimeStamp&, AudioUnitRenderActionFlags&);

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp	2017-02-09 20:28:44 UTC (rev 211978)
@@ -35,7 +35,7 @@
 
 namespace WebCore {
 
-void RealtimeOutgoingAudioSource::audioSamplesAvailable(const MediaTime&, PlatformAudioData&, const AudioStreamDescription&, size_t)
+void RealtimeOutgoingAudioSource::audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t)
 {
     notImplemented();
 }

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.h (211977 => 211978)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.h	2017-02-09 20:22:31 UTC (rev 211977)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeOutgoingAudioSource.h	2017-02-09 20:28:44 UTC (rev 211978)
@@ -66,7 +66,7 @@
     void sourceMutedChanged() final { }
     void sourceSettingsChanged() final { }
     bool preventSourceFromStopping() final { return false; }
-    void audioSamplesAvailable(const MediaTime&, PlatformAudioData&, const AudioStreamDescription&, size_t) final;
+    void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
 
     void convertAndSendMonoSamples();
     void convertAndSendStereoSamples();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to