diff options
Diffstat (limited to 'src/lib/ffmpeg_decoder.h')
| -rw-r--r-- | src/lib/ffmpeg_decoder.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h index 498bb11a8..795320280 100644 --- a/src/lib/ffmpeg_decoder.h +++ b/src/lib/ffmpeg_decoder.h @@ -27,6 +27,7 @@ #include "bitmap_text.h" #include "decoder.h" #include "ffmpeg.h" +#include "packet_queue.h" #include "video_filter_graph_set.h" extern "C" { #include <libavcodec/avcodec.h> @@ -39,6 +40,7 @@ class AudioBuffers; class FFmpegAudioStream; class Image; class Log; +class PacketQueue; class VideoFilterGraph; struct ffmpeg_pts_offset_test; @@ -64,6 +66,7 @@ private: }; FlushResult flush(); + bool process_from_packet_queue(bool flushing); AVSampleFormat audio_sample_format(std::shared_ptr<FFmpegAudioStream> stream) const; int bytes_per_audio_sample(std::shared_ptr<FFmpegAudioStream> stream) const; @@ -97,12 +100,14 @@ private: std::map<std::shared_ptr<FFmpegAudioStream>, boost::optional<dcpomatic::ContentTime>> _next_time; enum class FlushState { + PACKET_QUEUE, CODECS, AUDIO_DECODER, FILL, }; - FlushState _flush_state = FlushState::CODECS; + FlushState _flush_state = FlushState::PACKET_QUEUE; std::vector<boost::optional<dcpomatic::ContentTime>> _dropped_time; + std::unique_ptr<PacketQueue> _packet_queue; }; |
