Skip to content

Commit

Permalink
Write trailer from recorder thread
Browse files Browse the repository at this point in the history
The recorder thread wrote the whole content except the trailer, which
was odd.
  • Loading branch information
rom1v committed Apr 19, 2021
1 parent b9c3f65 commit e3da97a
Showing 1 changed file with 19 additions and 17 deletions.
36 changes: 19 additions & 17 deletions app/src/recorder.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,25 +171,8 @@ recorder_open(struct recorder *recorder, const AVCodec *input_codec) {

void
recorder_close(struct recorder *recorder) {
if (recorder->header_written) {
int ret = av_write_trailer(recorder->ctx);
if (ret < 0) {
LOGE("Failed to write trailer to %s", recorder->filename);
recorder->failed = true;
}
} else {
// the recorded file is empty
recorder->failed = true;
}
avio_close(recorder->ctx->pb);
avformat_free_context(recorder->ctx);

if (recorder->failed) {
LOGE("Recording failed to %s", recorder->filename);
} else {
const char *format_name = recorder_get_format_name(recorder->format);
LOGI("Recording complete to %s file: %s", format_name, recorder->filename);
}
}

static bool
Expand Down Expand Up @@ -317,7 +300,26 @@ run_recorder(void *data) {
sc_mutex_unlock(&recorder->mutex);
break;
}
}

if (!recorder->failed) {
if (recorder->header_written) {
int ret = av_write_trailer(recorder->ctx);
if (ret < 0) {
LOGE("Failed to write trailer to %s", recorder->filename);
recorder->failed = true;
}
} else {
// the recorded file is empty
recorder->failed = true;
}
}

if (recorder->failed) {
LOGE("Recording failed to %s", recorder->filename);
} else {
const char *format_name = recorder_get_format_name(recorder->format);
LOGI("Recording complete to %s file: %s", format_name, recorder->filename);
}

LOGD("Recorder thread ended");
Expand Down

0 comments on commit e3da97a

Please sign in to comment.