Ticket #11141: D2_v2.patch

File D2_v2.patch, 2.8 KB (added by Wayne McDougall <waynemcdougall@…>, 8 years ago)
  • mythtv/programs/mythcommflag/CommDetector2.cpp

    diff --git a/mythtv/programs/mythcommflag/CommDetector2.cpp b/mythtv/programs/mythcommflag/CommDetector2.cpp
    index 94dd78e..8386b26 100644
    a b long long processFrame(FrameAnalyzerItem &pass, 
    158158    if (minNextFrame == FrameAnalyzer::ANYFRAME)
    159159        minNextFrame = FrameAnalyzer::NEXTFRAME;
    160160
    161     if (minNextFrame == FrameAnalyzer::NEXTFRAME)
     161    if ((minNextFrame == FrameAnalyzer::NEXTFRAME) || (minNextFrame <= frameno))
    162162        minNextFrame = frameno + 1;
    163163
    164164    return minNextFrame;
    bool CommDetector2::go(void) 
    577577        }
    578578
    579579        player->DiscardVideoFrame(player->GetRawVideoFrame(0));
    580         long long nextFrame = -1;
    581         currentFrameNumber = 0;
    582         long long lastLoggedFrame = currentFrameNumber;
     580        long long nextFrame = 0;
     581        long long lastLoggedFrame = 0;
     582        long long currentFrameNumber = -1;
     583        VideoFrame* currentFrame;
    583584        QTime passTime, clock;
    584585        struct timeval getframetime;
    585586
    bool CommDetector2::go(void) 
    596597            struct timeval start, end, elapsedtv;
    597598
    598599            (void)gettimeofday(&start, NULL);
    599             VideoFrame *currentFrame = player->GetRawVideoFrame();
    600             long long lastFrameNumber = currentFrameNumber;
    601             currentFrameNumber = currentFrame->frameNumber;
     600           
     601            if (++currentFrameNumber == nextFrame)
     602            { 
     603                currentFrame = player->GetRawVideoFrame();
     604            }
     605            else
     606            {
     607                currentFrame = player->GetRawVideoFrame(nextFrame);
     608                currentFrameNumber = nextFrame;
     609            }
     610           
     611            if (abs(currentFrameNumber - currentFrame->frameNumber) >10 )
     612            {
     613                LOG(VB_COMMFLAG, LOG_INFO,
     614                QString("Asked for frame %1, got frame %2 back")
     615                    .arg(nextFrame)
     616                    .arg(currentFrame->frameNumber));
     617            }
    602618
    603619            (void)gettimeofday(&end, NULL);
    604620            timersub(&end, &start, &elapsedtv);
    605621            timeradd(&getframetime, &elapsedtv, &getframetime);
    606622
    607             if (nextFrame != -1 && nextFrame == lastFrameNumber + 1 &&
    608                     currentFrameNumber != nextFrame)
    609             {
    610                 /*
    611                  * Don't log "Jumped" when we know we're skipping frames (e.g.,
    612                  * logo detection).
    613                  */
    614                 LOG(VB_COMMFLAG, LOG_INFO,
    615                     QString("Jumped from frame %1 to frame %2")
    616                         .arg(lastFrameNumber).arg(currentFrameNumber));
    617             }
    618 
    619623            if (stopForBreath(isRecording, currentFrameNumber))
    620624            {
    621625                emit breathe();