Ticket #1686: NuppelVideoPlayer.diff

File NuppelVideoPlayer.diff, 2.0 KB (added by ivor@…, 18 years ago)
  • NuppelVideoPlayer.cpp

     
    23372337        DisplaySubtitles();
    23382338    else if (osdHasSubtitles)
    23392339        ClearSubtitles();
     2340    else
     2341        ExpireSubtitles();
    23402342
    23412343    // handle scan type changes
    23422344    AutoDeint(frame);
     
    57005702
    57015703            bool displaysub = true;
    57025704            if (nonDisplayedSubtitles.size() > 0 &&
    5703                 nonDisplayedSubtitles.front().start_display_time <
     5705                nonDisplayedSubtitles.front().end_display_time <
    57045706                currentFrame->timecode)
    57055707            {
    57065708                displaysub = false;
     
    57805782    }
    57815783}
    57825784
     5785// discard non-displayed subtitles
     5786void 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
    57835813// hide subtitles and free the undisplayed subtitles
    57845814void NuppelVideoPlayer::ClearSubtitles()
    57855815{
  • NuppelVideoPlayer.h

     
    477477    // Private subtitle stuff
    478478    void  DisplaySubtitles(void);
    479479    void  ClearSubtitles(void);
     480    void  ExpireSubtitles(void);
    480481
    481482    // Private LiveTV stuff
    482483    void  SwitchToProgram(void);