summaryrefslogtreecommitdiffstats
path: root/sub/sd_ass.c
diff options
context:
space:
mode:
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r--sub/sd_ass.c36
1 files changed, 3 insertions, 33 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index aa190ee4ac..478b1c96a9 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -141,39 +141,9 @@ static void get_bitmaps(struct sh_sub *sh, struct osd_state *osd,
ASS_Renderer *renderer = osd->ass_renderer;
mp_ass_configure(renderer, opts, &osd->dim, osd->unscaled);
ass_set_aspect_ratio(renderer, scale, 1);
- int changed;
- res->imgs = ass_render_frame(renderer, ctx->ass_track,
- osd->sub_pts * 1000 + .5, &changed);
- if (changed == 2)
- res->bitmap_id = ++res->bitmap_pos_id;
- else if (changed)
- res->bitmap_pos_id++;
- res->format = SUBBITMAP_LIBASS;
-
- int num_parts = 0;
- int num_parts_alloc = MP_TALLOC_ELEMS(ctx->parts);
- struct ass_image *img = res->imgs;
- while (img) {
- if (img->w == 0 || img->h == 0)
- continue;
- if (num_parts >= num_parts_alloc) {
- num_parts_alloc = FFMAX(num_parts_alloc * 2, 32);
- ctx->parts = talloc_realloc(ctx, ctx->parts, struct sub_bitmap,
- num_parts_alloc);
- }
- struct sub_bitmap *p = &ctx->parts[num_parts];
- p->bitmap = img->bitmap;
- p->stride = img->stride;
- p->libass.color = img->color;
- p->dw = p->w = img->w;
- p->dh = p->h = img->h;
- p->x = img->dst_x;
- p->y = img->dst_y;
- img = img->next;
- num_parts++;
- }
- res->parts = ctx->parts;
- res->num_parts = num_parts;
+ mp_ass_render_frame(renderer, ctx->ass_track, osd->sub_pts * 1000 + .5,
+ &ctx->parts, res);
+ talloc_steal(ctx, ctx->parts);
}
static void reset(struct sh_sub *sh, struct osd_state *osd)