video: do not show decoder framedrops if they're not requested

libavcodec makes it impossible to distinguish dropped frames (requested
with AVCodecContext.skip_frame), and cases when the decoder simply does
not return a frame by default (such as with VP9, which has invisible
reference frames).

This confuses users when decoding VP9 video. It's basically a cosmetic
issue, so just paint it over by ignoring them if framedropping is
disabled.
This commit is contained in:
wm4 2015-04-16 21:55:10 +02:00
parent 9cabef3974
commit 533b0c70e1
2 changed files with 5 additions and 5 deletions

View File

@ -517,10 +517,9 @@ listed.
rendering is too slow. Also can be incremented on "hiccups" and when the video rendering is too slow. Also can be incremented on "hiccups" and when the video
frame couldn't be displayed on time. (``vo-drop-frame-count`` property.) frame couldn't be displayed on time. (``vo-drop-frame-count`` property.)
If the decoder drops frames, the number of decoder-dropped frames is appended If the decoder drops frames, the number of decoder-dropped frames is appended
to the display as well, e.g.: ``Dropped: 4/34``. This should almost never to the display as well, e.g.: ``Dropped: 4/34``. This happens only if
happen, unless decoder-framedropping is enabled with one of the decoder-framedropping is enabled with the ``--framedrop`` options.
``--framedrop`` options, the stream contains errors, or a weird codec is in (``drop-frame-count`` property.)
use. (``drop-frame-count`` property.)
- Cache state, e.g. ``Cache: 2s+134KB``. Visible if the stream cache is enabled. - Cache state, e.g. ``Cache: 2s+134KB``. Visible if the stream cache is enabled.
The first value shows the amount of video buffered in the demuxer in seconds, The first value shows the amount of video buffered in the demuxer in seconds,
the second value shows *additional* data buffered in the stream cache in the second value shows *additional* data buffered in the stream cache in

View File

@ -405,7 +405,8 @@ static int decode_image(struct MPContext *mpctx)
talloc_free(pkt); talloc_free(pkt);
if (had_packet && !d_video->waiting_decoded_mpi && if (had_packet && !d_video->waiting_decoded_mpi &&
mpctx->video_status == STATUS_PLAYING) mpctx->video_status == STATUS_PLAYING &&
(mpctx->opts->frame_dropping & 2))
{ {
mpctx->dropped_frames_total++; mpctx->dropped_frames_total++;
mpctx->dropped_frames++; mpctx->dropped_frames++;