diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-15 10:14:53 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-15 10:14:53 +0000 |
| commit | f9608c5299d0a58bc01b33e521d89a80be26ed23 (patch) | |
| tree | 3c97274edcdaaecdb30c46df3e174de4a899f798 /src/lib | |
| parent | c943bc82e8d585d85ca1b4832e258436fa7615ce (diff) | |
| parent | f71a23109d774dc65e4262e5dba41360732cf342 (diff) | |
Merge branch 'master' into subtitle-content
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 2 | ||||
| -rw-r--r-- | src/lib/film.cc | 8 | ||||
| -rw-r--r-- | src/lib/player.cc | 18 | ||||
| -rw-r--r-- | src/lib/po/de_DE.po | 4 | ||||
| -rw-r--r-- | src/lib/ratio.cc | 6 | ||||
| -rw-r--r-- | src/lib/writer.cc | 6 |
6 files changed, 35 insertions, 9 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index b672b2c1f..a6f9a17c3 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -556,7 +556,7 @@ FFmpegDecoder::decode_subtitle_packet () source that we may have chopped off for the DCP) */ double const packet_time = (static_cast<double> (sub.pts ) / AV_TIME_BASE) + _video_pts_offset; - + /* hence start time for this sub */ Time const from = (packet_time + (double (sub.start_display_time) / 1e3)) * TIME_HZ; Time const to = (packet_time + (double (sub.end_display_time) / 1e3)) * TIME_HZ; diff --git a/src/lib/film.cc b/src/lib/film.cc index 8586d4b73..1290cbda2 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -265,6 +265,14 @@ Film::make_dcp () #else log()->log ("libdcp built in optimised mode."); #endif + +#ifdef DCPOMATIC_WINDOWS + OSVERSIONINFO info; + info.dwOSVersionInfoSize = sizeof (info); + GetVersionEx (&info); + log()->log (String::compose ("Windows version %1.%2.%3 SP %4", info.dwMajorVersion, info.dwMinorVersion, info.dwBuildNumber, info.szCSDVersion)); +#endif + log()->log (String::compose ("CPU: %1, %2 processors", cpu_info(), boost::thread::hardware_concurrency ())); list<pair<string, string> > const m = mount_info (); for (list<pair<string, string> >::const_iterator i = m.begin(); i != m.end(); ++i) { diff --git a/src/lib/player.cc b/src/lib/player.cc index 9f8599693..ce5109733 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -224,7 +224,8 @@ Player::pass () continue; } - if (dynamic_pointer_cast<AudioDecoder> ((*i)->decoder)) { + shared_ptr<AudioDecoder> ad = dynamic_pointer_cast<AudioDecoder> ((*i)->decoder); + if (ad && ad->has_audio ()) { audio_done_up_to = min (audio_done_up_to.get_value_or (TIME_MAX), (*i)->audio_position); } } @@ -292,6 +293,7 @@ Player::process_video (weak_ptr<Piece> weak_piece, shared_ptr<const Image> image pi->set_subtitle (_out_subtitle.image, _out_subtitle.position + container_offset); } + #ifdef DCPOMATIC_DEBUG _last_video = piece->content; @@ -683,8 +685,18 @@ Player::update_subtitle () _in_subtitle.image->pixel_format (), true ); - _out_subtitle.from = _in_subtitle.from + piece->content->position (); - _out_subtitle.to = _in_subtitle.to + piece->content->position (); + + /* XXX: hack */ + Time from = _in_subtitle.from; + Time to = _in_subtitle.to; + shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (piece->content); + if (vc) { + from = rint (from * vc->video_frame_rate() / _film->video_frame_rate()); + to = rint (to * vc->video_frame_rate() / _film->video_frame_rate()); + } + + _out_subtitle.from = from * piece->content->position (); + _out_subtitle.to = to + piece->content->position (); } /** Re-emit the last frame that was emitted, using current settings for crop, ratio, scaler and subtitles. diff --git a/src/lib/po/de_DE.po b/src/lib/po/de_DE.po index 3d8a26f66..acb666099 100644 --- a/src/lib/po/de_DE.po +++ b/src/lib/po/de_DE.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-01-07 20:01+0000\n" -"PO-Revision-Date: 2014-01-05 23:06+0100\n" +"PO-Revision-Date: 2014-01-14 19:45+0100\n" "Last-Translator: \n" "Language-Team: LANGUAGE <LL@li.org>\n" "Language: de\n" @@ -603,7 +603,7 @@ msgstr "Bild-Decoder nicht gefunden" #: src/lib/writer.cc:387 msgid "could not move audio MXF into the DCP (%1)" -msgstr "" +msgstr "Ton MXF kann nicht in das DCP verschoben werden (%1)" #: src/lib/sndfile_decoder.cc:45 msgid "could not open audio file for reading" diff --git a/src/lib/ratio.cc b/src/lib/ratio.cc index 41abbb760..a47b2101e 100644 --- a/src/lib/ratio.cc +++ b/src/lib/ratio.cc @@ -32,11 +32,11 @@ vector<Ratio const *> Ratio::_ratios; void Ratio::setup_ratios () { - _ratios.push_back (new Ratio (float(1285) / 1080, "119", _("1.19"), "F")); - _ratios.push_back (new Ratio (float(1436) / 1080, "133", _("4:3"), "F")); + _ratios.push_back (new Ratio (float(1290) / 1080, "119", _("1.19"), "F")); + _ratios.push_back (new Ratio (float(1440) / 1080, "133", _("4:3"), "F")); _ratios.push_back (new Ratio (float(1480) / 1080, "137", _("Academy"), "F")); _ratios.push_back (new Ratio (float(1485) / 1080, "138", _("1.375"), "F")); - _ratios.push_back (new Ratio (float(1793) / 1080, "166", _("1.66"), "F")); + _ratios.push_back (new Ratio (float(1800) / 1080, "166", _("1.66"), "F")); _ratios.push_back (new Ratio (float(1920) / 1080, "178", _("16:9"), "F")); _ratios.push_back (new Ratio (float(1998) / 1080, "185", _("Flat"), "F")); _ratios.push_back (new Ratio (float(2048) / 858, "239", _("Scope"), "S")); diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 572a1c3a4..c2a6c981b 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -87,6 +87,7 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j) _picture_asset->set_edit_rate (_film->video_frame_rate ()); _picture_asset->set_size (fit_ratio_within (_film->container()->ratio(), _film->full_frame ())); + _picture_asset->set_interop (_film->interop ()); if (_film->encrypted ()) { _picture_asset->set_key (_film->key ()); @@ -98,6 +99,7 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j) _sound_asset->set_edit_rate (_film->video_frame_rate ()); _sound_asset->set_channels (_film->audio_channels ()); _sound_asset->set_sampling_rate (_film->audio_frame_rate ()); + _sound_asset->set_interop (_film->interop ()); if (_film->encrypted ()) { _sound_asset->set_key (_film->key ()); @@ -344,6 +346,10 @@ void Writer::terminate_thread (bool can_throw) { boost::mutex::scoped_lock lock (_mutex); + if (_thread == 0) { + return; + } + _finish = true; _empty_condition.notify_all (); _full_condition.notify_all (); |
