*/
-#include <stdint.h>
-#include <algorithm>
#include "player.h"
#include "film.h"
#include "ffmpeg_decoder.h"
#include "subtitle_content.h"
#include "subrip_decoder.h"
#include "subrip_content.h"
+#include "dcp_content.h"
#include "playlist.h"
#include "job.h"
#include "image.h"
#include "dcp_decoder.h"
#include "dcp_subtitle_content.h"
#include "dcp_subtitle_decoder.h"
+#include <boost/foreach.hpp>
+#include <stdint.h>
+#include <algorithm>
#define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
property == ContentProperty::TRIM_START ||
property == ContentProperty::TRIM_END ||
property == ContentProperty::PATH ||
- property == VideoContentProperty::VIDEO_FRAME_TYPE
+ property == VideoContentProperty::VIDEO_FRAME_TYPE ||
+ property == DCPContentProperty::CAN_BE_PLAYED
) {
_have_valid_pieces = false;
property == SubtitleContentProperty::USE_SUBTITLES ||
property == SubtitleContentProperty::SUBTITLE_X_OFFSET ||
property == SubtitleContentProperty::SUBTITLE_Y_OFFSET ||
- property == SubtitleContentProperty::SUBTITLE_SCALE ||
+ property == SubtitleContentProperty::SUBTITLE_X_SCALE ||
+ property == SubtitleContentProperty::SUBTITLE_Y_SCALE ||
property == VideoContentProperty::VIDEO_CROP ||
property == VideoContentProperty::VIDEO_SCALE ||
property == VideoContentProperty::VIDEO_FRAME_RATE
* rect.x * _video_container_size.width and rect.y * _video_container_size.height.
*
* 2. that to shift the origin of the scale by subtitle_scale to the centre of the subtitle; this will be
- * (width_before_subtitle_scale * (1 - subtitle_scale) / 2) and
- * (height_before_subtitle_scale * (1 - subtitle_scale) / 2).
+ * (width_before_subtitle_scale * (1 - subtitle_x_scale) / 2) and
+ * (height_before_subtitle_scale * (1 - subtitle_y_scale) / 2).
*
* Combining these two translations gives these expressions.
*/
shared_ptr<const ImageProxy> (new RawImageProxy (_black_image, _film->log ())),
time,
Crop (),
+ optional<float> (),
_video_container_size,
_video_container_size,
Scaler::from_id ("bicubic"),
return pvf;
}
- dcp::Size image_size = content->scale().size (content, _video_container_size, _film->frame_size ());
+ dcp::Size image_size = content->scale().size (content, _video_container_size, _film->frame_size (), _approximate_size ? 4 : 1);
if (_approximate_size) {
image_size.width &= ~3;
image_size.height &= ~3;
i->image,
content_video_to_dcp (piece, i->frame),
content->crop (),
+ content->fade (i->frame),
image_size,
_video_container_size,
_film->scaler(),
i->sub.rectangle.y += subtitle_content->subtitle_y_offset ();
/* Apply content's subtitle scale */
- i->sub.rectangle.width *= subtitle_content->subtitle_scale ();
- i->sub.rectangle.height *= subtitle_content->subtitle_scale ();
+ i->sub.rectangle.width *= subtitle_content->subtitle_x_scale ();
+ i->sub.rectangle.height *= subtitle_content->subtitle_y_scale ();
/* Apply a corrective translation to keep the subtitle centred after that scale */
- i->sub.rectangle.x -= i->sub.rectangle.width * (subtitle_content->subtitle_scale() - 1);
- i->sub.rectangle.y -= i->sub.rectangle.height * (subtitle_content->subtitle_scale() - 1);
+ i->sub.rectangle.x -= i->sub.rectangle.width * (subtitle_content->subtitle_x_scale() - 1);
+ i->sub.rectangle.y -= i->sub.rectangle.height * (subtitle_content->subtitle_y_scale() - 1);
ps.image.push_back (i->sub);
}
list<ContentTextSubtitle> text = subtitle_decoder->get_text_subtitles (ContentTimePeriod (from, to), starting);
- for (list<ContentTextSubtitle>::const_iterator i = text.begin(); i != text.end(); ++i) {
- copy (i->subs.begin(), i->subs.end(), back_inserter (ps.text));
+ BOOST_FOREACH (ContentTextSubtitle& ts, text) {
+ BOOST_FOREACH (dcp::SubtitleString& s, ts.subs) {
+ s.set_v_position (s.v_position() + subtitle_content->subtitle_y_offset ());
+ s.set_size (s.size() * max (subtitle_content->subtitle_x_scale(), subtitle_content->subtitle_y_scale()));
+ ps.text.push_back (s);
+ }
}
}