diff options
author | wm4 <wm4@nowhere> | 2019-05-24 20:18:55 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-09-19 20:37:04 +0200 |
commit | f53f9b89b10bec6e6c5bcc1d8add0577698bd0e4 (patch) | |
tree | acc2b712573f80b739e8fbe1a49fa78aeab82a4b /demux/demux.c | |
parent | 6d11668a9c448674ac04ef61bf902c867671d8db (diff) | |
download | mpv-f53f9b89b10bec6e6c5bcc1d8add0577698bd0e4.tar.bz2 mpv-f53f9b89b10bec6e6c5bcc1d8add0577698bd0e4.tar.xz |
demux: add a special case for backward demuxing of opus
Make --audio-backward-overlap default to 2 for Opus. I have no idea why
this is needed. It seems to fix backward decoding though (going purely
by listening).
Normally, this should not be needed, since initial padding is completely
contained within the first packet (normally, and in the case I tested).
So the 2nd packet/frame should be fine, but for some unknown reason it
works only with the 3rd.
Diffstat (limited to 'demux/demux.c')
-rw-r--r-- | demux/demux.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/demux/demux.c b/demux/demux.c index 481b87e0c7..028f6dcef3 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -953,8 +953,11 @@ static void demux_add_sh_stream_locked(struct demux_internal *in, switch (ds->type) { case STREAM_AUDIO: ds->back_preroll = in->opts->audio_back_preroll; - if (ds->back_preroll < 0) // auto + if (ds->back_preroll < 0) { // auto ds->back_preroll = mp_codec_is_lossless(sh->codec->codec) ? 0 : 1; + if (sh->codec->codec && strcmp(sh->codec->codec, "opus") == 0) + ds->back_preroll = 2; + } break; case STREAM_VIDEO: ds->back_preroll = in->opts->video_back_preroll; |