Skip to content

Commit

Permalink
VAAPI: Make Codec selection an expert setting (disable mpeg4, vc1 by …
Browse files Browse the repository at this point in the history
…default)
  • Loading branch information
fritsch committed Feb 9, 2014
1 parent 74444a4 commit 2142c63
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
15 changes: 14 additions & 1 deletion language/English/strings.po
Expand Up @@ -6012,7 +6012,20 @@ msgctxt "#13443"
msgid "Use VC-1 VDPAU"
msgstr ""

#empty strings from id 13444 to 13499
#empty strings from 13444 to 13446
msgctxt "#13447"
msgid "Use Mpeg-2 VAAPI"
msgstr ""

msgctxt "#13448"
msgid "Use Mpeg-4 VAAPI"
msgstr ""

msgctxt "#13449"
msgid "Use VC-1 VAAPI"
msgstr ""

#empty strings from id 13449 to 13499

#: system/settings/settings.xml
msgctxt "#13500"
Expand Down
27 changes: 27 additions & 0 deletions system/settings/settings.xml
Expand Up @@ -483,6 +483,33 @@
<default>true</default>
<control type="toggle" />
</setting>
<setting id="videoplayer.usevaapimpeg2" type="boolean" label="13447" help="36102">
<requirement>HAVE_LIBVA</requirement>
<dependencies>
<dependency type="visible" setting="videoplayer.usevaapi" operator="is">true</dependency>
</dependencies>
<level>3</level>
<default>true</default>
<control type="toggle" />
</setting>
<setting id="videoplayer.usevaapimpeg4" type="boolean" label="13448" help="36102">
<requirement>HAVE_LIBVA</requirement>
<dependencies>
<dependency type="visible" setting="videoplayer.usevaapi" operator="is">true</dependency>
</dependencies>
<level>3</level>
<default>true</default>
<control type="toggle" />
</setting>
<setting id="videoplayer.usevaapivc1" type="boolean" label="13449" help="36102">
<requirement>HAVE_LIBVA</requirement>
<dependencies>
<dependency type="visible" setting="videoplayer.usevaapi" operator="is">true</dependency>
</dependencies>
<level>3</level>
<default>false</default>
<control type="toggle" />
</setting>
<setting id="videoplayer.usedxva2" type="boolean" label="13427" help="36158">
<requirement>HasDXVA2</requirement>
<dependencies>
Expand Down
15 changes: 14 additions & 1 deletion xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
Expand Up @@ -20,7 +20,6 @@
#include "system.h"
#ifdef HAVE_LIBVA
#include "windowing/WindowingFactory.h"
#include "settings/Settings.h"
#include "VAAPI.h"
#include "DVDVideoCodec.h"
#include <boost/scoped_array.hpp>
Expand Down Expand Up @@ -52,6 +51,16 @@ using namespace std;
using namespace boost;
using namespace VAAPI;

// settings codecs mapping
DVDCodecAvailableType g_vaapi_available[] = {
{ AV_CODEC_ID_H263, "videoplayer.usevaapimpeg4" },
{ AV_CODEC_ID_MPEG4, "videoplayer.usevaapimpeg4" },
{ AV_CODEC_ID_WMV3, "videoplayer.usevaapivc1" },
{ AV_CODEC_ID_VC1, "videoplayer.usevaapivc1" },
{ AV_CODEC_ID_MPEG2VIDEO, "videoplayer.usevaapimpeg2" },
};
const size_t settings_count = sizeof(g_vaapi_available) / sizeof(DVDCodecAvailableType);

static int compare_version(int major_l, int minor_l, int micro_l, int major_r, int minor_r, int micro_r)
{
if(major_l < major_r) return -1;
Expand Down Expand Up @@ -269,6 +278,10 @@ void CDecoder::Close()

bool CDecoder::Open(AVCodecContext *avctx, enum PixelFormat fmt, unsigned int surfaces)
{
// check if user wants to decode this format with VAAPI
if (CDVDVideoCodec::IsCodecDisabled(g_vaapi_available, settings_count, avctx->codec_id))
return false;

VAEntrypoint entrypoint = VAEntrypointVLD;
VAProfile profile;

Expand Down

0 comments on commit 2142c63

Please sign in to comment.