+ return !earliest && !filled;
+}
+
+optional<PositionImage>
+Player::subtitles_for_frame (DCPTime time) const
+{
+ list<PositionImage> subtitles;
+
+ BOOST_FOREACH (PlayerSubtitles i, _active_subtitles.get_burnt (time, _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);
+ copy (s.begin(), s.end(), back_inserter (subtitles));
+ }
+ }
+
+ if (subtitles.empty ()) {
+ return optional<PositionImage> ();
+ }
+
+ return merge (subtitles);