2014-01-18 00:19:20 +00:00
|
|
|
#ifndef MP_OSD_STATE_H_
|
|
|
|
#define MP_OSD_STATE_H_
|
|
|
|
|
|
|
|
#include <pthread.h>
|
|
|
|
|
|
|
|
#include "osd.h"
|
|
|
|
|
|
|
|
#define OSD_CONV_CACHE_MAX 4
|
|
|
|
|
2016-03-08 20:54:17 +00:00
|
|
|
enum mp_osdtype {
|
|
|
|
OSDTYPE_SUB,
|
|
|
|
OSDTYPE_SUB2, // IDs must be numerically successive
|
|
|
|
|
|
|
|
OSDTYPE_OSD,
|
|
|
|
|
|
|
|
OSDTYPE_EXTERNAL,
|
|
|
|
OSDTYPE_EXTERNAL2,
|
|
|
|
|
|
|
|
OSDTYPE_COUNT
|
|
|
|
};
|
|
|
|
|
2016-03-08 20:29:29 +00:00
|
|
|
struct ass_state {
|
|
|
|
struct mp_log *log;
|
|
|
|
struct ass_track *track;
|
|
|
|
struct ass_renderer *render;
|
|
|
|
struct ass_library *library;
|
|
|
|
};
|
|
|
|
|
2014-01-18 00:19:20 +00:00
|
|
|
struct osd_object {
|
|
|
|
int type; // OSDTYPE_*
|
|
|
|
bool is_sub;
|
|
|
|
|
|
|
|
bool force_redraw;
|
|
|
|
|
2016-03-08 20:42:08 +00:00
|
|
|
// OSDTYPE_OSD
|
2014-01-18 00:19:20 +00:00
|
|
|
char *text;
|
|
|
|
|
2015-11-28 18:24:31 +00:00
|
|
|
// OSDTYPE_OSD
|
2014-01-18 00:19:20 +00:00
|
|
|
struct osd_progbar_state progbar_state;
|
|
|
|
|
|
|
|
// OSDTYPE_SUB/OSDTYPE_SUB2
|
2015-11-17 00:54:02 +00:00
|
|
|
struct dec_sub *sub;
|
2014-01-18 00:19:20 +00:00
|
|
|
|
|
|
|
// OSDTYPE_EXTERNAL
|
2016-03-08 20:42:08 +00:00
|
|
|
struct osd_external *externals;
|
|
|
|
int num_externals;
|
2014-01-18 00:19:20 +00:00
|
|
|
|
|
|
|
// OSDTYPE_EXTERNAL2
|
|
|
|
struct sub_bitmaps *external2;
|
|
|
|
|
|
|
|
// caches for OSD conversion (internal to render_object())
|
|
|
|
struct osd_conv_cache *cache[OSD_CONV_CACHE_MAX];
|
|
|
|
struct sub_bitmaps cached;
|
|
|
|
|
|
|
|
// VO cache state
|
2015-03-18 11:33:14 +00:00
|
|
|
int vo_change_id;
|
2014-01-18 00:19:20 +00:00
|
|
|
struct mp_osd_res vo_res;
|
|
|
|
|
|
|
|
// Internally used by osd_libass.c
|
2016-03-08 19:49:33 +00:00
|
|
|
struct sub_bitmaps parts_cache;
|
2016-03-08 20:29:29 +00:00
|
|
|
struct ass_state ass;
|
2014-01-18 00:19:20 +00:00
|
|
|
};
|
|
|
|
|
2016-03-08 20:42:08 +00:00
|
|
|
struct osd_external {
|
|
|
|
void *id;
|
|
|
|
char *text;
|
|
|
|
int res_x, res_y;
|
|
|
|
struct ass_state ass;
|
|
|
|
};
|
|
|
|
|
2014-01-18 00:19:20 +00:00
|
|
|
struct osd_state {
|
|
|
|
pthread_mutex_t lock;
|
|
|
|
|
|
|
|
struct osd_object *objs[MAX_OSD_PARTS];
|
|
|
|
|
|
|
|
bool render_subs_in_filter;
|
|
|
|
|
|
|
|
bool want_redraw;
|
|
|
|
|
|
|
|
struct MPOpts *opts;
|
|
|
|
struct mpv_global *global;
|
|
|
|
struct mp_log *log;
|
|
|
|
|
|
|
|
struct mp_draw_sub_cache *draw_cache;
|
|
|
|
};
|
|
|
|
|
2016-03-08 20:42:08 +00:00
|
|
|
void osd_changed_unlocked(struct osd_state *osd, int obj);
|
|
|
|
|
2014-01-18 00:19:20 +00:00
|
|
|
#endif
|