summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-07-18 11:33:03 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-07-18 11:33:03 +0000
commitbad51c711f9d10f567732a5665e7e88d2a675150 (patch)
tree0b76d3a55d0d0d567b1b5d02db34c1967d66f032 /libass
parent380fc1a76316865af7cc72dab1868760260a33e5 (diff)
downloadmpv-bad51c711f9d10f567732a5665e7e88d2a675150.tar.bz2
mpv-bad51c711f9d10f567732a5665e7e88d2a675150.tar.xz
Make sure clip coordinates are inside the screen area.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29425 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-rw-r--r--libass/ass_render.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index f64908c8a0..e4c06f7885 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -317,6 +317,11 @@ static ass_image_t* my_draw_bitmap(unsigned char* bitmap, int bitmap_w, int bitm
{
ass_image_t* img = calloc(1, sizeof(ass_image_t));
+ assert(dst_x >= 0);
+ assert(dst_y >= 0);
+ assert(dst_x + bitmap_w < frame_context.width);
+ assert(dst_y + bitmap_h < frame_context.height);
+
img->w = bitmap_w;
img->h = bitmap_h;
img->stride = stride;
@@ -598,6 +603,7 @@ static double x2scr_pos(double x) {
return x*frame_context.orig_width / frame_context.track->PlayResX +
global_settings->left_margin;
}
+
/**
* \brief Mapping between script and screen coordinates
*/
@@ -2148,6 +2154,11 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
render_context.clip_y1 = y2scr_pos(render_context.clip_y1);
}
+ render_context.clip_x0 = FFMIN(FFMAX(render_context.clip_x0, 0), frame_context.width);
+ render_context.clip_x1 = FFMIN(FFMAX(render_context.clip_x1, 0), frame_context.width);
+ render_context.clip_y0 = FFMIN(FFMAX(render_context.clip_y0, 0), frame_context.height);
+ render_context.clip_y1 = FFMIN(FFMAX(render_context.clip_y1, 0), frame_context.height);
+
// calculate rotation parameters
{
FT_Vector center;