51 bool open(
const std::string& filepath);
62 [[nodiscard]]
bool is_open()
const {
return format_context !=
nullptr; }
76 [[nodiscard]]
bool open_device(
const std::string& device_name,
77 const std::string& format_name,
78 AVDictionary** options =
nullptr);
91 [[nodiscard]]
int find_best_stream(
int media_type,
const void** out_codec =
nullptr)
const;
98 [[nodiscard]] AVStream* get_stream(
int index)
const;
103 [[nodiscard]]
unsigned int stream_count()
const;
115 bool seek(
int stream_index, int64_t timestamp);
131 void extract_container_metadata(
FileMetadata& out_metadata)
const;
137 [[nodiscard]] std::vector<FileRegion> extract_chapter_regions()
const;
142 [[nodiscard]]
double duration_seconds()
const;
148 [[nodiscard]]
const std::string&
last_error()
const {
return m_last_error; }
158 static void init_ffmpeg();
164 AVFormatContext* format_context =
nullptr;
FFmpegDemuxContext & operator=(FFmpegDemuxContext &&)=delete
static std::mutex s_ffmpeg_init_mutex
FFmpegDemuxContext()=default
const std::string & last_error() const
FFmpegDemuxContext & operator=(const FFmpegDemuxContext &)=delete
FFmpegDemuxContext(FFmpegDemuxContext &&)=delete
static std::atomic< bool > s_ffmpeg_initialized
FFmpegDemuxContext(const FFmpegDemuxContext &)=delete
bool is_open() const
True if the format context is open and stream info was found.
RAII owner of a single AVFormatContext and associated demux state.