Loading...
Searching...
No Matches
Video::LibavInterrupt Class Reference

Deadline for the blocking libav I/O of one AVFormatContext. More...

Detailed Description

Deadline for the blocking libav I/O of one AVFormatContext.

avformat_open_input, avformat_find_stream_info and av_read_frame have no timeout of their own: on a device that stops answering they block until the kernel gives up, which for some USB cameras never happens. The only way out is the interrupt callback, which libav polls from inside those calls.

install() must be called on a freshly allocated context, before avformat_open_input: libav frees the context on failure, so a retry has to allocate and install again.

Safe to arm from the thread doing the I/O and to abort from another one.

Public Types

using clock = std::chrono::steady_clock
 

Public Member Functions

void install (AVFormatContext &ctx) noexcept
 
void arm (std::chrono::milliseconds timeout) noexcept
 
void disarm () noexcept
 
void abort () noexcept
 Unblocks the pending call and every subsequent one until reset()
 
void reset () noexcept
 
bool aborted () const noexcept
 
bool expired () const noexcept
 

The documentation for this class was generated from the following file: