From 62ed4cf8babd6f9f131e00a9ac4cbfa33847bf66 Mon Sep 17 00:00:00 2001 From: eumagga0x2a Date: Tue, 23 May 2017 21:59:35 +0200 Subject: [PATCH] [partial] Fix preview when reconfiguring a partialized filter --- .../common/ADM_videoFilter2/src/ADM_vidPartial.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/avidemux/common/ADM_videoFilter2/src/ADM_vidPartial.cpp b/avidemux/common/ADM_videoFilter2/src/ADM_vidPartial.cpp index 4be5bba44b..ea69df092e 100644 --- a/avidemux/common/ADM_videoFilter2/src/ADM_vidPartial.cpp +++ b/avidemux/common/ADM_videoFilter2/src/ADM_vidPartial.cpp @@ -45,7 +45,7 @@ class partialFilter : public ADM_coreVideoFilter virtual void setCoupledConf(CONFcouple *couples); virtual bool configure(void) ; /// Start graphical user interface virtual uint64_t getAbsoluteStartTime(void) ; /// Return the absolute offset of the current frame. Used to display time of for filter - virtual bool goToTime(uint64_t usSeek) {return true;} /// Start graphical user interface + virtual bool goToTime(uint64_t usSeek); // needed for seekable preview when reconfiguring a partialized filter }; @@ -58,6 +58,7 @@ class partialFilter : public ADM_coreVideoFilter ADMImage *intermediate; bool hasIntermediate; uint32_t intermediateFn; + bool sonFilterPreview; bool isInRange(uint64_t tme); @@ -97,6 +98,7 @@ partialFilter::partialFilter( ADM_coreVideoFilter *in,CONFcouple *setup) : ADM_ { trampoline=NULL; sonFilter=NULL; + sonFilterPreview=false; byPass=true; intermediate=new ADMImageDefault(in->getInfo()->width,in->getInfo()->height); @@ -171,6 +173,8 @@ partialFilter::~partialFilter() */ bool partialFilter::getNextFrameForSon(uint32_t *fn,ADMImage *image) { + if(sonFilterPreview) + return previousFilter->getNextFrame(fn,image); if(!hasIntermediate) { ADM_warning("Partial filter requesting image, no image in store!!\n"); @@ -289,7 +293,9 @@ void partialFilter::reconfigureCallback(void *cookie) */ void partialFilter::reconfigureSon(void) { + sonFilterPreview=true; sonFilter->configure(); + sonFilterPreview=false; } /** @@ -342,6 +348,12 @@ uint64_t partialFilter::trampolineFilter::getAbsoluteStartTime() return previousFilter->getAbsoluteStartTime(); // never called } +bool partialFilter::trampolineFilter::goToTime(uint64_t usSeek) +{ + partialFilter *p=(partialFilter *)previousFilter; + return p->previousFilter->goToTime(usSeek); +} + bool partialFilter::trampolineFilter::getNextFrame(uint32_t *frameNumber,ADMImage *image) { partialFilter *p=(partialFilter *)previousFilter;