X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fffmpeg_capture.h;h=122bf86726ba4cb6d73a70a0ca81166d6e7d7431;hb=a0e57ec99e9dfdd7e79bcf21e8c996dc43b6cb49;hp=2ab9481aad6d351e5597f86cc0df3315a39d6606;hpb=11b2ae4ae768b87a4af6f0f50ba39bd75133dbb4;p=nageru diff --git a/nageru/ffmpeg_capture.h b/nageru/ffmpeg_capture.h index 2ab9481..122bf86 100644 --- a/nageru/ffmpeg_capture.h +++ b/nageru/ffmpeg_capture.h @@ -24,7 +24,12 @@ // see the subtitle until the next frame. #include +#include #include +#include + +#include +#include #include #include #include @@ -32,12 +37,15 @@ #include #include #include +#include #include #include extern "C" { +#include #include +#include #include #include #include @@ -288,6 +296,10 @@ private: std::atomic should_interrupt{false}; bool last_frame_was_connected = true; + // TODO: Replace with std::optional if we go C++17. + bool frame_timeout_valid = false; // If true, will time out any reads after ten seconds. + std::chrono::steady_clock::time_point frame_timeout_started; // Only relevant if frame_timeout_valid == true. + bool has_dequeue_callbacks = false; std::function dequeue_init_callback = nullptr; std::function dequeue_cleanup_callback = nullptr; @@ -326,7 +338,7 @@ private: // Audio resampler. SwrContext *resampler = nullptr; AVSampleFormat last_src_format, last_dst_format; - int64_t last_channel_layout; + AVChannelLayout last_channel_layout; int last_sample_rate; // Subtitles (no decoding done, really).