summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-07-30 01:02:08 +0200
committerwm4 <wm4@nowhere>2012-07-30 01:49:35 +0200
commit128c5839ed154aeadb4bdcbcf1b32e0ea788cbf6 (patch)
treede283f2c7fac2ad469ff51478d7bf586c3c604f1
parent87cb5c683d466a68fa5ac9e46bdd4e00df264308 (diff)
downloadmpv-128c5839ed154aeadb4bdcbcf1b32e0ea788cbf6.tar.bz2
mpv-128c5839ed154aeadb4bdcbcf1b32e0ea788cbf6.tar.xz
mplayer: redo terminal status line output
Instead of displaying audio and video separately, there's now one position printed. The idea is that displaying both audio and video position is redundant. The A/V synchronisation is still printed, so that you can see if the video time is off. Also, always print the duration of the file, not only when playing audio only. Print "ct" (average A/V sync change) and the number of dropped frame only if they're significant. Remove output of outdated and crapified things, like frame position (these can't be reasonably done with modern media formats, and the playback code paths for these don't touch them). This will break some slave mode applications, because they attempt to parse the status line.
-rw-r--r--mplayer.c62
1 files changed, 27 insertions, 35 deletions
diff --git a/mplayer.c b/mplayer.c
index 765a1a5fa0..cc89e1aaee 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1148,59 +1148,51 @@ static void print_status(struct MPContext *mpctx, double a_pos, bool at_frame)
#endif
line = malloc(width + 1); // one additional char for the terminating null
- // Audio time
- if (mpctx->sh_audio) {
- if (a_pos != MP_NOPTS_VALUE)
- saddf(line, &pos, width, "A:%6.1f ", a_pos);
- else
- saddf(line, &pos, width, "A: ??? ");
- if (!sh_video && a_pos != MP_NOPTS_VALUE) {
- float len = get_time_length(mpctx);
- saddf(line, &pos, width, "(");
- sadd_hhmmssf(line, &pos, width, a_pos);
- saddf(line, &pos, width, ") of %.1f (", len);
- sadd_hhmmssf(line, &pos, width, len);
- saddf(line, &pos, width, ") ");
- }
- }
+ // Playback position
+ double cur = MP_NOPTS_VALUE;
+ if (mpctx->sh_audio && a_pos != MP_NOPTS_VALUE) {
+ cur = a_pos;
+ } else if (mpctx->sh_video && mpctx->video_pts != MP_NOPTS_VALUE) {
+ cur = mpctx->video_pts;
+ }
+ if (cur != MP_NOPTS_VALUE) {
+ saddf(line, &pos, width, "T:%6.1f ", cur);
+ saddf(line, &pos, width, "(");
+ sadd_hhmmssf(line, &pos, width, cur);
+ saddf(line, &pos, width, ") ");
+ } else
+ saddf(line, &pos, width, "T: ??? ");
- // Video time
- if (sh_video) {
- if (mpctx->video_pts != MP_NOPTS_VALUE)
- saddf(line, &pos, width, "V:%6.1f ", mpctx->video_pts);
- else
- saddf(line, &pos, width, "V: ??? ", mpctx->video_pts);
+ double len = get_time_length(mpctx);
+ if (len >= 0) {
+ saddf(line, &pos, width, "of %.1f (", len);
+ sadd_hhmmssf(line, &pos, width, len);
+ saddf(line, &pos, width, ") ");
}
// A-V sync
if (mpctx->sh_audio && sh_video) {
if (mpctx->last_av_difference != MP_NOPTS_VALUE)
- saddf(line, &pos, width, "A-V:%7.3f ct:%7.3f ",
- mpctx->last_av_difference, mpctx->total_avsync_change);
+ saddf(line, &pos, width, "A-V:%7.3f ", mpctx->last_av_difference);
else
- saddf(line, &pos, width, "A-V: ??? ct:%7.3f ",
- mpctx->total_avsync_change);
+ saddf(line, &pos, width, "A-V: ??? ");
+ if (fabs(mpctx->total_avsync_change) > 0.01)
+ saddf(line, &pos, width, "ct:%7.3f ", mpctx->total_avsync_change);
}
- // Video stats
- if (sh_video)
- saddf(line, &pos, width, "%3d/%3d ",
- (int)sh_video->num_frames,
- (int)sh_video->num_frames_decoded);
-
// VO stats
- if (sh_video)
- saddf(line, &pos, width, "%d ", drop_frame_cnt);
+ if (sh_video && drop_frame_cnt)
+ saddf(line, &pos, width, "Dropped: %d ", drop_frame_cnt);
#ifdef CONFIG_STREAM_CACHE
// cache stats
if (stream_cache_size > 0)
- saddf(line, &pos, width, "%d%% ", cache_fill_status(mpctx->stream));
+ saddf(line, &pos, width, "Cache: %d%% ", cache_fill_status(mpctx->stream));
#endif
// other
if (opts->playback_speed != 1)
- saddf(line, &pos, width, "%4.2fx ", opts->playback_speed);
+ saddf(line, &pos, width, "Speed: %4.2fx ", opts->playback_speed);
// end
if (erase_to_end_of_line) {