Ticket #1686: NuppelVideoPlayer.diff
File NuppelVideoPlayer.diff, 2.0 KB (added by , 18 years ago) |
---|
-
NuppelVideoPlayer.cpp
2337 2337 DisplaySubtitles(); 2338 2338 else if (osdHasSubtitles) 2339 2339 ClearSubtitles(); 2340 else 2341 ExpireSubtitles(); 2340 2342 2341 2343 // handle scan type changes 2342 2344 AutoDeint(frame); … … 5700 5702 5701 5703 bool displaysub = true; 5702 5704 if (nonDisplayedSubtitles.size() > 0 && 5703 nonDisplayedSubtitles.front(). start_display_time <5705 nonDisplayedSubtitles.front().end_display_time < 5704 5706 currentFrame->timecode) 5705 5707 { 5706 5708 displaysub = false; … … 5780 5782 } 5781 5783 } 5782 5784 5785 // discard non-displayed subtitles 5786 void NuppelVideoPlayer::ExpireSubtitles() 5787 { 5788 subtitleLock.lock(); 5789 VideoFrame *currentFrame = videoOutput->GetLastShownFrame(); 5790 5791 while (nonDisplayedSubtitles.size() > 0) 5792 { 5793 const AVSubtitle subtitlePage = nonDisplayedSubtitles.front(); 5794 5795 //Stop when we hit one old enough 5796 if (subtitlePage.end_display_time > currentFrame->timecode) 5797 break; 5798 5799 nonDisplayedSubtitles.pop_front(); 5800 5801 for (std::size_t i = 0; i < subtitlePage.num_rects; ++i) 5802 { 5803 AVSubtitleRect* rect = &subtitlePage.rects[i]; 5804 av_free(rect->rgba_palette); 5805 av_free(rect->bitmap); 5806 } 5807 if (subtitlePage.num_rects > 0) 5808 av_free(subtitlePage.rects); 5809 } 5810 subtitleLock.unlock(); 5811 } 5812 5783 5813 // hide subtitles and free the undisplayed subtitles 5784 5814 void NuppelVideoPlayer::ClearSubtitles() 5785 5815 { -
NuppelVideoPlayer.h
477 477 // Private subtitle stuff 478 478 void DisplaySubtitles(void); 479 479 void ClearSubtitles(void); 480 void ExpireSubtitles(void); 480 481 481 482 // Private LiveTV stuff 482 483 void SwitchToProgram(void);