summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.h
AgeCommit message (Collapse)Author
2026-02-21Handle FFmpeg content with only subtitles enabled better.Carl Hetherington
Previously if some FFmpeg content was set to use only its subtitles, and the first subtitle was 1 minute in to the content, the content would be selected for pass() until its first minute had been scanned. This could be slow, and incorrect as on the way to this 1 minute we want to look at other content. Here we store the PTS of dropped packets to use as a fallback position when there is no video or audio enabled.
2022-12-10Extract constants.hCarl Hetherington
2022-11-15Improve flushing behaviour when there is a lot of space to fill (#2364).Carl Hetherington
Previously a call to flush() could result in a lot of audio being emitted from the decoder (if there is a big gap between the end of the audio and the video). This would end up being emitted in one chunk from the player, crashing the audio analyser with an OOM in some cases.
2022-10-18Extract VideoFilterGraphSet.Carl Hetherington
2022-10-18Remove believed-unnecessary mutex.Carl Hetherington
2022-10-01Fix checking of frame channels vs stream channels.Carl Hetherington
The comment says that we're handling differences between channel counts in the frame and stream but the code wasn't doing that.
2022-04-28Handle multiple bitmap subtitles at the same time correctly (#2239).Carl Hetherington
Previously if there were two images at the same time we would start them both, then the stop time would be set in the second one but not the first. This meant that the first one would hang around forever.
2022-04-28Tidying.Carl Hetherington
2022-04-03C++11 and whitespace cleanups.Carl Hetherington
2022-01-11Cleanup: move some stuff into process_video_frame().Carl Hetherington
2021-10-13Ignore errors from avcodec_send_packet.Carl Hetherington
After seeking it appears that we often get irrelevant errors from this method. ffplay.c seems to ignore them, and this commit means that we do too (just logging them). I think these errors during a non-seeking "encoding" run could be cause for concern; perhaps we should take more note of them in that case.
2021-06-04Fix errors when seeking FFmpeg for some formats.Carl Hetherington
The comments discuss this in a bit more depth, but basically we see errors from avcodec_send_packet after seek. ffplay etc. seem basically to ignore all errors from avcodec_send_packet, and I can't find a "proper" fix, so here's a half-way house hack: ignore some errors after seek. Nasty.
2021-05-01Switch decoding to ffmpeg send/receive API.Carl Hetherington
2021-04-29C++11 tidying.Carl Hetherington
2021-03-02Tidy up and do flushing more correctly.v2.15.133Carl Hetherington
This seems necessary with the multi-threaded decoding; it looks like we were doing it quite wrong before but getting away with it.
2021-03-02Rename some subtitle decoding / processing methods.Carl Hetherington
2021-03-02Key _next_time with the audio stream pointer.Carl Hetherington
2021-03-02Remove FFmpeg::_packet.Carl Hetherington
2021-03-02Extract process_audio_frame.Carl Hetherington
2021-03-02Extract audio_stream_from_index.Carl Hetherington
2021-01-07std::shared_ptrCarl Hetherington
2019-05-10Put Time types in dcpomatic namespace.Carl Hetherington
2018-11-21Put Film pointer into Decoder.Carl Hetherington
2018-11-21Take Film pointer out of Content.Carl Hetherington
2018-06-08Fix doubled subtitles if subtitle stop times are specified.Carl Hetherington
2017-09-03Restore correct setup of fast resampler when the player is set to fast.Carl Hetherington
2017-09-03Cope with e.g. truehd audio streams having not every audio frame arriving ↵Carl Hetherington
with a pts.
2017-06-23Attempts to simplify black-filling logic in Player.Carl Hetherington
2017-04-27Initial work on removing storage of subtitle times.Carl Hetherington
2017-04-19Reinstate subtitle list view.Carl Hetherington
2017-04-19Basic grunt-work, untested and unfinished, but it compiles.Carl Hetherington
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-22Set AudioDecoder::fast a different way.Carl Hetherington
2016-05-25No-op; fix GPL address and use the explicit-program-name version.Carl Hetherington
2016-05-18Basics of splitting up Decoder tree like Content.Carl Hetherington
2016-02-15Support SSA subtitles embedded within FFmpeg files.Carl Hetherington
2016-02-09Small cleanup.Carl Hetherington
2015-11-18Split FilterGraph into that and VideoFilterGraph.Carl Hetherington
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-09-09Use SRC_LINEAR for speed when analysing audio (#685).Carl Hetherington
2015-08-18Include tidying.Carl Hetherington
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-06-02Handle multiple audio streams in a single piece of contentCarl Hetherington
in a similar way to the V1 patch.
2015-05-13Token effort toward non-bitmap subtitles from FFmpegDecoder.Carl Hetherington
2015-05-13Don't bother decoding video frames when we're seeking around trying to find ↵Carl Hetherington
subtitles.