mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-28 05:33:14 +00:00
ao: use a local option struct
Instead of accessing MPOpts.
This commit is contained in:
@@ -120,7 +120,7 @@ static bool get_desc(struct m_obj_desc *dst, int index)
|
||||
}
|
||||
|
||||
// For the ao option
|
||||
const struct m_obj_list ao_obj_list = {
|
||||
static const struct m_obj_list ao_obj_list = {
|
||||
.get_desc = get_desc,
|
||||
.description = "audio outputs",
|
||||
.allow_unknown_entries = true,
|
||||
@@ -129,13 +129,30 @@ const struct m_obj_list ao_obj_list = {
|
||||
.use_global_options = true,
|
||||
};
|
||||
|
||||
#define OPT_BASE_STRUCT struct ao_opts
|
||||
const struct m_sub_options ao_conf = {
|
||||
.opts = (const struct m_option[]) {
|
||||
OPT_SETTINGSLIST("ao", audio_driver_list, 0, &ao_obj_list, ),
|
||||
OPT_STRING("audio-device", audio_device, UPDATE_AUDIO),
|
||||
OPT_STRING("audio-client-name", audio_client_name, UPDATE_AUDIO),
|
||||
OPT_DOUBLE("audio-buffer", audio_buffer, M_OPT_MIN | M_OPT_MAX,
|
||||
.min = 0, .max = 10),
|
||||
{0}
|
||||
},
|
||||
.size = sizeof(OPT_BASE_STRUCT),
|
||||
.defaults = &(const OPT_BASE_STRUCT){
|
||||
.audio_buffer = 0.2,
|
||||
.audio_device = "auto",
|
||||
.audio_client_name = "mpv",
|
||||
},
|
||||
};
|
||||
|
||||
static struct ao *ao_alloc(bool probing, struct mpv_global *global,
|
||||
void (*wakeup_cb)(void *ctx), void *wakeup_ctx,
|
||||
char *name)
|
||||
{
|
||||
assert(wakeup_cb);
|
||||
|
||||
struct MPOpts *opts = global->opts;
|
||||
struct mp_log *log = mp_log_new(NULL, global->log, "ao");
|
||||
struct m_obj_desc desc;
|
||||
if (!m_obj_list_find(&desc, &ao_obj_list, bstr0(name))) {
|
||||
@@ -143,6 +160,7 @@ static struct ao *ao_alloc(bool probing, struct mpv_global *global,
|
||||
talloc_free(log);
|
||||
return NULL;
|
||||
};
|
||||
struct ao_opts *opts = mp_get_config_group(NULL, global, &ao_conf);
|
||||
struct ao *ao = talloc_ptrtype(NULL, ao);
|
||||
talloc_steal(ao, log);
|
||||
*ao = (struct ao) {
|
||||
@@ -155,6 +173,7 @@ static struct ao *ao_alloc(bool probing, struct mpv_global *global,
|
||||
.def_buffer = opts->audio_buffer,
|
||||
.client_name = talloc_strdup(ao, opts->audio_client_name),
|
||||
};
|
||||
talloc_free(opts);
|
||||
ao->priv = m_config_group_from_desc(ao, ao->log, global, &desc, name);
|
||||
if (!ao->priv)
|
||||
goto error;
|
||||
@@ -267,8 +286,8 @@ struct ao *ao_init_best(struct mpv_global *global,
|
||||
struct encode_lavc_context *encode_lavc_ctx,
|
||||
int samplerate, int format, struct mp_chmap channels)
|
||||
{
|
||||
struct MPOpts *opts = global->opts;
|
||||
void *tmp = talloc_new(NULL);
|
||||
struct ao_opts *opts = mp_get_config_group(tmp, global, &ao_conf);
|
||||
struct mp_log *log = mp_log_new(tmp, global->log, "ao");
|
||||
struct ao *ao = NULL;
|
||||
struct m_obj_settings *ao_list = NULL;
|
||||
|
||||
@@ -83,6 +83,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,
|
||||
|
||||
Reference in New Issue
Block a user