From 89ee4cc6019036fa4fc0a6e07e052ffdc3b136ac Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 25 Jun 2015 11:58:12 +0100 Subject: Make player decide whether subtitles should be burnt based on content settings rather than using the film's settings. Remove film property of burn-subtitles. --- src/lib/transcoder.cc | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/lib/transcoder.cc') diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc index 3ecc3a064..fd216c101 100644 --- a/src/lib/transcoder.cc +++ b/src/lib/transcoder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2014 Carl Hetherington + Copyright (C) 2012-2015 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,8 +24,6 @@ * as a parameter to the constructor. */ -#include -#include #include "transcoder.h" #include "encoder.h" #include "film.h" @@ -34,6 +32,10 @@ #include "player.h" #include "job.h" #include "writer.h" +#include "subtitle_content.h" +#include +#include +#include using std::string; using std::cout; @@ -64,7 +66,20 @@ Transcoder::go () DCPTime const frame = DCPTime::from_frames (1, _film->video_frame_rate ()); DCPTime const length = _film->length (); - if (!_film->burn_subtitles ()) { + int burnt_subtitles = 0; + int non_burnt_subtitles = 0; + BOOST_FOREACH (shared_ptr c, _film->content ()) { + shared_ptr sc = dynamic_pointer_cast (c); + if (sc && sc->use_subtitles()) { + if (sc->burn_subtitles()) { + ++burnt_subtitles; + } else { + ++non_burnt_subtitles; + } + } + } + + if (non_burnt_subtitles) { _writer->write (_player->get_subtitle_fonts ()); } @@ -74,8 +89,8 @@ Transcoder::go () _encoder->enqueue (*i); } _writer->write (_player->get_audio (t, frame, true)); - if (!_film->burn_subtitles ()) { - _writer->write (_player->get_subtitles (t, frame, true)); + if (non_burnt_subtitles) { + _writer->write (_player->get_subtitles (t, frame, true, false)); } } -- cgit v1.2.3