diff --git a/react/features/base/config/reducer.js b/react/features/base/config/reducer.js index a20988b84..6d28c0e32 100644 --- a/react/features/base/config/reducer.js +++ b/react/features/base/config/reducer.js @@ -2,6 +2,7 @@ import _ from 'lodash'; +import Platform from '../react/Platform'; import { equals, ReducerRegistry, set } from '../redux'; import { CONFIG_WILL_LOAD, LOAD_CONFIG_ERROR, SET_CONFIG } from './actionTypes'; @@ -20,6 +21,15 @@ import { _cleanupConfig } from './functions'; const INITIAL_NON_RN_STATE = { }; +/** + * When we should enable H.264 on mobile. iOS 10 crashes so we disable it there. + * See: https://bugs.chromium.org/p/webrtc/issues/detail?id=11002 + * Note that this is only used for P2P calls. + * + * @type {boolean} + */ +const RN_ENABLE_H264 = navigator.product === 'ReactNative' && !(Platform.OS === 'ios' && Platform.Version === 10); + /** * The initial state of the feature base/config when executing in a React Native * environment. The mandatory configuration to be passed to JitsiMeetJS#init(). @@ -41,8 +51,8 @@ const INITIAL_RN_STATE = { disableAudioLevels: true, p2p: { - disableH264: false, - preferH264: true + disableH264: !RN_ENABLE_H264, + preferH264: RN_ENABLE_H264 } }; diff --git a/react/features/base/react/Platform.web.js b/react/features/base/react/Platform.web.js index b02cd17e2..8f35d37d3 100644 --- a/react/features/base/react/Platform.web.js +++ b/react/features/base/react/Platform.web.js @@ -22,5 +22,14 @@ export default { * * @type {string} */ - OS + OS, + + /** + * The operating system version on which the application is executing. + * This is intentionally set to undefined so we can tell mobile and mobile web + * appart easier. + * + * @type {number|undefined} + */ + Version: undefined };