Ticket #3015: disable_overscan_dvd_mythvid.diff

File disable_overscan_dvd_mythvid.diff, 3.7 KB (added by skamithi, 13 years ago)
  • libs/libmythtv/videooutbase.h

     
    271271    /// \brief Tells the player to resize the video frame (used for ITV)
    272272    void SetVideoResize(const QRect &videoRect);
    273273
     274    void SetVideoScalingAllowed(bool change);
     275
     276    /// \brief check if video underscan/overscan is allowed
     277    bool IsVideoScalingAllowed(void) { return scaling_allowed; }
     278
    274279    /// \brief returns QRect of PIP based on PIPLocation
    275280    virtual QRect GetPIPRect(int location, NuppelVideoPlayer *pipplayer = NULL);
    276281  protected:
     
    363368    QString        m_deintfiltername;
    364369    FilterManager *m_deintFiltMan;
    365370    FilterChain   *m_deintFilter;
    366     bool           m_deinterlaceBeforeOSD;;
     371    bool           m_deinterlaceBeforeOSD;
    367372
    368373    /// VideoBuffers instance used to track video output buffers.
    369374    VideoBuffers vbuffers;
     
    374379    bool    allowpreviewepg;
    375380    bool    errored;
    376381    long long framesPlayed;
     382    bool    scaling_allowed; ///< disable this to prevent overscan/underscan
    377383};
    378384
    379385#endif
  • libs/libmythtv/videooutbase.cpp

     
    274274    // Various state variables
    275275    embedding(false),                   needrepaint(false),
    276276    allowpreviewepg(true),              errored(false),
    277     framesPlayed(0)
     277    framesPlayed(0), scaling_allowed(true)
    278278{
    279279    db_display_dim = QSize(gContext->GetNumSetting("DisplaySizeWidth",  0),
    280280                           gContext->GetNumSetting("DisplaySizeHeight", 0));
     
    282282    db_move        = QPoint(gContext->GetNumSetting("xScanDisplacement", 0),
    283283                            gContext->GetNumSetting("yScanDisplacement", 0));
    284284
    285     db_scale_vert  = gContext->GetNumSetting("VertScanPercentage",  5) / 100.0;
    286     db_scale_horiz = gContext->GetNumSetting("HorizScanPercentage", 5) / 100.0;
    287 
    288285    db_pip_location    = gContext->GetNumSetting("PIPLocation",        0);
    289286    db_pip_size        = gContext->GetNumSetting("PIPSize",           26);
    290287
     
    339336    video_dim            = QSize(width, height);
    340337    video_rect           = QRect(QPoint(winx, winy), fix_1080i(video_dim));
    341338
     339    SetVideoScalingAllowed(true);
     340
    342341    db_vdisp_profile->SetInput(video_dim);
    343342
    344343    letterbox  = db_letterbox;
     
    14951494}
    14961495
    14971496/**
     1497 * \brief Disable or enable underscan/overscan
     1498 */
     1499void VideoOutput::SetVideoScalingAllowed(bool change)
     1500{
     1501    if (change)
     1502    {
     1503        db_scale_vert  = gContext->GetNumSetting("VertScanPercentage",  5) / 100.0;
     1504        db_scale_horiz = gContext->GetNumSetting("HorizScanPercentage", 5) / 100.0;
     1505        scaling_allowed = true;
     1506    }
     1507    else
     1508    {
     1509        db_scale_vert = 0.0f;
     1510        db_scale_horiz = 0.0f;
     1511        scaling_allowed = false;
     1512    }
     1513}
     1514
     1515/**
    14981516 * \fn VideoOutput::DisplayOSD(VideoFrame*,OSD *,int,int)
    14991517 * \brief If the OSD has changed, this will convert the OSD buffer
    15001518 *        to the OSDSurface's color format.
  • libs/libmythtv/NuppelVideoPlayer.cpp

     
    580580            return false;
    581581        }
    582582
     583        if (ringBuffer->isDVD())
     584            videoOutput->SetVideoScalingAllowed(false);
     585
    583586        // We need to tell it this for automatic deinterlacer settings
    584587        videoOutput->SetVideoFrameRate(video_frame_rate * play_speed);
    585588