summaryrefslogtreecommitdiff
path: root/src/lib/player.h
AgeCommit message (Collapse)Author
2022-10-19Change how video timing is done.Carl Hetherington
This commit changes the approach with video timing. Previously, we would (more-or-less) try to use every video frame from the content in the output, hoping that they come at a constant frame rate. This is not always the case, however. Here we preserve the PTS of video frames, and then when one arrives we output whatever DCP video frames we can (at the regular DCP frame rate). Hopefully this will solve a range of sync problems, but it could also introduce new ones.
2022-10-17Make the _film member of Player a weak_ptr.Carl Hetherington
2022-10-14Add some missing change signals in the Player.Carl Hetherington
2022-10-14Cleanup: use ChangeSignaller in player.Carl Hetherington
2022-10-14Add a comment.Carl Hetherington
2022-09-27Use EnumIndexedVector in Player.Carl Hetherington
2022-09-11Fix build on Centos where we don't have the std::atomic_store stuff apparently.v2.16.26Carl Hetherington
2022-09-10Use atomic shared_ptr stuff for _black_frame.Carl Hetherington
2022-09-10Use atomic for _playback_length.Carl Hetherington
2022-09-10Move get_reel_assets() out of Player, as it doesn't need to be there.Carl Hetherington
2022-09-10const correctness.Carl Hetherington
2022-09-10Remove now-unused setup_pieces_unlocked()Carl Hetherington
2022-09-10Use atomic for _dcp_decode_reduction.Carl Hetherington
2022-09-10Use atomic for _video_container_size.Carl Hetherington
2022-09-10Use atomic for _play_referenced.Carl Hetherington
2022-09-10Use atomic for _fast.Carl Hetherington
2022-09-10Use atomic for _always_burn_open_subtitles.Carl Hetherington
2022-09-10Use atomic for _ignore_text.Carl Hetherington
2022-09-10Use atomic for _ignore_audio.Carl Hetherington
2022-09-10Use atomic for _ignore_video.Carl Hetherington
2022-09-10Some const-correctness for Player.Carl Hetherington
2022-06-07Rearrange subtitle font management.Carl Hetherington
With this change each subtitle coming out of the player has a reference to a dcpomatic::Font that belongs to the TextContent. This hopefully solves a few problems which all basically stemmed from the fact that previously the decoders/player were deciding what the font ID in the output DCP would be - they can't do that properly.
2022-04-29Primitive auto-crop (#1477).Carl Hetherington
2022-04-03C++11 and whitespace cleanups.Carl Hetherington
2022-01-24Rename _last_video* to _next_video* as it seems to make more sense that way.Carl Hetherington
2021-09-27Replace aligned bool with enum Alignment.Carl Hetherington
2021-09-27Various alignment adjustments.Carl Hetherington
2021-07-05Use unique_ptr.Carl Hetherington
2021-07-05C++11 tidying.Carl Hetherington
2021-04-21Add comment.Carl Hetherington
2021-02-15Basic handling of overlapping video (#1848).Carl Hetherington
2021-02-14Remove use of boost::noncopyableCarl Hetherington
2021-01-31More enum class additions.Carl Hetherington
2021-01-07std::shared_ptrCarl Hetherington
2020-12-22Pass fonts from content around as FontData.Carl Hetherington
i.e. as a block of memory rather than a file. Also, get the fonts from the decoder rather than the content. Together, these changes allow us to use fonts from SMPTE DCPs added as content. Before, fonts would be messed up in those cases (#1885).
2020-06-19Make Atmos content work more like other content. Now its MXFsv2.15.82Carl Hetherington
are re-written, meaning that they can be encrypted. This (along with the libdcp update) also fixes assorted Atmos bugs.
2020-05-11Change video content scaling so that it either:Carl Hetherington
1. scales the content up to fit the DCP container, preserving aspect ratio, or 2. stretches the content to a custom aspect ratio, or 3. scales the content to some custom size.
2020-04-23Nicer fix for 86102d30bf0aad89115bbeb3d8aaa2a27a0aa432Carl Hetherington
2020-04-23Add accessor for _playlist.Carl Hetherington
2020-04-23Fix complete failure of preview/playback introduced inv2.15.53Carl Hetherington
4219d4b76c5cd5690b1f4fa0c248d93ced26d05a.
2020-04-15Fix length of player output so it can be either the film's length or ↵Carl Hetherington
playlist's length, as appropriate.
2020-01-28Missing #include for previous.Carl Hetherington
2020-01-28Fix deadlock during content examination.Carl Hetherington
Before this fix, the following situation could happen in threads A and B: A: Some DONE signal happens; this triggers setup_pieces which takes a lock on the player mutex. B: FFmpegContent::examine takes a lock on the content mutex. B: FFmpegContent::examine adds a stream B: That causes STREAMS PENDING to be emitted. B: This tries to take a lock on the player mutex so it can update _suspended A: setup_pieces tries to access some content information, hence tries to take a lock on the content mutex. Now B is holding the CL and awaiting the PL and A is holding the PL and awaiting the CL. It feels like the root cause of this is that while setup_pieces is happening another change (which would itself cause setup_pieces) is announced, and this isn't dealt with properly. There are two steps here; _suspended is protected with an atomic rather than using _mutex, and also it can cope with being updated recursively.
2020-01-25Cache film length for Player::pass.Carl Hetherington
2019-10-13Fix failure to load OV after adding a VF to a project.Carl Hetherington
This has the same cause as 19f51503621a57794bd79bac053c9e6549a69f46 i.e. the DCPDecoder re-use optimisation. This commit tries to re-fix 19f515 in a more general way which also takes into account the OV/VF bug. It also adds a unit test.
2019-08-30Make player more tolerant of some DCP errors.Carl Hetherington
2019-05-10Put Font and Screen into dcpomatic namespace.Carl Hetherington
2019-05-10Put Time types in dcpomatic namespace.Carl Hetherington
2018-12-22Fix assumption of 48kHz DCP audio in AudioRingBuffers consistency check (#1436).Carl Hetherington
2018-09-04Build Empty objects from the presence or absence of decoders inCarl Hetherington
Pieces, rather than the presence or absence of content. This seems better because of cases like encrypted DCPs without a a KDM: here we may have content but no decoder.