diff options
-rw-r--r-- | DOCS/man/options.rst | 5 | ||||
-rw-r--r-- | video/decode/vd_lavc.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index b778b2bc0f..067cbcdb13 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -1388,6 +1388,11 @@ Video (default: 3). If this is a number, then fallback will be triggered if N frames fail to decode in a row. 1 is equivalent to ``yes``. + Setting this to a higher number might break the playback start fallback: if + a fallback happens, parts of the file will be skipped, approximately by to + the number of packets that could not be decoded. Values below an unspecified + count will not have this problem, because mpv retains the packets. + ``--vd-lavc-dr=<yes|no>`` Enable direct rendering (default: yes). If this is set to ``yes``, the video will be decoded directly to GPU video memory (or staging buffers). diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index fbb0e9c137..92065fde0c 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -993,7 +993,9 @@ static int send_packet(struct mp_filter *vd, struct demux_packet *pkt) if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) return ret; - if (ctx->hw_probing && ctx->num_sent_packets < 32) { + if (ctx->hw_probing && ctx->num_sent_packets < 32 && + ctx->opts->software_fallback <= 32) + { pkt = pkt ? demux_copy_packet(pkt) : NULL; MP_TARRAY_APPEND(ctx, ctx->sent_packets, ctx->num_sent_packets, pkt); } |