summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.cc
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-19Bump ffmpeg to 5.1.2 "Riemann"Carl Hetherington
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-09-17Fix typo in log message.Carl Hetherington
2022-09-10Some improved logging.Carl Hetherington
2022-09-03Bump libdcp for better ContentKind support, and libsubCarl Hetherington
for fixes to \c tags in SSA files.
2022-06-12Set up TextDecoder position based on the time that the next thing willv2.16.14Carl Hetherington
be emitted, instead of the time that the last thing was (#2268). This is to avoid problems with the example shown in the test, where just because a subtitle in source A comes before a subtitle in source B, source A is pass()ed next and may then emit a subtitle which should be after the next one in B.
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-28Make emit_bitmap_start take a ContentBitmapText.Carl Hetherington
2022-04-03C++11 and whitespace cleanups.Carl Hetherington
2022-02-17Try to handle EAGAIN from avcodec_send_packet() properly.Carl Hetherington
The docs say on EAGAIN we should call avcodec_receive_frame() and then re-send the same packet again. This should do that. This is a fix for errors trigged by the accompanying test.
2022-01-11Fix failure to decode multiple video frames from one packet (#2159).v2.15.183Carl Hetherington
2022-01-11Cleanup: move some stuff into process_video_frame().Carl Hetherington
2022-01-11Use a separate AVFrame for each stream when decoding.Carl Hetherington
This seems to be what ffplay does and it feels like it makes sense as frames may be built from multiple packets AFAICS.
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-09-27Replace aligned bool with enum Alignment.Carl Hetherington
2021-09-27Various alignment adjustments.Carl Hetherington
2021-09-13Fix missing subtitles embedded in files decoded by FFmpeg (#2060).Carl Hetherington
Since the FFmpeg 4.4 update it seems that AVSubtitle::pts is no longer set (it's AV_NOPTS_VALUE, i think). Instead we apparently need to get the PTS from the packet, which in turn requires the stream's timebase.
2021-09-13Add missing avsubtitle_free().Carl Hetherington
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-06-03Ignore errors from avcodec_receive_frame when flushing video (#2035).Carl Hetherington
The test fails if we don't do this; it doesn't really seem 100% convincing but we are already doing this for audio.
2021-05-01Switch decoding to ffmpeg send/receive API.Carl Hetherington
2021-05-01Remove some FFmpeg-related warnings by using AVStream::codecpar.Carl Hetherington
2021-04-29C++11 tidying.Carl Hetherington
2021-03-31Add an assert for a function that can fail.Carl Hetherington
2021-03-13Build fix for Ubuntu-16.04-era compilers.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-02-28C++11 cleanups.Carl Hetherington
2021-01-13Fix for changes to libsub API.Carl Hetherington
2021-01-07BOOST_FOREACH.Carl Hetherington
2021-01-07std::shared_ptrCarl Hetherington
2020-12-03Obey audio timestamps if they don't deviate by more than some threshold.Carl Hetherington
Previously we would ignore audio timestamps because they are not contiguous in a sample-accurate way. However with bugs like #1833 we do need to obey large discontinuities in audio timestamps, otherwise we get large sync errors. Here we change timestamp handling to ignore small discontinuities in timestamps but not larger ones.
2020-11-23Remove swaroop variant.Carl Hetherington
2020-10-14Don't crash if the first packet in a stream has AV_NOPTS_VALUE;Carl Hetherington
instead, assume it should be at timestamp 0.
2020-10-14Clear out _next_time when seeking, so out-of-date values don'tCarl Hetherington
hang around. Part of the fix for #1857.
2020-07-26Ignore FFmpeg warnings in a nicer way.Carl Hetherington
2020-04-16Added some FIXMEs.Carl Hetherington
2020-02-20Apply FFmpeg palette fix to examination too; fix build with old FFmpeg.Carl Hetherington
2020-02-19Nicer fix for 2D-labelled-3D checking from master.Carl Hetherington
2019-12-19Add an assertion.Carl Hetherington
2019-11-17Fix casting of bytes to words, and hence (hopefully) finally fix incorrect ↵Carl Hetherington
bitmapped subtitle colours.
2019-11-11Make DecoderPart::_position an optional.Carl Hetherington
2019-07-06Add an assertion.Carl Hetherington