summaryrefslogtreecommitdiffstats
path: root/player/audio.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-01-26 04:36:47 +0100
committerKevin Mitchell <kevmitch@gmail.com>2018-01-30 03:10:27 -0800
commit0366ba253159a551127a7d1817a4a000e078d322 (patch)
tree6264357813da67a293b20f8685031f21371debdb /player/audio.c
parentb9f804b566c4c528714e4ec5e63675ad7ba5fefd (diff)
downloadmpv-0366ba253159a551127a7d1817a4a000e078d322.tar.bz2
mpv-0366ba253159a551127a7d1817a4a000e078d322.tar.xz
player: replace old lavfi wrapper with new filter code
lavfi.c is not necessary anymore, because f_lavfi.c (which was actually converted from it) can be used now.
Diffstat (limited to 'player/audio.c')
-rw-r--r--player/audio.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/player/audio.c b/player/audio.c
index d8f43278b0..014bde9ff1 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -193,6 +193,8 @@ static void ao_chain_reset_state(struct ao_chain *ao_c)
if (ao_c->audio_src)
audio_reset_decoding(ao_c->audio_src);
+
+ ao_c->filter_src_got_eof = false;
}
void reset_audio_state(struct MPContext *mpctx)
@@ -231,7 +233,7 @@ static void ao_chain_uninit(struct ao_chain *ao_c)
}
if (ao_c->filter_src)
- lavfi_set_connected(ao_c->filter_src, false);
+ mp_pin_disconnect(ao_c->filter_src);
talloc_free(ao_c->filter->f);
talloc_free(ao_c->input_frame);
@@ -428,7 +430,7 @@ int init_audio_decoder(struct MPContext *mpctx, struct track *track)
init_error:
if (track->sink)
- lavfi_set_connected(track->sink, false);
+ mp_pin_disconnect(track->sink);
track->sink = NULL;
audio_uninit(track->d_audio);
track->d_audio = NULL;
@@ -708,7 +710,21 @@ static int decode_new_frame(struct ao_chain *ao_c)
int res = DATA_EOF;
if (ao_c->filter_src) {
- res = lavfi_request_frame_a(ao_c->filter_src, &ao_c->input_frame);
+ struct mp_frame frame = mp_pin_out_read(ao_c->filter_src);
+ if (frame.type == MP_FRAME_EOF) {
+ res = DATA_EOF;
+ ao_c->filter_src_got_eof = true;
+ } else if (frame.type == MP_FRAME_AUDIO) {
+ res = DATA_OK;
+ ao_c->input_frame = frame.data;
+ ao_c->filter_src_got_eof = false;
+ } else if (frame.type) {
+ MP_ERR(ao_c, "unexpected frame type\n");
+ mp_frame_unref(&frame);
+ res = DATA_EOF;
+ } else {
+ res = ao_c->filter_src_got_eof ? DATA_EOF : DATA_WAIT;
+ }
} else if (ao_c->audio_src) {
audio_work(ao_c->audio_src);
res = audio_get_frame(ao_c->audio_src, &ao_c->input_frame);