summaryrefslogtreecommitdiff
path: root/src/internal/subtitle/renderers/kitsubimage.c
diff options
context:
space:
mode:
authorTuomas Virtanen <katajakasa@gmail.com>2018-07-02 00:57:10 +0300
committerTuomas Virtanen <katajakasa@gmail.com>2018-07-02 00:57:10 +0300
commit2c7242e8f88d180876d1f693aa0ca998c6467766 (patch)
treed241de0ba1d6b4ab761abe8ac36315c7a5320400 /src/internal/subtitle/renderers/kitsubimage.c
parent406491cf0378a02d0188e2d3c92518d571db82f1 (diff)
Reduce memory usage of subtitles
Diffstat (limited to 'src/internal/subtitle/renderers/kitsubimage.c')
-rw-r--r--src/internal/subtitle/renderers/kitsubimage.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/internal/subtitle/renderers/kitsubimage.c b/src/internal/subtitle/renderers/kitsubimage.c
index 890a829..0cd0cce 100644
--- a/src/internal/subtitle/renderers/kitsubimage.c
+++ b/src/internal/subtitle/renderers/kitsubimage.c
@@ -57,17 +57,20 @@ static void ren_render_image_cb(Kit_SubtitleRenderer *ren, void *sub_src, double
}
}
-static int ren_get_img_data_cb(Kit_SubtitleRenderer *ren, Kit_TextureAtlas *atlas, double current_pts) {
+static int ren_get_img_data_cb(Kit_SubtitleRenderer *ren, Kit_TextureAtlas *atlas, SDL_Texture *texture, double current_pts) {
Kit_ImageSubtitleRenderer *img_ren = ren->userdata;
Kit_SubtitlePacket *packet = NULL;
- // Clean dead packets
+ Kit_CheckAtlasTextureSize(atlas, texture);
while((packet = Kit_PeekDecoderOutput(ren->dec)) != NULL) {
+ // Clear dead packets
if(packet->pts_end < current_pts) {
Kit_AdvanceDecoderOutput(ren->dec);
Kit_FreeSubtitlePacket(packet);
continue;
}
+
+ // Show visible ones
if(packet->pts_start < current_pts) {
if(packet->clear) {
Kit_ClearAtlasContent(atlas);
@@ -78,7 +81,7 @@ static int ren_get_img_data_cb(Kit_SubtitleRenderer *ren, Kit_TextureAtlas *atla
target.y = packet->y * img_ren->scale_y;
target.w = packet->surface->w * img_ren->scale_x;
target.h = packet->surface->h * img_ren->scale_y;
- Kit_AddAtlasItem(atlas, packet->surface, &target);
+ Kit_AddAtlasItem(atlas, texture, packet->surface, &target);
}
Kit_AdvanceDecoderOutput(ren->dec);
Kit_FreeSubtitlePacket(packet);