Ticket #3554: change_still_frame_detection.diff
File change_still_frame_detection.diff, 2.7 KB (added by , 17 years ago) |
---|
-
DVDRingBuffer.cpp
278 278 { 279 279 if (dvdnav_get_next_still_flag(dvdnav) < 0xff) 280 280 stillFrameTimer.restart(); 281 cellHasStillFrame = true;282 281 } 283 else284 cellHasStillFrame = false;285 282 286 283 part = 0; 287 284 titleParts = 0; … … 591 588 void DVDRingBufferPriv::SkipStillFrame(void) 592 589 { 593 590 dvdnav_still_skip(dvdnav); 594 cellHasStillFrame = false;595 591 } 596 592 597 593 void DVDRingBufferPriv::WaitSkip(void) -
DVDRingBuffer.h
94 96 void ActivateButton(void); 95 97 int NumMenuButtons(void) const; 96 98 void IgnoreStillOrWait(bool skip) { skipstillorwait = skip; } 99 void InStillFrame(bool change) { cellHasStillFrame = change; } 97 100 uint GetCurrentTime(void) { return (currentTime / 90000); } 98 101 uint TitleTimeLeft(void); 99 102 void SetTrack(uint type, int trackNo); -
avformatdecoder.cpp
2049 2049 if (ringBuffer->isDVD() && pkt->size == 4 && 2050 2050 start_code_state == SEQ_END_CODE && !dvdvideopause) 2051 2051 { 2052 ringBuffer->DVD()->InStillFrame(true); 2052 2053 dvdvideopause = true; 2053 2054 d->ResetMPEG2(); 2054 2055 return; … … 2743 2744 RemoveAudioStreams(); 2744 2745 storevideoframes = false; 2745 2746 dvdTitleChanged = false; 2747 ScanStreams(false); 2746 2748 } 2747 2749 else 2748 2750 storevideoframes = true; … … 2945 2954 } 2946 2955 2947 2956 if (len == 4 && dvdvideopause) 2957 { 2948 2958 dvdvideopause = false; 2959 av_free_packet(pkt); 2960 continue; 2961 } 2949 2962 2950 2963 if (framesRead == 0 && !justAfterChange && 2951 2964 !(pkt->flags & PKT_FLAG_KEY)) … … 3169 3182 len -= pkt->size; 3170 3183 continue; 3171 3184 } 3185 3186 if (ringBuffer->isDVD() && 3187 ringBuffer->DVD()->InStillFrame() && 3188 !dvdvideopause) 3189 { 3190 ringBuffer->DVD()->InStillFrame(false); 3191 } 3172 3192 3173 3193 if (firstloop && pts != (int64_t) AV_NOPTS_VALUE) 3174 3194 {