osx - Mac OS X virtual audio driver -


i want create virtual audio device gets audio data default output (which output ioaudiostream) , converts input ioaudiostream.

i went through of examples find, implement feature copy output ioaudiostream input 1 @ most. means converts audio input stream if audio device selected output.

this should possible, since screenflow allows recording of computer audio installing kext creates virtual driver.

how can access audio data default output , send virtual driver?

take @ open-source wavtap, simplified fork of open-source soundflower virtual sound card driver. .kext believe substantially want.

for reference, here how popular commercial closed-source options work:
rogue amoeba's audio hijack pro
-captures system audio via code based off of open-source soundflower .kext
-captures application's audio substituting "patch" framework normal coreaudio.framework when launching application
-captures already-running application's audio of haxie "application enhancer" (ape) unsanity

these features branded "instant on" feature (instanton.kext).

ambrosia software's wiretap studio
-captures system audio , application audio via in-house developed .kext

telestream's screenflow
-captures system audio via in-house developed .kext. (version 2.x uses varaudio.kext; version 3.x uses telestreamaudio.kext)

macsome's audio recorder
-unknown method

araelium group's screenflick
-captures system audio using soundflower .kext

update #1
after reading author's comments, appears underlying goal able capture system sound without publishing virtual audio driver device (that appear in system preference's list) , without changing current default output device (or @ least appearance device has changed).

soundflower: adds sound device list upon installation
wavtap: adds sound device list upon installation; auto-selects device when wavtap application started; auto-deselects device when application shutdown , reselects previous device
audio hijack pro: adds sound device when audio capture of default system sound selected; removes sound device when audio capture no longer selected , reselects previous device
wiretap studio: unknown
screenflow: captures system sound without changing current default output device , without publishing virtual audio driver device

update #2
quote jeff moore, coreaudio apple engineer, in reference applications such wiretap , audio hijack pro:
"there no apis on system give output of specific app or whole mix going hardware...[capturing system sound] isn't supported system , folks had clever. there's nothing stopping doing same thing except how willing hands dirty. fact is, mac os x's audio system designed first , foremost performance. lead design not easy support functionality want without imposing performance penalties. so, have opted better performance @ cost of not being able provide feature."

if want read more on subject, check out these threads on coreaudio api mailing list:
"wiretap, coreaudio's api, , system capture, , kexts..."
"another question on capturing audio played software"
"capturing played audio using coreaudio on mac"
"'audio hijack'"
"monitoring system audio output wire tap"
"capturing audio output file"
"mirroring audio output"
"recording system audio"

relevant questions:
hide audio device using codeless kext

so long story short, you're not find examples apple accomplish this, , you're not find open source code accomplishes either, unless feeling very generous. appears valuable of information.


Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -