Ticket #15: non1x-fallback-to-onefield.diff

File non1x-fallback-to-onefield.diff, 3.9 KB (added by doug@…, 14 years ago)

The patch

  • libs/libmythtv/NuppelVideoPlayer.cpp

     
    24132413            if (!normal_speed || play_speed < 0.99 || play_speed > 1.01)
    24142414            {
    24152415                m_double_framerate = false;
    2416                 m_scan = kScan_Ignore;
    24172416                videosync->SetFrameInterval(frame_interval, false);
    24182417                videoOutput->SetupDeinterlace(false);
     2418                videoOutput->SetupDeinterlace(true, "onefield");
    24192419            }
    24202420        }
    24212421        else if (m_can_double && !m_double_framerate)
    24222422        {
    24232423            if (normal_speed && play_speed > 0.99 && play_speed < 1.01)
    24242424            {
    2425                 m_scan = kScan_Interlaced;
    24262425                videosync->SetFrameInterval(frame_interval, true);
     2426                videoOutput->SetupDeinterlace(false);
    24272427                videoOutput->SetupDeinterlace(true);
    24282428                if (videoOutput->NeedsDoubleFramerate())
    24292429                    m_double_framerate = true;
  • libs/libmythtv/videooutbase.h

     
    129129                      WId winid, int winx, int winy, int winw,
    130130                      int winh, WId embedid = 0);
    131131
    132     virtual bool SetupDeinterlace(bool i);
     132    virtual bool SetupDeinterlace(bool i, const QString& ovrf="");
    133133    virtual bool NeedsDoubleFramerate(void) const;
    134134    virtual bool ApproveDeintFilter(const QString& filtername) const;
    135135
  • libs/libmythtv/videooutbase.cpp

     
    253253 * \fn VideoOutput::SetupDeinterlace(bool)
    254254 * \brief Attempts to enable or disable deinterlacing.
    255255 * \return true if successful, false otherwise.
     256 * \param overridefilter optional, explicitly use this nondefault deint filter
    256257 */
    257 bool VideoOutput::SetupDeinterlace(bool interlaced)
     258bool VideoOutput::SetupDeinterlace(bool interlaced,
     259                                   const QString& overridefilter)
    258260{
    259261    if (VideoOutputNull *null = dynamic_cast<VideoOutputNull *>(this))
    260262    {
     
    289291       
    290292        m_deintfiltername = gContext->GetSetting("DeinterlaceFilter",
    291293                                                 "linearblend");
     294        if (overridefilter != "")
     295            m_deintfiltername = overridefilter;
     296
    292297        m_deintFiltMan = new FilterManager;
    293298        m_deintFilter = NULL;
    294299
  • libs/libmythtv/videoout_xv.h

     
    4545
    4646    bool Init(int width, int height, float aspect, WId winid,
    4747              int winx, int winy, int winw, int winh, WId embedid = 0);
    48     bool SetupDeinterlace(bool interlaced);
     48    bool SetupDeinterlace(bool interlaced, const QString& ovrf="");
    4949    bool ApproveDeintFilter(const QString& filtername) const;
    5050
    5151    void ProcessFrame(VideoFrame *frame, OSD *osd,
  • libs/libmythtv/videoout_xv.cpp

     
    10031003    }
    10041004}
    10051005
    1006 bool VideoOutputXv::SetupDeinterlace(bool interlaced)
     1006bool VideoOutputXv::SetupDeinterlace(bool interlaced,
     1007                                     const QString& overridefilter)
    10071008{
    10081009    if (VideoOutputSubType() > XVideo)
    10091010        m_deintfiltername = "bobdeint";
    1010     bool deint = VideoOutput::SetupDeinterlace(interlaced);
     1011    bool deint = VideoOutput::SetupDeinterlace(interlaced, overridefilter);
    10111012    needrepaint = true;
    10121013    return deint;
    10131014}