• J
    libobs: Implement new audio subsystem · c1dd156d
    jp9000 提交于
    The new audio subsystem fixes two issues:
    
    - First Primary issue it fixes is the ability for parent sources to
      intercept the audio of child sources, and do custom processing on
      them.  The main reason for this was the ability to do custom
      cross-fading in transitions, but it's also useful for things such as
      side-chain effects, applying audio effects to entire scenes, applying
      scene-specific audio filters on sub-sources, and other such
      possibilities.
    
    - The secondary issue that needed fixing was audio buffering.
      Previously, audio buffering was always a fixed buffer size, so it
      would always have exactly a certain number of milliseconds of audio
      buffering (and thus output delay).  Instead, it now dynamically
      increases audio buffering only as necessary, minimizing output delay,
      and removing the need for users to have to worry about an audio
      buffering setting.
    
    The new design makes it so that audio from the leaves of the scene graph
    flow to the root nodes, and can be intercepted by parent sources.  Each
    audio source handles its own buffering, and each audio tick a specific
    number of audio frames are popped from the front of the circular buffer
    on each audio source.  Composite sources (such as scenes) can access the
    audio for child sources and do custom processing or mixing on that
    audio.  Composite sources use the audio_render callback of sources to do
    synchronous or deferred audio processing per audio tick.  Things like
    scenes now mix audio from their sub-sources.
    c1dd156d
obs-internal.h 27.3 KB