Mercurial > mplayer.hg
changeset 29383:e9cab9f6ed62
Make sure clip coordinates are inside the screen area.
author | eugeni |
---|---|
date | Sat, 18 Jul 2009 11:33:03 +0000 |
parents | 363310571aae |
children | 36a9b369cd9d |
files | libass/ass_render.c libmpcodecs/vf_ass.c |
diffstat | 2 files changed, 15 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libass/ass_render.c Sat Jul 18 11:33:00 2009 +0000 +++ b/libass/ass_render.c Sat Jul 18 11:33:03 2009 +0000 @@ -317,6 +317,11 @@ { 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 @@ 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 @@ 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;
--- a/libmpcodecs/vf_ass.c Sat Jul 18 11:33:00 2009 +0000 +++ b/libmpcodecs/vf_ass.c Sat Jul 18 11:33:03 2009 +0000 @@ -219,6 +219,10 @@ last_row += (last_row % 2); chroma_rows = (last_row - first_row) / 2; + assert(first_row >= 0); + assert(first_row <= last_row); + assert(last_row < vf->priv->outh); + for (pl = 1; pl < 3; ++pl) { int dst_stride = vf->priv->outw; int src_stride = vf->dmpi->stride[pl];