Changeset 150561 in webkit


Ignore:
Timestamp:
May 22, 2013 8:36:15 PM (11 years ago)
Author:
dino@apple.com
Message:

Rolling out r150555. It borked about 30 media tests.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):

  • html/HTMLMediaElement.h:
  • platform/audio/AudioSession.cpp:

(WebCore):
(WebCore::AudioSession::AudioSession):
(WebCore::AudioSession::preferredBufferDuration):
(WebCore::AudioSession::setPreferredBufferDuration):

  • platform/audio/AudioSession.h:
  • platform/audio/AudioSessionListener.h:

(AudioSessionListener):

  • platform/audio/AudioSessionManager.cpp: Removed.
  • platform/audio/AudioSessionManager.h: Removed.
  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::configure):

  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSession::preferredBufferDuration):
(WebCore::AudioSession::setPreferredBufferDuration):

  • platform/audio/mac/AudioDestinationMac.cpp:

(WebCore::AudioDestination::hardwareSampleRate):
(WebCore::AudioDestinationMac::AudioDestinationMac):
(WebCore::AudioDestinationMac::configure):

  • platform/audio/mac/AudioDestinationMac.h:

(AudioDestinationMac):

  • platform/audio/mac/AudioSessionMac.cpp: Removed.
  • platform/audio/mac/AudioSessionManagerMac.cpp: Removed.

Source/WTF:

  • wtf/Platform.h:
