- auto const period = DCPTimePeriod((*i)->content->position(), (*i)->content->end(film));
- for (auto j = std::next(i); j != _pieces.end(); ++j) {
- if ((*j)->content->video && ignore_overlap((*j)->content->video)) {
- (*i)->ignore_video = DCPTimePeriod((*j)->content->position(), (*j)->content->end(film)).overlap(period);
+ auto const period = (*piece)->content->period(film);
+ for (auto later_piece = std::next(piece); later_piece != _pieces.end(); ++later_piece) {
+ if (ignore_overlap((*later_piece)->content->video)) {
+ if (auto overlap = (*later_piece)->content->period(film).overlap(period)) {
+ (*piece)->ignore_video.push_back(*overlap);
+ }
+ }
+ }
+ }
+ }
+
+ for (auto piece = _pieces.begin(); piece != _pieces.end(); ++piece) {
+ if ((*piece)->content->atmos) {
+ /* Look for content later in the content list with ATMOS that overlaps this */
+ auto const period = (*piece)->content->period(film);
+ for (auto later_piece = std::next(piece); later_piece != _pieces.end(); ++later_piece) {
+ if ((*later_piece)->content->atmos) {
+ if (auto overlap = (*later_piece)->content->period(film).overlap(period)) {
+ (*piece)->ignore_atmos.push_back(*overlap);
+ }