summaryrefslogtreecommitdiff
path: root/src/lib/image_decoder.cc
AgeCommit message (Collapse)Author
2020-07-24WIPsigned-unsignedCarl Hetherington
2020-02-19Nicer fix for 2D-labelled-3D checking from master.Carl Hetherington
2019-05-10Put Time types in dcpomatic namespace.Carl Hetherington
2019-01-29Fix odd formatting.Carl Hetherington
2018-11-21Put Film pointer into Decoder.Carl Hetherington
2018-11-21Take Film pointer out of Content.Carl Hetherington
2018-10-12Change MagickImageProxy to FFmpegImageProxy and make it use FFmpegCarl Hetherington
to decode images. Hence remove {Image,Graphics}Magick.
2017-04-19Various fixes to push audio vaguely in the right direction.Carl Hetherington
2017-04-19Reinstate subtitle list view.Carl Hetherington
2017-04-19Post-merge tidy-up.Carl Hetherington
2017-04-19Basic grunt-work, untested and unfinished, but it compiles.Carl Hetherington
2016-12-08Further fixes and tidying to 'better-seek'.Carl Hetherington
This fixes the failure to keep track of the `position' of each stream of a multi-stream file. It also tidies things up a bit.
2016-11-19Move position variables into the video/audio/subtitle decoder classes.Carl Hetherington
2016-11-19Cope with offsets between video/audio/subtitle data in a muxed file.Carl Hetherington
2016-11-17A possibly-better approach to seeking.Carl Hetherington
Before this commit, decoders try to guess whether they should request a seek based on what they have in their buffers. This seems reasonable for video and audio, which will always (I think) have some data lying around to give an indication of where their parent decoders are in the timeline. It doesn't work so well for subtitles, as the storage of subs is cleared out based on time (+/- 5s of "now") so there is a good chance that the storage will be empty. This gives the subtitle decoder no chance of knowing where its parent is, so it's very likely to seek. This commit asks the parent decoder to seek if it wants to, and it decides based on a knowledge of roughly where it is in the timeline. Hence the sub-decoders just see if they have got the data that is being requested, and if not they suggest to the parent that it might like to seek. They then start calling pass(). Hence the parent should only seek if some calls to pass() are not going to elicit the required data in a reasonable time.
2016-06-29Fix handling of incorrectly-recognised JPEG2000 files.Carl Hetherington
Previously we asked libdcp whether an imported J2K file was RGB or XYZ. The answer it gives is sometimes wrong, for reasons that are not clear (either the files are not marked correctly, or openjpeg is not parsing whatever metadata correctly). However it seems that, in general, we use the user's specified colour conversion to decide what to do with an image, rather than asking the image what should be done to it. Hence it makes more sense to assume that if a user specifies no colour conversion for a J2K file then the file is XYZ. With preview, the colour conversion from XYZ back to RGB is done by FFmpeg, so we have to set the pixel format correctly on the Image that comes back from J2KImageProxy. Now we get that pixel format from the configured colourspace conversion rather than from openjpeg's guess as to the file's colourspace. It's a bit ugly that the only thing we ask the file about is whether or not it is in YUV (which governs whether or not FFmpeg applies the user's configured YUV-to-RGB conversion). Everything else is decided by the configured conversion. I think there's still some uglyness in here that I can't put my finger on.
2016-05-25No-op; fix GPL address and use the explicit-program-name version.Carl Hetherington
2016-05-18Rename some methods.Carl Hetherington
2016-05-18Basics of splitting up Decoder tree like Content.Carl Hetherington
2016-05-18Move video frame rate ('prepared-for') into Content.Carl Hetherington
2016-05-18Rename video/audio/subtitle part methods.Carl Hetherington
2016-05-18Reasonably straightforward stuff; main things are addingCarl Hetherington
a _parent to VideoContent (mainly, but not only, for signalling) and moving the video shared_ptr into Content, which makes much more sense to replace dynamic_cast tests for whether something has video or whatever. Nearly builds.
2015-10-26Reinstate subtitle speed-up patch 526fd6de4c80a7ac9614a1cb0209efff7b171cd5 ↵Carl Hetherington
but only for preview.
2015-10-23Revert "Avoid decoding other packets when looking for subs."Carl Hetherington
This reverts commit 9e025d3f85f9d6d855b3d5e6c90bca0eac3a3d49. It causes corruption in prophet_clip.xml for reasons that are not yet known.
2015-10-16Avoid decoding other packets when looking for subs.Carl Hetherington
The "accumulation" of, for example, video data when we are looking for audio data is an *optimisation* to reduce the number of seeks. It should not be necessary for correctness (the output should be right even if we never kept anything except what we were looking for). Doing this accumulation is not always an optimisation; sometimes not doing it is better. Avoiding it when going back for subtitles is one of these cases.
2015-07-29Replace Time::frames with Time::frames_round and Time::frames_floor.Carl Hetherington
I believe both are necessary; doing floor instead of round caused #648.
2015-06-21No-op: remove all trailing whitespace.Carl Hetherington
2015-06-12Remove PassReason stuff.Carl Hetherington
This feels wrong: it means that it is possible for FFmpegDecoder to discard packets. I can't see how this is ok in all cases: maybe we were lucky that it worked at all.
2015-05-27Untested use of Frame for video/audio content lengths.Carl Hetherington
2015-05-13Don't bother decoding video frames when we're seeking around trying to find ↵Carl Hetherington
subtitles.
2015-02-08Uninitialised variable.Carl Hetherington
2014-11-23First cut at J2K import.Carl Hetherington
2014-11-07Remove log from ImageProxy hierarchy.Carl Hetherington
2014-07-09Split up image_proxy.{cc,h}Carl Hetherington
2014-06-02Merge master.Carl Hetherington
2014-05-21Tidy up logging a bit. Make it configurable from the GUI.Carl Hetherington
2014-05-20Merge master.Carl Hetherington
2014-05-14Add ImageProxy class.Carl Hetherington
2014-03-25It builds.Carl Hetherington
2014-03-07Add primitive subtitle view. Remove unused Film member from Decoder hierarchy.Carl Hetherington
2014-03-04New DCPTime/ContentTime types.Carl Hetherington
2014-02-11Partial hacks to use of libdcp 1.0.Carl Hetherington
2014-01-03Various fix-ups.Carl Hetherington
2013-12-28Merge 1.0Carl Hetherington
2013-12-28Remove unused Film::content_paths_valid; fix ImageDecoder to throw an ↵Carl Hetherington
OpenFileError when a file is missing so that it gets treated as missing content; rename Content::path_valid -> paths_valid.
2013-12-18Considerable rework of decoder timing; tests pass, at least.Carl Hetherington
2013-12-13Time -> DCPTime.Carl Hetherington
2013-12-11Various work on better seeking (and seeking of audio).Carl Hetherington
2013-12-04Do lots of the player processing with less copying.Carl Hetherington
2013-11-22Merge still/moving image classes.Carl Hetherington