projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add another believed-correct subtitle timing fix.
[dcpomatic.git]
/
src
/
lib
/
empty.cc
diff --git
a/src/lib/empty.cc
b/src/lib/empty.cc
index 2233b43426e7d859875fae85792c693d5d04f832..f6dcad96fb730162e6824ba273d84ffa31199e5f 100644
(file)
--- a/
src/lib/empty.cc
+++ b/
src/lib/empty.cc
@@
-1,5
+1,5
@@
/*
/*
- Copyright (C) 2017 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2017
-2021
Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
This file is part of DCP-o-matic.
@@
-18,45
+18,55
@@
*/
*/
+
#include "empty.h"
#include "empty.h"
+#include "film.h"
#include "playlist.h"
#include "content.h"
#include "content_part.h"
#include "dcp_content.h"
#include "dcpomatic_time_coalesce.h"
#include "playlist.h"
#include "content.h"
#include "content_part.h"
#include "dcp_content.h"
#include "dcpomatic_time_coalesce.h"
-#include
<boost/foreach.hpp>
+#include
"piece.h"
#include <iostream>
#include <iostream>
+
using std::cout;
using std::list;
using std::cout;
using std::list;
-using boost::shared_ptr;
-using boost::dynamic_pointer_cast;
-using boost::function;
+using std::shared_ptr;
+using std::dynamic_pointer_cast;
+using std::function;
+using namespace dcpomatic;
+
-Empty::Empty (shared_ptr<const
Playlist> playlist, function<shared_ptr<ContentPart> (Content *)> part
)
+Empty::Empty (shared_ptr<const
Film> film, shared_ptr<const Playlist> playlist, function<bool (shared_ptr<const Content>)> part, DCPTime length
)
{
list<DCPTimePeriod> full;
{
list<DCPTimePeriod> full;
-
BOOST_FOREACH (shared_ptr<Content> i,
playlist->content()) {
- if (part
(i.get()
)) {
- full.push_back (DCPTimePeriod
(i->position(), i->end(
)));
+
for (auto i:
playlist->content()) {
+ if (part
(i
)) {
+ full.push_back (DCPTimePeriod
(i->position(), i->end(film
)));
}
}
}
}
- _periods = subtract (DCPTimePeriod(DCPTime(), playlist->length()), coalesce(full));
+ _periods = subtract (DCPTimePeriod(DCPTime(), length), coalesce(full));
+
+ if (!_periods.empty()) {
+ _position = _periods.front().from;
+ }
}
}
+
void
Empty::set_position (DCPTime position)
{
_position = position;
void
Empty::set_position (DCPTime position)
{
_position = position;
-
BOOST_FOREACH (DCPTimePeriod i,
_periods) {
+
for (auto i:
_periods) {
if (i.contains(_position)) {
return;
}
}
if (i.contains(_position)) {
return;
}
}
-
BOOST_FOREACH (DCPTimePeriod i,
_periods) {
+
for (auto i:
_periods) {
if (i.from > _position) {
_position = i.from;
return;
if (i.from > _position) {
_position = i.from;
return;
@@
-64,10
+74,11
@@
Empty::set_position (DCPTime position)
}
}
}
}
+
DCPTimePeriod
Empty::period_at_position () const
{
DCPTimePeriod
Empty::period_at_position () const
{
-
BOOST_FOREACH (DCPTimePeriod i,
_periods) {
+
for (auto i:
_periods) {
if (i.contains(_position)) {
return DCPTimePeriod (_position, i.to);
}
if (i.contains(_position)) {
return DCPTimePeriod (_position, i.to);
}
@@
-76,14
+87,14
@@
Empty::period_at_position () const
DCPOMATIC_ASSERT (false);
}
DCPOMATIC_ASSERT (false);
}
+
bool
Empty::done () const
{
bool
Empty::done () const
{
- BOOST_FOREACH (DCPTimePeriod i, _periods) {
- if (i.contains(_position)) {
- return false;
- }
+ DCPTime latest;
+ for (auto i: _periods) {
+ latest = max (latest, i.to);
}
}
- return
true
;
+ return
_position >= latest
;
}
}