summaryrefslogtreecommitdiffstats
path: root/audio/aconverter.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-09-21 11:07:02 +0200
committerwm4 <wm4@nowhere>2017-09-21 12:42:09 +0200
commit3a2d5e68acb2ac0f8b09b896907a692b1c48c6b3 (patch)
tree13a7e321ce6accceca720fb654cdf7ea8eee0afc /audio/aconverter.h
parentcaaa1189ba75a7df9a4d02f7747d6c0bf3b05012 (diff)
downloadmpv-3a2d5e68acb2ac0f8b09b896907a692b1c48c6b3.tar.bz2
mpv-3a2d5e68acb2ac0f8b09b896907a692b1c48c6b3.tar.xz
audio: move libswresample wrapper out of audio filter code
Move it from af_lavrresample.c to a new aconverter.c file, which is independent from the filter chain code. It also doesn't use mp_audio, and thus has no GPL dependencies. Preparation for later commits. Not particularly well tested, so have fun.
Diffstat (limited to 'audio/aconverter.h')
-rw-r--r--audio/aconverter.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/audio/aconverter.h b/audio/aconverter.h
new file mode 100644
index 0000000000..57c5524c2f
--- /dev/null
+++ b/audio/aconverter.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include <stdbool.h>
+
+#include "chmap.h"
+
+struct mp_aconverter;
+struct mp_aframe;
+struct mpv_global;
+struct mp_log;
+
+struct mp_resample_opts {
+ int filter_size;
+ int phase_shift;
+ int linear;
+ double cutoff;
+ int normalize;
+ int allow_passthrough;
+ char **avopts;
+};
+
+#define MP_RESAMPLE_OPTS_DEF { \
+ .filter_size = 16, \
+ .cutoff = 0.0, \
+ .phase_shift = 10, \
+ .normalize = -1, \
+ }
+
+struct mp_aconverter *mp_aconverter_create(struct mpv_global *global,
+ struct mp_log *log,
+ const struct mp_resample_opts *opts);
+bool mp_aconverter_reconfig(struct mp_aconverter *p,
+ int in_rate, int in_format, struct mp_chmap in_channels,
+ int out_rate, int out_format, struct mp_chmap out_channels);
+void mp_aconverter_flush(struct mp_aconverter *p);
+void mp_aconverter_set_speed(struct mp_aconverter *p, double speed);
+bool mp_aconverter_write_input(struct mp_aconverter *p, struct mp_aframe *in);
+struct mp_aframe *mp_aconverter_read_output(struct mp_aconverter *p, bool *eof);
+double mp_aconverter_get_latency(struct mp_aconverter *p);