- BOOST_FOREACH (PlayerSubtitles i, _active_subtitles.get_burnt (DCPTimePeriod(time, time + DCPTime::from_frames(1, vfr)), _always_burn_subtitles)) {
-
- /* Image subtitles */
- list<PositionImage> c = transform_image_subtitles (i.image);
- copy (c.begin(), c.end(), back_inserter (subtitles));
-
- /* Text subtitles (rendered to an image) */
- if (!i.text.empty ()) {
- list<PositionImage> s = render_subtitles (i.text, i.fonts, _video_container_size, time, vfr);
- copy (s.begin(), s.end(), back_inserter (subtitles));
+ for (int i = 0; i < CAPTION_COUNT; ++i) {
+ bool const always = _always_burn_captions && *_always_burn_captions == i;
+ BOOST_FOREACH (
+ PlayerCaption j,
+ _active_captions[i].get_burnt(DCPTimePeriod(time, time + DCPTime::from_frames(1, vfr)), always)
+ ) {
+
+ /* Image subtitles */
+ list<PositionImage> c = transform_bitmap_captions (j.image);
+ copy (c.begin(), c.end(), back_inserter (captions));
+
+ /* Text subtitles (rendered to an image) */
+ if (!j.text.empty ()) {
+ list<PositionImage> s = render_text (j.text, j.fonts, _video_container_size, time, vfr);
+ copy (s.begin(), s.end(), back_inserter (captions));
+ }