tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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