diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-08-02 22:24:05 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-08-02 22:30:18 +0200 |
| commit | b58ea0495d72d654161958e515dc6c5ba9992b80 (patch) | |
| tree | 30878e8404d341e9d1899abd638cc934fd66995f /src/lib/ffmpeg_examiner.h | |
| parent | f9f0aa34954ca78983aa0057b594c64cf009c7de (diff) | |
Detect soft 2:3 pulldown (telecine) files and decode them at 23.976.
DVD rips from NTSC DVDs are sometimes (always?) encoded using
soft 2:3 pulldown. The video frames are actually 23.976 but
FFmpeg detects them as 29.97. With the current approach of the video
decoder ignoring most PTSs and assuming a constant frame rate
it is vital that the file contains the number of frames per second
that the detected frame rate predicts.
This fixes large sync errors with NTSC DVD rips (#1790).
Cherry-picked from af680761cf7c3e97660e8e55c68f42e90b026bf9
in v2.15.x.
Diffstat (limited to 'src/lib/ffmpeg_examiner.h')
| -rw-r--r-- | src/lib/ffmpeg_examiner.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/ffmpeg_examiner.h b/src/lib/ffmpeg_examiner.h index 67fdcfae0..9ff5a79e7 100644 --- a/src/lib/ffmpeg_examiner.h +++ b/src/lib/ffmpeg_examiner.h @@ -75,8 +75,18 @@ public: return _rotation; } + bool pulldown () const { + return _pulldown; + } + +#ifdef DCPOMATIC_VARIANT_SWAROOP + boost::optional<std::string> id () const { + return _id; + } +#endif + private: - void video_packet (AVCodecContext *); + void video_packet (AVCodecContext *, std::string& temporal_reference); void audio_packet (AVCodecContext *, boost::shared_ptr<FFmpegAudioStream>); std::string stream_name (AVStream* s) const; @@ -93,6 +103,7 @@ private: bool _need_video_length; boost::optional<double> _rotation; + bool _pulldown; struct SubtitleStart { |
