+void
+FilmViewer::raw_to_display ()
+{
+ if (!_out_width || !_out_height || !_film) {
+ return;
+ }
+
+ _display_frame = _raw_frame->scale_and_convert_to_rgb (Size (_out_width, _out_height), 0, _film->scaler());
+
+ if (_raw_sub) {
+ Rect tx = subtitle_transformed_area (
+ float (_out_width) / _film->size().width,
+ float (_out_height) / _film->size().height,
+ _raw_sub->area(), _film->subtitle_offset(), _film->subtitle_scale()
+ );
+
+ _display_sub.reset (new RGBPlusAlphaImage (_raw_sub->image()->scale (tx.size(), _film->scaler ())));
+ _display_sub_position = tx.position();
+ } else {
+ _display_sub.reset ();
+ }
+}
+