mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
libobs: Fix obs_output_video and obs_output_audio for encoded output
The API `obs_output_video` and `obs_output_audio` returned valid pointers until the commitfb57eff21
and645e31fa1
. The API `obs_output_video` is used by some plugins such as obs-websocket and obs-midi to calculate the duration of streaming and recording. To have a similar behavior, return the media (video and audio, respectively) from the encoder.
This commit is contained in:
parent
eb89f7c3ab
commit
2036de8ec3
@ -857,14 +857,30 @@ void obs_output_set_media(obs_output_t *output, video_t *video, audio_t *audio)
|
||||
|
||||
video_t *obs_output_video(const obs_output_t *output)
|
||||
{
|
||||
return obs_output_valid(output, "obs_output_video") ? output->video
|
||||
: NULL;
|
||||
if (!obs_output_valid(output, "obs_output_video"))
|
||||
return NULL;
|
||||
|
||||
if (!flag_encoded(output))
|
||||
return output->video;
|
||||
|
||||
obs_encoder_t *vencoder = obs_output_get_video_encoder(output);
|
||||
return obs_encoder_video(vencoder);
|
||||
}
|
||||
|
||||
audio_t *obs_output_audio(const obs_output_t *output)
|
||||
{
|
||||
return obs_output_valid(output, "obs_output_audio") ? output->audio
|
||||
: NULL;
|
||||
if (!obs_output_valid(output, "obs_output_audio"))
|
||||
return NULL;
|
||||
|
||||
if (!flag_encoded(output))
|
||||
return output->audio;
|
||||
|
||||
for (size_t i = 0; i < MAX_OUTPUT_AUDIO_ENCODERS; i++) {
|
||||
if (output->audio_encoders[i])
|
||||
return obs_encoder_audio(output->audio_encoders[i]);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline size_t get_first_mixer(const obs_output_t *output)
|
||||
|
Loading…
Reference in New Issue
Block a user