• J
    (API Change) Add support for multiple audio mixers · 84e1f47c
    jp9000 提交于
    API changed:
    --------------------------
    
    void obs_output_set_audio_encoder(
    		obs_output_t *output,
    		obs_encoder_t *encoder);
    
    obs_encoder_t *obs_output_get_audio_encoder(
    		const obs_output_t *output);
    
    obs_encoder_t *obs_audio_encoder_create(
    		const char *id,
    		const char *name,
    		obs_data_t *settings);
    
    Changed to:
    --------------------------
    
    /* 'idx' specifies the track index of the output */
    void obs_output_set_audio_encoder(
    		obs_output_t *output,
    		obs_encoder_t *encoder,
    		size_t idx);
    
    /* 'idx' specifies the track index of the output */
    obs_encoder_t *obs_output_get_audio_encoder(
    		const obs_output_t *output,
    		size_t idx);
    
    /* 'mixer_idx' specifies the mixer index to capture audio from */
    obs_encoder_t *obs_audio_encoder_create(
    		const char *id,
    		const char *name,
    		obs_data_t *settings,
    		size_t mixer_idx);
    
    Overview
    --------------------------
    This feature allows multiple audio mixers to be used at a time.  This
    capability was able to be added with surprisingly very little extra
    overhead.  Audio will not be mixed unless it's assigned to a specific
    mixer, and mixers will not mix unless they have an active mix
    connection.
    
    Mostly this will be useful for being able to separate out specific audio
    for recording versus streaming, but will also be useful for certain
    streaming services that support multiple audio streams via RTMP.
    
    I didn't want to use a variable amount of mixers due to the desire to
    reduce heap allocations, so currently I set the limit to 4 simultaneous
    mixers; this number can be increased later if needed, but honestly I
    feel like it's just the right number to use.
    
    Sources:
    
    Sources can now specify which audio mixers their audio is mixed to; this
    can be a single mixer or multiple mixers at a time.  The
    obs_source_set_audio_mixers function sets the audio mixer which an audio
    source applies to.  For example, 0xF would mean that the source applies
    to all four mixers.
    
    Audio Encoders:
    
    Audio encoders now must specify which specific audio mixer they use when
    they encode audio data.
    
    Outputs:
    
    Outputs that use encoders can now support multiple audio tracks at once
    if they have the OBS_OUTPUT_MULTI_TRACK capability flag set.  This is
    mostly only useful for certain types of RTMP transmissions, though may
    be useful for file formats that support multiple audio tracks as well
    later on.
    84e1f47c
obs.h 46.2 KB