diff options
author | Uoti Urpala <uau@mplayer2.org> | 2012-08-31 15:42:30 +0300 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-09-18 21:07:30 +0200 |
commit | 1959ba006ce1a4591f3dcd5093901993e3fdda5f (patch) | |
tree | 93fcd19aa07e47cddb875b1ca714ae69a453c8e8 /sub/dec_sub.h | |
parent | ae9c3d530c55e86eb54d8cf23a23c5ce6301ec6e (diff) | |
download | mpv-1959ba006ce1a4591f3dcd5093901993e3fdda5f.tar.bz2 mpv-1959ba006ce1a4591f3dcd5093901993e3fdda5f.tar.xz |
subs, vo_vdpau: support RGBA color for PGS subtitles
Support passing bitmap subtitles to VOs in full RGBA color, and
implement this for libavcodec-decoded subtitle formats on decoding
side and vo_vdpau on display side. Currently this is enabled for PGS
(blu-ray) and DVB subtitles.
VDPAU seems to have sampling issues similar to known GL ones when
drawing a sub-rectangle from a larger texture with scaling, where
adjacent pixels outside the specified source rectangle affect the
result. As the bitmap subtitles may be scaled, add padding support to
the bitmap packer code.
In principle, this could be used for colored DVD subtitles too.
However, the libavcodec DVD decoder lacks parts of the resolution and
palette handling that are present in spudec.c.
Conflicts:
libvo/vo_gl.c
sub/dec_sub.h
sub/sd_lavc.c
Diffstat (limited to 'sub/dec_sub.h')
-rw-r--r-- | sub/dec_sub.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sub/dec_sub.h b/sub/dec_sub.h index efbfdc9ce7..c71a2348aa 100644 --- a/sub/dec_sub.h +++ b/sub/dec_sub.h @@ -5,13 +5,32 @@ struct sh_sub; struct osd_state; struct ass_track; +enum sub_bitmap_type { + SUBBITMAP_EMPTY, + SUBBITMAP_LIBASS, + SUBBITMAP_RGBA, +}; + typedef struct mp_eosd_res { int w, h; // screen dimensions, including black borders int mt, mb, ml, mr; // borders (top, bottom, left, right) } mp_eosd_res_t; typedef struct sub_bitmaps { + enum sub_bitmap_type type; + struct ass_image *imgs; + + struct sub_bitmap { + int w, h; + int x, y; + // Note: not clipped, going outside the screen area is allowed + int dw, dh; + void *bitmap; + } *parts; + int part_count; + + bool scaled; int bitmap_id, bitmap_pos_id; } mp_eosd_images_t; |