diff options
-rwxr-xr-x | language/English/strings.po | 4 | ||||
-rw-r--r-- | system/settings/settings.xml | 35 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 3 |
3 files changed, 33 insertions, 9 deletions
diff --git a/language/English/strings.po b/language/English/strings.po index b5e95fc6ba..41323fb9a6 100755 --- a/language/English/strings.po +++ b/language/English/strings.po @@ -6001,7 +6001,7 @@ msgid "Allow hardware acceleration (MediaCodec)" msgstr "" msgctxt "#13440" -msgid "Frame Multi Threaded Decoding (less reliable)" +msgid "Allow frame-multi-threaded decoding" msgstr "" #empty strings from id 13441 to 13499 @@ -14720,7 +14720,7 @@ msgstr "" #: system/settings/settings.xml msgctxt "#36423" -msgid "Use ffmpeg frame multiple thread decoding when hardware decoding not working or disabled. (less reliable than default single thread mode)" +msgid "Use frame-multi-threaded decoding instead of hardware accelerated decoding (less reliable than default single thread mode)." msgstr "" #: system/settings/settings.xml diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 2a1cb462db..aae8e51fae 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -415,8 +415,16 @@ <formatlabel>14047</formatlabel> </control> </setting> + <setting id="videoplayer.useframemtdec" type="boolean" label="13440" help="36423"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> <setting id="videoplayer.useamcodec" type="boolean" label="13438" help="36422"> <requirement>HAVE_AMCODEC</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <updates> @@ -426,6 +434,9 @@ </setting> <setting id="videoplayer.usevdpau" type="boolean" label="13425" help="36155"> <requirement>HAVE_LIBVDPAU</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <control type="toggle" /> @@ -435,30 +446,47 @@ <level>2</level> <default>true</default> <dependencies> - <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU --> + <dependency type="enable"> + <and> + <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> + <condition setting="videoplayer.useframemtdec" operator="is">false</condition> <!-- disable when frame threading is active --> + </and> + </dependency> </dependencies> <control type="toggle" /> </setting> <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156"> <requirement>HAVE_LIBVA</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <control type="toggle" /> </setting> <setting id="videoplayer.usedxva2" type="boolean" label="13427" help="36158"> <requirement>HasDXVA2</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <control type="toggle" /> </setting> <setting id="videoplayer.usechd" type="boolean" label="13428" help="36159"> <requirement>HasCrystalHDDevice</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <control type="toggle" /> </setting> <setting id="videoplayer.useomx" type="boolean" label="13430" help="36161"> <requirement>HAVE_LIBOPENMAX</requirement> + <dependencies> + <dependency type="enable" setting="videoplayer.useframemtdec" operator="is">false</dependency> <!-- disable when frame threading is active --> + </dependencies> <level>2</level> <default>true</default> <control type="toggle" /> @@ -475,11 +503,6 @@ <default>true</default> <control type="toggle" /> </setting> - <setting id="videoplayer.useframemtdec" type="boolean" label="13440" help="36423"> - <level>3</level> - <default>false</default> - <control type="toggle" /> - </setting> <setting id="videoplayer.adjustrefreshrate" type="integer" label="170" help="36164"> <level>2</level> <default>0</default> <!-- ADJUST_REFRESHRATE_OFF --> diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp index 5692faf7e3..e0cfb0edae 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -69,7 +69,8 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx { CDVDVideoCodecFFmpeg* ctx = (CDVDVideoCodecFFmpeg*)avctx->opaque; - if(!ctx->IsHardwareAllowed()) + // if frame threading is enabled hw accel is not allowed + if(!ctx->IsHardwareAllowed() || CSettings::Get().GetBool("videoplayer.useframemtdec")) return ctx->m_dllAvCodec.avcodec_default_get_format(avctx, fmt); const PixelFormat * cur = fmt; |