-shared_ptr<DCPVideo>
-Player::content_to_dcp (
- shared_ptr<VideoContent> content,
- ContentVideo content_video,
- list<shared_ptr<Piece> > subs,
- DCPTime time,
- dcp::Size image_size) const
-{
- shared_ptr<DCPVideo> dcp_video (
- new DCPVideo (
- content_video.image,
- content_video.eyes,
- content->crop (),
- image_size,
- _video_container_size,
- _film->scaler(),
- content->colour_conversion (),
- time
- )
- );
-
-
- /* Add subtitles */
-
- list<PositionImage> sub_images;
-
- for (list<shared_ptr<Piece> >::const_iterator i = subs.begin(); i != subs.end(); ++i) {
- shared_ptr<SubtitleDecoder> subtitle_decoder = dynamic_pointer_cast<SubtitleDecoder> ((*i)->decoder);
- shared_ptr<SubtitleContent> subtitle_content = dynamic_pointer_cast<SubtitleContent> ((*i)->content);
- ContentTime const from = dcp_to_content_subtitle (*i, time);
- ContentTime const to = from + ContentTime::from_frames (1, content->video_frame_rate ());
-
- list<shared_ptr<ContentImageSubtitle> > image_subtitles = subtitle_decoder->get_image_subtitles (from, to);
- if (!image_subtitles.empty ()) {
- list<PositionImage> im = process_content_image_subtitles (
- subtitle_content,
- image_subtitles
- );
-
- copy (im.begin(), im.end(), back_inserter (sub_images));
- }
-
- if (_burn_subtitles) {
- list<shared_ptr<ContentTextSubtitle> > text_subtitles = subtitle_decoder->get_text_subtitles (from, to);
- if (!text_subtitles.empty ()) {
- list<PositionImage> im = process_content_text_subtitles (text_subtitles);
- copy (im.begin(), im.end(), back_inserter (sub_images));
- }
- }
- }
-
- if (!sub_images.empty ()) {
- dcp_video->set_subtitle (merge (sub_images));
- }
-
- return dcp_video;
-}
-
-/** @return All DCPVideo at the given time (there may be two frames for 3D) */
-list<shared_ptr<DCPVideo> >