From a9f6001f51b9348d65578178a3e1f6a89efc4aa8 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Fri, 10 Mar 2023 21:54:28 +0100 Subject: [PATCH] Simplify recorder After the refactor performed by the previous commit, the functions to wait the video stream and the audio stream could be inlined. --- app/src/recorder.c | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/app/src/recorder.c b/app/src/recorder.c index 8f8a1a89..9b646055 100644 --- a/app/src/recorder.c +++ b/app/src/recorder.c @@ -150,24 +150,6 @@ sc_recorder_close_output_file(struct sc_recorder *recorder) { avformat_free_context(recorder->ctx); } -static void -sc_recorder_wait_video_stream(struct sc_recorder *recorder) { - sc_mutex_lock(&recorder->mutex); - while (!recorder->video_init && !recorder->stopped) { - sc_cond_wait(&recorder->stream_cond, &recorder->mutex); - } - sc_mutex_unlock(&recorder->mutex); -} - -static void -sc_recorder_wait_audio_stream(struct sc_recorder *recorder) { - sc_mutex_lock(&recorder->mutex); - while (!recorder->audio_init && !recorder->stopped) { - sc_cond_wait(&recorder->stream_cond, &recorder->mutex); - } - sc_mutex_unlock(&recorder->mutex); -} - static inline bool sc_recorder_has_empty_queues(struct sc_recorder *recorder) { if (sc_vecdeque_is_empty(&recorder->video_queue)) { @@ -188,8 +170,10 @@ static bool sc_recorder_process_header(struct sc_recorder *recorder) { sc_mutex_lock(&recorder->mutex); - while (!recorder->stopped && sc_recorder_has_empty_queues(recorder)) { - sc_cond_wait(&recorder->queue_cond, &recorder->mutex); + while (!recorder->stopped && (!recorder->video_init + || !recorder->audio_init + || sc_recorder_has_empty_queues(recorder))) { + sc_cond_wait(&recorder->stream_cond, &recorder->mutex); } if (sc_vecdeque_is_empty(&recorder->video_queue)) { @@ -432,14 +416,6 @@ sc_recorder_record(struct sc_recorder *recorder) { return false; } - sc_recorder_wait_video_stream(recorder); - - if (recorder->audio) { - sc_recorder_wait_audio_stream(recorder); - } - - // If recorder->stopped, process any queued packet anyway - ok = sc_recorder_process_packets(recorder); sc_recorder_close_output_file(recorder); return ok;