diff options
Diffstat (limited to 'demux/demux.h')
-rw-r--r-- | demux/demux.h | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/demux/demux.h b/demux/demux.h index c94f690da0..08904f26cc 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -56,6 +56,33 @@ struct demux_reader_state { struct demux_seek_range seek_ranges[MAX_SEEK_RANGES]; }; +extern const struct m_sub_options demux_conf; + +struct demux_opts { + int enable_cache; + bool disk_cache; + int64_t max_bytes; + int64_t max_bytes_bw; + bool donate_fw; + double min_secs; + double hyst_secs; + bool force_seekable; + double min_secs_cache; + bool access_references; + int seekable_cache; + int index_mode; + double mf_fps; + char *mf_type; + bool create_ccs; + char *record_file; + int video_back_preroll; + int audio_back_preroll; + int back_batch[STREAM_TYPE_COUNT]; + double back_seek_size; + char *meta_cp; + bool force_retry_eof; +}; + #define SEEK_FACTOR (1 << 1) // argument is in range [0,1] #define SEEK_FORWARD (1 << 2) // prefer later time if not exact // (if unset, prefer earlier time) @@ -63,6 +90,8 @@ struct demux_reader_state { #define SEEK_SATAN (1 << 4) // enable backward demuxing #define SEEK_HR (1 << 5) // hr-seek (this is a weak hint only) #define SEEK_FORCE (1 << 6) // ignore unseekable flag +#define SEEK_BLOCK (1 << 7) // upon successfully queued seek, block readers + // (simplifies syncing multiple reader threads) // Strictness of the demuxer open format check. // demux.c will try by default: NORMAL, UNSAFE (in this order) @@ -203,6 +232,9 @@ typedef struct demuxer { int stream_origin; // any STREAM_ORIGIN_* (set from source stream) bool access_references; // allow opening other files/URLs + struct demux_opts *opts; + struct m_config_cache *opts_cache; + // Bitmask of DEMUX_EVENT_* int events; @@ -251,6 +283,8 @@ bool demux_free_async_finish(struct demux_free_async_state *state); void demuxer_feed_caption(struct sh_stream *stream, demux_packet_t *dp); int demux_read_packet_async(struct sh_stream *sh, struct demux_packet **out_pkt); +int demux_read_packet_async_until(struct sh_stream *sh, double min_pts, + struct demux_packet **out_pkt); bool demux_stream_is_selected(struct sh_stream *stream); void demux_set_stream_wakeup_cb(struct sh_stream *sh, void (*cb)(void *ctx), void *ctx); @@ -286,8 +320,10 @@ void demux_block_reading(struct demuxer *demuxer, bool block); void demuxer_select_track(struct demuxer *demuxer, struct sh_stream *stream, double ref_pts, bool selected); +void demuxer_refresh_track(struct demuxer *demuxer, struct sh_stream *stream, + double ref_pts); -void demuxer_help(struct mp_log *log); +int demuxer_help(struct mp_log *log, const m_option_t *opt, struct bstr name); int demuxer_add_attachment(struct demuxer *demuxer, char *name, char *type, void *data, size_t data_size); |