| 104 | } |
| 105 | |
| 106 | void videoHandlerDifference::loadFrameDifference(int frameIndex, bool) |
| 107 | { |
| 108 | // Calculate the difference between the inputVideos |
| 109 | if (!inputsValid()) |
| 110 | return; |
| 111 | |
| 112 | differenceInfoList.clear(); |
| 113 | |
| 114 | // Check if the second item is a video and the first one is not. In that case, |
| 115 | // make sure that the right frame is loaded for the video item. |
| 116 | videoHandler *video0 = dynamic_cast<videoHandler *>(inputVideo[0].data()); |
| 117 | videoHandler *video1 = dynamic_cast<videoHandler *>(inputVideo[1].data()); |
| 118 | if (video0 == nullptr && video1 != nullptr && video1->getCurrentImageIndex() != frameIndex) |
| 119 | video1->loadFrame(frameIndex); |
| 120 | |
| 121 | // Calculate the difference |
| 122 | QImage newFrame = inputVideo[0]->calculateDifference(inputVideo[1], |
| 123 | frameIndex, |
| 124 | frameIndex, |
| 125 | differenceInfoList, |
| 126 | amplificationFactor, |
| 127 | markDifference); |
| 128 | |
| 129 | if (!newFrame.isNull()) |
| 130 | { |
| 131 | // The new difference frame is ready |
| 132 | currentImageIndex = frameIndex; |
| 133 | currentImageSetMutex.lock(); |
| 134 | currentImage = newFrame; |
| 135 | currentImageSetMutex.unlock(); |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | bool videoHandlerDifference::inputsValid() const |
| 140 | { |
no test coverage detected