Difference between revisions of "WASAPI"

From JRiverWiki
Jump to: navigation, search
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
WASAPI is Microsoft's most modern method for talking with sound devices.  WASAPI stands for Windows Audio Session API.  It is available in Windows Vista, Windows 7, and newer.  It allows delivering an unmodified bitstream to a sound device.
+
{{See also|Audio Setup|Audio Output Modes}}
  
WASAPI support was first added to Media Center 13Media Center 15 added event style WASAPI support.
+
The [http://msdn.microsoft.com/en-us/library/windows/desktop/dd371455%28v=vs.85%29.aspx Windows Audio Session API (WASAPI)] is Microsoft's most modern method for talking with audio devices.  It is available in Windows Vista, Windows 7, and later versions of Windows. It allows delivering an unmodified bitstream to a sound device, and provides benefits similar to those provided by [[ASIO]] drivers. One of the other main benefits of WASAPI is that it provides applications with [[exclusive access]] to audio devices, bypassing the system mixer, default settings, and any typically any effects provided by the audio driver.  WASAPI is the recommended [[Audio Output Mode]] for Windows ''unless'' your audio device has a well-behaved [[ASIO]] driver, and it effectively replaces all legacy output modes including [[Kernel Streaming]] and [[Direct Sound]].
  
For XP, [http://wiki.jrmediacenter.com/index.php/ASIO ASIO] is similar.
+
WASAPI support was first added to Media Center 13.  Media Center 15 added event style WASAPI support, and MC 18 made this the default.
  
An Interact thread on the original creation of WASAPI can be found here:
+
== WASAPI Device Settings ==
http://yabb.jriver.com/interact/index.php?topic=48478.0
 
  
==WASAPI Modes==
+
You can access WASAPI's Device Settings in Media Center via:
 +
<span style="color:#8B4513">Tools > Options > Audio > Audio Device > Device settings</span>
  
There are two main ways to communicate using WASAPI. Both deliver the same audio data and will sound the same.  However, different WASAPI modes will work better with different hardware.
+
[[File:MC19-Audio-WASAPI Device Settings.png|thumb|600px|none|Options available for WASAPI connected devices.]]
  
'''WASAPI'''
+
From here you can:
 +
* Enable [[Exclusive access]] of the audio device.
 +
* Disable [[WASAPI Event Style]] for supporting older hardware.
 +
* Set Media Center to [[Maximize device volume|automatically maximize the audio device's system volume control]] during playback.
 +
* Alter Buffering settings if needed to deal with troublesome hardware or drivers.
 +
* Enable the Play a little silence option which can help prevent clicks and pops when starting and stopping playback that occurs on some audio devices
  
This output mode pushes data from Media Center to the sound device.
+
== More ==
  
 +
* An [http://yabb.jriver.com/interact/index.php?topic=48478.0 Interact thread on the original creation of WASAPI]
  
'''WASAPI - Event Style'''
+
[[Category:Frequently Asked Questions]]
 
+
[[Category:Audio]]
The output mode lets a sound device pull data from Media Center.
 
 
 
This method is not supported by all hardware, but when supported, it is preferred.
 
 
 
It has several advantages:
 
* It let's the audio subsystem pull data (when events are set) instead of pushing data to the system.  This allows lower latency buffer sizes, and removes (hopefully) the unreliable Microsoft layer documented below.
 
 
 
* It creates, uses, and destroys all WASAPI interfaces from a single thread.
 
 
 
* It allows for a more direct data path to the driver / hardware.
 
 
 
* The main 'pull loop' uses a lock-free circle buffer (a neat system J. River built for ASIO), meaning fullfilling a pull request is as fast as possible.
 
 
 
* The hardware (or WASAPI interface) never see any pause or flush calls.  Instead, on pause or flush, silence is delivered in the pull loop.  This removes the need for hacks for cards that circle their buffers on pause, flush, etc. (ATI HDMI, etc.).
 
 
 
==Problems==
 
 
 
'''Stuttering'''
 
 
 
Some devices will start stuttering during playback when using WASAPI.  This is due to a bug in the WASAPI system of stock Microsoft driver where the circling buffers get out of order.  Stopping and restarting playback is required to reset the stuttering.
 
 
 
Using '''WASAPI - Event Style''' will fix this problem.
 
 
 
There are more details here:
 
http://yabb.jriver.com/interact/index.php?topic=59460.0
 
 
 
 
 
'''Hiccups using WASAPI - Event Style'''
 
 
 
The default buffering value for WASAPI - Event Style is 50ms.  With some hardware, and especially USB DACs, a larger value is necessary.  If you hear stutters, select 100ms or 250ms for buffering in Options > Audio > Output mode settings...
 
 
 
 
 
'''Playback won't start or stalls'''
 
 
 
Some hardware is particular about buffer sizes.  You may need to experiment with different buffering values using Options > Audio > Output mode settings...
 
 
 
 
 
'''Other Problems'''
 
For playback problems, please see [http://yabb.jriver.com/interact/index.php?topic=57343.msg389010 this thread].
 
 
 
[[Category: Frequently Asked Questions]]
 

Latest revision as of 01:13, 17 April 2014

The Windows Audio Session API (WASAPI) is Microsoft's most modern method for talking with audio devices. It is available in Windows Vista, Windows 7, and later versions of Windows. It allows delivering an unmodified bitstream to a sound device, and provides benefits similar to those provided by ASIO drivers. One of the other main benefits of WASAPI is that it provides applications with exclusive access to audio devices, bypassing the system mixer, default settings, and any typically any effects provided by the audio driver. WASAPI is the recommended Audio Output Mode for Windows unless your audio device has a well-behaved ASIO driver, and it effectively replaces all legacy output modes including Kernel Streaming and Direct Sound.

WASAPI support was first added to Media Center 13. Media Center 15 added event style WASAPI support, and MC 18 made this the default.

WASAPI Device Settings

You can access WASAPI's Device Settings in Media Center via: Tools > Options > Audio > Audio Device > Device settings

Options available for WASAPI connected devices.

From here you can:

More