diff options
Diffstat (limited to 'sub/sub.h')
-rw-r--r-- | sub/sub.h | 57 |
1 files changed, 55 insertions, 2 deletions
@@ -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 |