Ticket #1864: xvattr.diff

File xvattr.diff, 4.9 KB (added by ivor@…, 18 years ago)

alternative attribute patch.

  • videooutbase.cpp

     
    184184    // Various state variables
    185185    embedding(false),                   needrepaint(false),
    186186    allowpreviewepg(true),              errored(false),
    187     framesPlayed(0)
     187    framesPlayed(0),
     188    readsettings(false)
    188189{
    189190    db_display_dim = QSize(gContext->GetNumSetting("DisplaySizeWidth",  0),
    190191                           gContext->GetNumSetting("DisplaySizeHeight", 0));
     
    198199    db_pip_location    = gContext->GetNumSetting("PIPLocation",        0);
    199200    db_pip_size        = gContext->GetNumSetting("PIPSize",           26);
    200201
     202    db_letterbox       = gContext->GetNumSetting("AspectOverride",     0);
     203    db_deint_filtername= gContext->GetSetting("DeinterlaceFilter",
     204                                              "linearblend");
     205}
     206
     207void VideoOutput::ReadPictureSettings()
     208{
    201209    db_pict_attr[kPictureAttribute_Brightness] =
    202210        gContext->GetNumSetting("PlaybackBrightness", 50);
    203211    db_pict_attr[kPictureAttribute_Contrast] =
     
    207215    db_pict_attr[kPictureAttribute_Hue] =
    208216        gContext->GetNumSetting("PlaybackHue",         0);
    209217
    210     db_letterbox       = gContext->GetNumSetting("AspectOverride",     0);
    211     db_deint_filtername= gContext->GetSetting("DeinterlaceFilter",
    212                                               "linearblend");
     218    readsettings=true;
    213219}
    214220
    215221/**
     
    960966    if (curVal < 0)
    961967        return -1;
    962968
    963     int newVal = curVal + (direction) ? +1 : -1;
     969    int newVal = curVal;
    964970
     971    if (direction)
     972        newVal++;
     973    else
     974        newVal--;
     975
    965976    if (kPictureAttribute_Hue == attributeType)
    966977        newVal = newVal % 100;
    967978
     
    9941005
    9951006void VideoOutput::InitPictureAttributes(void)
    9961007{
     1008    if (!readsettings)
     1009        ReadPictureSettings();
     1010
    9971011    QMap<int,int>::const_iterator it = db_pict_attr.begin();
    9981012    for (; it != db_pict_attr.end(); ++it)
    9991013        SetPictureAttribute(it.key(), *it);
  • videoout_xv.h

     
    5656    bool Init(int width, int height, float aspect, WId winid,
    5757              int winx, int winy, int winw, int winh, WId embedid = 0);
    5858
     59    void ReadPictureSettings();
     60
    5961    bool SetDeinterlacingEnabled(bool);
    6062    bool SetupDeinterlace(bool interlaced, const QString& ovrf="");
    6163    bool ApproveDeintFilter(const QString& filtername) const;
  • videoout_xv.cpp

     
    160160        delete xvmc_tex;
    161161}
    162162
     163void VideoOutputXv::ReadPictureSettings()
     164{
     165    db_pict_attr[kPictureAttribute_Brightness] =
     166        gContext->GetNumSetting("PlaybackBrightness", 50);
     167    db_pict_attr[kPictureAttribute_Contrast] =
     168        gContext->GetNumSetting("PlaybackContrast",   50);
     169    db_pict_attr[kPictureAttribute_Colour] =
     170        gContext->GetNumSetting("PlaybackColour",     50);
     171    db_pict_attr[kPictureAttribute_Hue] =
     172        gContext->GetNumSetting("PlaybackHue",        xv_hue_base );
     173
     174    readsettings=true;
     175}
     176
    163177// this is documented in videooutbase.cpp
    164178void VideoOutputXv::Zoom(int direction)
    165179{
     
    30163030int VideoOutputXv::SetPictureAttribute(int attribute, int newValue)
    30173031{
    30183032    QString  attrName = QString::null;
    3019     int      valAdj   = 0;
    30203033
    30213034    if (kPictureAttribute_Brightness == attribute)
    30223035        attrName = "XV_BRIGHTNESS";
     
    30253038    else if (kPictureAttribute_Colour == attribute)
    30263039        attrName = "XV_SATURATION";
    30273040    else if (kPictureAttribute_Hue == attribute)
    3028     {
    30293041        attrName = "XV_HUE";
    3030         valAdj   = xv_hue_base;
    3031     }
    30323042
    30333043    if (attrName.isEmpty())
    30343044        return -1;
     
    30563066        int port_max = attributes[i].max_value;
    30573067        int range    = port_max - port_min;
    30583068
    3059         int tmpval2 = (newValue + valAdj) % 100;
     3069        int tmpval2 = newValue % 100;
    30603070        int tmpval3 = (int) roundf(range * 0.01f * tmpval2);
    30613071        int value   = min(tmpval3 + port_min, port_max);
     3072
    30623073        value_set = true;
    30633074
    30643075        X11L;
  • videooutbase.h

     
    164164                      WId winid, int winx, int winy, int winw,
    165165                      int winh, WId embedid = 0);
    166166
     167    virtual void ReadPictureSettings();
     168
    167169    virtual bool SetDeinterlacingEnabled(bool);
    168170    virtual bool SetupDeinterlace(bool i, const QString& ovrf="");
    169171    virtual bool NeedsDoubleFramerate(void) const;
     
    401403    bool    allowpreviewepg;
    402404    bool    errored;
    403405    long long framesPlayed;
     406    bool    readsettings;
    404407};
    405408
    406409#endif