Ticket #3554: change_still_frame_detection.diff

File change_still_frame_detection.diff, 2.7 KB (added by skamithi, 17 years ago)
  • DVDRingBuffer.cpp

     
    278278                {
    279279                    if (dvdnav_get_next_still_flag(dvdnav) < 0xff)
    280280                        stillFrameTimer.restart();
    281                     cellHasStillFrame = true;
    282281                }
    283                 else
    284                     cellHasStillFrame = false;
    285282
    286283                part = 0;
    287284                titleParts = 0;
     
    591588void DVDRingBufferPriv::SkipStillFrame(void)
    592589{
    593590    dvdnav_still_skip(dvdnav);
    594     cellHasStillFrame = false;
    595591}
    596592
    597593void DVDRingBufferPriv::WaitSkip(void)
  • DVDRingBuffer.h

     
    9496    void ActivateButton(void);
    9597    int NumMenuButtons(void) const;
    9698    void IgnoreStillOrWait(bool skip) { skipstillorwait = skip; }
     99    void InStillFrame(bool change) { cellHasStillFrame = change; }
    97100    uint GetCurrentTime(void) { return (currentTime / 90000); }
    98101    uint TitleTimeLeft(void);
    99102    void  SetTrack(uint type, int trackNo);
  • avformatdecoder.cpp

     
    20492049        if (ringBuffer->isDVD() && pkt->size == 4 &&
    20502050            start_code_state == SEQ_END_CODE && !dvdvideopause)
    20512051        {
     2052            ringBuffer->DVD()->InStillFrame(true);
    20522053            dvdvideopause = true;
    20532054            d->ResetMPEG2();
    20542055            return;
     
    27432744                    RemoveAudioStreams();
    27442745                    storevideoframes = false;
    27452746                    dvdTitleChanged = false;
     2747                    ScanStreams(false);
    27462748                }
    27472749                else
    27482750                    storevideoframes = true;
     
    29452954            }
    29462955
    29472956            if (len == 4 && dvdvideopause)
     2957            {
    29482958                dvdvideopause = false;
     2959                av_free_packet(pkt);
     2960                continue;
     2961            }
    29492962
    29502963            if (framesRead == 0 && !justAfterChange &&
    29512964                !(pkt->flags & PKT_FLAG_KEY))
     
    31693182                        len -= pkt->size;
    31703183                        continue;
    31713184                    }
     3185                   
     3186                    if (ringBuffer->isDVD() &&
     3187                        ringBuffer->DVD()->InStillFrame() &&
     3188                        !dvdvideopause)
     3189                    {
     3190                        ringBuffer->DVD()->InStillFrame(false);
     3191                    }
    31723192
    31733193                    if (firstloop && pts != (int64_t) AV_NOPTS_VALUE)
    31743194                    {