mirror of
https://github.com/mpv-player/mpv
synced 2025-02-09 00:17:07 +00:00
Reduces the size of gl_video.c a bit further. This also uses a separate vertex array object for OSD elements, so the video one can be simplified slightly. OSD shader generation is still in gl_video.c, which leads to the strange additional parameter to mpgl_osd_init(). The issue is that video parameters influence the OSD shader (????), and also OSD needs to go through the screen colormanagement.
45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
#ifndef MPLAYER_GL_OSD_H
|
|
#define MPLAYER_GL_OSD_H
|
|
|
|
#include <stdbool.h>
|
|
#include <inttypes.h>
|
|
|
|
#include "gl_utils.h"
|
|
#include "sub/osd.h"
|
|
|
|
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 {
|
|
struct mp_log *log;
|
|
struct osd_state *osd;
|
|
GL *gl;
|
|
bool use_pbo;
|
|
bool scaled;
|
|
struct mpgl_osd_part *parts[MAX_OSD_PARTS];
|
|
const struct osd_fmt_entry *fmt_table;
|
|
bool formats[SUBBITMAP_COUNT];
|
|
struct gl_vao vao;
|
|
GLuint *programs; // SUBBITMAP_COUNT elements
|
|
// temporary
|
|
float offset[2];
|
|
void *scratch;
|
|
};
|
|
|
|
struct mpgl_osd *mpgl_osd_init(GL *gl, struct mp_log *log, struct osd_state *osd,
|
|
GLuint *programs);
|
|
void mpgl_osd_destroy(struct mpgl_osd *ctx);
|
|
|
|
void mpgl_osd_draw(struct mpgl_osd *ctx, struct mp_osd_res res, double pts,
|
|
int stereo_mode);
|
|
|
|
#endif
|