X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmain.cpp;h=4c54d332d24951b9118798b86c90ef3ab10e464b;hb=a3b76e5ad9493b0af08fdcbe6d6b689d91496f85;hp=9585dd4e4b3180201cd8d210187d4cf697114724;hpb=5435b5bc0a8d324d8eef9b9fc9952b5245b25a3f;p=nageru diff --git a/futatabi/main.cpp b/futatabi/main.cpp index 9585dd4..4c54d33 100644 --- a/futatabi/main.cpp +++ b/futatabi/main.cpp @@ -79,7 +79,7 @@ FrameOnDisk write_frame(int stream_idx, int64_t pts, const uint8_t *data, size_t { if (open_frame_files.count(stream_idx) == 0) { char filename[256]; - snprintf(filename, sizeof(filename), "%s/frames/cam%d-pts%09ld.frames", + snprintf(filename, sizeof(filename), "%s/frames/cam%d-pts%09" PRId64 ".frames", global_flags.working_directory.c_str(), stream_idx, pts); FILE *fp = fopen(filename, "wb"); if (fp == nullptr) { @@ -275,7 +275,6 @@ int main(int argc, char **argv) should_quit = true; record_thread.join(); - JPEGFrameView::shutdown(); return ret; } @@ -503,7 +502,8 @@ void record_thread_func() if (av_read_frame(format_ctx.get(), &pkt) != 0) { break; } - if (pkt.stream_index >= MAX_STREAMS) { + if (pkt.stream_index >= MAX_STREAMS || + format_ctx->streams[pkt.stream_index]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO) { continue; } @@ -535,8 +535,10 @@ void record_thread_func() current_pts = pts; } - fprintf(stderr, "%s: Hit EOF. Waiting one second and trying again...\n", global_flags.stream_source.c_str()); - sleep(1); + if (!should_quit.load()) { + fprintf(stderr, "%s: Hit EOF. Waiting one second and trying again...\n", global_flags.stream_source.c_str()); + sleep(1); + } start_pts = last_pts + TIMEBASE; }