mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
libobs, plugins: Deprecate obs_output_t functions with flag parameters
This deprecates the following functions, replacing them with new versions: - `obs_output_can_begin_data_capture()` - now `*capture2()` - `obs_output_initialize_encoders()` - now `*encoders2()` - `obs_output_begin_data_capture()` - now `*capture2()` The flags parameter was initially designed to support audio-only or video-only operation of an output which had the `OBS_OUTPUT_AV` flag, however, full support for that was never implemented, and there are likely fundamental issues with an implementation, mainly that most outputs are programmed assuming that there will always be at least one audio and one video track. This requires new flags specifying support for optional audio/video, among other things. An implementation to allow audio/video to be optional is best done using the flag technique above, with audio/video enablement specified by whether media (raw, `video_t/audio_t`) or encoder (`obs_encoder_t`) objects are specified. Since every implementation I could find always specifies `flags` as 0, I was able to safely conclude that immediately removing the parameter's functionality is safe to do.
This commit is contained in:
@@ -1229,7 +1229,7 @@ static bool aja_output_start(void *data)
|
||||
|
||||
obs_output_set_audio_conversion(ajaOutput->GetOBSOutput(), &conversion);
|
||||
|
||||
if (!obs_output_begin_data_capture(ajaOutput->GetOBSOutput(), 0)) {
|
||||
if (!obs_output_begin_data_capture2(ajaOutput->GetOBSOutput())) {
|
||||
blog(LOG_ERROR,
|
||||
"aja_output_start: Begin OBS data capture failed!");
|
||||
return false;
|
||||
|
||||
@@ -110,7 +110,7 @@ static bool decklink_output_start(void *data)
|
||||
|
||||
obs_output_set_audio_conversion(decklink->GetOutput(), &conversion);
|
||||
|
||||
if (!obs_output_begin_data_capture(decklink->GetOutput(), 0))
|
||||
if (!obs_output_begin_data_capture2(decklink->GetOutput()))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
||||
@@ -173,7 +173,7 @@ static bool try_connect(void *data, const char *device)
|
||||
}
|
||||
|
||||
blog(LOG_INFO, "Virtual camera started");
|
||||
obs_output_begin_data_capture(vcam->output, 0);
|
||||
obs_output_begin_data_capture2(vcam->output);
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
@@ -523,7 +523,7 @@ static bool virtualcam_output_start(void *data)
|
||||
[vcam->machServer run];
|
||||
}
|
||||
|
||||
if (!obs_output_begin_data_capture(vcam->output, 0)) {
|
||||
if (!obs_output_begin_data_capture2(vcam->output)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,9 +118,9 @@ bool ffmpeg_hls_mux_start(void *data)
|
||||
obs_data_t *settings;
|
||||
int keyint_sec;
|
||||
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
|
||||
service = obs_output_get_service(stream->output);
|
||||
@@ -170,7 +170,7 @@ bool ffmpeg_hls_mux_start(void *data)
|
||||
stream->dropped_frames = 0;
|
||||
stream->min_priority = 0;
|
||||
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
dstr_copy(&stream->printable_path, path_str);
|
||||
info("Writing to path '%s'...", stream->printable_path.array);
|
||||
|
||||
@@ -1025,9 +1025,9 @@ static bool set_config(struct ffmpeg_output *stream)
|
||||
}
|
||||
av_dump_format(ff_data->output, 0, NULL, 1);
|
||||
}
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
|
||||
ret = pthread_create(&stream->write_thread, NULL, write_thread, stream);
|
||||
@@ -1042,7 +1042,7 @@ static bool set_config(struct ffmpeg_output *stream)
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
stream->write_thread_active = true;
|
||||
stream->total_bytes = 0;
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
return true;
|
||||
fail:
|
||||
|
||||
@@ -411,9 +411,9 @@ static inline bool ffmpeg_mux_start_internal(struct ffmpeg_muxer *stream,
|
||||
|
||||
update_encoder_settings(stream, path);
|
||||
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
|
||||
if (stream->is_network) {
|
||||
@@ -468,7 +468,7 @@ static inline bool ffmpeg_mux_start_internal(struct ffmpeg_muxer *stream,
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
os_atomic_set_bool(&stream->capturing, true);
|
||||
stream->total_bytes = 0;
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
info("Writing file '%s'...", stream->path.array);
|
||||
return true;
|
||||
@@ -1039,9 +1039,9 @@ static bool replay_buffer_start(void *data)
|
||||
{
|
||||
struct ffmpeg_muxer *stream = data;
|
||||
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
|
||||
obs_data_t *s = obs_output_get_settings(stream->output);
|
||||
@@ -1052,7 +1052,7 @@ static bool replay_buffer_start(void *data)
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
os_atomic_set_bool(&stream->capturing, true);
|
||||
stream->total_bytes = 0;
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1209,7 +1209,7 @@ static bool try_connect(struct ffmpeg_output *output)
|
||||
|
||||
output->active = true;
|
||||
|
||||
if (!obs_output_can_begin_data_capture(output->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(output->output))
|
||||
return false;
|
||||
|
||||
ret = pthread_create(&output->write_thread, NULL, write_thread, output);
|
||||
@@ -1223,7 +1223,7 @@ static bool try_connect(struct ffmpeg_output *output)
|
||||
|
||||
obs_output_set_video_conversion(output->output, NULL);
|
||||
obs_output_set_audio_conversion(output->output, &aci);
|
||||
obs_output_begin_data_capture(output->output, 0);
|
||||
obs_output_begin_data_capture2(output->output);
|
||||
output->write_thread_active = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -154,9 +154,9 @@ static bool flv_output_start(void *data)
|
||||
obs_data_t *settings;
|
||||
const char *path;
|
||||
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
|
||||
stream->got_first_video = false;
|
||||
@@ -177,7 +177,7 @@ static bool flv_output_start(void *data)
|
||||
|
||||
/* write headers and start capture */
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
info("Writing FLV file '%s'...", stream->path.array);
|
||||
return true;
|
||||
|
||||
@@ -593,7 +593,7 @@ static int init_send(struct ftl_stream *stream)
|
||||
|
||||
os_atomic_set_bool(&stream->active, true);
|
||||
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
return OBS_OUTPUT_SUCCESS;
|
||||
}
|
||||
@@ -649,10 +649,10 @@ static bool ftl_stream_start(void *data)
|
||||
obs_data_set_int(video_settings, "bf", 0);
|
||||
obs_data_release(video_settings);
|
||||
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0)) {
|
||||
if (!obs_output_can_begin_data_capture2(stream->output)) {
|
||||
return false;
|
||||
}
|
||||
if (!obs_output_initialize_encoders(stream->output, 0)) {
|
||||
if (!obs_output_initialize_encoders2(stream->output)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,15 +51,15 @@ static bool null_output_start(void *data)
|
||||
{
|
||||
struct null_output *context = data;
|
||||
|
||||
if (!obs_output_can_begin_data_capture(context->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(context->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(context->output, 0))
|
||||
if (!obs_output_initialize_encoders2(context->output))
|
||||
return false;
|
||||
|
||||
if (context->stop_thread_active)
|
||||
pthread_join(context->stop_thread, NULL);
|
||||
|
||||
obs_output_begin_data_capture(context->output, 0);
|
||||
obs_output_begin_data_capture2(context->output);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1137,7 +1137,7 @@ static int init_send(struct rtmp_stream *stream)
|
||||
}
|
||||
|
||||
if (!silently_reconnecting(stream))
|
||||
obs_output_begin_data_capture(stream->output, 0);
|
||||
obs_output_begin_data_capture2(stream->output);
|
||||
|
||||
return OBS_OUTPUT_SUCCESS;
|
||||
}
|
||||
@@ -1456,9 +1456,9 @@ static bool rtmp_stream_start(void *data)
|
||||
struct rtmp_stream *stream = data;
|
||||
|
||||
if (!silently_reconnecting(stream)) {
|
||||
if (!obs_output_can_begin_data_capture(stream->output, 0))
|
||||
if (!obs_output_can_begin_data_capture2(stream->output))
|
||||
return false;
|
||||
if (!obs_output_initialize_encoders(stream->output, 0))
|
||||
if (!obs_output_initialize_encoders2(stream->output))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ static bool virtualcam_start(void *data)
|
||||
os_atomic_set_bool(&vcam->active, true);
|
||||
os_atomic_set_bool(&vcam->stopping, false);
|
||||
blog(LOG_INFO, "Virtual output started");
|
||||
obs_output_begin_data_capture(vcam->output, 0);
|
||||
obs_output_begin_data_capture2(vcam->output);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user