diff options
Diffstat (limited to 'audio/out/ao.h')
-rw-r--r-- | audio/out/ao.h | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/audio/out/ao.h b/audio/out/ao.h index 99a3d0fae0..18c7cdc02f 100644 --- a/audio/out/ao.h +++ b/audio/out/ao.h @@ -26,8 +26,7 @@ #include "audio/chmap_sel.h" enum aocontrol { - // _VOLUME commands take struct ao_control_vol pointer for input/output. - // If there's only one volume, SET should use average of left/right. + // _VOLUME commands take a pointer to float for input/output. AOCONTROL_GET_VOLUME, AOCONTROL_SET_VOLUME, // _MUTE commands take a pointer to bool @@ -35,15 +34,11 @@ enum aocontrol { AOCONTROL_SET_MUTE, // Has char* as argument, which contains the desired stream title. AOCONTROL_UPDATE_STREAM_TITLE, - // the AO does the equivalent of af_volume (return CONTROL_TRUE if yes) - AOCONTROL_HAS_SOFT_VOLUME, - // like above, but volume persists (per app), mpv won't restore volume - AOCONTROL_HAS_PER_APP_VOLUME, }; // If set, then the queued audio data is the last. Note that after a while, new // data might be written again, instead of closing the AO. -#define AOPLAY_FINAL_CHUNK 1 +#define PLAYER_FINAL_CHUNK 1 enum { AO_EVENT_RELOAD = 1, @@ -61,13 +56,10 @@ enum { AO_INIT_STREAM_SILENCE = 1 << 2, // Force exclusive mode, i.e. lock out the system mixer. AO_INIT_EXCLUSIVE = 1 << 3, + // Initialize with music role. + AO_INIT_MEDIA_ROLE_MUSIC = 1 << 4, }; -typedef struct ao_control_vol { - float left; - float right; -} ao_control_vol_t; - struct ao_device_desc { const char *name; // symbolic name; will be set on ao->device const char *desc; // verbose human readable name @@ -83,6 +75,13 @@ struct mpv_global; struct input_ctx; struct encode_lavc_context; +struct ao_opts { + struct m_obj_settings *audio_driver_list; + char *audio_device; + char *audio_client_name; + double audio_buffer; +}; + struct ao *ao_init_best(struct mpv_global *global, int init_flags, void (*wakeup_cb)(void *ctx), void *wakeup_ctx, @@ -94,18 +93,18 @@ void ao_get_format(struct ao *ao, const char *ao_get_name(struct ao *ao); const char *ao_get_description(struct ao *ao); bool ao_untimed(struct ao *ao); -int ao_play(struct ao *ao, void **data, int samples, int flags); int ao_control(struct ao *ao, enum aocontrol cmd, void *arg); void ao_set_gain(struct ao *ao, float gain); double ao_get_delay(struct ao *ao); -int ao_get_space(struct ao *ao); void ao_reset(struct ao *ao); -void ao_pause(struct ao *ao); -void ao_resume(struct ao *ao); +void ao_start(struct ao *ao); +void ao_set_paused(struct ao *ao, bool paused, bool eof); void ao_drain(struct ao *ao); -bool ao_eof_reached(struct ao *ao); +bool ao_is_playing(struct ao *ao); +struct mp_async_queue; +struct mp_async_queue *ao_get_queue(struct ao *ao); int ao_query_and_reset_events(struct ao *ao, int events); -void ao_add_events(struct ao *ao, int events); +int ao_add_events(struct ao *ao, int events); void ao_unblock(struct ao *ao); void ao_request_reload(struct ao *ao); void ao_hotplug_event(struct ao *ao); @@ -116,8 +115,8 @@ struct ao_hotplug *ao_hotplug_create(struct mpv_global *global, void *wakeup_ctx); void ao_hotplug_destroy(struct ao_hotplug *hp); bool ao_hotplug_check_update(struct ao_hotplug *hp); -struct ao_device_list *ao_hotplug_get_device_list(struct ao_hotplug *hp); +struct ao_device_list *ao_hotplug_get_device_list(struct ao_hotplug *hp, struct ao *playback_ao); -void ao_print_devices(struct mpv_global *global, struct mp_log *log); +void ao_print_devices(struct mpv_global *global, struct mp_log *log, struct ao *playback_ao); #endif /* MPLAYER_AUDIO_OUT_H */ |