void loop() { int dif = 0; ASS_Image *img = ass_render_frame(ass_renderer, track, (int) (tm * 1000), &dif); tm += 1 / fps; if(dif == 0) return; SDL_RenderClear( renderer ); while (img) { SDL_Surface* surface = SDL_CreateRGBSurface (0, img->w, img->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); blend_single(surface, img); SDL_Rect dest = { img->dst_x, img->dst_y, img->w, img->h }; SDL_Texture *tex = SDL_CreateTextureFromSurface(renderer, surface); SDL_RenderCopy(renderer, tex, NULL, &dest); SDL_DestroyTexture (tex); SDL_FreeSurface (surface); //free(img->bitmap); img = img->next; //count++; } //free(img); SDL_RenderPresent( renderer ); SDL_Delay(10); }
static void blend(image_t * frame, ASS_Image *img) { int cnt = 0; while (img) { blend_single(frame, img); ++cnt; img = img->next; } printf("%d images blended\n", cnt); }