diff options
author | wm4 <wm4@nowhere> | 2016-08-09 16:22:06 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-08-09 17:09:29 +0200 |
commit | eab92cec60d92e0de2ea53d4d01052f4d7acc5d5 (patch) | |
tree | cb6202b24b7407283dd5f28e650d3fc869a7e33d /audio/out/pull.c | |
parent | 3759a3f40bed92b161342532445718906f903234 (diff) | |
download | mpv-eab92cec60d92e0de2ea53d4d01052f4d7acc5d5.tar.bz2 mpv-eab92cec60d92e0de2ea53d4d01052f4d7acc5d5.tar.xz |
player: add --audio-stream-silence
Completely insane that this has to be done. Crap for compensating HDMI
crap.
Diffstat (limited to 'audio/out/pull.c')
-rw-r--r-- | audio/out/pull.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/audio/out/pull.c b/audio/out/pull.c index 89805809b7..2175a58db0 100644 --- a/audio/out/pull.c +++ b/audio/out/pull.c @@ -185,7 +185,7 @@ static double get_delay(struct ao *ao) static void reset(struct ao *ao) { struct ao_pull_state *p = ao->api_priv; - if (ao->driver->reset) + if (!ao->stream_silence && ao->driver->reset) ao->driver->reset(ao); // assumes the audio callback thread is stopped set_state(ao, AO_STATE_NONE); for (int n = 0; n < ao->num_planes; n++) @@ -195,7 +195,7 @@ static void reset(struct ao *ao) static void pause(struct ao *ao) { - if (ao->driver->reset) + if (!ao->stream_silence && ao->driver->reset) ao->driver->reset(ao); set_state(ao, AO_STATE_NONE); } @@ -244,6 +244,10 @@ static int init(struct ao *ao) p->buffers[n] = mp_ring_new(ao, ao->buffer * ao->sstride); atomic_store(&p->state, AO_STATE_NONE); assert(ao->driver->resume); + + if (ao->stream_silence) + ao->driver->resume(ao); + return 0; } |