renderer/decoder: use divider at the footage level

Optimizes rendering if a divider is being used.
This commit is contained in:
itsmattkc
2020-02-27 15:47:08 +11:00
parent 02ce48d0c6
commit d87b4fde8c
8 changed files with 75 additions and 48 deletions
+5 -3
View File
@@ -54,7 +54,7 @@ public:
virtual bool Open() override;
virtual RetrieveState GetRetrieveState(const rational &time) override;
virtual FramePtr RetrieveVideo(const rational &timecode) override;
virtual FramePtr RetrieveVideo(const rational &timecode, const int& divider) override;
virtual FramePtr RetrieveAudio(const rational &timecode, const rational &length, const AudioRenderingParams& params) override;
virtual void Close() override;
@@ -102,12 +102,13 @@ private:
void CacheFrameToDisk(AVFrame* f);
//void RemoveFirstFromFrameCache();
//void RemoveLastFromFrameCache();
void ClearFrameCache();
void ClearResources();
void SetupScaler(const int& divider);
void FreeScaler();
AVFormatContext* fmt_ctx_;
AVCodecContext* codec_ctx_;
AVStream* avstream_;
@@ -116,6 +117,7 @@ private:
PixelFormat::Format native_pix_fmt_;
SwsContext* scale_ctx_;
int scale_divider_;
FFmpegFrameCache::Client cached_frames_;
bool cache_at_zero_;