X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=thumbnailer%2Fwestleypreview.cpp;h=4fab7b4ecd71534d17e4fb9fcdffe2644c67482c;hb=f1b0412ac4ac05dcd32d80d4cddcffe47e44fef1;hp=0ce57323a73c33d150f113c8d74724ca8ff211f2;hpb=5bbf2530d027fd053cb42bb50fd56b63acb6bb99;p=kdenlive diff --git a/thumbnailer/westleypreview.cpp b/thumbnailer/westleypreview.cpp index 0ce57323..4fab7b4e 100644 --- a/thumbnailer/westleypreview.cpp +++ b/thumbnailer/westleypreview.cpp @@ -117,26 +117,36 @@ QImage MltPreview::getFrame(Mlt::Producer *producer, int framepos, int /*width*/ } -uint MltPreview::imageVariance(QImage image) +uint MltPreview::imageVariance(const QImage &image) { if (image.isNull()) return 0; uint delta = 0; uint avg = 0; uint bytes = image.numBytes(); + if (bytes == 0) return 0; uint STEPS = bytes / 2; QVarLengthArray pivot(STEPS); kDebug(DBG_AREA) << "Using " << STEPS << " steps\n"; - uchar *bits = image.bits(); + const uchar *bits=image.bits(); // First pass: get pivots and taking average - for (uint i = 0; i < STEPS ; i++) { - pivot[i] = bits[i*(bytes/STEPS)]; - avg += pivot[i]; + for( uint i=0; i= 0x040700 + avg+=pivot.at(i); +#else + avg+=pivot[i]; +#endif } - avg = avg / STEPS; + avg=avg/STEPS; // Second Step: calculate delta (average?) - for (uint i = 0; i < STEPS; i++) { - int curdelta = abs(int(avg - pivot[i])); - delta += curdelta; + for (uint i=0; i= 0x040700 + int curdelta=abs(int(avg - pivot.at(i))); +#else + int curdelta=abs(int(avg - pivot[i])); +#endif + delta+=curdelta; } return delta / STEPS; }