Location:
trunk/Source
Files:
4 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r150555 r150561  
    1 2013-05-22  Jer Noble  <jer.noble@apple.com>
    2 
    3         Mac: Set the default audio buffer size to a large value for <video> elements.
    4         https://bugs.webkit.org/show_bug.cgi?id=116342
    5 
    6         Reviewed by Eric Carlson.
    7 
    8         * wtf/Platform.h: Add a WTF_USE_AUDIO_SESSION setting.
     12013-05-22  Dean Jackson  <dino@apple.com>
     2
     3        Rolling out r150555. It borked about 30 media tests.
     4
     5        * wtf/Platform.h:
    96
    1072013-05-21  Anders Carlsson  <andersca@apple.com>
  • trunk/Source/WTF/wtf/Platform.h

    r150555 r150561  
    10191019#endif /* #if PLATFORM(MAC) && (PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070) */
    10201020
    1021 #if PLATFORM(MAC) || PLATFORM(IOS)
    1022 #define WTF_USE_AUDIO_SESSION 1
    1023 #endif
    1024 
    10251021#endif /* WTF_Platform_h */
  • trunk/Source/WebCore/ChangeLog

    r150560 r150561  
     12013-05-22  Dean Jackson  <dino@apple.com>
     2
     3        Rolling out r150555. It borked about 30 media tests.
     4
     5        * WebCore.xcodeproj/project.pbxproj:
     6        * html/HTMLMediaElement.cpp:
     7        (WebCore::HTMLMediaElement::HTMLMediaElement):
     8        * html/HTMLMediaElement.h:
     9        * platform/audio/AudioSession.cpp:
     10        (WebCore):
     11        (WebCore::AudioSession::AudioSession):
     12        (WebCore::AudioSession::preferredBufferDuration):
     13        (WebCore::AudioSession::setPreferredBufferDuration):
     14        * platform/audio/AudioSession.h:
     15        * platform/audio/AudioSessionListener.h:
     16        (AudioSessionListener):
     17        * platform/audio/AudioSessionManager.cpp: Removed.
     18        * platform/audio/AudioSessionManager.h: Removed.
     19        * platform/audio/ios/AudioDestinationIOS.cpp:
     20        (WebCore::AudioDestinationIOS::configure):
     21        * platform/audio/ios/AudioSessionIOS.mm:
     22        (WebCore::AudioSession::preferredBufferDuration):
     23        (WebCore::AudioSession::setPreferredBufferDuration):
     24        * platform/audio/mac/AudioDestinationMac.cpp:
     25        (WebCore::AudioDestination::hardwareSampleRate):
     26        (WebCore::AudioDestinationMac::AudioDestinationMac):
     27        (WebCore::AudioDestinationMac::configure):
     28        * platform/audio/mac/AudioDestinationMac.h:
     29        (AudioDestinationMac):
     30        * platform/audio/mac/AudioSessionMac.cpp: Removed.
     31        * platform/audio/mac/AudioSessionManagerMac.cpp: Removed.
     32
    1332013-05-20  Jeffrey Pfau  <jpfau@apple.com>
    234
     
    3163        (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer): Add matching resume reason
    3264
    33 2013-05-22  Jer Noble  <jer.noble@apple.com>
    34 
    35         Unreviewed build fix; cast OSStatus to an int before passing it to printf.
    36 
    37         * platform/audio/mac/AudioSessionMac.cpp:
    38         (WebCore::AudioSession::setPreferredBufferSize):
    39 
    40652013-05-22  Dean Jackson  <dino@apple.com>
    4166
     
    5782        * rendering/RenderSnapshottedPlugIn.cpp:
    5883        (WebCore::RenderSnapshottedPlugIn::handleEvent): Don't set play state here. Let the restart functions do it.
    59 
    60 2013-05-22  Jer Noble  <jer.noble@apple.com>
    61 
    62         Mac: Set the default audio buffer size to a large value for <video> elements.
    63         https://bugs.webkit.org/show_bug.cgi?id=116342
    64 
    65         Reviewed by Eric Carlson.
    66 
    67         To enable power savings by waking up the audio hardware less often, set the
    68         requested buffer frame size to a large value, such as 4096. Since this results
    69         in approximately 100ms worth of buffer, set the buffer size to a much lower
    70         value when playing WebAudio, which is much more sensitive to latency than video
    71         or audio elements.
    72 
    73         Introduce a new class, AudioSessionManager, as well as a helper class,
    74         AudioSessionManagerToken. Audio elements, video elements, and WebAudio destination
    75         nodes will create and retain a token, and release the token in their destructor.
    76         This allows the AudioSessionManager to track how many of what type of audio-
    77         generating objects are in existence.
    78 
    79         This requires implementing AudioSession for Mac platforms. Move the implementation
    80         for retrieving the hardware sample rate and setting the buffer duration into
    81         AudioSessionMac from AudioDestinationMac, to be shared with AudioSessionManagerMac.
    82 
    83         Change the AudioSession method preferredBufferLength() into preferredBufferSize(),
    84         as the callers really want to specify a buffer size, not a buffer duration. On iOS,
    85         where the available API requires a duration, perform the conversion from duration to
    86         size on behalf of the caller.
    87 
    88         * html/HTMLMediaElement.h:  Add a AudioSessionManagerToken member.
    89         * html/HTMLMediaElement.cpp:
    90         (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize the token.
    91         * platform/audio/AudioSession.cpp:
    92         (WebCore::AudioSession::preferredBufferSize): Renamed from preferredBufferLength.
    93         (WebCore::AudioSession::setPreferredBufferSize): Renamed from setPreferredBufferLength.
    94         * platform/audio/AudioSession.h:
    95         * platform/audio/AudioSessionManager.cpp:
    96         (AudioSessionManagerToken::create): Simple factory method.
    97         (AudioSessionManagerToken::AudioSessionManagerToken): Call AudioSessionManager::incrementCount().
    98         (AudioSessionManagerToken::~AudioSessionManagerToken): Call AudioSessionManager::decrementCount().
    99         (AudioSessionManager::sharedManager): Simple singleton method.
    100         (AudioSessionManager::AudioSessionManager): Simple constructor.
    101         (AudioSessionManager::has): Return whether the type is present.
    102         (AudioSessionManager::incrementCount): Increment, then call updateSessionState()
    103         (AudioSessionManager::decrementCount): Decrement, then call updateSessionState()
    104         (AudioSessionManager::updateSessionState): Stub, does nothing.
    105         * platform/audio/AudioSessionManager.h:
    106         * platform/audio/ios/AudioDestinationIOS.cpp:
    107         (WebCore::AudioDestinationIOS::configure): Call setPreferredBufferSize() instead of setPreferredBufferLength()
    108         * platform/audio/ios/AudioSessionIOS.mm:
    109         (WebCore::AudioSession::preferredBufferSize): Renamed from preferredBufferLength.
    110         (WebCore::AudioSession::setPreferredBufferSize): Renamed from setPreferredBufferLength
    111         * platform/audio/mac/AudioDestinationMac.cpp:
    112         (WebCore::AudioDestination::hardwareSampleRate): Call AudioSession::sampleRate().
    113         (WebCore::AudioDestinationMac::AudioDestinationMac): Create the AudioSessionManagerToken.
    114         (WebCore::AudioDestinationMac::configure): Do not set the buffer size (this is done in AudioSessionManagerMac).
    115         * platform/audio/mac/AudioDestinationMac.h:
    116         * platform/audio/mac/AudioSessionMac.cpp: Added.
    117         (WebCore::defaultDevice): Added, returns the default audio device.
    118         (WebCore::AudioSession::AudioSession): Simple constructor.
    119         (WebCore::AudioSession::~AudioSession): Simple destructor.
    120         (WebCore::AudioSession::category): Stub, unimplemented.
    121         (WebCore::AudioSession::setCategory): Ditto.
    122         (WebCore::AudioSession::categoryOverride): Ditto.
    123         (WebCore::AudioSession::setCategoryOverride): Ditto.
    124         (WebCore::AudioSession::numberOfOutputChannels): Ditto.
    125         (WebCore::AudioSession::setActive): Ditto.
    126         (WebCore::AudioSession::sampleRate): Use the HAL to return the default audio device sample rate.
    127         (WebCore::AudioSession::preferredBufferSize): Return the current HAL setting.
    128         (WebCore::AudioSession::setPreferredBufferSize): Set the buffer size.
    129         * platform/audio/mac/AudioSessionManagerMac.cpp:
    130         (AudioSessionManager::updateSessionState): Set the buffer size depending on what audio outputs are present.
    131         * WebCore.xcodeproj/project.pbxproj: Add the new files to the project.
    13284
    133852013-05-22  Max Vujovic  <mvujovic@adobe.com>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r150555 r150561  
    52085208                CD47B3FC16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD47B3FA16CC34F800A21EC8 /* CDMPrivateAVFoundation.mm */; };
    52095209                CD4AC52A1496AE9A0087C4EF /* Composite.wav in Copy Audio Resources */ = {isa = PBXBuildFile; fileRef = CD4AC5281496AE2F0087C4EF /* Composite.wav */; };
    5210                 CD54DE4717468B6F005E5B36 /* AudioSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */; };
    5211                 CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */; };
    52125210                CD7E05221651C28200C1201F /* WebCoreAVFResourceLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */; };
    52135211                CD82030A1395AB6A00F956C6 /* WebVideoFullscreenController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8203061395AB6A00F956C6 /* WebVideoFullscreenController.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    52305228                CDA98E0E1603FE5800FEA3B1 /* MediaKeySession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDA98DC716014F2C00FEA3B1 /* MediaKeySession.cpp */; };
    52315229                CDAA8D0A14D71B2E0061EA60 /* PlatformClockCM.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDAA8D0814D385600061EA60 /* PlatformClockCM.mm */; };
    5232                 CDAE8C091746B95700532D78 /* AudioSessionManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */; };
    52335230                CDB859F7160D48A400E5B07F /* MediaKeyEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB859F4160D489900E5B07F /* MediaKeyEvent.cpp */; };
    52345231                CDB859FA160D494900E5B07F /* JSMediaKeyEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDB859F8160D493E00E5B07F /* JSMediaKeyEvent.cpp */; };
     
    1196011957                CD4AC5281496AE2F0087C4EF /* Composite.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = Composite.wav; path = platform/audio/resources/Composite.wav; sourceTree = SOURCE_ROOT; };
    1196111958                CD4E0AFA11F7BC27009D3811 /* fullscreen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = fullscreen.css; sourceTree = "<group>"; };
    11962                 CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionManagerMac.cpp; sourceTree = "<group>"; };
    11963                 CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionMac.cpp; sourceTree = "<group>"; };
    1196411959                CD7E05201651A84100C1201F /* WebCoreAVFResourceLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebCoreAVFResourceLoader.h; path = objc/WebCoreAVFResourceLoader.h; sourceTree = "<group>"; };
    1196511960                CD7E05211651A84100C1201F /* WebCoreAVFResourceLoader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WebCoreAVFResourceLoader.mm; path = objc/WebCoreAVFResourceLoader.mm; sourceTree = "<group>"; };
     
    1200111996                CDAA8D0714D385600061EA60 /* PlatformClockCM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformClockCM.h; sourceTree = "<group>"; };
    1200211997                CDAA8D0814D385600061EA60 /* PlatformClockCM.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformClockCM.mm; sourceTree = "<group>"; };
    12003                 CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSessionManager.cpp; sourceTree = "<group>"; };
    12004                 CDAE8C081746B95700532D78 /* AudioSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSessionManager.h; sourceTree = "<group>"; };
    1200511998                CDB859F2160D489900E5B07F /* MediaKeyError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaKeyError.h; sourceTree = "<group>"; };
    1200611999                CDB859F3160D489900E5B07F /* MediaKeyError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaKeyError.idl; sourceTree = "<group>"; };
     
    2077020763                                CDA79823170A258300D45C55 /* AudioSession.cpp */,
    2077120764                                CDA79822170A24F400D45C55 /* AudioSessionListener.h */,
    20772                                 CDAE8C071746B95700532D78 /* AudioSessionManager.cpp */,
    20773                                 CDAE8C081746B95700532D78 /* AudioSessionManager.h */,
    2077420765                                FD31605312B026F700C1A359 /* AudioSourceProvider.h */,
    2077520766                                FD62F52D145898D80094B0ED /* AudioSourceProviderClient.h */,
     
    2083820829                                FD3160B912B0272A00C1A359 /* AudioFileReaderMac.h */,
    2083920830                                FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */,
    20840                                 CD54DE4517468B6F005E5B36 /* AudioSessionManagerMac.cpp */,
    20841                                 CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */,
    2084220831                        );
    2084320832                        path = mac;
     
    2503825027                                4358E8801360A31700E4748C /* FEDropShadow.cpp in Sources */,
    2503925028                                84730D7E1248F0B300D3A9C9 /* FEFlood.cpp in Sources */,
    25040                                 CD54DE4B17469C6D005E5B36 /* AudioSessionMac.cpp in Sources */,
    2504125029                                84801954108BAFB300CB2B1F /* FEGaussianBlur.cpp in Sources */,
    2504225030                                84730D801248F0B300D3A9C9 /* FELighting.cpp in Sources */,
     
    2637026358                                F55B3DCF1251F12D003EF269 /* ResetInputType.cpp in Sources */,
    2637126359                                514BC842161CF05C004D52F4 /* ResourceBuffer.cpp in Sources */,
    26372                                 CD54DE4717468B6F005E5B36 /* AudioSessionManagerMac.cpp in Sources */,
    2637326360                                514BC83F161CF04A004D52F4 /* ResourceBuffer.mm in Sources */,
    2637426361                                934F713E0D5A6F2800018D69 /* ResourceErrorBase.cpp in Sources */,
     
    2681326800                                B2C3DA4A0D006C1D00EF6F26 /* TextStream.cpp in Sources */,
    2681426801                                9759E93F14EF1CF80026A2DD /* TextTrack.cpp in Sources */,
    26815                                 CDAE8C091746B95700532D78 /* AudioSessionManager.cpp in Sources */,
    2681626802                                9759E94214EF1CF80026A2DD /* TextTrackCue.cpp in Sources */,
    2681726803                                071A9EC2168FBC43002629F9 /* TextTrackCueGeneric.cpp in Sources */,
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r150555 r150561  
    137137#endif
    138138
    139 #if USE(AUDIO_SESSION)
    140 #include "AudioSessionManager.h"
    141 #endif
    142 
    143139using namespace std;
    144140
     
    320316#if ENABLE(WEB_AUDIO)
    321317    , m_audioSourceNode(0)
    322 #endif
    323 #if USE(AUDIO_SESSION)
    324     , m_audioSessionManagerToken(AudioSessionManagerToken::create(tagName == videoTag ? AudioSessionManager::Video : AudioSessionManager::Audio))
    325318#endif
    326319{
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r150555 r150561  
    5050namespace WebCore {
    5151
    52 #if USE(AUDIO_SESSION)
    53 class AudioSessionManagerToken;
    54 #endif
    5552#if ENABLE(WEB_AUDIO)
    5653class AudioSourceProvider;
     
    769766    RefPtr<PlatformTextTrackMenuInterface> m_platformMenu;
    770767#endif
    771 
    772 #if USE(AUDIO_SESSION)
    773     OwnPtr<AudioSessionManagerToken> m_audioSessionManagerToken;
    774 #endif
    775768};
    776769
  • trunk/Source/WebCore/platform/audio/AudioSession.cpp

    r150555 r150561  
    2626#include "config.h"
    2727#include "AudioSession.h"
    28 
    29 #if USE(AUDIO_SESSION)
    3028
    3129#include "AudioSessionListener.h"
     
    6260}
    6361
    64 #if !PLATFORM(IOS) && !PLATFORM(MAC)
     62#if !PLATFORM(IOS)
    6563class AudioSessionPrivate {
    6664};
    6765
    6866AudioSession::AudioSession()
    69     : m_private(nullptr)
     67    : m_private(0)
    7068{
    7169    notImplemented();
     
    115113}
    116114
    117 size_t AudioSession::preferredBufferSize() const
     115float AudioSession::preferredBufferDuration() const
    118116{
    119117    notImplemented();
     
    121119}
    122120
    123 void AudioSession::setPreferredBufferSize(size_t)
     121void AudioSession::setPreferredBufferDuration(float)
    124122{
    125123    notImplemented();
     
    128126
    129127}
    130 
    131 #endif // USE(AUDIO_SESSION)
  • trunk/Source/WebCore/platform/audio/AudioSession.h

    r150555 r150561  
    2626#ifndef AudioSession_h
    2727#define AudioSession_h
    28 
    29 #if USE(AUDIO_SESSION)
    3028
    3129#include <wtf/HashSet.h>
     
    6563    void setActive(bool);
    6664
    67     size_t preferredBufferSize() const;
    68     void setPreferredBufferSize(size_t);
     65    float preferredBufferDuration() const;
     66    void setPreferredBufferDuration(float seconds);
    6967
    7068    void beganAudioInterruption();
     
    8179}
    8280
    83 #endif // USE(AUDIO_SESSION)
    84 
    8581#endif // AudioSession_h
  • trunk/Source/WebCore/platform/audio/AudioSessionListener.h

    r150555 r150561  
    2727#define AudioSessionListener_h
    2828
    29 #if USE(AUDIO_SESSION)
    30 
    3129namespace WebCore {
    3230
    3331class AudioSessionListener {
    34     WTF_MAKE_NONCOPYABLE(AudioSessionListener);
     32    WTF_MAKE_NONCOPYABLE(AudioSessionListener)
    3533public:
    3634    virtual void beganAudioInterruption() = 0;
     
    4341}
    4442
    45 #endif // USE(AUDIO_SESSION)
    46 
    4743#endif // AudioSessionListener_h
  • trunk/Source/WebCore/platform/audio/ios/AudioDestinationIOS.cpp

    r150555 r150561  
    189189    ASSERT(!result);
    190190
    191     AudioSession::sharedSession().setPreferredBufferSize(kPreferredBufferSize);
     191    AudioSession::sharedSession().setPreferredBufferDuration(narrowPrecisionToFloat(kPreferredBufferSize / m_sampleRate));
    192192}
    193193
  • trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm

    r150555 r150561  
    2727#import "AudioSession.h"
    2828
    29 #if USE(AUDIO_SESSION) && PLATFORM(IOS)
     29#if PLATFORM(IOS)
    3030
    3131#import "SoftLinking.h"
     
    202202}
    203203
    204 size_t AudioSession::preferredBufferSize() const
    205 {
    206     return [[AVAudioSession sharedInstance] preferredIOBufferDuration] * sampleRate();
    207 }
    208 
    209 void AudioSession::setPreferredBufferSize(size_t bufferSize)
     204float AudioSession::preferredBufferDuration() const
     205{
     206    return [[AVAudioSession sharedInstance] preferredIOBufferDuration];
     207}
     208
     209void AudioSession::setPreferredBufferDuration(float duration)
    210210{
    211211    NSError *error = nil;
    212     float duration = bufferSize / sampleRate();
    213212    [[AVAudioSession sharedInstance] setPreferredIOBufferDuration:duration error:&error];
    214213    ASSERT(!error);
     
    217216}
    218217
    219 #endif // USE(AUDIO_SESSION) && PLATFORM(IOS)
     218#endif // PLATFORM(IOS)
  • trunk/Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp

    r150555 r150561  
    3434
    3535#include "AudioIOCallback.h"
    36 #include "AudioSessionManager.h"
    3736#include "FloatConversion.h"
    3837#include "Logging.h"
     
    6564{
    6665    // Determine the default output device's sample-rate.
    67     return AudioSession::sharedSession().sampleRate();
     66    AudioDeviceID deviceID = kAudioDeviceUnknown;
     67    UInt32 infoSize = sizeof(deviceID);
     68
     69    AudioObjectPropertyAddress defaultOutputDeviceAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
     70    OSStatus result = AudioObjectGetPropertyData(kAudioObjectSystemObject, &defaultOutputDeviceAddress, 0, 0, &infoSize, (void*)&deviceID);
     71    if (result)
     72        return 0; // error
     73
     74    Float64 nominalSampleRate;
     75    infoSize = sizeof(Float64);
     76
     77    AudioObjectPropertyAddress nominalSampleRateAddress = { kAudioDevicePropertyNominalSampleRate, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
     78    result = AudioObjectGetPropertyData(deviceID, &nominalSampleRateAddress, 0, 0, &infoSize, (void*)&nominalSampleRate);
     79    if (result)
     80        return 0; // error
     81
     82    return narrowPrecisionToFloat(nominalSampleRate);
    6883}
    6984
     
    8398    , m_sampleRate(sampleRate)
    8499    , m_isPlaying(false)
    85     , m_audioSessionManagerToken(AudioSessionManagerToken::create(AudioSessionManager::WebAudio))
    86100{
    87101    // Open and initialize DefaultOutputUnit
     
    135149    result = AudioUnitSetProperty(m_outputUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, (void*)&streamFormat, sizeof(AudioStreamBasicDescription));
    136150    ASSERT(!result);
     151
     152    // Set the buffer frame size.
     153    UInt32 bufferSize = kBufferSize;
     154    result = AudioUnitSetProperty(m_outputUnit, kAudioDevicePropertyBufferFrameSize, kAudioUnitScope_Output, 0, (void*)&bufferSize, sizeof(bufferSize));
     155    ASSERT(!result);
    137156}
    138157
  • trunk/Source/WebCore/platform/audio/mac/AudioDestinationMac.h

    r150555 r150561  
    3333#include "AudioDestination.h"
    3434#include <AudioUnit/AudioUnit.h>
    35 #include <wtf/OwnPtr.h>
    3635#include <wtf/RefPtr.h>
    3736
    3837namespace WebCore {
    39 
    40 class AudioSessionManagerToken;
    4138
    4239// An AudioDestination using CoreAudio's default output AudioUnit
     
    6764    float m_sampleRate;
    6865    bool m_isPlaying;
    69 
    70 #if USE(AUDIO_SESSION)
    71     OwnPtr<AudioSessionManagerToken> m_audioSessionManagerToken;
    72 #endif
    7366};
    7467
Note: See TracChangeset for help on using the changeset viewer.