0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/libobs/media-io
jp9000 84e1f47ced (API Change) Add support for multiple audio mixers
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.
2015-02-04 16:51:29 -08:00
..
audio-io.c (API Change) Add support for multiple audio mixers 2015-02-04 16:51:29 -08:00
audio-io.h (API Change) Add support for multiple audio mixers 2015-02-04 16:51:29 -08:00
audio-resampler-ffmpeg.c (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
audio-resampler.h (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
format-conversion.c Remove majority of warnings 2014-02-14 15:13:36 -07:00
format-conversion.h Remove majority of warnings 2014-02-14 15:13:36 -07:00
media-io-defs.h Change default audio smoothing threshold to 50ms 2014-10-22 20:32:46 -07:00
media-remux.c Add media remuxer to media-io 2014-10-12 06:27:33 +02:00
media-remux.h Add media remuxer to media-io 2014-10-12 06:27:33 +02:00
video-fourcc.c Fix multi-char constant warnings 2014-05-10 02:06:59 +02:00
video-frame.c libobs/media-io: Add frame copying function 2014-12-31 04:03:45 -08:00
video-frame.h libobs/media-io: Add frame copying function 2014-12-31 04:03:45 -08:00
video-io.c Set various thread names 2015-01-03 02:37:20 -08:00
video-io.h libobs: Redesign/optimize frame encoding handling 2014-12-31 04:03:47 -08:00
video-matrices.c libobs/media-io: Handle VIDEO_CS_DEFAULT in video_format_get_parameters 2014-07-16 22:39:00 +02:00
video-scaler-ffmpeg.c (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00
video-scaler.h (API Change) Remove pointers from all typedefs 2014-09-25 21:48:11 -07:00