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 @@
</layout>
</item>
<item>
- <widget class="QCheckBox" name="vdpau_filters_check" >
- <property name="text" >
- <string>Disable video filters when using vd&pau</string>
+ <layout class="QHBoxLayout" name="_2">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
</property>
- </widget>
- </item>
+ <item>
+ <widget class="QCheckBox" name="vdpau_filters_check">
+ <property name="text">
+ <string>Disable video filters with vd&pau</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="vdpau_divx_check">
+ <property name="text">
+ <string>Disable vdpau for div&x</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
<item>
<widget class="Line" name="line_5" >
<property name="sizePolicy" >
@@ -1279,6 +1309,7 @@
<tabstop>vo_combo</tabstop>
<tabstop>vo_user_defined_edit</tabstop>
<tabstop>vdpau_filters_check</tabstop>
+ <tabstop>vdpau_divx_check</tabstop>
<tabstop>postprocessing_check</tabstop>
<tabstop>autoq_spin</tabstop>
<tabstop>deinterlace_combo</tabstop>