2012-10-03 16:25:41 +00:00
|
|
|
#ifndef MPLAYER_GL_OSD_H
|
|
|
|
#define MPLAYER_GL_OSD_H
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <inttypes.h>
|
|
|
|
|
|
|
|
#include "gl_common.h"
|
2013-11-24 11:58:06 +00:00
|
|
|
#include "sub/osd.h"
|
2012-10-03 16:25:41 +00:00
|
|
|
|
|
|
|
struct mpgl_osd_part {
|
|
|
|
enum sub_bitmap_format format;
|
|
|
|
int bitmap_id, bitmap_pos_id;
|
|
|
|
GLuint texture;
|
|
|
|
int w, h;
|
|
|
|
GLuint buffer;
|
|
|
|
int num_vertices;
|
|
|
|
void *vertices;
|
|
|
|
struct bitmap_packer *packer;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct mpgl_osd {
|
2013-09-11 23:33:33 +00:00
|
|
|
struct mp_log *log;
|
2014-06-15 18:46:57 +00:00
|
|
|
struct osd_state *osd;
|
2012-10-03 16:25:41 +00:00
|
|
|
GL *gl;
|
|
|
|
bool use_pbo;
|
2012-10-04 00:29:54 +00:00
|
|
|
bool scaled;
|
2012-10-03 16:25:41 +00:00
|
|
|
struct mpgl_osd_part *parts[MAX_OSD_PARTS];
|
|
|
|
const struct osd_fmt_entry *fmt_table;
|
VO, sub: refactor
Remove VFCTRL_DRAW_OSD, VFCAP_EOSD_FILTER, VFCAP_EOSD_RGBA, VFCAP_EOSD,
VOCTRL_DRAW_EOSD, VOCTRL_GET_EOSD_RES, VOCTRL_QUERY_EOSD_FORMAT.
Remove draw_osd_with_eosd(), which rendered the OSD by calling
VOCTRL_DRAW_EOSD. Change VOs to call osd_draw() directly, which takes
a callback as argument. (This basically works like the old OSD API,
except multiple OSD bitmap formats are supported and caching is
possible.)
Remove all mentions of "eosd". It's simply "osd" now.
Make OSD size per-OSD-object, as they can be different when using
vf_sub. Include display_par/video_par in resolution change detection.
Fix the issue with margin borders in vo_corevideo.
2012-10-19 17:25:18 +00:00
|
|
|
bool formats[SUBBITMAP_COUNT];
|
2012-10-03 16:25:41 +00:00
|
|
|
void *scratch;
|
|
|
|
};
|
|
|
|
|
2014-06-15 18:46:57 +00:00
|
|
|
struct mpgl_osd *mpgl_osd_init(GL *gl, struct mp_log *log, struct osd_state *osd);
|
2012-10-03 16:25:41 +00:00
|
|
|
void mpgl_osd_destroy(struct mpgl_osd *ctx);
|
|
|
|
|
2014-06-15 21:58:33 +00:00
|
|
|
struct mpgl_osd_part *mpgl_osd_generate(struct mpgl_osd *ctx,
|
|
|
|
struct sub_bitmaps *b);
|
|
|
|
|
VO, sub: refactor
Remove VFCTRL_DRAW_OSD, VFCAP_EOSD_FILTER, VFCAP_EOSD_RGBA, VFCAP_EOSD,
VOCTRL_DRAW_EOSD, VOCTRL_GET_EOSD_RES, VOCTRL_QUERY_EOSD_FORMAT.
Remove draw_osd_with_eosd(), which rendered the OSD by calling
VOCTRL_DRAW_EOSD. Change VOs to call osd_draw() directly, which takes
a callback as argument. (This basically works like the old OSD API,
except multiple OSD bitmap formats are supported and caching is
possible.)
Remove all mentions of "eosd". It's simply "osd" now.
Make OSD size per-OSD-object, as they can be different when using
vf_sub. Include display_par/video_par in resolution change detection.
Fix the issue with margin borders in vo_corevideo.
2012-10-19 17:25:18 +00:00
|
|
|
void mpgl_osd_set_gl_state(struct mpgl_osd *ctx, struct mpgl_osd_part *p);
|
|
|
|
void mpgl_osd_unset_gl_state(struct mpgl_osd *ctx, struct mpgl_osd_part *p);
|
|
|
|
|
2014-06-15 18:46:57 +00:00
|
|
|
void mpgl_osd_draw_legacy(struct mpgl_osd *ctx, double pts,
|
VO, sub: refactor
Remove VFCTRL_DRAW_OSD, VFCAP_EOSD_FILTER, VFCAP_EOSD_RGBA, VFCAP_EOSD,
VOCTRL_DRAW_EOSD, VOCTRL_GET_EOSD_RES, VOCTRL_QUERY_EOSD_FORMAT.
Remove draw_osd_with_eosd(), which rendered the OSD by calling
VOCTRL_DRAW_EOSD. Change VOs to call osd_draw() directly, which takes
a callback as argument. (This basically works like the old OSD API,
except multiple OSD bitmap formats are supported and caching is
possible.)
Remove all mentions of "eosd". It's simply "osd" now.
Make OSD size per-OSD-object, as they can be different when using
vf_sub. Include display_par/video_par in resolution change detection.
Fix the issue with margin borders in vo_corevideo.
2012-10-19 17:25:18 +00:00
|
|
|
struct mp_osd_res res);
|
2012-10-03 16:25:41 +00:00
|
|
|
|
|
|
|
#endif
|