RemoteDecodeUtils.cpp (3749B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "RemoteDecodeUtils.h" 6 7 #include "mozilla/ipc/UtilityProcessChild.h" 8 9 namespace mozilla { 10 11 using SandboxingKind = ipc::SandboxingKind; 12 13 SandboxingKind GetCurrentSandboxingKind() { 14 MOZ_ASSERT(XRE_IsUtilityProcess()); 15 return ipc::UtilityProcessChild::GetSingleton()->mSandbox; 16 } 17 18 SandboxingKind GetSandboxingKindFromLocation(RemoteMediaIn aLocation) { 19 switch (aLocation) { 20 case RemoteMediaIn::UtilityProcess_Generic: 21 return SandboxingKind::GENERIC_UTILITY; 22 #ifdef MOZ_APPLEMEDIA 23 case RemoteMediaIn::UtilityProcess_AppleMedia: 24 return SandboxingKind::UTILITY_AUDIO_DECODING_APPLE_MEDIA; 25 break; 26 #endif 27 #ifdef XP_WIN 28 case RemoteMediaIn::UtilityProcess_WMF: 29 return SandboxingKind::UTILITY_AUDIO_DECODING_WMF; 30 #endif 31 #ifdef MOZ_WMF_MEDIA_ENGINE 32 case RemoteMediaIn::UtilityProcess_MFMediaEngineCDM: 33 return SandboxingKind::MF_MEDIA_ENGINE_CDM; 34 #endif 35 default: 36 MOZ_ASSERT_UNREACHABLE("Unsupported RemoteMediaIn"); 37 return SandboxingKind::COUNT; 38 } 39 } 40 41 RemoteMediaIn GetRemoteMediaInFromKind(SandboxingKind aKind) { 42 switch (aKind) { 43 case SandboxingKind::GENERIC_UTILITY: 44 return RemoteMediaIn::UtilityProcess_Generic; 45 #ifdef MOZ_APPLEMEDIA 46 case SandboxingKind::UTILITY_AUDIO_DECODING_APPLE_MEDIA: 47 return RemoteMediaIn::UtilityProcess_AppleMedia; 48 #endif 49 #ifdef XP_WIN 50 case SandboxingKind::UTILITY_AUDIO_DECODING_WMF: 51 return RemoteMediaIn::UtilityProcess_WMF; 52 #endif 53 #ifdef MOZ_WMF_MEDIA_ENGINE 54 case SandboxingKind::MF_MEDIA_ENGINE_CDM: 55 return RemoteMediaIn::UtilityProcess_MFMediaEngineCDM; 56 #endif 57 default: 58 MOZ_ASSERT_UNREACHABLE("Unsupported SandboxingKind"); 59 return RemoteMediaIn::Unspecified; 60 } 61 } 62 63 RemoteMediaIn GetRemoteMediaInFromVideoBridgeSource( 64 layers::VideoBridgeSource aSource) { 65 switch (aSource) { 66 case layers::VideoBridgeSource::RddProcess: 67 return RemoteMediaIn::RddProcess; 68 case layers::VideoBridgeSource::GpuProcess: 69 return RemoteMediaIn::GpuProcess; 70 case layers::VideoBridgeSource::MFMediaEngineCDMProcess: 71 return RemoteMediaIn::UtilityProcess_MFMediaEngineCDM; 72 default: 73 MOZ_ASSERT_UNREACHABLE("Unsupported VideoBridgeSource"); 74 return RemoteMediaIn::Unspecified; 75 } 76 } 77 78 layers::VideoBridgeSource GetVideoBridgeSourceFromRemoteMediaIn( 79 RemoteMediaIn aSource) { 80 switch (aSource) { 81 case RemoteMediaIn::RddProcess: 82 return layers::VideoBridgeSource::RddProcess; 83 case RemoteMediaIn::GpuProcess: 84 return layers::VideoBridgeSource::GpuProcess; 85 case RemoteMediaIn::UtilityProcess_MFMediaEngineCDM: 86 return layers::VideoBridgeSource::MFMediaEngineCDMProcess; 87 default: 88 MOZ_ASSERT_UNREACHABLE("Unsupported RemoteMediaIn"); 89 return layers::VideoBridgeSource::_Count; 90 } 91 } 92 93 const char* RemoteMediaInToStr(RemoteMediaIn aLocation) { 94 switch (aLocation) { 95 case RemoteMediaIn::RddProcess: 96 return "RDD"; 97 case RemoteMediaIn::GpuProcess: 98 return "GPU"; 99 case RemoteMediaIn::UtilityProcess_Generic: 100 return "Utility Generic"; 101 #ifdef MOZ_APPLEMEDIA 102 case RemoteMediaIn::UtilityProcess_AppleMedia: 103 return "Utility AppleMedia"; 104 #endif 105 #ifdef XP_WIN 106 case RemoteMediaIn::UtilityProcess_WMF: 107 return "Utility WMF"; 108 #endif 109 #ifdef MOZ_WMF_MEDIA_ENGINE 110 case RemoteMediaIn::UtilityProcess_MFMediaEngineCDM: 111 return "Utility MF Media Engine CDM"; 112 #endif 113 default: 114 MOZ_ASSERT_UNREACHABLE("Unsupported RemoteMediaIn"); 115 return "Unknown"; 116 } 117 } 118 119 } // namespace mozilla