projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Correctly spot that a DCP with unencrypted picture but encrypted sound/subtitle needs...
[dcpomatic.git]
/
src
/
lib
/
player.cc
diff --git
a/src/lib/player.cc
b/src/lib/player.cc
index 7dcaf68b745267be818b790009bd8116e95a923e..69306e3817e94fd378a17ea862e525a19293419f 100644
(file)
--- a/
src/lib/player.cc
+++ b/
src/lib/player.cc
@@
-169,7
+169,8
@@
Player::playlist_content_changed (weak_ptr<Content> w, int property, bool freque
property == ContentProperty::TRIM_END ||
property == ContentProperty::PATH ||
property == VideoContentProperty::FRAME_TYPE ||
property == ContentProperty::TRIM_END ||
property == ContentProperty::PATH ||
property == VideoContentProperty::FRAME_TYPE ||
- property == DCPContentProperty::CAN_BE_PLAYED ||
+ property == DCPContentProperty::NEEDS_ASSETS ||
+ property == DCPContentProperty::NEEDS_KDM ||
property == SubtitleContentProperty::COLOUR ||
property == SubtitleContentProperty::OUTLINE ||
property == SubtitleContentProperty::SHADOW ||
property == SubtitleContentProperty::COLOUR ||
property == SubtitleContentProperty::OUTLINE ||
property == SubtitleContentProperty::SHADOW ||
@@
-183,7
+184,10
@@
Player::playlist_content_changed (weak_ptr<Content> w, int property, bool freque
} else if (
property == SubtitleContentProperty::LINE_SPACING ||
} else if (
property == SubtitleContentProperty::LINE_SPACING ||
- property == SubtitleContentProperty::Y_SCALE
+ property == SubtitleContentProperty::OUTLINE_WIDTH ||
+ property == SubtitleContentProperty::Y_SCALE ||
+ property == SubtitleContentProperty::FADE_IN ||
+ property == SubtitleContentProperty::FADE_OUT
) {
/* These changes just need the pieces' decoders to be reset.
) {
/* These changes just need the pieces' decoders to be reset.
@@
-337,7
+341,7
@@
Player::get_video (DCPTime time, bool accurate)
/* Text subtitles (rendered to an image) */
if (!ps.text.empty ()) {
/* Text subtitles (rendered to an image) */
if (!ps.text.empty ()) {
- list<PositionImage> s = render_subtitles (ps.text, ps.fonts, _video_container_size);
+ list<PositionImage> s = render_subtitles (ps.text, ps.fonts, _video_container_size
, time
);
copy (s.begin (), s.end (), back_inserter (sub_images));
}
copy (s.begin (), s.end (), back_inserter (sub_images));
}
@@
-648,7
+652,7
@@
Player::get_subtitles (DCPTime time, DCPTime length, bool starting, bool burnt,
}
s.set_in (dcp::Time(content_subtitle_to_dcp (*j, ts.period().from).seconds(), 1000));
s.set_out (dcp::Time(content_subtitle_to_dcp (*j, ts.period().to).seconds(), 1000));
}
s.set_in (dcp::Time(content_subtitle_to_dcp (*j, ts.period().from).seconds(), 1000));
s.set_out (dcp::Time(content_subtitle_to_dcp (*j, ts.period().to).seconds(), 1000));
- ps.text.push_back (
s
);
+ ps.text.push_back (
SubtitleString (s, (*j)->content->subtitle->outline_width())
);
ps.add_fonts ((*j)->content->subtitle->fonts ());
}
}
ps.add_fonts ((*j)->content->subtitle->fonts ());
}
}
@@
-736,8
+740,17
@@
Player::get_reel_assets ()
int64_t offset = 0;
BOOST_FOREACH (shared_ptr<dcp::Reel> k, decoder->reels()) {
int64_t offset = 0;
BOOST_FOREACH (shared_ptr<dcp::Reel> k, decoder->reels()) {
+
+ DCPOMATIC_ASSERT (j->video_frame_rate ());
+ double const cfr = j->video_frame_rate().get();
+ Frame const trim_start = j->trim_start().frames_round (cfr);
+ Frame const trim_end = j->trim_end().frames_round (cfr);
+
DCPTime const from = i->position() + DCPTime::from_frames (offset, _film->video_frame_rate());
if (j->reference_video ()) {
DCPTime const from = i->position() + DCPTime::from_frames (offset, _film->video_frame_rate());
if (j->reference_video ()) {
+ DCPOMATIC_ASSERT (k->main_picture ());
+ k->main_picture()->set_entry_point (trim_start);
+ k->main_picture()->set_duration (k->main_picture()->intrinsic_duration() - trim_start - trim_end);
a.push_back (
ReferencedReelAsset (
k->main_picture (),
a.push_back (
ReferencedReelAsset (
k->main_picture (),
@@
-747,6
+760,9
@@
Player::get_reel_assets ()
}
if (j->reference_audio ()) {
}
if (j->reference_audio ()) {
+ DCPOMATIC_ASSERT (k->main_sound ());
+ k->main_sound()->set_entry_point (trim_start);
+ k->main_sound()->set_duration (k->main_sound()->intrinsic_duration() - trim_start - trim_end);
a.push_back (
ReferencedReelAsset (
k->main_sound (),
a.push_back (
ReferencedReelAsset (
k->main_sound (),
@@
-757,6
+773,8
@@
Player::get_reel_assets ()
if (j->reference_subtitle ()) {
DCPOMATIC_ASSERT (k->main_subtitle ());
if (j->reference_subtitle ()) {
DCPOMATIC_ASSERT (k->main_subtitle ());
+ k->main_subtitle()->set_entry_point (trim_start);
+ k->main_subtitle()->set_duration (k->main_subtitle()->intrinsic_duration() - trim_start - trim_end);
a.push_back (
ReferencedReelAsset (
k->main_subtitle (),
a.push_back (
ReferencedReelAsset (
k->main_subtitle (),