Simplify recorder

After the refactor performed by the previous commit, the functions to
wait the video stream and the audio stream could be inlined.
pull/3774/head
Romain Vimont 1 year ago
parent 5052e15f7f
commit a9f6001f51

@ -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;

Loading…
Cancel
Save