diff --git a/src/store/modules/slplayer/getters.js b/src/store/modules/slplayer/getters.js index 9830a3ec..e0b62804 100644 --- a/src/store/modules/slplayer/getters.js +++ b/src/store/modules/slplayer/getters.js @@ -83,6 +83,10 @@ export default { ?.find(({ streamType, selected }) => streamType === 3 && selected), CAN_DIRECT_PLAY_SUBTITLES: (state, getters) => { + if (getters.SHOULD_FORCE_BURN_SUBTITLES) { + return false; + } + const { key, codec } = getters.GET_SELECTED_SUBTITLE_STREAM; // TODO: examine if I can only direct play with sidecar subtitles return key && (codec === 'srt' || codec === 'ass'); @@ -104,8 +108,8 @@ export default { } if (getters.GET_SELECTED_SUBTITLE_STREAM) { - if (getters.IS_IN_PICTURE_IN_PICTURE) { - console.debug('CAN_DIRECT_PLAY: false because subtitles enabled and using PIP'); + if (getters.SHOULD_FORCE_BURN_SUBTITLES) { + console.debug('CAN_DIRECT_PLAY: false because subtitles are set to be burned'); return false; } @@ -218,6 +222,26 @@ export default { : base; }, + SHOULD_FORCE_BURN_SUBTITLES: (state, getters) => getters.IS_IN_PICTURE_IN_PICTURE, + + GET_SUBTITLE_PARAMS: (state, getters) => { + if (!getters.GET_SELECTED_SUBTITLE_STREAM || getters.CAN_DIRECT_PLAY + || getters.CAN_DIRECT_PLAY_SUBTITLES) { + return null; + } + + if (getters.SHOULD_FORCE_BURN_SUBTITLES) { + return { + subtitles: 'burn', + }; + } + + return { + subtitles: 'auto', + advancedSubtitles: 'text', + }; + }, + GET_DECISION_AND_START_PARAMS: (state, getters, rootState, rootGetters) => ({ hasMDE: 1, path: rootGetters['plexclients/GET_ACTIVE_MEDIA_METADATA'].key, @@ -242,11 +266,7 @@ export default { directStreamAudio: getters.GET_FORCE_TRANSCODE ? 0 : 1, mediaBufferSize: 102400, // ~100MB (same as what Plex Web uses) session: state.session, - // eslint-disable-next-line no-nested-ternary - subtitles: getters.CAN_DIRECT_PLAY - ? 'none' - : getters.IS_IN_PICTURE_IN_PICTURE ? 'burn' : 'auto', - ...(!getters.IS_IN_PICTURE_IN_PICTURE && { advancedSubtitles: 'text' }), + ...getters.GET_SUBTITLE_PARAMS, 'Accept-Language': 'en', 'X-Plex-Session-Identifier': getters.GET_X_PLEX_SESSION_ID, 'X-Plex-Client-Profile-Extra': getters.GET_PLEX_PROFILE_EXTRAS, diff --git a/src/store/modules/slplayer/subtitleActions.js b/src/store/modules/slplayer/subtitleActions.js index 2486efca..36fdf572 100644 --- a/src/store/modules/slplayer/subtitleActions.js +++ b/src/store/modules/slplayer/subtitleActions.js @@ -167,7 +167,8 @@ export default { ); const useSrtParser = getters.CAN_DIRECT_PLAY_SUBTITLES - && getters.GET_SUBTITLE_STREAM.codec === 'srt'; + && (getters.GET_SUBTITLE_STREAM.codec === 'srt' + || getters.GET_SELECTED_SUBTITLE_STREAM.codec === 'srt'); const parser = useSrtParser ? new libjass.parser.SrtStreamParser(stream)