summaryrefslogtreecommitdiffstats
path: root/sub/sub.h
diff options
context:
space:
mode:
Diffstat (limited to 'sub/sub.h')
-rw-r--r--sub/sub.h57
1 files changed, 55 insertions, 2 deletions
diff --git a/sub/sub.h b/sub/sub.h
index ed3010c1af..6a83036460 100644
--- a/sub/sub.h
+++ b/sub/sub.h
@@ -20,11 +20,64 @@
#define MPLAYER_SUB_H
#include <stdbool.h>
+#include <stdint.h>
#include "subreader.h"
-#include "dec_sub.h"
struct vo;
+struct sub_render_params;
+
+enum sub_bitmap_format {
+ SUBBITMAP_EMPTY = 0,// no bitmaps; always has num_parts==0
+ SUBBITMAP_LIBASS, // A8, with a per-surface blend color (libass.color)
+ SUBBITMAP_RGBA, // B8G8R8A8, can be scaled
+ SUBBITMAP_OLD, // I8A8 (monochrome), premultiplied alpha
+ SUBBITMAP_OLD_PLANAR, // like previous, but bitmap points to old_osd_planar
+
+ SUBBITMAP_COUNT
+};
+
+// For SUBBITMAP_OLD_PANAR
+struct old_osd_planar {
+ unsigned char *bitmap;
+ unsigned char *alpha;
+};
+
+struct sub_bitmap {
+ void *bitmap;
+ int stride;
+ int w, h;
+ int x, y;
+ // Note: not clipped, going outside the screen area is allowed
+ int dw, dh;
+
+ union {
+ struct {
+ uint32_t color;
+ } libass;
+ };
+};
+
+struct sub_bitmaps {
+ int render_index; // for VO cache state (limited by MAX_OSD_PARTS)
+
+ enum sub_bitmap_format format;
+ bool scaled; // if false, dw==w && dh==h
+
+ struct sub_bitmap *parts;
+ int num_parts;
+
+ // Provided for VOs with old code
+ struct ass_image *imgs;
+
+ // Incremented on each change
+ int bitmap_id, bitmap_pos_id;
+};
+
+struct mp_eosd_res {
+ int w, h; // screen dimensions, including black borders
+ int mt, mb, ml, mr; // borders (top, bottom, left, right)
+};
enum mp_osdtype {
OSDTYPE_SUB,
@@ -71,7 +124,7 @@ struct osd_state {
bool render_subs_in_filter;
- int w, h;
+ struct mp_eosd_res res;
char *osd_text; // OSDTYPE_OSD
int progbar_type, progbar_value; // OSDTYPE_PROGBAR