summaryrefslogtreecommitdiffstats
path: root/player/core.h
diff options
context:
space:
mode:
Diffstat (limited to 'player/core.h')
-rw-r--r--player/core.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/player/core.h b/player/core.h
index 738233c072..5ad494ff89 100644
--- a/player/core.h
+++ b/player/core.h
@@ -190,28 +190,33 @@ struct vo_chain {
// Like vo_chain, for audio.
struct ao_chain {
struct mp_log *log;
+ struct MPContext *mpctx;
bool spdif_passthrough, spdif_failed;
struct mp_output_chain *filter;
struct ao *ao;
- struct mp_audio_buffer *ao_buffer;
+ struct mp_async_queue *ao_queue;
+ struct mp_filter *queue_filter;
+ struct mp_filter *ao_filter;
double ao_resume_time;
- // 1-element output frame queue.
- struct mp_aframe *output_frame;
bool out_eof;
-
double last_out_pts;
+ double start_pts;
+ bool start_pts_known;
+
struct track *track;
struct mp_pin *filter_src;
struct mp_pin *dec_src;
double delay;
+ bool untimed_throttle;
- bool underrun;
+ bool ao_underrun; // last known AO state
+ bool underrun; // for cache pause logic
};
/* Note that playback can be paused, stopped, etc. at any time. While paused,
@@ -223,7 +228,6 @@ struct ao_chain {
enum playback_status {
// code may compare status values numerically
STATUS_SYNCING, // seeking for a position to resume
- STATUS_FILLING, // decoding more data (so you start with full buffers)
STATUS_READY, // buffers full, playback can be started any time
STATUS_PLAYING, // normal playback
STATUS_DRAINING, // decoding has ended; still playing out queued buffers
@@ -500,6 +504,7 @@ void reinit_audio_chain_src(struct MPContext *mpctx, struct track *track);
void audio_update_volume(struct MPContext *mpctx);
void audio_update_balance(struct MPContext *mpctx);
void reload_audio_output(struct MPContext *mpctx);
+void audio_start_ao(struct MPContext *mpctx);
// configfiles.c
void mp_parse_cfgfiles(struct MPContext *mpctx);