diff options
Diffstat (limited to 'filters/f_decoder_wrapper.h')
-rw-r--r-- | filters/f_decoder_wrapper.h | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/filters/f_decoder_wrapper.h b/filters/f_decoder_wrapper.h index 28d9b5cb7b..a352dc0c4d 100644 --- a/filters/f_decoder_wrapper.h +++ b/filters/f_decoder_wrapper.h @@ -18,6 +18,7 @@ #pragma once #include <stdbool.h> +#include <stddef.h> #include "filter.h" @@ -32,29 +33,8 @@ struct mp_decoder_wrapper { // Filter with no input and 1 output, which returns the decoded data. struct mp_filter *f; - // For informational purposes. - char *decoder_desc; - // Can be set by user. struct mp_recorder_sink *recorder_sink; - int play_dir; - - // --- for STREAM_VIDEO - - // FPS from demuxer or from user override - float fps; - - // Framedrop control for playback (not used for hr seek etc.) - int attempt_framedrops; // try dropping this many frames - int dropped_frames; // total frames _probably_ dropped - - // --- for STREAM_AUDIO - - // Prefer spdif wrapper over real decoders. - bool try_spdif; - - // A pts reset was observed (audio only, heuristic). - bool pts_reset; }; // Create the decoder wrapper for the given stream, plus underlying decoder. @@ -63,6 +43,23 @@ struct mp_decoder_wrapper { struct mp_decoder_wrapper *mp_decoder_wrapper_create(struct mp_filter *parent, struct sh_stream *src); +// Legacy decoder framedrop control. +void mp_decoder_wrapper_set_frame_drops(struct mp_decoder_wrapper *d, int num); +int mp_decoder_wrapper_get_frames_dropped(struct mp_decoder_wrapper *d); + +double mp_decoder_wrapper_get_container_fps(struct mp_decoder_wrapper *d); + +// Whether to prefer spdif wrapper over real decoders on next reinit. +void mp_decoder_wrapper_set_spdif_flag(struct mp_decoder_wrapper *d, bool spdif); + +// Whether to decode only 1 frame and then stop, and cache the frame across resets. +void mp_decoder_wrapper_set_coverart_flag(struct mp_decoder_wrapper *d, bool c); + +// True if a pts reset was observed (audio only, heuristic). +bool mp_decoder_wrapper_get_pts_reset(struct mp_decoder_wrapper *d); + +void mp_decoder_wrapper_set_play_dir(struct mp_decoder_wrapper *d, int dir); + struct mp_decoder_list *video_decoder_list(void); struct mp_decoder_list *audio_decoder_list(void); @@ -77,6 +74,7 @@ enum dec_ctrl { VDCTRL_GET_BFRAMES, // framedrop mode: 0=none, 1=standard, 2=hrseek VDCTRL_SET_FRAMEDROP, + VDCTRL_CHECK_FORCED_EOF, }; int mp_decoder_wrapper_control(struct mp_decoder_wrapper *d, @@ -113,6 +111,7 @@ extern const struct mp_decoder_fns ad_spdif; // init to all-0 on init and resets. struct lavc_state { bool eof_returned; + bool packets_sent; }; void lavc_process(struct mp_filter *f, struct lavc_state *state, int (*send)(struct mp_filter *f, struct demux_packet *pkt), |