mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 09:32:40 +00:00
9dba2a52db
This collects statistics and other things. The option dumps raw data into a file. A script to visualize this data is included too. Litter some of the player code with calls that generate these statistics. In general, this will be helpful to debug timing dependent issues, such as A/V sync problems. Normally, one could argue that this is the task of a real profiler, but then we'd have a hard time to include extra information like audio/video PTS differences. We could also just hardcode all statistics collection and processing in the player code, but then we'd end up with something like mplayer's status line, which was cluttered and required a centralized approach (i.e. getting the data to the status line; so it was all in mplayer.c). Some players can visualize such statistics on OSD, but that sounds even more complicated. So the approach added with this commit sounds sensible. The stats-conv.py script is rather primitive at the moment and its output is semi-ugly. It uses matplotlib, so it could probably be extended to do a lot, so it's not a dead-end.
35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
#ifndef MP_MSG_CONTROL_H
|
|
#define MP_MSG_CONTROL_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
struct mpv_global;
|
|
void mp_msg_init(struct mpv_global *global);
|
|
void mp_msg_uninit(struct mpv_global *global);
|
|
void mp_msg_update_msglevels(struct mpv_global *global);
|
|
void mp_msg_mute(struct mpv_global *global, bool mute);
|
|
void mp_msg_force_stderr(struct mpv_global *global, bool force_stderr);
|
|
void mp_msg_flush_status_line(struct mpv_global *global);
|
|
bool mp_msg_has_status_line(struct mpv_global *global);
|
|
|
|
struct mp_log_buffer_entry {
|
|
char *prefix;
|
|
int level;
|
|
char *text;
|
|
};
|
|
|
|
struct mp_log_buffer;
|
|
struct mp_log_buffer *mp_msg_log_buffer_new(struct mpv_global *global,
|
|
int size, int level);
|
|
void mp_msg_log_buffer_destroy(struct mp_log_buffer *buffer);
|
|
struct mp_log_buffer_entry *mp_msg_log_buffer_read(struct mp_log_buffer *buffer);
|
|
|
|
int mp_msg_open_stats_file(struct mpv_global *global, const char *path);
|
|
|
|
struct bstr;
|
|
int mp_msg_split_msglevel(struct bstr *s, struct bstr *out_mod, int *out_level);
|
|
|
|
extern char *mp_log_levels[MSGL_MAX + 1];
|
|
|
|
#endif
|