summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-03-02 00:53:56 +0100
committerCarl Hetherington <cth@carlh.net>2021-03-02 15:40:18 +0100
commit431127d27fe697a60872d6020a8a5abcb47fa9e1 (patch)
treef2d00b08cbf126fd6b1f1fa4062cde9d139c9dd4 /src/lib/ffmpeg_decoder.h
parent04e94f01295463f2c910ba2b4306c1b76e340a45 (diff)
Tidy up and do flushing more correctly.v2.15.133
This seems necessary with the multi-threaded decoding; it looks like we were doing it quite wrong before but getting away with it.
Diffstat (limited to 'src/lib/ffmpeg_decoder.h')
-rw-r--r--src/lib/ffmpeg_decoder.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h
index bd35814df..e18d5e8eb 100644
--- a/src/lib/ffmpeg_decoder.h
+++ b/src/lib/ffmpeg_decoder.h
@@ -52,16 +52,17 @@ public:
private:
friend struct ::ffmpeg_pts_offset_test;
- void flush ();
+ bool flush ();
AVSampleFormat audio_sample_format (std::shared_ptr<FFmpegAudioStream> stream) const;
int bytes_per_audio_sample (std::shared_ptr<FFmpegAudioStream> stream) const;
std::shared_ptr<FFmpegAudioStream> audio_stream_from_index (int index) const;
- void process_audio_frame (std::shared_ptr<FFmpegAudioStream> stream, int64_t packet_pts);
+ std::pair<int, bool> decode_audio_packet (std::shared_ptr<FFmpegAudioStream> stream, AVPacket* packet);
+ void process_audio_frame (std::shared_ptr<FFmpegAudioStream> stream);
- bool decode_video_packet (AVPacket* packet);
- void decode_audio_packet (AVPacket* packet);
+ bool decode_and_process_video_packet (AVPacket* packet);
+ void decode_and_process_audio_packet (AVPacket* packet);
void decode_and_process_subtitle_packet (AVPacket* packet);
void process_bitmap_subtitle (AVSubtitleRect const * rect, dcpomatic::ContentTime from);