if (_just_did_inaccurate_seek) {
/* Just emit; no subtlety */
emit_video (earliest_piece, dv);
- earliest_piece->decoder->get ();
+ earliest_piece->decoder->consume ();
} else if (earliest_time > (_video_position + half_frame)) {
/* See if we're inside some video content */
} else {
if (
- dv->dcp_time >= _video_position &&
+ abs (dv->dcp_time - _video_position) < half_frame &&
!earliest_piece->content->trimmed (dv->dcp_time - earliest_piece->content->position ())
) {
emit_video (earliest_piece, dv);
}
- earliest_piece->decoder->get ();
+ earliest_piece->decoder->consume ();
}
} else if (da && _audio) {
emit_silence (earliest_time - _audio_position);
} else {
emit_audio (earliest_piece, da);
- earliest_piece->decoder->get ();
+ earliest_piece->decoder->consume ();
}
} else if (ds && _video) {
_in_subtitle.piece = earliest_piece;
_in_subtitle.subtitle = ds;
update_subtitle ();
- earliest_piece->decoder->get ();
+ earliest_piece->decoder->consume ();
}
_just_did_inaccurate_seek = false;
if (
_film->with_subtitles () &&
- _out_subtitle.subtitle->image &&
- video->dcp_time >= _out_subtitle.subtitle->dcp_time && video->dcp_time <= _out_subtitle.subtitle->dcp_time_to
+ _out_subtitle.image &&
+ video->dcp_time >= _out_subtitle.from && video->dcp_time <= _out_subtitle.to
) {
Position<int> const container_offset (
(_video_container_size.height - image_size.width) / 2
);
- pi->set_subtitle (_out_subtitle.subtitle->image, _out_subtitle.position + container_offset);
+ pi->set_subtitle (_out_subtitle.image, _out_subtitle.position + container_offset);
}
#ifdef DCPOMATIC_DEBUG
}
if (!_in_subtitle.subtitle->image) {
- _out_subtitle.subtitle->image.reset ();
+ _out_subtitle.image.reset ();
return;
}
_out_subtitle.position.x = rint (_video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_scale ()) / 2)));
_out_subtitle.position.y = rint (_video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_scale ()) / 2)));
-
- _out_subtitle.subtitle->image = _in_subtitle.subtitle->image->scale (
+
+ _out_subtitle.image = _in_subtitle.subtitle->image->scale (
scaled_size,
Scaler::from_id ("bicubic"),
- _in_subtitle.subtitle->image->pixel_format (),
+ PIX_FMT_RGBA,
true
);
-
- _out_subtitle.subtitle->dcp_time = _in_subtitle.subtitle->dcp_time;
- _out_subtitle.subtitle->dcp_time = _in_subtitle.subtitle->dcp_time;
+
+ _out_subtitle.from = _in_subtitle.subtitle->dcp_time;
+ _out_subtitle.to = _in_subtitle.subtitle->dcp_time_to;
}
/** Re-emit the last frame that was emitted, using current settings for crop, ratio, scaler and subtitles.