diff options
author | fritsch <peter.fruehberger@gmail.com> | 2014-01-11 14:16:07 +0100 |
---|---|---|
committer | fritsch <Peter.Fruehberger@gmail.com> | 2014-02-09 21:14:55 +0100 |
commit | 5e25fd5311c5c0dbcc39fefbac37ec76c0bac780 (patch) | |
tree | b10724b4ede7b26400256600bb7221491fb4fba9 | |
parent | e3f9c7b617475961c8c04eab2d1f29967a1cfca9 (diff) |
VDPAU: Add Expert Settings to let user easily disable certain codecs
-rwxr-xr-x | language/English/strings.po | 14 | ||||
-rw-r--r-- | system/settings/settings.xml | 27 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 16 |
3 files changed, 55 insertions, 2 deletions
diff --git a/language/English/strings.po b/language/English/strings.po index c65dfce126..4b3f405b47 100755 --- a/language/English/strings.po +++ b/language/English/strings.po @@ -6000,7 +6000,19 @@ msgctxt "#13440" msgid "Allow frame-multi-threaded decoding" msgstr "" -#empty strings from id 13441 to 13499 +msgctxt "#13441" +msgid "Use Mpeg-2 VDPAU" +msgstr "" + +msgctxt "#13442" +msgid "Use Mpeg-4 VDPAU" +msgstr "" + +msgctxt "#13443" +msgid "Use VC-1 VDPAU" +msgstr "" + +#empty strings from id 13444 to 13499 #: system/settings/settings.xml msgctxt "#13500" diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 29d286b6d8..1ed88dc385 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -447,6 +447,33 @@ </dependencies> <control type="toggle" /> </setting> + <setting id="videoplayer.usevdpaumpeg2" type="boolean" label="13441" help="36102"> + <requirement>HAVE_LIBVDPAU</requirement> + <level>3</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU --> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpaumpeg4" type="boolean" label="13442" help="36102"> + <requirement>HAVE_LIBVDPAU</requirement> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU --> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpauvc1" type="boolean" label="13443" help="36102"> + <requirement>HAVE_LIBVDPAU</requirement> + <level>3</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU --> + </dependencies> + <control type="toggle" /> + </setting> <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156"> <requirement>HAVE_LIBVA</requirement> <dependencies> diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp index e5d58f4244..79f8ceaae5 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -42,6 +42,16 @@ using namespace VDPAU; #define ARSIZE(x) (sizeof(x) / sizeof((x)[0])) +// settings codecs mapping +DVDCodecAvailableType g_vdpau_available[] = { + { AV_CODEC_ID_H263, "videoplayer.usevdpaumpeg4" }, + { AV_CODEC_ID_MPEG4, "videoplayer.usevdpaumpeg4" }, + { AV_CODEC_ID_WMV3, "videoplayer.usevdpauvc1" }, + { AV_CODEC_ID_VC1, "videoplayer.usevdpauvc1" }, + { AV_CODEC_ID_MPEG2VIDEO, "videoplayer.usevdpaumpeg2" }, +}; +const size_t settings_count = sizeof(g_vdpau_available) / sizeof(DVDCodecAvailableType); + CDecoder::Desc decoder_profiles[] = { {"MPEG1", VDP_DECODER_PROFILE_MPEG1}, {"MPEG2_SIMPLE", VDP_DECODER_PROFILE_MPEG2_SIMPLE}, @@ -483,8 +493,12 @@ CDecoder::CDecoder() : m_vdpauOutput(&m_inMsgEvent) m_vdpauConfig.context = 0; } -bool CDecoder::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int surfaces) +bool CDecoder::Open(AVCodecContext* avctx, const enum PixelFormat fmt, unsigned int surfaces) { + // check if user wants to decode this format with VDPAU + if (CDVDVideoCodec::IsCodecDisabled(g_vdpau_available, settings_count, avctx->codec_id)) + return false; + #ifndef GL_NV_vdpau_interop CLog::Log(LOGNOTICE, "VDPAU: compilation without required extension GL_NV_vdpau_interop"); return false; |