summaryrefslogtreecommitdiffstats
path: root/libvo/gl_osd.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-10-03 18:25:41 +0200
committerwm4 <wm4@nowhere>2012-10-16 07:26:31 +0200
commitcadff3eec75bdd81fb0d18cd0ac029faa3c318d2 (patch)
treec48914d7a76984db394117c364b8660088181c41 /libvo/gl_osd.h
parent8f8f6e6d9d27eef37640b363214a775647a0f2f4 (diff)
downloadmpv-cadff3eec75bdd81fb0d18cd0ac029faa3c318d2.tar.bz2
mpv-cadff3eec75bdd81fb0d18cd0ac029faa3c318d2.tar.xz
vo_gl3: move OSD code to gl_osd.c
Other OpenGL-using VOs can use this. gl_osd.c includes some code for vo_gl.c. The next commit actually makes use of it.
Diffstat (limited to 'libvo/gl_osd.h')
-rw-r--r--libvo/gl_osd.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/libvo/gl_osd.h b/libvo/gl_osd.h
new file mode 100644
index 0000000000..baebc3311c
--- /dev/null
+++ b/libvo/gl_osd.h
@@ -0,0 +1,41 @@
+#ifndef MPLAYER_GL_OSD_H
+#define MPLAYER_GL_OSD_H
+
+#include <stdbool.h>
+#include <inttypes.h>
+
+#include "gl_common.h"
+#include "sub/sub.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 {
+ GL *gl;
+ bool use_pbo;
+ struct mpgl_osd_part *parts[MAX_OSD_PARTS];
+ const struct osd_fmt_entry *fmt_table;
+ void *scratch;
+};
+
+struct mpgl_osd *mpgl_osd_init(GL *gl, bool legacy);
+void mpgl_osd_destroy(struct mpgl_osd *ctx);
+
+bool mpgl_osd_query_format(struct mpgl_osd *ctx, int osd_format);
+
+void mpgl_osd_draw_legacy(struct mpgl_osd *ctx, struct sub_bitmaps *b);
+struct mpgl_osd_part *mpgl_osd_generate(struct mpgl_osd *ctx,
+ struct sub_bitmaps *b);
+
+void mpgl_osd_gl_set_state(struct mpgl_osd *ctx, struct mpgl_osd_part *p);
+void mpgl_osd_gl_unset_state(struct mpgl_osd *ctx, struct mpgl_osd_part *p);
+
+#endif