diff -Naur old/smplayer2/src/core.cpp new/smplayer2/src/core.cpp --- old/smplayer2/src/core.cpp 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/core.cpp 2011-11-11 15:01:54.179798609 +0200 @@ -1270,6 +1270,19 @@ proc->addArgument("-vc"); proc->addArgument(mset.forced_video_codec); } +#ifndef Q_OS_WIN + else { + if (pref->vo.startsWith("vdpau")) { + proc->addArgument("-vc"); + if (pref->disable_vdpau_divx_decoder) + proc->addArgument("ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,"); + else + proc->addArgument("ffh264vdpau,ffmpeg12vdpau,ffodivxvdpau,ffwmv3vdpau,ffvc1vdpau,"); + } +#endif +#ifndef Q_OS_WIN + } +#endif if (pref->use_hwac3) { proc->addArgument("-afm"); diff -Naur old/smplayer2/src/preferences.cpp new/smplayer2/src/preferences.cpp --- old/smplayer2/src/preferences.cpp 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/preferences.cpp 2011-11-11 15:04:36.199805637 +0200 @@ -97,6 +97,7 @@ #ifndef Q_OS_WIN disable_video_filters_with_vdpau = true; + disable_vdpau_divx_decoder = true; #endif use_soft_vol = true; @@ -469,6 +470,7 @@ #ifndef Q_OS_WIN set->setValue("disable_video_filters_with_vdpau", disable_video_filters_with_vdpau); + set->setValue("disable_vdpau_divx_decoder", disable_vdpau_divx_decoder); #endif set->setValue("use_soft_vol", use_soft_vol); @@ -853,6 +855,7 @@ #ifndef Q_OS_WIN disable_video_filters_with_vdpau = set->value("disable_video_filters_with_vdpau", disable_video_filters_with_vdpau).toBool(); + disable_vdpau_divx_decoder = set->value("disable_vdpau_divx_decoder", disable_vdpau_divx_decoder).toBool(); #endif use_soft_vol = set->value("use_soft_vol", use_soft_vol).toBool(); diff -Naur old/smplayer2/src/preferences.h new/smplayer2/src/preferences.h --- old/smplayer2/src/preferences.h 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/preferences.h 2011-11-11 15:05:13.516473922 +0200 @@ -98,6 +98,7 @@ #ifndef Q_OS_WIN bool disable_video_filters_with_vdpau; + bool disable_vdpau_divx_decoder; #endif // Audio diff -Naur old/smplayer2/src/prefgeneral.cpp new/smplayer2/src/prefgeneral.cpp --- old/smplayer2/src/prefgeneral.cpp 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/prefgeneral.cpp 2011-11-11 15:10:10.099820120 +0200 @@ -198,6 +198,7 @@ #ifndef Q_OS_WIN setDisableFiltersWithVdpau( pref->disable_video_filters_with_vdpau ); + setDisableVdpauForDivx( pref->disable_vdpau_divx_decoder ); #endif setAudioChannels( pref->initial_audio_channels ); @@ -281,6 +282,7 @@ #ifndef Q_OS_WIN TEST_AND_SET(pref->disable_video_filters_with_vdpau, disableFiltersWithVdpau()); + TEST_AND_SET(pref->disable_vdpau_divx_decoder, disableVdpauForDivx()); #endif pref->initial_audio_channels = audioChannels(); @@ -740,6 +742,14 @@ bool PrefGeneral::disableFiltersWithVdpau() { return vdpau_filters_check->isChecked(); } + +void PrefGeneral::setDisableVdpauForDivx(bool b) { + vdpau_divx_check->setChecked(b); +} + +bool PrefGeneral::disableVdpauForDivx() { + return vdpau_divx_check->isChecked(); +} #endif void PrefGeneral::setBlackbordersOnFullscreen(bool b) { @@ -846,9 +856,13 @@ ); #ifndef Q_OS_WIN - setWhatsThis(vdpau_filters_check, tr("Disable video filters when using vdpau"), + setWhatsThis(vdpau_filters_check, tr("Disable video filters with vdpau"), tr("Usually video filters won't work when using vdpau as video output " "driver, so it's wise to keep this option checked.") ); + + setWhatsThis(vdpau_divx_check, tr("Disable vdpau for divx"), + tr("Not all graphics cards support vdpau DivX/XViD decoding. Check this " + "option, only if you are sure your card supports it.") ); #endif setWhatsThis(postprocessing_check, tr("Enable postprocessing by default"), diff -Naur old/smplayer2/src/prefgeneral.h new/smplayer2/src/prefgeneral.h --- old/smplayer2/src/prefgeneral.h 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/prefgeneral.h 2011-11-11 15:10:49.989821850 +0200 @@ -123,6 +123,9 @@ #ifndef Q_OS_WIN void setDisableFiltersWithVdpau(bool b); bool disableFiltersWithVdpau(); + + void setDisableVdpauForDivx(bool b); + bool disableVdpauForDivx(); #endif void setBlackbordersOnFullscreen(bool b); diff -Naur old/smplayer2/src/prefgeneral.ui new/smplayer2/src/prefgeneral.ui --- old/smplayer2/src/prefgeneral.ui 2011-11-11 02:44:55.000000000 +0200 +++ new/smplayer2/src/prefgeneral.ui 2011-11-11 15:19:21.336510696 +0200 @@ -274,12 +274,42 @@ - - - Disable video filters when using vd&pau + + + 6 + + + 0 - - + + + + Disable video filters with vd&pau + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Disable vdpau for div&x + + + + + @@ -1279,6 +1309,7 @@ vo_combo vo_user_defined_edit vdpau_filters_check + vdpau_divx_check postprocessing_check autoq_spin deinterlace_combo