diff options
author | wm4 <wm4@nowhere> | 2012-10-04 17:16:40 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-10-16 07:26:32 +0200 |
commit | cc05910f16a5ccd8e3dca26a89e9c3835cbdb645 (patch) | |
tree | a95fcec3775de31f0fd5b4f52a43f60115bc292c /sub/sub.h | |
parent | 05f4f00e24caf23646a2b551b8e1a1a1abe76de7 (diff) | |
download | mpv-cc05910f16a5ccd8e3dca26a89e9c3835cbdb645.tar.bz2 mpv-cc05910f16a5ccd8e3dca26a89e9c3835cbdb645.tar.xz |
sub: cosmetics: move things around
Move sub-bitmap definitions from dec_sub.h to sub.h. While it's a bit
odd that OSD data structures are in a file named sub.h, it's definitely
way too strange to have them in a file about subtitle decoding. (Maybe
sub.h/.c and the sub/ directory should be split out and renamed "osd"
at a later point.)
Remove including ass_mp.h (and the libass headers) where possible.
Remove typedefs for mp_eosd_res and sub_bitmaps structs.
Store a mp_eosd_res struct in osd_state instead of just w/h. Note that
sbtitles might be rendered using different sizes/margins when filters
are involved (the subtitle renderer is not supposed to use the OSD res
directly, and the "dim" member removed in the previous commit is
something different).
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 |